]> git.mxchange.org Git - flightgear.git/blobdiff - CMakeLists.txt
Win32 fix
[flightgear.git] / CMakeLists.txt
index 1d924e399664351de68cbd22794823a52a0bd92e..0b88e91cbfde8e0250df526b531b4631c39e75e7 100644 (file)
@@ -2,6 +2,8 @@ cmake_minimum_required (VERSION 2.6)
 
 include (CheckFunctionExists)
 include (CheckCSourceCompiles)
+include (CheckCXXSourceCompiles)
+include (CheckIncludeFile)
 include (CPack)
 
 project(FlightGear)
@@ -25,8 +27,6 @@ option(ENABLE_UIUC_MODEL "Set to ON to build FlightGear with UIUCModel FDM" ON)
 option(ENABLE_LARCSIM "Set to ON to build FlightGear with LaRCsim FDM" ON)
 option(ENABLE_YASIM "Set to ON to build FlightGear with YASIM FDM" ON)
 option(ENABLE_JSBSIM "Set to ON to build FlightGear with JSBSim FDM" ON)
-
-option(ATCDCL "Set to ON to build FlightGear with Dave Luff's ATC code" OFF)
 option(EVENT_INPUT "Set to ON to build FlightGear with event-based Input support" OFF)
 
 if(LOGGING)
@@ -39,10 +39,6 @@ if(${SP_FDMS})
        set(ENABLE_SP_FDM 1)
 endif()
 
-if(ATCDCL)
-       set(ENABLE_ATCDCL 1)
-endif()
-
 if(EVENT_INPUT)
        message(STATUS "checking event-based Input")
        IF(APPLE)
@@ -57,17 +53,68 @@ else(EVENT_INPUT)
 endif(EVENT_INPUT)
 
 # check required dependencies
-find_package(Boost REQUIRED)
+if (MSVC)
+    # on MSVC, Olaf reports that the serialization library is required at
+    # link time. No one has you explained why, unfortunately.
+    set(Boost_USE_STATIC_LIBS        ON)
+    set(Boost_USE_MULTITHREADED      ON)
+    set(Boost_USE_STATIC_RUNTIME    OFF)
+    find_package(Boost REQUIRED COMPONENTS serialization)
+else (MSVC)
+    find_package(Boost REQUIRED)
+endif (MSVC)
+
 find_package(ZLIB REQUIRED)
 find_package(Threads REQUIRED)
 find_package(OpenGL REQUIRED)
 find_package(OpenAL REQUIRED)
 find_package(ALUT REQUIRED)
 find_package(OpenSceneGraph 2.8.2 REQUIRED osgText osgSim osgDB osgParticle osgFX osgUtil osgViewer osgGA)
-find_package(PLIB REQUIRED pu puaux js fnt)
+find_package(PLIB REQUIRED puaux pu js fnt)
 find_package(SimGear 2.0.0 REQUIRED)
 
-find_path (HAVE_SYS_TIME_H sys/time.h )
+check_include_file(unistd.h HAVE_UNISTD_H)
+check_include_file(sys/time.h HAVE_SYS_TIME_H)
+
+# definition depends on OSG version
+set(CMAKE_REQUIRED_INCLUDES ${OPENSCENEGRAPH_INCLUDE_DIRS})
+
+check_cxx_source_compiles(
+    "#include <osg/CullSettings>
+    int main()
+    {
+       osg::CullSettings::VariablesMask mask = osg::CullSettings::CLEAR_MASK;
+       return 0;
+    }
+    "
+    HAVE_CULLSETTINGS_CLEAR_MASK)
+
+# library required by simgear
+# XXX This should go in a module and only run if simgear is not shared.
+
+if(HAVE_UNISTD_H)
+set(CMAKE_REQUIRED_INCLUDES ${CMAKE_INCLUDE_PATH})
+check_cxx_source_compiles(
+   "#include <unistd.h>
+    #if !defined(_POSIX_TIMERS) || (0 >= _POSIX_TIMERS)
+    #error clock_gettime is not supported
+    #endif
+
+    int main() { return 0; }
+    "
+    HAVE_CLOCK_GETTIME)    
+endif(HAVE_UNISTD_H)
+
+set(RT_LIBRARY "")
+if(HAVE_CLOCK_GETTIME)
+check_function_exists(clock_gettime CLOCK_GETTIME_IN_LIBC)
+if(NOT CLOCK_GETTIME_IN_LIBC)
+check_library_exists(rt clock_gettime "" HAVE_RT)
+if(HAVE_RT)
+set(RT_LIBRARY rt)
+endif(HAVE_RT)
+endif(NOT CLOCK_GETTIME_IN_LIBC)
+endif(HAVE_CLOCK_GETTIME)
 
 if(CMAKE_COMPILER_IS_GNUCXX)
     set(WARNING_FLAGS -Wall)
@@ -87,8 +134,8 @@ if(WIN32)
     set(NOMINMAX 1)
 endif(WIN32)    
 
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS}")
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS}")
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS} -D_REENTRANT")
+set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS} -D_REENTRANT")
 
 include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS} 
     ${Boost_INCLUDE_DIRS} 
@@ -112,3 +159,14 @@ configure_file (
   
 add_subdirectory(src)
 add_subdirectory(utils)
+
+#-----------------------------------------------------------------------------
+### uninstall target
+#-----------------------------------------------------------------------------
+CONFIGURE_FILE(
+  "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules/cmake_uninstall.cmake.in"
+  "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
+  IMMEDIATE @ONLY)
+ADD_CUSTOM_TARGET(uninstall
+  "${CMAKE_COMMAND}" -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
+