]> git.mxchange.org Git - simgear.git/blob - simgear/CMakeLists.txt
Use SGBinaryFile in a couple more places.
[simgear.git] / simgear / CMakeLists.txt
1
2 file(WRITE ${PROJECT_BINARY_DIR}/simgear/version.h "#define SIMGEAR_VERSION ${SIMGEAR_VERSION}")
3
4 foreach( mylibfolder
5         bucket
6         bvh
7         debug
8         ephemeris
9         io
10         magvar
11         math
12         misc
13         nasal
14         nasal/cppbind
15         props
16         serial
17         structure
18         threads
19         timing
20         xml
21         package
22     )
23
24     add_subdirectory(${mylibfolder})
25
26 endforeach( mylibfolder )
27
28 if(NOT SIMGEAR_HEADLESS)
29     add_subdirectory(canvas)
30     add_subdirectory(environment)
31     add_subdirectory(screen)
32     add_subdirectory(scene)
33     add_subdirectory(sound)
34 endif(NOT SIMGEAR_HEADLESS)
35
36
37 if(ENABLE_RTI)
38     add_subdirectory(hla)
39 endif(ENABLE_RTI)
40
41
42 set(HEADERS compiler.h constants.h sg_inlines.h ${PROJECT_BINARY_DIR}/simgear/version.h)
43 install (FILES ${HEADERS}  DESTINATION include/simgear/)
44
45 get_property(coreSources GLOBAL PROPERTY CORE_SOURCES)
46 get_property(sceneSources GLOBAL PROPERTY SCENE_SOURCES)
47 get_property(publicHeaders GLOBAL PROPERTY PUBLIC_HEADERS)
48 get_property(localExpatSources GLOBAL PROPERTY LOCAL_EXPAT_SOURCES)
49
50 if(SIMGEAR_SHARED)
51     message(STATUS "Library building mode: SHARED LIBRARIES")
52     add_library(SimGearCore SHARED ${coreSources} ${localExpatSources})
53
54     set_property(TARGET SimGearCore PROPERTY LINKER_LANGUAGE CXX)
55     set_property(TARGET SimGearCore PROPERTY VERSION   ${SIMGEAR_VERSION})
56     set_property(TARGET SimGearCore PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
57     install(TARGETS SimGearCore
58             EXPORT SimGearTargets
59             LIBRARY DESTINATION
60             ${CMAKE_INSTALL_LIBDIR})
61
62     if(NOT SIMGEAR_HEADLESS)
63         add_library(SimGearScene SHARED ${sceneSources})
64         set_property(TARGET SimGearScene PROPERTY LINKER_LANGUAGE CXX)
65         set_property(TARGET SimGearScene PROPERTY VERSION   ${SIMGEAR_VERSION})
66         set_property(TARGET SimGearScene PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
67
68         # EXPORT SimGearSceneConfig
69         install(TARGETS SimGearScene
70                 EXPORT SimGearTargets
71                 LIBRARY
72                 DESTINATION ${CMAKE_INSTALL_LIBDIR} )
73     endif()
74
75 else()
76     message(STATUS "Library building mode: STATIC LIBRARIES")
77
78         get_property(FG_GROUPS_CORE_SOURCES_C GLOBAL PROPERTY FG_GROUPS_CORE_SOURCES_C)
79         string(REPLACE "@" ";" groups ${FG_GROUPS_CORE_SOURCES_C} )
80         foreach(g ${groups})
81                 string(REPLACE "#" ";" g2 ${g})
82                 list(GET g2 0 name)
83                 list(REMOVE_AT g2 0)
84                 source_group("${name}\\Sources" FILES ${g2})
85         endforeach()
86
87         get_property(FG_GROUPS_CORE_SOURCES_H GLOBAL PROPERTY FG_GROUPS_CORE_SOURCES_H)
88         string(REPLACE "@" ";" groups ${FG_GROUPS_CORE_SOURCES_H} )
89         foreach(g ${groups})
90                 string(REPLACE "#" ";" g2 ${g})
91                 list(GET g2 0 name)
92                 list(REMOVE_AT g2 0)
93                 source_group("${name}\\Headers" FILES ${g2})
94         endforeach()
95
96     add_library(SimGearCore STATIC ${coreSources} ${localExpatSources})
97     install(TARGETS SimGearCore
98             EXPORT SimGearTargets
99             ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
100
101     if(NOT SIMGEAR_HEADLESS)
102                 get_property(FG_GROUPS_SCENE_SOURCES_C GLOBAL PROPERTY FG_GROUPS_SCENE_SOURCES_C)
103                 string(REPLACE "@" ";" groups ${FG_GROUPS_SCENE_SOURCES_C} )
104                 foreach(g ${groups})
105                         string(REPLACE "#" ";" g2 ${g})
106                         list(GET g2 0 name)
107                         list(REMOVE_AT g2 0)
108                         source_group("${name}\\Sources" FILES ${g2})
109                 endforeach()
110
111                 get_property(FG_GROUPS_SCENE_SOURCES_H GLOBAL PROPERTY FG_GROUPS_SCENE_SOURCES_H)
112                 string(REPLACE "@" ";" groups ${FG_GROUPS_SCENE_SOURCES_H} )
113                 foreach(g ${groups})
114                         string(REPLACE "#" ";" g2 ${g})
115                         list(GET g2 0 name)
116                         list(REMOVE_AT g2 0)
117                         source_group("${name}\\Headers" FILES ${g2})
118                 endforeach()
119
120         add_library(SimGearScene STATIC ${sceneSources})
121         install(TARGETS SimGearScene
122                 EXPORT SimGearTargets
123                 ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
124     endif(NOT SIMGEAR_HEADLESS)
125 endif(SIMGEAR_SHARED)
126
127 target_link_libraries(SimGearCore
128     ${ZLIB_LIBRARY}
129     ${RT_LIBRARY}
130     ${DL_LIBRARY}
131     ${EXPAT_LIBRARIES}
132     ${CMAKE_THREAD_LIBS_INIT}
133     ${COCOA_LIBRARY}
134     ${CURL_LIBRARIES})
135
136 if(NOT SIMGEAR_HEADLESS)
137     target_link_libraries(SimGearScene
138         SimGearCore
139         ${ZLIB_LIBRARY}
140         ${OPENSCENEGRAPH_LIBRARIES}
141         ${OPENAL_LIBRARY}
142         ${OPENGL_LIBRARY}
143         ${JPEG_LIBRARY})
144 endif()
145
146 if(ENABLE_RTI)
147     # Ugly first aid to make hla compile agian
148     set_property(SOURCE hla/RTI13InteractionClass.cxx hla/RTI13ObjectClass.cxx
149         hla/RTI13ObjectInstance.cxx hla/RTI13Federate.cxx
150         hla/RTI13FederateFactory.cxx
151         APPEND PROPERTY COMPILE_FLAGS "-I${RTI_INCLUDE_DIR}")
152 endif(ENABLE_RTI)