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 +#endif + #include #include // strcmp() #include "easyxml.hxx" -#include "xmlparse.h" - + +#ifdef SYSTEM_EXPAT +# include +#else +# include "xmlparse.h" +#endif + #include #include