diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 8818feb5..e57057e8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,13 +16,9 @@ jobs: strategy: fail-fast: false matrix: - os: [ubuntu-22.04] + os: [ubuntu-22.04, macos-12] py: [311] allow-fail: [false] - include: - - os: macos-12 - py: 311 - allow-fail: true steps: - uses: actions/checkout@v3.5.3 diff --git a/client_side_tests/test_fetch_content_recompile.sh b/client_side_tests/test_fetch_content_recompile.sh index f6f13c71..c36785d1 100755 --- a/client_side_tests/test_fetch_content_recompile.sh +++ b/client_side_tests/test_fetch_content_recompile.sh @@ -1,4 +1,5 @@ #!/bin/bash +set -e tmp_dir=$(mktemp -d -t nain4-recompile-XXXXXX) test_dir=$(dirname "$(readlink -f "$0")") diff --git a/flake.nix b/flake.nix index fb26f92f..0b55ad60 100644 --- a/flake.nix +++ b/flake.nix @@ -22,29 +22,51 @@ enableRaytracerX11 = false; }); + # Should be able to remove this, once https://github.com/NixOS/nixpkgs/issues/234710 is merged + clang_16 = if pkgs.stdenv.isDarwin + then pkgs.llvmPackages_16.clang.override rec { + libc = pkgs.darwin.Libsystem; + bintools = pkgs.bintools.override { inherit libc; }; + inherit (pkgs.llvmPackages) libcxx; + extraPackages = [ + pkgs.llvmPackages.libcxxabi + # Use the compiler-rt associated with clang, but use the libc++abi from the stdenv + # to avoid linking against two different versions (for the same reasons as above). + (pkgs.llvmPackages_16.compiler-rt.override { + inherit (pkgs.llvmPackages) libcxxabi; + }) + ]; + } + else pkgs.llvmPackages.clang; + + my-packages = with pkgs; [ + my-geant4 + geant4.data.G4PhotonEvaporation + geant4.data.G4EMLOW + geant4.data.G4RadioactiveDecay + geant4.data.G4ENSDFSTATE + geant4.data.G4SAIDDATA + geant4.data.G4PARTICLEXS + geant4.data.G4NDL + clang_16 + clang-tools + cmake + cmake-language-server + catch2_3 + just + gnused # For hacking CMAKE_EXPORT stuff into CMakeLists.txt + mdbook + ] ++ lib.optionals stdenv.isDarwin [ + + ] ++ lib.optionals stdenv.isLinux [ + ]; + in { devShell = pkgs.mkShell.override { stdenv = pkgs.clang_16.stdenv; } { name = "G4-examples-devenv"; - packages = with pkgs; [ - my-geant4 - geant4.data.G4PhotonEvaporation - geant4.data.G4EMLOW - geant4.data.G4RadioactiveDecay - geant4.data.G4ENSDFSTATE - geant4.data.G4SAIDDATA - geant4.data.G4PARTICLEXS - geant4.data.G4NDL - clang_16 - clang-tools - cmake - cmake-language-server - catch2_3 - just - gnused # For hacking CMAKE_EXPORT stuff into CMakeLists.txt - mdbook - ]; + packages = my-packages; G4_DIR = "${pkgs.geant4}"; G4_EXAMPLES_DIR = "${pkgs.geant4}/share/Geant4-11.0.4/examples/"; diff --git a/nain4/CMakeLists.txt b/nain4/CMakeLists.txt index a3fa5861..e594b951 100644 --- a/nain4/CMakeLists.txt +++ b/nain4/CMakeLists.txt @@ -45,6 +45,10 @@ FILE(GLOB HEADERS ${PROJECT_SOURCE_DIR}/*.hh) add_library(Nain4 SHARED ${SOURCES} ${HEADERS}) +if(APPLE) + target_link_options(Nain4 PRIVATE -undefined dynamic_lookup) +endif() + #set_target_properties(Nain4 PROPERTIES ENABLE_EXPORTS ON) #---------------------------------------------------------------------------- @@ -80,6 +84,10 @@ set(ALL_TEST_SOURCES # TODO including headers in add_executable apparently makes them show up in IDEs. Verify how? add_executable(nain4-tests ${ALL_TEST_SOURCES}) +if(APPLE) + target_link_options(nain4-tests PRIVATE -undefined dynamic_lookup) +endif() + target_link_libraries( nain4-tests