]> git.mxchange.org Git - flightgear.git/blob - src/Main/CMakeLists.txt
Progress towards testing
[flightgear.git] / src / Main / CMakeLists.txt
1
2 if (MSVC)
3         set( RESOURCE_FILE flightgear.rc )
4 endif (MSVC)
5
6 set(SOURCES
7         bootstrap.cxx
8         fg_commands.cxx
9         fg_init.cxx
10         fg_io.cxx
11         fg_os_common.cxx
12         fg_props.cxx
13         FGInterpolator.cxx
14         globals.cxx
15         locale.cxx
16         logger.cxx
17         main.cxx
18         options.cxx
19         util.cxx
20     positioninit.cxx
21     subsystemFactory.cxx
22     screensaver_control.cxx
23         ${RESOURCE_FILE}
24         )
25
26 set(HEADERS
27         fg_commands.hxx
28         fg_init.hxx
29         fg_io.hxx
30         fg_props.hxx
31         FGInterpolator.hxx
32         globals.hxx
33         locale.hxx
34         logger.hxx
35         main.hxx
36         options.hxx
37         util.hxx
38     positioninit.hxx
39     subsystemFactory.hxx
40     AircraftDirVisitorBase.hxx
41     screensaver_control.hxx
42         )
43
44 get_property(FG_SOURCES GLOBAL PROPERTY FG_SOURCES)
45 get_property(FG_HEADERS GLOBAL PROPERTY FG_HEADERS)
46
47 link_directories ( ${Boost_LIBRARY_DIRS} )
48
49 get_property(FG_GROUPS_C GLOBAL PROPERTY FG_GROUPS_C)
50 string(REPLACE "@" ";" groups ${FG_GROUPS_C} )
51 foreach(g ${groups})
52         string(REPLACE "#" ";" g2 ${g})
53         list(GET g2 0 name)
54         list(REMOVE_AT g2 0)
55         source_group("${name}\\Sources" FILES ${g2})
56 endforeach()
57
58 get_property(FG_GROUPS_H GLOBAL PROPERTY FG_GROUPS_H)
59 string(REPLACE "@" ";" groups ${FG_GROUPS_H} )
60 foreach(g ${groups})
61         string(REPLACE "#" ";" g2 ${g})
62         list(GET g2 0 name)
63         list(REMOVE_AT g2 0)
64         source_group("${name}\\Headers" FILES ${g2})
65 endforeach()
66
67 source_group("Main\\Headers" FILES ${HEADERS})
68 source_group("Main\\Sources" FILES ${SOURCES})
69
70 # important we pass WIN32 here so the console is optional. Other
71 # platforms ignore this option. If a console is needed we allocate
72 # it manually via AllocConsole()
73 # similarly pass MACOSX_BUNDLE so we generate a .app on Mac
74 add_executable(fgfs WIN32 MACOSX_BUNDLE
75                 ${SOURCES} ${FG_SOURCES} ${FG_HEADERS} ${HEADERS})
76
77 #-----------------------------------------------------------------------------
78 # MacOSX bundle packagaing
79
80 if(APPLE)
81     execute_process(COMMAND date +%Y
82         OUTPUT_VARIABLE CURRENT_YEAR
83         OUTPUT_STRIP_TRAILING_WHITESPACE
84     )
85         
86     # in our local CMakeModules dir
87     set_target_properties(fgfs PROPERTIES
88         MACOSX_BUNDLE_INFO_PLIST FlightGearBundleInfo.plist.in
89         MACOSX_BUNDLE_GUI_IDENTIFIER "org.flightgear.FlightGear"
90         MACOSX_BUNDLE_SHORT_VERSION_STRING ${FLIGHTGEAR_VERSION}
91         MACOSX_BUNDLE_LONG_VERSION_STRING "FlightGear ${FLIGHTGEAR_VERSION} Nightly"
92         MACOSX_BUNDLE_BUNDLE_VERSION ${FLIGHTGEAR_VERSION}
93         MACOSX_BUNDLE_COPYRIGHT "FlightGear ${FLIGHTGEAR_VERSION} © 1997-${CURRENT_YEAR}, The FlightGear Project. Licensed under the GNU Public License version 2."
94         MACOSX_BUNDLE_INFO_STRING "Nightly build of FlightGear ${FLIGHTGEAR_VERSION} for testing and development"
95         MACOSX_BUNDLE_BUNDLE_NAME "FlightGear"
96         MACOSX_BUNDLE_ICON_FILE "FlightGear.icns"
97     )
98 endif()
99
100 #-----------------------------------------------------------------------------
101
102 get_property(FG_LIBS GLOBAL PROPERTY FG_LIBS)
103 #message(STATUS "fg libs ${FG_LIBS}")
104 #message(STATUS "OSG libs ${OPENSCENEGRAPH_LIBRARIES}")
105 #message(STATUS "SG libs ${SIMGEAR_LIBRARIES}")
106
107 if(RTI_FOUND)
108         set(HLA_LIBRARIES ${RTI_LIBRARIES})
109 else()
110         set(HLA_LIBRARIES "")
111 endif()
112
113 if(ENABLE_JSBSIM)
114     # FIXME - remove once JSBSim doesn't expose private headers
115     include_directories(${PROJECT_SOURCE_DIR}/src/FDM/JSBSim)
116     
117     target_link_libraries(fgfs JSBSim)
118 endif()
119 if(ENABLE_IAX)
120     target_link_libraries(fgfs iaxclient_lib ${OPENAL_LIBRARY})
121 endif()
122 if(USE_DBUS)
123     target_link_libraries(fgfs ${DBUS_LIBRARIES})
124 endif()
125 if(FG_HAVE_GPERFTOOLS)
126     include_directories(${GooglePerfTools_INCLUDE_DIR})
127     target_link_libraries(fgfs ${GooglePerfTools_LIBRARIES})
128 endif()
129
130 if (CRASHRPT_FOUND)
131         target_link_libraries(fgfs ${CRASHRPT_LIBRARY})
132 endif()
133 if(X11_FOUND)
134     target_link_libraries(fgfs ${X11_LIBRARIES})
135 endif()
136 target_link_libraries(fgfs
137         ${SQLITE3_LIBRARY}
138         ${SIMGEAR_LIBRARIES}
139         ${OPENSCENEGRAPH_LIBRARIES}
140         ${OPENGL_LIBRARIES}
141         ${PLIB_LIBRARIES}
142         ${ZLIB_LIBRARY}
143         ${HLA_LIBRARIES}
144         ${EVENT_INPUT_LIBRARIES}
145         ${SIMGEAR_CORE_LIBRARY_DEPENDENCIES}
146         ${SIMGEAR_SCENE_LIBRARY_DEPENDENCIES}
147         ${PLATFORM_LIBS}
148 )
149
150 if(ENABLE_FLITE)
151     if(SYSTEM_HTS_ENGINE)
152         target_link_libraries(fgfs flite_hts ${HTS_ENGINE_LIBRARIES})
153     else()
154         target_link_libraries(fgfs flite_hts hts_engine)
155     endif()
156 endif()
157
158 if (Qt5Core_FOUND)
159     target_link_libraries(fgfs Qt5::Widgets fglauncher)
160 endif()
161
162 if (APPLE)  
163     install(TARGETS fgfs BUNDLE DESTINATION .)
164 else()
165     install(TARGETS fgfs RUNTIME DESTINATION bin)
166 endif()
167
168 if(ENABLE_METAR)
169     add_executable(metar metar_main.cxx)
170     target_link_libraries(metar
171         ${SIMGEAR_LIBRARIES}
172         ${SIMGEAR_CORE_LIBRARY_DEPENDENCIES}
173         ${SIMGEAR_SCENE_LIBRARY_DEPENDENCIES}
174         ${PLATFORM_LIBS}
175     )
176
177     install(TARGETS metar RUNTIME DESTINATION bin)
178 endif()