From bd8eb1399a051ce09b07ce34f76f2e12889849bc Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Sun, 25 Mar 2012 16:51:24 +0200 Subject: [PATCH] Put platform detection in a single place. --- CMakeLists.txt | 32 ++++++++++++++++++-------------- src/CMakeLists.txt | 11 +++-------- 2 files changed, 21 insertions(+), 22 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e7149dd6..ef6ded3d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,13 +23,25 @@ if (CMAKE_COMPILER_IS_GNUCC) endif() #-------------------------------------------------------------------- -# Set up GLFW for Win32 and WGL on Windows +# Detect and select target platform #-------------------------------------------------------------------- if (WIN32) - message(STATUS "Building GLFW for WGL on a Win32 system") - - # Define the platform identifier set(_GLFW_WIN32_WGL 1) + message(STATUS "Building GLFW for WGL on a Win32 system") +elseif (UNIX AND APPLE) + set(_GLFW_COCOA_NSGL 1) + message(STATUS "Building GLFW for X11 and GLX on a Unix-like system") +elseif (UNIX AND NOT APPLE) + set(_GLFW_X11_GLX 1) + message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X") +else() + message(FATAL_ERROR "No supported platform was detected") +endif() + +#-------------------------------------------------------------------- +# Set up GLFW for Win32 and WGL on Windows +#-------------------------------------------------------------------- +if (_GLFW_WIN32_WGL) # Set up library and include paths list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR}) @@ -43,11 +55,7 @@ endif() #-------------------------------------------------------------------- # Set up GLFW for Xlib and GLX on Unix-like systems with X Windows #-------------------------------------------------------------------- -if (UNIX AND NOT APPLE) - message(STATUS "Building GLFW for X11 and GLX on a Unix-like system") - - # Define the platform identifier - set(_GLFW_X11_GLX 1) +if (_GLFW_X11_GLX) find_package(X11 REQUIRED) @@ -131,12 +139,8 @@ endif() #-------------------------------------------------------------------- # Set up GLFW for Cocoa and NSOpenGL on Mac OS X #-------------------------------------------------------------------- -if (UNIX AND APPLE) - message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X") +if (_GLFW_COCOA_NSGL) - # Define the platform identifier - set(_GLFW_COCOA_NSGL 1) - option(GLFW_BUILD_UNIVERSAL "Build GLFW as a Universal Binary" OFF) # Universal build diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3f692cf8..b8c0fd7d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,5 +1,5 @@ -if (UNIX) +if (_GLFW_X11_GLX) configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libglfw.pc.cmake ${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc @ONLY) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc @@ -30,24 +30,20 @@ elseif (_GLFW_X11_GLX) x11_init.c x11_input.c x11_joystick.c x11_keysym2unicode.c x11_opengl.c x11_time.c x11_window.c) -else() - message(FATAL_ERROR "No supported platform was selected") endif() add_library(glfw ${glfw_SOURCES}) if (BUILD_SHARED_LIBS) - if (WIN32) + if (_GLFW_WIN32_WGL) # The GLFW DLL needs a special compile-time macro and import library name set_target_properties(glfw PROPERTIES COMPILE_DEFINITIONS "GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM" PREFIX "" IMPORT_PREFIX "" IMPORT_SUFFIX "dll.lib") - endif() - - if (APPLE) + elseif (_GLFW_COCOA_NSGL) # Append -fno-common to the compile flags to work around a bug in the Apple GCC get_target_property(glfw_CFLAGS glfw COMPILE_FLAGS) if (NOT glfw_CFLAGS) @@ -59,7 +55,6 @@ if (BUILD_SHARED_LIBS) target_link_libraries(glfw ${glfw_LIBRARIES}) target_link_libraries(glfw LINK_INTERFACE_LIBRARIES) - endif() install(TARGETS glfw DESTINATION lib)