Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • b383306/libcdi
  • mpim-sw/libcdi
  • m214007/libcdi
3 results
Show changes
Commits on Source (24)
...@@ -7,7 +7,6 @@ set(CMAKE_C_STANDARD 11) ...@@ -7,7 +7,6 @@ set(CMAKE_C_STANDARD 11)
include(CTest) include(CTest)
include(CheckIncludeFile) include(CheckIncludeFile)
# Finding libraries # Finding libraries
### -------------- Pthread --------------------------- ### -------------- Pthread ---------------------------
...@@ -17,6 +16,7 @@ if(${CDI_PTHREAD}) ...@@ -17,6 +16,7 @@ if(${CDI_PTHREAD})
find_package(Threads REQUIRED) find_package(Threads REQUIRED)
set_target_properties(Threads::Threads PROPERTIES THREADS_PREFER_PTHREAD_FLAG TRUE) set_target_properties(Threads::Threads PROPERTIES THREADS_PREFER_PTHREAD_FLAG TRUE)
list(APPEND cdi_compile_defs HAVE_PTHREAD=1) list(APPEND cdi_compile_defs HAVE_PTHREAD=1)
list(APPEND cdi_linked_libs pthread)
endif() endif()
# enable default internal libs # enable default internal libs
...@@ -45,7 +45,6 @@ if(${CDI_SERVICE}) ...@@ -45,7 +45,6 @@ if(${CDI_SERVICE})
list(APPEND cdi_compile_defs HAVE_LIBSERVICE=1) list(APPEND cdi_compile_defs HAVE_LIBSERVICE=1)
endif() endif()
# ecCodes # ecCodes
option(CDI_ECCODES "Use the eccodes library [default=ON]" ON) option(CDI_ECCODES "Use the eccodes library [default=ON]" ON)
if(${CDI_ECCODES} OR eccodes_ROOT) if(${CDI_ECCODES} OR eccodes_ROOT)
...@@ -53,6 +52,7 @@ if(${CDI_ECCODES} OR eccodes_ROOT) ...@@ -53,6 +52,7 @@ if(${CDI_ECCODES} OR eccodes_ROOT)
if (${eccodes_FOUND}) if (${eccodes_FOUND})
list(APPEND cdi_compile_defs HAVE_LIBGRIB_API=${eccodes_FOUND}) list(APPEND cdi_compile_defs HAVE_LIBGRIB_API=${eccodes_FOUND})
message(VERBOSE "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}") message(VERBOSE "added compile definition HAVE_LIBGRIB_API=${eccodes_FOUND}")
list(APPEND cdi_linked_libs eccodes)
else() else()
message(WARNING "eccodes not found, compiling without eccodes") message(WARNING "eccodes not found, compiling without eccodes")
endif () endif ()
...@@ -70,6 +70,7 @@ if(${CDI_NETCDF} OR netCDF_ROOT ) ...@@ -70,6 +70,7 @@ if(${CDI_NETCDF} OR netCDF_ROOT )
HAVE_LIBGRIB_API=${netCDF_FOUND} HAVE_LIBGRIB_API=${netCDF_FOUND}
HAVE_LIBGRIB=${netCDF_FOUND} HAVE_LIBGRIB=${netCDF_FOUND}
) )
list(APPEND cdi_linked_libs netCDF::netcdf)
else() else()
message(WARNING "netcdf target not found, compiling without netcdf") message(WARNING "netcdf target not found, compiling without netcdf")
endif () endif ()
...@@ -82,8 +83,13 @@ message(VERBOSE "looking for config.h in: ${PROJECT_BINARY_DIR}/src") ...@@ -82,8 +83,13 @@ message(VERBOSE "looking for config.h in: ${PROJECT_BINARY_DIR}/src")
list(APPEND cdi_compile_defs CDI=1 CDI_SIZE_TYPE=size_t PACKAGE_NAME="${PROJECT_NAME}" VERSION="${CMAKE_PROJECT_VERSION}") list(APPEND cdi_compile_defs CDI=1 CDI_SIZE_TYPE=size_t PACKAGE_NAME="${PROJECT_NAME}" VERSION="${CMAKE_PROJECT_VERSION}")
add_subdirectory(src) add_subdirectory(src)
#tests #app
add_subdirectory(app) option(CDI_BUILD_APP "Build the app" ON)
add_subdirectory(tests) if (CDI_BUILD_APP)
add_subdirectory(app)
endif ()
#tests
if (BUILD_TESTING)
add_subdirectory(tests)
endif ()
...@@ -2,6 +2,14 @@ ...@@ -2,6 +2,14 @@
* Version 2.5.1 released * Version 2.5.1 released
2025-02-28 Uwe Schulzweida
* taxis: added support for CDI_KEY_DATATYPE
2025-02-12 Uwe Schulzweida
* GRIB_API: Handle LLAM as LCC
2025-02-06 Uwe Schulzweida 2025-02-06 Uwe Schulzweida
* Added obsolete functions vlistNgrids() and vlistNzaxis() for ParaView vtkCDIReader * Added obsolete functions vlistNgrids() and vlistNzaxis() for ParaView vtkCDIReader
......
...@@ -7,6 +7,6 @@ target_include_directories(cdi PRIVATE ...@@ -7,6 +7,6 @@ target_include_directories(cdi PRIVATE
$<INSTALL_INTERFACE:include $<INSTALL_INTERFACE:include
) )
target_link_libraries(cdi PRIVATE cdilib netCDF::netcdf pthread) target_link_libraries(cdi PRIVATE cdilib ${cdi_linked_libs})
target_include_directories(cdi PRIVATE "${PROJECT_BINARY_DIR}/src/config.h") target_include_directories(cdi PRIVATE "${PROJECT_BINARY_DIR}/src/config.h")
target_compile_definitions(cdi PRIVATE ${cdi_netcdf_definitions}) target_compile_definitions(cdi PRIVATE ${cdi_netcdf_definitions})
...@@ -300,8 +300,8 @@ printGridInfoKernel(int gridID, int index, bool lproj) ...@@ -300,8 +300,8 @@ printGridInfoKernel(int gridID, int index, bool lproj)
size_t xsize = (size_t) gridInqXsize(gridID); size_t xsize = (size_t) gridInqXsize(gridID);
size_t ysize = (size_t) gridInqYsize(gridID); size_t ysize = (size_t) gridInqYsize(gridID);
// int prec = gridInqDatatype(gridID); // int datatype;
// int dig = (prec == CDI_DATATYPE_FLT64) ? 15 : 7; // cdiInqKeyInt(gridID, CDI_GLOBAL, CDI_KEY_DATATYPE, &datatype);
int dig = 7; int dig = 7;
if (!lproj) if (!lproj)
...@@ -537,8 +537,9 @@ printZaxisInfo(int vlistID) ...@@ -537,8 +537,9 @@ printZaxisInfo(int vlistID)
int ltype = 0; int ltype = 0;
cdiInqKeyInt(zaxisID, CDI_GLOBAL, CDI_KEY_TYPEOFFIRSTFIXEDSURFACE, &ltype); cdiInqKeyInt(zaxisID, CDI_GLOBAL, CDI_KEY_TYPEOFFIRSTFIXEDSURFACE, &ltype);
int levelsize = zaxisInqSize(zaxisID); int levelsize = zaxisInqSize(zaxisID);
// int prec = zaxisInqDatatype(zaxisID); // int datatype;
// int dig = (prec == CDI_DATATYPE_FLT64) ? 15 : 7; // cdiInqKeyInt(gridID, CDI_GLOBAL, CDI_KEY_DATATYPE, &datatype);
// int dig = (datatype == CDI_DATATYPE_FLT64) ? 15 : 7;
zaxisName(zaxistype, zaxisname); zaxisName(zaxistype, zaxisname);
int length = CDI_MAX_NAME; int length = CDI_MAX_NAME;
......
...@@ -60,7 +60,7 @@ defineGrid() ...@@ -60,7 +60,7 @@ defineGrid()
cdiDefKeyString(gridID, CDI_XAXIS, CDI_KEY_UNITS, "myXunits"); cdiDefKeyString(gridID, CDI_XAXIS, CDI_KEY_UNITS, "myXunits");
cdiDefKeyString(gridID, CDI_YAXIS, CDI_KEY_UNITS, "myYunits"); cdiDefKeyString(gridID, CDI_YAXIS, CDI_KEY_UNITS, "myYunits");
gridDefDatatype(gridID, DOUBLE_PRECISION); cdiDefKeyInt(gridID, CDI_GLOBAL, CDI_KEY_DATATYPE, DOUBLE_PRECISION);
gridDefTrunc(gridID, 1); gridDefTrunc(gridID, 1);
cdiDefKeyInt(gridID, CDI_GLOBAL, CDI_KEY_NUMBEROFGRIDUSED, 6); cdiDefKeyInt(gridID, CDI_GLOBAL, CDI_KEY_NUMBEROFGRIDUSED, 6);
......
...@@ -190,14 +190,44 @@ list( APPEND cdi_unknown ...@@ -190,14 +190,44 @@ list( APPEND cdi_unknown
resource_unpack.h resource_unpack.h
) )
option(CDI_BUILD_UNKNOWN "Build unknown sources in libcdi" ON)
mark_as_advanced(CDI_BUILD_UNKNOWN)
if (CDI_BUILD_UNKNOWN)
list(APPEND cdi_src_files ${cdi_unknown})
endif ()
# Support exporting all symbolds on Windows
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
add_library(cdilib add_library(cdilib
${cdi_src_files} ${cdi_unknown} ${cdi_src_files}
# INSTALL_HEADERS_LIST cdi.h # INSTALL_HEADERS_LIST cdi.h
) )
target_include_directories(cdilib PRIVATE "${PROJECT_BINARY_DIR}/src/config.h") target_include_directories(cdilib PRIVATE "${PROJECT_BINARY_DIR}/src/config.h")
target_link_libraries(cdilib eccodes netCDF::netcdf) target_link_libraries(cdilib ${cdi_linked_libs})
target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="${PROJECT_NAME}" VERSION="${CMAKE_PROJECT_VERSION}" ${cdi_compile_defs}) target_compile_definitions(cdilib PRIVATE PACKAGE_NAME="${PROJECT_NAME}" VERSION="${CMAKE_PROJECT_VERSION}" ${cdi_compile_defs})
add_library(cdilib::cdilib ALIAS cdilib) add_library(cdilib::cdilib ALIAS cdilib)
include(GNUInstallDirs)
install(FILES cdi.h calendar.h cdi_datetime.h julian_date.h DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}")
install(TARGETS cdilib
ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}"
RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"
LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}")
include(CMakePackageConfigHelpers)
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cdi/cdi-config.cmake.in" "${CMAKE_BINARY_DIR}/cmake/cdi-config.cmake"
INSTALL_DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/cdi")
write_basic_package_version_file(
"${CMAKE_BINARY_DIR}/cmake/cdi-config-version.cmake"
VERSION "${PACKAGE_VERSION}"
COMPATIBILITY SameMajorVersion)
install(
FILES
"${CMAKE_BINARY_DIR}/cmake/cdi-config.cmake"
"${CMAKE_BINARY_DIR}/cmake/cdi-config-version.cmake"
DESTINATION
"${CMAKE_INSTALL_LIBDIR}/cmake/cdi")
...@@ -3,7 +3,9 @@ ...@@ -3,7 +3,9 @@
#endif #endif
#ifdef HAVE_LIBNETCDF #ifdef HAVE_LIBNETCDF
#include "dmemory.h"
#include "stream_cdf.h" #include "stream_cdf.h"
#include "cdf_int.h"
#include "cdf_lazy_grid.h" #include "cdf_lazy_grid.h"
static struct gridVirtTable cdfLazyGridVtable; static struct gridVirtTable cdfLazyGridVtable;
......
...@@ -19,8 +19,6 @@ ...@@ -19,8 +19,6 @@
#include <string.h> #include <string.h>
#include "dmemory.h"
#include "cdf_int.h"
#include "grid.h" #include "grid.h"
struct xyValGet struct xyValGet
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include "stream_cdf.h" #include "stream_cdf.h"
#include "cdf_int.h" #include "cdf_int.h"
#include "vlist.h" #include "vlist.h"
#include "vlist_var.h"
static void static void
cdfReadGridTraj(stream_t *streamptr, int gridID) cdfReadGridTraj(stream_t *streamptr, int gridID)
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#include "dmemory.h"
#include "cdi.h" #include "cdi.h"
#include "cdi_int.h" #include "cdi_int.h"
#include "cdf_util.h" #include "cdf_util.h"
......
#ifndef CDF_UTIL_H_ #ifndef CDF_UTIL_H_
#define CDF_UTIL_H_ #define CDF_UTIL_H_
#include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
bool xtypeIsText(int xtype); bool xtypeIsText(int xtype);
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include "cdf.h" #include "cdf.h"
#include "cdf_int.h" #include "cdf_int.h"
#include "vlist.h" #include "vlist.h"
#include "vlist_var.h"
void void
cdfDefVarDeflate(int ncid, int ncvarID, int shuffle, int compLevel) cdfDefVarDeflate(int ncid, int ncvarID, int shuffle, int compLevel)
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "cdi.h" #include "cdi.h"
#include "cdi_int.h" #include "cdi_int.h"
#include "taxis.h"
#include "zaxis.h" #include "zaxis.h"
#include "grid.h" #include "grid.h"
#include "vlist.h" #include "vlist.h"
...@@ -43,6 +44,12 @@ zaxis_get_keysp(zaxis_t *zaxisptr, int varID) ...@@ -43,6 +44,12 @@ zaxis_get_keysp(zaxis_t *zaxisptr, int varID)
return (varID == CDI_GLOBAL) ? &zaxisptr->keys : NULL; return (varID == CDI_GLOBAL) ? &zaxisptr->keys : NULL;
} }
static cdi_keys_t *
taxis_get_keysp(taxis_t *taxisptr, int varID)
{
return (varID == CDI_GLOBAL) ? &taxisptr->keys : NULL;
}
static cdi_key_t * static cdi_key_t *
new_key(cdi_keys_t *keysp, int key) new_key(cdi_keys_t *keysp, int key)
{ {
...@@ -100,6 +107,7 @@ cdi_get_keysp(int objID, int varID) ...@@ -100,6 +107,7 @@ cdi_get_keysp(int objID, int varID)
if (reshID == GRID) return grid_get_keysp(grid_to_pointer(objID), varID); if (reshID == GRID) return grid_get_keysp(grid_to_pointer(objID), varID);
if (reshID == DIST_GRID) return grid_get_keysp(grid_to_pointer(objID), varID); if (reshID == DIST_GRID) return grid_get_keysp(grid_to_pointer(objID), varID);
if (reshID == ZAXIS) return zaxis_get_keysp(zaxis_to_pointer(objID), varID); if (reshID == ZAXIS) return zaxis_get_keysp(zaxis_to_pointer(objID), varID);
if (reshID == TAXIS) return taxis_get_keysp(taxis_to_pointer(objID), varID);
if (reshID == VLIST) return vlist_get_keysp(vlist_to_pointer(objID), varID); if (reshID == VLIST) return vlist_get_keysp(vlist_to_pointer(objID), varID);
return NULL; return NULL;
......
...@@ -2,8 +2,9 @@ ...@@ -2,8 +2,9 @@
#include "config.h" #include "config.h"
#endif #endif
#ifndef _WIN32
#include <unistd.h> #include <unistd.h>
#endif
#include <limits.h> #include <limits.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
......
...@@ -24,7 +24,9 @@ int cdiUUIDIsNull(const unsigned char uuid[]) ...@@ -24,7 +24,9 @@ int cdiUUIDIsNull(const unsigned char uuid[])
return isNull; return isNull;
} }
#ifndef _WIN32
void cdiCreateUUID(unsigned char uuid[CDI_UUID_SIZE]); void cdiCreateUUID(unsigned char uuid[CDI_UUID_SIZE]);
#endif
int cdiUUID2Str(const unsigned char uuid[], char uuidstr[]); int cdiUUID2Str(const unsigned char uuid[], char uuidstr[]);
int cdiStr2UUID(const char *uuidstr, unsigned char uuid[]); int cdiStr2UUID(const char *uuidstr, unsigned char uuid[]);
......
# Config file for lib CDI project # Config file for lib CDI project
# run cmake with CDI_DIR pointing to the directory containing this file. # run cmake with CDI_DIR pointing to the directory containing this file.
# set(CDI_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../../..") set(CDI_ROOT_DIR "${CMAKE_CURRENT_LIST_DIR}/../../..")
# use following line instead of previous if this file can be configured # use following line instead of previous if this file can be configured
set(CDI_ROOT_DIR "@prefix@") # set(CDI_ROOT_DIR "@prefix@")
find_path(CDI_INCLUDE_DIRECTORY find_path(CDI_INCLUDE_DIRECTORY
cdi.h cdi.h
...@@ -15,7 +15,7 @@ find_path(CDI_INCLUDE_DIRECTORY ...@@ -15,7 +15,7 @@ find_path(CDI_INCLUDE_DIRECTORY
mark_as_advanced(CDI_INCLUDE_DIRECTORY) mark_as_advanced(CDI_INCLUDE_DIRECTORY)
find_library(CDI_LIBRARY find_library(CDI_LIBRARY
NAMES cdi NAMES cdilib
PATHS "${CDI_ROOT_DIR}/lib" PATHS "${CDI_ROOT_DIR}/lib"
# use following line instead of previous if this file can be configured # use following line instead of previous if this file can be configured
# PATHS "@libdir@" # PATHS "@libdir@"
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
#include "config.h" #include "config.h"
#endif #endif
#include <stdlib.h>
enum enum
{ {
EXT_REAL = 1, EXT_REAL = 1,
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
* next to find out what happened */ * next to find out what happened */
#include <stdio.h> #include <stdio.h>
#include <stdlib.h>
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
......
...@@ -10,19 +10,25 @@ ...@@ -10,19 +10,25 @@
#include "config.h" #include "config.h"
#endif #endif
#include <unistd.h>
#include <assert.h> #include <assert.h>
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <limits.h> #include <limits.h>
#include <stdbool.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h>
#include <string.h> #include <string.h>
#include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/types.h>
// On Windows, define ssize_t manually
#ifdef _WIN32
#define ssize_t __int64
#include <io.h>
#else
#include <unistd.h>
#endif
#ifdef HAVE_SYS_TIME_H #ifdef HAVE_SYS_TIME_H
#include <sys/time.h> // gettimeofday() #include <sys/time.h> // gettimeofday()
...@@ -392,7 +398,7 @@ fileFlush(int fileID) ...@@ -392,7 +398,7 @@ fileFlush(int fileID)
{ {
FILE *fp = fileptr->fp; FILE *fp = fileptr->fp;
retval = fflush(fp); retval = fflush(fp);
if (retval == 0) retval = fsync(fileno(fp)); if (retval == 0) retval = fflush(fp);
if (retval != 0) retval = errno; if (retval != 0) retval = errno;
} }
......
...@@ -14,6 +14,9 @@ ...@@ -14,6 +14,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdbool.h> #include <stdbool.h>
#include <float.h> #include <float.h>
// Required on windows to be able to use M_PI
#define _USE_MATH_DEFINES
#include <math.h> #include <math.h>
#ifndef M_SQRT2 #ifndef M_SQRT2
......