1. update openssl to 3.1 2. update zlib to 1.2.13 3. update expat to 2.5 Change-Id: I46ac38f8e5acab4abae42645a56eec7d9381865e (cherry picked from commit 34013820d325c41e1514d0f334f3c2be53145852)
130 lines
4.5 KiB
CMake
130 lines
4.5 KiB
CMake
cmake_minimum_required(VERSION 3.0)
|
|
|
|
project(EXPAT)
|
|
|
|
include(${CMAKE_CURRENT_LIST_DIR}/ConfigureChecks.cmake)
|
|
|
|
macro(expat_shy_set var default cache type desc)
|
|
# Macro expat_shy_set came into life because:
|
|
# - Expat was previously using an inconsistent mix of CMake's native set()
|
|
# and option() to define public build time options.
|
|
# - option() is more friendly than set() with regard to configuring an
|
|
# external project that is pulled in by means of add_subdirectory() --
|
|
# see comments in issue #597 -- so we wanted to get away from set().
|
|
# - option() auto-converts non-bool values to bool when writing to the CMake
|
|
# cache, so we needed something that supports non-bool better and hence
|
|
# wanted to get away from plain option(), too.
|
|
#
|
|
# As a result, this function serves as a hybrid between CMake's regular set()
|
|
# and option(): from set() it takes support for non-bool types and the function
|
|
# name and signature whereas from option() (with policy CMP0077 mode NEW) it
|
|
# takes being shy when a value has previously been defined for that variable.
|
|
#
|
|
# So that resolves all need for set(.. FORCE) when pulling in Expat by means of
|
|
# add_subdirectory().
|
|
#
|
|
if(NOT ${cache} STREQUAL "CACHE")
|
|
message(SEND_ERROR "Macro usage is: expat_shy_set(var default CACHE type desc)")
|
|
endif()
|
|
|
|
if(DEFINED ${var})
|
|
# NOTE: The idea is to (ideally) only add to the cache if
|
|
# there is no cache entry, yet. "if(DEFINED CACHE{var})"
|
|
# requires CMake >=3.14.
|
|
if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.14" AND NOT DEFINED "CACHE{${var}}")
|
|
set("${var}" "${${var}}" CACHE "${type}" "${desc}")
|
|
endif()
|
|
else()
|
|
set("${var}" "${default}" CACHE "${type}" "${desc}")
|
|
endif()
|
|
endmacro()
|
|
|
|
if(NOT WIN32)
|
|
expat_shy_set(EXPAT_WITH_GETRANDOM "AUTO" CACHE STRING "Make use of getrandom function (ON|OFF|AUTO) [default=AUTO]")
|
|
expat_shy_set(EXPAT_WITH_SYS_GETRANDOM "AUTO" CACHE STRING "Make use of syscall SYS_getrandom (ON|OFF|AUTO) [default=AUTO]")
|
|
endif()
|
|
|
|
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(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()
|
|
|
|
configure_file(expat_configure.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/expat_configure.h")
|
|
|
|
if (BUILD_SHARED_LIBS AND MSVC)
|
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
|
endif()
|
|
|
|
add_library(expat
|
|
xmlparse.c
|
|
xmlrole.c
|
|
xmltok.c
|
|
)
|
|
|
|
target_include_directories(expat PRIVATE ${PROJECT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR})
|
|
|
|
include(GNUInstallDirs)
|
|
|
|
install(
|
|
FILES
|
|
${PROJECT_SOURCE_DIR}/expat.h
|
|
${PROJECT_SOURCE_DIR}/expat_config.h
|
|
${PROJECT_SOURCE_DIR}/expat_external.h
|
|
DESTINATION
|
|
${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
|
|
add_library(EXPAT INTERFACE)
|
|
target_link_libraries(EXPAT INTERFACE expat)
|
|
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
write_basic_package_version_file(
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
|
VERSION 1.95
|
|
COMPATIBILITY AnyNewerVersion
|
|
)
|
|
|
|
install(TARGETS expat EXPAT
|
|
EXPORT ${PROJECT_NAME}Targets
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
|
)
|
|
|
|
export(EXPORT ${PROJECT_NAME}Targets
|
|
FILE "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake"
|
|
NAMESPACE ${PROJECT_NAME}:: )
|
|
|
|
set(ConfigPackageLocation ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
|
|
|
|
install(EXPORT ${PROJECT_NAME}Targets
|
|
FILE
|
|
"${PROJECT_NAME}Targets.cmake"
|
|
NAMESPACE
|
|
${PROJECT_NAME}::
|
|
DESTINATION
|
|
${ConfigPackageLocation}
|
|
)
|
|
|
|
configure_file(config.cmake.in ${PROJECT_NAME}Config.cmake @ONLY)
|
|
|
|
install(
|
|
FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
|
|
DESTINATION
|
|
${ConfigPackageLocation}
|
|
)
|
|
|