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