From 1103de125c5ea9ba79ec0c9d1dddb99bcbc91b37 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Tue, 21 Jan 2025 15:33:33 +0100 Subject: [PATCH 01/13] added missing files to cdi, removed hdf5 find_package and declartion of HAVE_CONFIG --- src/CMakeLists.txt | 58 ++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 5 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 1f88fe09b..6812b4328 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -137,12 +137,60 @@ list( APPEND cdi_src_files zaxis.c zaxis.h ) +list( APPEND cdi_pio_files + cdipio.h + pio.c + pio.h + pio_cdf_int.c + pio_cdf_int.h + pio_client.c + pio_client.h + pio_comm.c + pio_comm.h + pio_conf.c + pio_conf.h + pio_dbuffer.c + pio_dbuffer.h + pio_dist_grid.c + pio_dist_grid.h + pio_id_set.h + pio_idxlist_cache.c + pio_idxlist_cache.h + pio_impl.h + pio_interface.c + pio_interface.h + pio_mpi_fw_at_all.c + pio_mpi_fw_at_reblock.c + pio_mpi_fw_ordered.c + pio_mpinonb.c + pio_posixasynch.c + pio_posixfpguardsendrecv.c + pio_posixnonb.c + pio_record_send.c + pio_roles.c + pio_rpc.c + pio_rpc.h + pio_serialize.c + pio_serialize.h + pio_server.c + pio_server.h + pio_util.c + pio_util.h + pio_xmap_cache.c + pio_xmap_cache.h +) + +list( APPEND cdi_unknown + cfortran.h + getline.c + gribapi_utilities.c + make_fint.c + resource_unpack.c + resource_unpack.h + stream_gribapi.c +) add_library(cdilib - ${cdi_src_files} + ${cdi_src_files} ${cdi_unknown} # INSTALL_HEADERS_LIST cdi.h ) -find_package(HDF5 REQUIRED COMPONENTS C REQUIRED) - -target_link_libraries(cdilib PUBLIC netCDF::netcdf ${HDF5_LIBS}) -target_compile_definitions(cdilib PUBLIC HAVE_CONFIG_H) -- GitLab From ec34a7886c2ede21ea658fd8f2ff02242aadadd4 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Tue, 21 Jan 2025 15:38:05 +0100 Subject: [PATCH 02/13] removed bloat, remvoed config file generation, added complie defs for CDI, PACKAGE_NAME and VERSION --- CMakeLists.txt | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index acfefb8c1..175bb722e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,17 +3,14 @@ cmake_minimum_required( VERSION 3.30 FATAL_ERROR ) project(libcdi VERSION 2.5.1 LANGUAGES C ) set(CMAKE_C_STANDARD 11) -include(CheckIncludeFile) +add_compile_definitions(CDI=1) +add_compile_definitions(PACKAGE_NAME="libcdi") +add_compile_definitions(VERSION="${CMAKE_PROJECT_VERSION}") -configure_file ( - "${PROJECT_SOURCE_DIR}/cmake/cdi_config.h.in" - "${PROJECT_SOURCE_DIR}/src/config.h" - ) +include(CheckIncludeFile) #NetCDF find_package(netCDF COMPONENTS C REQUIRED) -set(netcdf_flag HAVE_LIBNETCDF) -set(netcdf_flag ${HAVE_LIBNETCDF}) check_include_file("netcdf.h" ${netcdf_flag} C) if (${netCDF_FOUND}) message(STATUS "added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") -- GitLab From 9c10715a2f35f6875441543dd1b48cb21a71e0ef Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Tue, 21 Jan 2025 15:38:26 +0100 Subject: [PATCH 03/13] removed HDF5 from app cmake file --- app/CMakeLists.txt | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/app/CMakeLists.txt b/app/CMakeLists.txt index ce87f4968..73253a6a1 100644 --- a/app/CMakeLists.txt +++ b/app/CMakeLists.txt @@ -6,7 +6,4 @@ target_include_directories(cdi PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/src> $<INSTALL_INTERFACE:include ) - -target_link_libraries(cdi PUBLIC cdilib netCDF::netcdf ${HDF5_LIBS} pthread) - -target_compile_definitions(cdi PUBLIC HAVE_CONFIG_H) +target_link_libraries(cdi PUBLIC cdilib netCDF::netcdf pthread) -- GitLab From d55e1ace05cc07c0d7f9bcdae0b46e168672f15f Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Tue, 21 Jan 2025 15:38:41 +0100 Subject: [PATCH 04/13] removed config.h.in --- cmake/cdi_config.h.in | 20 -------------------- 1 file changed, 20 deletions(-) delete mode 100644 cmake/cdi_config.h.in diff --git a/cmake/cdi_config.h.in b/cmake/cdi_config.h.in deleted file mode 100644 index e3bfd3225..000000000 --- a/cmake/cdi_config.h.in +++ /dev/null @@ -1,20 +0,0 @@ -#ifndef cdi_config_h -#define cdi_config_h - -#define PACKAGE_NAME "@PROJECT_NAME@" - -#define VERSION "@PROJECT_VERSION@" - -#define CDI 1 - -#define HAVE_LIBGRIB 1 -#define HAVE_LIBCGRIBEX 1 -#define HAVE_LIBEXTRA 1 -#define HAVE_LIBSERVICE 1 -#define HAVE_LIBIEG 1 - -#define HAVE_NETCDF @HAVE_NETCDF@ -#define HAVE_NETCDF_NC4 @netCDF_HAS_NC4@ -#define NETCDF_FOUND @NetCDF_FOUND@ - -#endif /* cdi_config_h */ -- GitLab From de1d825463272c4965b880847e35ee587b0e3239 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 12:00:31 +0100 Subject: [PATCH 05/13] added eccodes to CMakeLists.txt, removed project definitions --- CMakeLists.txt | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 175bb722e..9f2597205 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,14 +1,23 @@ cmake_minimum_required( VERSION 3.30 FATAL_ERROR ) +message("Entering libcdi") project(libcdi VERSION 2.5.1 LANGUAGES C ) set(CMAKE_C_STANDARD 11) -add_compile_definitions(CDI=1) -add_compile_definitions(PACKAGE_NAME="libcdi") -add_compile_definitions(VERSION="${CMAKE_PROJECT_VERSION}") - +include(CTest) include(CheckIncludeFile) +find_package(eccodes) +if (${eccodes_FOUND}) + add_compile_definitions(HAVE_ECCODES=${eccodes_FOUND}) + message(STATUS "added compile definition HAVE_ECCODES=${eccodes_FOUND}") + add_compile_definitions(HAVE_LIBGRIB=${eccodes_FOUND}) + message(STATUS "added compile definition HAVE_LIBGRIB=${eccodes_FOUND}") + add_compile_definitions(HAVE_LIBGRIB_API=${eccodes_FOUND}) + message(STATUS "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}") +else() + message(WARNING "netcdf not found, compiling without netcdf") +endif () #NetCDF find_package(netCDF COMPONENTS C REQUIRED) check_include_file("netcdf.h" ${netcdf_flag} C) @@ -19,6 +28,9 @@ else() message(WARNING "netcdf not found, compiling without netcdf") endif () +message("looking for config.h in: ${PROJECT_BINARY_DIR}/src") +include_directories( "${PROJECT_BINARY_DIR}/src/config.h") + #adding subdirectories ## lib and general files @@ -26,3 +38,6 @@ add_subdirectory(src) ## cdi executable add_subdirectory(app) +#tests +add_subdirectory( tests ) + -- GitLab From 5bdd42c3baf8f7e8785d322ecebd5d1f628045f0 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 12:01:06 +0100 Subject: [PATCH 06/13] added target specific definitions (from project scope) --- src/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6812b4328..6bfc8d012 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,3 +1,6 @@ + + + list( APPEND cdi_src_files async_worker.c async_worker.h @@ -194,3 +197,9 @@ add_library(cdilib ${cdi_src_files} ${cdi_unknown} # INSTALL_HEADERS_LIST cdi.h ) +if(${eccodes_FOUND}) + target_link_libraries(cdilib eccodes) +endif() +target_compile_definitions(cdilib PRIVATE CDI=1) +target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="cdilib") +target_compile_definitions(cdilib PRIVATE VERSION="${CMAKE_PROJECT_VERSION}") -- GitLab From a7b24da675ce6456319fbeba02a6f19d9fcc6327 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 13:03:21 +0100 Subject: [PATCH 07/13] added CMakeLists to test folder --- tests/CMakeLists.txt | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 tests/CMakeLists.txt diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt new file mode 100644 index 000000000..035ca3c04 --- /dev/null +++ b/tests/CMakeLists.txt @@ -0,0 +1,43 @@ + +add_executable(calendar_test1.run calendar_test1.c) +add_executable(cksum_read.run cksum_read.c ) +add_executable(cksum_verify.run cksum_verify.c) +add_executable(cksum_write.run cksum_write.c) +add_executable(cksum_write_chunk.run cksum_write_chunk.c) +add_executable(deco2d_model.run deco2d_model.c) +add_executable(ensure_array_size.run ensure_array_size.c) +add_executable(pio_write.run pio_write.c) +add_executable(pio_write_setup_grid.run pio_write_setup_grid.c) +add_executable(simple_model.run simple_model.c) +add_executable(simple_model_helper.run simple_model_helper.c) +add_executable(stream_cksum.run stream_cksum.c) +add_executable(test_byteswap.run test_byteswap.c) +add_executable(test_cdf_read.run test_cdf_read.c) +add_executable(test_cdf_write.run test_cdf_write.c) +add_executable(test_grib.run test_grib.c) +add_executable(test_month_adjust.run test_month_adjust.c) +add_executable(test_resource_copy.run test_resource_copy.c) +add_executable(test_table.run test_table.c) + +get_property(current_targets DIRECTORY ${dir} PROPERTY BUILDSYSTEM_TARGETS) +list(APPEND test_lib_src + var_cksum.c + ensure_array_size.c + stream_cksum.c + simple_model.c + simple_model_helper.c + pio_write_setup_grid.c +) + +add_library(test_lib ${test_lib_src}) +target_include_directories(test_lib PRIVATE ../src/) +target_link_libraries(test_lib PRIVATE cdilib eccodes) + +foreach(target ${current_targets}) + target_include_directories(${target} PRIVATE ../src/) + target_link_libraries(${target} PRIVATE cdilib test_lib netcdf) + add_test(NAME ${target} COMMAND ${target}) + if(labels_${target}) + set_property(TEST ${target} PROPERTY LABELS labels_${target}) + endif() +endforeach() -- GitLab From d8966e8533caaaeb6296676824d10d00d5b033d3 Mon Sep 17 00:00:00 2001 From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de> Date: Thu, 23 Jan 2025 13:34:27 +0100 Subject: [PATCH 08/13] enable default internal libs --- CMakeLists.txt | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9f2597205..19b47d4d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,23 +7,29 @@ set(CMAKE_C_STANDARD 11) include(CTest) include(CheckIncludeFile) +# enable default internal libs +add_compile_definitions(HAVE_LIBGRIB=1) +add_compile_definitions(HAVE_LIBCGRIBEX=1) +add_compile_definitions(HAVE_LIBEXTRA=1) +add_compile_definitions(HAVE_LIBSERVICE=1) +add_compile_definitions(HAVE_LIBIEG=1) + +# ecCodes find_package(eccodes) if (${eccodes_FOUND}) - add_compile_definitions(HAVE_ECCODES=${eccodes_FOUND}) - message(STATUS "added compile definition HAVE_ECCODES=${eccodes_FOUND}") - add_compile_definitions(HAVE_LIBGRIB=${eccodes_FOUND}) - message(STATUS "added compile definition HAVE_LIBGRIB=${eccodes_FOUND}") add_compile_definitions(HAVE_LIBGRIB_API=${eccodes_FOUND}) message(STATUS "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}") else() message(WARNING "netcdf not found, compiling without netcdf") endif () -#NetCDF + +# NetCDF find_package(netCDF COMPONENTS C REQUIRED) check_include_file("netcdf.h" ${netcdf_flag} C) if (${netCDF_FOUND}) message(STATUS "added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND}) + add_compile_definitions(HAVE_NETCDF4=1) else() message(WARNING "netcdf not found, compiling without netcdf") endif () -- GitLab From a2b9694ac40c09c00ba80c66c210b139a34da35d Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 13:58:52 +0100 Subject: [PATCH 09/13] fixed attempt to link not found libraries (netcdf) --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 6bfc8d012..ff8e9ee33 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -198,7 +198,7 @@ add_library(cdilib # INSTALL_HEADERS_LIST cdi.h ) if(${eccodes_FOUND}) - target_link_libraries(cdilib eccodes) + target_link_libraries(cdilib eccodes ${netcdf_LIBS}) endif() target_compile_definitions(cdilib PRIVATE CDI=1) target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="cdilib") -- GitLab From cee917e17973b6604070497391aa7813d2abc055 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 14:07:02 +0100 Subject: [PATCH 10/13] fixed messages, added HAVE_NETCDF4 message --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 19b47d4d0..9924d8660 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,7 +27,8 @@ endif () find_package(netCDF COMPONENTS C REQUIRED) check_include_file("netcdf.h" ${netcdf_flag} C) if (${netCDF_FOUND}) - message(STATUS "added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") + message("added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") + message("added compile definition HAVE_NETCDF4=${netCDF_FOUND}") add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND}) add_compile_definitions(HAVE_NETCDF4=1) else() -- GitLab From ae938ce161600a9f0edd4f28341431491b5b973e Mon Sep 17 00:00:00 2001 From: Uwe Schulzweida <uwe.schulzweida@mpimet.mpg.de> Date: Thu, 23 Jan 2025 14:08:31 +0100 Subject: [PATCH 11/13] set HAVE_NETCDF4= --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9924d8660..09803fd45 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,7 +30,7 @@ if (${netCDF_FOUND}) message("added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") message("added compile definition HAVE_NETCDF4=${netCDF_FOUND}") add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND}) - add_compile_definitions(HAVE_NETCDF4=1) + add_compile_definitions(HAVE_NETCDF4=${netCDF_FOUND}) else() message(WARNING "netcdf not found, compiling without netcdf") endif () -- GitLab From 98aeafd4947d7a27265b96667bd841426f319f94 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 15:13:47 +0100 Subject: [PATCH 12/13] fixed netcdf linker flag evaluation --- src/CMakeLists.txt | 4 +--- tests/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ff8e9ee33..fca6176d9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -197,9 +197,7 @@ add_library(cdilib ${cdi_src_files} ${cdi_unknown} # INSTALL_HEADERS_LIST cdi.h ) -if(${eccodes_FOUND}) - target_link_libraries(cdilib eccodes ${netcdf_LIBS}) -endif() +target_link_libraries(cdilib eccodes ${netCDF_LIBRARIES}) target_compile_definitions(cdilib PRIVATE CDI=1) target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="cdilib") target_compile_definitions(cdilib PRIVATE VERSION="${CMAKE_PROJECT_VERSION}") diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 035ca3c04..cf18bbac6 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -35,7 +35,7 @@ target_link_libraries(test_lib PRIVATE cdilib eccodes) foreach(target ${current_targets}) target_include_directories(${target} PRIVATE ../src/) - target_link_libraries(${target} PRIVATE cdilib test_lib netcdf) + target_link_libraries(${target} PRIVATE cdilib test_lib ${netCDF_LIBRARIES} ) add_test(NAME ${target} COMMAND ${target}) if(labels_${target}) set_property(TEST ${target} PROPERTY LABELS labels_${target}) -- GitLab From 7df0530bee7882ea3397bbf3d206b49cb4170311 Mon Sep 17 00:00:00 2001 From: Oliver Heidmann <oliver.heidmann@mpimet.mpg.de> Date: Thu, 23 Jan 2025 15:21:43 +0100 Subject: [PATCH 13/13] set all messages to VERBOSE --- CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 09803fd45..8445adff5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ cmake_minimum_required( VERSION 3.30 FATAL_ERROR ) -message("Entering libcdi") +message(VERBOSE "Entering libcdi") project(libcdi VERSION 2.5.1 LANGUAGES C ) set(CMAKE_C_STANDARD 11) @@ -18,7 +18,7 @@ add_compile_definitions(HAVE_LIBIEG=1) find_package(eccodes) if (${eccodes_FOUND}) add_compile_definitions(HAVE_LIBGRIB_API=${eccodes_FOUND}) - message(STATUS "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}") + message(VERBOSE "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}") else() message(WARNING "netcdf not found, compiling without netcdf") endif () @@ -27,15 +27,15 @@ endif () find_package(netCDF COMPONENTS C REQUIRED) check_include_file("netcdf.h" ${netcdf_flag} C) if (${netCDF_FOUND}) - message("added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") - message("added compile definition HAVE_NETCDF4=${netCDF_FOUND}") - add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND}) - add_compile_definitions(HAVE_NETCDF4=${netCDF_FOUND}) + message(VERBOSE "added compile definition HAVE_LIBNETCDF=${netCDF_FOUND}") + message(VERBOSE "added compile definition HAVE_NETCDF4=${netCDF_FOUND}") + add_compile_definitions(HAVE_LIBNETCDF=${netCDF_FOUND}) + add_compile_definitions(HAVE_NETCDF4=${netCDF_FOUND}) else() message(WARNING "netcdf not found, compiling without netcdf") endif () -message("looking for config.h in: ${PROJECT_BINARY_DIR}/src") +message(VERBOSE "looking for config.h in: ${PROJECT_BINARY_DIR}/src") include_directories( "${PROJECT_BINARY_DIR}/src/config.h") -- GitLab