mirror of
https://github.com/libexpat/libexpat.git
synced 2025-04-13 00:02:54 +00:00
Merge pull request #329 from libexpat/cmake-option-namespace
CMake option namespace prefix EXPAT_
This commit is contained in:
commit
5dfac7036d
9 changed files with 211 additions and 125 deletions
|
@ -24,7 +24,7 @@ matrix:
|
|||
- os: linux
|
||||
env: MODE=clang-format
|
||||
- os: linux
|
||||
env: MODE=cmake-oos CMAKE_ARGS="-DXML_ATTR_INFO=ON -DBUILD_fuzzers=ON -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
|
||||
env: MODE=cmake-oos CMAKE_ARGS="-DEXPAT_ATTR_INFO=ON -DEXPAT_BUILD_FUZZERS=ON -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
|
||||
- os: linux
|
||||
env: MODE=qa-sh QA_COMPILER=clang CC=clang CXX=clang++ LD=clang++ QA_SANITIZER=address CONFIGURE_ARGS=--enable-xml-attr-info
|
||||
- os: linux
|
||||
|
|
|
@ -164,7 +164,7 @@ environment:
|
|||
before_build:
|
||||
- echo Running cmake...
|
||||
- cd c:\projects\libexpat
|
||||
- cmake -DWARNINGS_AS_ERRORS=ON -G"%GENERATOR%" expat
|
||||
- cmake -DEXPAT_WARNINGS_AS_ERRORS=ON -G"%GENERATOR%" expat
|
||||
|
||||
build:
|
||||
parallel: true # enable MSBuild parallel builds
|
||||
|
|
|
@ -23,103 +23,94 @@ include(GNUInstallDirs)
|
|||
# Configuration defaults
|
||||
#
|
||||
if(WINCE)
|
||||
set(BUILD_tools_default OFF)
|
||||
set(_EXPAT_BUILD_TOOLS_DEFAULT OFF)
|
||||
else()
|
||||
set(BUILD_tools_default ON)
|
||||
set(_EXPAT_BUILD_TOOLS_DEFAULT ON)
|
||||
endif()
|
||||
if(MSVC OR NOT BUILD_tools_default)
|
||||
set(BUILD_doc_default OFF)
|
||||
if(MSVC OR NOT _EXPAT_BUILD_TOOLS_DEFAULT)
|
||||
set(_EXPAT_BUILD_DOCS_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)
|
||||
set(_EXPAT_BUILD_DOCS_DEFAULT ON)
|
||||
else()
|
||||
set(BUILD_doc_default OFF)
|
||||
set(_EXPAT_BUILD_DOCS_DEFAULT OFF)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
#
|
||||
# Configuration
|
||||
#
|
||||
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(BUILD_fuzzers "build fuzzers for the expat library" OFF)
|
||||
option(USE_libbsd "utilize libbsd (for arc4random_buf)" OFF)
|
||||
option(INSTALL "install expat files in cmake install target" ON)
|
||||
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)
|
||||
set(USE_GETRANDOM "AUTO" CACHE STRING
|
||||
option(EXPAT_BUILD_TOOLS "build the xmlwf tool for expat library" ${_EXPAT_BUILD_TOOLS_DEFAULT})
|
||||
option(EXPAT_BUILD_EXAMPLES "build the examples for expat library" ON)
|
||||
option(EXPAT_BUILD_TESTS "build the tests for expat library" ON)
|
||||
option(EXPAT_SHARED_LIBS "build a shared expat library" ON)
|
||||
option(EXPAT_BUILD_DOCS "build man page for xmlwf" ${_EXPAT_BUILD_DOCS_DEFAULT})
|
||||
option(EXPAT_BUILD_FUZZERS "build fuzzers for the expat library" OFF)
|
||||
option(EXPAT_WITH_LIBBSD "utilize libbsd (for arc4random_buf)" OFF)
|
||||
option(EXPAT_ENABLE_INSTALL "install expat files in cmake install target" ON)
|
||||
set(EXPAT_CONTEXT_BYTES 1024 CACHE STRING "Define to specify how much context to retain around the current parse point")
|
||||
mark_as_advanced(EXPAT_CONTEXT_BYTES)
|
||||
option(EXPAT_DTD "Define to make parameter entity parsing functionality available" ON)
|
||||
mark_as_advanced(EXPAT_DTD)
|
||||
option(EXPAT_NS "Define to make XML Namespaces functionality available" ON)
|
||||
mark_as_advanced(EXPAT_NS)
|
||||
option(EXPAT_WARNINGS_AS_ERRORS "Treat all compiler warnings as errors" OFF)
|
||||
if(NOT WIN32 OR _EXPAT_HELP)
|
||||
option(EXPAT_DEV_URANDOM "Define to include code reading entropy from `/dev/urandom'." ON)
|
||||
set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING
|
||||
"Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
|
||||
set(USE_SYS_GETRANDOM "AUTO" CACHE STRING
|
||||
set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING
|
||||
"Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
|
||||
mark_as_advanced(EXPAT_DEV_URANDOM)
|
||||
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)
|
||||
option(XML_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
|
||||
option(XML_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF)
|
||||
if(MSVC)
|
||||
set(MSVC_USE_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
|
||||
option(EXPAT_UNICODE "Use UTF-16 encoded chars (two bytes) instead of UTF-8" OFF)
|
||||
option(EXPAT_UNICODE_WCHAR_T "Use wchar_t to represent UTF-16 instead of unsigned short" OFF)
|
||||
option(EXPAT_ATTR_INFO "Define to allow retrieving the byte offsets for attribute names and values" OFF)
|
||||
mark_as_advanced(EXPAT_ATTR_INFO)
|
||||
option(EXPAT_LARGE_SIZE "Make XML_GetCurrent* functions return <(unsigned) long long> rather than <(unsigned) long>" OFF)
|
||||
mark_as_advanced(EXPAT_LARGE_SIZE)
|
||||
option(EXPAT_MIN_SIZE "Get a smaller (but slower) parser (in particular avoid multiple copies of the tokenizer)" OFF)
|
||||
mark_as_advanced(EXPAT_MIN_SIZE)
|
||||
if(MSVC OR _EXPAT_HELP)
|
||||
set(EXPAT_MSVC_STATIC_CRT OFF CACHE BOOL "Use /MT flag (static CRT) when compiling in MSVC")
|
||||
endif()
|
||||
|
||||
#
|
||||
# Environment checks
|
||||
#
|
||||
if(USE_libbsd)
|
||||
if(EXPAT_WITH_LIBBSD)
|
||||
find_library(LIB_BSD NAMES bsd)
|
||||
if(NOT LIB_BSD)
|
||||
message(SEND_ERROR "USE_libbsd option is enabled, but libbsd was not found")
|
||||
message(SEND_ERROR "EXPAT_WITH_LIBBSD option is enabled, but libbsd was not found")
|
||||
else()
|
||||
set(HAVE_LIBBSD TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
if(XML_DEV_URANDOM)
|
||||
set(XML_DEV_URANDOM 1)
|
||||
else(XML_DEV_URANDOM)
|
||||
set(XML_DEV_URANDOM 0)
|
||||
endif(XML_DEV_URANDOM)
|
||||
endif()
|
||||
|
||||
macro(expat_bool_to_int var_ref)
|
||||
if(${var_ref})
|
||||
set(${var_ref} 1)
|
||||
macro(_expat_copy_bool_int source_ref dest_ref)
|
||||
if(${source_ref})
|
||||
set(${dest_ref} 1)
|
||||
else()
|
||||
set(${var_ref} 0)
|
||||
set(${dest_ref} 0)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
expat_bool_to_int(XML_ATTR_INFO)
|
||||
expat_bool_to_int(XML_DTD)
|
||||
expat_bool_to_int(XML_LARGE_SIZE)
|
||||
expat_bool_to_int(XML_MIN_SIZE)
|
||||
expat_bool_to_int(XML_NS)
|
||||
expat_bool_to_int(XML_UNICODE)
|
||||
expat_bool_to_int(XML_UNICODE_WCHAR_T)
|
||||
|
||||
if(XML_LARGE_SIZE)
|
||||
if(EXPAT_LARGE_SIZE)
|
||||
add_definitions(-DXML_LARGE_SIZE)
|
||||
endif()
|
||||
|
||||
if(XML_MIN_SIZE)
|
||||
if(EXPAT_MIN_SIZE)
|
||||
add_definitions(-DXML_MIN_SIZE)
|
||||
endif()
|
||||
|
||||
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(EXPAT_UNICODE_WCHAR_T AND NOT EXPAT_UNICODE)
|
||||
message(SEND_ERROR "Option EXPAT_UNICODE_WCHAR_T=ON may not be used without EXPAT_UNICODE=ON.")
|
||||
set(EXPAT_UNICODE ON)
|
||||
endif(EXPAT_UNICODE_WCHAR_T AND NOT EXPAT_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.")
|
||||
if(EXPAT_BUILD_TOOLS AND (EXPAT_UNICODE AND NOT EXPAT_UNICODE_WCHAR_T))
|
||||
message(SEND_ERROR "The xmlwf tool can not be built with option EXPAT_UNICODE_WCHAR_T=OFF and EXPAT_UNICODE=ON. Either set EXPAT_UNICODE_WCHAR_T=ON or EXPAT_BUILD_TOOLS=OFF.")
|
||||
endif()
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)
|
||||
|
@ -135,12 +126,24 @@ macro(evaluate_detection_results use_ref have_ref thing_lower thing_title)
|
|||
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")
|
||||
evaluate_detection_results(EXPAT_WITH_GETRANDOM HAVE_GETRANDOM "function getrandom" "Function getrandom")
|
||||
evaluate_detection_results(EXPAT_WITH_SYS_GETRANDOM HAVE_SYSCALL_GETRANDOM "syscall SYS_getrandom" "Syscall SYS_getrandom")
|
||||
endif()
|
||||
|
||||
_expat_copy_bool_int(EXPAT_ATTR_INFO XML_ATTR_INFO)
|
||||
_expat_copy_bool_int(EXPAT_DTD XML_DTD)
|
||||
_expat_copy_bool_int(EXPAT_LARGE_SIZE XML_LARGE_SIZE)
|
||||
_expat_copy_bool_int(EXPAT_MIN_SIZE XML_MIN_SIZE)
|
||||
_expat_copy_bool_int(EXPAT_NS XML_NS)
|
||||
_expat_copy_bool_int(EXPAT_UNICODE XML_UNICODE)
|
||||
_expat_copy_bool_int(EXPAT_UNICODE_WCHAR_T XML_UNICODE_WCHAR_T)
|
||||
if(NOT WIN32)
|
||||
_expat_copy_bool_int(EXPAT_DEV_URANDOM XML_DEV_URANDOM)
|
||||
endif()
|
||||
set(XML_CONTEXT_BYTES ${EXPAT_CONTEXT_BYTES})
|
||||
|
||||
macro(expat_install)
|
||||
if(INSTALL)
|
||||
if(EXPAT_ENABLE_INSTALL)
|
||||
install(${ARGN})
|
||||
endif()
|
||||
endmacro()
|
||||
|
@ -158,19 +161,19 @@ 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 (EXPAT_WARNINGS_AS_ERRORS)
|
||||
if(MSVC)
|
||||
add_definitions(/WX)
|
||||
else(MSVC)
|
||||
set(EXTRA_COMPILE_FLAGS "${EXTRA_COMPILE_FLAGS} -Werror")
|
||||
endif(MSVC)
|
||||
endif(WARNINGS_AS_ERRORS)
|
||||
endif(EXPAT_WARNINGS_AS_ERRORS)
|
||||
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_COMPILE_FLAGS}")
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_COMPILE_FLAGS}")
|
||||
|
||||
if (MSVC)
|
||||
if (MSVC_USE_STATIC_CRT)
|
||||
message("-- Using static CRT ${MSVC_USE_STATIC_CRT}")
|
||||
if (EXPAT_MSVC_STATIC_CRT)
|
||||
message("-- Using static CRT ${EXPAT_MSVC_STATIC_CRT}")
|
||||
foreach(flag_var
|
||||
CMAKE_CXX_FLAGS_DEBUG
|
||||
CMAKE_CXX_FLAGS_RELEASE
|
||||
|
@ -191,12 +194,12 @@ if(MSVC)
|
|||
add_definitions(-D_CRT_SECURE_NO_WARNINGS -wd4996)
|
||||
endif(MSVC)
|
||||
if(WIN32)
|
||||
if(XML_UNICODE_WCHAR_T)
|
||||
if(EXPAT_UNICODE_WCHAR_T)
|
||||
set(_POSTFIX_WIDE "w")
|
||||
endif()
|
||||
|
||||
if(NOT BUILD_shared)
|
||||
if(MSVC_USE_STATIC_CRT)
|
||||
if(NOT EXPAT_SHARED_LIBS)
|
||||
if(EXPAT_MSVC_STATIC_CRT)
|
||||
set(_POSTFIX_CRT "MT")
|
||||
else()
|
||||
set(_POSTFIX_CRT "MD")
|
||||
|
@ -230,20 +233,20 @@ set(expat_SRCS
|
|||
lib/xmltok_ns.c
|
||||
)
|
||||
|
||||
if(BUILD_shared)
|
||||
if(EXPAT_SHARED_LIBS)
|
||||
set(_SHARED SHARED)
|
||||
if(MSVC)
|
||||
set(expat_SRCS ${expat_SRCS} lib/libexpat.def)
|
||||
endif(MSVC)
|
||||
else(BUILD_shared)
|
||||
else(EXPAT_SHARED_LIBS)
|
||||
set(_SHARED STATIC)
|
||||
if(WIN32)
|
||||
add_definitions(-DXML_STATIC)
|
||||
endif(WIN32)
|
||||
endif(BUILD_shared)
|
||||
endif(EXPAT_SHARED_LIBS)
|
||||
|
||||
add_library(expat ${_SHARED} ${expat_SRCS})
|
||||
if(USE_libbsd)
|
||||
if(EXPAT_WITH_LIBBSD)
|
||||
target_link_libraries(expat ${LIB_BSD})
|
||||
endif()
|
||||
|
||||
|
@ -278,7 +281,7 @@ expat_install(FILES ${CMAKE_CURRENT_BINARY_DIR}/expat.pc DESTINATION ${CMAKE_INS
|
|||
#
|
||||
# C command line tool xmlwf
|
||||
#
|
||||
if(BUILD_tools)
|
||||
if(EXPAT_BUILD_TOOLS)
|
||||
set(xmlwf_SRCS
|
||||
xmlwf/xmlwf.c
|
||||
xmlwf/xmlfile.c
|
||||
|
@ -290,7 +293,7 @@ if(BUILD_tools)
|
|||
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)
|
||||
if(EXPAT_BUILD_DOCS)
|
||||
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)
|
||||
|
@ -300,7 +303,7 @@ endif()
|
|||
#
|
||||
# C code examples
|
||||
#
|
||||
if(BUILD_examples)
|
||||
if(EXPAT_BUILD_EXAMPLES)
|
||||
add_executable(elements examples/elements.c)
|
||||
set_property(TARGET elements PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
|
||||
target_link_libraries(elements expat)
|
||||
|
@ -308,12 +311,12 @@ if(BUILD_examples)
|
|||
add_executable(outline examples/outline.c)
|
||||
set_property(TARGET outline PROPERTY RUNTIME_OUTPUT_DIRECTORY examples)
|
||||
target_link_libraries(outline expat)
|
||||
endif(BUILD_examples)
|
||||
endif(EXPAT_BUILD_EXAMPLES)
|
||||
|
||||
#
|
||||
# C/C++ test runners
|
||||
#
|
||||
if(BUILD_tests)
|
||||
if(EXPAT_BUILD_TESTS)
|
||||
## these are unittests that can be run on any platform
|
||||
enable_language(CXX)
|
||||
enable_testing()
|
||||
|
@ -334,9 +337,9 @@ if(BUILD_tests)
|
|||
set_property(TARGET runtestspp PROPERTY RUNTIME_OUTPUT_DIRECTORY tests)
|
||||
target_link_libraries(runtestspp expat)
|
||||
add_test(runtestspp tests/runtestspp)
|
||||
endif(BUILD_tests)
|
||||
endif(EXPAT_BUILD_TESTS)
|
||||
|
||||
if(BUILD_fuzzers)
|
||||
if(EXPAT_BUILD_FUZZERS)
|
||||
if(NOT "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
|
||||
message(SEND_ERROR
|
||||
"Building fuzz targets without Clang (but ${CMAKE_C_COMPILER_ID}) "
|
||||
|
@ -371,7 +374,7 @@ if(BUILD_fuzzers)
|
|||
TARGET ${target_name} PROPERTY RUNTIME_OUTPUT_DIRECTORY fuzz)
|
||||
endforeach()
|
||||
endforeach()
|
||||
endif(BUILD_fuzzers)
|
||||
endif(EXPAT_BUILD_FUZZERS)
|
||||
|
||||
#
|
||||
# Documentation
|
||||
|
@ -422,8 +425,8 @@ expat_install(
|
|||
#
|
||||
# Summary
|
||||
#
|
||||
if(XML_UNICODE)
|
||||
if(XML_UNICODE_WCHAR_T)
|
||||
if(EXPAT_UNICODE)
|
||||
if(EXPAT_UNICODE_WCHAR_T)
|
||||
set(_EXPAT_CHAR_TYPE "wchar_t")
|
||||
else()
|
||||
set(_EXPAT_CHAR_TYPE "unsigned short")
|
||||
|
@ -438,28 +441,30 @@ message(STATUS "")
|
|||
message(STATUS "Configuration")
|
||||
message(STATUS " Prefix ..................... ${CMAKE_INSTALL_PREFIX}")
|
||||
message(STATUS " Build type ................. ${CMAKE_BUILD_TYPE}")
|
||||
message(STATUS " Shared libraries ........... ${BUILD_shared}")
|
||||
message(STATUS " Shared libraries ........... ${EXPAT_SHARED_LIBS}")
|
||||
if(WIN32)
|
||||
message(STATUS " Static CRT ................. ${MSVC_USE_STATIC_CRT}")
|
||||
message(STATUS " Static CRT ................. ${EXPAT_MSVC_STATIC_CRT}")
|
||||
endif()
|
||||
message(STATUS " Character type ............. ${_EXPAT_CHAR_TYPE}")
|
||||
if(WIN32)
|
||||
message(STATUS " Binary postfix ............. ${CMAKE_${_EXPAT_BUILD_TYPE_UPPER}_POSTFIX}")
|
||||
endif()
|
||||
message(STATUS "")
|
||||
message(STATUS " Build documentation ........ ${BUILD_doc}")
|
||||
message(STATUS " Build examples ............. ${BUILD_examples}")
|
||||
message(STATUS " Build fuzzers .............. ${BUILD_fuzzers}")
|
||||
message(STATUS " Build tests ................ ${BUILD_tests}")
|
||||
message(STATUS " Build tools (xmlwf) ........ ${BUILD_tools}")
|
||||
message(STATUS " Install files .............. ${INSTALL}")
|
||||
message(STATUS " Build documentation ........ ${EXPAT_BUILD_DOCS}")
|
||||
message(STATUS " Build examples ............. ${EXPAT_BUILD_EXAMPLES}")
|
||||
message(STATUS " Build fuzzers .............. ${EXPAT_BUILD_FUZZERS}")
|
||||
message(STATUS " Build tests ................ ${EXPAT_BUILD_TESTS}")
|
||||
message(STATUS " Build tools (xmlwf) ........ ${EXPAT_BUILD_TOOLS}")
|
||||
message(STATUS " Install files .............. ${EXPAT_ENABLE_INSTALL}")
|
||||
message(STATUS "")
|
||||
message(STATUS " Features")
|
||||
message(STATUS " Attributes info .......... ${XML_ATTR_INFO}")
|
||||
message(STATUS " Context bytes ............ ${XML_CONTEXT_BYTES}")
|
||||
message(STATUS " DTD support .............. ${XML_DTD}")
|
||||
message(STATUS " Large size ............... ${XML_LARGE_SIZE}")
|
||||
message(STATUS " Namespace support ........ ${XML_NS}")
|
||||
message(STATUS " // Advanced options, changes not advised")
|
||||
message(STATUS " Attributes info .......... ${EXPAT_ATTR_INFO}")
|
||||
message(STATUS " Context bytes ............ ${EXPAT_CONTEXT_BYTES}")
|
||||
message(STATUS " DTD support .............. ${EXPAT_DTD}")
|
||||
message(STATUS " Large size ............... ${EXPAT_LARGE_SIZE}")
|
||||
message(STATUS " Minimum size ............. ${EXPAT_MIN_SIZE}")
|
||||
message(STATUS " Namespace support ........ ${EXPAT_NS}")
|
||||
message(STATUS "")
|
||||
message(STATUS " Entropy sources")
|
||||
if(WIN32)
|
||||
|
@ -467,17 +472,17 @@ if(WIN32)
|
|||
else()
|
||||
message(STATUS " getrandom ................ ${HAVE_GETRANDOM}")
|
||||
message(STATUS " syscall SYS_getrandom .... ${HAVE_SYSCALL_GETRANDOM}")
|
||||
message(STATUS " libbsd ................... ${USE_libbsd}")
|
||||
message(STATUS " /dev/random .............. ${XML_DEV_URANDOM}")
|
||||
message(STATUS " libbsd ................... ${EXPAT_WITH_LIBBSD}")
|
||||
message(STATUS " /dev/random .............. ${EXPAT_DEV_URANDOM}")
|
||||
endif()
|
||||
message(STATUS "")
|
||||
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
|
||||
message(STATUS "Continue with")
|
||||
message(STATUS " make")
|
||||
if(BUILD_tests)
|
||||
if(EXPAT_BUILD_TESTS)
|
||||
message(STATUS " make test")
|
||||
endif()
|
||||
if(INSTALL)
|
||||
if(EXPAT_ENABLE_INSTALL)
|
||||
message(STATUS " sudo make install")
|
||||
endif()
|
||||
message(STATUS "")
|
||||
|
|
|
@ -23,12 +23,33 @@ Release x.x.x xxx xxx xx xxxx
|
|||
--with-sys-getrandom
|
||||
--without-sys-getrandom
|
||||
Autotools: Fix "make run-xmltest" for out-of-source builds
|
||||
#244 #264 CMake: Add argument -DXML_ATTR_INFO=(ON|OFF), default OFF
|
||||
#326 CMake: Add argument -DXML_LARGE_SIZE=(ON|OFF), default OFF
|
||||
#326 CMake: Add argument -DXML_MIN_SIZE=(ON|OFF), default OFF
|
||||
CMake: Pull all options from Expat <=2.2.7 into namespace
|
||||
prefix EXPAT_ with the exception of DOCBOOK_TO_MAN:
|
||||
- BUILD_doc -> EXPAT_BUILD_DOCS (plural)
|
||||
- BUILD_examples -> EXPAT_BUILD_EXAMPLES
|
||||
- BUILD_shared -> EXPAT_SHARED_LIBS
|
||||
- BUILD_tests -> EXPAT_BUILD_TESTS
|
||||
- BUILD_tools -> EXPAT_BUILD_TOOLS
|
||||
- DOCBOOK_TO_MAN -> DOCBOOK_TO_MAN (unchanged)
|
||||
- INSTALL -> EXPAT_ENABLE_INSTALL
|
||||
- MSVC_USE_STATIC_CRT -> EXPAT_MSVC_STATIC_CRT
|
||||
- USE_libbsd -> EXPAT_WITH_LIBBSD
|
||||
- WARNINGS_AS_ERRORS -> EXPAT_WARNINGS_AS_ERRORS
|
||||
- XML_CONTEXT_BYTES -> EXPAT_CONTEXT_BYTES
|
||||
- XML_DEV_URANDOM -> EXPAT_DEV_URANDOM
|
||||
- XML_DTD -> EXPAT_DTD
|
||||
- XML_NS -> EXPAT_NS
|
||||
- XML_UNICODE -> EXPAT_UNICODE
|
||||
- XML_UNICODE_WCHAR_T -> EXPAT_UNICODE_WCHAR_T
|
||||
#244 #264 CMake: Add argument -DEXPAT_ATTR_INFO=(ON|OFF),
|
||||
default OFF
|
||||
#326 CMake: Add argument -DEXPAT_LARGE_SIZE=(ON|OFF),
|
||||
default OFF
|
||||
#328 CMake: Add argument -DEXPAT_MIN_SIZE=(ON|OFF),
|
||||
default OFF
|
||||
#239 #277 CMake: Add arguments
|
||||
-DUSE_GETRANDOM=(ON|OFF|AUTO), default AUTO
|
||||
-DUSE_SYS_GETRANDOM=(ON|OFF|AUTO), default AUTO
|
||||
-DEXPAT_WITH_GETRANDOM=(ON|OFF|AUTO), default AUTO
|
||||
-DEXPAT_WITH_SYS_GETRANDOM=(ON|OFF|AUTO), default AUTO
|
||||
#326 CMake: Install expat_config.h to include directory
|
||||
#326 CMake: Generate and install configuration files for
|
||||
future find_package(expat [..] CONFIG [..])
|
||||
|
@ -39,7 +60,8 @@ Release x.x.x xxx xxx xx xxxx
|
|||
Old: expat[d].lib
|
||||
New: expat[w][d][MD|MT].lib
|
||||
CMake: Migrate files from Windows to Unix line endings
|
||||
#308 CMake: Integrate OSS-Fuzz fuzzers
|
||||
#308 CMake: Integrate OSS-Fuzz fuzzers, option
|
||||
-DEXPAT_BUILD_FUZZERS=(ON|OFF), default OFF
|
||||
#299 #302 Windows: Replace LoadLibrary hack to access
|
||||
unofficial API function SystemFunction036 (RtlGenRandom)
|
||||
by using official API function rand_s (needs WinXP+)
|
||||
|
|
|
@ -21,7 +21,7 @@ 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)
|
||||
if(EXPAT_WITH_LIBBSD)
|
||||
set(CMAKE_REQUIRED_LIBRARIES "${LIB_BSD}")
|
||||
set(_bsd "bsd/")
|
||||
else()
|
||||
|
|
|
@ -130,3 +130,62 @@ information.
|
|||
|
||||
A reference manual is available in the file `doc/reference.html` in this
|
||||
distribution.
|
||||
|
||||
|
||||
The CMake build system is still *experimental* and will replace the primary
|
||||
build system based on GNU Autotools at some point when its ready.
|
||||
For an idea of the available (non-advanced) options for building with CMake:
|
||||
|
||||
```console
|
||||
# rm -f CMakeCache.txt ; cmake -D_EXPAT_HELP=ON -LH . | grep -B1 ':.*='
|
||||
// Choose the type of build, options are: None Debug Release RelWithDebInfo MinSizeRel ...
|
||||
CMAKE_BUILD_TYPE:STRING=
|
||||
--
|
||||
// Install path prefix, prepended onto install directories.
|
||||
CMAKE_INSTALL_PREFIX:PATH=/usr/local
|
||||
--
|
||||
// Path to a program.
|
||||
DOCBOOK_TO_MAN:FILEPATH=/usr/bin/docbook2x-man
|
||||
--
|
||||
// build man page for xmlwf
|
||||
EXPAT_BUILD_DOCS:BOOL=ON
|
||||
--
|
||||
// build the examples for expat library
|
||||
EXPAT_BUILD_EXAMPLES:BOOL=ON
|
||||
--
|
||||
// build fuzzers for the expat library
|
||||
EXPAT_BUILD_FUZZERS:BOOL=OFF
|
||||
--
|
||||
// build the tests for expat library
|
||||
EXPAT_BUILD_TESTS:BOOL=ON
|
||||
--
|
||||
// build the xmlwf tool for expat library
|
||||
EXPAT_BUILD_TOOLS:BOOL=ON
|
||||
--
|
||||
// install expat files in cmake install target
|
||||
EXPAT_ENABLE_INSTALL:BOOL=ON
|
||||
--
|
||||
// Use /MT flag (static CRT) when compiling in MSVC
|
||||
EXPAT_MSVC_STATIC_CRT:BOOL=OFF
|
||||
--
|
||||
// build a shared expat library
|
||||
EXPAT_SHARED_LIBS:BOOL=ON
|
||||
--
|
||||
// Use UTF-16 encoded chars (two bytes) instead of UTF-8
|
||||
EXPAT_UNICODE:BOOL=OFF
|
||||
--
|
||||
// Use wchar_t to represent UTF-16 instead of unsigned short
|
||||
EXPAT_UNICODE_WCHAR_T:BOOL=OFF
|
||||
--
|
||||
// Treat all compiler warnings as errors
|
||||
EXPAT_WARNINGS_AS_ERRORS:BOOL=OFF
|
||||
--
|
||||
// Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]
|
||||
EXPAT_WITH_GETRANDOM:STRING=AUTO
|
||||
--
|
||||
// utilize libbsd (for arc4random_buf)
|
||||
EXPAT_WITH_LIBBSD:BOOL=OFF
|
||||
--
|
||||
// Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]
|
||||
EXPAT_WITH_SYS_GETRANDOM:STRING=AUTO
|
||||
```
|
||||
|
|
|
@ -43,18 +43,18 @@ macro(_register_component _NAME _AVAILABE)
|
|||
set(expat_${_NAME}_FOUND ${_AVAILABE})
|
||||
endmacro()
|
||||
|
||||
_register_component(attr_info @XML_ATTR_INFO@)
|
||||
if(@XML_CONTEXT_BYTES@)
|
||||
_register_component(context_bytes 1)
|
||||
_register_component(attr_info @EXPAT_ATTR_INFO@)
|
||||
if(@EXPAT_CONTEXT_BYTES@)
|
||||
_register_component(context_bytes ON)
|
||||
else()
|
||||
_register_component(context_bytes 0)
|
||||
_register_component(context_bytes OFF)
|
||||
endif()
|
||||
_register_component(dtd @XML_DTD@)
|
||||
_register_component(large_size @XML_LARGE_SIZE@)
|
||||
_register_component(min_size @XML_MIN_SIZE@)
|
||||
_register_component(ns @XML_NS@)
|
||||
_register_component(unicode @XML_UNICODE@)
|
||||
_register_component(unicode_wchar_t @XML_UNICODE_WCHAR_T@)
|
||||
_register_component(dtd @EXPAT_DTD@)
|
||||
_register_component(large_size @EXPAT_LARGE_SIZE@)
|
||||
_register_component(min_size @EXPAT_MIN_SIZE@)
|
||||
_register_component(ns @EXPAT_NS@)
|
||||
_register_component(unicode @EXPAT_UNICODE@)
|
||||
_register_component(unicode_wchar_t @EXPAT_UNICODE_WCHAR_T@)
|
||||
|
||||
check_required_components(expat)
|
||||
|
||||
|
|
|
@ -46,9 +46,9 @@ Expat can be built on Windows in two ways:
|
|||
The "w" indicates the UTF-16 version of the library.
|
||||
|
||||
Versions that are statically linking with the multi-threaded run-time library
|
||||
can be built with -DMSVC_USE_STATIC_CRT=ON.
|
||||
can be built with -DEXPAT_MSVC_STATIC_CRT=ON.
|
||||
|
||||
Static Linking: (through -DBUILD_shared=OFF)
|
||||
Static Linking: (through -DEXPAT_SHARED_LIBS=OFF)
|
||||
|
||||
The libraries should be named like this:
|
||||
Multi-threaded: libexpat(w)MT.lib
|
||||
|
|
|
@ -43,7 +43,7 @@ MD %BINDIR% || EXIT /b 1
|
|||
|
||||
MD build_shared_char || EXIT /b 1
|
||||
CD build_shared_char || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DMSVC_USE_STATIC_CRT=ON -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_tools=OFF .. || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF .. || EXIT /b 1
|
||||
msbuild /m expat.sln || EXIT /b 1
|
||||
DIR %CONFIGURATION% || EXIT /b 1
|
||||
CD .. || EXIT /b 1
|
||||
|
@ -53,7 +53,7 @@ COPY build_shared_char\%CONFIGURATION%\expat.lib %BINDIR%\ || EXIT /b 1
|
|||
|
||||
MD build_static_char || EXIT /b 1
|
||||
CD build_static_char || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DMSVC_USE_STATIC_CRT=ON -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_shared=OFF .. || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_SHARED_LIBS=OFF .. || EXIT /b 1
|
||||
msbuild /m expat.sln || EXIT /b 1
|
||||
DIR %CONFIGURATION% || EXIT /b 1
|
||||
CD .. || EXIT /b 1
|
||||
|
@ -63,7 +63,7 @@ COPY build_static_char\xmlwf\%CONFIGURATION%\xmlwf.exe %BINDIR%\ || EXIT /b 1
|
|||
|
||||
MD build_shared_wchar_t || EXIT /b 1
|
||||
CD build_shared_wchar_t || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DMSVC_USE_STATIC_CRT=ON -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_tools=OFF -DXML_UNICODE=ON -DXML_UNICODE_WCHAR_T=ON .. || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF -DEXPAT_UNICODE=ON -DEXPAT_UNICODE_WCHAR_T=ON .. || EXIT /b 1
|
||||
msbuild /m expat.sln || EXIT /b 1
|
||||
DIR %CONFIGURATION% || EXIT /b 1
|
||||
CD .. || EXIT /b 1
|
||||
|
@ -73,7 +73,7 @@ COPY build_shared_wchar_t\%CONFIGURATION%\expatw.lib %BINDIR%\ || EXIT /b 1
|
|||
|
||||
MD build_static_wchar_t || EXIT /b 1
|
||||
CD build_static_wchar_t || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DMSVC_USE_STATIC_CRT=ON -DBUILD_examples=OFF -DBUILD_tests=OFF -DBUILD_tools=OFF -DBUILD_shared=OFF -DXML_UNICODE=ON -DXML_UNICODE_WCHAR_T=ON .. || EXIT /b 1
|
||||
cmake -G"%GENERATOR%" -DCMAKE_BUILD_TYPE=%CONFIGURATION% -DEXPAT_MSVC_STATIC_CRT=ON -DEXPAT_BUILD_EXAMPLES=OFF -DEXPAT_BUILD_TESTS=OFF -DEXPAT_BUILD_TOOLS=OFF -DEXPAT_SHARED_LIBS=OFF -DEXPAT_UNICODE=ON -DEXPAT_UNICODE_WCHAR_T=ON .. || EXIT /b 1
|
||||
msbuild /m expat.sln || EXIT /b 1
|
||||
DIR %CONFIGURATION% || EXIT /b 1
|
||||
CD .. || EXIT /b 1
|
||||
|
|
Loading…
Add table
Reference in a new issue