Skip to content

Commit

Permalink
including memcheck build
Browse files Browse the repository at this point in the history
  • Loading branch information
K20shores committed Mar 14, 2024
1 parent c51c795 commit e72d525
Show file tree
Hide file tree
Showing 5 changed files with 49 additions and 17 deletions.
1 change: 1 addition & 0 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ jobs:
os: [ubuntu-latest]
dockerfile:
- Dockerfile
- Dockerfile.memcheck
- Dockerfile.fortran-intel
- Dockerfile.fortran-gcc
- Dockerfile.fortran-nvhpc
Expand Down
1 change: 1 addition & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ option(MUSICA_ENABLE_INSTALL "Install the musica library" ON)
option(MUSICA_ENABLE_TESTS "Builds tests that ensures each enabled MUSICA component can be used" ON)
option(MUSICA_ENABLE_MPI "Enable MPI parallel support" OFF)
option(MUSICA_ENABLE_OPENMP "Enable OpemMP support" OFF)
option(MUSICA_ENABLE_MEMCHECK "Enable memory checking" OFF)

cmake_dependent_option(
MUSICA_ENABLE_TUVX "Builds TUV-x, a photolysis calculator library" ON "MUSICA_BUILD_FORTRAN_INTERFACE" OFF)
Expand Down
32 changes: 16 additions & 16 deletions cmake/test_util.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -64,23 +64,23 @@ function(add_musica_test test_name test_binary test_args working_dir)
COMMAND ${test_binary} ${test_args}
WORKING_DIRECTORY ${working_dir})
endif()
# set(MEMORYCHECK_COMMAND_OPTIONS "--error-exitcode=1 --trace-children=yes --leak-check=full --gen-suppressions=all ${MEMCHECK_SUPPRESS}")
# set(memcheck "${MEMORYCHECK_COMMAND} ${MEMORYCHECK_COMMAND_OPTIONS}")
# separate_arguments(memcheck)
# if(MUSICA_ENABLE_MPI AND MEMORYCHECK_COMMAND AND MUSICA_ENABLE_MEMCHECK)
# add_test(NAME memcheck_${test_name}
# COMMAND mpirun -v -np 2 ${memcheck} ${CMAKE_BINARY_DIR}/${test_binary} ${test_args}
# WORKING_DIRECTORY ${working_dir})
set(MEMORYCHECK_COMMAND_OPTIONS "--error-exitcode=1 --trace-children=yes --leak-check=full --gen-suppressions=all ${MEMCHECK_SUPPRESS}")
set(memcheck "${MEMORYCHECK_COMMAND} ${MEMORYCHECK_COMMAND_OPTIONS}")
separate_arguments(memcheck)
if(MUSICA_ENABLE_MPI AND MEMORYCHECK_COMMAND AND MUSICA_ENABLE_MEMCHECK)
add_test(NAME memcheck_${test_name}
COMMAND mpirun -v -np 2 ${memcheck} ${CMAKE_BINARY_DIR}/${test_binary} ${test_args}
WORKING_DIRECTORY ${working_dir})

# # add dependency between memcheck and previous test
# # https://stackoverflow.com/a/66931930/5217293
# set_tests_properties(${test_name} PROPERTIES FIXTURES_SETUP f_${test_name})
# set_tests_properties(memcheck_${test_name} PROPERTIES FIXTURES_REQUIRED f_${test_name})
# elseif(MEMORYCHECK_COMMAND AND MUSICA_ENABLE_MEMCHECK)
# add_test(NAME memcheck_${test_name}
# COMMAND ${memcheck} ${CMAKE_BINARY_DIR}/${test_binary} ${test_args}
# WORKING_DIRECTORY ${working_dir})
# endif()
# add dependency between memcheck and previous test
# https://stackoverflow.com/a/66931930/5217293
set_tests_properties(${test_name} PROPERTIES FIXTURES_SETUP f_${test_name})
set_tests_properties(memcheck_${test_name} PROPERTIES FIXTURES_REQUIRED f_${test_name})
elseif(MEMORYCHECK_COMMAND AND MUSICA_ENABLE_MEMCHECK)
add_test(NAME memcheck_${test_name}
COMMAND ${memcheck} ${CMAKE_BINARY_DIR}/${test_binary} ${test_args}
WORKING_DIRECTORY ${working_dir})
endif()
endfunction(add_musica_test)

################################################################################
1 change: 0 additions & 1 deletion docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ COPY . musica
RUN cd musica \
&& cmake -S . \
-B build \
-D ENABLE_TESTS=ON \
&& cd build \
&& make install -j 8

Expand Down
31 changes: 31 additions & 0 deletions docker/Dockerfile.memcheck
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
FROM fedora:35

RUN dnf -y update \
&& dnf -y install \
cmake \
gcc-c++ \
gcc-gfortran \
gdb \
git \
lcov \
make \
netcdf-fortran-devel \
json-devel \
valgrind \
&& dnf clean all

# Set environment variables
ENV FC=gfortran

# Copy the musica code
COPY . musica

# Build
RUN cd musica \
&& cmake -S . \
-B build \
-D MUSICA_ENABLE_MEMCHECK=ON \
&& cd build \
&& make install -j 8

WORKDIR musica/build

0 comments on commit e72d525

Please sign in to comment.