diff --git a/expat/CMake.README b/expat/CMake.README index fa6823a9..685c23d7 100644 --- a/expat/CMake.README +++ b/expat/CMake.README @@ -1,42 +1,42 @@ -== How to build expat with cmake (experimental) == - -The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual -Studio) and should work on all other platform cmake supports. - -Assuming ~/expat-2.2.7 is the source directory of expat, add a subdirectory -build and change into that directory: -~/expat-2.2.7$ mkdir build && cd build -~/expat-2.2.7/build$ - -From that directory, call cmake first, then call make, make test and -make install in the usual way: -~/expat-2.2.7/build$ cmake .. --- The C compiler identification is GNU --- The CXX compiler identification is GNU -.... --- Configuring done --- Generating done --- Build files have been written to: /home/patrick/expat-2.2.7/build - -If you want to specify the install location for your files, append --DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call. - -~/expat-2.2.7/build$ make && make test && make install -Scanning dependencies of target expat -[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o -[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o -.... --- Installing: /usr/local/lib/pkgconfig/expat.pc --- Installing: /usr/local/bin/xmlwf --- Installing: /usr/local/share/man/man1/xmlwf.1 - -For Windows builds, you must make sure to call cmake from an environment where -your compiler is reachable, that means either you call it from the -Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and -make sure that gcc can be called. On Windows, you also might want to specify a -special Generator for CMake: -for Visual Studio builds do: -cmake .. -G "Visual Studio 10" && vcexpress expat.sln -for mingw builds do: -cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install - && gmake && gmake install +== How to build expat with cmake (experimental) == + +The cmake based buildsystem for expat works on Windows (cygwin, mingw, Visual +Studio) and should work on all other platform cmake supports. + +Assuming ~/expat-2.2.7 is the source directory of expat, add a subdirectory +build and change into that directory: +~/expat-2.2.7$ mkdir build && cd build +~/expat-2.2.7/build$ + +From that directory, call cmake first, then call make, make test and +make install in the usual way: +~/expat-2.2.7/build$ cmake .. +-- The C compiler identification is GNU +-- The CXX compiler identification is GNU +.... +-- Configuring done +-- Generating done +-- Build files have been written to: /home/patrick/expat-2.2.7/build + +If you want to specify the install location for your files, append +-DCMAKE_INSTALL_PREFIX=/your/install/path to the cmake call. + +~/expat-2.2.7/build$ make && make test && make install +Scanning dependencies of target expat +[ 5%] Building C object CMakeFiles/expat.dir/lib/xmlparse.c.o +[ 11%] Building C object CMakeFiles/expat.dir/lib/xmlrole.c.o +.... +-- Installing: /usr/local/lib/pkgconfig/expat.pc +-- Installing: /usr/local/bin/xmlwf +-- Installing: /usr/local/share/man/man1/xmlwf.1 + +For Windows builds, you must make sure to call cmake from an environment where +your compiler is reachable, that means either you call it from the +Visual Studio Command Prompt or when using mingw, you must open a cmd.exe and +make sure that gcc can be called. On Windows, you also might want to specify a +special Generator for CMake: +for Visual Studio builds do: +cmake .. -G "Visual Studio 10" && vcexpress expat.sln +for mingw builds do: +cmake .. -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=D:\expat-install + && gmake && gmake install diff --git a/expat/CMakeLists.txt b/expat/CMakeLists.txt index e2098e0e..5dbfca81 100644 --- a/expat/CMakeLists.txt +++ b/expat/CMakeLists.txt @@ -1,272 +1,272 @@ -# This file is copyrighted under the BSD-license for buildsystem files of KDE -# copyright 2010, Patrick Spendrin - -project(expat) - -cmake_minimum_required(VERSION 2.8.10) -set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") -set(PACKAGE_NAME "expat") -set(PACKAGE_VERSION "2.2.7") -set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") -set(PACKAGE_TARNAME "${PACKAGE_NAME}") - -include(GNUInstallDirs) - -if(WINCE) - set(BUILD_tools_default OFF) -else() - set(BUILD_tools_default ON) -endif() -if(MSVC OR NOT BUILD_tools_default) - set(BUILD_doc_default OFF) -else() - find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man) - if(DOCBOOK_TO_MAN) - set(BUILD_doc_default ON) - else() - set(BUILD_doc_default OFF) - endif() -endif() - -option(BUILD_tools "build the xmlwf tool for expat library" ${BUILD_tools_default}) -option(BUILD_examples "build the examples for expat library" ON) -option(BUILD_tests "build the tests for expat library" ON) -option(BUILD_shared "build a shared expat library" ON) -option(BUILD_doc "build man page for xmlwf" ${BUILD_doc_default}) -option(USE_libbsd "utilize libbsd (for arc4random_buf)" OFF) -option(INSTALL "install expat files in cmake install target" ON) - -if(USE_libbsd) - find_library(LIB_BSD NAMES bsd) - if(NOT LIB_BSD) - message(FATAL_ERROR "USE_libbsd option is enabled, but libbsd was not found") - else() - set(HAVE_LIBBSD TRUE) - endif() -endif() - -# configuration options -set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") -option(XML_DTD "Define to make parameter entity parsing functionality available" ON) -option(XML_NS "Define to make XML Namespaces functionality available" ON) -option(WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF) -if(NOT WIN32) - option(XML_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON) - if(XML_DEV_URANDOM) - set(XML_DEV_URANDOM 1) - else(XML_DEV_URANDOM) - set(XML_DEV_URANDOM 0) - endif(XML_DEV_URANDOM) -endif() -if (NOT WIN32) - set(USE_GETRANDOM "AUTO" CACHE STRING - "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]") - set(USE_SYS_GETRANDOM "AUTO" CACHE STRING - "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]") -endif() -option(XML_UNICODE "Use UTF-16 encoded chars (two bytes) instead of UTF-8" OFF) -option(XML_UNICODE_WCHAR_T "Use wchar_t to represent UTF-16 instead of unsigned short" OFF) -option(XML_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF) - -if(XML_DTD) - set(XML_DTD 1) -else(XML_DTD) - set(XML_DTD 0) -endif(XML_DTD) -if(XML_NS) - set(XML_NS 1) -else(XML_NS) - set(XML_NS 0) -endif(XML_NS) -if(XML_UNICODE) - set(XML_UNICODE 1) -else(XML_UNICODE) - set(XML_UNICODE 0) -endif(XML_UNICODE) -if(XML_UNICODE_WCHAR_T) - set(XML_UNICODE_WCHAR_T 1) -else(XML_UNICODE_WCHAR_T) - set(XML_UNICODE_WCHAR_T 0) -endif(XML_UNICODE_WCHAR_T) -if(XML_ATTR_INFO) - set(XML_ATTR_INFO 1) -else(XML_ATTR_INFO) - set(XML_ATTR_INFO 0) -endif(XML_ATTR_INFO) - -if(XML_UNICODE_WCHAR_T AND NOT XML_UNICODE) - message(SEND_ERROR "Option XML_UNICODE_WCHAR_T=ON may not be used without XML_UNICODE=ON.") - set(XML_UNICODE 1) -endif(XML_UNICODE_WCHAR_T AND NOT XML_UNICODE) - -if(BUILD_tools AND (XML_UNICODE AND NOT XML_UNICODE_WCHAR_T)) - message(SEND_ERROR "The xmlwf tool can not be built with option XML_UNICODE_WCHAR_T=OFF and XML_UNICODE=ON. Either set XML_UNICODE_WCHAR_T=ON or BUILD_tools=OFF.") -endif() - -if(BUILD_tests) - enable_testing() -endif(BUILD_tests) - - -include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake) - -macro(evaluate_detection_results use_ref have_ref thing_lower thing_title) - if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref}) - message(SEND_ERROR - "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.") - elseif(NOT ${use_ref} AND ${have_ref}) - message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.") - set(${have_ref} 0) - endif() -endmacro() - -if(NOT WIN32) - evaluate_detection_results(USE_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom") - evaluate_detection_results(USE_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom") -endif() - -configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h") -add_definitions(-DHAVE_EXPAT_CONFIG_H) - - -set(EXTRA_COMPILE_FLAGS) -if(FLAG_NO_STRICT_ALIASING) - set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing") -endif() -if(FLAG_VISIBILITY) - add_definitions(-DXML_ENABLE_VISIBILITY=1) - set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden") -endif(FLAG_VISIBILITY) -if (WARNINGS_AS_ERRORS) - if(MSVC) - add_definitions(/WX) - else(MSVC) - set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror") - endif(MSVC) -endif(WARNINGS_AS_ERRORS) -set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}") -set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}") - -set(MSVC_USE_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC") -if (MSVC) - if (MSVC_USE_STATIC_CRT) - message("-- Using static CRT ${MSVC_USE_STATIC_CRT}") - foreach(flag_var - CMAKE_CXX_FLAGS_DEBUG - CMAKE_CXX_FLAGS_RELEASE - CMAKE_CXX_FLAGS_MINSIZEREL - CMAKE_CXX_FLAGS_RELWITHDEBINFO - CMAKE_C_FLAGS_DEBUG - CMAKE_C_FLAGS_RELEASE - CMAKE_C_FLAGS_MINSIZEREL - CMAKE_C_FLAGS_RELWITHDEBINFO - ) - string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") - endforeach() - endif() -endif() - -include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib) -if(MSVC) - add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) -endif(MSVC) -if(WIN32) - set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows") -endif(WIN32) - -set(expat_SRCS - lib/xmlparse.c - lib/xmlrole.c - lib/xmltok.c - lib/xmltok_impl.c - lib/xmltok_ns.c -) - -if(BUILD_shared) - set(_SHARED SHARED) - if(MSVC) - set(expat_SRCS ${expat_SRCS} lib/libexpat.def) - endif(MSVC) -else(BUILD_shared) - set(_SHARED STATIC) - if(WIN32) - add_definitions(-DXML_STATIC) - endif(WIN32) -endif(BUILD_shared) - -add_library(expat ${_SHARED} ${expat_SRCS}) -if(USE_libbsd) - target_link_libraries(expat ${LIB_BSD}) -endif() - -set(LIBCURRENT 7) # sync -set(LIBREVISION 9) # with -set(LIBAGE 6) # configure.ac! -math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") - -if(NOT WIN32) - set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION}) - set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE}) - set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME}) -endif(NOT WIN32) - -macro(expat_install) - if(INSTALL) - install(${ARGN}) - endif() -endmacro() - -expat_install(TARGETS expat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - -set(prefix ${CMAKE_INSTALL_PREFIX}) -set(exec_prefix "\${prefix}") -set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") -set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") -configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @ONLY) - -expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) -expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) - -if(BUILD_tools) - set(xmlwf_SRCS - xmlwf/xmlwf.c - xmlwf/xmlfile.c - xmlwf/codepage.c - xmlwf/readfilemap.c - ) - - add_executable(xmlwf ${xmlwf_SRCS}) - set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) - target_link_libraries(xmlwf expat) - expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR}) - if(BUILD_doc) - file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc) - add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1") - expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) - endif() -endif() - -if(BUILD_examples) - add_executable(elements examples/elements.c) - set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) - target_link_libraries(elements expat) - - add_executable(outline examples/outline.c) - set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) - target_link_libraries(outline expat) -endif(BUILD_examples) - -if(BUILD_tests) - ## these are unittests that can be run on any platform - add_executable(runtests tests/runtests.c tests/chardata.c tests/structdata.c tests/minicheck.c tests/memcheck.c) - set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) - target_link_libraries(runtests expat) - add_test(runtests tests/runtests) - - add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/structdata.c tests/minicheck.c tests/memcheck.c) - set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) - target_link_libraries(runtestspp expat) - add_test(runtestspp tests/runtestspp) -endif(BUILD_tests) +# This file is copyrighted under the BSD-license for buildsystem files of KDE +# copyright 2010, Patrick Spendrin + +project(expat) + +cmake_minimum_required(VERSION 2.8.10) +set(PACKAGE_BUGREPORT "expat-bugs@libexpat.org") +set(PACKAGE_NAME "expat") +set(PACKAGE_VERSION "2.2.7") +set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") +set(PACKAGE_TARNAME "${PACKAGE_NAME}") + +include(GNUInstallDirs) + +if(WINCE) + set(BUILD_tools_default OFF) +else() + set(BUILD_tools_default ON) +endif() +if(MSVC OR NOT BUILD_tools_default) + set(BUILD_doc_default OFF) +else() + find_program(DOCBOOK_TO_MAN NAMES docbook2x-man db2x_docbook2man docbook2man docbook-to-man) + if(DOCBOOK_TO_MAN) + set(BUILD_doc_default ON) + else() + set(BUILD_doc_default OFF) + endif() +endif() + +option(BUILD_tools "build the xmlwf tool for expat library" ${BUILD_tools_default}) +option(BUILD_examples "build the examples for expat library" ON) +option(BUILD_tests "build the tests for expat library" ON) +option(BUILD_shared "build a shared expat library" ON) +option(BUILD_doc "build man page for xmlwf" ${BUILD_doc_default}) +option(USE_libbsd "utilize libbsd (for arc4random_buf)" OFF) +option(INSTALL "install expat files in cmake install target" ON) + +if(USE_libbsd) + find_library(LIB_BSD NAMES bsd) + if(NOT LIB_BSD) + message(FATAL_ERROR "USE_libbsd option is enabled, but libbsd was not found") + else() + set(HAVE_LIBBSD TRUE) + endif() +endif() + +# configuration options +set(XML_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point") +option(XML_DTD "Define to make parameter entity parsing functionality available" ON) +option(XML_NS "Define to make XML Namespaces functionality available" ON) +option(WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF) +if(NOT WIN32) + option(XML_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON) + if(XML_DEV_URANDOM) + set(XML_DEV_URANDOM 1) + else(XML_DEV_URANDOM) + set(XML_DEV_URANDOM 0) + endif(XML_DEV_URANDOM) +endif() +if (NOT WIN32) + set(USE_GETRANDOM "AUTO" CACHE STRING + "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]") + set(USE_SYS_GETRANDOM "AUTO" CACHE STRING + "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]") +endif() +option(XML_UNICODE "Use UTF-16 encoded chars (two bytes) instead of UTF-8" OFF) +option(XML_UNICODE_WCHAR_T "Use wchar_t to represent UTF-16 instead of unsigned short" OFF) +option(XML_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF) + +if(XML_DTD) + set(XML_DTD 1) +else(XML_DTD) + set(XML_DTD 0) +endif(XML_DTD) +if(XML_NS) + set(XML_NS 1) +else(XML_NS) + set(XML_NS 0) +endif(XML_NS) +if(XML_UNICODE) + set(XML_UNICODE 1) +else(XML_UNICODE) + set(XML_UNICODE 0) +endif(XML_UNICODE) +if(XML_UNICODE_WCHAR_T) + set(XML_UNICODE_WCHAR_T 1) +else(XML_UNICODE_WCHAR_T) + set(XML_UNICODE_WCHAR_T 0) +endif(XML_UNICODE_WCHAR_T) +if(XML_ATTR_INFO) + set(XML_ATTR_INFO 1) +else(XML_ATTR_INFO) + set(XML_ATTR_INFO 0) +endif(XML_ATTR_INFO) + +if(XML_UNICODE_WCHAR_T AND NOT XML_UNICODE) + message(SEND_ERROR "Option XML_UNICODE_WCHAR_T=ON may not be used without XML_UNICODE=ON.") + set(XML_UNICODE 1) +endif(XML_UNICODE_WCHAR_T AND NOT XML_UNICODE) + +if(BUILD_tools AND (XML_UNICODE AND NOT XML_UNICODE_WCHAR_T)) + message(SEND_ERROR "The xmlwf tool can not be built with option XML_UNICODE_WCHAR_T=OFF and XML_UNICODE=ON. Either set XML_UNICODE_WCHAR_T=ON or BUILD_tools=OFF.") +endif() + +if(BUILD_tests) + enable_testing() +endif(BUILD_tests) + + +include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake) + +macro(evaluate_detection_results use_ref have_ref thing_lower thing_title) + if(${use_ref} AND NOT (${use_ref} STREQUAL "AUTO") AND NOT ${have_ref}) + message(SEND_ERROR + "Use of ${thing_lower} was enforced by ${use_ref}=ON but it could not be found.") + elseif(NOT ${use_ref} AND ${have_ref}) + message("${thing_title} was found but it will not be used due to ${use_ref}=OFF.") + set(${have_ref} 0) + endif() +endmacro() + +if(NOT WIN32) + evaluate_detection_results(USE_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom") + evaluate_detection_results(USE_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom") +endif() + +configure_file(expat_config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_config.h") +add_definitions(-DHAVE_EXPAT_CONFIG_H) + + +set(EXTRA_COMPILE_FLAGS) +if(FLAG_NO_STRICT_ALIASING) + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fno-strict-aliasing") +endif() +if(FLAG_VISIBILITY) + add_definitions(-DXML_ENABLE_VISIBILITY=1) + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -fvisibility=hidden") +endif(FLAG_VISIBILITY) +if (WARNINGS_AS_ERRORS) + if(MSVC) + add_definitions(/WX) + else(MSVC) + set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror") + endif(MSVC) +endif(WARNINGS_AS_ERRORS) +set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}") +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}") + +set(MSVC_USE_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC") +if (MSVC) + if (MSVC_USE_STATIC_CRT) + message("-- Using static CRT ${MSVC_USE_STATIC_CRT}") + foreach(flag_var + CMAKE_CXX_FLAGS_DEBUG + CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL + CMAKE_CXX_FLAGS_RELWITHDEBINFO + CMAKE_C_FLAGS_DEBUG + CMAKE_C_FLAGS_RELEASE + CMAKE_C_FLAGS_MINSIZEREL + CMAKE_C_FLAGS_RELWITHDEBINFO + ) + string(REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endforeach() + endif() +endif() + +include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/lib) +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996) +endif(MSVC) +if(WIN32) + set(CMAKE_DEBUG_POSTFIX "d" CACHE STRING "Add a suffix, usually d on Windows") +endif(WIN32) + +set(expat_SRCS + lib/xmlparse.c + lib/xmlrole.c + lib/xmltok.c + lib/xmltok_impl.c + lib/xmltok_ns.c +) + +if(BUILD_shared) + set(_SHARED SHARED) + if(MSVC) + set(expat_SRCS ${expat_SRCS} lib/libexpat.def) + endif(MSVC) +else(BUILD_shared) + set(_SHARED STATIC) + if(WIN32) + add_definitions(-DXML_STATIC) + endif(WIN32) +endif(BUILD_shared) + +add_library(expat ${_SHARED} ${expat_SRCS}) +if(USE_libbsd) + target_link_libraries(expat ${LIB_BSD}) +endif() + +set(LIBCURRENT 7) # sync +set(LIBREVISION 9) # with +set(LIBAGE 6) # configure.ac! +math(EXPR LIBCURRENT_MINUS_AGE "${LIBCURRENT} - ${LIBAGE}") + +if(NOT WIN32) + set_property(TARGET expat PROPERTY VERSION ${LIBCURRENT_MINUS_AGE}.${LIBAGE}.${LIBREVISION}) + set_property(TARGET expat PROPERTY SOVERSION ${LIBCURRENT_MINUS_AGE}) + set_property(TARGET expat PROPERTY NO_SONAME ${NO_SONAME}) +endif(NOT WIN32) + +macro(expat_install) + if(INSTALL) + install(${ARGN}) + endif() +endmacro() + +expat_install(TARGETS expat RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + +set(prefix ${CMAKE_INSTALL_PREFIX}) +set(exec_prefix "\${prefix}") +set(libdir "\${exec_prefix}/${CMAKE_INSTALL_LIBDIR}") +set(includedir "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") +configure_file(expat.pc.in ${CMAKE_CURRENT_BINARY_DIR}/expat.pc @ONLY) + +expat_install(FILES lib/expat.h lib/expat_external.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) +expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig) + +if(BUILD_tools) + set(xmlwf_SRCS + xmlwf/xmlwf.c + xmlwf/xmlfile.c + xmlwf/codepage.c + xmlwf/readfilemap.c + ) + + add_executable(xmlwf ${xmlwf_SRCS}) + set_property(TARGET xmlwf PROPERTY RUNTIME_OUTPUT_DIRECTORY xmlwf) + target_link_libraries(xmlwf expat) + expat_install(TARGETS xmlwf DESTINATION ${CMAKE_INSTALL_BINDIR}) + if(BUILD_doc) + file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc) + add_custom_command(TARGET expat PRE_BUILD COMMAND "${DOCBOOK_TO_MAN}" "${PROJECT_SOURCE_DIR}/doc/xmlwf.xml" && mv "XMLWF.1" "${PROJECT_BINARY_DIR}/doc/xmlwf.1") + expat_install(FILES "${PROJECT_BINARY_DIR}/doc/xmlwf.1" DESTINATION ${CMAKE_INSTALL_MANDIR}/man1) + endif() +endif() + +if(BUILD_examples) + add_executable(elements examples/elements.c) + set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) + target_link_libraries(elements expat) + + add_executable(outline examples/outline.c) + set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples) + target_link_libraries(outline expat) +endif(BUILD_examples) + +if(BUILD_tests) + ## these are unittests that can be run on any platform + add_executable(runtests tests/runtests.c tests/chardata.c tests/structdata.c tests/minicheck.c tests/memcheck.c) + set_property(TARGET runtests PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) + target_link_libraries(runtests expat) + add_test(runtests tests/runtests) + + add_executable(runtestspp tests/runtestspp.cpp tests/chardata.c tests/structdata.c tests/minicheck.c tests/memcheck.c) + set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests) + target_link_libraries(runtestspp expat) + add_test(runtestspp tests/runtestspp) +endif(BUILD_tests) diff --git a/expat/Changes b/expat/Changes index ca1f4026..c7cd0de2 100644 --- a/expat/Changes +++ b/expat/Changes @@ -22,6 +22,7 @@ Release x.x.x xxx xxx xx xxxx -DUSE_GETRANDOM=(ON|OFF|AUTO) -DUSE_SYS_GETRANDOM=(ON|OFF|AUTO) #265 CMake: Fix linking with MinGW + CMake: Migrate files from Windows to Unix line endings #299 #302 Windows: Replace LoadLibrary hack to access unofficial API function SystemFunction036 (RtlGenRandom) by using official API function rand_s (needs WinXP+) diff --git a/expat/ConfigureChecks.cmake b/expat/ConfigureChecks.cmake index 0803c7b2..4936f67f 100644 --- a/expat/ConfigureChecks.cmake +++ b/expat/ConfigureChecks.cmake @@ -1,66 +1,66 @@ -include(CheckCCompilerFlag) -include(CheckCSourceCompiles) -include(CheckIncludeFile) -include(CheckIncludeFiles) -include(CheckSymbolExists) -include(TestBigEndian) - -check_include_file("dlfcn.h" HAVE_DLFCN_H) -check_include_file("fcntl.h" HAVE_FCNTL_H) -check_include_file("inttypes.h" HAVE_INTTYPES_H) -check_include_file("memory.h" HAVE_MEMORY_H) -check_include_file("stdint.h" HAVE_STDINT_H) -check_include_file("stdlib.h" HAVE_STDLIB_H) -check_include_file("strings.h" HAVE_STRINGS_H) -check_include_file("string.h" HAVE_STRING_H) -check_include_file("sys/stat.h" HAVE_SYS_STAT_H) -check_include_file("sys/types.h" HAVE_SYS_TYPES_H) -check_include_file("unistd.h" HAVE_UNISTD_H) - -check_symbol_exists("getpagesize" "unistd.h" HAVE_GETPAGESIZE) -check_symbol_exists("mmap" "sys/mman.h" HAVE_MMAP) -check_symbol_exists("getrandom" "sys/random.h" HAVE_GETRANDOM) - -if(USE_libbsd) - set(CMAKE_REQUIRED_LIBRARIES "${LIB_BSD}") - set(_bsd "bsd/") -else() - set(_bsd "") -endif() -check_symbol_exists("arc4random_buf" "${_bsd}stdlib.h" HAVE_ARC4RANDOM_BUF) -if(NOT HAVE_ARC4RANDOM_BUF) - check_symbol_exists("arc4random" "${_bsd}stdlib.h" HAVE_ARC4RANDOM) -endif() -set(CMAKE_REQUIRED_LIBRARIES) - -#/* Define to 1 if you have the ANSI C header files. */ -check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) - -test_big_endian(WORDS_BIGENDIAN) -#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -if(WORDS_BIGENDIAN) - set(BYTEORDER 4321) -else(WORDS_BIGENDIAN) - set(BYTEORDER 1234) -endif(WORDS_BIGENDIAN) - -if(HAVE_SYS_TYPES_H) - check_symbol_exists("off_t" "sys/types.h" OFF_T) - check_symbol_exists("size_t" "sys/types.h" SIZE_T) -else(HAVE_SYS_TYPES_H) - set(OFF_T "long") - set(SIZE_T "unsigned") -endif(HAVE_SYS_TYPES_H) - -check_c_source_compiles(" - #include /* for NULL */ - #include /* for syscall */ - #include /* for SYS_getrandom */ - int main() { - syscall(SYS_getrandom, NULL, 0, 0); - return 0; - }" - HAVE_SYSCALL_GETRANDOM) - -check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING) -check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY) +include(CheckCCompilerFlag) +include(CheckCSourceCompiles) +include(CheckIncludeFile) +include(CheckIncludeFiles) +include(CheckSymbolExists) +include(TestBigEndian) + +check_include_file("dlfcn.h" HAVE_DLFCN_H) +check_include_file("fcntl.h" HAVE_FCNTL_H) +check_include_file("inttypes.h" HAVE_INTTYPES_H) +check_include_file("memory.h" HAVE_MEMORY_H) +check_include_file("stdint.h" HAVE_STDINT_H) +check_include_file("stdlib.h" HAVE_STDLIB_H) +check_include_file("strings.h" HAVE_STRINGS_H) +check_include_file("string.h" HAVE_STRING_H) +check_include_file("sys/stat.h" HAVE_SYS_STAT_H) +check_include_file("sys/types.h" HAVE_SYS_TYPES_H) +check_include_file("unistd.h" HAVE_UNISTD_H) + +check_symbol_exists("getpagesize" "unistd.h" HAVE_GETPAGESIZE) +check_symbol_exists("mmap" "sys/mman.h" HAVE_MMAP) +check_symbol_exists("getrandom" "sys/random.h" HAVE_GETRANDOM) + +if(USE_libbsd) + set(CMAKE_REQUIRED_LIBRARIES "${LIB_BSD}") + set(_bsd "bsd/") +else() + set(_bsd "") +endif() +check_symbol_exists("arc4random_buf" "${_bsd}stdlib.h" HAVE_ARC4RANDOM_BUF) +if(NOT HAVE_ARC4RANDOM_BUF) + check_symbol_exists("arc4random" "${_bsd}stdlib.h" HAVE_ARC4RANDOM) +endif() +set(CMAKE_REQUIRED_LIBRARIES) + +#/* Define to 1 if you have the ANSI C header files. */ +check_include_files("stdlib.h;stdarg.h;string.h;float.h" STDC_HEADERS) + +test_big_endian(WORDS_BIGENDIAN) +#/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +if(WORDS_BIGENDIAN) + set(BYTEORDER 4321) +else(WORDS_BIGENDIAN) + set(BYTEORDER 1234) +endif(WORDS_BIGENDIAN) + +if(HAVE_SYS_TYPES_H) + check_symbol_exists("off_t" "sys/types.h" OFF_T) + check_symbol_exists("size_t" "sys/types.h" SIZE_T) +else(HAVE_SYS_TYPES_H) + set(OFF_T "long") + set(SIZE_T "unsigned") +endif(HAVE_SYS_TYPES_H) + +check_c_source_compiles(" + #include /* for NULL */ + #include /* for syscall */ + #include /* for SYS_getrandom */ + int main() { + syscall(SYS_getrandom, NULL, 0, 0); + return 0; + }" + HAVE_SYSCALL_GETRANDOM) + +check_c_compiler_flag("-fno-strict-aliasing" FLAG_NO_STRICT_ALIASING) +check_c_compiler_flag("-fvisibility=hidden" FLAG_VISIBILITY) diff --git a/expat/expat_config.h.cmake b/expat/expat_config.h.cmake index 39e3f21d..f92d4c94 100644 --- a/expat/expat_config.h.cmake +++ b/expat/expat_config.h.cmake @@ -1,115 +1,115 @@ -/* expat_config.h.cmake. Based upon generated expat_config.h.in. */ - -/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ -#cmakedefine BYTEORDER @BYTEORDER@ - -/* Define to 1 if you have the `arc4random' function. */ -#cmakedefine HAVE_ARC4RANDOM - -/* Define to 1 if you have the `arc4random_buf' function. */ -#cmakedefine HAVE_ARC4RANDOM_BUF - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_FCNTL_H - -/* Define to 1 if you have the `getpagesize' function. */ -#cmakedefine HAVE_GETPAGESIZE - -/* Define to 1 if you have the `getrandom' function. */ -#cmakedefine HAVE_GETRANDOM - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_INTTYPES_H - -/* Define to 1 if you have the `bsd' library (-lbsd). */ -#cmakedefine HAVE_LIBBSD - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_MEMORY_H - -/* Define to 1 if you have a working `mmap' system call. */ -#cmakedefine HAVE_MMAP - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STDLIB_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_STRING_H - -/* Define to 1 if you have `syscall' and `SYS_getrandom'. */ -#cmakedefine HAVE_SYSCALL_GETRANDOM - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#cmakedefine HAVE_UNISTD_H - -/* Define to the address where bug reports for this package should be sent. */ -#cmakedefine PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#cmakedefine PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#cmakedefine PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#cmakedefine PACKAGE_TARNAME - -/* Define to the version of this package. */ -#cmakedefine PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#cmakedefine STDC_HEADERS - -/* whether byteorder is bigendian */ -#cmakedefine WORDS_BIGENDIAN - -/* Define to specify how much context to retain around the current parse - point. */ -#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@ - -/* Define to make parameter entity parsing functionality available. */ -#cmakedefine XML_DTD - -/* Define to make XML Namespaces functionality available. */ -#cmakedefine XML_NS - -#if ! defined(_WIN32) -/* Define to extract entropy from /dev/urandom. */ - #cmakedefine XML_DEV_URANDOM -#endif - -/* Define to use UTF-16 chars (two bytes). */ -#cmakedefine XML_UNICODE - -/* Define to use wchar_t as UTF-16 char type instead of unsigned short. */ -#cmakedefine XML_UNICODE_WCHAR_T - -/* Define to allow retrieving the byte offsets for attribute names and values. - */ -#cmakedefine XML_ATTR_INFO - -/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ -#ifdef _MSC_VER -# define __func__ __FUNCTION__ -#endif - -/* Define to `long' if does not define. */ -#cmakedefine off_t @OFF_T@ - -/* Define to `unsigned' if does not define. */ -#cmakedefine size_t @SIZE_T@ +/* expat_config.h.cmake. Based upon generated expat_config.h.in. */ + +/* 1234 = LIL_ENDIAN, 4321 = BIGENDIAN */ +#cmakedefine BYTEORDER @BYTEORDER@ + +/* Define to 1 if you have the `arc4random' function. */ +#cmakedefine HAVE_ARC4RANDOM + +/* Define to 1 if you have the `arc4random_buf' function. */ +#cmakedefine HAVE_ARC4RANDOM_BUF + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_FCNTL_H + +/* Define to 1 if you have the `getpagesize' function. */ +#cmakedefine HAVE_GETPAGESIZE + +/* Define to 1 if you have the `getrandom' function. */ +#cmakedefine HAVE_GETRANDOM + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Define to 1 if you have the `bsd' library (-lbsd). */ +#cmakedefine HAVE_LIBBSD + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have a working `mmap' system call. */ +#cmakedefine HAVE_MMAP + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have `syscall' and `SYS_getrandom'. */ +#cmakedefine HAVE_SYSCALL_GETRANDOM + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#cmakedefine PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS + +/* whether byteorder is bigendian */ +#cmakedefine WORDS_BIGENDIAN + +/* Define to specify how much context to retain around the current parse + point. */ +#cmakedefine XML_CONTEXT_BYTES @XML_CONTEXT_BYTES@ + +/* Define to make parameter entity parsing functionality available. */ +#cmakedefine XML_DTD + +/* Define to make XML Namespaces functionality available. */ +#cmakedefine XML_NS + +#if ! defined(_WIN32) +/* Define to extract entropy from /dev/urandom. */ + #cmakedefine XML_DEV_URANDOM +#endif + +/* Define to use UTF-16 chars (two bytes). */ +#cmakedefine XML_UNICODE + +/* Define to use wchar_t as UTF-16 char type instead of unsigned short. */ +#cmakedefine XML_UNICODE_WCHAR_T + +/* Define to allow retrieving the byte offsets for attribute names and values. + */ +#cmakedefine XML_ATTR_INFO + +/* Define to __FUNCTION__ or "" if `__func__' does not conform to ANSI C. */ +#ifdef _MSC_VER +# define __func__ __FUNCTION__ +#endif + +/* Define to `long' if does not define. */ +#cmakedefine off_t @OFF_T@ + +/* Define to `unsigned' if does not define. */ +#cmakedefine size_t @SIZE_T@