diff options
Diffstat (limited to 'vcpkg/ports/fmilib')
| -rw-r--r-- | vcpkg/ports/fmilib/devendor-sublibs.diff | 54 | ||||
| -rw-r--r-- | vcpkg/ports/fmilib/fix-mergestaticlibs.diff | 20 | ||||
| -rw-r--r-- | vcpkg/ports/fmilib/minizip.patch | 52 | ||||
| -rw-r--r-- | vcpkg/ports/fmilib/portfile.cmake | 56 | ||||
| -rw-r--r-- | vcpkg/ports/fmilib/unofficial-export.diff | 23 | ||||
| -rw-r--r-- | vcpkg/ports/fmilib/unofficial-fmilib-config.cmake | 4 | ||||
| -rw-r--r-- | vcpkg/ports/fmilib/vcpkg.json | 21 |
7 files changed, 230 insertions, 0 deletions
diff --git a/vcpkg/ports/fmilib/devendor-sublibs.diff b/vcpkg/ports/fmilib/devendor-sublibs.diff new file mode 100644 index 0000000..8845c35 --- /dev/null +++ b/vcpkg/ports/fmilib/devendor-sublibs.diff @@ -0,0 +1,54 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 690ee5f..2816987 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -230,7 +230,7 @@ configure_file ( + "${FMILibrary_BINARY_DIR}/fmilib_config.h" + ) + +-set(FMILIB_SHARED_SUBLIBS ${FMIXML_LIBRARIES} ${FMIZIP_LIBRARIES} ${FMICAPI_LIBRARIES} expat minizip zlib c99snprintf) ++set(FMILIB_SHARED_SUBLIBS ${FMIXML_LIBRARIES} ${FMIZIP_LIBRARIES} ${FMICAPI_LIBRARIES} minizip c99snprintf) + set(FMILIB_SUBLIBS ${FMIIMPORT_LIBRARIES} ${JMUTIL_LIBRARIES} ${FMILIB_SHARED_SUBLIBS}) + set(FMILIB_SHARED_SRC ${FMIIMPORTSOURCE} ${JMUTILSOURCE} ${FMIIMPORTHEADERS}) + +diff --git a/Config.cmake/fmixml.cmake b/Config.cmake/fmixml.cmake +index ddd3c1f..3bafac3 100644 +--- a/Config.cmake/fmixml.cmake ++++ b/Config.cmake/fmixml.cmake +@@ -137,6 +137,7 @@ set(FMIXMLSOURCE + src/FMI2/fmi2_xml_variable.c + ) + ++if(0) + include(ExternalProject) + + # The *_POSTFIX variables are set because it makes it easier to determine the name of +@@ -211,7 +212,10 @@ if(FMILIB_INSTALL_SUBLIBS) + DESTINATION lib) + endif() + ++endif(0) + set(EXPAT_INCLUDE_DIRS ${CMAKE_BINARY_DIR}/ExpatEx/install/include) ++find_package(expat CONFIG REQUIRED) ++add_library(expat ALIAS expat::expat) + + include_directories("${EXPAT_INCLUDE_DIRS}" "${FMILIB_THIRDPARTYLIBS}/FMI/" "${FMIXMLGENDIR}/FMI1" "${FMIXMLGENDIR}/FMI2") + +diff --git a/Config.cmake/fmizip.cmake b/Config.cmake/fmizip.cmake +index c046d47..50e82b3 100644 +--- a/Config.cmake/fmizip.cmake ++++ b/Config.cmake/fmizip.cmake +@@ -20,7 +20,12 @@ if(NOT FMIZIPDIR) + + set(FMIZIP_LIBRARIES fmizip) + +- add_subdirectory(Config.cmake/Minizip) ++ add_library(minizip OBJECT ++ "${FMILIB_THIRDPARTYLIBS}/Minizip/minizip/miniunz.c" ++ "${FMILIB_THIRDPARTYLIBS}/Minizip/minizip/minizip.c" ++ ) ++ find_package(unofficial-minizip CONFIG REQUIRED) ++ target_link_libraries(minizip PRIVATE unofficial::minizip::minizip) + + include_directories("${FMIZIPDIR}/include" "${FMILIB_THIRDPARTYLIBS}/Minizip/minizip" "${FMILIB_THIRDPARTYLIBS}/FMI" "${FMILIB_THIRDPARTYLIBS}/Zlib/zlib-1.2.6" "${FMILibrary_BINARY_DIR}/zlib") + diff --git a/vcpkg/ports/fmilib/fix-mergestaticlibs.diff b/vcpkg/ports/fmilib/fix-mergestaticlibs.diff new file mode 100644 index 0000000..05fbcc4 --- /dev/null +++ b/vcpkg/ports/fmilib/fix-mergestaticlibs.diff @@ -0,0 +1,20 @@ +diff --git a/Config.cmake/mergestaticlibs.cmake b/Config.cmake/mergestaticlibs.cmake +index 858a026..67eccb7 100644 +--- a/Config.cmake/mergestaticlibs.cmake ++++ b/Config.cmake/mergestaticlibs.cmake +@@ -21,6 +21,15 @@ function(merge_static_libs outlib ) + file(WRITE ${dummyfile} "const char * dummy = \"${dummyfile}\";") + + add_library(${outlib} STATIC ${dummyfile}) ++ foreach(lib IN LISTS libs) ++ target_sources(${outlib} PRIVATE "$<TARGET_OBJECTS:${lib}>") ++ get_target_property(link_libs ${lib} INTERFACE_LINK_LIBRARIES) ++ if(link_libs) ++ list(REMOVE_ITEM link_libs ${libs}) ++ target_link_libraries(${outlib} ${link_libs}) ++ endif() ++ endforeach() ++ return() + + if("${CMAKE_CFG_INTDIR}" STREQUAL ".") + set(multiconfig FALSE) diff --git a/vcpkg/ports/fmilib/minizip.patch b/vcpkg/ports/fmilib/minizip.patch new file mode 100644 index 0000000..abd3ec1 --- /dev/null +++ b/vcpkg/ports/fmilib/minizip.patch @@ -0,0 +1,52 @@ +diff --git a/ThirdParty/Minizip/minizip/miniunz.c b/ThirdParty/Minizip/minizip/miniunz.c +index 1931161..d7a8be1 100644 +--- a/ThirdParty/Minizip/minizip/miniunz.c ++++ b/ThirdParty/Minizip/minizip/miniunz.c +@@ -45,6 +45,7 @@ + #include <time.h> + #include <errno.h> + #include <fcntl.h> ++#include <sys/stat.h> + #include <stdarg.h> + + #ifdef _WIN32 +@@ -107,7 +108,7 @@ void change_file_date(filename,dosdate,tmu_date) + SetFileTime(hFile,&ftm,&ftLastAcc,&ftm); + CloseHandle(hFile); + #else +-#ifdef unix || __APPLE__ ++#if defined(unix) || defined(__APPLE__) + struct utimbuf ut; + struct tm newdate; + newdate.tm_sec = tmu_date.tm_sec; +@@ -137,7 +138,7 @@ int mymkdir(dirname) + int ret=0; + #ifdef _WIN32 + ret = _mkdir(dirname); +-#elif unix ++#elif 1 + ret = mkdir (dirname,0775); + #elif __APPLE__ + ret = mkdir (dirname,0775); +diff --git a/ThirdParty/Minizip/minizip/minizip.c b/ThirdParty/Minizip/minizip/minizip.c +index e22f80d..548b6ca 100644 +--- a/ThirdParty/Minizip/minizip/minizip.c ++++ b/ThirdParty/Minizip/minizip/minizip.c +@@ -101,7 +101,7 @@ uLong filetime(f, tmzip, dt) + return ret; + } + #else +-#ifdef unix || __APPLE__ ++#if defined(unix) || defined(__APPLE__) + uLong filetime(f, tmzip, dt) + char *f; /* name of file to get info on */ + tm_zip *tmzip; /* return value: access, modific. and creation times */ +@@ -453,7 +453,7 @@ int minizip(argc,argv) + } + if( lastslash != NULL ) + { +- savefilenameinzip = lastslash+1; // base filename follows last slash. ++ savefilenameinzip = lastslash+1; + } + } + diff --git a/vcpkg/ports/fmilib/portfile.cmake b/vcpkg/ports/fmilib/portfile.cmake new file mode 100644 index 0000000..7556110 --- /dev/null +++ b/vcpkg/ports/fmilib/portfile.cmake @@ -0,0 +1,56 @@ +vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO modelon-community/fmi-library
+ REF "${VERSION}"
+ SHA512 65c2dc11116737e4e2ee91a4ec58d2cf24003774fd6d9b8b1d6521f046be9e8f8a963ebedb50a161ad264927062f41ce757c84563cfe628d47614910e8730349
+ HEAD_REF master
+ PATCHES
+ devendor-sublibs.diff
+ minizip.patch
+ fix-mergestaticlibs.diff
+ unofficial-export.diff
+)
+
+file(GLOB vendored_minizip "${SOURCE_PATH}/ThirdParty/Minizip/minizip/*")
+list(FILTER vendored_minizip EXCLUDE REGEX "/minizip.[ch]\$|/miniunz.[ch]\$")
+file(REMOVE_RECURSE
+ ${vendored_minizip}
+ "${SOURCE_PATH}/ThirdParty/Expat"
+ "${SOURCE_PATH}/ThirdParty/Zlib"
+)
+
+string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" FMILIB_BUILD_WITH_STATIC_RTLIB)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BUILD_STATIC)
+string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "dynamic" BUILD_SHARED)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -Wno-dev
+ -DFMILIB_BUILD_TESTS=OFF
+ -DFMILIB_BUILD_STATIC_LIB=${BUILD_STATIC}
+ -DFMILIB_BUILD_SHARED_LIB=${BUILD_SHARED}
+ -DFMILIB_BUILD_WITH_STATIC_RTLIB=${FMILIB_BUILD_WITH_STATIC_RTLIB}
+ -DFMILIB_GENERATE_DOXYGEN_DOC=OFF
+ OPTIONS_DEBUG
+ "-DFMILIB_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}/debug"
+ OPTIONS_RELEASE
+ "-DFMILIB_INSTALL_PREFIX=${CURRENT_PACKAGES_DIR}"
+ MAYBE_UNUSED_VARIABLES
+ FMILIB_BUILD_WITH_STATIC_RTLIB
+)
+
+vcpkg_cmake_install()
+vcpkg_copy_pdbs()
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/unofficial-fmilib-config.cmake" DESTINATION "${CURRENT_PACKAGES_DIR}/share/unofficial-fmilib")
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-fmilib)
+
+file(REMOVE_RECURSE
+ "${CURRENT_PACKAGES_DIR}/debug/include"
+ "${CURRENT_PACKAGES_DIR}/debug/doc"
+ "${CURRENT_PACKAGES_DIR}/doc"
+)
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.md")
diff --git a/vcpkg/ports/fmilib/unofficial-export.diff b/vcpkg/ports/fmilib/unofficial-export.diff new file mode 100644 index 0000000..f621e18 --- /dev/null +++ b/vcpkg/ports/fmilib/unofficial-export.diff @@ -0,0 +1,23 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 583e15b..0319e3a 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -300,10 +300,17 @@ endif() + + file(COPY "${FMILIBRARYHOME}/Config.cmake/fmilib.h" DESTINATION "${FMILibrary_BINARY_DIR}") + ++target_include_directories(${FMILIB_TARGETS} INTERFACE $<INSTALL_INTERFACE:include>) + install(TARGETS ${FMILIB_TARGETS} ++ EXPORT unofficial-fmilib-targets + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib +- RUNTIME DESTINATION lib ++ RUNTIME DESTINATION bin ++) ++install(EXPORT unofficial-fmilib-targets ++ FILE unofficial-fmilib-targets.cmake ++ NAMESPACE unofficial::fmilib:: ++ DESTINATION share/unofficial-fmilib + ) + install(FILES + "${FMILIBRARYHOME}/FMILIB_Readme.txt" diff --git a/vcpkg/ports/fmilib/unofficial-fmilib-config.cmake b/vcpkg/ports/fmilib/unofficial-fmilib-config.cmake new file mode 100644 index 0000000..3ad246e --- /dev/null +++ b/vcpkg/ports/fmilib/unofficial-fmilib-config.cmake @@ -0,0 +1,4 @@ +include(CMakeFindDependencyMacro) +find_dependency(expat CONFIG) +find_dependency(unofficial-minizip CONFIG) +include("${CMAKE_CURRENT_LIST_DIR}/unofficial-fmilib-targets.cmake") diff --git a/vcpkg/ports/fmilib/vcpkg.json b/vcpkg/ports/fmilib/vcpkg.json new file mode 100644 index 0000000..55a9744 --- /dev/null +++ b/vcpkg/ports/fmilib/vcpkg.json @@ -0,0 +1,21 @@ +{ + "name": "fmilib", + "version": "2.4.1", + "port-version": 2, + "description": "FMI library is intended as a foundation for applications interfacing FMUs (Functional Mockup Units) that follow FMI Standard. This version of the library supports FMI 1.0 and FMI2.0.", + "homepage": "https://www.fmi-standard.org/", + "license": "BSD-3-Clause", + "supports": "!uwp", + "dependencies": [ + "expat", + "minizip", + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |