From 5a851775ab8465fd899230e8564a24ffe43ce8db Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 00:44:51 +1300 Subject: [PATCH 01/25] (Re)added ARM support on Windows and Linux. --- .github/workflows/buildThirdPartyLibrary.yml | 42 +++++++++- .github/workflows/cd.yml | 37 +++++++-- .github/workflows/ci.yml | 83 ++++++++++++++++++- cmake/packages.cmake | 10 +-- src/3rdparty/LLVMClang/CMakeLists.txt | 46 ++++++++-- .../LLVMClang/scripts/buildllvmclangtblgen | 19 +++++ src/3rdparty/OpenSSL/CMakeLists.txt | 54 +++++++++--- src/3rdparty/SUNDIALS/CMakeLists.txt | 36 ++++++-- src/3rdparty/libCOMBINE/CMakeLists.txt | 36 ++++++-- src/3rdparty/libCellML/CMakeLists.txt | 36 ++++++-- src/3rdparty/libNuML/CMakeLists.txt | 36 ++++++-- src/3rdparty/libSBML/CMakeLists.txt | 36 ++++++-- src/3rdparty/libSEDML/CMakeLists.txt | 36 ++++++-- src/3rdparty/libcurl/CMakeLists.txt | 36 ++++++-- src/3rdparty/libssh2/CMakeLists.txt | 36 ++++++-- src/3rdparty/libxml2/CMakeLists.txt | 36 ++++++-- src/3rdparty/zipper/CMakeLists.txt | 36 ++++++-- src/3rdparty/zlib/CMakeLists.txt | 36 ++++++-- 18 files changed, 548 insertions(+), 139 deletions(-) create mode 100755 src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index 9d05e6e49..06ea43931 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -19,13 +19,23 @@ jobs: fail-fast: false matrix: include: - - name: 'Windows release' + - name: 'Windows release (Intel)' os: windows-latest + arch: amd64 build_type: Release - - name: 'Windows debug' + - name: 'Windows debug (Intel)' os: windows-latest + arch: amd64 build_type: Debug - - name: 'Linux' + - name: 'Windows release (ARM)' + os: windows-latest + arch: amd64_arm64 + build_type: Release + - name: 'Windows debug (ARM)' + os: windows-latest + arch: amd64_arm64 + build_type: Debug + - name: 'Linux (Intel)' os: ubuntu-20.04 # Note: we must use ubuntu-20.04 rather than ubuntu-latest (i.e. ubuntu-22.04 at this stage). Indeed, # Ubuntu 22.04's copy of glibc doesn't include libpthread anymore (see @@ -34,6 +44,11 @@ jobs: # of glibc with libpthread, hence getting various messages about __libc_single_threaded being # undefined when trying to build our Python wheels using third-party libraries built on ubuntu-22.04. build_type: Release + - name: 'Linux (ARM)' + os: ubuntu-latest + arch: arm + cmake_prereqs: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ + build_type: Release - name: 'macOS (Intel)' os: macos-13 build_type: Release @@ -48,20 +63,39 @@ jobs: steps: - name: Check out libOpenCOR uses: actions/checkout@v4 + - name: Install ARM compiler + if: ${{ matrix.arch == 'arm' }} + run: | + sudo apt update + sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - name: Install CMake and Ninja uses: lukka/get-cmake@latest - name: Install buildcache uses: cscouto/buildcache-action@v1 with: cache_key: libraries-${{ matrix.os }}-${{ matrix.shared_libs }} + - name: Configure MSVC (to build an Intel-based version of llvm-tblgen and clang-tblgen) + if: ${{ (runner.os == 'Windows') && (matrix.arch == 'amd64_arm64') }} + uses: ilammy/msvc-dev-cmd@v1 + with: + arch: amd64 + - name: Build llvm-tblgen and clang-tblgen + if: ${{ (((runner.os == 'Windows') && (matrix.arch == 'amd64_arm64')) || ((runner.os == 'Linux') && (matrix.arch == 'arm'))) }} + shell: bash + run: | + source src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen ${{ runner.os == 'Windows' }} + echo "DLLVMCLANG_LLVM_TABLEGEN=$DLLVMCLANG_LLVM_TABLEGEN" >> $GITHUB_ENV + echo "DLLVMCLANG_CLANG_TABLEGEN=$DLLVMCLANG_CLANG_TABLEGEN" >> $GITHUB_ENV - name: Configure MSVC if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.arch }} - name: Configure libOpenCOR run: | mkdir build cd build - ${{ matrix.cmake_prereqs }} cmake -G Ninja -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF .. + ${{ matrix.cmake_prereqs }} cmake -G Ninja -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - name: Upload library artifact if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/upload-artifact@v4 diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index 550154840..ebd0a253a 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -15,18 +15,38 @@ jobs: fail-fast: false matrix: include: - - name: 'Windows static library' + - name: 'Windows static library (Intel)' os: windows-latest + msvc_arch: amd64 shared_libs: OFF - - name: 'Windows shared library' + - name: 'Windows shared library (Intel)' os: windows-latest + msvc_arch: amd64 shared_libs: ON - - name: 'Linux static library' + - name: 'Windows static library (ARM)' + os: windows-latest + msvc_arch: amd64_arm64 + shared_libs: OFF + - name: 'Windows shared library (ARM)' + os: windows-latest + msvc_arch: amd64_arm64 + shared_libs: ON + - name: 'Linux static library (Intel)' + os: ubuntu-latest + shared_libs: OFF + - name: 'Linux shared library (Intel)' + os: ubuntu-latest + shared_libs: ON + - name: 'Linux static library (ARM)' os: ubuntu-latest + arch: arm shared_libs: OFF - - name: 'Linux shared library' + cmake_prereqs: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ + - name: 'Linux shared library (ARM)' os: ubuntu-latest + arch: arm shared_libs: ON + cmake_prereqs: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ - name: 'macOS static library (Intel)' os: macos-13 shared_libs: OFF @@ -47,6 +67,11 @@ jobs: steps: - name: Check out libOpenCOR uses: actions/checkout@v4 + - name: Install ARM compiler + if: ${{ matrix.arch == 'arm' }} + run: | + sudo apt update + sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - name: Install CMake and Ninja uses: lukka/get-cmake@latest - name: Install buildcache @@ -56,11 +81,13 @@ jobs: - name: Configure MSVC if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.msvc_arch }} - name: Configure libOpenCOR run: | mkdir build cd build - cmake -G Ninja -DBUILD_TYPE=Release -DCODE_ANALYSIS=OFF -DCODE_COVERAGE=OFF -DDOCUMENTATION=OFF -DJAVASCRIPT_BINDINGS=OFF -DMEMORY_CHECKS=OFF -DPYTHON_BINDINGS=OFF -DPYTHON_UNIT_TESTING=OFF -DSHARED_LIBS=${{ matrix.shared_libs }} -DUNIT_TESTING=OFF .. + ${{ matrix.cmake_prereqs }} cmake -G Ninja -DBUILD_TYPE=Release -DCODE_ANALYSIS=OFF -DCODE_COVERAGE=OFF -DDOCUMENTATION=OFF -DJAVASCRIPT_BINDINGS=OFF -DMEMORY_CHECKS=OFF -DPYTHON_BINDINGS=OFF -DPYTHON_UNIT_TESTING=OFF -DSHARED_LIBS=${{ matrix.shared_libs }} -DUNIT_TESTING=OFF .. - name: Build libOpenCOR run: | cd build diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 33ebb6e87..f03f176fe 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,8 +13,9 @@ jobs: fail-fast: false matrix: include: - - name: 'Windows static library' + - name: 'Windows static library (Intel)' os: windows-latest + msvc_arch: amd64 build_type: Release code_analysis: OFF code_coverage: OFF @@ -28,8 +29,9 @@ jobs: unit_testing: ON target: unit_testing install_uninstall_and_package: ON - - name: 'Windows shared library' + - name: 'Windows shared library (Intel)' os: windows-latest + msvc_arch: amd64 build_type: Release code_analysis: OFF code_coverage: OFF @@ -43,7 +45,39 @@ jobs: unit_testing: ON target: unit_testing install_uninstall_and_package: ON - - name: 'Linux static library' + - name: 'Windows static library (ARM)' + os: windows-latest + msvc_arch: amd64_arm64 + build_type: Release + code_analysis: OFF + code_coverage: OFF + documentation: OFF + javascript_bindings: OFF + javascript_unit_testing: OFF + memory_checks: OFF + python_bindings: OFF + python_unit_testing: OFF + shared_libs: OFF + unit_testing: ON + target: unit_testing + install_uninstall_and_package: ON + - name: 'Windows shared library (ARM)' + os: windows-latest + msvc_arch: amd64_arm64 + build_type: Release + code_analysis: OFF + code_coverage: OFF + documentation: OFF + javascript_bindings: OFF + javascript_unit_testing: OFF + memory_checks: OFF + python_bindings: OFF + python_unit_testing: OFF + shared_libs: ON + unit_testing: ON + target: unit_testing + install_uninstall_and_package: ON + - name: 'Linux static library (Intel)' os: ubuntu-latest build_type: Release code_analysis: OFF @@ -58,7 +92,7 @@ jobs: unit_testing: ON target: unit_testing install_uninstall_and_package: ON - - name: 'Linux shared library' + - name: 'Linux shared library (Intel)' os: ubuntu-latest build_type: Release code_analysis: OFF @@ -73,6 +107,40 @@ jobs: unit_testing: ON target: unit_testing install_uninstall_and_package: ON + - name: 'Linux static library (ARM)' + os: ubuntu-latest + arch: arm + build_type: Release + code_analysis: OFF + code_coverage: OFF + documentation: OFF + javascript_bindings: OFF + javascript_unit_testing: OFF + memory_checks: OFF + python_bindings: OFF + python_unit_testing: OFF + shared_libs: OFF + unit_testing: ON + target: unit_testing + install_uninstall_and_package: ON + context: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ + - name: 'Linux shared library (ARM)' + os: ubuntu-latest + arch: arm + build_type: Release + code_analysis: OFF + code_coverage: OFF + documentation: OFF + javascript_bindings: OFF + javascript_unit_testing: OFF + memory_checks: OFF + python_bindings: OFF + python_unit_testing: OFF + shared_libs: ON + unit_testing: ON + target: unit_testing + install_uninstall_and_package: ON + context: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ - name: 'macOS static library (Intel)' os: macos-13 build_type: Release @@ -325,6 +393,11 @@ jobs: uses: actions/setup-python@v5 with: python-version: '3.13' + - name: Install ARM compiler + if: ${{ matrix.arch == 'arm' }} + run: | + sudo apt update + sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - name: Install CMake and Ninja uses: lukka/get-cmake@latest - name: Install buildcache @@ -334,6 +407,8 @@ jobs: - name: Configure MSVC if: ${{ runner.os == 'Windows' }} uses: ilammy/msvc-dev-cmd@v1 + with: + arch: ${{ matrix.msvc_arch }} - name: Install LLVM if: ${{ matrix.code_coverage == 'ON' }} run: | diff --git a/cmake/packages.cmake b/cmake/packages.cmake index 8a6d18b16..3cb096e4a 100644 --- a/cmake/packages.cmake +++ b/cmake/packages.cmake @@ -271,12 +271,10 @@ else() set(TARGET_PLATFORM_ARCHITECTURE linux) endif() - if(APPLE) - if("${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel") - set(TARGET_PLATFORM_ARCHITECTURE ${TARGET_PLATFORM_ARCHITECTURE}.intel) - else() - set(TARGET_PLATFORM_ARCHITECTURE ${TARGET_PLATFORM_ARCHITECTURE}.arm) - endif() + if("${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel") + set(TARGET_PLATFORM_ARCHITECTURE ${TARGET_PLATFORM_ARCHITECTURE}.intel) + else() + set(TARGET_PLATFORM_ARCHITECTURE ${TARGET_PLATFORM_ARCHITECTURE}.arm) endif() endif() diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index 1641adfa6..0f4e2e2a0 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -23,13 +23,25 @@ set(INSTALL_DIR ${PREBUILT_DIR}/${PACKAGE_NAME}) if(LIBOPENCOR_PREBUILT_LLVMCLANG) if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 843e3caf60ed5dffab9bd55326da195b6b850553) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 843e3caf60ed5dffab9bd55326da195b6b850553) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 665eeefd2e331034e5962b9ec9114f5dd6826ed1) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - bbdc5f37a97cdfb78748ee1f75d25f44ef24f707) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + bbdc5f37a97cdfb78748ee1f75d25f44ef24f707) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 24febbe8391b8c7dea406261c8b520671b3c38a6) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -42,9 +54,15 @@ if(LIBOPENCOR_PREBUILT_LLVMCLANG) 519fee44fc83145bbbe7c027e5e78aa32a8bdbfa) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 5e8c850c5272cfb95b743a8c1141f71dcd15c7f9) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 5e8c850c5272cfb95b743a8c1141f71dcd15c7f9) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 25fe0235182221c14a897c0fe8e1d43041479ac8) + endif() endif() else() # Build our package. @@ -55,6 +73,14 @@ else() set(LLVM_TARGETS_TO_BUILD AArch64) endif() + if(LLVMCLANG_LLVM_TABLEGEN) + set(LLVM_TABLEGEN -DLLVM_TABLEGEN=${LLVMCLANG_LLVM_TABLEGEN}) + endif() + + if(LLVMCLANG_CLANG_TABLEGEN) + set(CLANG_TABLEGEN -DCLANG_TABLEGEN=${LLVMCLANG_CLANG_TABLEGEN}) + endif() + build_package(${PACKAGE_NAME} URL https://github.com/opencor/${PACKAGE_REPOSITORY}/archive/refs/tags/${RELEASE_TAG}.tar.gz @@ -68,6 +94,7 @@ else() -DCLANG_INCLUDE_DOCS=OFF -DCLANG_INCLUDE_TESTS=OFF -DCLANG_PLUGIN_SUPPORT=OFF + ${CLANG_TABLEGEN} -DCLANG_TOOLING_BUILD_AST_INTROSPECTION=OFF -DCLANG_TOOL_HANDLE_CXX_BUILD=OFF -DCLANG_TOOL_HANDLE_LLVM_BUILD=OFF @@ -106,6 +133,7 @@ else() -DLLVM_INCLUDE_TESTS=OFF -DLLVM_INCLUDE_TOOLS=ON -DLLVM_INCLUDE_UTILS=OFF + ${LLVM_TABLEGEN} -DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD} ) diff --git a/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen b/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen new file mode 100755 index 000000000..196ad3931 --- /dev/null +++ b/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen @@ -0,0 +1,19 @@ +#!/bin/sh + +LLVMCLANG_VERSION=18.1.8 + +curl -Ls https://github.com/opencor/llvm-project/archive/refs/tags/llvmorg-$LLVMCLANG_VERSION.zip -o llvm-project-llvmorg-$LLVMCLANG_VERSION.zip +unzip -qq llvm-project-llvmorg-$LLVMCLANG_VERSION.zip +\rm llvm-project-llvmorg-$LLVMCLANG_VERSION.zip + +cd llvm-project-llvmorg-$LLVMCLANG_VERSION + +cmake -G Ninja -S ./llvm -B build -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS=clang +cmake --build build -t llvm-tblgen clang-tblgen + +if [ "$1" = "true" ]; then + EXTENSION=.exe +fi + +export DLLVMCLANG_LLVM_TABLEGEN=-DLLVMCLANG_LLVM_TABLEGEN=$PWD/build/bin/llvm-tblgen$EXTENSION +export DLLVMCLANG_CLANG_TABLEGEN=-DLLVMCLANG_CLANG_TABLEGEN=$PWD/build/bin/clang-tblgen$EXTENSION diff --git a/src/3rdparty/OpenSSL/CMakeLists.txt b/src/3rdparty/OpenSSL/CMakeLists.txt index d3c9533a4..e04f420e4 100644 --- a/src/3rdparty/OpenSSL/CMakeLists.txt +++ b/src/3rdparty/OpenSSL/CMakeLists.txt @@ -23,13 +23,25 @@ set(INSTALL_DIR ${PREBUILT_DIR}/${PACKAGE_NAME}) if(LIBOPENCOR_PREBUILT_OPENSSL) if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 117fc350696f830cb82aafb95a47588f6434c177) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 117fc350696f830cb82aafb95a47588f6434c177) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 63abbd1d6540351d26af557a4a0bded041ca221b) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 7293afb0786724e349cbc14d81b36b3bc15201e5) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 7293afb0786724e349cbc14d81b36b3bc15201e5) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + e801d457e4e1eba429e3f13f624a08cd03cd1f1c) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -42,9 +54,15 @@ if(LIBOPENCOR_PREBUILT_OPENSSL) 22f22109d28cea6ea55681e48bdfd040cc1352db) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 85dc755b012accd22114b42ddaabb22ea246dd2a) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 85dc755b012accd22114b42ddaabb22ea246dd2a) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 0411e8ce55a452ea6b72f031f4b07b9dba6b98df) + endif() endif() else() # Build our package. @@ -57,9 +75,17 @@ else() list(APPEND CONFIG_OPTIONS no-asm) if(RELEASE_MODE) - set(PLATFORM VC-WIN64A) + if(INTEL_MODE) + set(PLATFORM VC-WIN64A) + else() + set(PLATFORM VC-WIN64-ARM) + endif() else() - set(PLATFORM debug-VC-WIN64A) + if(INTEL_MODE) + set(PLATFORM debug-VC-WIN64A) + else() + set(PLATFORM debug-VC-WIN64-ARM) + endif() endif() # Patch the generated makefile since it contains non-escaped paths that result in our build to fail. (Not sure @@ -82,7 +108,11 @@ else() list(APPEND CONFIG_OPTIONS "-mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}") else() - set(PLATFORM linux-x86_64) + if(INTEL_MODE) + set(PLATFORM linux-x86_64) + else() + set(PLATFORM linux-aarch64) + endif() list(APPEND CONFIG_OPTIONS "-Wa,--noexecstack") endif() diff --git a/src/3rdparty/SUNDIALS/CMakeLists.txt b/src/3rdparty/SUNDIALS/CMakeLists.txt index fb678f1ed..69ab28022 100644 --- a/src/3rdparty/SUNDIALS/CMakeLists.txt +++ b/src/3rdparty/SUNDIALS/CMakeLists.txt @@ -28,13 +28,25 @@ if(LIBOPENCOR_PREBUILT_SUNDIALS) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 519fd7c2133ed7efb666193028b50ac4f788f416) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 519fd7c2133ed7efb666193028b50ac4f788f416) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 59647bc79af40a528802941f6dce584fd1cbe50e) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 1bcd8ca9cea9b0d03f35b66058b53e1f06791d03) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 1bcd8ca9cea9b0d03f35b66058b53e1f06791d03) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + d9367c7fa4f33d8e2f9b1b1654a1766d26abaa60) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -47,9 +59,15 @@ if(LIBOPENCOR_PREBUILT_SUNDIALS) c54fd6934c2a72f99ba21dcb88e4d07f9b3e4d00) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 3af6ee478c72261af012eb400fc1bd0e114c1727) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 3af6ee478c72261af012eb400fc1bd0e114c1727) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + bcaaad18087d6e4a002b3eda5f5c49eca7e255cc) + endif() endif() endif() else() diff --git a/src/3rdparty/libCOMBINE/CMakeLists.txt b/src/3rdparty/libCOMBINE/CMakeLists.txt index 2b7a0e992..653dea1fe 100644 --- a/src/3rdparty/libCOMBINE/CMakeLists.txt +++ b/src/3rdparty/libCOMBINE/CMakeLists.txt @@ -32,13 +32,25 @@ if(LIBOPENCOR_PREBUILT_LIBCOMBINE) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - c4d636fa1427eb6bb702e1e94a1b7149efd2ffb8) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + c4d636fa1427eb6bb702e1e94a1b7149efd2ffb8) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 75f4c3c895dddce5b0523a5f8392bf2efdff7f67) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 6940a27fc80f5171072d7d3a0824e641811bc6b8) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 6940a27fc80f5171072d7d3a0824e641811bc6b8) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 41303bd3c6333aebfdf91571002520e6690cde77) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -51,9 +63,15 @@ if(LIBOPENCOR_PREBUILT_LIBCOMBINE) 1eb9641b388e060e99cf52da93f83f5e17a4d78e) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 2e0a1cd907d3fad09c20b8378e230ac10ba4a913) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 2e0a1cd907d3fad09c20b8378e230ac10ba4a913) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 9bce82e9a99759bbc27ebf265c54f50033d51af8) + endif() endif() endif() else() diff --git a/src/3rdparty/libCellML/CMakeLists.txt b/src/3rdparty/libCellML/CMakeLists.txt index 3b48ca62d..bc37102c5 100644 --- a/src/3rdparty/libCellML/CMakeLists.txt +++ b/src/3rdparty/libCellML/CMakeLists.txt @@ -38,13 +38,25 @@ if(LIBOPENCOR_PREBUILT_LIBCELLML) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 0299c00e0e61cd8f4332e094bda6d51b6a648016) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 0299c00e0e61cd8f4332e094bda6d51b6a648016) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 926f60f6861a3a29fb69e91ed830e7aa79125346) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - f9e2e8d8c5e9b6352348c66922b5933cb5ad1b4c) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + f9e2e8d8c5e9b6352348c66922b5933cb5ad1b4c) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + cddaf4c78f18d9e8a47c794a2f0fa13cddc9f222) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -57,9 +69,15 @@ if(LIBOPENCOR_PREBUILT_LIBCELLML) 92394488b09c6589dcb302eca01a8ad5ee9ca715) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - f46b5bb3600f4fed08d8667457d5c0c04be2b7cc) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + f46b5bb3600f4fed08d8667457d5c0c04be2b7cc) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + ffe67306d9096f232e5cb6c83243c57f53915b61) + endif() endif() endif() else() diff --git a/src/3rdparty/libNuML/CMakeLists.txt b/src/3rdparty/libNuML/CMakeLists.txt index d94d78f6f..a7211fd54 100644 --- a/src/3rdparty/libNuML/CMakeLists.txt +++ b/src/3rdparty/libNuML/CMakeLists.txt @@ -32,13 +32,25 @@ if(LIBOPENCOR_PREBUILT_LIBNUML) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - c535ddf4307681b441ef9e6fcd896f3d945d91c9) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + c535ddf4307681b441ef9e6fcd896f3d945d91c9) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + e2c1e4b73bfb6a67c0a84a9295e7bbbe9ef05e77) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 9882c9681bbf5f2ce0d93e34594db5f98b47e0db) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 9882c9681bbf5f2ce0d93e34594db5f98b47e0db) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + eee56d12b1dcd31a8ba77da05263aac7aa9bf661) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -51,9 +63,15 @@ if(LIBOPENCOR_PREBUILT_LIBNUML) 5dcda318dcc3bf8e71e81230c883927a26c841ad) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 5b4d707ed7f59a92f4b18c6db7c2cd2bedf9ab5f) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 5b4d707ed7f59a92f4b18c6db7c2cd2bedf9ab5f) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 4acdd314a5c90a1208fd725901b36918dea1add9) + endif() endif() endif() else() diff --git a/src/3rdparty/libSBML/CMakeLists.txt b/src/3rdparty/libSBML/CMakeLists.txt index e5278d655..aaa36c85e 100644 --- a/src/3rdparty/libSBML/CMakeLists.txt +++ b/src/3rdparty/libSBML/CMakeLists.txt @@ -32,13 +32,25 @@ if(LIBOPENCOR_PREBUILT_LIBSBML) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 5a39f945e476794599d74071c285f5cd207b5f88) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 5a39f945e476794599d74071c285f5cd207b5f88) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 0851ffd1b2e78228fd8faaf997c1923398f2f19f) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - d836d464e3ce7993c167e9181ca5f0421a6a10c6) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + d836d464e3ce7993c167e9181ca5f0421a6a10c6) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 7a05f3cd6684b7152f9863d9f6a13913af42793d) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -51,9 +63,15 @@ if(LIBOPENCOR_PREBUILT_LIBSBML) c6502328d20c918d5b5388a9fea8d1d7d26b75ab) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 074660baeb6430b4da8b058592937c8fc9a7351f) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 074660baeb6430b4da8b058592937c8fc9a7351f) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + f70f0b25a9f13fc1fbe398bf89cbfd03c31633b2) + endif() endif() endif() else() diff --git a/src/3rdparty/libSEDML/CMakeLists.txt b/src/3rdparty/libSEDML/CMakeLists.txt index e86280fbb..270d83835 100644 --- a/src/3rdparty/libSEDML/CMakeLists.txt +++ b/src/3rdparty/libSEDML/CMakeLists.txt @@ -32,13 +32,25 @@ if(LIBOPENCOR_PREBUILT_LIBSEDML) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 8d6be566b8c87b4b7cd83d8a3b67a32f45cd483e) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 8d6be566b8c87b4b7cd83d8a3b67a32f45cd483e) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + f501a31c487f82b243149528a8128238d639cb4f) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 199ede7b71d10a046aa00d62d201a1dea2bd4ca5) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 199ede7b71d10a046aa00d62d201a1dea2bd4ca5) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 7aec25c64059f11f34f4271c9f376cfb3cb89050) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -51,9 +63,15 @@ if(LIBOPENCOR_PREBUILT_LIBSEDML) 3da908437161d75bcd8e0cfdf010fb60aadaaa6b) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - ab77f3b89a85e7544c4c3f785ec0cb046c05678a) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + ab77f3b89a85e7544c4c3f785ec0cb046c05678a) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 14e3294cc84585c5c33f4494481d90555b23b3b7) + endif() endif() endif() else() diff --git a/src/3rdparty/libcurl/CMakeLists.txt b/src/3rdparty/libcurl/CMakeLists.txt index 552f94605..161693953 100644 --- a/src/3rdparty/libcurl/CMakeLists.txt +++ b/src/3rdparty/libcurl/CMakeLists.txt @@ -27,13 +27,25 @@ endif() if(LIBOPENCOR_PREBUILT_LIBCURL) if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - d05d02ef482730c3a3d8886026aa2214d96f2e24) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + d05d02ef482730c3a3d8886026aa2214d96f2e24) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 110614df0c1c9f8c627b22a19bcb2a9ed52e86d7) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - db94afcfbfa6c99ad50caea67383e1d4c531406b) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + db94afcfbfa6c99ad50caea67383e1d4c531406b) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 158887aa551e1439e224a0a9763fd72f15756361) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -46,9 +58,15 @@ if(LIBOPENCOR_PREBUILT_LIBCURL) ec4cec188b6df415fa3e0367295b6792d4f42e90) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - f8d6d68a90c37f383a7f5e6730b1d7ea54452ccd) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + f8d6d68a90c37f383a7f5e6730b1d7ea54452ccd) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 1d41aebf3040f0ae86845f4cac26b8f05e35abc1) + endif() endif() else() # Build our package. diff --git a/src/3rdparty/libssh2/CMakeLists.txt b/src/3rdparty/libssh2/CMakeLists.txt index 5519b5689..3ba348578 100644 --- a/src/3rdparty/libssh2/CMakeLists.txt +++ b/src/3rdparty/libssh2/CMakeLists.txt @@ -23,13 +23,25 @@ set(INSTALL_DIR ${PREBUILT_DIR}/${PACKAGE_NAME}) if(LIBOPENCOR_PREBUILT_LIBSSH2) if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - b034aef740d10333d428ef3738cf9dcbf1319cdc) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + b034aef740d10333d428ef3738cf9dcbf1319cdc) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + d074e0a4ac949c7cfc4d74c56e7040fe25ee6332) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - fdb70ba76cc62673f8f80382b5c1504e5085fc7b) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + fdb70ba76cc62673f8f80382b5c1504e5085fc7b) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 6532912f33cf074616d3d9e18888643061449fab) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -42,9 +54,15 @@ if(LIBOPENCOR_PREBUILT_LIBSSH2) 91e84958df28389afeaf46f6432f44663bb147f1) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 8c5b3930100cb97ec118dc645fb1273f51140145) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 8c5b3930100cb97ec118dc645fb1273f51140145) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 19e3ffa73e95969fa13beb7f8a37fecf4d595b6b) + endif() endif() else() # Build our package. diff --git a/src/3rdparty/libxml2/CMakeLists.txt b/src/3rdparty/libxml2/CMakeLists.txt index 7346aa072..9e01c852f 100644 --- a/src/3rdparty/libxml2/CMakeLists.txt +++ b/src/3rdparty/libxml2/CMakeLists.txt @@ -28,13 +28,25 @@ if(LIBOPENCOR_PREBUILT_LIBXML2) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 80441434833bfe74d0b105ffb0e90e3d548e93dd) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 80441434833bfe74d0b105ffb0e90e3d548e93dd) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 3f25822e6063a0eed1bf1229f1bccab5e6b1bf3f) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - bd4a6823a96ccbb982b5442e8b2dcdfaad4f1d43) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + bd4a6823a96ccbb982b5442e8b2dcdfaad4f1d43) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 907f061cf35afba3133daa47336d7b65292cfcaf) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -47,9 +59,15 @@ if(LIBOPENCOR_PREBUILT_LIBXML2) 54871ea6e95629c81eb9a041281c3ab86e79d914) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - b17c6aca3f0563ccf0abffb6e1bb645c2fbf9729) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + b17c6aca3f0563ccf0abffb6e1bb645c2fbf9729) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 45f31d7ddad7784978fec9753506cb504d81d4c5) + endif() endif() endif() else() diff --git a/src/3rdparty/zipper/CMakeLists.txt b/src/3rdparty/zipper/CMakeLists.txt index d049abf7f..2d6f3825d 100644 --- a/src/3rdparty/zipper/CMakeLists.txt +++ b/src/3rdparty/zipper/CMakeLists.txt @@ -28,13 +28,25 @@ if(LIBOPENCOR_PREBUILT_ZIPPER) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 1b29a495deef311a3029c9a84ed70624b566c3c4) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 1b29a495deef311a3029c9a84ed70624b566c3c4) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + a1e5c3f2955982439262ec8c65635485383f7855) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 0e25d62e63310b4a94ccf70fad7d5a237fc78c72) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 0e25d62e63310b4a94ccf70fad7d5a237fc78c72) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 813df4f923912d0245304ae56f3ffecb7167fcd3) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -47,9 +59,15 @@ if(LIBOPENCOR_PREBUILT_ZIPPER) 6cdbc63773163e668d7f14b2d67a6a09819e4203) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 5faa7c54d6b0b5709957e3079c6bd0beb7d86167) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 5faa7c54d6b0b5709957e3079c6bd0beb7d86167) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 9e5e0c2b547c9ecf4bce20afea9a0f45cf2e8ae6) + endif() endif() endif() else() diff --git a/src/3rdparty/zlib/CMakeLists.txt b/src/3rdparty/zlib/CMakeLists.txt index 9387ee291..5f3e0ca59 100644 --- a/src/3rdparty/zlib/CMakeLists.txt +++ b/src/3rdparty/zlib/CMakeLists.txt @@ -28,13 +28,25 @@ if(LIBOPENCOR_PREBUILT_ZLIB) else() if(WIN32) if(RELEASE_MODE) - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - c0452a635bd0206648219341ffb90b76441b8472) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + c0452a635bd0206648219341ffb90b76441b8472) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 922e6e43c90d457c9d5a73ff03d4e63abe3936e3) + endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 3fac0e6cec7df429e0f41a79786f9bc699a4921e) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 3fac0e6cec7df429e0f41a79786f9bc699a4921e) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 3c6afd53f25338b4d8491cda6ef720f381950ba3) + endif() endif() elseif(APPLE) if(INTEL_MODE) @@ -47,9 +59,15 @@ if(LIBOPENCOR_PREBUILT_ZLIB) 14656bd60de8b946ff42ad5cca4f42f82a74da0e) endif() else() - retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} - ${PACKAGE_REPOSITORY} ${RELEASE_TAG} - 6d4be8632edaaa840cf0e36d1b0e382afb2b2c57) + if(INTEL_MODE) + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 6d4be8632edaaa840cf0e36d1b0e382afb2b2c57) + else() + retrieve_package(${PACKAGE_NAME} ${PACKAGE_VERSION} + ${PACKAGE_REPOSITORY} ${RELEASE_TAG} + 1d1079c4494e8ca56babf376d087b70dda99e87c) + endif() endif() endif() else() From 987ecfb85c659ee5c5a39390941e7cbe686a8d24 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 08:02:03 +1300 Subject: [PATCH 02/25] GHA: temporarily disable our CI. --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f03f176fe..eb6a9f1d2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,8 +1,8 @@ name: CI on: - pull_request: - branches: [ main ] + # pull_request: + # branches: [ main ] workflow_dispatch: jobs: From 2e1e188568c43c785514d4c44b6d926fa2e462a0 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 08:02:08 +1300 Subject: [PATCH 03/25] GHA: build LLVM+Clang. --- .github/workflows/LLVMClang.yml | 2 ++ src/3rdparty/CMakeLists.txt | 38 ++++++++++++++++----------------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/.github/workflows/LLVMClang.yml b/.github/workflows/LLVMClang.yml index c94350ec1..011129b40 100644 --- a/.github/workflows/LLVMClang.yml +++ b/.github/workflows/LLVMClang.yml @@ -1,6 +1,8 @@ name: LLVM+Clang on: + pull_request: + branches: [ main ] workflow_dispatch: jobs: diff --git a/src/3rdparty/CMakeLists.txt b/src/3rdparty/CMakeLists.txt index 1d23d0607..dad7e784e 100644 --- a/src/3rdparty/CMakeLists.txt +++ b/src/3rdparty/CMakeLists.txt @@ -104,36 +104,36 @@ set(PACKAGES_TO_ADD ${REQUIRED_PACKAGES_TO_ADD} ${PACKAGES_TO_BUILD} ${DEPENDENT list(REMOVE_DUPLICATES PACKAGES_TO_ADD) list(SORT PACKAGES_TO_ADD) -add_package(libxml2) +# add_package(libxml2) -if(NOT EMSCRIPTEN) - add_package(OpenSSL) -endif() +# if(NOT EMSCRIPTEN) +# add_package(OpenSSL) +# endif() -add_package(zlib) +# add_package(zlib) -add_package(libSBML) # Requires libxml2. -add_package(libNuML) # Requires libSBML. +# add_package(libSBML) # Requires libxml2. +# add_package(libNuML) # Requires libSBML. -if(NOT EMSCRIPTEN) - add_package(libssh2) # Requires OpenSSL. -endif() +# if(NOT EMSCRIPTEN) +# add_package(libssh2) # Requires OpenSSL. +# endif() -add_package(zipper) # Requires zlib. +# add_package(zipper) # Requires zlib. -# Required third-party libraries. +# # Required third-party libraries. -add_package(libCellML) # Requires libxml2 and zlib. -add_package(libCOMBINE) # Requires libSBML, libxml2, zipper, and zlib. +# add_package(libCellML) # Requires libxml2 and zlib. +# add_package(libCOMBINE) # Requires libSBML, libxml2, zipper, and zlib. -if(NOT EMSCRIPTEN) - add_package(libcurl) # Requires libssh2, OpenSSL, and zlib. -endif() +# if(NOT EMSCRIPTEN) +# add_package(libcurl) # Requires libssh2, OpenSSL, and zlib. +# endif() -add_package(libSEDML) # Requires libNuML and libSBML. +# add_package(libSEDML) # Requires libNuML and libSBML. if(NOT EMSCRIPTEN) add_package(LLVMClang) endif() -add_package(SUNDIALS) +# add_package(SUNDIALS) From 5b27aeb701ad6fa5d8edb91867353e66cd1c85ce Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 09:22:52 +1300 Subject: [PATCH 04/25] GHA: make sure to use bash when configuring libOpenCOR when building our third-party libraries. Indeed, this is because we build llvm-tblgen and clang-tblgen using a bash script, so to get env.DLLVMCLANG_LLVM_TABLEGEN and env.DLLVMCLANG_CLANG_TABLEGEN properly set, we need to stick to bash. If we were not to do that on Windows, then env.DLLVMCLANG_LLVM_TABLEGEN and env.DLLVMCLANG_CLANG_TABLEGEN would be split in two!? Indeed, CMake would eventually warn about ignoring "D:/a/libopencor/libopencor/build/.1.8/build/bin/llvm-tblgen.exe" and ".1.8/build/bin/clang-tblgen.exe"!? --- .github/workflows/buildThirdPartyLibrary.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index 06ea43931..9c5390e8c 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -92,6 +92,7 @@ jobs: with: arch: ${{ matrix.arch }} - name: Configure libOpenCOR + shell: bash run: | mkdir build cd build From 67e08896f8de87b3d2c2c87a49618befbd663359 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 19:08:53 +1300 Subject: [PATCH 05/25] (Re)added ARM support on Windows and Linux. --- CMakeLists.txt | 40 ++++++++++++++++++--------- cmake/environmentchecks.cmake | 50 +++++++--------------------------- cmake/packaging/CMakeLists.txt | 8 +----- 3 files changed, 38 insertions(+), 60 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a4dba77d1..5ff7086af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -399,11 +399,11 @@ else() unset(SHARED_LIBS CACHE) # TARGET_ARCHITECTURE ==> LIBOPENCOR_TARGET_ARCHITECTURE. - # Note: this is only relevant on macOS since on Windows the target architecture is always going to be the same as - # that of the version of MSVC we are using (i.e. x64 or arm64) while on Linux we have no choice but to target - # the same architecture as that of the system. + # Note: this is only relevant if we build libOpenCOR using Clang since on Windows the target architecture is always + # going to be the same as that of the version of MSVC we are using (i.e. x64 or arm64) while on Linux we have + # no choice but to target the same architecture as that of the system. - if(APPLE) + if(BUILDING_USING_CLANG) set(LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING "Specify the target architecture (Intel or ARM).") set(LIBOPENCOR_TARGET_ARCHITECTURE ${DEFAULT_TARGET_ARCHITECTURE} CACHE STRING "${LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING}") @@ -470,11 +470,9 @@ else() endif() endif() - if(APPLE) - if( NOT "${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel" - AND NOT "${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "ARM") - message(SEND_ERROR "Configuration error: unsupported target architecture (${LIBOPENCOR_TARGET_ARCHITECTURE}). Supported target architectures are Intel and ARM.") - endif() + if( NOT "${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel" + AND NOT "${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "ARM") + message(SEND_ERROR "Configuration error: unsupported target architecture (${LIBOPENCOR_TARGET_ARCHITECTURE}). Supported target architectures are Intel and ARM.") endif() # Determine whether we are building in release mode. @@ -490,11 +488,27 @@ else() if("${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel") set(INTEL_MODE TRUE) - if(APPLE) - set(CMAKE_OSX_ARCHITECTURES x86_64) + if(WIN32) + set(CMAKE_C_COMPILER_TARGET x86_64-pc-windows-msvc) + set(CMAKE_CXX_COMPILER_TARGET x86_64-pc-windows-msvc) + elseif(APPLE) + set(CMAKE_C_COMPILER_TARGET x86_64-apple-darwin) + set(CMAKE_CXX_COMPILER_TARGET x86_64-apple-darwin) + else() + set(CMAKE_C_COMPILER_TARGET x86_64-unknown-linux-gnu) + set(CMAKE_CXX_COMPILER_TARGET x86_64-unknown-linux-gnu) + endif() + else() + if(WIN32) + set(CMAKE_C_COMPILER_TARGET aarch64-pc-windows-msvc) + set(CMAKE_CXX_COMPILER_TARGET aarch64-pc-windows-msvc) + elseif(APPLE) + set(CMAKE_C_COMPILER_TARGET arm64-apple-darwin) + set(CMAKE_CXX_COMPILER_TARGET arm64-apple-darwin) + else() + set(CMAKE_C_COMPILER_TARGET aarch64-unknown-linux-gnu) + set(CMAKE_CXX_COMPILER_TARGET aarch64-unknown-linux-gnu) endif() - elseif(APPLE) - set(CMAKE_OSX_ARCHITECTURES arm64) endif() # Build libOpenCOR. diff --git a/cmake/environmentchecks.cmake b/cmake/environmentchecks.cmake index fb31c745c..b32ca75b1 100644 --- a/cmake/environmentchecks.cmake +++ b/cmake/environmentchecks.cmake @@ -19,8 +19,11 @@ if(WIN32) AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC" AND MSVC_TOOLSET_VERSION EQUAL 143) set(BUILDING_USING_MSVC TRUE) + elseif( "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" + AND "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang") + set(BUILDING_USING_CLANG TRUE) else() - message(FATAL_ERROR "${CMAKE_PROJECT_NAME} can only be built using MSVC 2022 on Windows.") + message(FATAL_ERROR "${CMAKE_PROJECT_NAME} can only be built using MSVC 2022 or Clang on Windows.") endif() elseif(APPLE) if( ( "${CMAKE_C_COMPILER_ID}" STREQUAL "Clang" @@ -56,52 +59,19 @@ if(APPLE AND NOT "${CMAKE_OSX_DEPLOYMENT_TARGET}" VERSION_GREATER_EQUAL "${MACOS endif() # Determine our default target architecture. -# Note: on Windows, the target architecture depends on the version of MSVC we are using (i.e. x64 or arm64), so we look -# for /x64/ and /arm64/ in CMAKE_CXX_COMPILER rather than just rely on the value of CMAKE_SYSTEM_PROCESSOR since -# there is no guarantee that it corresponds to the target architecture (see -# https://cmake.org/cmake/help/latest/variable/CMAKE_SYSTEM_PROCESSOR.html). - -if(WIN32) - string(FIND "${CMAKE_CXX_COMPILER}" "/x64/" INDEX) - - if(NOT INDEX EQUAL -1) - set(DEFAULT_TARGET_ARCHITECTURE Intel) - else() - set(DEFAULT_TARGET_ARCHITECTURE ARM) - endif() -elseif(APPLE) - if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") - set(DEFAULT_TARGET_ARCHITECTURE Intel) - else() - set(DEFAULT_TARGET_ARCHITECTURE ARM) - endif() -else() - if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") - # On an Intel-based system, we can cross-compile for ARM, so we need to check which compiler is actually being - # used. - - string(FIND "${CMAKE_CXX_COMPILER}" "aarch64-linux-gnu" INDEX) - if(NOT INDEX EQUAL -1) - set(DEFAULT_TARGET_ARCHITECTURE ARM) - else() - set(DEFAULT_TARGET_ARCHITECTURE Intel) - endif() - else() - set(DEFAULT_TARGET_ARCHITECTURE ARM) - endif() +if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" + OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") + set(DEFAULT_TARGET_ARCHITECTURE Intel) +elseif("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "ARM64" + OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") + set(DEFAULT_TARGET_ARCHITECTURE ARM) endif() if("${DEFAULT_TARGET_ARCHITECTURE}" STREQUAL "") message(FATAL_ERROR "No supported target architecture could be determined for ${CMAKE_PROJECT_NAME}.") endif() -# On Windows and Linux, our actual target architecture is always our default target architecture. - -if(NOT APPLE) - set(LIBOPENCOR_TARGET_ARCHITECTURE ${DEFAULT_TARGET_ARCHITECTURE}) -endif() - # Check whether we are dealing with a single or multiple configuration. get_property(IS_MULTI_CONFIG GLOBAL PROPERTY GENERATOR_IS_MULTI_CONFIG) diff --git a/cmake/packaging/CMakeLists.txt b/cmake/packaging/CMakeLists.txt index e2822153a..bc1384ad7 100644 --- a/cmake/packaging/CMakeLists.txt +++ b/cmake/packaging/CMakeLists.txt @@ -61,19 +61,13 @@ endif() # Specify the package file name. -if(${LIBOPENCOR_TARGET_ARCHITECTURE} STREQUAL "Intel") - set(LIBRARY_ARCHITECTURE "Intel") -else() - set(LIBRARY_ARCHITECTURE "ARM") -endif() - if(LIBOPENCOR_SHARED_LIBS) set(LIBRARY_TYPE "Shared") else() set(LIBRARY_TYPE "Static") endif() -set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-${CPACK_SYSTEM_NAME}-${LIBRARY_ARCHITECTURE}-${LIBRARY_TYPE}) +set(CPACK_PACKAGE_FILE_NAME ${CPACK_PACKAGE_NAME}-${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}-${CPACK_SYSTEM_NAME}-${LIBOPENCOR_TARGET_ARCHITECTURE}-${LIBRARY_TYPE}) # Package libOpenCOR. From 2eea4df43d1231522f769ddf9bcb9083023bf5c5 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 23:26:59 +1300 Subject: [PATCH 06/25] CMake: (eventually) return if we sent some errors. --- CMakeLists.txt | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5ff7086af..8f115c36a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,6 +95,8 @@ else() set(LIBOPENCOR_CODE_ANALYSIS ${CODE_ANALYSIS} CACHE BOOL "${LIBOPENCOR_CODE_ANALYSIS_DOCSTRING}" FORCE) elseif(CODE_ANALYSIS) message(SEND_ERROR "${CODE_ANALYSIS_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(CODE_ANALYSIS CACHE) @@ -110,6 +112,8 @@ else() set(LIBOPENCOR_CODE_COVERAGE ${CODE_COVERAGE} CACHE BOOL "${LIBOPENCOR_CODE_COVERAGE_DOCSTRING}" FORCE) elseif(CODE_COVERAGE) message(SEND_ERROR "${CODE_COVERAGE_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(CODE_COVERAGE CACHE) @@ -125,6 +129,8 @@ else() set(LIBOPENCOR_COMPILER_CACHING ${COMPILER_CACHING} CACHE BOOL "${LIBOPENCOR_COMPILER_CACHING_DOCSTRING}" FORCE) elseif(COMPILER_CACHING) message(SEND_ERROR "${COMPILER_CACHING_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(COMPILER_CACHING CACHE) @@ -140,6 +146,8 @@ else() set(LIBOPENCOR_DOCUMENTATION ${DOCUMENTATION} CACHE BOOL "${LIBOPENCOR_DOCUMENTATION_DOCSTRING}" FORCE) elseif(DOCUMENTATION) message(SEND_ERROR "${DOCUMENTATION_AVAILABLE_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(DOCUMENTATION CACHE) @@ -173,6 +181,8 @@ else() set(LIBOPENCOR_JAVASCRIPT_BINDINGS ${JAVASCRIPT_BINDINGS} CACHE BOOL "${LIBOPENCOR_JAVASCRIPT_BINDINGS_DOCSTRING}" FORCE) elseif(JAVASCRIPT_BINDINGS) message(SEND_ERROR "${JAVASCRIPT_BINDINGS_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(JAVASCRIPT_BINDINGS CACHE) @@ -189,6 +199,8 @@ else() set(LIBOPENCOR_JAVASCRIPT_UNIT_TESTING ${JAVASCRIPT_UNIT_TESTING} CACHE BOOL "${LIBOPENCOR_JAVASCRIPT_UNIT_TESTING_DOCSTRING}" FORCE) elseif(JAVASCRIPT_UNIT_TESTING) message(SEND_ERROR "${JAVASCRIPT_UNIT_TESTING_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(JAVASCRIPT_UNIT_TESTING CACHE) @@ -205,6 +217,8 @@ else() set(LIBOPENCOR_MEMORY_CHECKS ${MEMORY_CHECKS} CACHE BOOL "${LIBOPENCOR_MEMORY_CHECKS_DOCSTRING}" FORCE) elseif(MEMORY_CHECKS) message(SEND_ERROR "${MEMORY_CHECKS_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(MEMORY_CHECKS CACHE) @@ -363,6 +377,8 @@ else() set(LIBOPENCOR_PYTHON_BINDINGS ${PYTHON_BINDINGS} CACHE BOOL "${LIBOPENCOR_PYTHON_BINDINGS_DOCSTRING}" FORCE) elseif(PYTHON_BINDINGS) message(SEND_ERROR "${PYTHON_BINDINGS_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(PYTHON_BINDINGS CACHE) @@ -379,6 +395,8 @@ else() set(LIBOPENCOR_PYTHON_UNIT_TESTING ${PYTHON_UNIT_TESTING} CACHE BOOL "${LIBOPENCOR_PYTHON_UNIT_TESTING_DOCSTRING}" FORCE) elseif(PYTHON_UNIT_TESTING) message(SEND_ERROR "${PYTHON_UNIT_TESTING_ERROR_MESSAGE}") + + set(SENT_ERRORS TRUE) endif() unset(PYTHON_UNIT_TESTING CACHE) @@ -441,38 +459,56 @@ else() if(LIBOPENCOR_CODE_COVERAGE) if(NOT LIBOPENCOR_SHARED_LIBS) message(SEND_ERROR "Configuration confusion: code coverage is requested which means that a static library cannot be requested.") + + set(SENT_ERRORS TRUE) endif() if(NOT LIBOPENCOR_UNIT_TESTING) message(SEND_ERROR "Configuration confusion: code coverage is requested which means that unit testing should also be requested.") + + set(SENT_ERRORS TRUE) endif() endif() if(LIBOPENCOR_MEMORY_CHECKS) if("${LIBOPENCOR_BUILD_TYPE}" STREQUAL "Release") message(SEND_ERROR "Configuration confusion: memory checks are requested which means that a release build cannot also be requested.") + + set(SENT_ERRORS TRUE) endif() if(NOT LIBOPENCOR_UNIT_TESTING) message(SEND_ERROR "Configuration confusion: memory checks are requested which means that unit testing should also be requested.") + + set(SENT_ERRORS TRUE) endif() endif() if(LIBOPENCOR_PYTHON_BINDINGS) if(LIBOPENCOR_SHARED_LIBS) message(SEND_ERROR "Configuration confusion: Python bindings are requested which means that a shared library cannot be requested.") + + set(SENT_ERRORS TRUE) endif() endif() if(LIBOPENCOR_PYTHON_UNIT_TESTING) if(NOT LIBOPENCOR_PYTHON_BINDINGS) message(SEND_ERROR "Configuration confusion: Python unit testing is requested which means that Python bindings should also be requested.") + + set(SENT_ERRORS TRUE) endif() endif() if( NOT "${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel" AND NOT "${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "ARM") message(SEND_ERROR "Configuration error: unsupported target architecture (${LIBOPENCOR_TARGET_ARCHITECTURE}). Supported target architectures are Intel and ARM.") + + set(SENT_ERRORS TRUE) + endif() + + if(SENT_ERRORS) + return() endif() # Determine whether we are building in release mode. From 4808a064eb638bbcd459fb294a8a8c8c2c8300b0 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Thu, 9 Jan 2025 18:09:32 +1300 Subject: [PATCH 07/25] Always use Clang to build our third-party libraries. Indeed, to build LLVM+Clang on Windows ARM is not possible using MSVC. --- .github/workflows/buildThirdPartyLibrary.yml | 42 ++++++-------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index 9c5390e8c..c25f33b22 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -21,19 +21,19 @@ jobs: include: - name: 'Windows release (Intel)' os: windows-latest - arch: amd64 + target_architecture: Intel build_type: Release - name: 'Windows debug (Intel)' os: windows-latest - arch: amd64 + target_architecture: Intel build_type: Debug - name: 'Windows release (ARM)' os: windows-latest - arch: amd64_arm64 + target_architecture: ARM build_type: Release - name: 'Windows debug (ARM)' os: windows-latest - arch: amd64_arm64 + target_architecture: ARM build_type: Debug - name: 'Linux (Intel)' os: ubuntu-20.04 @@ -43,17 +43,19 @@ jobs: # our Python wheels on Linux, we have no choice but to use manylinux_2_28, which relies on a version # of glibc with libpthread, hence getting various messages about __libc_single_threaded being # undefined when trying to build our Python wheels using third-party libraries built on ubuntu-22.04. + target_architecture: Intel build_type: Release - name: 'Linux (ARM)' os: ubuntu-latest - arch: arm - cmake_prereqs: CC=aarch64-linux-gnu-gcc CXX=aarch64-linux-gnu-g++ + target_architecture: ARM build_type: Release - name: 'macOS (Intel)' - os: macos-13 + os: macos-latest + target_architecture: Intel build_type: Release - name: 'macOS (ARM)' os: macos-latest + target_architecture: ARM build_type: Release env: BUILDCACHE_ACCURACY: STRICT @@ -61,42 +63,22 @@ jobs: BUILDCACHE_DEBUG: -1 BUILDCACHE_LOG_FILE: "" steps: + - name: Check the version of Clang + run: clang --version - name: Check out libOpenCOR uses: actions/checkout@v4 - - name: Install ARM compiler - if: ${{ matrix.arch == 'arm' }} - run: | - sudo apt update - sudo apt install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - name: Install CMake and Ninja uses: lukka/get-cmake@latest - name: Install buildcache uses: cscouto/buildcache-action@v1 with: cache_key: libraries-${{ matrix.os }}-${{ matrix.shared_libs }} - - name: Configure MSVC (to build an Intel-based version of llvm-tblgen and clang-tblgen) - if: ${{ (runner.os == 'Windows') && (matrix.arch == 'amd64_arm64') }} - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: amd64 - - name: Build llvm-tblgen and clang-tblgen - if: ${{ (((runner.os == 'Windows') && (matrix.arch == 'amd64_arm64')) || ((runner.os == 'Linux') && (matrix.arch == 'arm'))) }} - shell: bash - run: | - source src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen ${{ runner.os == 'Windows' }} - echo "DLLVMCLANG_LLVM_TABLEGEN=$DLLVMCLANG_LLVM_TABLEGEN" >> $GITHUB_ENV - echo "DLLVMCLANG_CLANG_TABLEGEN=$DLLVMCLANG_CLANG_TABLEGEN" >> $GITHUB_ENV - - name: Configure MSVC - if: ${{ runner.os == 'Windows' }} - uses: ilammy/msvc-dev-cmd@v1 - with: - arch: ${{ matrix.arch }} - name: Configure libOpenCOR shell: bash run: | mkdir build cd build - ${{ matrix.cmake_prereqs }} cmake -G Ninja -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. + cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - name: Upload library artifact if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/upload-artifact@v4 From 1e0f814e08562e8cccb078a9adbb60ed9e4d4ecf Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 00:51:02 +1300 Subject: [PATCH 08/25] GHA: testing. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8f115c36a..67a303fce 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -536,14 +536,14 @@ else() endif() else() if(WIN32) - set(CMAKE_C_COMPILER_TARGET aarch64-pc-windows-msvc) - set(CMAKE_CXX_COMPILER_TARGET aarch64-pc-windows-msvc) + set(CMAKE_C_COMPILER_TARGET arm64-pc-windows-msvc) + set(CMAKE_CXX_COMPILER_TARGET arm64-pc-windows-msvc) elseif(APPLE) set(CMAKE_C_COMPILER_TARGET arm64-apple-darwin) set(CMAKE_CXX_COMPILER_TARGET arm64-apple-darwin) else() - set(CMAKE_C_COMPILER_TARGET aarch64-unknown-linux-gnu) - set(CMAKE_CXX_COMPILER_TARGET aarch64-unknown-linux-gnu) + set(CMAKE_C_COMPILER_TARGET arm64-unknown-linux-gnu) + set(CMAKE_CXX_COMPILER_TARGET arm64-unknown-linux-gnu) endif() endif() From 831bdaf6359afc9fdde1c94d77c97463021cedf0 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 00:53:47 +1300 Subject: [PATCH 09/25] GHA: testing. --- .github/workflows/buildThirdPartyLibrary.yml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index c25f33b22..d7854cbf1 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -36,13 +36,7 @@ jobs: target_architecture: ARM build_type: Debug - name: 'Linux (Intel)' - os: ubuntu-20.04 - # Note: we must use ubuntu-20.04 rather than ubuntu-latest (i.e. ubuntu-22.04 at this stage). Indeed, - # Ubuntu 22.04's copy of glibc doesn't include libpthread anymore (see - # https://developers.redhat.com/articles/2021/12/17/why-glibc-234-removed-libpthread). Yet, to build - # our Python wheels on Linux, we have no choice but to use manylinux_2_28, which relies on a version - # of glibc with libpthread, hence getting various messages about __libc_single_threaded being - # undefined when trying to build our Python wheels using third-party libraries built on ubuntu-22.04. + os: ubuntu-latest target_architecture: Intel build_type: Release - name: 'Linux (ARM)' From c27833e47d2da5c7ca0098327a750f0ff044e431 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 01:13:49 +1300 Subject: [PATCH 10/25] GHA: testing. --- CMakeLists.txt | 36 ++++++++++++++++++--------- src/3rdparty/LLVMClang/CMakeLists.txt | 1 + 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 67a303fce..be5aa4075 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -525,25 +525,37 @@ else() set(INTEL_MODE TRUE) if(WIN32) - set(CMAKE_C_COMPILER_TARGET x86_64-pc-windows-msvc) - set(CMAKE_CXX_COMPILER_TARGET x86_64-pc-windows-msvc) + set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-windows-msvc) + + set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) elseif(APPLE) - set(CMAKE_C_COMPILER_TARGET x86_64-apple-darwin) - set(CMAKE_CXX_COMPILER_TARGET x86_64-apple-darwin) + set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-apple-darwin) + + set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) else() - set(CMAKE_C_COMPILER_TARGET x86_64-unknown-linux-gnu) - set(CMAKE_CXX_COMPILER_TARGET x86_64-unknown-linux-gnu) + set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-gnu) + + set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) endif() else() if(WIN32) - set(CMAKE_C_COMPILER_TARGET arm64-pc-windows-msvc) - set(CMAKE_CXX_COMPILER_TARGET arm64-pc-windows-msvc) + set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-pc-windows-msvc) + + set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) elseif(APPLE) - set(CMAKE_C_COMPILER_TARGET arm64-apple-darwin) - set(CMAKE_CXX_COMPILER_TARGET arm64-apple-darwin) + set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-apple-darwin) + + set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) else() - set(CMAKE_C_COMPILER_TARGET arm64-unknown-linux-gnu) - set(CMAKE_CXX_COMPILER_TARGET arm64-unknown-linux-gnu) + set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-pc-linux-gnu) + + set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) endif() endif() diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index 0f4e2e2a0..258c1b1fe 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -106,6 +106,7 @@ else() -DLLVM_BUILD_RUNTIMES=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_BUILD_UTILS=OFF + -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_DEFAULT_TARGET_TRIPLE} -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_ENABLE_BACKTRACES=OFF -DLLVM_ENABLE_BINDINGS=OFF From a1e34f7ff37a8969835f724b6c5c2bdda5ab5caa Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 01:32:39 +1300 Subject: [PATCH 11/25] GHA: testing. --- CMakeLists.txt | 33 ++++++++------------------- src/3rdparty/LLVMClang/CMakeLists.txt | 3 ++- 2 files changed, 11 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index be5aa4075..338f83831 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -525,40 +525,25 @@ else() set(INTEL_MODE TRUE) if(WIN32) - set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-windows-msvc) - - set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(LLVMCLANG_TARGET_ARCHITECTURE x86_64-pc-windows-msvc) elseif(APPLE) - set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-apple-darwin) - - set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(LLVMCLANG_TARGET_ARCHITECTURE x86_64-apple-darwin) else() - set(LLVM_DEFAULT_TARGET_TRIPLE x86_64-pc-linux-gnu) - - set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(LLVMCLANG_TARGET_ARCHITECTURE x86_64-pc-linux-gnu) endif() else() if(WIN32) - set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-pc-windows-msvc) - - set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(LLVMCLANG_TARGET_ARCHITECTURE aarch64-pc-windows-msvc) elseif(APPLE) - set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-apple-darwin) - - set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(LLVMCLANG_TARGET_ARCHITECTURE aarch64-apple-darwin) else() - set(LLVM_DEFAULT_TARGET_TRIPLE aarch64-pc-linux-gnu) - - set(CMAKE_C_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVM_DEFAULT_TARGET_TRIPLE}) + set(LLVMCLANG_TARGET_ARCHITECTURE aarch64-pc-linux-gnu) endif() endif() + set(CMAKE_C_COMPILER_TARGET ${LLVMCLANG_TARGET_ARCHITECTURE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVMCLANG_TARGET_ARCHITECTURE}) + # Build libOpenCOR. add_subdirectory(src) diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index 258c1b1fe..764f971f1 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -106,7 +106,7 @@ else() -DLLVM_BUILD_RUNTIMES=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_BUILD_UTILS=OFF - -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVM_DEFAULT_TARGET_TRIPLE} + -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVMCLANG_TARGET_ARCHITECTURE} -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_ENABLE_BACKTRACES=OFF -DLLVM_ENABLE_BINDINGS=OFF @@ -135,6 +135,7 @@ else() -DLLVM_INCLUDE_TOOLS=ON -DLLVM_INCLUDE_UTILS=OFF ${LLVM_TABLEGEN} + -DLLVM_TARGET_ARCH=${LLVMCLANG_TARGET_ARCHITECTURE} -DLLVM_TARGETS_TO_BUILD=${LLVM_TARGETS_TO_BUILD} ) From fa2791982af8a1e8c0af99de96e79c9afeed9dc0 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 01:42:16 +1300 Subject: [PATCH 12/25] GHA: testing. --- CMakeLists.txt | 20 ++++++++++++-------- src/3rdparty/LLVMClang/CMakeLists.txt | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 338f83831..c082e7446 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -524,25 +524,29 @@ else() if("${LIBOPENCOR_TARGET_ARCHITECTURE}" STREQUAL "Intel") set(INTEL_MODE TRUE) + set(LLVMCLANG_TARGET_ARCHITECTURE x86_64) + if(WIN32) - set(LLVMCLANG_TARGET_ARCHITECTURE x86_64-pc-windows-msvc) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-pc-windows-msvc) elseif(APPLE) - set(LLVMCLANG_TARGET_ARCHITECTURE x86_64-apple-darwin) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-apple-darwin) else() - set(LLVMCLANG_TARGET_ARCHITECTURE x86_64-pc-linux-gnu) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-pc-linux-gnu) endif() else() + set(LLVMCLANG_TARGET_ARCHITECTURE aarch64) + if(WIN32) - set(LLVMCLANG_TARGET_ARCHITECTURE aarch64-pc-windows-msvc) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-pc-windows-msvc) elseif(APPLE) - set(LLVMCLANG_TARGET_ARCHITECTURE aarch64-apple-darwin) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-apple-darwin) else() - set(LLVMCLANG_TARGET_ARCHITECTURE aarch64-pc-linux-gnu) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-pc-linux-gnu) endif() endif() - set(CMAKE_C_COMPILER_TARGET ${LLVMCLANG_TARGET_ARCHITECTURE}) - set(CMAKE_CXX_COMPILER_TARGET ${LLVMCLANG_TARGET_ARCHITECTURE}) + set(CMAKE_C_COMPILER_TARGET ${LLVMCLANG_TARGET_TRIPLE}) + set(CMAKE_CXX_COMPILER_TARGET ${LLVMCLANG_TARGET_TRIPLE}) # Build libOpenCOR. diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index 764f971f1..1d6da5a40 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -106,7 +106,7 @@ else() -DLLVM_BUILD_RUNTIMES=OFF -DLLVM_BUILD_TOOLS=OFF -DLLVM_BUILD_UTILS=OFF - -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVMCLANG_TARGET_ARCHITECTURE} + -DLLVM_DEFAULT_TARGET_TRIPLE=${LLVMCLANG_TARGET_TRIPLE} -DLLVM_ENABLE_ASSERTIONS=OFF -DLLVM_ENABLE_BACKTRACES=OFF -DLLVM_ENABLE_BINDINGS=OFF From 17dc5c3ab3c31c70badc6cae859382486044ffca Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 01:52:09 +1300 Subject: [PATCH 13/25] GHA: testing. --- cmake/environmentchecks.cmake | 2 ++ src/3rdparty/LLVMClang/CMakeLists.txt | 1 + 2 files changed, 3 insertions(+) diff --git a/cmake/environmentchecks.cmake b/cmake/environmentchecks.cmake index b32ca75b1..552cdb017 100644 --- a/cmake/environmentchecks.cmake +++ b/cmake/environmentchecks.cmake @@ -63,9 +63,11 @@ endif() if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") set(DEFAULT_TARGET_ARCHITECTURE Intel) + set(LLVMCLANG_HOST_TRIPLE x86_64) elseif("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "ARM64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") set(DEFAULT_TARGET_ARCHITECTURE ARM) + set(LLVMCLANG_HOST_TRIPLE aarch64) endif() if("${DEFAULT_TARGET_ARCHITECTURE}" STREQUAL "") diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index 1d6da5a40..f595564e2 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -126,6 +126,7 @@ else() -DLLVM_ENABLE_WARNINGS=OFF -DLLVM_ENABLE_ZLIB=OFF -DLLVM_ENABLE_ZSTD=OFF + -DLLVM_HOST_TRIPLE=${LLVMCLANG_HOST_TRIPLE} -DLLVM_INCLUDE_BENCHMARKS=OFF -DLLVM_INCLUDE_DOCS=OFF -DLLVM_INCLUDE_EXAMPLES=OFF From 2ad85c2fdd592f9aadc0c14b706e4f57f115fe5e Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:10:50 +1300 Subject: [PATCH 14/25] GHA: testing. --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c082e7446..c5aa02d58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -531,7 +531,7 @@ else() elseif(APPLE) set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-apple-darwin) else() - set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-pc-linux-gnu) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-unknown-linux-gnu) endif() else() set(LLVMCLANG_TARGET_ARCHITECTURE aarch64) @@ -541,7 +541,7 @@ else() elseif(APPLE) set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-apple-darwin) else() - set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-pc-linux-gnu) + set(LLVMCLANG_TARGET_TRIPLE ${LLVMCLANG_TARGET_ARCHITECTURE}-unknown-linux-gnu) endif() endif() From 759e7ad49642244727731f550c0b6afa23aa858b Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:17:51 +1300 Subject: [PATCH 15/25] GHA: testing. --- cmake/environmentchecks.cmake | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/cmake/environmentchecks.cmake b/cmake/environmentchecks.cmake index 552cdb017..c69b30de5 100644 --- a/cmake/environmentchecks.cmake +++ b/cmake/environmentchecks.cmake @@ -63,11 +63,25 @@ endif() if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") set(DEFAULT_TARGET_ARCHITECTURE Intel) - set(LLVMCLANG_HOST_TRIPLE x86_64) + + if(WIN32) + set(LLVMCLANG_HOST_TRIPLE x86_64-pc-windows-msvc) + elseif(APPLE) + set(LLVMCLANG_HOST_TRIPLE x86_64-apple-darwin) + else() + set(LLVMCLANG_HOST_TRIPLE x86_64-unknown-linux-gnu) + endif() elseif("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "ARM64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") set(DEFAULT_TARGET_ARCHITECTURE ARM) - set(LLVMCLANG_HOST_TRIPLE aarch64) + + if(WIN32) + set(LLVMCLANG_HOST_TRIPLE aarch64-pc-windows-msvc) + elseif(APPLE) + set(LLVMCLANG_HOST_TRIPLE aarch64-apple-darwin) + else() + set(LLVMCLANG_HOST_TRIPLE aarch64-unknown-linux-gnu) + endif() endif() if("${DEFAULT_TARGET_ARCHITECTURE}" STREQUAL "") From 39f6ea8570eaaa39187931286c8a347d5907f426 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:22:38 +1300 Subject: [PATCH 16/25] GHA: testing. --- .github/workflows/buildThirdPartyLibrary.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index d7854cbf1..5f8263ade 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -72,7 +72,8 @@ jobs: run: | mkdir build cd build - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. + cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. + # cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - name: Upload library artifact if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/upload-artifact@v4 From 4fe8e15d7e0293b36b67dd9cf6e855d04a9924c7 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:32:18 +1300 Subject: [PATCH 17/25] GHA: testing. --- cmake/environmentchecks.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/environmentchecks.cmake b/cmake/environmentchecks.cmake index c69b30de5..c867327aa 100644 --- a/cmake/environmentchecks.cmake +++ b/cmake/environmentchecks.cmake @@ -60,6 +60,8 @@ endif() # Determine our default target architecture. +message(FATAL_ERROR "CMAKE_HOST_SYSTEM_PROCESSOR: >${CMAKE_HOST_SYSTEM_PROCESSOR}<") + if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") set(DEFAULT_TARGET_ARCHITECTURE Intel) From 51e45609060ee3c613b4d4dcaeb1c74cc989acb5 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:36:37 +1300 Subject: [PATCH 18/25] GHA: testing. --- CMakeLists.txt | 2 ++ cmake/environmentchecks.cmake | 2 -- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5aa02d58..b2e9604c8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -432,6 +432,8 @@ else() unset(TARGET_ARCHITECTURE CACHE) endif() + message(FATAL_ERROR ">>> LIBOPENCOR_TARGET_ARCHITECTURE: >${LIBOPENCOR_TARGET_ARCHITECTURE}<") + # UNIT_TESTING ==> LIBOPENCOR_UNIT_TESTING. set(LIBOPENCOR_UNIT_TESTING_DOCSTRING "Enable unit testing.") diff --git a/cmake/environmentchecks.cmake b/cmake/environmentchecks.cmake index c867327aa..c69b30de5 100644 --- a/cmake/environmentchecks.cmake +++ b/cmake/environmentchecks.cmake @@ -60,8 +60,6 @@ endif() # Determine our default target architecture. -message(FATAL_ERROR "CMAKE_HOST_SYSTEM_PROCESSOR: >${CMAKE_HOST_SYSTEM_PROCESSOR}<") - if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "x86_64") set(DEFAULT_TARGET_ARCHITECTURE Intel) From d80fa9fb13ab008025143b9040cdfb4b15daaad9 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:43:11 +1300 Subject: [PATCH 19/25] GHA: testing. --- CMakeLists.txt | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b2e9604c8..7f656a05b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -420,19 +420,24 @@ else() # Note: this is only relevant if we build libOpenCOR using Clang since on Windows the target architecture is always # going to be the same as that of the version of MSVC we are using (i.e. x64 or arm64) while on Linux we have # no choice but to target the same architecture as that of the system. +message(">>> 00") if(BUILDING_USING_CLANG) +message(">>> 01") set(LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING "Specify the target architecture (Intel or ARM).") set(LIBOPENCOR_TARGET_ARCHITECTURE ${DEFAULT_TARGET_ARCHITECTURE} CACHE STRING "${LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING}") if(NOT "${TARGET_ARCHITECTURE}" STREQUAL "") +message(">>> 02 [${TARGET_ARCHITECTURE}]") set(LIBOPENCOR_TARGET_ARCHITECTURE ${TARGET_ARCHITECTURE} CACHE STRING "${LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING}" FORCE) endif() +message(">>> 03") unset(TARGET_ARCHITECTURE CACHE) endif() +message(">>> 04") - message(FATAL_ERROR ">>> LIBOPENCOR_TARGET_ARCHITECTURE: >${LIBOPENCOR_TARGET_ARCHITECTURE}<") +message(FATAL_ERROR ">>> LIBOPENCOR_TARGET_ARCHITECTURE: >${LIBOPENCOR_TARGET_ARCHITECTURE}<") # UNIT_TESTING ==> LIBOPENCOR_UNIT_TESTING. From 8efea15ac22a47dfc661eae0737e8d5554e088d4 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 02:49:37 +1300 Subject: [PATCH 20/25] GHA: testing. --- .github/workflows/buildThirdPartyLibrary.yml | 3 +-- CMakeLists.txt | 7 ------- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index 5f8263ade..d7854cbf1 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -72,8 +72,7 @@ jobs: run: | mkdir build cd build - cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - # cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. + cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - name: Upload library artifact if: ${{ !startsWith(github.ref, 'refs/tags/v') }} uses: actions/upload-artifact@v4 diff --git a/CMakeLists.txt b/CMakeLists.txt index 7f656a05b..c5aa02d58 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -420,24 +420,17 @@ else() # Note: this is only relevant if we build libOpenCOR using Clang since on Windows the target architecture is always # going to be the same as that of the version of MSVC we are using (i.e. x64 or arm64) while on Linux we have # no choice but to target the same architecture as that of the system. -message(">>> 00") if(BUILDING_USING_CLANG) -message(">>> 01") set(LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING "Specify the target architecture (Intel or ARM).") set(LIBOPENCOR_TARGET_ARCHITECTURE ${DEFAULT_TARGET_ARCHITECTURE} CACHE STRING "${LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING}") if(NOT "${TARGET_ARCHITECTURE}" STREQUAL "") -message(">>> 02 [${TARGET_ARCHITECTURE}]") set(LIBOPENCOR_TARGET_ARCHITECTURE ${TARGET_ARCHITECTURE} CACHE STRING "${LIBOPENCOR_TARGET_ARCHITECTURE_DOCSTRING}" FORCE) endif() -message(">>> 03") unset(TARGET_ARCHITECTURE CACHE) endif() -message(">>> 04") - -message(FATAL_ERROR ">>> LIBOPENCOR_TARGET_ARCHITECTURE: >${LIBOPENCOR_TARGET_ARCHITECTURE}<") # UNIT_TESTING ==> LIBOPENCOR_UNIT_TESTING. From f436db6588e41e4f6842e58b41f7633e2d5db242 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 09:45:19 +1300 Subject: [PATCH 21/25] GHA: testing. --- .github/workflows/buildThirdPartyLibrary.yml | 28 ++++++++++++-------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index d7854cbf1..296400564 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -67,18 +67,24 @@ jobs: uses: cscouto/buildcache-action@v1 with: cache_key: libraries-${{ matrix.os }}-${{ matrix.shared_libs }} - - name: Configure libOpenCOR - shell: bash - run: | - mkdir build - cd build - cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - - name: Upload library artifact - if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - uses: actions/upload-artifact@v4 + - name: Install LLVM+Clang + uses: KyleMayes/install-llvm-action@v2 with: - name: ${{ matrix.name }} - path: ./build/*.tar.gz + version: 18 + - name: Check the version of Clang + run: clang --version + # - name: Configure libOpenCOR + # shell: bash + # run: | + # mkdir build + # cd build + # cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. + # - name: Upload library artifact + # if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + # uses: actions/upload-artifact@v4 + # with: + # name: ${{ matrix.name }} + # path: ./build/*.tar.gz webassembly: name: WebAssembly if: ${{ inputs.wasm_support }} From f0d7e083bf341a316f6b39c0640f40c27be4c733 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 09:54:02 +1300 Subject: [PATCH 22/25] GHA: testing. --- .github/workflows/buildThirdPartyLibrary.yml | 5 +++++ cmake/environmentchecks.cmake | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index 296400564..4474edfd2 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -71,6 +71,11 @@ jobs: uses: KyleMayes/install-llvm-action@v2 with: version: 18 + - name: Install libncurses5 (Linux only) + if: ${{ matrix.os == 'ubuntu-latest' }} + run: | + sudo apt update + sudo apt install libncurses5 - name: Check the version of Clang run: clang --version # - name: Configure libOpenCOR diff --git a/cmake/environmentchecks.cmake b/cmake/environmentchecks.cmake index c69b30de5..1092a12fe 100644 --- a/cmake/environmentchecks.cmake +++ b/cmake/environmentchecks.cmake @@ -69,7 +69,7 @@ if("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "AMD64" elseif(APPLE) set(LLVMCLANG_HOST_TRIPLE x86_64-apple-darwin) else() - set(LLVMCLANG_HOST_TRIPLE x86_64-unknown-linux-gnu) + set(LLVMCLANG_HOST_TRIPLE x86_64-pc-linux-gnu) endif() elseif("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "ARM64" OR "${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "arm64") @@ -80,7 +80,7 @@ elseif("${CMAKE_HOST_SYSTEM_PROCESSOR}" STREQUAL "ARM64" elseif(APPLE) set(LLVMCLANG_HOST_TRIPLE aarch64-apple-darwin) else() - set(LLVMCLANG_HOST_TRIPLE aarch64-unknown-linux-gnu) + set(LLVMCLANG_HOST_TRIPLE aarch64-pc-linux-gnu) endif() endif() From 1acf0479f46db8f820b569f04c95bf568ccb3593 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Fri, 10 Jan 2025 09:58:31 +1300 Subject: [PATCH 23/25] GHA: testing. --- .github/workflows/buildThirdPartyLibrary.yml | 23 ++++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/.github/workflows/buildThirdPartyLibrary.yml b/.github/workflows/buildThirdPartyLibrary.yml index 4474edfd2..41b67d16d 100644 --- a/.github/workflows/buildThirdPartyLibrary.yml +++ b/.github/workflows/buildThirdPartyLibrary.yml @@ -78,18 +78,17 @@ jobs: sudo apt install libncurses5 - name: Check the version of Clang run: clang --version - # - name: Configure libOpenCOR - # shell: bash - # run: | - # mkdir build - # cd build - # cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. - # - name: Upload library artifact - # if: ${{ !startsWith(github.ref, 'refs/tags/v') }} - # uses: actions/upload-artifact@v4 - # with: - # name: ${{ matrix.name }} - # path: ./build/*.tar.gz + - name: Configure libOpenCOR + run: | + mkdir build + cd build + cmake -G Ninja -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -DTARGET_ARCHITECTURE=${{ matrix.target_architecture }} -DBUILD_TYPE=${{ matrix.build_type }} -DONLY_BUILD_THIRD_PARTY_LIBRARIES=ON -DPREBUILT_${{ inputs.third_party_library_name }}=OFF ${{ env.DLLVMCLANG_LLVM_TABLEGEN }} ${{ env.DLLVMCLANG_CLANG_TABLEGEN }} .. + - name: Upload library artifact + if: ${{ !startsWith(github.ref, 'refs/tags/v') }} + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.name }} + path: ./build/*.tar.gz webassembly: name: WebAssembly if: ${{ inputs.wasm_support }} From b71e9784fc1364ea88b3d8f59942244abe9c6a43 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Mon, 13 Jan 2025 07:41:38 +1300 Subject: [PATCH 24/25] GHA: testing. --- src/3rdparty/LLVMClang/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index f595564e2..76b5da312 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -15,7 +15,7 @@ set(PACKAGE_NAME LLVMClang) set(PACKAGE_VERSION 18.1.8) set(PACKAGE_REPOSITORY llvm-project) -set(RELEASE_TAG llvmorg-18.1.8) +set(RELEASE_TAG llvmorg-18.1.8-libopencor) set(INSTALL_DIR ${PREBUILT_DIR}/${PACKAGE_NAME}) # Either retrieve or build our package. From 8c6e3301aef108005d85cf31b4a4b74020832987 Mon Sep 17 00:00:00 2001 From: Alan Garny Date: Mon, 13 Jan 2025 08:02:43 +1300 Subject: [PATCH 25/25] GHA: testing. --- src/3rdparty/LLVMClang/CMakeLists.txt | 4 ++-- src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen | 2 +- tests/api/version/tests.cpp | 8 ++++---- tests/bindings/python/test_version.py | 8 ++++---- 4 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/3rdparty/LLVMClang/CMakeLists.txt b/src/3rdparty/LLVMClang/CMakeLists.txt index 76b5da312..c73e2bcf1 100644 --- a/src/3rdparty/LLVMClang/CMakeLists.txt +++ b/src/3rdparty/LLVMClang/CMakeLists.txt @@ -13,9 +13,9 @@ # limitations under the License. set(PACKAGE_NAME LLVMClang) -set(PACKAGE_VERSION 18.1.8) +set(PACKAGE_VERSION 19.1.6) set(PACKAGE_REPOSITORY llvm-project) -set(RELEASE_TAG llvmorg-18.1.8-libopencor) +set(RELEASE_TAG llvmorg-19.1.6-libopencor) set(INSTALL_DIR ${PREBUILT_DIR}/${PACKAGE_NAME}) # Either retrieve or build our package. diff --git a/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen b/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen index 196ad3931..8c146d1d0 100755 --- a/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen +++ b/src/3rdparty/LLVMClang/scripts/buildllvmclangtblgen @@ -1,6 +1,6 @@ #!/bin/sh -LLVMCLANG_VERSION=18.1.8 +LLVMCLANG_VERSION=19.1.6 curl -Ls https://github.com/opencor/llvm-project/archive/refs/tags/llvmorg-$LLVMCLANG_VERSION.zip -o llvm-project-llvmorg-$LLVMCLANG_VERSION.zip unzip -qq llvm-project-llvmorg-$LLVMCLANG_VERSION.zip diff --git a/tests/api/version/tests.cpp b/tests/api/version/tests.cpp index ec7948c5b..0519a2df8 100644 --- a/tests/api/version/tests.cpp +++ b/tests/api/version/tests.cpp @@ -26,8 +26,8 @@ TEST(VersionTest, libOpenCOR) TEST(VersionTest, Clang) { - EXPECT_EQ(0x180108U, libOpenCOR::clangVersion()); - EXPECT_EQ("18.1.8", libOpenCOR::clangVersionString()); + EXPECT_EQ(0x190106U, libOpenCOR::clangVersion()); + EXPECT_EQ("19.1.6", libOpenCOR::clangVersionString()); } TEST(VersionTest, libCellML) @@ -56,8 +56,8 @@ TEST(VersionTest, libSEDML) TEST(VersionTest, LLVM) { - EXPECT_EQ(0x180108U, libOpenCOR::llvmVersion()); - EXPECT_EQ("18.1.8", libOpenCOR::llvmVersionString()); + EXPECT_EQ(0x190106U, libOpenCOR::llvmVersion()); + EXPECT_EQ("19.1.6", libOpenCOR::llvmVersionString()); } TEST(VersionTest, SUNDIALS) diff --git a/tests/bindings/python/test_version.py b/tests/bindings/python/test_version.py index 58ac9a695..d77146f58 100644 --- a/tests/bindings/python/test_version.py +++ b/tests/bindings/python/test_version.py @@ -30,12 +30,12 @@ def test_version_string(): def test_clang_version(): assert isinstance(oc.clang_version(), int) - assert oc.clang_version() == 0x180108 + assert oc.clang_version() == 0x190106 def test_clang_version_string(): assert isinstance(oc.clang_version_string(), str) - assert oc.clang_version_string() == "18.1.8" + assert oc.clang_version_string() == "19.1.6" def test_libcellml_version(): @@ -80,12 +80,12 @@ def test_libsedml_version_string(): def test_llvm_version(): assert isinstance(oc.llvm_version(), int) - assert oc.llvm_version() == 0x180108 + assert oc.llvm_version() == 0x190106 def test_llvm_version_string(): assert isinstance(oc.llvm_version_string(), str) - assert oc.llvm_version_string() == "18.1.8" + assert oc.llvm_version_string() == "19.1.6" def test_sundials_version():