diff --git a/ports/coin-or-ipopt/portfile.cmake b/ports/coin-or-ipopt/portfile.cmake index 17a6370369..2aee91a785 100644 --- a/ports/coin-or-ipopt/portfile.cmake +++ b/ports/coin-or-ipopt/portfile.cmake @@ -13,9 +13,9 @@ file(COPY "${CURRENT_INSTALLED_DIR}/share/coin-or-buildtools/" DESTINATION "${SO set(ENV{ACLOCAL} "aclocal -I \"${SOURCE_PATH}/BuildTools\"") -vcpkg_configure_make( +vcpkg_make_configure( SOURCE_PATH "${SOURCE_PATH}" - AUTOCONFIG + AUTORECONF OPTIONS #--with-pardiso --without-spral @@ -29,11 +29,11 @@ vcpkg_configure_make( --disable-java ) -vcpkg_install_make() +vcpkg_make_install() vcpkg_copy_pdbs() vcpkg_fixup_pkgconfig() file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share") -file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") diff --git a/ports/coin-or-ipopt/vcpkg.json b/ports/coin-or-ipopt/vcpkg.json index d3a9d58f39..cf2ec19197 100644 --- a/ports/coin-or-ipopt/vcpkg.json +++ b/ports/coin-or-ipopt/vcpkg.json @@ -1,11 +1,16 @@ { "name": "coin-or-ipopt", "version-date": "2023-02-01", + "port-version": 1, "description": "Ipopt (Interior Point OPTimizer, pronounced eye-pea-Opt) is a software package for large-scale nonlinear optimization", "homepage": "https://github.com/coin-or/Ipopt", "license": "EPL-2.0", "dependencies": [ "coinutils", - "intel-mkl" + "lapack", + { + "name": "vcpkg-make", + "host": true + } ] } diff --git a/ports/lapack/lapack.pc.in b/ports/lapack/lapack.pc.in index 0551230585..2ef4a8ac27 100644 --- a/ports/lapack/lapack.pc.in +++ b/ports/lapack/lapack.pc.in @@ -3,7 +3,7 @@ libdir=${prefix}/lib Name: LAPACK Description: Implementation of LAPACK -Version: -Requires: @requires@ -Libs: @libs@ -Cflags: @cflags@ +Version: 0 +Requires: @pc_requires@ +Libs: @pc_libs@ +Cflags: @pc_cflags@ diff --git a/ports/lapack/portfile.cmake b/ports/lapack/portfile.cmake index 67fbc67f51..bbdd00ce93 100644 --- a/ports/lapack/portfile.cmake +++ b/ports/lapack/portfile.cmake @@ -1,22 +1,21 @@ SET(VCPKG_POLICY_EMPTY_PACKAGE enabled) -if(VCPKG_LIBRARY_LINKAGE STREQUAL "static") - set(BLA_STATIC ON) -else() - set(BLA_STATIC OFF) -endif() +string(COMPARE EQUAL "${VCPKG_LIBRARY_LINKAGE}" "static" BLA_STATIC) # See explanation of which lapack implementation is chosen in portfile.cmake in the blas port set(BLA_VENDOR Generic) set(installed_wrapper "${CURRENT_INSTALLED_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake") set(installed_module "${CURRENT_INSTALLED_DIR}/share/lapack/FindLAPACK.cmake") +set(pc_requires "") +set(pc_libs "") +set(pc_cflags "") if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) # Use Apple's accelerate framework where available set(BLA_VENDOR Apple) configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" @ONLY) - set(libs "-framework Accelerate") - set(cflags "-framework Accelerate") + set(pc_libs "-framework Accelerate") + set(pc_cflags "-framework Accelerate") configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" @ONLY) if(NOT VCPKG_BUILD_TYPE) configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) @@ -25,19 +24,28 @@ if(VCPKG_TARGET_IS_OSX OR VCPKG_TARGET_IS_IOS) elseif(VCPKG_TARGET_IS_UWP OR (VCPKG_TARGET_IS_WINDOWS AND VCPKG_TARGET_ARCHITECTURE MATCHES "arm") OR (VCPKG_TARGET_IS_WINDOWS AND VCPKG_LIBRARY_LINKAGE STREQUAL "static" AND NOT VCPKG_TARGET_IS_MINGW)) + # Use clapack configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/wrapper/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/clapack/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) - set(libs "-llapack -llibf2c") + set(pc_libs "-L\${libdir} -llapack") + if(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW) + string(APPEND pc_libs " -llibf2c") + else() + string(APPEND pc_libs " -lf2c") + endif() + set(pc_requires "blas") configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" @ONLY) if(NOT VCPKG_BUILD_TYPE) configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) endif() else() + # Use lapack-reference configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/wrapper/vcpkg-cmake-wrapper.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/vcpkg-cmake-wrapper.cmake" COPYONLY) configure_file("${CURRENT_INSTALLED_DIR}/share/lapack-reference/FindLAPACK.cmake" "${CURRENT_PACKAGES_DIR}/share/lapack/FindLAPACK.cmake" COPYONLY) - set(requires "lapack-reference") + set(pc_requires "lapack-reference") configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/lapack.pc" @ONLY) if(NOT VCPKG_BUILD_TYPE) configure_file("${CMAKE_CURRENT_LIST_DIR}/lapack.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/lapack.pc" @ONLY) endif() endif() +vcpkg_fixup_pkgconfig() diff --git a/ports/lapack/vcpkg.json b/ports/lapack/vcpkg.json index beeaff214c..82f5210cd3 100644 --- a/ports/lapack/vcpkg.json +++ b/ports/lapack/vcpkg.json @@ -2,7 +2,7 @@ "$comment": "Keep the platform expressions in sync with the wrappers installed by the portfiles!", "name": "lapack", "version-date": "2023-06-10", - "port-version": 3, + "port-version": 4, "description": "Metapackage for packages which provide LAPACK", "license": null, "supports": "!android", diff --git a/scripts/ci.baseline.txt b/scripts/ci.baseline.txt index cd31658b8a..c75c1e8305 100644 --- a/scripts/ci.baseline.txt +++ b/scripts/ci.baseline.txt @@ -92,9 +92,10 @@ chronoengine:arm64-linux=fail clamav:arm64-windows=fail clapack:arm-neon-android=skip # These skips/pass need to match the decision tree for which backends we use; see ports/blas/portfile.cmake clapack:arm64-android=skip +clapack:arm64-linux=skip clapack:arm64-osx=skip clapack:arm64-windows-static-md=pass -clapack:arm64-windows-static=pass +clapack:arm64-windows=pass clapack:x64-android=skip clapack:x64-linux=skip clapack:x64-windows-release=skip @@ -114,8 +115,6 @@ clockutils:x64-android=fail clrng:arm-neon-android=fail cmake:arm64-linux=fail coin:arm64-linux=fail -coin-or-ipopt:x64-windows-static-md=fail -coin-or-ipopt:x64-windows-static=fail coroutine:arm-neon-android=fail coroutine:arm64-android=fail coroutine:arm64-osx=fail @@ -221,6 +220,7 @@ gegl:arm64-osx=fail gemmlowp:arm-neon-android=fail gemmlowp:arm64-android=fail gemmlowp:x64-android=fail +geogram:arm64-linux=fail gherkin-c:arm-neon-android=fail gherkin-c:arm64-android=fail gherkin-c:arm64-windows-static-md=skip # Conflicts with libevent @@ -271,6 +271,7 @@ hwloc:x64-android=fail iceoryx:arm-neon-android=fail iceoryx:arm64-android=fail iceoryx:x64-android=fail +igraph:arm64-linux=fail ijg-libjpeg:arm64-linux=skip imcce-openfa:arm64-linux=fail isal:x64-android=fail @@ -300,12 +301,17 @@ kfr:arm64-linux=fail krb5:arm64-linux=fail lapack-reference:arm-neon-android=fail # These skips/pass need to match the decision tree for which backends we use; see ports/blas/portfile.cmake lapack-reference:arm64-android=fail +lapack-reference:arm64-linux=pass lapack-reference:arm64-osx=skip lapack-reference:arm64-windows-static-md=skip lapack-reference:arm64-windows=skip lapack-reference:x64-android=fail +lapack-reference:x64-linux=pass +lapack-reference:x64-windows-release=pass lapack-reference:x64-windows-static-md=skip lapack-reference:x64-windows-static=skip +lapack-reference:x64-windows=pass +lapack-reference:x86-windows=pass libaiff:arm64-linux=fail libaiff:x64-linux=fail libcamera:arm64-linux=fail @@ -492,6 +498,7 @@ ntf-core:x64-windows-static-md=fail ntf-core:x64-windows-static=fail ntf-core:x64-windows=fail ntf-core:x86-windows=fail +octave:arm64-linux=fail octave:arm64-osx=fail ogdf:arm64-linux=fail ogre-next:arm-neon-android=fail # std::string issue, https://github.com/microsoft/vcpkg/pull/41293#issuecomment-2942853561 @@ -507,7 +514,6 @@ onnxruntime:x64-linux=fail onnxruntime:x64-windows-release=fail onnxruntime:x64-windows=fail openal-soft:arm64-linux=fail -openblas:arm64-linux=fail openblas:x64-windows-static-md=pass openblas:x64-windows-static=pass opencc:x64-android=fail # opencc/deps/rapidjson-1.1.0/rapidjson.h: Unknown machine endianess detected @@ -670,6 +676,7 @@ tgui:x64-android=fail tinycthread:arm-neon-android=fail tinycthread:arm64-android=fail tinycthread:x64-android=fail +torch-th:arm64-linux=fail torch-th:arm64-windows-static-md=fail torch-th:arm64-windows=fail torch-th:x64-windows-static=fail @@ -784,6 +791,7 @@ vcpkg-ci-arrow:x64-windows=pass vcpkg-ci-aurora-au:arm64-linux=pass vcpkg-ci-aurora-au:x64-linux=pass vcpkg-ci-blas:arm64-android=pass # openblas +vcpkg-ci-blas:arm64-linux=pass # openblas vcpkg-ci-blas:arm64-osx=pass # accelerate framework vcpkg-ci-blas:arm64-windows-static-md=pass # openblas vcpkg-ci-blas:arm64-windows=pass # openblas diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index 70c2080357..cd5e27b2cd 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -203,7 +203,7 @@ coin[openal]:arm64-linux=feature-fails coin-or-cbc:arm64-linux=cascade coin-or-cgl:arm64-linux=cascade coin-or-clp:arm64-linux=cascade -coin-or-ipopt((!windows & !linux) | !x64) = cascade +coin-or-ipopt(android) = cascade coin-or-osi:arm64-linux=cascade coinutils:arm64-linux=cascade colmap:arm64-linux=cascade @@ -577,7 +577,6 @@ kfr[capi](windows)=feature-fails # feature emits DLL even when built static kissfft[openmp]:arm64-osx=feature-fails # No openmp on osx kissfft[tools]:arm64-linux=feature-fails krb5:arm64-linux=fail -lapack:arm64-linux=cascade lapack-reference:arm64-linux=fail lapack-reference:arm64-windows=cascade lapack-reference[blas-select,cblas,noblas]=options # Cannot built feature 'cblas' together with feature 'noblas'. cblas requires blas. diff --git a/scripts/test_ports/vcpkg-ci-coin-or-ipopt/portfile.cmake b/scripts/test_ports/vcpkg-ci-coin-or-ipopt/portfile.cmake new file mode 100644 index 0000000000..4ac1737e29 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-coin-or-ipopt/portfile.cmake @@ -0,0 +1,19 @@ +set(VCPKG_POLICY_EMPTY_PACKAGE enabled) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO coin-or/Ipopt + REF ec43e37a06054246764fb116e50e3e30c9ada089 + SHA512 f5b30e81b4a1a178e9a0e2b51b4832f07441b2c3e9a2aa61a6f07807f94185998e985fcf3c34d96fbfde78f07b69f2e0a0675e1e478a4e668da6da60521e0fd6 + HEAD_REF master +) + +vcpkg_find_acquire_program(PKGCONFIG) +set(ENV{PKG_CONFIG} "${PKGCONFIG}") + +vcpkg_cmake_configure( + SOURCE_PATH "${CURRENT_PORT_DIR}/project" + OPTIONS + "-DIPOPT_PATH=${SOURCE_PATH}" +) +vcpkg_cmake_build() diff --git a/scripts/test_ports/vcpkg-ci-coin-or-ipopt/project/CMakeLists.txt b/scripts/test_ports/vcpkg-ci-coin-or-ipopt/project/CMakeLists.txt new file mode 100644 index 0000000000..dd18b2c036 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-coin-or-ipopt/project/CMakeLists.txt @@ -0,0 +1,11 @@ +cmake_minimum_required(VERSION 3.30) +project(ipopt-test) + +find_package(PkgConfig REQUIRED) +pkg_check_modules(PC_ipopt ipopt IMPORTED_TARGET REQUIRED) + +add_executable(simple-pkgconfig + "${IPOPT_PATH}/examples/Cpp_example/cpp_example.cpp" + "${IPOPT_PATH}/examples/Cpp_example/MyNLP.cpp" +) +target_link_libraries(simple-pkgconfig PRIVATE PkgConfig::PC_ipopt) diff --git a/scripts/test_ports/vcpkg-ci-coin-or-ipopt/vcpkg.json b/scripts/test_ports/vcpkg-ci-coin-or-ipopt/vcpkg.json new file mode 100644 index 0000000000..12f320f7a6 --- /dev/null +++ b/scripts/test_ports/vcpkg-ci-coin-or-ipopt/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "vcpkg-ci-coin-or-ipopt", + "version-string": "ci", + "description": "Validation port", + "homepage": "https://github.com/microsoft/vcpkg", + "license": "MIT", + "dependencies": [ + { + "name": "coin-or-ipopt", + "default-features": false + }, + { + "name": "vcpkg-cmake", + "host": true + } + ] +} diff --git a/scripts/test_ports/vcpkg-ci-openblas/vcpkg.json b/scripts/test_ports/vcpkg-ci-openblas/vcpkg.json index de772b6268..6c28a86518 100644 --- a/scripts/test_ports/vcpkg-ci-openblas/vcpkg.json +++ b/scripts/test_ports/vcpkg-ci-openblas/vcpkg.json @@ -22,7 +22,7 @@ "features": [ "dynamic-arch" ], - "platform": "linux" + "platform": "linux & !arm" }, { "name": "openblas", diff --git a/versions/baseline.json b/versions/baseline.json index 71e7af8cb0..aa08e5a479 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -1902,7 +1902,7 @@ }, "coin-or-ipopt": { "baseline": "2023-02-01", - "port-version": 0 + "port-version": 1 }, "coin-or-osi": { "baseline": "2024-04-16", @@ -4546,7 +4546,7 @@ }, "lapack": { "baseline": "2023-06-10", - "port-version": 3 + "port-version": 4 }, "lapack-reference": { "baseline": "3.12.1", diff --git a/versions/c-/coin-or-ipopt.json b/versions/c-/coin-or-ipopt.json index 26593f828a..561d7ca0da 100644 --- a/versions/c-/coin-or-ipopt.json +++ b/versions/c-/coin-or-ipopt.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "cab6a5d031125dbefcd3bd335c661469d61c760f", + "version-date": "2023-02-01", + "port-version": 1 + }, { "git-tree": "8f3393d37ff448cd73bb3bdf00b812a0a38e2a9c", "version-date": "2023-02-01", diff --git a/versions/l-/lapack.json b/versions/l-/lapack.json index e12612976d..7e8b29cf74 100644 --- a/versions/l-/lapack.json +++ b/versions/l-/lapack.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "be339b1d1e93fff43b1c2517794dc185819a27fc", + "version-date": "2023-06-10", + "port-version": 4 + }, { "git-tree": "12ac83a3627b42dd68a96751ec39051b89761656", "version-date": "2023-06-10",