From 816e334a864938d06156fe16661e7dfce40ae1b1 Mon Sep 17 00:00:00 2001 From: Joris Gillis Date: Wed, 1 Mar 2023 19:39:37 +0100 Subject: [PATCH] Adding hsl --- CMakeLists.txt | 1 + hsl/CMakeLists.txt | 75 +++++++++++++++++++++++++++++++++++ hsl/cmake/hsl-config.cmake.in | 4 ++ hsl/include/hsl.h | 16 ++++++++ hsl/src/hsl.c | 14 +++++++ 5 files changed, 110 insertions(+) create mode 100644 hsl/CMakeLists.txt create mode 100644 hsl/cmake/hsl-config.cmake.in create mode 100644 hsl/include/hsl.h create mode 100644 hsl/src/hsl.c diff --git a/CMakeLists.txt b/CMakeLists.txt index e79c67a..17d78d6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,3 +7,4 @@ add_subdirectory(knitro) add_subdirectory(cplex) add_subdirectory(gurobi) add_subdirectory(worhp) +add_subdirectory(hsl) diff --git a/hsl/CMakeLists.txt b/hsl/CMakeLists.txt new file mode 100644 index 0000000..5832463 --- /dev/null +++ b/hsl/CMakeLists.txt @@ -0,0 +1,75 @@ +cmake_minimum_required(VERSION 3.10) + +project(hsl + LANGUAGES C) + +set(INSTALL_PREFIX "") + +get_directory_property(hasParent PARENT_DIRECTORY) +if(hasParent) + set(INSTALL_PREFIX "${PROJECT_NAME}/") +endif() + +set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + +add_library(hsl SHARED src/hsl.c include/hsl.h) + +if(CMAKE_SIZEOF_VOID_P EQUAL 4) + set(NBITS_TWO "32") +elseif(CMAKE_SIZEOF_VOID_P EQUAL 8) + set(NBITS_TWO "64") +endif() + +set(ARCHIVE_DIR lib) +set(RUNTIME_DIR bin) + +if(${CMAKE_GENERATOR} MATCHES "Visual Studio*") + set(ARCHIVE_DIR extern/lib/win${NBITS_TWO}/microsoft) + set(RUNTIME_DIR bin/win${NBITS_TWO}) +elseif(${CMAKE_GENERATOR} MATCHES "MSYS Makefiles") + set(ARCHIVE_DIR extern/lib/win${NBITS_TWO}/mingw${NBITS_TWO}) + set(RUNTIME_DIR bin/win${NBITS_TWO}) +endif() + +install(TARGETS ${LIBRARY_NAME} EXPORT hslTargets + LIBRARY DESTINATION ${INSTALL_PREFIX}lib + ARCHIVE DESTINATION ${INSTALL_PREFIX}${ARCHIVE_DIR} + RUNTIME DESTINATION ${INSTALL_PREFIX}${RUNTIME_DIR}) + + +install(TARGETS hsl EXPORT hslTargets + LIBRARY DESTINATION ${INSTALL_PREFIX}lib + ARCHIVE DESTINATION ${INSTALL_PREFIX}lib + RUNTIME DESTINATION ${INSTALL_PREFIX}bin + INCLUDES DESTINATION ${INSTALL_PREFIX}include) + +target_include_directories(hsl PUBLIC + $ + $ +) + +install(DIRECTORY include/ DESTINATION ${INSTALL_PREFIX}include) + +install(EXPORT hslTargets + FILE hslTargets.cmake + NAMESPACE hsl:: + DESTINATION cmake +) + +include(CMakePackageConfigHelpers) +write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/hslConfigVersion.cmake + VERSION 13.1 + COMPATIBILITY SameMajorVersion +) + +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/cmake/${PROJECT_NAME}-config.cmake.in" + "${PROJECT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" + INSTALL_DESTINATION + cmake) + + + +install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/hslConfigVersion.cmake" + DESTINATION cmake +) diff --git a/hsl/cmake/hsl-config.cmake.in b/hsl/cmake/hsl-config.cmake.in new file mode 100644 index 0000000..9c15f36 --- /dev/null +++ b/hsl/cmake/hsl-config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake") +check_required_components("@PROJECT_NAME@") diff --git a/hsl/include/hsl.h b/hsl/include/hsl.h new file mode 100644 index 0000000..a7a0265 --- /dev/null +++ b/hsl/include/hsl.h @@ -0,0 +1,16 @@ +extern "C" { + void ma27id_(int* ICNTL, double* CNTL); + void ma27ad_(int *N, int *NZ, const int *IRN, const int* ICN, + int *IW, int* LIW, int* IKEEP, int *IW1, + int* NSTEPS, int* IFLAG, int* ICNTL, + double* CNTL, int *INFO, double* OPS); + void ma27bd_(int *N, int *NZ, const int *IRN, const int* ICN, + double* A, int* LA, int* IW, int* LIW, + int* IKEEP, int* NSTEPS, int* MAXFRT, + int* IW1, int* ICNTL, double* CNTL, + int* INFO); + void ma27cd_(int *N, double* A, int* LA, int* IW, + int* LIW, double* W, int* MAXFRT, + double* RHS, int* IW1, int* NSTEPS, + int* ICNTL, double* CNTL); +} diff --git a/hsl/src/hsl.c b/hsl/src/hsl.c new file mode 100644 index 0000000..49ca2a2 --- /dev/null +++ b/hsl/src/hsl.c @@ -0,0 +1,14 @@ +void ma27id_(int* ICNTL, double* CNTL) {} +void ma27ad_(int *N, int *NZ, const int *IRN, const int* ICN, + int *IW, int* LIW, int* IKEEP, int *IW1, + int* NSTEPS, int* IFLAG, int* ICNTL, + double* CNTL, int *INFO, double* OPS) {} +void ma27bd_(int *N, int *NZ, const int *IRN, const int* ICN, + double* A, int* LA, int* IW, int* LIW, + int* IKEEP, int* NSTEPS, int* MAXFRT, + int* IW1, int* ICNTL, double* CNTL, + int* INFO) {} +void ma27cd_(int *N, double* A, int* LA, int* IW, + int* LIW, double* W, int* MAXFRT, + double* RHS, int* IW1, int* NSTEPS, + int* ICNTL, double* CNTL) {}