diff options
| author | David Reid <[email protected]> | 2018-04-21 17:26:40 +1000 |
|---|---|---|
| committer | David Reid <[email protected]> | 2018-04-21 17:26:40 +1000 |
| commit | f5ebbfb6bc80e5d5555e84ee505ff794c2bc64b6 (patch) | |
| tree | 800aeb61be9c2018d1a048da54d1f6ab746f11f1 /utils.cmake | |
| parent | 950f31e620a9239dc91230ad92bb243f149e6f2c (diff) | |
| parent | 847bdaf68287f70fbeb5599361257b6f982e48c5 (diff) | |
| download | raylib-f5ebbfb6bc80e5d5555e84ee505ff794c2bc64b6.tar.gz raylib-f5ebbfb6bc80e5d5555e84ee505ff794c2bc64b6.zip | |
Merge branch 'master' of https://github.com/raysan5/raylib into dr/mini_al
Diffstat (limited to 'utils.cmake')
| -rw-r--r-- | utils.cmake | 130 |
1 files changed, 96 insertions, 34 deletions
diff --git a/utils.cmake b/utils.cmake index c902f60e..71e34e01 100644 --- a/utils.cmake +++ b/utils.cmake @@ -1,49 +1,111 @@ # All sorts of things that we need cross project -cmake_minimum_required(VERSION 3.0) +cmake_minimum_required(VERSION 2.8.0) -# Detect linux -if(UNIX AND NOT APPLE) +add_definitions("-DRAYLIB_CMAKE=1") + +# Linking for OS X -framework options +# Will do nothing on other OSes +if(APPLE) + find_library(OPENGL_LIBRARY OpenGL) + find_library(COCOA_LIBRARY Cocoa) + find_library(IOKIT_LIBRARY IOKit) + find_library(COREFOUNDATION_LIBRARY CoreFoundation) + find_library(COREVIDEO_LIBRARY CoreVideo) + + set(LIBS_PRIVATE ${OPENGL_LIBRARY} ${COCOA_LIBRARY} + ${IOKIT_LIBRARY} ${COREFOUNDATION_LIBRARY} ${COREVIDEO_LIBRARY}) +elseif(WIN32) + # no pkg-config --static on Windows yet... +else() + if(USE_WAYLAND) + set(_GLFW_WAYLAND 1) + else() + set(_GLFW_X11 1) + endif() + + find_library(pthread NAMES pthread) + find_package(OpenGL QUIET) + if ("${OPENGL_LIBRARIES}" STREQUAL "") + if(NOT USE_WAYLAND) + # CFLAGS=-m32 cmake on Linux fails for some reason, so fallback to hardcoding + set(LIBS_PRIVATE m pthread GL X11 Xrandr Xinerama Xi Xxf86vm Xcursor) + else() + # CFLAGS=-m32 cmake on Linux fails for some reason, so fallback to hardcoding + set(LIBS_PRIVATE m pthread GL wayland-client wayland-cursor wayland-egl) + endif() + else() + if(NOT USE_WAYLAND) + find_package(X11 REQUIRED X11) + find_library(XRANDR_LIBRARY Xrandr) + find_library(XI_LIBRARY Xi) + find_library(XINERAMA_LIBRARY Xinerama) + find_library(XXF86VM_LIBRARY Xxf86vm) + find_library(XCURSOR_LIBRARY Xcursor) + else() + find_library(WAYLAND_CLIENT_LIBRARY wayland-client) + find_library(WAYLAND_CURSOR_LIBRARY wayland-cursor) + find_library(WAYLAND_EGL_LIBRARY wayland-egl) + endif() + + include_directories(${OPENGL_INCLUDE_DIR}) + + if ("${CMAKE_SYSTEM_NAME}" MATCHES "(Net|Open)BSD") + find_library(OSS_LIBRARY ossaudio) + endif() + + if(NOT USE_WAYLAND) + set(LIBS_PRIVATE m ${pthread} ${OPENGL_LIBRARIES} ${X11_LIBRARIES} ${XRANDR_LIBRARY} ${XINERAMA_LIBRARY} ${XI_LIBRARY} ${XXF86VM_LIBRARY} ${XCURSOR_LIBRARY} ${OSS_LIBRARY}) + else() + set(LIBS_PRIVATE m ${pthread} ${OPENGL_LIBRARIES} ${WAYLAND_CLIENT_LIBRARY} ${WAYLAND_CURSOR_LIBRARY} ${WAYLAND_EGL_LIBRARY} ${OSS_LIBRARY}) + endif() + endif() +endif() + +if(USE_EXTERNAL_GLFW STREQUAL "ON") + find_package(glfw3 3.2.1 REQUIRED) +elseif(USE_EXTERNAL_GLFW STREQUAL "IF_POSSIBLE") + find_package(glfw3 3.2.1 QUIET) +endif() +if (glfw3_FOUND) + set(LIBS_PRIVATE ${LIBS_PRIVATE} glfw) +endif() + +if(CMAKE_SYSTEM_NAME STREQUAL Linux) set(LINUX TRUE) + set(LIBS_PRIVATE dl ${LIBS_PRIVATE}) endif() -# Need GLFW 3.2.1 -find_package(glfw3 3.2.1 REQUIRED) +foreach(L ${LIBS_PRIVATE}) + get_filename_component(DIR ${L} PATH) + get_filename_component(LIBFILE ${L} NAME_WE) + STRING(REGEX REPLACE "^lib" "" FILE ${LIBFILE}) + if (${L} MATCHES "[.]framework$") + set(FILE_OPT "-framework ${FILE}") + set(DIR_OPT "-F${DIR}") + else() + set(FILE_OPT "-l${FILE}") + set(DIR_OPT "-L${DIR}") + endif() -# Linking for OS X -framework options -# Will do nothing on other OSes -function(link_os_x_frameworks binary) - if(APPLE) - find_library(OPENGL_LIBRARY OpenGL) - find_library(OPENAL_LIBRARY OpenAL) - find_library(COCOA_LIBRARY Cocoa) - - set(OSX_FRAMEWORKS ${OPENGL_LIBRARY} ${OPENAL_LIBRARY} ${COCOA_LIBRARY}) - target_link_libraries(${binary} ${OSX_FRAMEWORKS}) + if ("${DIR}" STREQUAL "" OR "${DIR}" STREQUAL "${LASTDIR}") + set (DIR_OPT "") endif() -endfunction() + + set(LASTDIR ${DIR}) + + set(__PKG_CONFIG_LIBS_PRIVATE ${__PKG_CONFIG_LIBS_PRIVATE} ${DIR_OPT} ${FILE_OPT}) + string (REPLACE ";" " " __PKG_CONFIG_LIBS_PRIVATE "${__PKG_CONFIG_LIBS_PRIVATE}") +endforeach(L) + # Do the linking for executables that are meant to link raylib function(link_libraries_to_executable executable) - # Link the libraries - if(APPLE) - # OS X, we use frameworks - link_os_x_frameworks(${executable}) - elseif(LINUX) - # Elsewhere (such as Linux), need `-lopenal -lGL`, etc... - target_link_libraries(${executable} m pthread dl) - target_link_libraries(${executable} openal) - target_link_libraries(${executable} GL) - target_link_libraries(${executable} X11 Xrandr Xinerama Xi Xxf86vm Xcursor) # X11 stuff + # Link raylib + if (TARGET raylib_shared) + target_link_libraries(${executable} raylib_shared) else() - # TODO windows + target_link_libraries(${executable} raylib ${__PKG_CONFIG_LIBS_PRIVATE}) endif() - - # Add in GLFW as a linking target - target_link_libraries(${executable} glfw) - - # And raylib - target_link_libraries(${executable} raylib) endfunction() - |
