diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/casadi | |
Diffstat (limited to 'vcpkg/ports/casadi')
| -rw-r--r-- | vcpkg/ports/casadi/disable_fortran.patch | 28 | ||||
| -rw-r--r-- | vcpkg/ports/casadi/namespace.cmake | 14 | ||||
| -rw-r--r-- | vcpkg/ports/casadi/portfile.cmake | 39 | ||||
| -rw-r--r-- | vcpkg/ports/casadi/relocatable.patch | 47 | ||||
| -rw-r--r-- | vcpkg/ports/casadi/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/casadi/vcpkg.json | 19 |
6 files changed, 151 insertions, 0 deletions
diff --git a/vcpkg/ports/casadi/disable_fortran.patch b/vcpkg/ports/casadi/disable_fortran.patch new file mode 100644 index 0000000..35cd047 --- /dev/null +++ b/vcpkg/ports/casadi/disable_fortran.patch @@ -0,0 +1,28 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 0200a56df..69b699626 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -84,23 +84,7 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) + set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Build type (default Release)" FORCE) + endif() + +-######################################################################## +-############################# Fortran ################################## +-######################################################################## +-option(FORTRAN_REQUIRED "Make fortran a required dependency" OFF) +- +-# http://public.kitware.com/Bug/print_bug_page.php?bug_id=9220 + set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) +-include(language_support) +-workaround_9220(Fortran Fortran_language_works) +-if(FORTRAN_REQUIRED) +- enable_language(Fortran) +- set(Fortran_language_works ON) +-else() +- if(Fortran_language_works) +- enable_language(Fortran OPTIONAL) +- endif() +-endif() + + ######################################################################## + ############################# C++11 #################################### diff --git a/vcpkg/ports/casadi/namespace.cmake b/vcpkg/ports/casadi/namespace.cmake new file mode 100644 index 0000000..88c3c59 --- /dev/null +++ b/vcpkg/ports/casadi/namespace.cmake @@ -0,0 +1,14 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 96acbc2e5..f2a08c83d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2167,7 +2167,7 @@ install(FILES + + # Install the export set for use with the install-tree + file(RELATIVE_PATH REL_CMAKE_PREFIX "${CMAKE_INSTALL_PREFIX}" "${CMAKE_PREFIX}") +-install(EXPORT casadi-targets DESTINATION ${REL_CMAKE_PREFIX}) ++install(EXPORT casadi-targets NAMESPACE casadi:: DESTINATION ${REL_CMAKE_PREFIX}) + + set(CPACK_PACKAGE_CONTACT "casadi-users@googlegroups.com") + set(CPACK_PACKAGE_VERSION ${PACKAGE_VERSION_FULL}) +diff --git a/docs/examples/cplusplus/cmake_find_package/CMakeLists.txt b/docs/examples/cplusplus/cmake_find_package/CMakeLists.txt diff --git a/vcpkg/ports/casadi/portfile.cmake b/vcpkg/ports/casadi/portfile.cmake new file mode 100644 index 0000000..7151c50 --- /dev/null +++ b/vcpkg/ports/casadi/portfile.cmake @@ -0,0 +1,39 @@ +# Currently no upstream support for static libraries
+vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY)
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO casadi/casadi
+ REF "${VERSION}"
+ SHA512 2c95368281f0bda385c6c451e361c168589f13aa66af6bc6fadf01f899bcd6c785ea7da3dee0fb5835559e58982e499182a4d244af3ea208ac05f672ea99cfd1
+ HEAD_REF main
+ PATCHES relocatable.patch disable_fortran.patch namespace.cmake
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ -DWITH_SELFCONTAINED=OFF
+ -DWITH_TINYXML=OFF
+ -DWITH_BUILD_TINYXML=OFF
+ -DWITH_QPOASES=OFF
+ -DWITH_SUNDIALS=OFF
+ -DWITH_CSPARSE=OFF
+ -DLIB_PREFIX:PATH=lib
+ -DBIN_PREFIX:PATH=bin
+ -DINCLUDE_PREFIX:PATH=include
+ -DCMAKE_PREFIX:PATH=share/${PORT}
+)
+
+vcpkg_cmake_install()
+
+vcpkg_cmake_config_fixup()
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt")
+
+vcpkg_fixup_pkgconfig()
+
+configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY)
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+vcpkg_copy_tools(TOOL_NAMES casadi-cli AUTO_CLEAN)
diff --git a/vcpkg/ports/casadi/relocatable.patch b/vcpkg/ports/casadi/relocatable.patch new file mode 100644 index 0000000..4c0e70c --- /dev/null +++ b/vcpkg/ports/casadi/relocatable.patch @@ -0,0 +1,47 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b444c292e..0200a56df 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -297,6 +297,7 @@ option(ENABLE_STATIC "Compile static libraries (.a on Linux)" OFF) + option(ENABLE_SHARED "Compile shared libraries (.so on Linux)" ON) + option(SWIG_EXPORT "Export SWIG" OFF) + option(SWIG_IMPORT "Import SWIG" OFF) ++option(RELOCATABLE "Avoid any usage of absolute paths" ON) + + # enabling OpenMP support if requested + option(WITH_OPENMP "Compile with parallelization support using OpenMP" OFF) +diff --git a/casadi/CMakeLists.txt b/casadi/CMakeLists.txt +index 3c803afc0..bd408fdd6 100644 +--- a/casadi/CMakeLists.txt ++++ b/casadi/CMakeLists.txt +@@ -141,10 +141,16 @@ if(NOT SKIP_CONFIG_H_GENERATION) + + # See issue #3831, RELOCATABILITY + set(CASADI_CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER}) +- if(CASADI_CMAKE_CXX_COMPILER MATCHES "shims") ++ if(CASADI_CMAKE_CXX_COMPILER MATCHES "shims" OR RELOCATABLE) + get_filename_component(CASADI_CMAKE_CXX_COMPILER ${CMAKE_CXX_COMPILER} NAME) + endif() + ++ if(RELOCATABLE) ++ set(CASADI_INSTALL_PREFIX "") ++ else() ++ set(CASADI_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}) ++ endif() ++ + configure_file(config.h.cmake "${CMAKE_CURRENT_BINARY_DIR}/config.h" ESCAPE_QUOTES) + endif() + install(FILES casadi.hpp mem.h casadi_c.h "${CMAKE_CURRENT_BINARY_DIR}/config.h" +diff --git a/casadi/config.h.cmake b/casadi/config.h.cmake +index 2b805aede..3a4795eb2 100644 +--- a/casadi/config.h.cmake ++++ b/casadi/config.h.cmake +@@ -38,7 +38,7 @@ + #define CASADI_COMPILER_FLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${UPPER_CMAKE_BUILD_TYPE}} ${EXTRA_CXX_FLAGS_FROM_DEFS}" // NOLINT(whitespace/line_length) + #define CASADI_MODULES "${CASADI_MODULES}" // NOLINT(whitespace/line_length) + #define CASADI_PLUGINS "${CASADI_PLUGINS}" // NOLINT(whitespace/line_length) +-#define CASADI_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}" // NOLINT(whitespace/line_length) ++#define CASADI_INSTALL_PREFIX "${CASADI_INSTALL_PREFIX}" // NOLINT(whitespace/line_length) + #define CASADI_SHARED_LIBRARY_PREFIX "${CMAKE_SHARED_LIBRARY_PREFIX}" // NOLINT(whitespace/line_length) + #define CASADI_SHARED_LIBRARY_SUFFIX "${CMAKE_SHARED_LIBRARY_SUFFIX}" // NOLINT(whitespace/line_length) + #define CASADI_OBJECT_FILE_SUFFIX "${CMAKE_C_OUTPUT_EXTENSION}" // NOLINT(whitespace/line_length) diff --git a/vcpkg/ports/casadi/usage b/vcpkg/ports/casadi/usage new file mode 100644 index 0000000..0798de5 --- /dev/null +++ b/vcpkg/ports/casadi/usage @@ -0,0 +1,4 @@ +casadi provides CMake targets:
+
+ find_package(casadi CONFIG REQUIRED)
+ target_link_libraries(main PRIVATE casadi::casadi)
diff --git a/vcpkg/ports/casadi/vcpkg.json b/vcpkg/ports/casadi/vcpkg.json new file mode 100644 index 0000000..c80022a --- /dev/null +++ b/vcpkg/ports/casadi/vcpkg.json @@ -0,0 +1,19 @@ +{ + "name": "casadi", + "version": "3.6.7", + "port-version": 1, + "description": "CasADi is a symbolic framework for numeric optimization implementing automatic differentiation in forward and reverse modes on sparse matrix-valued computational graphs. It supports self-contained C-code generation and interfaces state-of-the-art codes such as SUNDIALS, IPOPT etc. It can be used from C++, Python or Matlab/Octave.", + "homepage": "https://web.casadi.org", + "license": "LGPL-3.0-only", + "supports": "!static & !uwp", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |