include (CheckFunctionExists)
include (CheckCSourceCompiles)
+include (CheckCXXSourceCompiles)
+include (CheckIncludeFile)
include (CPack)
project(FlightGear)
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)
set(ENABLE_SP_FDM 1)
endif()
-if(ATCDCL)
- set(ENABLE_ATCDCL 1)
-endif()
-
if(EVENT_INPUT)
message(STATUS "checking event-based Input")
IF(APPLE)
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(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)
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}
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")
+