2018-11-22 12:13:11 +01:00
#[ cfg(any(feature = " backend_egl " , feature = " renderer_gl " )) ]
2020-05-20 00:13:06 +02:00
fn gl_generate ( ) {
use gl_generator ::{ Api , Fallbacks , Profile , Registry } ;
use std ::{ env , fs ::File , path ::PathBuf } ;
2017-05-18 22:28:02 +02:00
let dest = PathBuf ::from ( & env ::var ( " OUT_DIR " ) . unwrap ( ) ) ;
2018-11-21 09:28:15 +01:00
if env ::var_os ( " CARGO_FEATURE_BACKEND_EGL " ) . is_some ( ) {
let mut file = File ::create ( & dest . join ( " egl_bindings.rs " ) ) . unwrap ( ) ;
Registry ::new (
Api ::Egl ,
( 1 , 5 ) ,
Profile ::Core ,
Fallbacks ::All ,
[
" EGL_KHR_create_context " ,
" EGL_EXT_create_context_robustness " ,
" EGL_KHR_create_context_no_error " ,
2021-04-07 00:53:37 +02:00
" EGL_KHR_no_config_context " ,
2021-11-03 07:15:21 +01:00
" EGL_EXT_device_base " ,
" EGL_EXT_device_enumeration " ,
" EGL_EXT_device_query " ,
" EGL_EXT_device_drm " ,
" EGL_KHR_stream " ,
" EGL_KHR_stream_producer_eglsurface " ,
2018-11-21 09:28:15 +01:00
" EGL_EXT_platform_base " ,
2021-05-15 23:04:46 +02:00
" EGL_KHR_platform_x11 " ,
2018-11-21 09:28:15 +01:00
" EGL_EXT_platform_x11 " ,
2021-05-15 23:04:46 +02:00
" EGL_KHR_platform_wayland " ,
2018-11-21 09:28:15 +01:00
" EGL_EXT_platform_wayland " ,
2021-05-13 19:38:32 +02:00
" EGL_KHR_platform_gbm " ,
2021-04-07 00:53:37 +02:00
" EGL_MESA_platform_gbm " ,
2021-11-03 07:15:21 +01:00
" EGL_EXT_platform_device " ,
2021-04-07 00:53:37 +02:00
" EGL_WL_bind_wayland_display " ,
2018-11-21 09:28:15 +01:00
" EGL_KHR_image_base " ,
2021-04-07 00:53:37 +02:00
" EGL_EXT_image_dma_buf_import " ,
" EGL_EXT_image_dma_buf_import_modifiers " ,
2022-02-11 20:47:00 +01:00
" EGL_MESA_image_dma_buf_export " ,
" EGL_KHR_gl_image " ,
2021-12-29 15:54:59 +01:00
" EGL_EXT_buffer_age " ,
" EGL_EXT_swap_buffers_with_damage " ,
2018-11-21 09:28:15 +01:00
] ,
2018-12-08 18:31:08 +01:00
)
. write_bindings ( gl_generator ::GlobalGenerator , & mut file )
2018-11-21 09:28:15 +01:00
. unwrap ( ) ;
}
2017-12-10 22:09:17 +01:00
2018-11-21 09:28:15 +01:00
if env ::var_os ( " CARGO_FEATURE_RENDERER_GL " ) . is_some ( ) {
let mut file = File ::create ( & dest . join ( " gl_bindings.rs " ) ) . unwrap ( ) ;
Registry ::new (
Api ::Gles2 ,
( 3 , 2 ) ,
Profile ::Compatibility ,
Fallbacks ::None ,
2021-04-07 00:53:37 +02:00
[
" GL_OES_EGL_image " ,
" GL_OES_EGL_image_external " ,
" GL_EXT_texture_format_BGRA8888 " ,
" GL_EXT_unpack_subimage " ,
] ,
2018-12-08 18:31:08 +01:00
)
. write_bindings ( gl_generator ::StructGenerator , & mut file )
2018-11-21 09:28:15 +01:00
. unwrap ( ) ;
}
2017-05-18 22:28:02 +02:00
}
2018-11-22 10:14:23 +01:00
2020-05-20 00:13:06 +02:00
#[ cfg(feature = " backend_session_logind " ) ]
fn find_logind ( ) {
// We should allow only dynamic linkage due to libsystemd and libelogind LICENSE.
#[ cfg(feature = " backend_session_elogind " ) ]
{
if pkg_config ::Config ::new ( )
. statik ( false )
. probe ( " libelogind " )
. is_err ( )
{
println! ( " cargo:warning=Could not find `libelogind.so`. " ) ;
println! ( " cargo:warning=If your system is systemd-based, you should only enable the `backend_session_logind` feature, not `backend_session_elogind`. " ) ;
std ::process ::exit ( 1 ) ;
}
}
#[ cfg(not(feature = " backend_session_elogind " )) ]
{
if pkg_config ::Config ::new ( )
. statik ( false )
. probe ( " libsystemd " )
. is_err ( )
{
println! ( " cargo:warning=Could not find `libsystemd.so`. " ) ;
println! ( " cargo:warning=If your system uses elogind, please enable the `backend_session_elogind` feature. " ) ;
println! ( " cargo:warning=Otherwise, you may need to disable the `backend_session_logind` feature as your system does not support it. " ) ;
std ::process ::exit ( 1 ) ;
}
}
}
fn main ( ) {
#[ cfg(any(feature = " backend_egl " , feature = " renderer_gl " )) ]
gl_generate ( ) ;
#[ cfg(feature = " backend_session_logind " ) ]
find_logind ( ) ;
}