aboutsummaryrefslogtreecommitdiff
path: root/ports/clp
diff options
context:
space:
mode:
Diffstat (limited to 'ports/clp')
-rw-r--r--ports/clp/CMakeLists.txt260
-rw-r--r--ports/clp/CONTROL8
-rw-r--r--ports/clp/Config.cmake.in10
-rw-r--r--ports/clp/portfile.cmake8
4 files changed, 136 insertions, 150 deletions
diff --git a/ports/clp/CMakeLists.txt b/ports/clp/CMakeLists.txt
index 86305aa58..94f6559d9 100644
--- a/ports/clp/CMakeLists.txt
+++ b/ports/clp/CMakeLists.txt
@@ -1,139 +1,121 @@
-cmake_minimum_required(VERSION 3.11)
-
-project(Clp LANGUAGES C CXX)
-
-set(PROJECT_VERSION 1.16.11)
-set(PROJECT_VERSION_MAJOR 1)
-set(PROJECT_VERSION_MINOR 16)
-set(PROJECT_VERSION_PATCH 11)
-
-set(CMAKE_CXX_STANDARD 14)
-set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/bin)
-set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
-set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
-set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake")
-
-if(MSVC)
- set(
- CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} /bigobj /MP /wd4996 /wd4819 /wd4251 /wd4267 /wd4244 /wd4275"
- )
-endif(MSVC)
-if(APPLE)
- set(
- CMAKE_CXX_FLAGS
- "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override -Wno-unused-command-line-argument -Wno-unused-result -Wno-exceptions"
- )
- set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9"
- CACHE STRING "Minimum OS X deployment version")
-endif(APPLE)
-
-set_property(GLOBAL PROPERTY USE_FOLDERS ON)
-
-# options
-option(BUILD_SHARED_LIBS "" ON)
-
-#
-# Introduce variables: * CMAKE_INSTALL_LIBDIR * CMAKE_INSTALL_BINDIR
-include(GNUInstallDirs)
-
-# Include module with fuction 'write_basic_package_version_file'
-include(CMakePackageConfigHelpers)
-
-# Layout. This works for all platforms: * <prefix>/lib*/cmake/<PROJECT-NAME> *
-# <prefix>/lib*/ * <prefix>/include/
-set(config_install_dir "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}")
-set(generated_dir "${CMAKE_CURRENT_BINARY_DIR}/generated")
-# Configuration
-set(version_config "${generated_dir}/${PROJECT_NAME}ConfigVersion.cmake")
-set(project_config "${generated_dir}/${PROJECT_NAME}Config.cmake")
-set(TARGETS_EXPORT_NAME "${PROJECT_NAME}Targets")
-set(namespace "Coin::")
-
-# Packages
-find_package(CoinUtils REQUIRED)
-find_package(Osi REQUIRED)
-
-# Add sources
-include_directories(Clp/src/)
-include_directories(Clp/src/OsiClp)
-
-file(GLOB CLP_SOURCES
- Clp/src/*.hpp
- Clp/src/*.cpp
- Clp/src/OsiClp/*.hpp
- Clp/src/OsiClp/*.cpp)
-file(GLOB CLP_REMOVE
- Clp/src/ClpCholeskyMumps.cpp
- Clp/src/ClpCholeskyUfl.cpp
- Clp/src/ClpCholeskyWssmp.cpp
- Clp/src/ClpCholeskyWssmpKKT.cpp
- Clp/src/ClpMain.cpp
- Clp/src/*Abc*.cpp
- Clp/src/ClpCholeskyMumps.hpp
- Clp/src/ClpCholeskyUfl.hpp
- Clp/src/ClpCholeskyWssmp.hpp
- Clp/src/ClpCholeskyWssmpKKT.hpp
- Clp/src/ClpMain.hpp
- Clp/src/*Abc*.hpp
- Clp/src/*Abc*.h)
-list(REMOVE_ITEM CLP_SOURCES ${CLP_REMOVE})
-
-add_library(${PROJECT_NAME} ${CLP_SOURCES})
-
-target_include_directories(${PROJECT_NAME}
- PUBLIC $<INSTALL_INTERFACE:include/coin>)
-target_compile_definitions(${PROJECT_NAME}
- PUBLIC
- -DHAVE_CMATH
- -D_CRT_SECURE_NO_WARNINGS
- -DCOIN_HAS_CLP)
-target_link_libraries(${PROJECT_NAME} PRIVATE Coin::CoinUtils Coin::Osi)
-
-install(TARGETS ${PROJECT_NAME}
- EXPORT "${TARGETS_EXPORT_NAME}"
- LIBRARY DESTINATION lib
- ARCHIVE DESTINATION lib
- RUNTIME DESTINATION bin
- INCLUDES
- DESTINATION include)
-
-install(DIRECTORY Clp/src/
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/coin
- FILES_MATCHING
- PATTERN "*.h"
- PATTERN "*.hpp"
- PATTERN "config_default.h"
- EXCLUDE)
-
-install(DIRECTORY Clp/src/OsiClp/
- DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/coin
- FILES_MATCHING
- PATTERN "*.h"
- PATTERN "*.hpp"
- PATTERN "config_default.h"
- EXCLUDE)
-
-#
-# Install Libraries
-#
-# Configure '<PROJECT-NAME>ConfigVersion.cmake' Use: * PROJECT_VERSION
-write_basic_package_version_file("${version_config}"
- COMPATIBILITY SameMajorVersion)
-
-# Configure '<PROJECT-NAME>Config.cmake' Use variables: * TARGETS_EXPORT_NAME *
-# PROJECT_NAME
-configure_package_config_file("Config.cmake.in"
- "${project_config}"
- INSTALL_DESTINATION
- "${config_install_dir}")
-
-# Config * <prefix>/lib/cmake/Foo/FooConfig.cmake *
-# <prefix>/lib/cmake/Foo/FooConfigVersion.cmake
-install(FILES "${project_config}" "${version_config}"
- DESTINATION "${config_install_dir}")
-
-# Config * <prefix>/lib/cmake/Foo/FooTargets.cmake
-install(EXPORT "${TARGETS_EXPORT_NAME}"
- NAMESPACE "${namespace}"
- DESTINATION "${config_install_dir}")
+cmake_minimum_required(VERSION 3.11)
+
+project(Clp LANGUAGES C CXX)
+
+set(PROJECT_VERSION 1.16.11)
+set(PROJECT_VERSION_MAJOR 1)
+set(PROJECT_VERSION_MINOR 16)
+set(PROJECT_VERSION_PATCH 11)
+
+set(CMAKE_CXX_STANDARD 14)
+
+set(INSTALL_BIN_DIR "bin" CACHE PATH "Path where exe and dll will be installed")
+set(INSTALL_LIB_DIR "lib" CACHE PATH "Path where lib will be installed")
+set(INSTALL_INCLUDE_DIR "include/Coin" CACHE PATH "Path where headers will be installed")
+set(INSTALL_CMAKE_DIR "share/${PROJECT_NAME}" CACHE PATH "Path where cmake configs will be installed")
+
+# Make relative paths absolute (needed later on)
+set(RELATIVE_INSTALL_INCLUDE_DIR ${INSTALL_INCLUDE_DIR})
+foreach(p LIB BIN INCLUDE CMAKE)
+ set(var INSTALL_${p}_DIR)
+ if(NOT IS_ABSOLUTE "${${var}}")
+ set(${var} "${CMAKE_INSTALL_PREFIX}/${${var}}")
+ endif()
+endforeach()
+
+if(MSVC)
+ set(
+ CMAKE_CXX_FLAGS
+ "${CMAKE_CXX_FLAGS} /bigobj /MP /wd4996 /wd4819 /wd4251 /wd4267 /wd4244 /wd4275"
+ )
+endif()
+
+if(APPLE)
+ set(
+ CMAKE_CXX_FLAGS
+ "${CMAKE_CXX_FLAGS} -Wno-inconsistent-missing-override -Wno-unused-command-line-argument -Wno-unused-result -Wno-exceptions"
+ )
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.9"
+ CACHE STRING "Minimum OS X deployment version")
+endif()
+
+find_package(CoinUtils REQUIRED)
+find_package(Osi REQUIRED)
+
+file(GLOB CLP_SOURCES
+ Clp/src/*.hpp
+ Clp/src/*.cpp
+ Clp/src/OsiClp/*.hpp
+ Clp/src/OsiClp/*.cpp)
+file(GLOB CLP_REMOVE
+ Clp/src/ClpCholeskyMumps.cpp
+ Clp/src/ClpCholeskyUfl.cpp
+ Clp/src/ClpCholeskyWssmp.cpp
+ Clp/src/ClpCholeskyWssmpKKT.cpp
+ Clp/src/ClpMain.cpp
+ Clp/src/*Abc*.cpp
+ Clp/src/ClpCholeskyMumps.hpp
+ Clp/src/ClpCholeskyUfl.hpp
+ Clp/src/ClpCholeskyWssmp.hpp
+ Clp/src/ClpCholeskyWssmpKKT.hpp
+ Clp/src/ClpMain.hpp
+ Clp/src/*Abc*.hpp
+ Clp/src/*Abc*.h)
+list(REMOVE_ITEM CLP_SOURCES ${CLP_REMOVE})
+
+add_library(${PROJECT_NAME} ${CLP_SOURCES})
+
+target_include_directories(${PROJECT_NAME}
+ PUBLIC
+ $<INSTALL_INTERFACE:${RELATIVE_INSTALL_INCLUDE_DIR}>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Clp/src/>
+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/Clp/src/OsiClp>)
+
+if(MSVC)
+ target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS)
+endif()
+target_compile_definitions(${PROJECT_NAME} PRIVATE HAVE_CMATH)
+target_compile_definitions(${PROJECT_NAME} PUBLIC COIN_HAS_CLP)
+
+target_link_libraries(${PROJECT_NAME} PRIVATE Coin::CoinUtils Coin::Osi)
+
+install(DIRECTORY Clp/src/
+ DESTINATION ${INSTALL_INCLUDE_DIR}
+ FILES_MATCHING
+ PATTERN "*.h"
+ PATTERN "*.hpp"
+ PATTERN "config_default.h" EXCLUDE)
+
+install(DIRECTORY Clp/src/OsiClp/
+ DESTINATION ${INSTALL_INCLUDE_DIR}
+ FILES_MATCHING
+ PATTERN "*.h"
+ PATTERN "*.hpp"
+ PATTERN "config_default.h" EXCLUDE)
+
+install(TARGETS ${PROJECT_NAME}
+ EXPORT "${PROJECT_NAME}Targets"
+ LIBRARY DESTINATION lib
+ ARCHIVE DESTINATION lib
+ RUNTIME DESTINATION bin)
+
+include(CMakePackageConfigHelpers)
+
+set(version_config "${CMAKE_CURRENT_BINARY_DIR}/temp/${PROJECT_NAME}ConfigVersion.cmake")
+set(project_config "${CMAKE_CURRENT_BINARY_DIR}/temp/${PROJECT_NAME}Config.cmake")
+set(namespace "Coin::")
+
+write_basic_package_version_file("${version_config}"
+ COMPATIBILITY SameMajorVersion)
+
+configure_package_config_file("Config.cmake.in"
+ "${project_config}"
+ INSTALL_DESTINATION
+ "${INSTALL_CMAKE_DIR}")
+
+install(FILES "${project_config}" "${version_config}"
+ DESTINATION "${INSTALL_CMAKE_DIR}")
+
+install(EXPORT "${PROJECT_NAME}Targets"
+ NAMESPACE "${namespace}"
+ DESTINATION "${INSTALL_CMAKE_DIR}")
diff --git a/ports/clp/CONTROL b/ports/clp/CONTROL
index b10b63561..a0bdee5d3 100644
--- a/ports/clp/CONTROL
+++ b/ports/clp/CONTROL
@@ -1,4 +1,4 @@
-Source: clp
-Version: 1.17.2
-Description: Clp (Coin-or linear programming) is an open-source linear programming solver written in C++. It is primarily meant to be used as a callable library, but a basic, stand-alone executable version is also available.
-Build-Depends: coinutils, osi
+Source: clp
+Version: 1.17.2-1
+Description: Clp (Coin-or linear programming) is an open-source linear programming solver written in C++. It is primarily meant to be used as a callable library, but a basic, stand-alone executable version is also available.
+Build-Depends: coinutils, osi
diff --git a/ports/clp/Config.cmake.in b/ports/clp/Config.cmake.in
index ec01d2e5b..2c12f83f0 100644
--- a/ports/clp/Config.cmake.in
+++ b/ports/clp/Config.cmake.in
@@ -1,5 +1,5 @@
-
-@PACKAGE_INIT@
-
-include("${CMAKE_CURRENT_LIST_DIR}/@TARGETS_EXPORT_NAME@.cmake")
-check_required_components("@PROJECT_NAME@")
+
+@PACKAGE_INIT@
+
+include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
+check_required_components("@PROJECT_NAME@")
diff --git a/ports/clp/portfile.cmake b/ports/clp/portfile.cmake
index b76a9435c..83581af35 100644
--- a/ports/clp/portfile.cmake
+++ b/ports/clp/portfile.cmake
@@ -19,8 +19,12 @@ vcpkg_configure_cmake(
vcpkg_install_cmake()
vcpkg_copy_pdbs()
+if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux") #on case-sensitive filesystems, it's necessary to rename and make it lowercase
+ vcpkg_fixup_cmake_targets(CONFIG_PATH share/Clp)
+else()
+ vcpkg_fixup_cmake_targets()
+endif()
+
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
-vcpkg_fixup_cmake_targets(CONFIG_PATH "lib/cmake/Clp")
-# Handle copyright
file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/clp RENAME copyright)