mirror of
https://github.com/openbsd/ports.git
synced 2026-06-17 23:13:55 +02:00
Unbreak with kf6 6.19 and upcoming cmake4
This commit is contained in:
@@ -2,7 +2,7 @@ COMMENT = database connectivity and creation framework
|
||||
|
||||
VERSION = 3.2.0
|
||||
DISTNAME = kdb-${VERSION}
|
||||
REVISION = 5
|
||||
REVISION = 6
|
||||
|
||||
SHARED_LIBS += KDb3 1.1 # 3.0
|
||||
|
||||
@@ -40,4 +40,7 @@ LIB_DEPENDS = devel/kf5/kcoreaddons \
|
||||
CONFIGURE_ARGS += -DBUILD_TESTING=On \
|
||||
-DBUILD_EXAMPLES=On
|
||||
|
||||
|
||||
CONFIGURE_ARGS += -DCMAKE_POLICY_VERSION_MINIMUM=3.5
|
||||
|
||||
.include <bsd.port.mk>
|
||||
|
||||
@@ -3,7 +3,12 @@ Fix build with icu >=75
|
||||
Index: CMakeLists.txt
|
||||
--- CMakeLists.txt.orig
|
||||
+++ CMakeLists.txt
|
||||
@@ -5,6 +5,8 @@ include(SetKDbCMakePolicies NO_POLICY_SCOPE)
|
||||
@@ -1,10 +1,12 @@
|
||||
-cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
|
||||
+cmake_minimum_required(VERSION 3.16)
|
||||
find_package(ECM 1.8.0 REQUIRED NO_MODULE)
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/modules ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
|
||||
include(SetKDbCMakePolicies NO_POLICY_SCOPE)
|
||||
|
||||
project(KDb VERSION 3.2.0) # Update this
|
||||
|
||||
@@ -12,3 +17,9 @@ Index: CMakeLists.txt
|
||||
include(KDbAddTests)
|
||||
include(KDbAddExamples)
|
||||
kdb_add_tests(OFF)
|
||||
@@ -61,4 +63,4 @@ if (IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/po")
|
||||
ecm_install_po_files_as_qm(po)
|
||||
endif()
|
||||
|
||||
-feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
|
||||
+feature_summary(WHAT ALL)
|
||||
|
||||
@@ -0,0 +1,110 @@
|
||||
Index: cmake/modules/KDbCreateSharedDataClasses.cmake
|
||||
--- cmake/modules/KDbCreateSharedDataClasses.cmake.orig
|
||||
+++ cmake/modules/KDbCreateSharedDataClasses.cmake
|
||||
@@ -16,54 +16,87 @@
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
|
||||
macro(KDB_CREATE_SHARED_DATA_CLASSES)
|
||||
- # message(STATUS "KDB_CREATE_SHARED_DATA_CLASSES ARGV: ${ARGV}")
|
||||
set(_args "")
|
||||
list(APPEND _args ${ARGV})
|
||||
list(GET _args 0 OUTPUT_VAR)
|
||||
list(GET _args 1 PREFIX)
|
||||
list(REMOVE_AT _args 0 1)
|
||||
- # message(STATUS "OUTPUT_VAR: ${OUTPUT_VAR} ${_args}")
|
||||
- find_package(PythonInterp 2.6)
|
||||
- set_package_properties(PythonInterp PROPERTIES DESCRIPTION "Python language interpreter"
|
||||
- URL "https://www.python.org" TYPE REQUIRED
|
||||
- PURPOSE "Required by the Shared Data Classes (SDC) tool")
|
||||
+
|
||||
+ # Find Python 3 interpreter (required)
|
||||
+ if(NOT Python3_EXECUTABLE)
|
||||
+ find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
+ endif()
|
||||
+
|
||||
+ set_package_properties(Python3 PROPERTIES
|
||||
+ DESCRIPTION "Python 3 language interpreter"
|
||||
+ URL "https://www.python.org"
|
||||
+ TYPE REQUIRED
|
||||
+ PURPOSE "Required by the Shared Data Classes (SDC) tool"
|
||||
+ )
|
||||
+
|
||||
+ # Collect all output files to create a dependency target
|
||||
+ set(_all_outputs "")
|
||||
+
|
||||
foreach(_input ${_args})
|
||||
get_filename_component(INPUT ${_input} ABSOLUTE)
|
||||
string(REGEX REPLACE "\\.shared\\.h" ".h" OUTPUT ${_input})
|
||||
string(REGEX REPLACE ".*/([^/]+)\\.h" "\\1.h" OUTPUT ${OUTPUT})
|
||||
- #MESSAGE(DEBUG "--------- ${_input} ${OUTPUT} ${INPUT}")
|
||||
- #MESSAGE(DEBUG "COMMAND python2 ${CMAKE_SOURCE_DIR}/tools/sdc.py ${INPUT} ${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT}")
|
||||
- message(STATUS "Creating shared data class in ${OUTPUT} from ${_input}")
|
||||
+
|
||||
+ # Determine output directory based on PREFIX parameter
|
||||
if(${PREFIX} STREQUAL "NO_PREFIX")
|
||||
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR})
|
||||
else()
|
||||
set(OUTPUT_DIR ${CMAKE_CURRENT_BINARY_DIR}/${PREFIX})
|
||||
set(OUTPUT "${PREFIX}/${OUTPUT}")
|
||||
endif()
|
||||
- # message(STATUS "OUTPUT_DIR: ${OUTPUT_DIR} ${PREFIX}")
|
||||
+
|
||||
+ # Ensure output directory exists
|
||||
file(MAKE_DIRECTORY ${OUTPUT_DIR})
|
||||
- execute_process(
|
||||
- COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/sdc.py
|
||||
- ${INPUT}
|
||||
- ${OUTPUT_DIR}/${OUTPUT}
|
||||
+
|
||||
+ set(FULL_OUTPUT_PATH "${OUTPUT_DIR}/${OUTPUT}")
|
||||
+
|
||||
+ message(STATUS "Will create shared data class: ${OUTPUT} from ${_input}")
|
||||
+
|
||||
+ # Use add_custom_command instead of execute_process
|
||||
+ # This generates headers at build-time, not at configure-time
|
||||
+ # This ensures proper dependency tracking by the build system
|
||||
+ add_custom_command(
|
||||
+ OUTPUT "${FULL_OUTPUT_PATH}"
|
||||
+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_SOURCE_DIR}/tools/sdc.py
|
||||
+ ${INPUT}
|
||||
+ ${FULL_OUTPUT_PATH}
|
||||
+ DEPENDS ${INPUT} ${CMAKE_SOURCE_DIR}/tools/sdc.py
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
|
||||
- RESULT_VARIABLE KDB_CREATE_SHARED_DATA_CLASSES_RESULT
|
||||
+ COMMENT "Generating shared data class ${OUTPUT}"
|
||||
+ VERBATIM
|
||||
)
|
||||
- # MESSAGE(STATUS "...result: ${KDB_CREATE_SHARED_DATA_CLASSES_RESULT}")
|
||||
+
|
||||
+ # Add to output variable (relative path for install rules)
|
||||
list(APPEND ${OUTPUT_VAR} "${OUTPUT}")
|
||||
+ # Add to internal list (full path for dependency tracking)
|
||||
+ list(APPEND _all_outputs "${FULL_OUTPUT_PATH}")
|
||||
endforeach(_input)
|
||||
+
|
||||
+ # Create a custom target that depends on all generated files
|
||||
+ # This target can be used as a dependency by other targets
|
||||
+ add_custom_target(_shared_classes ALL
|
||||
+ DEPENDS ${_all_outputs}
|
||||
+ COMMENT "Generating all shared data classes"
|
||||
+ )
|
||||
+
|
||||
endmacro(KDB_CREATE_SHARED_DATA_CLASSES)
|
||||
|
||||
macro(KDB_REMOVE_EXTENSIONS)
|
||||
- # message(STATUS "KDB_REMOVE_EXTENSIONS ARGV: ${ARGV}")
|
||||
+ # Remove .h extensions from a list of header file names
|
||||
+ # First argument is the output variable name
|
||||
+ # Remaining arguments are input file names
|
||||
set(_args "")
|
||||
list(APPEND _args ${ARGV})
|
||||
list(GET _args 0 OUTPUT_VAR)
|
||||
list(REMOVE_AT _args 0)
|
||||
- # message(STATUS "OUTPUT_VAR: ${OUTPUT_VAR} ${_args}")
|
||||
+
|
||||
foreach(_input ${_args})
|
||||
string(REGEX REPLACE "\\.h" "" OUTPUT ${_input})
|
||||
- # message(STATUS "...result: ${OUTPUT}")
|
||||
list(APPEND ${OUTPUT_VAR} "${OUTPUT}")
|
||||
endforeach(_input)
|
||||
endmacro(KDB_REMOVE_EXTENSIONS)
|
||||
@@ -0,0 +1,13 @@
|
||||
Index: cmake/modules/SetKDbCMakePolicies.cmake
|
||||
--- cmake/modules/SetKDbCMakePolicies.cmake.orig
|
||||
+++ cmake/modules/SetKDbCMakePolicies.cmake
|
||||
@@ -8,9 +8,6 @@ cmake_policy(SET CMP0048 NEW) # for PROJECT_VERSION
|
||||
cmake_policy(SET CMP0053 NEW) # TODO remove, temporary fix for a bug in Qt 5.8's Qt5ModuleLocation.cmake
|
||||
# "Simplify variable reference and escape sequence evaluation"
|
||||
|
||||
-if(POLICY CMP0059) # Don’t treat DEFINITIONS as a built-in directory property.
|
||||
- cmake_policy(SET CMP0059 OLD)
|
||||
-endif()
|
||||
if(POLICY CMP0063) # Honor visibility properties for all target types (since cmake 3.3)
|
||||
cmake_policy(SET CMP0063 NEW)
|
||||
endif()
|
||||
@@ -0,0 +1,45 @@
|
||||
Index: src/CMakeLists.txt
|
||||
--- src/CMakeLists.txt.orig
|
||||
+++ src/CMakeLists.txt
|
||||
@@ -172,6 +172,10 @@ ecm_create_qm_loader(kdb_LIB_SRCS kdb_qt)
|
||||
add_library(KDb SHARED ${kdb_LIB_SRCS})
|
||||
set_coinstallable_lib_version(KDb)
|
||||
|
||||
+if(TARGET _shared_classes)
|
||||
+ add_dependencies(KDb _shared_classes)
|
||||
+endif()
|
||||
+
|
||||
kdb_create_shared_data_classes(
|
||||
kdb_GENERATED_SHARED_DATA_CLASS_HEADERS # output variable with list of headers
|
||||
NO_PREFIX # subdirectory in which the headers should be generated
|
||||
@@ -399,13 +403,23 @@ ecm_generate_headers(kdb_FORWARDING_HEADERS
|
||||
|
||||
#message(STATUS "%% ${kdb_GENERATED_SHARED_DATA_CLASS_BASENAMES}")
|
||||
|
||||
-ecm_generate_headers(kdb_FORWARDING_HEADERS_FROM_BUILDDIR
|
||||
- REQUIRED_HEADERS kdb_HEADERS_FROM_BUILDDIR
|
||||
- ORIGINAL CAMELCASE
|
||||
- SOURCE_DIR ${PROJECT_BINARY_DIR}/src
|
||||
- HEADER_NAMES
|
||||
- ${kdb_GENERATED_SHARED_DATA_CLASS_BASENAMES}
|
||||
-)
|
||||
+set(kdb_FORWARDING_HEADERS_FROM_BUILDDIR "")
|
||||
+set(kdb_HEADERS_FROM_BUILDDIR "")
|
||||
+
|
||||
+foreach(header ${kdb_GENERATED_SHARED_DATA_CLASS_HEADERS})
|
||||
+ # header enthält bereits den relativen Pfad (z.B. "KDbConnectionData.h")
|
||||
+ set(FULL_PATH "${CMAKE_CURRENT_BINARY_DIR}/${header}")
|
||||
+
|
||||
+ # Extrahiere Basename ohne .h
|
||||
+ string(REGEX REPLACE "\\.h$" "" basename "${header}")
|
||||
+
|
||||
+ # CamelCase Forwarding Header (ohne .h Extension)
|
||||
+ set(FORWARDING_HEADER "${CMAKE_CURRENT_BINARY_DIR}/${basename}")
|
||||
+ file(WRITE "${FORWARDING_HEADER}" "#include \"${header}\"\n")
|
||||
+
|
||||
+ list(APPEND kdb_FORWARDING_HEADERS_FROM_BUILDDIR "${FORWARDING_HEADER}")
|
||||
+ list(APPEND kdb_HEADERS_FROM_BUILDDIR "${FULL_PATH}")
|
||||
+endforeach()
|
||||
|
||||
#message(STATUS "%%kdb_HEADERS_FROM_BUILDDIR ${kdb_HEADERS_FROM_BUILDDIR}")
|
||||
|
||||
Reference in New Issue
Block a user