diff --git a/.github/workflows/build_cmake_tarball.yml b/.github/workflows/build_cmake_tarball.yml index 306b384a30..7d5a97a05f 100644 --- a/.github/workflows/build_cmake_tarball.yml +++ b/.github/workflows/build_cmake_tarball.yml @@ -75,7 +75,7 @@ jobs: # # - name: build config variables - run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=$DEBUG_FLAGS -DCMAKE_CXX_FLAGS_DEBUG=$DEBUG_FLAGS -DT8CODE_USE_SYSTEM_SC=OFF -DT8CODE_USE_SYSTEM_P4EST=OFF -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE" + run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=$DEBUG_FLAGS -DCMAKE_CXX_FLAGS_DEBUG=$DEBUG_FLAGS -DT8CODE_USE_SYSTEM_SC=OFF -DT8CODE_USE_SYSTEM_P4EST=OFF -DT8CODE_BUILD_WPEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE" && echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV - name: cmake run: mkdir build && cd build && cmake ../ $CONFIG_OPTIONS @@ -123,7 +123,7 @@ jobs: run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}" && echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV - name: build config variables - run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_USE_SYSTEM_SC=OFF -DT8CODE_USE_SYSTEM_P4EST=OFF -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE" + run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_USE_SYSTEM_SC=OFF -DT8CODE_USE_SYSTEM_P4EST=OFF -DT8CODE_BUILD_WPEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE" && echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV - name: Check vars run: echo "[$CONFIG_DEBUG]" diff --git a/.github/workflows/tests_cmake_t8code.yml b/.github/workflows/tests_cmake_t8code.yml index 18a8604f10..9baacb9ecb 100644 --- a/.github/workflows/tests_cmake_t8code.yml +++ b/.github/workflows/tests_cmake_t8code.yml @@ -84,7 +84,7 @@ jobs: run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}" && echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV - name: build config variables - run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake" + run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_WPEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake" && echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV # cmake and test - name: Printing MPI compiler info diff --git a/.github/workflows/tests_cmake_t8code_api.yml b/.github/workflows/tests_cmake_t8code_api.yml index 5505d16f0f..363849d6d6 100644 --- a/.github/workflows/tests_cmake_t8code_api.yml +++ b/.github/workflows/tests_cmake_t8code_api.yml @@ -85,7 +85,7 @@ jobs: run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}" && echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV - name: build config variables - run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_BUILD_FORTRAN_INTERFACE=ON -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake" + run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_BUILD_FORTRAN_INTERFACE=ON -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_WPEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake" && echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV # cmake and test with fortran - name: check fortran diff --git a/.github/workflows/tests_cmake_t8code_linkage.yml b/.github/workflows/tests_cmake_t8code_linkage.yml index 4252710041..3c27ecfdd9 100644 --- a/.github/workflows/tests_cmake_t8code_linkage.yml +++ b/.github/workflows/tests_cmake_t8code_linkage.yml @@ -85,7 +85,7 @@ jobs: run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}" && echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV - name: build config variables - run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake" + run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_USE_SYSTEM_SC=ON -DT8CODE_USE_SYSTEM_P4EST=ON -DT8CODE_BUILD_WPEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DSC_DIR=$SC_PATH/install/cmake -DP4EST_DIR=$P4EST_PATH/install/cmake" && echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV # cmake and test with netcdf - name: check NetCDF diff --git a/.github/workflows/tests_cmake_t8code_w_shipped_submodules.yml b/.github/workflows/tests_cmake_t8code_w_shipped_submodules.yml index d393504e92..f9c60ab601 100644 --- a/.github/workflows/tests_cmake_t8code_w_shipped_submodules.yml +++ b/.github/workflows/tests_cmake_t8code_w_shipped_submodules.yml @@ -81,7 +81,7 @@ jobs: run: export TEST_LEVEL_FLAG="-DT8CODE_TEST_LEVEL=${{ inputs.TEST_LEVEL }}" && echo TEST_LEVEL_FLAG="$TEST_LEVEL_FLAG" >> $GITHUB_ENV - name: build config variables - run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_BUILD_PEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE" + run: export CONFIG_OPTIONS="${TEST_LEVEL_FLAG} -GNinja -DCMAKE_C_FLAGS_DEBUG=${DEBUG_CONFIG} -DCMAKE_CXX_FLAGS_DEBUG=${DEBUG_CONFIG} -DT8CODE_BUILD_WPEDANTIC=ON -DT8CODE_BUILD_WALL=ON -DT8CODE_BUILD_WERROR=ON -DT8CODE_ENABLE_MPI=$MPI -DCMAKE_BUILD_TYPE=$BUILD_TYPE" && echo CONFIG_OPTIONS="$CONFIG_OPTIONS" >> $GITHUB_ENV # cmake and test - name: Printing MPI compiler info diff --git a/CMakeLists.txt b/CMakeLists.txt index a5fa5370d9..69f340012f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,7 +13,7 @@ include( CTest ) include( CMakeDependentOption ) option( T8CODE_BUILD_AS_SHARED_LIBRARY "Whether t8code should be built as a shared or a static library" ON ) -option( T8CODE_BUILD_PEDANTIC "Compile t8code with `-pedantic` as done in the Github CI." OFF ) +option( T8CODE_BUILD_WPEDANTIC "Compile t8code with `-Wpedantic` as done in the Github CI." OFF ) option( T8CODE_BUILD_WALL "Compile t8code with `-Wall` as done in the Github CI." OFF ) option( T8CODE_BUILD_WERROR "Compile t8code with `-Werror` as done in the Github CI." OFF ) option( T8CODE_BUILD_EXTRA_WARNINGS "Compile t8code with extra warnings as done in the Github CI." OFF ) @@ -147,6 +147,91 @@ else() add_subdirectory( ${CMAKE_CURRENT_LIST_DIR}/p4est ) endif() +function(t8_add_cmake_properties target) + + if( CMAKE_BUILD_TYPE STREQUAL "Release" ) + set (T8_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") + set (T8_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}") + endif() + + if( CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" ) + set (T8_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") + set (T8_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO}") + endif() + + if( CMAKE_BUILD_TYPE STREQUAL "Debug" ) + set (T8_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") + set (T8_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}") + target_compile_definitions( ${target} PUBLIC T8_ENABLE_DEBUG ) + endif() + + if( T8CODE_EXPORT_COMPILE_COMMANDS ) + set_target_properties( ${target} PROPERTIES EXPORT_COMPILE_COMMANDS ON ) + endif( T8CODE_EXPORT_COMPILE_COMMANDS ) + + target_link_libraries( ${target} PUBLIC P4EST::P4EST SC::SC ) + + if ( T8CODE_ENABLE_MPI ) + target_compile_definitions( ${target} PUBLIC T8_ENABLE_MPI ) + target_compile_definitions( ${target} PUBLIC T8_ENABLE_MPIIO ) + target_link_libraries( ${target} PUBLIC MPI::MPI_C ) + endif() + + if( T8CODE_ENABLE_VTK ) + target_compile_definitions( ${target} PUBLIC T8_VTK_VERSION_USED="${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}" ) + target_compile_definitions( ${target} PUBLIC T8_WITH_VTK=1 ) + target_include_directories( ${target} PUBLIC ${VTK_INCLUDE_DIR} ) + target_link_libraries( ${target} PUBLIC ${VTK_LIBRARIES} ) + endif() + + if( T8CODE_ENABLE_OCC ) + target_compile_definitions( ${target} PUBLIC T8_WITH_OCC=1 ) + target_include_directories( ${target} SYSTEM PUBLIC ${OpenCASCADE_INCLUDE_DIR} ) + target_link_libraries( ${target} PUBLIC ${OpenCASCADE_LIBRARIES} ) + endif() + + if( T8CODE_ENABLE_NETCDF ) + target_link_libraries( ${target} PUBLIC netCDF::netcdf ) + target_compile_definitions(${target} PUBLIC + T8_WITH_NETCDF + $<$,$>:T8_WITH_NETCDF_PAR> + ) + endif() + + if( T8CODE_BUILD_WPEDANTIC ) + target_compile_options( ${target} PUBLIC -Wpedantic ) + set (T8_CXXFLAGS "${T8_CXXFLAGS} -Wpedantic") + set (T8_CFLAGS "${T8_CFLAGS} -Wpedantic") + endif() + + if( T8CODE_BUILD_WALL) + target_compile_options( ${target} PUBLIC -Wall ) + set (T8_CXXFLAGS "${T8_CXXFLAGS} -Wall") + set (T8_CFLAGS "${T8_CFLAGS} -Wall") + endif() + + if( T8CODE_BUILD_WERROR ) + target_compile_options( ${target} PUBLIC -Werror ) + set (T8_CXXFLAGS "${T8_CXXFLAGS} -Werror") + set (T8_CFLAGS "${T8_CFLAGS} -Werror") + endif() + + target_compile_definitions( ${target} PUBLIC T8_CMAKE_BUILD ) + target_compile_definitions( ${target} PUBLIC T8_CC="${CMAKE_C_COMPILER}" ) + target_compile_definitions( ${target} PUBLIC T8_CFLAGS="${T8_CFLAGS}" ) + target_compile_definitions( ${target} PUBLIC T8_CXX="${CMAKE_CXX_COMPILER}" ) + target_compile_definitions( ${target} PUBLIC T8_CXXFLAGS="${T8_CXXFLAGS}" ) + target_compile_definitions( ${target} PUBLIC T8_LDFLAGS="${CMAKE_SHARED_LINKER_FLAGS}" ) + + target_compile_definitions( ${target} PUBLIC T8_PACKAGE_STRING="t8 ${T8CODE_VERSION}" ) + target_compile_definitions( ${target} PUBLIC T8_VERSION="${T8CODE_VERSION}" ) + target_compile_definitions( ${target} PUBLIC T8_VERSION_MAJOR=${T8CODE_VERSION_MAJOR} ) + target_compile_definitions( ${target} PUBLIC T8_VERSION_MINOR=${T8CODE_VERSION_MINOR} ) + target_compile_definitions( ${target} PUBLIC T8_VERSION_PATCH=${T8CODE_VERSION_PATCH} ) + target_compile_definitions( ${target} PUBLIC T8_VERSION_POINT=${T8CODE_VERSION_POINT} ) + +endfunction(t8_add_cmake_properties) + add_subdirectory( ${CMAKE_CURRENT_LIST_DIR}/src ) if ( T8CODE_BUILD_TESTS ) diff --git a/benchmarks/CMakeLists.txt b/benchmarks/CMakeLists.txt index aec3145190..998634514c 100644 --- a/benchmarks/CMakeLists.txt +++ b/benchmarks/CMakeLists.txt @@ -14,6 +14,7 @@ function( add_t8_benchmark ) add_executable( ${ADD_T8_BENCHMARK_NAME} ${ADD_T8_BENCHMARK_SOURCES} ) target_include_directories( ${ADD_T8_BENCHMARK_NAME} PRIVATE ${PROJECT_SOURCE_DIR} ) target_link_libraries( ${ADD_T8_BENCHMARK_NAME} PRIVATE T8 SC::SC ) + t8_add_cmake_properties( ${ADD_T8_BENCHMARK_NAME} ) set_target_properties(${ADD_T8_BENCHMARK_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${BENCHMARK_BUILD_DIR}" @@ -21,10 +22,6 @@ function( add_t8_benchmark ) ARCHIVE_OUTPUT_DIRECTORY "${BENCHMARK_BUILD_DIR}" ) - if( T8CODE_EXPORT_COMPILE_COMMANDS ) - set_target_properties( ${ADD_T8_BENCHMARK_NAME} PROPERTIES EXPORT_COMPILE_COMMANDS ON ) - endif( T8CODE_EXPORT_COMPILE_COMMANDS ) - install( TARGETS ${ADD_T8_BENCHMARK_NAME} DESTINATION bin ) endfunction() diff --git a/example/CMakeLists.txt b/example/CMakeLists.txt index 9813330b14..b09ad96e06 100644 --- a/example/CMakeLists.txt +++ b/example/CMakeLists.txt @@ -25,6 +25,7 @@ function( add_t8_example ) add_executable( ${ADD_T8_EXAMPLE_NAME} ${ADD_T8_EXAMPLE_SOURCES} ) target_link_libraries( ${ADD_T8_EXAMPLE_NAME} PRIVATE T8 t8example SC::SC ) target_include_directories( ${ADD_T8_EXAMPLE_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/.. ) + t8_add_cmake_properties( ${ADD_T8_EXAMPLE_NAME} ) set_target_properties(${ADD_T8_EXAMPLE_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${EXAMPLE_BUILD_DIR}" @@ -32,10 +33,6 @@ function( add_t8_example ) ARCHIVE_OUTPUT_DIRECTORY "${EXAMPLE_BUILD_DIR}" ) - if( T8CODE_EXPORT_COMPILE_COMMANDS ) - set_target_properties( ${ADD_T8_EXAMPLE_NAME} PROPERTIES EXPORT_COMPILE_COMMANDS ON ) - endif( T8CODE_EXPORT_COMPILE_COMMANDS ) - install( TARGETS ${ADD_T8_EXAMPLE_NAME} DESTINATION bin ) endfunction() diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index df51c59ddc..2946fdaed3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,51 +1,13 @@ if ( ${T8CODE_BUILD_AS_SHARED_LIBRARY} ) - add_library( T8 SHARED ) - set_target_properties( T8 PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION ${T8CODE_VERSION_RAW}) - set_target_properties( T8 PROPERTIES POSITION_INDEPENDENT_CODE ON ) + add_library( T8 SHARED ) + set_target_properties( T8 PROPERTIES VERSION ${CMAKE_PROJECT_VERSION} SOVERSION ${T8CODE_VERSION_RAW}) + set_target_properties( T8 PROPERTIES POSITION_INDEPENDENT_CODE ON ) else() - add_library( T8 STATIC ) + add_library( T8 STATIC ) endif() add_library( T8CODE::T8 ALIAS T8 ) -if( CMAKE_BUILD_TYPE STREQUAL "Release" ) - set (T8_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELEASE}") - set (T8_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELEASE}") -endif() - -if( CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" ) - set (T8_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_RELWITHDEBINFO}") - set (T8_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_RELWITHDEBINFO}") -endif() - -if( CMAKE_BUILD_TYPE STREQUAL "Debug" ) - set (T8_CXXFLAGS "${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_DEBUG}") - set (T8_CFLAGS "${CMAKE_C_FLAGS} ${CMAKE_C_FLAGS_DEBUG}") - - target_compile_definitions( T8 PUBLIC T8_ENABLE_DEBUG ) -endif() - -if( T8CODE_EXPORT_COMPILE_COMMANDS ) - set_target_properties( T8 PROPERTIES EXPORT_COMPILE_COMMANDS ON ) -endif( T8CODE_EXPORT_COMPILE_COMMANDS ) - -if( T8CODE_ENABLE_NETCDF ) - target_link_libraries( T8 PUBLIC netCDF::netcdf ) - target_compile_definitions(T8 PUBLIC - T8_WITH_NETCDF - $<$,$>:T8_WITH_NETCDF_PAR> ) - target_sources( T8 PRIVATE - t8_netcdf.c - t8_cmesh/t8_cmesh_netcdf.c - t8_forest/t8_forest_netcdf.cxx - ) - install( FILES - t8_cmesh_netcdf.h - t8_forest_netcdf.h - t8_netcdf.h - DESTINATION include) -endif() - set_target_properties( T8 PROPERTIES OUTPUT_NAME t8 ) target_include_directories( T8 PUBLIC @@ -53,158 +15,121 @@ target_include_directories( T8 PUBLIC $ ) -target_link_libraries( T8 PUBLIC P4EST::P4EST SC::SC ) - -if ( T8CODE_ENABLE_MPI ) - target_compile_definitions( T8 PUBLIC T8_ENABLE_MPI ) - target_compile_definitions( T8 PUBLIC T8_ENABLE_MPIIO ) - target_link_libraries( T8 PUBLIC MPI::MPI_C ) -endif() - -if( T8CODE_ENABLE_VTK ) - target_compile_definitions( T8 PUBLIC T8_VTK_VERSION_USED="${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}" ) - target_compile_definitions( T8 PUBLIC T8_WITH_VTK=1 ) - target_include_directories( T8 PUBLIC ${VTK_INCLUDE_DIR} ) - target_link_libraries( T8 PUBLIC ${VTK_LIBRARIES} ) -endif() - -if( T8CODE_ENABLE_OCC ) - target_compile_definitions( T8 PUBLIC T8_WITH_OCC=1 ) - target_include_directories( T8 SYSTEM PUBLIC ${OpenCASCADE_INCLUDE_DIR} ) - target_link_libraries( T8 PUBLIC ${OpenCASCADE_LIBRARIES} ) -endif() - -if( T8CODE_BUILD_PEDANTIC ) - target_compile_options( T8 PUBLIC -pedantic ) - set (T8_CXXFLAGS "${T8_CXXFLAGS} -Wpedantic") - set (T8_CFLAGS "${T8_CFLAGS} -Wpedantic") -endif() - -if( T8CODE_BUILD_WALL) - target_compile_options( T8 PUBLIC -Wall ) - set (T8_CXXFLAGS "${T8_CXXFLAGS} -Wall") - set (T8_CFLAGS "${T8_CFLAGS} -Wall") -endif() - -if( T8CODE_BUILD_WERROR ) - target_compile_options( T8 PUBLIC -Werror ) - set (T8_CXXFLAGS "${T8_CXXFLAGS} -Werror") - set (T8_CFLAGS "${T8_CFLAGS} -Werror") -endif() - +t8_add_cmake_properties (T8) target_sources( T8 PRIVATE - t8.c - t8_eclass.c - t8_element_shape.c - t8_element.cxx - t8_refcount.c - t8_version.c - t8_vtk.c - t8_cmesh/t8_cmesh.cxx - t8_cmesh/t8_cmesh_cad.cxx - t8_cmesh/t8_cmesh_triangle.cxx - t8_cmesh/t8_cmesh_stash.c - t8_cmesh/t8_cmesh_vtk_reader.cxx - t8_cmesh/t8_cmesh_save.cxx - t8_cmesh/t8_cmesh_trees.cxx - t8_cmesh/t8_cmesh_commit.cxx - t8_cmesh/t8_cmesh_partition.cxx - t8_cmesh/t8_cmesh_copy.c - t8_cmesh/t8_cmesh_geometry.cxx - t8_cmesh/t8_cmesh_examples.cxx - t8_cmesh/t8_cmesh_helpers.cxx - t8_cmesh/t8_cmesh_offset.c - t8_cmesh/t8_cmesh_readmshfile.cxx - t8_data/t8_shmem.c - t8_data/t8_containers.cxx - t8_forest/t8_forest_adapt.cxx - t8_forest/t8_forest_partition.cxx - t8_forest/t8_forest.cxx - t8_forest/t8_forest_private.c - t8_forest/t8_forest_ghost.cxx - t8_forest/t8_forest_iterate.cxx - t8_forest/t8_forest_balance.cxx - t8_forest/t8_forest_search/t8_forest_search.cxx - t8_geometry/t8_geometry.cxx - t8_geometry/t8_geometry_helpers.c - t8_geometry/t8_geometry_base.cxx - t8_geometry/t8_geometry_handler.cxx - t8_geometry/t8_geometry_with_vertices.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_analytic.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_cad.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_linear.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_linear_axis_aligned.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_lagrange.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_zero.cxx - t8_geometry/t8_geometry_implementations/t8_geometry_examples.cxx - t8_schemes/t8_scheme.cxx - t8_schemes/t8_default/t8_default.cxx - t8_schemes/t8_default/t8_default_hex/t8_default_hex.cxx - t8_schemes/t8_default/t8_default_hex/t8_dhex_bits.c - t8_schemes/t8_default/t8_default_line/t8_default_line.cxx - t8_schemes/t8_default/t8_default_line/t8_dline_bits.c - t8_schemes/t8_default/t8_default_prism/t8_default_prism.cxx - t8_schemes/t8_default/t8_default_prism/t8_dprism_bits.c - t8_schemes/t8_default/t8_default_pyramid/t8_default_pyramid.cxx - t8_schemes/t8_default/t8_default_pyramid/t8_dpyramid_bits.c - t8_schemes/t8_default/t8_default_pyramid/t8_dpyramid_connectivity.c - t8_schemes/t8_default/t8_default_quad/t8_default_quad.cxx - t8_schemes/t8_default/t8_default_quad/t8_default_quad_bits.cxx - t8_schemes/t8_default/t8_default_tet/t8_default_tet.cxx - t8_schemes/t8_default/t8_default_tet/t8_dtet_bits.c - t8_schemes/t8_default/t8_default_tet/t8_dtet_connectivity.c - t8_schemes/t8_default/t8_default_tri/t8_default_tri.cxx - t8_schemes/t8_default/t8_default_tri/t8_dtri_bits.c - t8_schemes/t8_default/t8_default_tri/t8_dtri_connectivity.c - t8_schemes/t8_default/t8_default_vertex/t8_default_vertex.cxx - t8_types/t8_vec.cxx - t8_schemes/t8_standalone/t8_standalone.cxx - t8_vtk/t8_vtk_polydata.cxx - t8_vtk/t8_vtk_unstructured.cxx - t8_vtk/t8_vtk_parallel.cxx - t8_vtk/t8_vtk_reader.cxx - t8_vtk/t8_vtk_writer.cxx - t8_vtk/t8_vtk_write_ASCII.cxx - t8_vtk/t8_vtk_writer_helper.cxx + t8.c + t8_eclass.c + t8_element_shape.c + t8_element.cxx + t8_refcount.c + t8_version.c + t8_vtk.c + t8_cmesh/t8_cmesh.cxx + t8_cmesh/t8_cmesh_cad.cxx + t8_cmesh/t8_cmesh_triangle.cxx + t8_cmesh/t8_cmesh_stash.c + t8_cmesh/t8_cmesh_vtk_reader.cxx + t8_cmesh/t8_cmesh_save.cxx + t8_cmesh/t8_cmesh_trees.cxx + t8_cmesh/t8_cmesh_commit.cxx + t8_cmesh/t8_cmesh_partition.cxx + t8_cmesh/t8_cmesh_copy.c + t8_cmesh/t8_cmesh_geometry.cxx + t8_cmesh/t8_cmesh_examples.cxx + t8_cmesh/t8_cmesh_helpers.cxx + t8_cmesh/t8_cmesh_offset.c + t8_cmesh/t8_cmesh_readmshfile.cxx + t8_data/t8_shmem.c + t8_data/t8_containers.cxx + t8_forest/t8_forest_adapt.cxx + t8_forest/t8_forest_partition.cxx + t8_forest/t8_forest.cxx + t8_forest/t8_forest_private.c + t8_forest/t8_forest_ghost.cxx + t8_forest/t8_forest_iterate.cxx + t8_forest/t8_forest_balance.cxx + t8_forest/t8_forest_search/t8_forest_search.cxx + t8_geometry/t8_geometry.cxx + t8_geometry/t8_geometry_helpers.c + t8_geometry/t8_geometry_base.cxx + t8_geometry/t8_geometry_handler.cxx + t8_geometry/t8_geometry_with_vertices.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_analytic.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_cad.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_linear.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_linear_axis_aligned.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_lagrange.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_zero.cxx + t8_geometry/t8_geometry_implementations/t8_geometry_examples.cxx + t8_schemes/t8_scheme.cxx + t8_schemes/t8_default/t8_default.cxx + t8_schemes/t8_default/t8_default_hex/t8_default_hex.cxx + t8_schemes/t8_default/t8_default_hex/t8_dhex_bits.c + t8_schemes/t8_default/t8_default_line/t8_default_line.cxx + t8_schemes/t8_default/t8_default_line/t8_dline_bits.c + t8_schemes/t8_default/t8_default_prism/t8_default_prism.cxx + t8_schemes/t8_default/t8_default_prism/t8_dprism_bits.c + t8_schemes/t8_default/t8_default_pyramid/t8_default_pyramid.cxx + t8_schemes/t8_default/t8_default_pyramid/t8_dpyramid_bits.c + t8_schemes/t8_default/t8_default_pyramid/t8_dpyramid_connectivity.c + t8_schemes/t8_default/t8_default_quad/t8_default_quad.cxx + t8_schemes/t8_default/t8_default_quad/t8_default_quad_bits.cxx + t8_schemes/t8_default/t8_default_tet/t8_default_tet.cxx + t8_schemes/t8_default/t8_default_tet/t8_dtet_bits.c + t8_schemes/t8_default/t8_default_tet/t8_dtet_connectivity.c + t8_schemes/t8_default/t8_default_tri/t8_default_tri.cxx + t8_schemes/t8_default/t8_default_tri/t8_dtri_bits.c + t8_schemes/t8_default/t8_default_tri/t8_dtri_connectivity.c + t8_schemes/t8_default/t8_default_vertex/t8_default_vertex.cxx + t8_types/t8_vec.cxx + t8_schemes/t8_standalone/t8_standalone.cxx + t8_vtk/t8_vtk_polydata.cxx + t8_vtk/t8_vtk_unstructured.cxx + t8_vtk/t8_vtk_parallel.cxx + t8_vtk/t8_vtk_reader.cxx + t8_vtk/t8_vtk_writer.cxx + t8_vtk/t8_vtk_write_ASCII.cxx + t8_vtk/t8_vtk_writer_helper.cxx ) - -target_compile_definitions( T8 PUBLIC T8_CMAKE_BUILD ) -target_compile_definitions( T8 PUBLIC T8_CC="${CMAKE_C_COMPILER}" ) -target_compile_definitions( T8 PUBLIC T8_CFLAGS="${T8_CFLAGS}" ) -target_compile_definitions( T8 PUBLIC T8_CXX="${CMAKE_CXX_COMPILER}" ) -target_compile_definitions( T8 PUBLIC T8_CXXFLAGS="${T8_CXXFLAGS}" ) -target_compile_definitions( T8 PUBLIC T8_LDFLAGS="${CMAKE_SHARED_LINKER_FLAGS}" ) - -target_compile_definitions( T8 PUBLIC T8_PACKAGE_STRING="t8 ${T8CODE_VERSION}" ) -target_compile_definitions( T8 PUBLIC T8_VERSION="${T8CODE_VERSION}" ) -target_compile_definitions( T8 PUBLIC T8_VERSION_MAJOR=${T8CODE_VERSION_MAJOR} ) -target_compile_definitions( T8 PUBLIC T8_VERSION_MINOR=${T8CODE_VERSION_MINOR} ) -target_compile_definitions( T8 PUBLIC T8_VERSION_PATCH=${T8CODE_VERSION_PATCH} ) -target_compile_definitions( T8 PUBLIC T8_VERSION_POINT=${T8CODE_VERSION_POINT} ) +if (T8CODE_ENABLE_NETCDF) + target_sources( T8 PRIVATE + t8_netcdf.c + t8_cmesh/t8_cmesh_netcdf.c + t8_forest/t8_forest_netcdf.cxx + ) +endif(T8CODE_ENABLE_NETCDF) get_target_property( T8_LIBS_LIST T8 LINK_LIBRARIES ) string( REPLACE ";" " " T8_LIBS "${T8_LIBS_LIST}" ) target_compile_definitions( T8 PUBLIC T8_LIBS="${T8_LIBS}" ) install( FILES - t8.h - t8_cmesh.h - t8_cmesh.hxx - t8_cmesh_readmshfile.h - t8_cmesh_tetgen.h - t8_cmesh_triangle.h - t8_cmesh_vtk_reader.hxx - t8_eclass.h - t8_element.h - t8_element_shape.h - t8_mat.h - t8_refcount.h - t8_types/t8_vec.hxx - t8_version.h - t8_vtk.h - t8_windows.h DESTINATION include + t8.h + t8_cmesh.h + t8_cmesh.hxx + t8_cmesh_readmshfile.h + t8_cmesh_tetgen.h + t8_cmesh_triangle.h + t8_cmesh_vtk_reader.hxx + t8_eclass.h + t8_element.h + t8_element_shape.h + t8_mat.h + t8_refcount.h + t8_types/t8_vec.hxx + t8_version.h + t8_vtk.h + t8_windows.h DESTINATION include ) +if (T8CODE_ENABLE_NETCDF) + install( FILES + t8_cmesh_netcdf.h + t8_forest_netcdf.h + t8_netcdf.h + DESTINATION include + ) +endif(T8CODE_ENABLE_NETCDF) install( DIRECTORY t8_cmesh DESTINATION include FILES_MATCHING PATTERN "*.h" ) install( DIRECTORY t8_data DESTINATION include FILES_MATCHING PATTERN "*.h" ) @@ -230,22 +155,22 @@ include( CMakePackageConfigHelpers ) configure_package_config_file( ${CMAKE_CURRENT_LIST_DIR}/config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}Config.cmake -INSTALL_DESTINATION cmake + INSTALL_DESTINATION cmake ) write_basic_package_version_file( -${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}ConfigVersion.cmake -COMPATIBILITY SameMajorVersion -VERSION "${T8CODE_VERSION_MAJOR}.${T8CODE_VERSION_MINOR}.${T8CODE_VERSION_PATCH}" + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}ConfigVersion.cmake + COMPATIBILITY SameMajorVersion + VERSION "${T8CODE_VERSION_MAJOR}.${T8CODE_VERSION_MINOR}.${T8CODE_VERSION_PATCH}" ) install( EXPORT ${PROJECT_NAME}-targets -NAMESPACE ${PROJECT_NAME}:: -DESTINATION cmake + NAMESPACE ${PROJECT_NAME}:: + DESTINATION cmake ) install( FILES -${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}Config.cmake -${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}ConfigVersion.cmake -DESTINATION cmake + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}Config.cmake + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/${PROJECT_NAME}ConfigVersion.cmake + DESTINATION cmake ) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index e364da534b..4a8c787926 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -29,6 +29,7 @@ function( add_t8_test ) else() target_link_libraries( ${ADD_T8_TEST_NAME} PRIVATE T8 gtest pthread ) endif () + t8_add_cmake_properties ( ${ADD_T8_TEST_NAME} ) set_target_properties(${ADD_T8_TEST_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TEST_BUILD_DIR}" @@ -36,10 +37,6 @@ function( add_t8_test ) ARCHIVE_OUTPUT_DIRECTORY "${TEST_BUILD_DIR}" ) - if( T8CODE_EXPORT_COMPILE_COMMANDS ) - set_target_properties( ${ADD_T8_TEST_NAME} PROPERTIES EXPORT_COMPILE_COMMANDS ON ) - endif( T8CODE_EXPORT_COMPILE_COMMANDS ) - # Split custom test command into a list by whitespace. # If MPI is enabled, and no custom test command is provided, use mpirun -np 4 as the default command. # If MPI is not enabled, use the custom test command as is. diff --git a/tutorials/CMakeLists.txt b/tutorials/CMakeLists.txt index 088d4c0dec..d28205d33a 100644 --- a/tutorials/CMakeLists.txt +++ b/tutorials/CMakeLists.txt @@ -14,6 +14,7 @@ function( add_t8_tutorial ) add_executable( ${ADD_T8_TUTORIAL_NAME} ${ADD_T8_TUTORIAL_SOURCES} ) target_link_libraries( ${ADD_T8_TUTORIAL_NAME} PRIVATE T8 SC::SC ) target_include_directories( ${ADD_T8_TUTORIAL_NAME} PRIVATE ${CMAKE_CURRENT_LIST_DIR}/.. ) + t8_add_cmake_properties( ${ADD_T8_TUTORIAL_NAME} ) set_target_properties(${ADD_T8_TUTORIAL_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${TUTORIAL_BUILD_DIR}" @@ -21,10 +22,6 @@ function( add_t8_tutorial ) ARCHIVE_OUTPUT_DIRECTORY "${TUTORIAL_BUILD_DIR}" ) - if( T8CODE_EXPORT_COMPILE_COMMANDS ) - set_target_properties( ${ADD_T8_TUTORIAL_NAME} PROPERTIES EXPORT_COMPILE_COMMANDS ON ) - endif( T8CODE_EXPORT_COMPILE_COMMANDS ) - install( TARGETS ${ADD_T8_TUTORIAL_NAME} DESTINATION bin ) endfunction()