]> git.mxchange.org Git - simgear.git/blob - simgear/CMakeLists.txt
Initial work on package management.
[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     )
22
23     add_subdirectory(${mylibfolder})
24
25 endforeach( mylibfolder )
26
27 if (ENABLE_PACKAGE)
28     add_subdirectory(package)
29 endif(ENABLE_PACKAGE)
30
31 if(NOT SIMGEAR_HEADLESS)
32     add_subdirectory(canvas)
33     add_subdirectory(environment)
34     add_subdirectory(screen)
35     add_subdirectory(scene)
36     add_subdirectory(sound)
37 endif(NOT SIMGEAR_HEADLESS)
38
39
40 if(ENABLE_RTI)
41     add_subdirectory(hla)
42 endif(ENABLE_RTI)
43
44
45 set(HEADERS compiler.h constants.h sg_inlines.h ${PROJECT_BINARY_DIR}/simgear/version.h)
46 install (FILES ${HEADERS}  DESTINATION include/simgear/)
47
48 get_property(coreSources GLOBAL PROPERTY CORE_SOURCES)
49 get_property(sceneSources GLOBAL PROPERTY SCENE_SOURCES)
50 get_property(publicHeaders GLOBAL PROPERTY PUBLIC_HEADERS)
51
52 if(LIBSVN_FOUND)
53         add_definitions(${APR_CFLAGS})
54         include_directories(${LIBSVN_INCLUDE_DIR})
55 endif()
56
57 if(SIMGEAR_SHARED)
58     message(STATUS "Library building mode: SHARED LIBRARIES")
59     add_library(SimGearCore SHARED ${coreSources})
60
61   # set_property(TARGET SimGearCore PROPERTY FRAMEWORK 1)
62   #  message(STATUS "public header: ${publicHeaders}")
63   #  set_property(TARGET SimGearCore PROPERTY PUBLIC_HEADER "${publicHeaders}")
64     set_property(TARGET SimGearCore PROPERTY LINKER_LANGUAGE CXX)
65
66     set_property(TARGET SimGearCore PROPERTY VERSION   ${SIMGEAR_VERSION})
67     set_property(TARGET SimGearCore PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
68
69     target_link_libraries(SimGearCore ${ZLIB_LIBRARY} ${RT_LIBRARY} 
70         ${LibArchive_LIBRARIES}
71         ${EXPAT_LIBRARIES}
72         ${CMAKE_THREAD_LIBS_INIT})
73
74     if(LIBSVN_FOUND)
75         target_link_libraries(SimGearCore ${LIBSVN_LIBRARIES})
76     endif(LIBSVN_FOUND)
77
78     if(NOT SIMGEAR_HEADLESS)
79         add_library(SimGearScene SHARED ${sceneSources})
80       # set_property(TARGET SimGearScene PROPERTY FRAMEWORK 1)
81       # set_property(TARGET SimGearScene PROPERTY PUBLIC_HEADER "${publicHeaders}")
82         set_property(TARGET SimGearScene PROPERTY LINKER_LANGUAGE CXX)
83         set_property(TARGET SimGearScene PROPERTY VERSION   ${SIMGEAR_VERSION})
84         set_property(TARGET SimGearScene PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
85
86         target_link_libraries(SimGearScene
87             SimGearCore
88             ${ZLIB_LIBRARY}
89             ${OPENSCENEGRAPH_LIBRARIES}
90             ${OPENAL_LIBRARY}
91             ${OPENGL_LIBRARY}
92             ${JPEG_LIBRARY})
93     
94         install(TARGETS SimGearScene LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
95     endif()
96     
97     install(TARGETS SimGearCore LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
98 else()
99     message(STATUS "Library building mode: STATIC LIBRARIES")
100
101         get_property(FG_GROUPS_CORE_SOURCES_C GLOBAL PROPERTY FG_GROUPS_CORE_SOURCES_C)
102         string(REPLACE "@" ";" groups ${FG_GROUPS_CORE_SOURCES_C} )
103         foreach(g ${groups})
104                 string(REPLACE "#" ";" g2 ${g})
105                 list(GET g2 0 name)
106                 list(REMOVE_AT g2 0)
107                 source_group("${name}\\Sources" FILES ${g2})
108         endforeach()
109
110         get_property(FG_GROUPS_CORE_SOURCES_H GLOBAL PROPERTY FG_GROUPS_CORE_SOURCES_H)
111         string(REPLACE "@" ";" groups ${FG_GROUPS_CORE_SOURCES_H} )
112         foreach(g ${groups})
113                 string(REPLACE "#" ";" g2 ${g})
114                 list(GET g2 0 name)
115                 list(REMOVE_AT g2 0)
116                 source_group("${name}\\Headers" FILES ${g2})
117         endforeach()
118
119     add_library(SimGearCore STATIC ${coreSources})
120     install(TARGETS SimGearCore ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
121     
122     if(NOT SIMGEAR_HEADLESS)
123                 get_property(FG_GROUPS_SCENE_SOURCES_C GLOBAL PROPERTY FG_GROUPS_SCENE_SOURCES_C)
124                 string(REPLACE "@" ";" groups ${FG_GROUPS_SCENE_SOURCES_C} )
125                 foreach(g ${groups})
126                         string(REPLACE "#" ";" g2 ${g})
127                         list(GET g2 0 name)
128                         list(REMOVE_AT g2 0)
129                         source_group("${name}\\Sources" FILES ${g2})
130                 endforeach()
131
132                 get_property(FG_GROUPS_SCENE_SOURCES_H GLOBAL PROPERTY FG_GROUPS_SCENE_SOURCES_H)
133                 string(REPLACE "@" ";" groups ${FG_GROUPS_SCENE_SOURCES_H} )
134                 foreach(g ${groups})
135                         string(REPLACE "#" ";" g2 ${g})
136                         list(GET g2 0 name)
137                         list(REMOVE_AT g2 0)
138                         source_group("${name}\\Headers" FILES ${g2})
139                 endforeach()
140
141         add_library(SimGearScene STATIC ${sceneSources})
142         install(TARGETS SimGearScene ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
143     endif(NOT SIMGEAR_HEADLESS)
144 endif(SIMGEAR_SHARED)
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)