Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[apr] fix CMake config via patch from the stable branch. #38674

Draft
wants to merge 22 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
ea520fa
[apr] use patch and portfile from the stable branch of apr.
rinrab May 10, 2024
430a1fa
[apr] remove the `unglue.patch` file.
rinrab May 10, 2024
34e71f6
[apr] add new version of the apr port.
rinrab May 10, 2024
9705b1b
[apr] add the port-version property to the vcpkg.json file.
rinrab May 10, 2024
3a215b0
[apr] update git-tree.
rinrab May 10, 2024
fd949a5
[apr] remove setting of the APU_USE_EXPAT variable; It is never used.
rinrab May 10, 2024
10924ed
[apr] add the license field to the vcpkg.json file.
rinrab May 10, 2024
7f2c048
[apr] specify the `default-features` field to the vcpkg.json file.
rinrab May 10, 2024
8739ff1
[apr] run the `.\vcpkg.exe format-manifest` command.
rinrab May 10, 2024
31d8dee
[apr] update git-tree.
rinrab May 10, 2024
7158971
Revert "[apr] remove the `unglue.patch` file."
rinrab May 10, 2024
f33bab4
[apr] update git-tree.
rinrab May 10, 2024
b37ccc9
[apr] add the license field to the vcpkg.json file.
rinrab May 10, 2024
fa826f0
[apr] update git-tree.
rinrab May 10, 2024
630d30e
[apr] generate patches per all revisions
rinrab May 14, 2024
f23193d
[apr] fix patch appling
rinrab May 14, 2024
abd7de0
[apr] update git-tree
rinrab May 14, 2024
faa5eb2
[apr] revert accedently changed indentation in the portfile.cmake.
rinrab May 15, 2024
eb50a78
[apr] update git-tree
rinrab May 15, 2024
e0e3454
[apr] use the FEATURE_OPTIONS variable to pass features to the cmake …
rinrab May 16, 2024
b1e6e05
[apr] revert setting of the MIN_WINDOWS_VER and APR_HAVE_IPV6 variables.
rinrab May 16, 2024
a347950
[apr] update git-tree
rinrab May 16, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
293 changes: 293 additions & 0 deletions ports/apr/apr-r1917051+r1917283+r1917612.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,293 @@
Index: .
===================================================================
--- . (revision 1917624)
+++ . (working copy)

Property changes on: .
___________________________________________________________________
Modified: svn:mergeinfo
## -0,0 +0,3 ##
Merged /apr/apr/branches/1.7.x:r1917051,1917065,1917283,1917612
Merged /apr/apr/branches/1.7.x-cmake-improvements:r1917214-1917282
Merged /apr/apr/trunk:r1895471,1895519-1895520,1902517,1905416,1917107,1917109,1917112,1917114-1917115,1917162,1917250,1917604
Index: CHANGES
===================================================================
--- CHANGES (revision 1917624)
+++ CHANGES (working copy)
@@ -1,4 +1,12 @@
-*- coding: utf-8 -*-
+ *) CMake: Add support for CMAKE_WARNING_AS_ERROR. [Ivan Zhakov]
+
+ *) CMake: Enable support for MSVC runtime library selection by abstraction.
+ [Ivan Zhakov]
+
+ *) CMake: Export installed targets (libapr-1, apr-1, libaprapp-1, aprapp-1)
+ to apr:: namespace. [Ivan Zhakov]
+
Changes for APR 1.7.4

*) Fix a regression where writing to a file opened with both APR_FOPEN_APPEND
Index: CMakeLists.txt
===================================================================
--- CMakeLists.txt (revision 1917624)
+++ CMakeLists.txt (working copy)
@@ -21,14 +21,41 @@

PROJECT(APR C)

+# Enable support for MSVC runtime library selection by abstraction
+# if supported by CMake.
+IF(POLICY CMP0091)
+ CMAKE_POLICY(SET CMP0091 NEW)
+ENDIF()
+
+# Add simple support CMAKE_WARNING_AS_ERROR if CMake doesn't
+# support it.
+IF (CMAKE_VERSION VERSION_LESS 3.24)
+ IF(CMAKE_WARNING_AS_ERROR AND MSVC)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /WX")
+ ENDIF()
+ENDIF()
+
+SET(apr_name apr-1)
+SET(apr_libname libapr-1)
+
OPTION(APR_INSTALL_PRIVATE_H "Install selected private .h files (for httpd)" OFF)
OPTION(APR_HAVE_IPV6 "IPv6 support" ON)
OPTION(INSTALL_PDB "Install .pdb files (if generated)" ON)
OPTION(APR_BUILD_TESTAPR "Build the test suite" OFF)
+OPTION(APR_BUILD_SHARED "Build shared libraries" ON)
+OPTION(APR_BUILD_STATIC "Build static libraries." ON)
OPTION(TEST_STATIC_LIBS "Test programs use APR static libraries instead of shared libraries?" OFF)
SET(MIN_WINDOWS_VER "Vista"
CACHE STRING "Minimum Windows version")

+IF(NOT APR_BUILD_SHARED AND NOT APR_BUILD_STATIC)
+ MESSAGE(FATAL_ERROR "Both APR_BUILD_SHARED and APR_BUILD_STATIC have been disabled")
+ENDIF()
+
+IF(NOT APR_BUILD_STATIC AND TEST_STATIC_LIBS)
+ MESSAGE(FATAL_ERROR "APR_BUILD_STATIC have been disabled, but TEST_STATIC_LIBS is enabled")
+ENDIF()
+
# create 1-or-0 representation of feature tests for apr.h

SET(apr_have_ipv6_10 0)
@@ -47,6 +74,13 @@
SET(win32_winnt_str ${MIN_WINDOWS_VER})
ENDIF()

+# Read current version.
+FILE(STRINGS include/apr_version.h VERSION_STRINGS REGEX "#define (APR_MAJOR_VERSION|APR_MINOR_VERSION|APR_PATCH_VERSION)")
+
+STRING(REGEX REPLACE ".*#define APR_MAJOR_VERSION[ \t]+([0-9]+).*" "\\1" APR_MAJOR_VERSION ${VERSION_STRINGS})
+STRING(REGEX REPLACE ".*#define APR_MINOR_VERSION[ \t]+([0-9]+).*" "\\1" APR_MINOR_VERSION ${VERSION_STRINGS})
+STRING(REGEX REPLACE ".*#define APR_PATCH_VERSION[ \t]+([0-9]+).*" "\\1" APR_PATCH_VERSION ${VERSION_STRINGS})
+
CONFIGURE_FILE(include/apr.hwc
${PROJECT_BINARY_DIR}/apr.h)

@@ -71,11 +105,11 @@
# you've generated apr.h before using a different build

SET(APR_INCLUDE_DIRECTORIES
- ${PROJECT_BINARY_DIR}
- ${CMAKE_CURRENT_SOURCE_DIR}/include
- ${CMAKE_CURRENT_SOURCE_DIR}/include/arch/win32
- ${CMAKE_CURRENT_SOURCE_DIR}/include/arch/unix
- ${CMAKE_CURRENT_SOURCE_DIR}/include/private
+ $<BUILD_INTERFACE:${PROJECT_BINARY_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/arch/win32>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/arch/unix>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include/private>
)

SET(APR_SYSTEM_LIBS
@@ -261,27 +295,55 @@
SET(install_bin_pdb)

# libapr-1 is shared, apr-1 is static
-ADD_LIBRARY(libapr-1 SHARED ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED} libapr.rc)
-SET(install_targets ${install_targets} libapr-1)
-SET(install_bin_pdb ${install_bin_pdb} ${PROJECT_BINARY_DIR}/libapr-1.pdb)
-TARGET_LINK_LIBRARIES(libapr-1 ${APR_SYSTEM_LIBS})
-SET_TARGET_PROPERTIES(libapr-1 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_EXPORT;WINNT")
-ADD_DEPENDENCIES(libapr-1 test_char_header)
+IF (APR_BUILD_SHARED)
+ ADD_LIBRARY(${apr_libname} SHARED ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED} libapr.rc)
+ LIST(APPEND install_targets ${apr_libname})
+ LIST(APPEND install_bin_pdb ${PROJECT_BINARY_DIR}/${apr_libname}.pdb)
+ TARGET_LINK_LIBRARIES(${apr_libname}
+ PRIVATE ${APR_SYSTEM_LIBS})
+ TARGET_COMPILE_DEFINITIONS(${apr_libname}
+ PRIVATE "APR_DECLARE_EXPORT;WINNT"
+ INTERFACE "APR_DECLARE_IMPORT;WINNT")
+ TARGET_INCLUDE_DIRECTORIES(${apr_libname}
+ PRIVATE ${APR_INCLUDE_DIRECTORIES}
+ INTERFACE $<INSTALL_INTERFACE:include> ${APR_INCLUDE_DIRECTORIES}
+ )
+ ADD_DEPENDENCIES(${apr_libname} test_char_header)
+ENDIF()

-ADD_LIBRARY(apr-1 STATIC ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED})
-SET(install_targets ${install_targets} apr-1)
-TARGET_LINK_LIBRARIES(apr-1 ${APR_SYSTEM_LIBS})
-SET_TARGET_PROPERTIES(apr-1 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;WINNT")
-ADD_DEPENDENCIES(apr-1 test_char_header)
+IF (APR_BUILD_STATIC)
+ ADD_LIBRARY(${apr_name} STATIC ${APR_SOURCES} ${APR_PUBLIC_HEADERS_GENERATED})
+ LIST(APPEND install_targets ${apr_name})
+ TARGET_LINK_LIBRARIES(${apr_name}
+ PRIVATE ${APR_SYSTEM_LIBS})
+ TARGET_COMPILE_DEFINITIONS(${apr_name}
+ PRIVATE "APR_DECLARE_STATIC;WINNT"
+ INTERFACE "APR_DECLARE_STATIC;WINNT")
+ TARGET_INCLUDE_DIRECTORIES(${apr_name}
+ PRIVATE ${APR_INCLUDE_DIRECTORIES}
+ INTERFACE $<INSTALL_INTERFACE:include> ${APR_INCLUDE_DIRECTORIES}
+ )
+ ADD_DEPENDENCIES(${apr_name} test_char_header)
+ENDIF()

# libaprapp-1 and aprapp-1 are static
-ADD_LIBRARY(libaprapp-1 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED})
-SET(install_targets ${install_targets} libaprapp-1)
-SET_TARGET_PROPERTIES(libaprapp-1 PROPERTIES COMPILE_DEFINITIONS "APR_APP;WINNT")
+IF (APR_BUILD_SHARED)
+ ADD_LIBRARY(libaprapp-1 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED})
+ LIST(APPEND install_targets libaprapp-1)
+ SET_TARGET_PROPERTIES(libaprapp-1 PROPERTIES COMPILE_DEFINITIONS "APR_APP;WINNT")
+ TARGET_INCLUDE_DIRECTORIES(libaprapp-1
+ PRIVATE ${APR_INCLUDE_DIRECTORIES}
+ )
+ENDIF()

-ADD_LIBRARY(aprapp-1 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED})
-SET(install_targets ${install_targets} aprapp-1)
-SET_TARGET_PROPERTIES(aprapp-1 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_APP;WINNT")
+IF (APR_BUILD_STATIC)
+ ADD_LIBRARY(aprapp-1 STATIC misc/win32/apr_app.c misc/win32/internal.c ${APR_PUBLIC_HEADERS_GENERATED})
+ LIST(APPEND install_targets aprapp-1)
+ SET_TARGET_PROPERTIES(aprapp-1 PROPERTIES COMPILE_DEFINITIONS "APR_DECLARE_STATIC;APR_APP;WINNT")
+ TARGET_INCLUDE_DIRECTORIES(aprapp-1
+ PRIVATE ${APR_INCLUDE_DIRECTORIES}
+ )
+ENDIF()

IF(APR_BUILD_TESTAPR)
ENABLE_TESTING()
@@ -299,21 +361,16 @@
${PROJECT_BINARY_DIR}/data/mmap_datafile.txt)

IF(TEST_STATIC_LIBS)
- SET(whichapr apr-1)
+ SET(whichapr ${apr_name})
SET(whichaprapp aprapp-1)
- SET(apiflag -DAPR_DECLARE_STATIC)
ELSE()
- SET(whichapr libapr-1)
+ SET(whichapr ${apr_libname})
SET(whichaprapp libaprapp-1)
- SET(apiflag)
ENDIF()

ADD_EXECUTABLE(testapp test/testapp.c)
- TARGET_LINK_LIBRARIES(testapp ${whichapr} ${whichaprapp} ${APR_SYSTEM_LIBS})
+ TARGET_LINK_LIBRARIES(testapp ${whichapr} ${whichaprapp})
SET_TARGET_PROPERTIES(testapp PROPERTIES LINK_FLAGS /entry:wmainCRTStartup)
- IF(apiflag)
- SET_TARGET_PROPERTIES(testapp PROPERTIES COMPILE_FLAGS ${apiflag})
- ENDIF()
ADD_TEST(NAME testapp COMMAND testapp)

SET (APR_TEST_SOURCES
@@ -326,11 +383,8 @@
ENDFOREACH()

ADD_EXECUTABLE(testall ${APR_TEST_SOURCES})
- TARGET_LINK_LIBRARIES(testall ${whichapr} ${APR_SYSTEM_LIBS})
+ TARGET_LINK_LIBRARIES(testall ${whichapr} ws2_32.lib)
SET_TARGET_PROPERTIES(testall PROPERTIES COMPILE_DEFINITIONS "BINPATH=$<TARGET_FILE_DIR:testall>")
- IF(apiflag)
- SET_TARGET_PROPERTIES(testall PROPERTIES COMPILE_FLAGS ${apiflag})
- ENDIF()

FOREACH(test ${APR_TEST_SUITES})
ADD_TEST(NAME ${test} COMMAND testall -v ${test})
@@ -337,7 +391,7 @@
ENDFOREACH()

ADD_LIBRARY(mod_test MODULE test/mod_test.c)
- TARGET_LINK_LIBRARIES(mod_test ${whichapr} ${APR_SYSTEM_LIBS})
+ TARGET_LINK_LIBRARIES(mod_test ${whichapr})
SET_PROPERTY(TARGET mod_test APPEND PROPERTY LINK_FLAGS /export:print_hello)
# nasty work-around for difficulties adding more than one additional flag
# (they get joined in a bad way behind the scenes)
@@ -344,9 +398,6 @@
GET_PROPERTY(link_flags TARGET mod_test PROPERTY LINK_FLAGS)
SET(link_flags "${link_flags} /export:count_reps")
SET_TARGET_PROPERTIES(mod_test PROPERTIES LINK_FLAGS ${link_flags})
- IF(apiflag)
- SET_TARGET_PROPERTIES(mod_test PROPERTIES COMPILE_FLAGS ${apiflag})
- ENDIF()

# Build all the single-source executable files with no special build
# requirements.
@@ -370,11 +421,10 @@
FOREACH(sourcefile ${single_source_programs})
STRING(REGEX REPLACE ".*/([^\\]+)\\.c" "\\1" proggie ${sourcefile})
ADD_EXECUTABLE(${proggie} ${sourcefile})
- TARGET_LINK_LIBRARIES(${proggie} ${whichapr} ${APR_SYSTEM_LIBS})
+ TARGET_LINK_LIBRARIES(${proggie} ${whichapr})
SET_TARGET_PROPERTIES(${proggie} PROPERTIES COMPILE_DEFINITIONS "BINPATH=$<TARGET_FILE_DIR:${proggie}>")
- IF(apiflag)
- SET_TARGET_PROPERTIES(${proggie} PROPERTIES COMPILE_FLAGS ${apiflag})
- ENDIF()
+
+ ADD_DEPENDENCIES(testall ${proggie})
ENDFOREACH()

# Add tests for programs that run by themselves with no arguments.
@@ -400,13 +450,31 @@
ENDIF (APR_BUILD_TESTAPR)

# Installation
+INCLUDE(CMakePackageConfigHelpers)

-INSTALL(TARGETS ${install_targets}
+string(TOLOWER "${PROJECT_NAME}" project_name_lower)
+
+write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/${project_name_lower}-config-version.cmake"
+ VERSION ${APR_MAJOR_VERSION}.${APR_MINOR_VERSION}.${APR_PATCH_VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+
+INSTALL(TARGETS ${install_targets} EXPORT apr-config
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)

+INSTALL(EXPORT apr-config
+ NAMESPACE apr::
+ DESTINATION "lib/cmake/${project_name_lower}"
+ FILE "${project_name_lower}-config.cmake"
+)
+
+INSTALL(FILES "${CMAKE_CURRENT_BINARY_DIR}/${project_name_lower}-config-version.cmake"
+ DESTINATION "lib/cmake/${project_name_lower}"
+)
+
IF(INSTALL_PDB)
INSTALL(FILES ${install_bin_pdb}
DESTINATION bin
@@ -438,6 +506,8 @@
MESSAGE(STATUS " C compiler ...................... : ${CMAKE_C_COMPILER}")
MESSAGE(STATUS " IPv6 ............................ : ${APR_HAVE_IPV6}")
MESSAGE(STATUS " Minimum Windows version ......... : ${MIN_WINDOWS_VER}")
+MESSAGE(STATUS " Build shared libs ............... : ${APR_BUILD_SHARED}")
+MESSAGE(STATUS " Build static libs ............... : ${APR_BUILD_STATIC}")
MESSAGE(STATUS " Build test suite ................ : ${APR_BUILD_TESTAPR}")
IF(TEST_STATIC_LIBS)
MESSAGE(STATUS " (testing static libraries)")
62 changes: 0 additions & 62 deletions ports/apr/fix-configcmake.patch

This file was deleted.