]> git.mxchange.org Git - flightgear.git/blob - CMakeLists.txt
975d9528e474c6e32a9afb426bb72747b5776d26
[flightgear.git] / CMakeLists.txt
1 cmake_minimum_required (VERSION 2.6)
2
3 include (CheckFunctionExists)
4 include (CheckCSourceCompiles)
5 include (CPack)
6
7 project(FlightGear)
8
9 file(READ version FLIGHTGEAR_VERSION)
10
11 #packaging
12 SET(CPACK_RESOURCE_FILE_LICENSE "${PROJECT_SOURCE_DIR}/COPYING")
13 SET(CPACK_RESOURCE_FILE_README "${PROJECT_SOURCE_DIR}/README")
14
15 # We have some custom .cmake scripts not in the official distribution.
16 set(CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/CMakeModules;${CMAKE_MODULE_PATH}")
17
18 # autoconf compatibility
19 set(PKGLIBDIR "foo")
20
21 option(LOGGING "Set to OFF to build FlightGear without logging" ON)
22
23 option(SP_FDMS "Set to ON to build FlightGear with special-purpose FDMs" OFF)
24 option(ENABLE_UIUC_MODEL "Set to ON to build FlightGear with UIUCModel FDM" ON)
25 option(ENABLE_LARCSIM "Set to ON to build FlightGear with LaRCsim FDM" ON)
26 option(ENABLE_YASIM "Set to ON to build FlightGear with YASIM FDM" ON)
27 option(ENABLE_JSBSIM "Set to ON to build FlightGear with JSBSim FDM" ON)
28
29 option(ATCDCL "Set to ON to build FlightGear with Dave Luff's ATC code" OFF)
30 option(EVENT_INPUT "Set to ON to build FlightGear with event-based Input support" OFF)
31
32 if(LOGGING)
33         # nothing
34 else()
35         set(FG_NDEBUG 1)
36 endif()
37
38 if(${SP_FDMS})
39         set(ENABLE_SP_FDM 1)
40 endif()
41
42 if(ATCDCL)
43         set(ENABLE_ATCDCL 1)
44 endif()
45
46 if(EVENT_INPUT)
47         message(STATUS "checking event-based Input")
48         IF(APPLE)
49                 
50         elseif(CMAKE_SYSTEM_NAME MATCHES "Linux")
51                 
52         else()
53                 message(WARNING "event input is not supported on this platform yet")
54         endif()
55 else(EVENT_INPUT)
56         set(ENABLE_PLIB_JOYSTICK 1)
57 endif(EVENT_INPUT)
58
59 # check required dependencies
60 find_package(Boost REQUIRED)
61 find_package(ZLIB REQUIRED)
62 find_package(Threads REQUIRED)
63 find_package(OpenGL REQUIRED)
64 find_package(OpenAL REQUIRED)
65 find_package(ALUT REQUIRED)
66 find_package(OpenSceneGraph 2.8.2 REQUIRED osgText osgSim osgDB osgParticle osgFX osgUtil osgViewer osgGA)
67 find_package(PLIB REQUIRED puaux pu js fnt)
68 find_package(SimGear 2.0.0 REQUIRED)
69
70 find_path (HAVE_SYS_TIME_H sys/time.h )
71
72 if(CMAKE_COMPILER_IS_GNUCXX)
73     set(WARNING_FLAGS -Wall)
74 endif(CMAKE_COMPILER_IS_GNUCXX)
75
76 if(WIN32)
77
78     if(MSVC)
79         # turn off various warnings
80         # foreach(warning 4244 4251 4267 4275 4290 4786 4305 4996)
81         #     SET(WARNING_FLAGS "${WARNING_FLAGS} /wd${warning}")
82         # endforeach(warning)
83         
84         set(MSVC_FLAGS "-DNOMINMAX -D_USE_MATH_DEFINES -D_CRT_SECURE_NO_WARNINGS -D__CRT_NONSTDC_NO_WARNINGS")
85     endif(MSVC)
86
87     set(NOMINMAX 1)
88 endif(WIN32)    
89
90 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS}")
91 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS} ${MSVC_FLAGS}")
92
93 include_directories(${OPENSCENEGRAPH_INCLUDE_DIRS} 
94     ${Boost_INCLUDE_DIRS} 
95         ${ZLIB_INCLUDE_DIR} 
96     ${ALUT_INCLUDE_DIR}
97         ${OPENAL_INCLUDE_DIR}
98         ${SIMGEAR_INCLUDE_DIR}
99         ${PLIB_INCLUDE_DIR} )
100
101 include_directories(${PROJECT_SOURCE_DIR}/src)
102 include_directories(${PROJECT_BINARY_DIR}/src/Include)
103
104 add_definitions(-DHAVE_CONFIG_H)
105
106 # configure a header file to pass some of the CMake settings
107 # to the source code
108 configure_file (
109   "${PROJECT_SOURCE_DIR}/src/Include/config_cmake.h.in"
110   "${PROJECT_BINARY_DIR}/src/Include/config.h"
111   )
112   
113 add_subdirectory(src)
114 add_subdirectory(utils)