diff --git a/.github/workflows/dev-ci.yml b/.github/workflows/dev-ci.yml index e96cde987..32900025f 100644 --- a/.github/workflows/dev-ci.yml +++ b/.github/workflows/dev-ci.yml @@ -239,6 +239,55 @@ jobs: metrix-simulator/build/install/bin metrix-simulator/build/install/etc + cpp_windows: + name: Build C++ Windows + runs-on: windows-latest + defaults: + run: + shell: cmd + env: + BOOST_ROOT: C:\thirdparties\boost-1.72.0 + BOOST_URL: https://sourceforge.net/projects/boost/files/boost-binaries/1.72.0/boost_1_72_0-msvc-14.2-64.exe/download + steps: + - name: Install Boost + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + choco install wget --no-progress + wget -nv -O boost-installer.exe %BOOST_URL% + boost-installer.exe /dir=%BOOST_ROOT% /sp- /verysilent /suppressmsgboxes /norestart + + - name: Checkout sources + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 #v4.1.6 + + - name: Configure 3rd parties + run: > + cmake -S %GITHUB_WORKSPACE%\metrix-simulator\external -B %GITHUB_WORKSPACE%\metrix-simulator\build\external + + - name: Build 3rd parties + run: > + cmake --build %GITHUB_WORKSPACE%\metrix-simulator\build\external --parallel 2 --config Release + + - name: Configure CMake + run: > + cmake -Wno-dev -S %GITHUB_WORKSPACE%\metrix-simulator -B %GITHUB_WORKSPACE%\metrix-simulator\build + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\metrix-simulator\build\install + + - name: Build + run: cmake --build %GITHUB_WORKSPACE%\metrix-simulator\build --target install --parallel 2 --config Release + + - name: Tests + run: cd %GITHUB_WORKSPACE%\metrix-simulator\build && ctest -j2 --output-on-failure -C Release + + - name: Upload Metrix Simulator archive + if: ${{ github.event_name == 'workflow_dispatch' && inputs.generate_artifacts }} + uses: actions/upload-artifact@v3 + with: + name: metrix-simulator-windows + path: | + metrix-simulator/build/install/bin + metrix-simulator/build/install/etc + cpp_ubuntu_qa: name: Short QA C++ Ubuntu runs-on: ubuntu-latest diff --git a/.github/workflows/full-ci.yml b/.github/workflows/full-ci.yml index 2ee627c8e..31ab3abaf 100644 --- a/.github/workflows/full-ci.yml +++ b/.github/workflows/full-ci.yml @@ -201,6 +201,46 @@ jobs: - name: Tests run: cd $GITHUB_WORKSPACE/metrix-simulator/build && ctest -j2 --output-on-failure + cpp_windows: + name: Build C++ Windows + runs-on: windows-latest + defaults: + run: + shell: cmd + env: + BOOST_ROOT: C:\thirdparties\boost-1.72.0 + BOOST_URL: https://sourceforge.net/projects/boost/files/boost-binaries/1.72.0/boost_1_72_0-msvc-14.2-64.exe/download + steps: + - name: Install Boost + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + choco install wget --no-progress + wget -nv -O boost-installer.exe %BOOST_URL% + boost-installer.exe /dir=%BOOST_ROOT% /sp- /verysilent /suppressmsgboxes /norestart + + - name: Checkout sources + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 #v4.1.6 + + - name: Configure 3rd parties + run: > + cmake -S %GITHUB_WORKSPACE%\metrix-simulator\external -B %GITHUB_WORKSPACE%\metrix-simulator\build\external + + - name: Build 3rd parties + run: > + cmake --build %GITHUB_WORKSPACE%\metrix-simulator\build\external --parallel 2 --config Release + + - name: Configure CMake + run: > + cmake -Wno-dev -S %GITHUB_WORKSPACE%\metrix-simulator -B %GITHUB_WORKSPACE%\metrix-simulator\build + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\metrix-simulator\build\install + + - name: Build + run: cmake --build %GITHUB_WORKSPACE%\metrix-simulator\build --target install --parallel 2 --config Release + + - name: Tests + run: cd %GITHUB_WORKSPACE%\metrix-simulator\build && ctest -j2 --output-on-failure -C Release + cpp_ubuntu_qa: name: Full QA C++ Ubuntu runs-on: ubuntu-latest diff --git a/.github/workflows/release-ci.yml b/.github/workflows/release-ci.yml index 3729a9a7d..f4f3567e7 100644 --- a/.github/workflows/release-ci.yml +++ b/.github/workflows/release-ci.yml @@ -215,3 +215,60 @@ jobs: uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v2.0.9 with: files: ${{ steps.metrix-install.outputs.archive_path }}.zip + + cpp_windows: + name: Package C++ Windows + runs-on: windows-latest + defaults: + run: + shell: cmd + env: + BOOST_ROOT: C:\thirdparties\boost-1.72.0 + BOOST_URL: https://sourceforge.net/projects/boost/files/boost-binaries/1.72.0/boost_1_72_0-msvc-14.2-64.exe/download + steps: + - name: Install Boost + run: | + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" + choco install wget --no-progress + wget -nv -O boost-installer.exe %BOOST_URL% + boost-installer.exe /dir=%BOOST_ROOT% /sp- /verysilent /suppressmsgboxes /norestart + + - name: Checkout sources + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 #v4.1.6 + + - name: Configure 3rd parties + run: > + cmake -S %GITHUB_WORKSPACE%\metrix-simulator\external -B %GITHUB_WORKSPACE%\metrix-simulator\build\external + + - name: Build 3rd parties + run: > + cmake --build %GITHUB_WORKSPACE%\metrix-simulator\build\external --parallel 2 --config Release + + - name: Configure CMake + run: > + cmake -Wno-dev -S %GITHUB_WORKSPACE%\metrix-simulator -B %GITHUB_WORKSPACE%\metrix-simulator\build + -DCMAKE_BUILD_TYPE=Release + -DCMAKE_INSTALL_PREFIX=%GITHUB_WORKSPACE%\metrix-simulator\build\install + + - name: Build + run: cmake --build %GITHUB_WORKSPACE%\metrix-simulator\build --target install --parallel 2 --config Release + + - name: Tests + run: cd %GITHUB_WORKSPACE%\metrix-simulator\build && ctest -j2 --output-on-failure -C Release + + - name: Prepare Metrix package + id: metrix-install + shell: powershell + run: | + $env:ARCHIVE_NAME = "metrix-simulator-windows" + $env:ARCHIVE_PATH = "$env:GITHUB_WORKSPACE\$env:ARCHIVE_NAME" + $env:ARCHIVE_PATH = $env:ARCHIVE_PATH -replace '\\','/' + cd $env:GITHUB_WORKSPACE/metrix-simulator/build/install + Compress-Archive -Path bin,etc -Destination $env:ARCHIVE_PATH + echo "archive_name=$env:ARCHIVE_NAME" >> "$env:GITHUB_OUTPUT" + echo "archive_path=$env:ARCHIVE_PATH" >> "$env:GITHUB_OUTPUT" + + - name: Upload release package + uses: softprops/action-gh-release@e7a8f85e1c67a31e6ed99a94b41bd0b71bbee6b8 # v2.0.9 + with: + files: ${{ steps.metrix-install.outputs.archive_path }}.zip diff --git a/README.md b/README.md index 688636982..10233de14 100644 --- a/README.md +++ b/README.md @@ -183,7 +183,7 @@ all input options are described in --help option To build metrix-simulator, you need: - A C++ compiler that supports C++11 ([clang](https://clang.llvm.org) 3.3 or higher, [g++](https://gcc.gnu.org) 5.0 or higher) -- [CMake](https://cmake.org) (3.12 or higher) +- [CMake](https://cmake.org) (3.14 or higher) - [Make](https://www.gnu.org/software/make/) - [Boost](https://www.boost.org) development packages (1.66 or higher) @@ -199,9 +199,9 @@ $> apt install -y g++ git libboost-all-dev libxml2-dev make wget **Note:** Under Ubuntu 18.04, the default CMake package is too old (3.10), so you have to install it manually: ``` -$> wget https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz -$> tar xzf cmake-3.12.0-Linux-x86_64.tar.gz -$> export PATH=$PWD/cmake-3.12.0-Linux-x86_64/bin:$PATH +$> wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.tar.gz +$> tar xzf cmake-3.14.0-Linux-x86_64.tar.gz +$> export PATH=$PWD/cmake-3.14.0-Linux-x86_64/bin:$PATH ``` ###### CentOS 8 @@ -211,9 +211,9 @@ $> yum install -y boost-devel gcc-c++ git libxml2-devel make wget **Note:** Under CentOS 8, the default CMake package is too old (3.11.4), so you have to install it manually: ``` -$> wget https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz -$> tar xzf cmake-3.12.0-Linux-x86_64.tar.gz -$> export PATH=$PWD/cmake-3.12.0-Linux-x86_64/bin:$PATH +$> wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.tar.gz +$> tar xzf cmake-3.14.0-Linux-x86_64.tar.gz +$> export PATH=$PWD/cmake-3.14.0-Linux-x86_64/bin:$PATH ``` ###### CentOS 7 @@ -230,9 +230,9 @@ $> export BOOST_LIBRARYDIR=/usr/lib64/boost166 **Note:** Under CentOS 7, the default CMake package is too old (2.8.12), so you have to install it manually: ``` -$> wget https://cmake.org/files/v3.12/cmake-3.12.0-Linux-x86_64.tar.gz -$> tar xzf cmake-3.12.0-Linux-x86_64.tar.gz -$> export PATH=$PWD/cmake-3.12.0-Linux-x86_64/bin:$PATH +$> wget https://cmake.org/files/v3.14/cmake-3.14.0-Linux-x86_64.tar.gz +$> tar xzf cmake-3.14.0-Linux-x86_64.tar.gz +$> export PATH=$PWD/cmake-3.14.0-Linux-x86_64/bin:$PATH ``` ##### Build sources diff --git a/metrix-simulator/CMakeLists.txt b/metrix-simulator/CMakeLists.txt index cf7487d27..5474e29ca 100755 --- a/metrix-simulator/CMakeLists.txt +++ b/metrix-simulator/CMakeLists.txt @@ -8,7 +8,7 @@ # SPDX-License-Identifier: MPL-2.0 # -cmake_minimum_required(VERSION 3.12 FATAL_ERROR) +cmake_minimum_required(VERSION 3.14 FATAL_ERROR) include(CMakePackageConfigHelpers) @@ -28,12 +28,14 @@ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") set(INSTALL_CMAKE_DIR cmake CACHE PATH "Installation directory for cmake files") if(MSVC) - add_compile_definitions(WIN32) + add_definitions(-D_WIN32_WINNT=0x0A00) + add_compile_definitions("_CRT_SECURE_NO_WARNINGS") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /STACK:5000000 ") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") # In release, we prefer speed over size of the code set(CMAKE_CXX_FLAGS_RELEASE "/O2") set(CMAKE_C_FLAGS_RELEASE "/O2") + set(Boost_USE_STATIC_RUNTIME ON) else() if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Release) @@ -142,6 +144,7 @@ target_link_libraries(${target} SuiteSparse::SuiteSparse_BTF SuiteSparse::SuiteSparse_Config ${Boost_LIBRARIES} + $<$:msvcrt.lib> ) if (USE_SIRIUS_SHARED) diff --git a/metrix-simulator/cmake/tnr.cmake b/metrix-simulator/cmake/tnr.cmake index 08bf75242..3c18886a6 100644 --- a/metrix-simulator/cmake/tnr.cmake +++ b/metrix-simulator/cmake/tnr.cmake @@ -10,8 +10,7 @@ # function(check_file file expected_file) - configure_file(${file} ${file} NEWLINE_STYLE LF) # required for windows ctest - execute_process( COMMAND ${CMAKE_COMMAND} -E compare_files ${file} ${expected_file} + execute_process( COMMAND ${CMAKE_COMMAND} -E compare_files --ignore-eol ${file} ${expected_file} RESULT_VARIABLE compare_result) if(compare_result) MESSAGE(FATAL_ERROR "File " ${file} " is different from expected file " ${expected_file}) diff --git a/metrix-simulator/log/src/logger.cpp b/metrix-simulator/log/src/logger.cpp index 854fb47a6..835e0c865 100644 --- a/metrix-simulator/log/src/logger.cpp +++ b/metrix-simulator/log/src/logger.cpp @@ -17,6 +17,10 @@ #include #include +#if defined(_MSC_VER) +#define localtime_r(T,Tm) (localtime_s(Tm,T) ? NULL : Tm) +#endif + using namespace boost::log; namespace metrix diff --git a/metrix-simulator/tests/variantes_regroupees/CMakeLists.txt b/metrix-simulator/tests/variantes_regroupees/CMakeLists.txt index c76d72cfe..c35c5de54 100644 --- a/metrix-simulator/tests/variantes_regroupees/CMakeLists.txt +++ b/metrix-simulator/tests/variantes_regroupees/CMakeLists.txt @@ -15,6 +15,6 @@ set(TEST_DIR ${MAIN_TEST_DIR}/${TEST_DIR_NAME}) set(EXPECTED_TEST_DIR ${MAIN_TEST_DIR}_reference/${TEST_DIR_NAME}) if(METRIX_RUN_ALL_TESTS) -metrix_test("variantes_regroupees_complexe" 11) # no check here because of random and equivalent solutions +metrix_test_no_check("variantes_regroupees_complexe" 11) # no check here because of random and equivalent solutions endif() metrix_test("variantes_regroupees_simple" 8)