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