From d4751488bb74040e3dd10250059d43b8d9da1425 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 22:46:09 +0100 Subject: [PATCH 01/48] Upgrade SuiteSparse to 7.3.1 Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 83 +++++++++++++++++++++++++++++++++++++------------- src/lu.cpp | 4 +-- 2 files changed, 63 insertions(+), 24 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1484985..dd1d4d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,9 @@ include(GNUInstallDirs) find_package(Java REQUIRED) find_package(JNI REQUIRED) -set(suitesparse_version "5.8.1") +set(suitesparse_version "7.3.1") set(suitesparse_archive "v${suitesparse_version}.tar.gz") +set(suitesparse_source_dir_name "SuiteSparse-${suitesparse_version}") set(suitesparse_url https://github.com/DrTimothyAldenDavis/SuiteSparse/archive/${suitesparse_archive}) set(THIRD_PARTY_DIR ${CMAKE_CURRENT_BINARY_DIR}/thirdparty) @@ -28,23 +29,68 @@ else() endif() # SuiteSparse -if(WIN32) - set(LAPACK_DIR ${THIRD_PARTY_DIR}/suitesparse_source/lapack_windows/x${OS_BITS}) -endif() +file(DOWNLOAD ${suitesparse_url} ${THIRD_PARTY_DIR}/${suitesparse_archive}) +file(ARCHIVE_EXTRACT INPUT ${THIRD_PARTY_DIR}/${suitesparse_archive} DESTINATION ${THIRD_PARTY_DIR}) -file(DOWNLOAD ${suitesparse_url} ${CMAKE_CURRENT_BINARY_DIR}/${suitesparse_archive}) +set(suitesparse_common_cmake_args ) -ExternalProject_Add(suitesparse - SOURCE_DIR ${THIRD_PARTY_DIR}/suitesparse_source - GIT_REPOSITORY "https://github.com/jlblancoc/suitesparse-metis-for-windows.git" - GIT_TAG "v1.5.0" - PATCH_COMMAND ${CMAKE_COMMAND} -E tar xzf ${CMAKE_CURRENT_BINARY_DIR}/${suitesparse_archive} +ExternalProject_Add(suitesparse_config + SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} + SOURCE_SUBDIR SuiteSparse_config CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - -DLAPACK_DIR=${LAPACK_DIR} - -DBUILD_METIS_DEFAULT=OFF + -DNOPENMP=true +) + +ExternalProject_Add(suitesparse_amd + SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} + SOURCE_SUBDIR AMD + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + DEPENDS suitesparse_config +) + +ExternalProject_Add(suitesparse_colamd + SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} + SOURCE_SUBDIR COLAMD + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + DEPENDS suitesparse_amd +) + +ExternalProject_Add(suitesparse_btf + SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} + SOURCE_SUBDIR BTF + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + DEPENDS suitesparse_colamd +) + +ExternalProject_Add(suitesparse_klu + SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} + SOURCE_SUBDIR KLU + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + DEPENDS suitesparse_btf +) + +ExternalProject_Add(suitesparse_cxsparse + SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} + SOURCE_SUBDIR CXSparse + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse + -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} ) set(SUITE_SPARSE_LIB_DIR ${THIRD_PARTY_DIR}/suitesparse/lib) @@ -54,20 +100,13 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(SUITE_SPARSE_LIB_POSTFIX d${CMAKE_STATIC_LIBRARY_SUFFIX}) endif() -if(WIN32) - set(SUITE_SPARSE_CONFIG_LIB ${SUITE_SPARSE_LIB_DIR}/suitesparseconfig${SUITE_SPARSE_LIB_POSTFIX}) -elseif(UNIX) - set(SUITE_SPARSE_LIB_SUFFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) - set(SUITE_SPARSE_CONFIG_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}suitesparseconfig${SUITE_SPARSE_LIB_POSTFIX}) -else() - message(FATAL_ERROR "System not supported: ${CMAKE_SYSTEM_NAME}") -endif() - +set(SUITE_SPARSE_CONFIG_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}suitesparseconfig${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_AMD_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}amd${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_COLAMD_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}colamd${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_BTF_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}btf${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_KLU_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}klu${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_CXSPARSE_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}cxsparse${SUITE_SPARSE_LIB_POSTFIX}) + set(SUITE_SPARSE_INCLUDE ${THIRD_PARTY_DIR}/suitesparse/include) set(CMAKE_CXX_STANDARD 11) @@ -78,7 +117,7 @@ set(SOURCES ) add_library(math SHARED ${SOURCES}) -add_dependencies(math suitesparse) +add_dependencies(math suitesparse_klu suitesparse_cxsparse) target_include_directories(math PUBLIC diff --git a/src/lu.cpp b/src/lu.cpp index 4bb5505..490c030 100644 --- a/src/lu.cpp +++ b/src/lu.cpp @@ -13,8 +13,8 @@ #include #include #include -#include -#include +#include +#include #include "jniwrapper.hpp" namespace powsybl { From 27995a2e2adbe2a62f75679721eea30abe26d22d Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 22:47:04 +0100 Subject: [PATCH 02/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dd1d4d2..67f4a53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,8 +32,6 @@ endif() file(DOWNLOAD ${suitesparse_url} ${THIRD_PARTY_DIR}/${suitesparse_archive}) file(ARCHIVE_EXTRACT INPUT ${THIRD_PARTY_DIR}/${suitesparse_archive} DESTINATION ${THIRD_PARTY_DIR}) -set(suitesparse_common_cmake_args ) - ExternalProject_Add(suitesparse_config SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} SOURCE_SUBDIR SuiteSparse_config From e79d088794812aa02a4fa45fbd0b0b623ec729d0 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 22:49:53 +0100 Subject: [PATCH 03/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 67f4a53..06ed0fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ ExternalProject_Add(suitesparse_cxsparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + DEPENDS suitesparse_config ) set(SUITE_SPARSE_LIB_DIR ${THIRD_PARTY_DIR}/suitesparse/lib) From df2183e340bd7eb13e5df2a604871db9dd4fe34b Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 22:57:42 +0100 Subject: [PATCH 04/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06ed0fa..67f4a53 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,7 +89,6 @@ ExternalProject_Add(suitesparse_cxsparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} - DEPENDS suitesparse_config ) set(SUITE_SPARSE_LIB_DIR ${THIRD_PARTY_DIR}/suitesparse/lib) From df894b4ed7a4652523ca76cfda269280e020bf73 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 22:59:55 +0100 Subject: [PATCH 05/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 67f4a53..06ed0fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -89,6 +89,7 @@ ExternalProject_Add(suitesparse_cxsparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} + DEPENDS suitesparse_config ) set(SUITE_SPARSE_LIB_DIR ${THIRD_PARTY_DIR}/suitesparse/lib) From b4421da90bcb6f6a0595a2f6b093c2b0393bf544 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 23:05:25 +0100 Subject: [PATCH 06/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3671bf..ef8c642 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,14 +10,6 @@ jobs: strategy: matrix: config: - - { - name: linux, - os: ubuntu-20.04, - container: 'ubuntu:18.04', - cmake_options: '-DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8', - artifact_name: libmath.so, - artifact_path: linux_64 - } - { name: macos, os: macos-11, From 33f901a56c43c608a1028d02df96e6c2ac3707b5 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 23:18:21 +0100 Subject: [PATCH 07/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 06ed0fa..6b7fd9a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,6 +40,7 @@ ExternalProject_Add(suitesparse_config -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DNOPENMP=true + -DBLA_VENDOR=OpenBLAS ) ExternalProject_Add(suitesparse_amd From 536c2dbea4b04c309372e07366fddcf2503da1dc Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 23:24:54 +0100 Subject: [PATCH 08/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 10 ++++------ CMakeLists.txt | 1 - 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ef8c642..df1054a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,12 +10,6 @@ jobs: strategy: matrix: config: - - { - name: macos, - os: macos-11, - artifact_name: libmath.dylib, - artifact_path: osx_64 - } - { name: windows, os: windows-2019, @@ -36,6 +30,10 @@ jobs: apt-get update apt-get install -y cmake + - name: Install Windows pre-requisites + if: matrix.config.name == 'windows' + run: conda install -c conda-forge blas + - name: Checkout sources uses: actions/checkout@v3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b7fd9a..06ed0fa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,7 +40,6 @@ ExternalProject_Add(suitesparse_config -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DNOPENMP=true - -DBLA_VENDOR=OpenBLAS ) ExternalProject_Add(suitesparse_amd From 22abdf420174478a696a807216a279d73832723a Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 23:32:54 +0100 Subject: [PATCH 09/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index df1054a..f086bf9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,7 +32,7 @@ jobs: - name: Install Windows pre-requisites if: matrix.config.name == 'windows' - run: conda install -c conda-forge blas + run: C:\Miniconda\Scripts\conda.exe install -c conda-forge blas - name: Checkout sources uses: actions/checkout@v3 From c47fdd7753fedabcb556857653e52ebe1435d0a6 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 23:40:02 +0100 Subject: [PATCH 10/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f086bf9..2259498 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,7 +19,7 @@ jobs: steps: # by default ubuntu 18.04 is shipped with cmake 3.10, to get a more recent version we get it from kitware repo - - name: Install pre-requisites + - name: Install Linux pre-requisites if: matrix.config.name == 'linux' run: | apt update @@ -32,7 +32,10 @@ jobs: - name: Install Windows pre-requisites if: matrix.config.name == 'windows' - run: C:\Miniconda\Scripts\conda.exe install -c conda-forge blas + run: | + %CONDA%\Scripts\conda.exe create --name myenv + %CONDA%\Scripts\conda.exe activate myenv + %CONDA%\Scripts\conda.exe install -c conda-forge blas - name: Checkout sources uses: actions/checkout@v3 From 609142cfb78e17068cde4d0ba2ee55e2e9038905 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Tue, 14 Nov 2023 23:41:26 +0100 Subject: [PATCH 11/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2259498..da1ea4f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -33,9 +33,9 @@ jobs: - name: Install Windows pre-requisites if: matrix.config.name == 'windows' run: | - %CONDA%\Scripts\conda.exe create --name myenv - %CONDA%\Scripts\conda.exe activate myenv - %CONDA%\Scripts\conda.exe install -c conda-forge blas + C:\Miniconda\Scripts\conda.exe create --name myenv + C:\Miniconda\Scripts\conda.exe activate myenv + C:\Miniconda\Scripts\conda.exe install -c conda-forge blas - name: Checkout sources uses: actions/checkout@v3 From 17481d8ce1b4722e00987ca72441910c88cc49b2 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 00:58:28 +0100 Subject: [PATCH 12/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 7 -- CMakeLists.txt | 1 + patch/CMakeLists.txt | 238 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 239 insertions(+), 7 deletions(-) create mode 100644 patch/CMakeLists.txt diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index da1ea4f..df870e7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,13 +30,6 @@ jobs: apt-get update apt-get install -y cmake - - name: Install Windows pre-requisites - if: matrix.config.name == 'windows' - run: | - C:\Miniconda\Scripts\conda.exe create --name myenv - C:\Miniconda\Scripts\conda.exe activate myenv - C:\Miniconda\Scripts\conda.exe install -c conda-forge blas - - name: Checkout sources uses: actions/checkout@v3 diff --git a/CMakeLists.txt b/CMakeLists.txt index 06ed0fa..ac92fec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,7 @@ endif() # SuiteSparse file(DOWNLOAD ${suitesparse_url} ${THIRD_PARTY_DIR}/${suitesparse_archive}) file(ARCHIVE_EXTRACT INPUT ${THIRD_PARTY_DIR}/${suitesparse_archive} DESTINATION ${THIRD_PARTY_DIR}) +file(COPY patch/CMakeLists.txt DESTINATION ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name}/SuiteSparse_config/) ExternalProject_Add(suitesparse_config SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} diff --git a/patch/CMakeLists.txt b/patch/CMakeLists.txt new file mode 100644 index 0000000..d3f79e1 --- /dev/null +++ b/patch/CMakeLists.txt @@ -0,0 +1,238 @@ +#------------------------------------------------------------------------------- +# SuiteSparse/SuiteSparse_config/CMakeLists.txt: cmake for SuiteSparse_config +#------------------------------------------------------------------------------- + +# SuiteSparse_config, Copyright (c) 2012-2023, Timothy A. Davis. +# All Rights Reserved. +# SPDX-License-Identifier: BSD-3-clause + +#------------------------------------------------------------------------------- +# get the version +#------------------------------------------------------------------------------- + +# cmake 3.22 is required to find the BLAS +cmake_minimum_required ( VERSION 3.22 ) + +# version of both SuiteSparse and SuiteSparse_config +set ( SUITESPARSE_DATE "Oct 31, 2023" ) +set ( SUITESPARSE_VERSION_MAJOR 7 ) +set ( SUITESPARSE_VERSION_MINOR 3 ) +set ( SUITESPARSE_VERSION_SUB 1 ) + +message ( STATUS "Building SuiteSparse_config version: v" + ${SUITESPARSE_VERSION_MAJOR}. + ${SUITESPARSE_VERSION_MINOR}. + ${SUITESPARSE_VERSION_SUB} " (" ${SUITESPARSE_DATE} ")" ) + +#------------------------------------------------------------------------------- +# SuiteSparse policies +#------------------------------------------------------------------------------- + +set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} + ${CMAKE_SOURCE_DIR}/cmake_modules ) + +include ( SuiteSparsePolicy ) + +if ( NOT NFORTRAN ) + include ( FortranCInterface ) +else ( ) + # No Fortran compiler available or enabled, configuration is not automatic. + set ( FortranCInterface_GLOBAL_MACRO ${SUITESPARSE_C_TO_FORTRAN} ) + set ( FortranCInterface_GLOBAL__MACRO ${SUITESPARSE_C_TO_FORTRAN} ) +endif ( ) + +#------------------------------------------------------------------------------- +# define the project +#------------------------------------------------------------------------------- + +project ( SuiteSparseConfig + VERSION "${SUITESPARSE_VERSION_MAJOR}.${SUITESPARSE_VERSION_MINOR}.${SUITESPARSE_VERSION_SUB}" + LANGUAGES C ) + +#------------------------------------------------------------------------------- +# find library dependencies +#------------------------------------------------------------------------------- + +option ( NOPENMP "ON: do not use OpenMP. OFF (default): use OpenMP" off ) +if ( NOPENMP ) + # OpenMP has been disabled + message ( STATUS "OpenMP disabled" ) + set ( OPENMP_FOUND false ) +else ( ) + find_package ( OpenMP ) +endif ( ) + +set ( SuiteSparse_BLAS_integer "int32_t" ) +set ( BLAS_FOUND true ) + +#------------------------------------------------------------------------------- +# configure files +#------------------------------------------------------------------------------- + +configure_file ( "Config/SuiteSparse_config.h.in" + "${PROJECT_SOURCE_DIR}/SuiteSparse_config.h" + NEWLINE_STYLE LF ) + +configure_file ( "Config/README.md.in" + "${PROJECT_SOURCE_DIR}/../README.md" + NEWLINE_STYLE LF ) + +#------------------------------------------------------------------------------- +# dynamic SuiteSparseConfig library properties +#------------------------------------------------------------------------------- + +file ( GLOB SUITESPARSECONFIG_SOURCES "*.c" ) + +add_library ( SuiteSparseConfig SHARED ${SUITESPARSECONFIG_SOURCES} ) +set_target_properties ( SuiteSparseConfig PROPERTIES + VERSION ${SUITESPARSE_VERSION_MAJOR}.${SUITESPARSE_VERSION_MINOR}.${SUITESPARSE_VERSION_SUB} + C_STANDARD 11 + C_STANDARD_REQUIRED ON + OUTPUT_NAME suitesparseconfig + SOVERSION ${SUITESPARSE_VERSION_MAJOR} + PUBLIC_HEADER "SuiteSparse_config.h" + WINDOWS_EXPORT_ALL_SYMBOLS ON ) + +target_include_directories ( SuiteSparseConfig + INTERFACE $ + $ ) + +#------------------------------------------------------------------------------- +# static SuiteSparseConfig library properties +#------------------------------------------------------------------------------- + +if ( NOT NSTATIC ) + add_library ( SuiteSparseConfig_static STATIC ${SUITESPARSECONFIG_SOURCES} ) + + set_target_properties ( SuiteSparseConfig_static PROPERTIES + VERSION ${SUITESPARSE_VERSION_MAJOR}.${SUITESPARSE_VERSION_MINOR}.${SUITESPARSE_VERSION_SUB} + C_STANDARD 11 + C_STANDARD_REQUIRED ON + OUTPUT_NAME suitesparseconfig + SOVERSION ${SUITESPARSE_VERSION_MAJOR} ) + + if ( MSVC ) + set_target_properties ( SuiteSparseConfig_static PROPERTIES + OUTPUT_NAME suitesparseconfig_static ) + endif ( ) + + target_include_directories ( SuiteSparseConfig_static + INTERFACE $ + $ ) +endif ( ) + +#------------------------------------------------------------------------------- +# add the library dependencies +#------------------------------------------------------------------------------- + +# libm: +if ( NOT WIN32 ) + target_link_libraries ( SuiteSparseConfig PRIVATE m ) + if ( NOT NSTATIC ) + target_link_libraries ( SuiteSparseConfig_static PUBLIC m ) + endif ( ) +endif ( ) + +# OpenMP: +if ( OPENMP_FOUND ) + message ( STATUS "OpenMP C libraries: ${OpenMP_C_LIBRARIES} ") + message ( STATUS "OpenMP C include: ${OpenMP_C_INCLUDE_DIRS} ") + message ( STATUS "OpenMP C flags: ${OpenMP_C_FLAGS} ") + target_link_libraries ( SuiteSparseConfig PRIVATE ${OpenMP_C_LIBRARIES} ) + if ( NOT NSTATIC ) + target_link_libraries ( SuiteSparseConfig_static PUBLIC ${OpenMP_C_LIBRARIES} ) + endif ( ) + set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} " ) + include_directories ( ${OpenMP_C_INCLUDE_DIRS} ) +endif ( ) + +# BLAS: +if ( BLAS_FOUND ) + # SuiteSparse_config does not itself require the BLAS. It just needs to + # know which BLAS is going to be used by the rest of SuiteSparse so it + # can configure SuiteSparse_config.h properly. + message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES} ") + message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS} ") + message ( STATUS "BLAS include: ${BLAS_INCLUDE_DIRS} ") +endif ( ) + +#------------------------------------------------------------------------------- +# SuiteSparseConfig installation location +#------------------------------------------------------------------------------- + +include ( CMakePackageConfigHelpers ) + +file ( GLOB SUITESPARSE_CMAKE_MODULES "cmake_modules/*" ) + +install ( TARGETS SuiteSparseConfig + EXPORT SuiteSparse_configTargets + LIBRARY DESTINATION ${SUITESPARSE_LIBDIR} + ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} + RUNTIME DESTINATION ${SUITESPARSE_BINDIR} + PUBLIC_HEADER DESTINATION ${SUITESPARSE_INCLUDEDIR} ) +install ( FILES + ${SUITESPARSE_CMAKE_MODULES} + DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse + COMPONENT Development ) +if ( NOT NSTATIC ) + install ( TARGETS SuiteSparseConfig_static + EXPORT SuiteSparse_configTargets + ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} ) +endif ( ) + +# create (temporary) export target file during build +export ( EXPORT SuiteSparse_configTargets + NAMESPACE SuiteSparse:: + FILE ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configTargets.cmake ) + +# install export target and config for find_package +install ( EXPORT SuiteSparse_configTargets + NAMESPACE SuiteSparse:: + DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse_config ) + +configure_package_config_file ( + Config/SuiteSparse_configConfig.cmake.in + ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfig.cmake + INSTALL_DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse_config ) + +write_basic_package_version_file ( + ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfigVersion.cmake + COMPATIBILITY SameMajorVersion ) + +install ( FILES + ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfigVersion.cmake + DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse_config ) + +#------------------------------------------------------------------------------- +# create pkg-config file +#------------------------------------------------------------------------------- + +if ( NOT MSVC ) + set ( prefix "${CMAKE_INSTALL_PREFIX}" ) + set ( exec_prefix "\${prefix}" ) + cmake_path ( IS_ABSOLUTE SUITESPARSE_LIBDIR SUITESPARSE_LIBDIR_IS_ABSOLUTE ) + if (SUITESPARSE_LIBDIR_IS_ABSOLUTE) + set ( libdir "${SUITESPARSE_LIBDIR}") + else ( ) + set ( libdir "\${exec_prefix}/${SUITESPARSE_LIBDIR}") + endif ( ) + cmake_path ( IS_ABSOLUTE SUITESPARSE_INCLUDEDIR SUITESPARSE_INCLUDEDIR_IS_ABSOLUTE ) + if (SUITESPARSE_INCLUDEDIR_IS_ABSOLUTE) + set ( includedir "${SUITESPARSE_INCLUDEDIR}") + else ( ) + set ( includedir "\${prefix}/${SUITESPARSE_INCLUDEDIR}") + endif ( ) + configure_file ( + Config/SuiteSparse_config.pc.in + SuiteSparse_config.pc + @ONLY + NEWLINE_STYLE LF ) + install ( FILES + ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_config.pc + DESTINATION ${SUITESPARSE_LIBDIR}/pkgconfig ) +endif ( ) + +#------------------------------------------------------------------------------- + +include ( SuiteSparseReport ) From 3ab9316fb1c200d0c6a430ee0a98fc0b6ac50427 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 11:34:20 +0100 Subject: [PATCH 13/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ac92fec..0bf357f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,7 +94,11 @@ ExternalProject_Add(suitesparse_cxsparse ) set(SUITE_SPARSE_LIB_DIR ${THIRD_PARTY_DIR}/suitesparse/lib) -set(SUITE_SPARSE_LIB_PREFIX lib) +if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + set(SUITE_SPARSE_LIB_PREFIX "") +else() + set(SUITE_SPARSE_LIB_PREFIX lib) +endif() set(SUITE_SPARSE_LIB_POSTFIX ${CMAKE_STATIC_LIBRARY_SUFFIX}) if ("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") set(SUITE_SPARSE_LIB_POSTFIX d${CMAKE_STATIC_LIBRARY_SUFFIX}) From 26da1ab20a314b33612c7a726fe7f9e53e36fc39 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 12:49:24 +0100 Subject: [PATCH 14/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index df870e7..a3671bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,6 +10,20 @@ jobs: strategy: matrix: config: + - { + name: linux, + os: ubuntu-20.04, + container: 'ubuntu:18.04', + cmake_options: '-DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8', + artifact_name: libmath.so, + artifact_path: linux_64 + } + - { + name: macos, + os: macos-11, + artifact_name: libmath.dylib, + artifact_path: osx_64 + } - { name: windows, os: windows-2019, @@ -19,7 +33,7 @@ jobs: steps: # by default ubuntu 18.04 is shipped with cmake 3.10, to get a more recent version we get it from kitware repo - - name: Install Linux pre-requisites + - name: Install pre-requisites if: matrix.config.name == 'linux' run: | apt update From 3d032060ac66255a008cade1405d2b425045f5b6 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 12:55:32 +0100 Subject: [PATCH 15/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 4 +++- {patch => SuiteSparse_config_patch}/CMakeLists.txt | 0 2 files changed, 3 insertions(+), 1 deletion(-) rename {patch => SuiteSparse_config_patch}/CMakeLists.txt (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0bf357f..2ee99c4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,7 +31,9 @@ endif() # SuiteSparse file(DOWNLOAD ${suitesparse_url} ${THIRD_PARTY_DIR}/${suitesparse_archive}) file(ARCHIVE_EXTRACT INPUT ${THIRD_PARTY_DIR}/${suitesparse_archive} DESTINATION ${THIRD_PARTY_DIR}) -file(COPY patch/CMakeLists.txt DESTINATION ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name}/SuiteSparse_config/) +# patch CMakeLists.txt of SuiteSparse_config module to avoid blas check as it is hard to compile it on windows +# and that we don't need it for the suitesparse modules we beed (amd, colamd, btf, klu and cxsparse) +file(COPY SuiteSparse_config_patch/CMakeLists.txt DESTINATION ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name}/SuiteSparse_config/) ExternalProject_Add(suitesparse_config SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} diff --git a/patch/CMakeLists.txt b/SuiteSparse_config_patch/CMakeLists.txt similarity index 100% rename from patch/CMakeLists.txt rename to SuiteSparse_config_patch/CMakeLists.txt From 5bed0da2e02809a9c7a3d4e2c9ae0fad4e46b32e Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 14:08:32 +0100 Subject: [PATCH 16/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2ee99c4..309605e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -cmake_minimum_required(VERSION 3.0.2) +cmake_minimum_required(VERSION 3.18.0...3.27.7) project(math) @@ -154,10 +154,10 @@ elseif(UNIX) endif() target_link_libraries(math + ${SUITE_SPARSE_CONFIG_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_COLAMD_LIB} ${SUITE_SPARSE_AMD_LIB} - ${SUITE_SPARSE_CONFIG_LIB} ) From 084055a346eeaac74943985534d6e0c8170a8e24 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 14:43:45 +0100 Subject: [PATCH 17/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 309605e..6691a56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,9 +155,9 @@ endif() target_link_libraries(math ${SUITE_SPARSE_CONFIG_LIB} + ${SUITE_SPARSE_AMD_LIB} + ${SUITE_SPARSE_COLAMD_LIB} + ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} - ${SUITE_SPARSE_BTF_LIB} - ${SUITE_SPARSE_COLAMD_LIB} - ${SUITE_SPARSE_AMD_LIB} ) From ce029f7ab13825f04671dd2ff1b6a7102577ddbf Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 14:54:10 +0100 Subject: [PATCH 18/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6691a56..92c9121 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,6 +13,8 @@ include(GNUInstallDirs) find_package(Java REQUIRED) find_package(JNI REQUIRED) +set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(suitesparse_version "7.3.1") set(suitesparse_archive "v${suitesparse_version}.tar.gz") set(suitesparse_source_dir_name "SuiteSparse-${suitesparse_version}") From 673802f89d4f51f966c1dd48997adc826eb6fc21 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 15:02:28 +0100 Subject: [PATCH 19/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3671bf..fd48c26 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: - name: Build shell: bash - run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --parallel --config Release + run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --parallel --config Release --verbose - name: Upload artifact uses: actions/upload-artifact@v1 From ab08ff1b5d395f7055006bb24c65d395f688ed88 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 15:06:52 +0100 Subject: [PATCH 20/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 92c9121..9ba9cc9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,11 +155,12 @@ elseif(UNIX) ) endif() -target_link_libraries(math +target_link_libraries( ${SUITE_SPARSE_CONFIG_LIB} ${SUITE_SPARSE_AMD_LIB} ${SUITE_SPARSE_COLAMD_LIB} ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} + math ) From 439b2d89659db4ac080af541a373e27db07aa3ab Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 15:27:53 +0100 Subject: [PATCH 21/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index fd48c26..e7a57d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: - name: Build shell: bash - run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --parallel --config Release --verbose + run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --config Release --verbose - name: Upload artifact uses: actions/upload-artifact@v1 From cfb523870fc82d02f142542cfb0841f4656ca364 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 15:30:25 +0100 Subject: [PATCH 22/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9ba9cc9..92c9121 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -155,12 +155,11 @@ elseif(UNIX) ) endif() -target_link_libraries( +target_link_libraries(math ${SUITE_SPARSE_CONFIG_LIB} ${SUITE_SPARSE_AMD_LIB} ${SUITE_SPARSE_COLAMD_LIB} ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} - math ) From c4d7e15cd1bfd13c79bdaf225ef54035e289d083 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 15:52:03 +0100 Subject: [PATCH 23/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 92c9121..c0a087d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,6 +156,7 @@ elseif(UNIX) endif() target_link_libraries(math + PUBLIC ${SUITE_SPARSE_CONFIG_LIB} ${SUITE_SPARSE_AMD_LIB} ${SUITE_SPARSE_COLAMD_LIB} From ca5b2fec68b535fc6b1d64e605504162809edf99 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 16:02:16 +0100 Subject: [PATCH 24/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c0a087d..7b47e69 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,11 +156,10 @@ elseif(UNIX) endif() target_link_libraries(math - PUBLIC - ${SUITE_SPARSE_CONFIG_LIB} - ${SUITE_SPARSE_AMD_LIB} - ${SUITE_SPARSE_COLAMD_LIB} - ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} + ${SUITE_SPARSE_BTF_LIB} + ${SUITE_SPARSE_COLAMD_LIB} + ${SUITE_SPARSE_AMD_LIB} + ${SUITE_SPARSE_CONFIG_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} ) From 7dcdf6f91cff2f36dbac6eb5aabe7f070b870abc Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 17:30:53 +0100 Subject: [PATCH 25/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b47e69..c0a087d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -156,10 +156,11 @@ elseif(UNIX) endif() target_link_libraries(math - ${SUITE_SPARSE_KLU_LIB} - ${SUITE_SPARSE_BTF_LIB} - ${SUITE_SPARSE_COLAMD_LIB} - ${SUITE_SPARSE_AMD_LIB} + PUBLIC ${SUITE_SPARSE_CONFIG_LIB} + ${SUITE_SPARSE_AMD_LIB} + ${SUITE_SPARSE_COLAMD_LIB} + ${SUITE_SPARSE_BTF_LIB} + ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} ) From 9155675e3bc8689d82d9eaf43674c846c56a9b51 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 18:13:14 +0100 Subject: [PATCH 26/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 10 +++++++--- src/empty.cpp | 0 2 files changed, 7 insertions(+), 3 deletions(-) create mode 100644 src/empty.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index c0a087d..2af1c72 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -123,11 +123,14 @@ set(SOURCES src/lu.cpp src/jniwrapper.cpp ) -add_library(math SHARED ${SOURCES}) -add_dependencies(math suitesparse_klu suitesparse_cxsparse) +add_library(mathlib STATIC ${SOURCES}) -target_include_directories(math +add_library(math SHARED src/empty.cpp) + +add_dependencies(mathlib suitesparse_klu suitesparse_cxsparse) + +target_include_directories(mathlib PUBLIC ${JNI_INCLUDE_DIRS} ${SUITE_SPARSE_INCLUDE} @@ -163,4 +166,5 @@ target_link_libraries(math ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} + mathlib ) diff --git a/src/empty.cpp b/src/empty.cpp new file mode 100644 index 0000000..e69de29 From 5c82c30f0973803f7316be4415a166682f24965c Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 19:39:23 +0100 Subject: [PATCH 27/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 2 +- CMakeLists.txt | 12 +++--------- src/empty.cpp | 0 3 files changed, 4 insertions(+), 10 deletions(-) delete mode 100644 src/empty.cpp diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7a57d8..a3671bf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -53,7 +53,7 @@ jobs: - name: Build shell: bash - run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --config Release --verbose + run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --parallel --config Release - name: Upload artifact uses: actions/upload-artifact@v1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 2af1c72..177e09a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,6 @@ include(GNUInstallDirs) find_package(Java REQUIRED) find_package(JNI REQUIRED) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - set(suitesparse_version "7.3.1") set(suitesparse_archive "v${suitesparse_version}.tar.gz") set(suitesparse_source_dir_name "SuiteSparse-${suitesparse_version}") @@ -114,7 +112,6 @@ set(SUITE_SPARSE_COLAMD_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}co set(SUITE_SPARSE_BTF_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}btf${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_KLU_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}klu${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_CXSPARSE_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}cxsparse${SUITE_SPARSE_LIB_POSTFIX}) - set(SUITE_SPARSE_INCLUDE ${THIRD_PARTY_DIR}/suitesparse/include) set(CMAKE_CXX_STANDARD 11) @@ -124,13 +121,11 @@ set(SOURCES src/jniwrapper.cpp ) -add_library(mathlib STATIC ${SOURCES}) - -add_library(math SHARED src/empty.cpp) +add_library(math SHARED ${SOURCES}) -add_dependencies(mathlib suitesparse_klu suitesparse_cxsparse) +add_dependencies(math suitesparse_klu suitesparse_cxsparse) -target_include_directories(mathlib +target_include_directories(math PUBLIC ${JNI_INCLUDE_DIRS} ${SUITE_SPARSE_INCLUDE} @@ -166,5 +161,4 @@ target_link_libraries(math ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} - mathlib ) diff --git a/src/empty.cpp b/src/empty.cpp deleted file mode 100644 index e69de29..0000000 From ab64d93b137a1ddc157183202fe6394a2699ec81 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 20:39:01 +0100 Subject: [PATCH 28/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 177e09a..0c2eed9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -120,7 +120,6 @@ set(SOURCES src/lu.cpp src/jniwrapper.cpp ) - add_library(math SHARED ${SOURCES}) add_dependencies(math suitesparse_klu suitesparse_cxsparse) @@ -154,11 +153,10 @@ elseif(UNIX) endif() target_link_libraries(math - PUBLIC - ${SUITE_SPARSE_CONFIG_LIB} - ${SUITE_SPARSE_AMD_LIB} - ${SUITE_SPARSE_COLAMD_LIB} - ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} + ${SUITE_SPARSE_BTF_LIB} + ${SUITE_SPARSE_COLAMD_LIB} + ${SUITE_SPARSE_AMD_LIB} + ${SUITE_SPARSE_CONFIG_LIB} ) From 0205aca1a92f11c1381a5cdccc0276e21ba3e988 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 22:59:07 +0100 Subject: [PATCH 29/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 20 +++++++------------- src/empty.cpp | 0 2 files changed, 7 insertions(+), 13 deletions(-) delete mode 100644 src/empty.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2af1c72..2759031 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,6 @@ include(GNUInstallDirs) find_package(Java REQUIRED) find_package(JNI REQUIRED) -set(CMAKE_POSITION_INDEPENDENT_CODE ON) - set(suitesparse_version "7.3.1") set(suitesparse_archive "v${suitesparse_version}.tar.gz") set(suitesparse_source_dir_name "SuiteSparse-${suitesparse_version}") @@ -124,13 +122,11 @@ set(SOURCES src/jniwrapper.cpp ) -add_library(mathlib STATIC ${SOURCES}) - -add_library(math SHARED src/empty.cpp) +add_library(math SHARED ${SOURCES}) -add_dependencies(mathlib suitesparse_klu suitesparse_cxsparse) +add_dependencies(math suitesparse_klu suitesparse_cxsparse) -target_include_directories(mathlib +target_include_directories(math PUBLIC ${JNI_INCLUDE_DIRS} ${SUITE_SPARSE_INCLUDE} @@ -159,12 +155,10 @@ elseif(UNIX) endif() target_link_libraries(math - PUBLIC - ${SUITE_SPARSE_CONFIG_LIB} - ${SUITE_SPARSE_AMD_LIB} - ${SUITE_SPARSE_COLAMD_LIB} - ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_KLU_LIB} + ${SUITE_SPARSE_BTF_LIB} + ${SUITE_SPARSE_COLAMD_LIB} + ${SUITE_SPARSE_AMD_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} - mathlib + ${SUITE_SPARSE_CONFIG_LIB} ) diff --git a/src/empty.cpp b/src/empty.cpp deleted file mode 100644 index e69de29..0000000 From 44c8272c7b9edb3cb86acaacb79287d122430a07 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 23:05:45 +0100 Subject: [PATCH 30/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e7a57d8..ff8c954 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,7 +14,7 @@ jobs: name: linux, os: ubuntu-20.04, container: 'ubuntu:18.04', - cmake_options: '-DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8', + cmake_options: '', artifact_name: libmath.so, artifact_path: linux_64 } From 70c5a8873d5d2b41e88c20a58ff6059a1cc60626 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 23:07:48 +0100 Subject: [PATCH 31/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2759031..8b44b1b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -40,8 +40,6 @@ ExternalProject_Add(suitesparse_config SOURCE_SUBDIR SuiteSparse_config CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DNOPENMP=true ) @@ -50,8 +48,6 @@ ExternalProject_Add(suitesparse_amd SOURCE_SUBDIR AMD CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} DEPENDS suitesparse_config ) @@ -60,8 +56,6 @@ ExternalProject_Add(suitesparse_colamd SOURCE_SUBDIR COLAMD CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} DEPENDS suitesparse_amd ) @@ -70,8 +64,6 @@ ExternalProject_Add(suitesparse_btf SOURCE_SUBDIR BTF CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} DEPENDS suitesparse_colamd ) @@ -80,8 +72,6 @@ ExternalProject_Add(suitesparse_klu SOURCE_SUBDIR KLU CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} DEPENDS suitesparse_btf ) @@ -90,8 +80,6 @@ ExternalProject_Add(suitesparse_cxsparse SOURCE_SUBDIR CXSparse CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} - -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} - -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} DEPENDS suitesparse_config ) From ac3607a7cbfab2992c9818e807564645a200b3df Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 23:11:31 +0100 Subject: [PATCH 32/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ff8c954..280ff1f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -37,7 +37,7 @@ jobs: if: matrix.config.name == 'linux' run: | apt update - apt-get install -y g++-4.8 gcc-4.8 liblapack-dev libblas-dev ca-certificates gnupg software-properties-common wget default-jdk git + apt-get install -y g++ gcc liblapack-dev libblas-dev ca-certificates gnupg software-properties-common wget default-jdk git wget https://apt.kitware.com/keys/kitware-archive-latest.asc apt-key add kitware-archive-latest.asc apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' From c0a3171d97025ce8cb0f9c5aaf99df4ab5d0883a Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 23:11:42 +0100 Subject: [PATCH 33/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 280ff1f..6198b64 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -18,18 +18,6 @@ jobs: artifact_name: libmath.so, artifact_path: linux_64 } - - { - name: macos, - os: macos-11, - artifact_name: libmath.dylib, - artifact_path: osx_64 - } - - { - name: windows, - os: windows-2019, - artifact_name: math.dll, - artifact_path: windows_64/Release - } steps: # by default ubuntu 18.04 is shipped with cmake 3.10, to get a more recent version we get it from kitware repo From c1a5c76c31f9d4c1b8d6d919b383ca0635de8a4c Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Wed, 15 Nov 2023 23:24:15 +0100 Subject: [PATCH 34/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 16 ++++++++++++++-- CMakeLists.txt | 4 +--- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6198b64..e7a57d8 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -14,10 +14,22 @@ jobs: name: linux, os: ubuntu-20.04, container: 'ubuntu:18.04', - cmake_options: '', + cmake_options: '-DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8', artifact_name: libmath.so, artifact_path: linux_64 } + - { + name: macos, + os: macos-11, + artifact_name: libmath.dylib, + artifact_path: osx_64 + } + - { + name: windows, + os: windows-2019, + artifact_name: math.dll, + artifact_path: windows_64/Release + } steps: # by default ubuntu 18.04 is shipped with cmake 3.10, to get a more recent version we get it from kitware repo @@ -25,7 +37,7 @@ jobs: if: matrix.config.name == 'linux' run: | apt update - apt-get install -y g++ gcc liblapack-dev libblas-dev ca-certificates gnupg software-properties-common wget default-jdk git + apt-get install -y g++-4.8 gcc-4.8 liblapack-dev libblas-dev ca-certificates gnupg software-properties-common wget default-jdk git wget https://apt.kitware.com/keys/kitware-archive-latest.asc apt-key add kitware-archive-latest.asc apt-add-repository 'deb https://apt.kitware.com/ubuntu/ bionic main' diff --git a/CMakeLists.txt b/CMakeLists.txt index 8b44b1b..a7291d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,7 +100,6 @@ set(SUITE_SPARSE_COLAMD_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}co set(SUITE_SPARSE_BTF_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}btf${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_KLU_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}klu${SUITE_SPARSE_LIB_POSTFIX}) set(SUITE_SPARSE_CXSPARSE_LIB ${SUITE_SPARSE_LIB_DIR}/${SUITE_SPARSE_LIB_PREFIX}cxsparse${SUITE_SPARSE_LIB_POSTFIX}) - set(SUITE_SPARSE_INCLUDE ${THIRD_PARTY_DIR}/suitesparse/include) set(CMAKE_CXX_STANDARD 11) @@ -109,7 +108,6 @@ set(SOURCES src/lu.cpp src/jniwrapper.cpp ) - add_library(math SHARED ${SOURCES}) add_dependencies(math suitesparse_klu suitesparse_cxsparse) @@ -144,9 +142,9 @@ endif() target_link_libraries(math ${SUITE_SPARSE_KLU_LIB} + ${SUITE_SPARSE_CXSPARSE_LIB} ${SUITE_SPARSE_BTF_LIB} ${SUITE_SPARSE_COLAMD_LIB} ${SUITE_SPARSE_AMD_LIB} - ${SUITE_SPARSE_CXSPARSE_LIB} ${SUITE_SPARSE_CONFIG_LIB} ) From e27ea903a913b8f1a939e1a7787d51106199b66d Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 18:20:59 +0100 Subject: [PATCH 35/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index a7291d2..44218ed 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ ExternalProject_Add(suitesparse_config CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DNOPENMP=true + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error ) ExternalProject_Add(suitesparse_amd From 0efa2e89a2e429e77ac804e9074c48c57889a5fe Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 18:29:10 +0100 Subject: [PATCH 36/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 44218ed..2e14266 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,7 @@ ExternalProject_Add(suitesparse_amd SOURCE_SUBDIR AMD CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_config ) @@ -57,6 +58,7 @@ ExternalProject_Add(suitesparse_colamd SOURCE_SUBDIR COLAMD CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_amd ) @@ -65,6 +67,7 @@ ExternalProject_Add(suitesparse_btf SOURCE_SUBDIR BTF CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_colamd ) @@ -73,6 +76,7 @@ ExternalProject_Add(suitesparse_klu SOURCE_SUBDIR KLU CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_btf ) @@ -81,6 +85,7 @@ ExternalProject_Add(suitesparse_cxsparse SOURCE_SUBDIR CXSparse CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_config ) From 1ee649f80ccf763aa1f017dcd86d325ee6d1a9db Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 20:20:48 +0100 Subject: [PATCH 37/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2e14266..61a26e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,7 +33,9 @@ file(DOWNLOAD ${suitesparse_url} ${THIRD_PARTY_DIR}/${suitesparse_archive}) file(ARCHIVE_EXTRACT INPUT ${THIRD_PARTY_DIR}/${suitesparse_archive} DESTINATION ${THIRD_PARTY_DIR}) # patch CMakeLists.txt of SuiteSparse_config module to avoid blas check as it is hard to compile it on windows # and that we don't need it for the suitesparse modules we beed (amd, colamd, btf, klu and cxsparse) -file(COPY SuiteSparse_config_patch/CMakeLists.txt DESTINATION ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name}/SuiteSparse_config/) +file(READ ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name}/SuiteSparse_config/CMakeLists.txt FILE_CONTENTS) +string(REPLACE "include ( SuiteSparseBLAS )" "set ( SuiteSparse_BLAS_integer \"int32_t\" )\nset ( BLAS_FOUND true )" FILE_CONTENTS ${FILE_CONTENTS}) +file(WRITE ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name}/SuiteSparse_config/CMakeLists.txt ${FILE_CONTENTS}) ExternalProject_Add(suitesparse_config SOURCE_DIR ${THIRD_PARTY_DIR}/${suitesparse_source_dir_name} From 13f2174b36e8155309b18b74341b05ff1e6dfe7d Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 20:24:14 +0100 Subject: [PATCH 38/48] Wip Signed-off-by: Geoffroy Jamgotchian --- CMakeLists.txt | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61a26e6..322d9e8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,8 @@ ExternalProject_Add(suitesparse_config SOURCE_SUBDIR SuiteSparse_config CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DNOPENMP=true -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error ) @@ -51,6 +53,8 @@ ExternalProject_Add(suitesparse_amd SOURCE_SUBDIR AMD CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_config ) @@ -60,6 +64,8 @@ ExternalProject_Add(suitesparse_colamd SOURCE_SUBDIR COLAMD CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_amd ) @@ -69,6 +75,8 @@ ExternalProject_Add(suitesparse_btf SOURCE_SUBDIR BTF CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_colamd ) @@ -78,6 +86,8 @@ ExternalProject_Add(suitesparse_klu SOURCE_SUBDIR KLU CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_btf ) @@ -87,6 +97,8 @@ ExternalProject_Add(suitesparse_cxsparse SOURCE_SUBDIR CXSparse CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=${THIRD_PARTY_DIR}/suitesparse -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} + -DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER} + -DCMAKE_C_COMPILER=${CMAKE_C_COMPILER} -DCMAKE_POSITION_INDEPENDENT_CODE=ON # otherwise we get a link error DEPENDS suitesparse_config ) From 7d74e2aff49a9b6dfa8accbe960871d608787fe8 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 20:32:54 +0100 Subject: [PATCH 39/48] Wip Signed-off-by: Geoffroy Jamgotchian --- SuiteSparse_config_patch/CMakeLists.txt | 238 ------------------------ 1 file changed, 238 deletions(-) delete mode 100644 SuiteSparse_config_patch/CMakeLists.txt diff --git a/SuiteSparse_config_patch/CMakeLists.txt b/SuiteSparse_config_patch/CMakeLists.txt deleted file mode 100644 index d3f79e1..0000000 --- a/SuiteSparse_config_patch/CMakeLists.txt +++ /dev/null @@ -1,238 +0,0 @@ -#------------------------------------------------------------------------------- -# SuiteSparse/SuiteSparse_config/CMakeLists.txt: cmake for SuiteSparse_config -#------------------------------------------------------------------------------- - -# SuiteSparse_config, Copyright (c) 2012-2023, Timothy A. Davis. -# All Rights Reserved. -# SPDX-License-Identifier: BSD-3-clause - -#------------------------------------------------------------------------------- -# get the version -#------------------------------------------------------------------------------- - -# cmake 3.22 is required to find the BLAS -cmake_minimum_required ( VERSION 3.22 ) - -# version of both SuiteSparse and SuiteSparse_config -set ( SUITESPARSE_DATE "Oct 31, 2023" ) -set ( SUITESPARSE_VERSION_MAJOR 7 ) -set ( SUITESPARSE_VERSION_MINOR 3 ) -set ( SUITESPARSE_VERSION_SUB 1 ) - -message ( STATUS "Building SuiteSparse_config version: v" - ${SUITESPARSE_VERSION_MAJOR}. - ${SUITESPARSE_VERSION_MINOR}. - ${SUITESPARSE_VERSION_SUB} " (" ${SUITESPARSE_DATE} ")" ) - -#------------------------------------------------------------------------------- -# SuiteSparse policies -#------------------------------------------------------------------------------- - -set ( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} - ${CMAKE_SOURCE_DIR}/cmake_modules ) - -include ( SuiteSparsePolicy ) - -if ( NOT NFORTRAN ) - include ( FortranCInterface ) -else ( ) - # No Fortran compiler available or enabled, configuration is not automatic. - set ( FortranCInterface_GLOBAL_MACRO ${SUITESPARSE_C_TO_FORTRAN} ) - set ( FortranCInterface_GLOBAL__MACRO ${SUITESPARSE_C_TO_FORTRAN} ) -endif ( ) - -#------------------------------------------------------------------------------- -# define the project -#------------------------------------------------------------------------------- - -project ( SuiteSparseConfig - VERSION "${SUITESPARSE_VERSION_MAJOR}.${SUITESPARSE_VERSION_MINOR}.${SUITESPARSE_VERSION_SUB}" - LANGUAGES C ) - -#------------------------------------------------------------------------------- -# find library dependencies -#------------------------------------------------------------------------------- - -option ( NOPENMP "ON: do not use OpenMP. OFF (default): use OpenMP" off ) -if ( NOPENMP ) - # OpenMP has been disabled - message ( STATUS "OpenMP disabled" ) - set ( OPENMP_FOUND false ) -else ( ) - find_package ( OpenMP ) -endif ( ) - -set ( SuiteSparse_BLAS_integer "int32_t" ) -set ( BLAS_FOUND true ) - -#------------------------------------------------------------------------------- -# configure files -#------------------------------------------------------------------------------- - -configure_file ( "Config/SuiteSparse_config.h.in" - "${PROJECT_SOURCE_DIR}/SuiteSparse_config.h" - NEWLINE_STYLE LF ) - -configure_file ( "Config/README.md.in" - "${PROJECT_SOURCE_DIR}/../README.md" - NEWLINE_STYLE LF ) - -#------------------------------------------------------------------------------- -# dynamic SuiteSparseConfig library properties -#------------------------------------------------------------------------------- - -file ( GLOB SUITESPARSECONFIG_SOURCES "*.c" ) - -add_library ( SuiteSparseConfig SHARED ${SUITESPARSECONFIG_SOURCES} ) -set_target_properties ( SuiteSparseConfig PROPERTIES - VERSION ${SUITESPARSE_VERSION_MAJOR}.${SUITESPARSE_VERSION_MINOR}.${SUITESPARSE_VERSION_SUB} - C_STANDARD 11 - C_STANDARD_REQUIRED ON - OUTPUT_NAME suitesparseconfig - SOVERSION ${SUITESPARSE_VERSION_MAJOR} - PUBLIC_HEADER "SuiteSparse_config.h" - WINDOWS_EXPORT_ALL_SYMBOLS ON ) - -target_include_directories ( SuiteSparseConfig - INTERFACE $ - $ ) - -#------------------------------------------------------------------------------- -# static SuiteSparseConfig library properties -#------------------------------------------------------------------------------- - -if ( NOT NSTATIC ) - add_library ( SuiteSparseConfig_static STATIC ${SUITESPARSECONFIG_SOURCES} ) - - set_target_properties ( SuiteSparseConfig_static PROPERTIES - VERSION ${SUITESPARSE_VERSION_MAJOR}.${SUITESPARSE_VERSION_MINOR}.${SUITESPARSE_VERSION_SUB} - C_STANDARD 11 - C_STANDARD_REQUIRED ON - OUTPUT_NAME suitesparseconfig - SOVERSION ${SUITESPARSE_VERSION_MAJOR} ) - - if ( MSVC ) - set_target_properties ( SuiteSparseConfig_static PROPERTIES - OUTPUT_NAME suitesparseconfig_static ) - endif ( ) - - target_include_directories ( SuiteSparseConfig_static - INTERFACE $ - $ ) -endif ( ) - -#------------------------------------------------------------------------------- -# add the library dependencies -#------------------------------------------------------------------------------- - -# libm: -if ( NOT WIN32 ) - target_link_libraries ( SuiteSparseConfig PRIVATE m ) - if ( NOT NSTATIC ) - target_link_libraries ( SuiteSparseConfig_static PUBLIC m ) - endif ( ) -endif ( ) - -# OpenMP: -if ( OPENMP_FOUND ) - message ( STATUS "OpenMP C libraries: ${OpenMP_C_LIBRARIES} ") - message ( STATUS "OpenMP C include: ${OpenMP_C_INCLUDE_DIRS} ") - message ( STATUS "OpenMP C flags: ${OpenMP_C_FLAGS} ") - target_link_libraries ( SuiteSparseConfig PRIVATE ${OpenMP_C_LIBRARIES} ) - if ( NOT NSTATIC ) - target_link_libraries ( SuiteSparseConfig_static PUBLIC ${OpenMP_C_LIBRARIES} ) - endif ( ) - set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS} " ) - include_directories ( ${OpenMP_C_INCLUDE_DIRS} ) -endif ( ) - -# BLAS: -if ( BLAS_FOUND ) - # SuiteSparse_config does not itself require the BLAS. It just needs to - # know which BLAS is going to be used by the rest of SuiteSparse so it - # can configure SuiteSparse_config.h properly. - message ( STATUS "BLAS libraries: ${BLAS_LIBRARIES} ") - message ( STATUS "BLAS linker flags: ${BLAS_LINKER_FLAGS} ") - message ( STATUS "BLAS include: ${BLAS_INCLUDE_DIRS} ") -endif ( ) - -#------------------------------------------------------------------------------- -# SuiteSparseConfig installation location -#------------------------------------------------------------------------------- - -include ( CMakePackageConfigHelpers ) - -file ( GLOB SUITESPARSE_CMAKE_MODULES "cmake_modules/*" ) - -install ( TARGETS SuiteSparseConfig - EXPORT SuiteSparse_configTargets - LIBRARY DESTINATION ${SUITESPARSE_LIBDIR} - ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} - RUNTIME DESTINATION ${SUITESPARSE_BINDIR} - PUBLIC_HEADER DESTINATION ${SUITESPARSE_INCLUDEDIR} ) -install ( FILES - ${SUITESPARSE_CMAKE_MODULES} - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse - COMPONENT Development ) -if ( NOT NSTATIC ) - install ( TARGETS SuiteSparseConfig_static - EXPORT SuiteSparse_configTargets - ARCHIVE DESTINATION ${SUITESPARSE_LIBDIR} ) -endif ( ) - -# create (temporary) export target file during build -export ( EXPORT SuiteSparse_configTargets - NAMESPACE SuiteSparse:: - FILE ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configTargets.cmake ) - -# install export target and config for find_package -install ( EXPORT SuiteSparse_configTargets - NAMESPACE SuiteSparse:: - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse_config ) - -configure_package_config_file ( - Config/SuiteSparse_configConfig.cmake.in - ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfig.cmake - INSTALL_DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse_config ) - -write_basic_package_version_file ( - ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfigVersion.cmake - COMPATIBILITY SameMajorVersion ) - -install ( FILES - ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfig.cmake - ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_configConfigVersion.cmake - DESTINATION ${SUITESPARSE_LIBDIR}/cmake/SuiteSparse_config ) - -#------------------------------------------------------------------------------- -# create pkg-config file -#------------------------------------------------------------------------------- - -if ( NOT MSVC ) - set ( prefix "${CMAKE_INSTALL_PREFIX}" ) - set ( exec_prefix "\${prefix}" ) - cmake_path ( IS_ABSOLUTE SUITESPARSE_LIBDIR SUITESPARSE_LIBDIR_IS_ABSOLUTE ) - if (SUITESPARSE_LIBDIR_IS_ABSOLUTE) - set ( libdir "${SUITESPARSE_LIBDIR}") - else ( ) - set ( libdir "\${exec_prefix}/${SUITESPARSE_LIBDIR}") - endif ( ) - cmake_path ( IS_ABSOLUTE SUITESPARSE_INCLUDEDIR SUITESPARSE_INCLUDEDIR_IS_ABSOLUTE ) - if (SUITESPARSE_INCLUDEDIR_IS_ABSOLUTE) - set ( includedir "${SUITESPARSE_INCLUDEDIR}") - else ( ) - set ( includedir "\${prefix}/${SUITESPARSE_INCLUDEDIR}") - endif ( ) - configure_file ( - Config/SuiteSparse_config.pc.in - SuiteSparse_config.pc - @ONLY - NEWLINE_STYLE LF ) - install ( FILES - ${CMAKE_CURRENT_BINARY_DIR}/SuiteSparse_config.pc - DESTINATION ${SUITESPARSE_LIBDIR}/pkgconfig ) -endif ( ) - -#------------------------------------------------------------------------------- - -include ( SuiteSparseReport ) From b64803392ebdd46479ce9dd07a0f519bd833ec76 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 21:18:03 +0100 Subject: [PATCH 40/48] Package libraries to Jar Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a3671bf..d35b1b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -60,3 +60,19 @@ jobs: with: name: ${{ matrix.config.artifact_name }} path: ${{ runner.workspace }}/powsybl-math-native/target/classes/natives/${{ matrix.config.artifact_path }}/${{ matrix.config.artifact_name }} + + package: + name: Package libraries to JAR + runs-on: ubuntu-latest + needs: build + + steps: + - name: Download wheels + uses: actions/download-artifact@v3 + with: + path: download + + - name: Test + shell: bash + run: | + ls From 8434c0fab724da1b29618d6660990cc0fbd62d13 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 21:53:05 +0100 Subject: [PATCH 41/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index d35b1b7..577e858 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -56,7 +56,7 @@ jobs: run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --parallel --config Release - name: Upload artifact - uses: actions/upload-artifact@v1 + uses: actions/upload-artifact@v3 with: name: ${{ matrix.config.artifact_name }} path: ${{ runner.workspace }}/powsybl-math-native/target/classes/natives/${{ matrix.config.artifact_path }}/${{ matrix.config.artifact_name }} @@ -67,12 +67,33 @@ jobs: needs: build steps: - - name: Download wheels + - name: Download Linux library uses: actions/download-artifact@v3 with: - path: download + name: libmath.so + path: target/natives/linux_64/ - - name: Test + - name: Download MacOS library + uses: actions/download-artifact@v3 + with: + name: libmath.dylib + path: target/natives/osx_64/ + + - name: Download Windows library + uses: actions/download-artifact@v3 + with: + name: math.dll + path: target/natives/windows_64/ + + - name: Checkout sources + uses: actions/checkout@v3 + + - name: Build Jar shell: bash - run: | - ls + run: mvn install + + - name: Upload wheels + uses: actions/upload-artifact@v3 + with: + name: powsybl-math-native.jar + path: target/*.jar From 0805067e242a09d04298b566e942f358eaf3a3dd Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 22:11:40 +0100 Subject: [PATCH 42/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 11 ++++------- CMakeLists.txt | 22 ---------------------- 2 files changed, 4 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 577e858..5be0111 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,19 +16,16 @@ jobs: container: 'ubuntu:18.04', cmake_options: '-DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8', artifact_name: libmath.so, - artifact_path: linux_64 } - { name: macos, os: macos-11, artifact_name: libmath.dylib, - artifact_path: osx_64 } - { name: windows, os: windows-2019, artifact_name: math.dll, - artifact_path: windows_64/Release } steps: @@ -59,7 +56,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{ matrix.config.artifact_name }} - path: ${{ runner.workspace }}/powsybl-math-native/target/classes/natives/${{ matrix.config.artifact_path }}/${{ matrix.config.artifact_name }} + path: $GITHUB_WORKSPACE/build-${{ matrix.config.name }}/${{ matrix.config.artifact_name }} package: name: Package libraries to JAR @@ -67,6 +64,9 @@ jobs: needs: build steps: + - name: Checkout sources + uses: actions/checkout@v3 + - name: Download Linux library uses: actions/download-artifact@v3 with: @@ -85,9 +85,6 @@ jobs: name: math.dll path: target/natives/windows_64/ - - name: Checkout sources - uses: actions/checkout@v3 - - name: Build Jar shell: bash run: mvn install diff --git a/CMakeLists.txt b/CMakeLists.txt index 322d9e8..6825f88 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -138,28 +138,6 @@ target_include_directories(math ${SUITE_SPARSE_INCLUDE} ) -if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") - set(ARCHITECTURE windows_${OS_BITS}) -elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") - set(ARCHITECTURE linux_${OS_BITS}) -elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") - set(ARCHITECTURE osx_${OS_BITS}) -else() - message(FATAL_ERROR "System not supported: ${CMAKE_SYSTEM_NAME}") -endif() - -if(WIN32) - set_target_properties(math - PROPERTIES - RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/target/classes/natives/${ARCHITECTURE}" - ) -elseif(UNIX) - set_target_properties(math - PROPERTIES - LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/target/classes/natives/${ARCHITECTURE}" - ) -endif() - target_link_libraries(math ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB} From f05e67f5704486bb8eb8ca8bfd7227c3641756cb Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 22:21:41 +0100 Subject: [PATCH 43/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5be0111..2aa1c25 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -26,6 +26,7 @@ jobs: name: windows, os: windows-2019, artifact_name: math.dll, + artifact_path: Release } steps: @@ -46,17 +47,17 @@ jobs: - name: Configure CMake shell: bash - run: cmake -DCMAKE_BUILD_TYPE=Release ${{ matrix.config.cmake_options }} -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build-${{ matrix.config.name }} + run: cmake -DCMAKE_BUILD_TYPE=Release ${{ matrix.config.cmake_options }} -S $GITHUB_WORKSPACE -B $GITHUB_WORKSPACE/build - name: Build shell: bash - run: cmake --build $GITHUB_WORKSPACE/build-${{ matrix.config.name }} --parallel --config Release + run: cmake --build $GITHUB_WORKSPACE/build --parallel --config Release - name: Upload artifact uses: actions/upload-artifact@v3 with: name: ${{ matrix.config.artifact_name }} - path: $GITHUB_WORKSPACE/build-${{ matrix.config.name }}/${{ matrix.config.artifact_name }} + path: ${{ runner.workspace }}/powsybl-math-native/build/${{ matrix.config.artifact_path }}/${{ matrix.config.artifact_name }} package: name: Package libraries to JAR From 9ecbb88a1f94e500e16d6d5e968eb7cd23c3ed96 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 22:35:41 +0100 Subject: [PATCH 44/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2aa1c25..3457dc6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,7 +88,10 @@ jobs: - name: Build Jar shell: bash - run: mvn install + run: | + pwd + ls -R + mvn install - name: Upload wheels uses: actions/upload-artifact@v3 From 8e64e063fb1db8efbba625a31e14e5675ca35560 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 22:42:50 +0100 Subject: [PATCH 45/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3457dc6..9fd3f6e 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -72,26 +72,23 @@ jobs: uses: actions/download-artifact@v3 with: name: libmath.so - path: target/natives/linux_64/ + path: target/classes/natives/linux_64/ - name: Download MacOS library uses: actions/download-artifact@v3 with: name: libmath.dylib - path: target/natives/osx_64/ + path: target/classes/natives/osx_64/ - name: Download Windows library uses: actions/download-artifact@v3 with: name: math.dll - path: target/natives/windows_64/ + path: target/classes/natives/windows_64/ - name: Build Jar shell: bash - run: | - pwd - ls -R - mvn install + run: mvn install - name: Upload wheels uses: actions/upload-artifact@v3 From 7e439f7715861b93c2086cdc646753248226080e Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Thu, 16 Nov 2023 23:08:01 +0100 Subject: [PATCH 46/48] Wip Signed-off-by: Geoffroy Jamgotchian --- README.md | 3 +-- download-artifact.py | 58 -------------------------------------------- 2 files changed, 1 insertion(+), 60 deletions(-) delete mode 100755 download-artifact.py diff --git a/README.md b/README.md index f7d4c76..8239bed 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,7 @@ This project is the C++ implementation of [powsybl-math](https://github.com/pows To build `powsybl-math-native`, you need the following dependencies: - [CMake](https://cmake.org/download) - C++ compiler (gcc, clang or [Visual Studio](https://visualstudio.microsoft.com/fr/vs/features/cplusplus/)) -- Java (8 or later) -- [Lapack](http://www.netlib.org/lapack/) & [Blas](http://www.netlib.org/blas/) libraries +- Java (17 or later) ## Compilation diff --git a/download-artifact.py b/download-artifact.py deleted file mode 100755 index 00e5be7..0000000 --- a/download-artifact.py +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/python3 -# Copyright (c) 2020, RTE (http://www.rte-france.com) -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. - -import getpass -import io -import os -import requests -import zipfile - -def getArtifacts(workflowId): - artifacts = [] - - url = "https://api.github.com/repos/powsybl/powsybl-math-native/actions/runs/{0}/artifacts".format(workflowId) - response = requests.get(url) - - if response.status_code != 200: - raise RuntimeError("Unable to get artifacts (HTTP code: {0})".format(response.status_code)) - - json = response.json() - for artifact in json['artifacts']: - artifacts.append({ - 'id': artifact['id'], - 'name': artifact['name'], - 'url': artifact['archive_download_url'] - }) - - print('Workflow {0}: {1} artifacts found...'.format(workflowId, len(artifacts))) - - return artifacts - -def downloadArtifacts(artifacts, token): - FOLDERS = { - 'libmath.so': 'linux_64', - 'libmath.dylib': 'osx_64', - 'math.dll': 'windows_64', - } - - headers = {'Authorization': 'token ' + token} - - for artifact in artifacts: - print('Downloading {0}...'.format(artifact['name'])) - - response = requests.get(artifact['url'], headers=headers) - - with zipfile.ZipFile(io.BytesIO(response.content)) as zipObj: - folder = 'target/classes/natives/' + FOLDERS[artifact['name']] - os.makedirs(folder, exist_ok=True) - zipObj.extract(artifact['name'], folder) - -if __name__ == '__main__': - token = input('GitHub token: ') - workflowId = input('GitHub workflow ID: ') - - artifacts = getArtifacts(workflowId) - downloadArtifacts(artifacts, token) From f190967baa16d4ccda23b1d5d741d466077e8ac3 Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Fri, 17 Nov 2023 22:02:17 +0100 Subject: [PATCH 47/48] Wip Signed-off-by: Geoffroy Jamgotchian --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8239bed..2e4215e 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ This project is the C++ implementation of [powsybl-math](https://github.com/pows To build `powsybl-math-native`, you need the following dependencies: - [CMake](https://cmake.org/download) - C++ compiler (gcc, clang or [Visual Studio](https://visualstudio.microsoft.com/fr/vs/features/cplusplus/)) -- Java (17 or later) +- Java (11 or later) ## Compilation From 063294b8b1fffdd13adcd2b339d38c4f8524631d Mon Sep 17 00:00:00 2001 From: Geoffroy Jamgotchian Date: Fri, 17 Nov 2023 22:17:50 +0100 Subject: [PATCH 48/48] Wip Signed-off-by: Geoffroy Jamgotchian --- .github/workflows/ci.yml | 7 +++++-- CMakeLists.txt | 26 ++++++++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 1637c2b..32cfec7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,16 +16,19 @@ jobs: container: 'ubuntu:18.04', cmake_options: '-DCMAKE_CXX_COMPILER=/usr/bin/g++-4.8 -DCMAKE_C_COMPILER=/usr/bin/gcc-4.8', artifact_name: libmath.so, + artifact_path: linux_64 } - { name: macos, os: macos-11, artifact_name: libmath.dylib, + artifact_path: osx_64 } - { name: windows, os: windows-2019, - artifact_name: math.dll + artifact_name: math.dll, + artifact_path: windows_64 } steps: @@ -66,7 +69,7 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{ matrix.config.artifact_name }} - path: ${{ runner.workspace }}/powsybl-math-native/build/${{ matrix.config.artifact_name }} + path: ${{ runner.workspace }}/powsybl-math-native/target/classes/natives/${{ matrix.config.artifact_path }}/${{ matrix.config.artifact_name }} package: name: Package libraries to JAR diff --git a/CMakeLists.txt b/CMakeLists.txt index 5997506..c3a451f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,6 +136,32 @@ target_include_directories(math ${SUITE_SPARSE_INCLUDE} ) +if(${CMAKE_SYSTEM_NAME} STREQUAL "Windows") + set(ARCHITECTURE windows_${OS_BITS}) +elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux") + set(ARCHITECTURE linux_${OS_BITS}) +elseif(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin") + set(ARCHITECTURE osx_${OS_BITS}) +else() + message(FATAL_ERROR "System not supported: ${CMAKE_SYSTEM_NAME}") +endif() + +if(WIN32) + set_target_properties(math + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/target/classes/natives/${ARCHITECTURE}" + ) + set_target_properties(math + PROPERTIES + RUNTIME_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/target/classes/natives/${ARCHITECTURE}" + ) +elseif(UNIX) + set_target_properties(math + PROPERTIES + LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/target/classes/natives/${ARCHITECTURE}" + ) +endif() + target_link_libraries(math ${SUITE_SPARSE_KLU_LIB} ${SUITE_SPARSE_CXSPARSE_LIB}