mirror of
https://github.com/microsoft/vcpkg.git
synced 2025-06-07 01:24:47 +08:00
[CppAD] Add CppAD port (#12560)
* [CppAD] Add CppAD port * [CppAD] Fix compilation on Linux * [CppAD] Remove vcpkg_common_functions from portfile.cmake Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com> * [CppAD] Avoid to add the postfix 'd' in the debug library * [CppAD] Patch the pkgconfig file generation * [CppAD] Remove the support for uwp and arm * [CppAD] add DISABLE_PARALLEL_CONFIGURE as option of vcpkg_configure_cmake() command Co-authored-by: NancyLi1013 <46708020+NancyLi1013@users.noreply.github.com>
This commit is contained in:
parent
025447ae0e
commit
222c35e3bc
5
ports/cppad/CONTROL
Normal file
5
ports/cppad/CONTROL
Normal file
@ -0,0 +1,5 @@
|
||||
Source: cppad
|
||||
Version: 20200000.3
|
||||
Homepage: https://github.com/coin-or/CppAD
|
||||
Description: CppAD: A Package for Differentiation of C++ Algorithms
|
||||
Supports: !(arm|uwp)
|
63
ports/cppad/pkgconfig-fix.patch
Normal file
63
ports/cppad/pkgconfig-fix.patch
Normal file
@ -0,0 +1,63 @@
|
||||
diff --git a/pkgconfig/CMakeLists.txt b/pkgconfig/CMakeLists.txt
|
||||
index db8b65902..b1224a01d 100644
|
||||
--- a/pkgconfig/CMakeLists.txt
|
||||
+++ b/pkgconfig/CMakeLists.txt
|
||||
@@ -42,8 +42,9 @@ ENDIF( cppad_has_ipopt )
|
||||
# cppad_pkgconfig_cflags
|
||||
# cppad_pkgconfig_cflags_uninstalled
|
||||
#
|
||||
-SET(cppad_pkgconfig_cflags "-I${cppad_abs_includedir}" )
|
||||
-SET(cppad_pkgconfig_cflags_uninstalled "-I${cppad_SOURCE_DIR}" )
|
||||
+SET(cppad_pkgconfig_includedir "${cmake_install_includedirs}" )
|
||||
+SET(cppad_pkgconfig_cflags_uninstalled "-I${cppad_SOURCE_DIR}" )
|
||||
+SET(cppad_pkgconfig_libdir "${cmake_install_libdirs}" )
|
||||
# ----------------------------------------------------------------------------
|
||||
# cppad_pkgconfig_libs
|
||||
# cppad_pkgconfig_libs_uninstalled
|
||||
@@ -74,7 +75,7 @@ IF( "${libs}" STREQUAL "" )
|
||||
SET(cppad_pkgconfig_libs "")
|
||||
SET(cppad_pkgconfig_libs_uninstalled "")
|
||||
ELSE( "${libs}" STREQUAL "" )
|
||||
- SET(cppad_pkgconfig_libs "-L${cppad_abs_libdir} ${libs}")
|
||||
+ SET(cppad_pkgconfig_libs "-L\${libdir} ${libs}")
|
||||
SET(cppad_pkgconfig_libs_uninstalled "${uninstalled} ${libs}")
|
||||
ENDIF( "${libs}" STREQUAL "" )
|
||||
#
|
||||
@@ -84,10 +85,12 @@ ENDIF( "${libs}" STREQUAL "" )
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cppad.pc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/cppad.pc
|
||||
+ @ONLY
|
||||
)
|
||||
CONFIGURE_FILE(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cppad-uninstalled.pc.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/cppad-uninstalled.pc
|
||||
+ @ONLY
|
||||
)
|
||||
# During install copy cppad.pc to datadir and libdir
|
||||
INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/cppad.pc
|
||||
diff --git a/pkgconfig/cppad.pc.in b/pkgconfig/cppad.pc.in
|
||||
index a202e3fb3..1c34c1e08 100644
|
||||
--- a/pkgconfig/cppad.pc.in
|
||||
+++ b/pkgconfig/cppad.pc.in
|
||||
@@ -12,12 +12,19 @@
|
||||
# This file is used with pkg-config to include CppAD after it is installed
|
||||
#
|
||||
# Entries set by top source directory CMakeLists.txt file
|
||||
+
|
||||
+prefix=${pcfiledir}/../..
|
||||
+exec_prefix=${prefix}
|
||||
+libdir=${exec_prefix}/@cppad_pkgconfig_libdir@
|
||||
+includedir=${prefix}/@cppad_pkgconfig_includedir@
|
||||
+
|
||||
Name: cppad
|
||||
Description: @cppad_description@
|
||||
Version: @cppad_version@
|
||||
URL: @cppad_url@
|
||||
+
|
||||
#
|
||||
# Entries set by pkgconfig/CMakeLists.txt file
|
||||
-Cflags: @cppad_pkgconfig_cflags@
|
||||
+Cflags: -I${includedir}
|
||||
Libs: @cppad_pkgconfig_libs@
|
||||
Requires: @cppad_pkgconfig_requires@
|
42
ports/cppad/portfile.cmake
Normal file
42
ports/cppad/portfile.cmake
Normal file
@ -0,0 +1,42 @@
|
||||
# the compilation fails on arm and uwp. Please check the related issue:
|
||||
# https://github.com/microsoft/vcpkg/pull/12560#issuecomment-668412073
|
||||
vcpkg_fail_port_install(ON_TARGET "uwp" and "arm")
|
||||
|
||||
vcpkg_from_github(
|
||||
OUT_SOURCE_PATH SOURCE_PATH
|
||||
REPO coin-or/CppAD
|
||||
REF 20200000.3
|
||||
SHA512 4e980665a21c76cf355d1c5597c65fbfba7ac3e15c43a88ccfe3ba0267b85b4e9aa7c6e8a0ed7a728f8cf2c6e1424625d5cbcdd295a6c0a08b47b4b121572d13
|
||||
HEAD_REF master
|
||||
PATCHES
|
||||
windows-fix.patch
|
||||
pkgconfig-fix.patch
|
||||
)
|
||||
|
||||
vcpkg_configure_cmake(
|
||||
SOURCE_PATH ${SOURCE_PATH}
|
||||
PREFER_NINJA
|
||||
DISABLE_PARALLEL_CONFIGURE
|
||||
OPTIONS
|
||||
-Dcppad_prefix=${CURRENT_PACKAGES_DIR}
|
||||
OPTIONS_RELEASE
|
||||
-Dcmake_install_libdirs=lib
|
||||
-Dcppad_debug_which:STRING=debug_none
|
||||
OPTIONS_DEBUG
|
||||
-Dcmake_install_libdirs=debug/lib
|
||||
)
|
||||
|
||||
vcpkg_install_cmake()
|
||||
|
||||
# Install the pkgconfig file
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
|
||||
file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/pkgconfig/cppad.pc DESTINATION ${CURRENT_PACKAGES_DIR}/lib/pkgconfig)
|
||||
endif()
|
||||
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
|
||||
file(COPY ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/pkgconfig/cppad.pc DESTINATION ${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig)
|
||||
endif()
|
||||
|
||||
vcpkg_fixup_pkgconfig()
|
||||
|
||||
# Add the copyright
|
||||
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
|
105
ports/cppad/windows-fix.patch
Normal file
105
ports/cppad/windows-fix.patch
Normal file
@ -0,0 +1,105 @@
|
||||
diff --git a/cppad_lib/cppad_colpack.cpp b/cppad_lib/cppad_colpack.cpp
|
||||
index dc3327053..739363292 100644
|
||||
--- a/cppad_lib/cppad_colpack.cpp
|
||||
+++ b/cppad_lib/cppad_colpack.cpp
|
||||
@@ -17,7 +17,7 @@ in the Eclipse Public License, Version 2.0 are satisfied:
|
||||
|
||||
# if CPPAD_HAS_COLPACK == 0
|
||||
namespace CppAD { namespace local {
|
||||
- CPPAD_LIB_EXPORT void this_routine_should_never_get_called(void)
|
||||
+ void this_routine_should_never_get_called(void)
|
||||
{ CPPAD_ASSERT_UNKNOWN(false); }
|
||||
} }
|
||||
# else // CPPAD_HAS_COLPACK
|
||||
@@ -52,7 +52,7 @@ the entry with index (i, adolc_pattern[i][k]) is a non-zero
|
||||
in the sparsity pattern for the matrix.
|
||||
*/
|
||||
// ----------------------------------------------------------------------
|
||||
-CPPAD_LIB_EXPORT void cppad_colpack_general(
|
||||
+void cppad_colpack_general(
|
||||
CppAD::vector<size_t>& color ,
|
||||
size_t m ,
|
||||
size_t n ,
|
||||
@@ -164,7 +164,7 @@ For i = 0 , ... , m-1, and for k = 1, ... ,adolc_pattern[i][0],
|
||||
the entry with index (i, adolc_pattern[i][k]) is
|
||||
in the sparsity pattern for the symmetric matrix.
|
||||
*/
|
||||
-CPPAD_LIB_EXPORT void cppad_colpack_symmetric(
|
||||
+void cppad_colpack_symmetric(
|
||||
CppAD::vector<size_t>& color ,
|
||||
size_t m ,
|
||||
const CppAD::vector<unsigned int*>& adolc_pattern )
|
||||
diff --git a/cppad_lib/json_parser.cpp b/cppad_lib/json_parser.cpp
|
||||
index fac417d9f..ac0910cee 100644
|
||||
--- a/cppad_lib/json_parser.cpp
|
||||
+++ b/cppad_lib/json_parser.cpp
|
||||
@@ -20,7 +20,7 @@ in the Eclipse Public License, Version 2.0 are satisfied:
|
||||
// documentation for this routine is in the file below
|
||||
# include <cppad/local/graph/json_parser.hpp>
|
||||
|
||||
-CPPAD_LIB_EXPORT void CppAD::local::graph::json_parser(
|
||||
+void CppAD::local::graph::json_parser(
|
||||
const std::string& json ,
|
||||
cpp_graph& graph_obj )
|
||||
{ using std::string;
|
||||
diff --git a/cppad_lib/json_writer.cpp b/cppad_lib/json_writer.cpp
|
||||
index 250345c6e..add4b20a9 100644
|
||||
--- a/cppad_lib/json_writer.cpp
|
||||
+++ b/cppad_lib/json_writer.cpp
|
||||
@@ -17,7 +17,7 @@ in the Eclipse Public License, Version 2.0 are satisfied:
|
||||
// documentation for this routine is in the file below
|
||||
# include <cppad/local/graph/json_writer.hpp>
|
||||
|
||||
-CPPAD_LIB_EXPORT void CppAD::local::graph::json_writer(
|
||||
+void CppAD::local::graph::json_writer(
|
||||
std::string& json ,
|
||||
const cpp_graph& graph_obj )
|
||||
{ using std::string;
|
||||
diff --git a/include/cppad/local/cppad_colpack.hpp b/include/cppad/local/cppad_colpack.hpp
|
||||
index ee96ab5fe..6dd022180 100644
|
||||
--- a/include/cppad/local/cppad_colpack.hpp
|
||||
+++ b/include/cppad/local/cppad_colpack.hpp
|
||||
@@ -59,7 +59,7 @@ it is not the case that both
|
||||
This routine tries to minimize, with respect to the choice of colors,
|
||||
the number of colors.
|
||||
*/
|
||||
-extern void cppad_colpack_general(
|
||||
+CPPAD_LIB_EXPORT void cppad_colpack_general(
|
||||
CppAD::vector<size_t>& color ,
|
||||
size_t m ,
|
||||
size_t n ,
|
||||
@@ -91,7 +91,7 @@ The properties of this coloring have not yet been determined; see
|
||||
Efficient Computation of Sparse Hessians Using Coloring
|
||||
and Automatic Differentiation (pdf/ad/gebemedhin14.pdf)
|
||||
*/
|
||||
-extern void cppad_colpack_symmetric(
|
||||
+CPPAD_LIB_EXPORT void cppad_colpack_symmetric(
|
||||
CppAD::vector<size_t>& color ,
|
||||
size_t n ,
|
||||
const CppAD::vector<unsigned int*>& adolc_pattern
|
||||
diff --git a/include/cppad/local/graph/json_parser.hpp b/include/cppad/local/graph/json_parser.hpp
|
||||
index 17bcc7c7e..a28d2c045 100644
|
||||
--- a/include/cppad/local/graph/json_parser.hpp
|
||||
+++ b/include/cppad/local/graph/json_parser.hpp
|
||||
@@ -42,7 +42,7 @@ Upon return it is a $cref cpp_ad_graph$$ representation of this function.
|
||||
$head Prototype$$
|
||||
$srccode%hpp% */
|
||||
namespace CppAD { namespace local { namespace graph {
|
||||
- void json_parser(
|
||||
+ CPPAD_LIB_EXPORT void json_parser(
|
||||
const std::string& json ,
|
||||
cpp_graph& graph_obj
|
||||
);
|
||||
diff --git a/include/cppad/local/graph/json_writer.hpp b/include/cppad/local/graph/json_writer.hpp
|
||||
index 36a4cb39f..299c56cc0 100644
|
||||
--- a/include/cppad/local/graph/json_writer.hpp
|
||||
+++ b/include/cppad/local/graph/json_writer.hpp
|
||||
@@ -41,7 +41,7 @@ This is a $code cpp_graph$$ object.
|
||||
$head Prototype$$
|
||||
$srccode%hpp% */
|
||||
namespace CppAD { namespace local { namespace graph {
|
||||
- void json_writer(
|
||||
+ CPPAD_LIB_EXPORT void json_writer(
|
||||
std::string& json ,
|
||||
const cpp_graph& graph_obj
|
||||
);
|
Loading…
Reference in New Issue
Block a user