[pxlib] add new port (#49362)

Co-authored-by: Nick D'Ademo <dademo.n@duerr-ndt.com>
This commit is contained in:
Nick D'Ademo
2026-01-14 03:28:48 +08:00
committed by GitHub
parent 2996a1b051
commit bb1ad44ed8
6 changed files with 180 additions and 0 deletions

View File

@@ -0,0 +1,97 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0b2af5c..c112347 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,6 +4,8 @@ project(pxlib)
option(ENABLE_GSF "Build with gsf support" OFF)
+include(GNUInstallDirs)
+
if(CMAKE_COMPILER_IS_GNUCC)
add_definitions(
-DHAVE_CONFIG_H
@@ -101,7 +103,6 @@ set(SOURCES
)
add_definitions(-D_CRT_SECURE_NO_DEPRECATE)
-add_definitions(-DPXLIB_EXPORTS)
# Versioning
set(PXLIB_MAJOR_VERSION "0")
@@ -135,7 +136,16 @@ if(WIN32)
configure_file(${CMAKE_SOURCE_DIR}/pxlib.rc.in ${CMAKE_BINARY_DIR}/pxlib.rc)
endif()
-add_library(pxlib SHARED ${SOURCES})
+add_library(pxlib ${SOURCES})
+
+if(WIN32 AND BUILD_SHARED_LIBS)
+ target_compile_definitions(pxlib
+ PRIVATE
+ $<BUILD_INTERFACE:PXLIB_EXPORTS>
+ PUBLIC
+ $<INSTALL_INTERFACE:PXLIB_DLL>
+ )
+endif()
# Add Windows resource file to the library
if(WIN32)
@@ -144,10 +154,41 @@ endif()
target_include_directories(pxlib
PRIVATE ${CMAKE_SOURCE_DIR}/include ${CMAKE_BINARY_DIR}
- PUBLIC ${CMAKE_BINARY_DIR}/include
+ PUBLIC
+ $<BUILD_INTERFACE:${CMAKE_BINARY_DIR}/include>
+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
# Link iconv library if needed
if(ICONV_LIBRARIES)
target_link_libraries(pxlib PRIVATE ${ICONV_LIBRARIES})
-endif()
\ No newline at end of file
+endif()
+
+include(CMakePackageConfigHelpers)
+write_basic_package_version_file(
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-pxlib-version.cmake"
+ VERSION ${PXLIB_DOTTED_VERSION}
+ COMPATIBILITY SameMajorVersion
+)
+configure_package_config_file(
+ "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules/unofficial-pxlib-config.cmake.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-pxlib-config.cmake"
+ INSTALL_DESTINATION share/unofficial-pxlib
+)
+install(TARGETS pxlib
+ EXPORT PxLibTargets
+ RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
+ LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+ ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
+)
+install(EXPORT PxLibTargets
+ FILE unofficial-pxlib-targets.cmake
+ NAMESPACE unofficial::pxlib::
+ DESTINATION share/unofficial-pxlib
+)
+install(FILES
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-pxlib-config.cmake"
+ "${CMAKE_CURRENT_BINARY_DIR}/unofficial-pxlib-version.cmake"
+ DESTINATION share/unofficial-pxlib
+)
+install(FILES ${CMAKE_BINARY_DIR}/include/paradox.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
\ No newline at end of file
diff --git a/cmake/modules/unofficial-pxlib-config.cmake.in b/cmake/modules/unofficial-pxlib-config.cmake.in
new file mode 100644
index 0000000..1966348
--- /dev/null
+++ b/cmake/modules/unofficial-pxlib-config.cmake.in
@@ -0,0 +1,5 @@
+@PACKAGE_INIT@
+
+include(${CMAKE_CURRENT_LIST_DIR}/unofficial-pxlib-targets.cmake)
+
+check_required_components(unofficial-pxlib)
\ No newline at end of file

View File

@@ -0,0 +1,27 @@
diff --git a/include/paradox.h.in b/include/paradox.h.in
index 3e63fa3..ec2237b 100644
--- a/include/paradox.h.in
+++ b/include/paradox.h.in
@@ -1,6 +1,11 @@
#ifndef __PARADOX_H__
#define __PARADOX_H__
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
#define PX_USE_RECODE @PX_HAVE_RECODE@
#define PX_USE_ICONV @PX_HAVE_ICONV@
@@ -557,6 +562,10 @@ PX_date2string(pxdoc_t *pxdoc, long value, const char *format);
PXLIB_API char * PXLIB_CALL
PX_strdup(pxdoc_t *pxdoc, const char *str);
+#ifdef __cplusplus
+}
+#endif
+
#endif
/*

View File

@@ -0,0 +1,26 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO steinm/pxlib
REF cd65ac2255a02612a9b2c25bf4f17684ab391d38
SHA512 c113cf00b876ce4ec28d97b11fb4ace16a6798756fbcb398d0f5a54064cbe03834610925890463356d9ae16514717b4637fa2a87a8f2504ed13703ecd4ce64da
HEAD_REF master
PATCHES
add_cmake_config.patch
add_extern_c.patch
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DENABLE_GSF=OFF
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-pxlib)
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")

17
ports/pxlib/vcpkg.json Normal file
View File

@@ -0,0 +1,17 @@
{
"name": "pxlib",
"version-date": "2025-12-16",
"description": "Library to read and write Paradox files",
"homepage": "https://github.com/steinm/pxlib",
"license": "GPL-2.0-only",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View File

@@ -7868,6 +7868,10 @@
"baseline": "0.9.18",
"port-version": 0
},
"pxlib": {
"baseline": "2025-12-16",
"port-version": 0
},
"pybind11": {
"baseline": "3.0.1",
"port-version": 0

9
versions/p-/pxlib.json Normal file
View File

@@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "ddcb41f51c9979a88cbe574679b7bdac6eaaf509",
"version-date": "2025-12-16",
"port-version": 0
}
]
}