1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
|
diff -ruN simgear-2.8.0/CMakeLists.txt my/CMakeLists.txt
--- simgear-2.8.0/CMakeLists.txt 2012-08-16 16:20:28.000000000 +0200
+++ my/CMakeLists.txt 2012-09-22 00:25:49.814097209 +0200
@@ -66,6 +66,7 @@
option(ENABLE_LIBSVN "Set to ON to build SimGear with libsvnclient support" ON)
option(ENABLE_RTI "Set to ON to build SimGear with RTI support" OFF)
option(ENABLE_TESTS "Set to OFF to disable building SimGear's test applications" ON)
+option(SYSTEM_EXPAT "Set to ON to build SimGear using the system libExpat" OFF)
if (MSVC)
GET_FILENAME_COMPONENT(PARENT_DIR ${PROJECT_SOURCE_DIR} PATH)
@@ -148,6 +149,16 @@
find_package(ZLIB REQUIRED)
find_package(Threads REQUIRED)
+if (SYSTEM_EXPAT)
+ message(STATUS "Requested to use system Expat library, forcing SIMGEAR_SHARED to true")
+ set(SIMGEAR_SHARED ON)
+ find_package(EXPAT REQUIRED)
+ include_directories(${EXPAT_INCLUDE_DIRS})
+else()
+ message(STATUS "Using built-in expat code")
+ add_definitions(-DHAVE_EXPAT_CONFIG_H)
+endif(SYSTEM_EXPAT)
+
check_include_file(sys/time.h HAVE_SYS_TIME_H)
check_include_file(sys/timeb.h HAVE_SYS_TIMEB_H)
check_include_file(unistd.h HAVE_UNISTD_H)
@@ -252,7 +263,6 @@
${ALUT_INCLUDE_DIR} ${OPENAL_INCLUDE_DIR} )
add_definitions(-DHAVE_CONFIG_H)
-add_definitions(-DHAVE_EXPAT_CONFIG_H)
# configure a header file to pass some of the CMake settings
# to the source code
diff -ruN simgear-2.8.0/simgear/CMakeLists.txt my/simgear/CMakeLists.txt
--- simgear-2.8.0/simgear/CMakeLists.txt 2012-08-16 16:20:29.000000000 +0200
+++ my/simgear/CMakeLists.txt 2012-09-22 00:29:52.244101431 +0200
@@ -54,7 +54,9 @@
set_property(TARGET SimGearCore PROPERTY VERSION ${SIMGEAR_VERSION})
set_property(TARGET SimGearCore PROPERTY SOVERSION ${SIMGEAR_SOVERSION})
- target_link_libraries(SimGearCore ${ZLIB_LIBRARY} ${RT_LIBRARY})
+ target_link_libraries(SimGearCore ${ZLIB_LIBRARY} ${RT_LIBRARY}
+ ${EXPAT_LIBRARIES}
+ ${CMAKE_THREAD_LIBS_INIT})
install(TARGETS SimGearCore LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})
if(LIBSVN_FOUND)
diff -ruN simgear-2.8.0/simgear/simgear_config_cmake.h.in my/simgear/simgear_config_cmake.h.in
--- simgear-2.8.0/simgear/simgear_config_cmake.h.in 2012-08-16 16:20:29.000000000 +0200
+++ my/simgear/simgear_config_cmake.h.in 2012-09-22 00:25:49.822097209 +0200
@@ -17,3 +17,5 @@
#cmakedefine HAVE_LIBSVN_CLIENT_1
#cmakedefine GCC_ATOMIC_BUILTINS_FOUND
+
+#cmakedefine SYSTEM_EXPAT
diff -ruN simgear-2.8.0/simgear/xml/CMakeLists.txt my/simgear/xml/CMakeLists.txt
--- simgear-2.8.0/simgear/xml/CMakeLists.txt 2012-08-16 16:20:29.000000000 +0200
+++ my/simgear/xml/CMakeLists.txt 2012-09-22 00:25:49.872097210 +0200
@@ -7,26 +7,31 @@
)
set(SOURCES
- asciitab.h
- hashtable.h
- iasciitab.h
- latin1tab.h
- nametab.h
- utf8tab.h
- xmldef.h
- xmlparse.h
- xmlrole.h
- xmltok.h
- xmltok_impl.h
- hashtable.c
- xmlparse.c
- xmlrole.c
- xmltok.c
easyxml.cxx
- internal.h
- ascii.h
- expat.h
- expat_external.h
)
+if (NOT SYSTEM_EXPAT)
+ list(APPEND SOURCES
+ asciitab.h
+ hashtable.h
+ iasciitab.h
+ latin1tab.h
+ nametab.h
+ utf8tab.h
+ xmldef.h
+ xmlparse.h
+ xmlrole.h
+ xmltok.h
+ xmltok_impl.h
+ hashtable.c
+ xmlparse.c
+ xmlrole.c
+ xmltok.c
+ internal.h
+ ascii.h
+ expat.h
+ expat_external.h
+ )
+endif()
+
simgear_component(xml xml "${SOURCES}" "${HEADERS}")
diff -ruN simgear-2.8.0/simgear/xml/easyxml.cxx my/simgear/xml/easyxml.cxx
--- simgear-2.8.0/simgear/xml/easyxml.cxx 2012-08-16 16:20:29.000000000 +0200
+++ my/simgear/xml/easyxml.cxx 2012-09-22 00:25:49.889097210 +0200
@@ -4,13 +4,22 @@
* This file is in the Public Domain, and comes with NO WARRANTY of any kind.
*/
+#ifdef HAVE_CONFIG_H
+# include <simgear_config.h>
+#endif
+
#include <simgear/compiler.h>
#include <string.h> // strcmp()
#include "easyxml.hxx"
-#include "xmlparse.h"
-
+
+#ifdef SYSTEM_EXPAT
+# include <expat.h>
+#else
+# include "xmlparse.h"
+#endif
+
#include <fstream>
#include <iostream>
|