@ -7,133 +7,149 @@ if(POLICY CMP0072)
cmake_policy ( SET CMP0072 NEW )
endif ( )
if ( ${ PLATFORM } MATCHES "Desktop" )
set ( PLATFORM_CPP "PLATFORM_DESKTOP" )
if ( APPLE )
# N e e d t o f o r c e O p e n G L 3 . 3 o n O S X
# S e e : h t t p s : / / g i t h u b . c o m / r a y s a n 5 / r a y l i b / i s s u e s / 3 4 1
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" )
find_library ( OPENGL_LIBRARY OpenGL )
set ( LIBS_PRIVATE ${ OPENGL_LIBRARY } )
link_libraries ( "${LIBS_PRIVATE}" )
if ( NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0" )
add_definitions ( -DGL_SILENCE_DEPRECATION )
MESSAGE ( AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!" )
endif ( )
elseif ( WIN32 )
add_definitions ( -D_CRT_SECURE_NO_WARNINGS )
find_package ( OpenGL QUIET )
set ( LIBS_PRIVATE ${ OPENGL_LIBRARIES } winmm )
elseif ( UNIX )
find_library ( pthread NAMES pthread )
find_package ( OpenGL QUIET )
if ( "${OPENGL_LIBRARIES}" STREQUAL "" )
set ( OPENGL_LIBRARIES "GL" )
endif ( )
if ( "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" )
find_library ( OSS_LIBRARY ossaudio )
endif ( )
if ( SUPPORT_VULKAN AND Vulkan_FOUND )
set ( GRAPHICS "GRAPHICS_API_VULKAN" )
message ( STATUS "Vulkan graphics API selected. GRAPHICS set to GRAPHICS_API_VULKAN." )
# A n y V u l k a n - s p e c i f i c L I B S _ P R I V A T E a d d i t i o n s c a n b e h a n d l e d h e r e o r i n s r c / C M a k e L i s t s . t x t
# F o r n o w , a s s u m i n g V u l k a n : : V u l k a n a n d V u l k a n _ L I B R A R I E S c o v e r n e c e s s a r y l i n k i n g .
else ( )
# O R I G I N A L O P E N G L - S P E C I F I C L O G I C
if ( ${ PLATFORM } MATCHES "Desktop" )
set ( PLATFORM_CPP "PLATFORM_DESKTOP" )
if ( APPLE )
# N e e d t o f o r c e O p e n G L 3 . 3 o n O S X
# S e e : h t t p s : / / g i t h u b . c o m / r a y s a n 5 / r a y l i b / i s s u e s / 3 4 1
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" )
find_library ( OPENGL_LIBRARY OpenGL )
set ( LIBS_PRIVATE ${ OPENGL_LIBRARY } )
link_libraries ( "${LIBS_PRIVATE}" )
if ( NOT CMAKE_SYSTEM STRLESS "Darwin-18.0.0" )
add_definitions ( -DGL_SILENCE_DEPRECATION )
MESSAGE ( AUTHOR_WARNING "OpenGL is deprecated starting with macOS 10.14 (Mojave)!" )
endif ( )
elseif ( WIN32 )
add_definitions ( -D_CRT_SECURE_NO_WARNINGS )
find_package ( OpenGL QUIET )
set ( LIBS_PRIVATE ${ OPENGL_LIBRARIES } winmm )
elseif ( UNIX )
find_library ( pthread NAMES pthread )
find_package ( OpenGL QUIET )
if ( "${OPENGL_LIBRARIES}" STREQUAL "" )
set ( OPENGL_LIBRARIES "GL" )
endif ( )
if ( "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" )
find_library ( OSS_LIBRARY ossaudio )
endif ( )
set ( LIBS_PRIVATE m pthread ${ OPENGL_LIBRARIES } ${ OSS_LIBRARY } )
else ( )
find_library ( pthread NAMES pthread )
find_package ( OpenGL QUIET )
if ( "${OPENGL_LIBRARIES}" STREQUAL "" )
set ( OPENGL_LIBRARIES "GL" )
endif ( )
set ( LIBS_PRIVATE m atomic pthread ${ OPENGL_LIBRARIES } ${ OSS_LIBRARY } )
if ( "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" )
find_library ( OSS_LIBRARY ossaudio )
set ( LIBS_PRIVATE m pthread ${ OPENGL_LIBRARIES } ${ OSS_LIBRARY } )
else ( )
find_library ( pthread NAMES pthread )
find_package ( OpenGL QUIET )
if ( "${OPENGL_LIBRARIES}" STREQUAL "" )
set ( OPENGL_LIBRARIES "GL" )
endif ( )
set ( LIBS_PRIVATE m atomic pthread ${ OPENGL_LIBRARIES } ${ OSS_LIBRARY } )
if ( "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" )
find_library ( OSS_LIBRARY ossaudio )
set ( LIBS_PRIVATE m pthread ${ OPENGL_LIBRARIES } ${ OSS_LIBRARY } )
endif ( )
if ( NOT "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" AND USE_AUDIO )
set ( LIBS_PRIVATE ${ LIBS_PRIVATE } dl )
endif ( )
endif ( )
if ( NOT "${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD" AND USE_AUDIO )
set ( LIBS_PRIVATE ${ LIBS_PRIVATE } dl )
endif ( )
endif ( )
elseif ( ${ PLATFORM } MATCHES "Web" )
set ( PLATFORM_CPP "PLATFORM_WEB" )
if ( NOT GRAPHICS )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
endif ( )
set ( CMAKE_STATIC_LIBRARY_SUFFIX ".a" )
elseif ( ${ PLATFORM } MATCHES "Web" )
set ( PLATFORM_CPP "PLATFORM_WEB" )
if ( NOT GRAPHICS )
elseif ( ${ PLATFORM } MATCHES "Android" )
set ( PLATFORM_CPP "PLATFORM_ANDROID" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
endif ( )
set ( CMAKE_STATIC_LIBRARY_SUFFIX ".a" )
elseif ( ${ PLATFORM } MATCHES "Android" )
set ( PLATFORM_CPP "PLATFORM_ANDROID" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
list ( APPEND raylib_sources ${ ANDROID_NDK } /sources/android/native_app_glue/android_native_app_glue.c )
include_directories ( ${ ANDROID_NDK } /sources/android/native_app_glue )
set ( CMAKE_POSITION_INDEPENDENT_CODE ON )
list ( APPEND raylib_sources ${ ANDROID_NDK } /sources/android/native_app_glue/android_native_app_glue.c )
include_directories ( ${ ANDROID_NDK } /sources/android/native_app_glue )
# N O T E : W e r e m o v e ' - W l , - - n o - u n d e f i n e d ' ( s e t b y d e f a u l t ) a s i t c o n f l i c t s w i t h ' - W l , - u n d e f i n e d , d y n a m i c _ l o o k u p ' n e e d e d
# f o r c o m p i l i n g w i t h t h e m i s s i n g ' v o i d main ( void ) ' d e c l a r a t i o n i n ` android_main ( ) ` .
# W e a l s o r e m o v e o t h e r u n n e c e s s a r y o r p r o b l e m a t i c f l a g s .
# N O T E : W e r e m o v e ' - W l , - - n o - u n d e f i n e d ' ( s e t b y d e f a u l t ) a s i t c o n f l i c t s w i t h ' - W l , - u n d e f i n e d , d y n a m i c _ l o o k u p ' n e e d e d
# f o r c o m p i l i n g w i t h t h e m i s s i n g ' v o i d main ( void ) ' d e c l a r a t i o n i n ` android_main ( ) ` .
# W e a l s o r e m o v e o t h e r u n n e c e s s a r y o r p r o b l e m a t i c f l a g s .
string ( REPLACE "-Wl,--no-undefined -Qunused-arguments" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" )
string ( REPLACE "-static-libstdc++" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" )
string ( REPLACE "-Wl,--no-undefined -Qunused-arguments" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" )
string ( REPLACE "-static-libstdc++" "" CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -u ANativeActivity_onCreate -Wl,-undefined,dynamic_lookup" )
set ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,--exclude-libs,libatomic.a -Wl,--build-id -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--warn-shared-textrel -Wl,--fatal-warnings -u ANativeActivity_onCreate -Wl,-undefined,dynamic_lookup" )
find_library ( OPENGL_LIBRARY OpenGL )
set ( LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c )
find_library ( OPENGL_LIBRARY OpenGL )
set ( LIBS_PRIVATE m log android EGL GLESv2 OpenSLES atomic c )
elseif ( "${PLATFORM}" MATCHES "DRM" )
set ( PLATFORM_CPP "PLATFORM_DRM" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
elseif ( "${PLATFORM}" MATCHES "DRM" )
set ( PLATFORM_CPP "PLATFORM_DRM" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
add_definitions ( -D_DEFAULT_SOURCE )
add_definitions ( -DEGL_NO_X11 )
add_definitions ( -DPLATFORM_DRM )
add_definitions ( -D_DEFAULT_SOURCE )
add_definitions ( -DEGL_NO_X11 )
add_definitions ( -DPLATFORM_DRM )
find_library ( GLESV2 GLESv2 )
find_library ( EGL EGL )
find_library ( DRM drm )
find_library ( GBM gbm )
find_library ( GLESV2 GLESv2 )
find_library ( EGL EGL )
find_library ( DRM drm )
find_library ( GBM gbm )
if ( NOT CMAKE_CROSSCOMPILING OR NOT CMAKE_SYSROOT )
include_directories ( /usr/include/libdrm )
if ( NOT CMAKE_CROSSCOMPILING OR NOT CMAKE_SYSROOT )
include_directories ( /usr/include/libdrm )
endif ( )
set ( LIBS_PRIVATE ${ GLESV2 } ${ EGL } ${ DRM } ${ GBM } atomic pthread m dl )
elseif ( "${PLATFORM}" MATCHES "SDL" )
find_package ( SDL2 REQUIRED )
set ( PLATFORM_CPP "PLATFORM_DESKTOP_SDL" )
set ( LIBS_PRIVATE SDL2::SDL2 )
# F o r S D L , i f i t ' s u s e d w i t h O p e n G L , e n s u r e G R A P H I C S i s s e t a p p r o p r i a t e l y i f n o t a l r e a d y .
# T h i s m i g h t n e e d a d j u s t m e n t i f S D L c a n a l s o h o s t V u l k a n . F o r n o w , a s s u m i n g S D L i s f o r O p e n G L .
if ( NOT GRAPHICS )
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" ) # D e f a u l t f o r S D L o n d e s k t o p , o r c o u l d b e E S f o r o t h e r p l a t f o r m s
endif ( )
endif ( )
set ( LIBS_PRIVATE ${ GLESV2 } ${ EGL } ${ DRM } ${ GBM } atomic pthread m dl )
elseif ( "${PLATFORM}" MATCHES "SDL" )
find_package ( SDL2 REQUIRED )
set ( PLATFORM_CPP "PLATFORM_DESKTOP_SDL" )
set ( LIBS_PRIVATE SDL2::SDL2 )
endif ( )
if ( NOT ${ OPENGL_VERSION } MATCHES "OFF" )
set ( SUGGESTED_GRAPHICS "${GRAPHICS}" )
if ( ${ OPENGL_VERSION } MATCHES "4.3" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_43" )
elseif ( ${ OPENGL_VERSION } MATCHES "3.3" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" )
elseif ( ${ OPENGL_VERSION } MATCHES "2.1" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_21" )
elseif ( ${ OPENGL_VERSION } MATCHES "1.1" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_11" )
elseif ( ${ OPENGL_VERSION } MATCHES "ES 2.0" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
elseif ( ${ OPENGL_VERSION } MATCHES "ES 3.0" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES3" )
endif ( )
if ( NOT "${SUGGESTED_GRAPHICS}" STREQUAL "" AND NOT "${SUGGESTED_GRAPHICS}" STREQUAL "${GRAPHICS}" )
message ( WARNING "You are overriding the suggested GRAPHICS=${SUGGESTED_GRAPHICS} with ${GRAPHICS}! This may fail." )
if ( NOT ${ OPENGL_VERSION } MATCHES "OFF" )
set ( SUGGESTED_GRAPHICS "${GRAPHICS}" )
if ( ${ OPENGL_VERSION } MATCHES "4.3" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_43" )
elseif ( ${ OPENGL_VERSION } MATCHES "3.3" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" )
elseif ( ${ OPENGL_VERSION } MATCHES "2.1" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_21" )
elseif ( ${ OPENGL_VERSION } MATCHES "1.1" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_11" )
elseif ( ${ OPENGL_VERSION } MATCHES "ES 2.0" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES2" )
elseif ( ${ OPENGL_VERSION } MATCHES "ES 3.0" )
set ( GRAPHICS "GRAPHICS_API_OPENGL_ES3" )
endif ( )
if ( NOT "${SUGGESTED_GRAPHICS}" STREQUAL "" AND NOT "${SUGGESTED_GRAPHICS}" STREQUAL "${GRAPHICS}" )
message ( WARNING "You are overriding the suggested GRAPHICS=${SUGGESTED_GRAPHICS} with ${GRAPHICS}! This may fail." )
endif ( )
endif ( )
endif ( )
if ( NOT GRAPHICS )
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" )
endif ( )
if ( NOT GRAPHICS )
set ( GRAPHICS "GRAPHICS_API_OPENGL_33" ) # D e f a u l t O p e n G L v e r s i o n i f n o t h i n g e l s e s e t i t
endif ( )
endif ( ) # E n d o f S U P P O R T _ V U L K A N A N D V u l k a n _ F O U N D c o n d i t i o n a l
# U n i v e r s a l a p p e n d s t o L I B S _ P R I V A T E
set ( LIBS_PRIVATE ${ LIBS_PRIVATE } ${ OPENAL_LIBRARY } )
if ( ${ PLATFORM } MATCHES "Desktop" )
# T h i s i m p l i e s g l f w i s u s e d f o r b o t h V u l k a n a n d O p e n G L o n D e s k t o p .
# I f G L F W i s o n l y f o r O p e n G L , t h i s s h o u l d b e i n t h e e l s e b l o c k .
# G i v e n r c o r e _ v u l k a n _ g l f w . c , i t ' s l i k e l y n e e d e d f o r V u l k a n t o o .
set ( LIBS_PRIVATE ${ LIBS_PRIVATE } glfw )
endif ( )