From 958a28b97f963c93d4d811809604f8fe6e3204af Mon Sep 17 00:00:00 2001 From: Tim Moore Date: Sun, 26 Dec 2010 00:44:02 +0100 Subject: [PATCH] cmake changes for osg::CullSettings::ClearMask and Fedora HAVE_CULLSETTINGS_CLEAR_MASK was not set, so a program to test CLEAR_MASK was added. The Posix timer function clock_gettime is in librt on Fedora, and probably on other systems too. --- CMakeLists.txt | 45 ++++++++++++++++++++++++++++++++++- src/Include/config_cmake.h.in | 1 + src/Main/CMakeLists.txt | 5 ++-- 3 files changed, 47 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 975d9528e..e9287c9f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,8 @@ cmake_minimum_required (VERSION 2.6) include (CheckFunctionExists) include (CheckCSourceCompiles) +include (CheckCXXSourceCompiles) +include (CheckIncludeFile) include (CPack) project(FlightGear) @@ -67,7 +69,48 @@ find_package(OpenSceneGraph 2.8.2 REQUIRED osgText osgSim osgDB osgParticle osgF 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 + 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 + #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) diff --git a/src/Include/config_cmake.h.in b/src/Include/config_cmake.h.in index e9589fbc0..9f4bfcb1c 100644 --- a/src/Include/config_cmake.h.in +++ b/src/Include/config_cmake.h.in @@ -18,6 +18,7 @@ #define ENABLE_AUDIO_SUPPORT 1 #cmakedefine HAVE_SYS_TIME_H +#cmakedefine HAVE_CULLSETTINGS_CLEAR_MASK #define VERSION "@FLIGHTGEAR_VERSION" diff --git a/src/Main/CMakeLists.txt b/src/Main/CMakeLists.txt index 0f791dc0e..ffc87c857 100644 --- a/src/Main/CMakeLists.txt +++ b/src/Main/CMakeLists.txt @@ -38,8 +38,7 @@ target_link_libraries(fgfs ${OPENGL_LIBRARIES} ${ALUT_LIBRARY} ${ZLIB_LIBRARIES} - ${PLIB_LIBRARIES}) + ${PLIB_LIBRARIES} + ${RT_LIBRARY}) install(TARGETS fgfs RUNTIME DESTINATION bin) - - \ No newline at end of file