diff --git a/.github/workflows/coverity.yml b/.github/workflows/coverity.yml index 2a13c2380..4e8b53d4d 100644 --- a/.github/workflows/coverity.yml +++ b/.github/workflows/coverity.yml @@ -13,7 +13,7 @@ jobs: - uses: cvmfs-contrib/github-action-cvmfs@v3 - uses: aidasoft/run-lcg-view@v4 with: - coverity-cmake-command: 'cmake -DCMAKE_CXX_STANDARD=17 -DENABLE_SIO=ON -DUSE_EXTERNAL_CATCH2=OFF ..' + coverity-cmake-command: 'cmake -DCMAKE_CXX_STANDARD=17 -DENABLE_SIO=ON -DENABLE_JULIA=ON -DUSE_EXTERNAL_CATCH2=OFF ..' coverity-project: 'AIDASoft%2Fpodio' coverity-project-token: ${{ secrets.PODIO_COVERITY_TOKEN }} github-pat: ${{ secrets.READ_COVERITY_IMAGE }} diff --git a/.github/workflows/edm4hep.yaml b/.github/workflows/edm4hep.yaml index 188c56f64..76d970d63 100644 --- a/.github/workflows/edm4hep.yaml +++ b/.github/workflows/edm4hep.yaml @@ -44,6 +44,7 @@ jobs: cd $STARTDIR/podio mkdir build && cd build cmake -DENABLE_SIO=ON \ + -DENABLE_JULIA=ON \ -DCMAKE_INSTALL_PREFIX=../install \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ diff --git a/.github/workflows/key4hep.yml b/.github/workflows/key4hep.yml index 5135b4741..47c7641a7 100644 --- a/.github/workflows/key4hep.yml +++ b/.github/workflows/key4hep.yml @@ -28,6 +28,7 @@ jobs: mkdir build install cd build cmake -DENABLE_SIO=ON \ + -DENABLE_JULIA=ON \ -DCMAKE_INSTALL_PREFIX=../install \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index d22047cbf..b15ada282 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -32,6 +32,7 @@ jobs: mkdir build cd build cmake .. -DENABLE_SIO=ON \ + -DENABLE_JULIA=ON \ -DENABLE_RNTUPLE=ON \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror "\ diff --git a/.github/workflows/sanitizers.yaml b/.github/workflows/sanitizers.yaml index e2c4d4af4..537cf7c57 100644 --- a/.github/workflows/sanitizers.yaml +++ b/.github/workflows/sanitizers.yaml @@ -43,6 +43,7 @@ jobs: -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always " \ -DUSE_EXTERNAL_CATCH2=OFF \ -DENABLE_SIO=ON \ + -DENABLE_JULIA=ON \ -G Ninja .. echo "::endgroup::" echo "::group::Build" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e90601816..5cd382e26 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -37,6 +37,7 @@ jobs: mkdir build install cd build cmake -DENABLE_SIO=ON \ + -DENABLE_JULIA=ON \ -DENABLE_RNTUPLE=${{ matrix.RNTUPLE }} \ -DCMAKE_INSTALL_PREFIX=../install \ -DCMAKE_CXX_STANDARD=${{ matrix.CXX_STANDARD }} \ diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 7fe3ececc..2d7f68aac 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -27,6 +27,7 @@ jobs: mkdir build install cd build cmake -DENABLE_SIO=${{ matrix.sio }} \ + -DENABLE_JULIA=ON \ -DCMAKE_INSTALL_PREFIX=../install \ -DCMAKE_CXX_STANDARD=17 \ -DCMAKE_CXX_FLAGS=" -fdiagnostics-color=always -Werror -Wno-error=deprecated-declarations " \ diff --git a/CMakeLists.txt b/CMakeLists.txt index 83c74dbe5..a0cc27849 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,6 +70,7 @@ option(ENABLE_SIO "Build SIO I/O support" OFF) option(PODIO_RELAX_PYVER "Do not require exact python version match with ROOT" OFF) option(ENABLE_RNTUPLE "Build with support for the new ROOT NTtuple format" OFF) option(PODIO_USE_CLANG_FORMAT "Use clang-format to format the code" OFF) +option(ENABLE_JULIA "Enable Julia support. When enabled, Julia datamodels will be generated, and Julia tests will run." OFF) #--- Declare ROOT dependency --------------------------------------------------- diff --git a/python/templates/CMakeLists.txt b/python/templates/CMakeLists.txt index 7b7d04007..83a52996a 100644 --- a/python/templates/CMakeLists.txt +++ b/python/templates/CMakeLists.txt @@ -25,6 +25,5 @@ set(PODIO_TEMPLATES ${CMAKE_CURRENT_LIST_DIR}/MutableStruct.jl.jinja2 ${CMAKE_CURRENT_LIST_DIR}/ParentModule.jl.jinja2 - ${CMAKE_CURRENT_LIST_DIR}/macros/abstracttypes.jinja2 - ${CMAKE_CURRENT_LIST_DIR}/macros/params.jinja2 + ${CMAKE_CURRENT_LIST_DIR}/macros/julia_helpers.jinja2 ) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c49ad74c2..cebf6476c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -63,26 +63,33 @@ add_subdirectory(schema_evolution) CREATE_PODIO_TEST(ostream_operator.cpp "") CREATE_PODIO_TEST(write_ascii.cpp "") -PODIO_GENERATE_DATAMODEL(datamodeljulia datalayout.yaml headers sources - IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS} - LANG julia - ) - -PODIO_GENERATE_DATAMODEL(extensionmodeljulia datalayout_extension.yaml ext_headers ext_sources - UPSTREAM_EDM ../../datamodeljulia:datalayout.yaml - IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS} - OUTPUT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/extension_model - LANG julia - ) +if (ENABLE_JULIA) + message(STATUS "Julia Datamodel generation is enabled.") + PODIO_GENERATE_DATAMODEL(datamodeljulia datalayout.yaml headers sources + IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS} + LANG julia + ) -find_program(Julia_EXECUTABLE julia) -if (Julia_EXECUTABLE) - message(STATUS "Found Julia, will add the Julia tests") - set(UNITTEST_SCRIPT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/unittests/unittest.jl) - add_test(NAME julia-unittests COMMAND julia ${UNITTEST_SCRIPT_PATH}) - set_tests_properties(julia-unittests PROPERTIES - WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + PODIO_GENERATE_DATAMODEL(extensionmodeljulia datalayout_extension.yaml ext_headers ext_sources + UPSTREAM_EDM ../../datamodeljulia:datalayout.yaml + IO_BACKEND_HANDLERS ${PODIO_IO_HANDLERS} + OUTPUT_FOLDER ${CMAKE_CURRENT_SOURCE_DIR}/extension_model + LANG julia ) + + find_program(Julia_EXECUTABLE julia) + if (Julia_EXECUTABLE) + message(STATUS "Found Julia, will add the Julia tests") + set(UNITTEST_SCRIPT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/unittests/unittest.jl) + add_test(NAME julia-unittests COMMAND julia ${UNITTEST_SCRIPT_PATH}) + set_tests_properties(julia-unittests PROPERTIES + WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} + ) + else() + message(WARNING "Julia not found.") + endif() +else() + message(STATUS "Julia Datamodel generation is disabled.") endif() # Customize CTest to potentially disable some of the tests with known problems