diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b56e520b..b5247699e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8.6) #Project Name project(NETCDF C) ADD_DEFINITIONS() - +SET(CMAKE_VERBOSE_MAKEFILE ON) #Add custom CMake Modules SET (CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/modules/" CACHE INTERNAL "Location of our custom CMake modules.") @@ -46,6 +46,14 @@ FIND_PACKAGE (CURL) FIND_PACKAGE (HDF5) FIND_PACKAGE (ZLIB) +# Enable some additional flags. +IF (DLL_NETCDF) + SET(BUILD_DLL ON) + SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -DDLL_EXPORT) +ENDIF (DLL_NETCDF) + + + ## Beging autotools-style checks for config.h CHECK_INCLUDE_FILE("alloca.h" HAVE_ALLOCA_H) @@ -105,7 +113,7 @@ SET (NETCDF_LIB_CORENAME "netcdf") #add_subdirectory(man4) #add_subdirectory(man4/images) add_subdirectory(libsrc) -#add_subdirectory(libsrc4) +add_subdirectory(libsrc4) #add_subdirectory(nc_test4) #add_subdirectory(nc_test) #add_subdirectory(ncdump) diff --git a/cmake_config.h.in b/cmake_config.h.in index 16c76707f..5079f0eec 100644 --- a/cmake_config.h.in +++ b/cmake_config.h.in @@ -86,11 +86,17 @@ /* Set this when building a DLL under MinGW */ #cmakedefine DLL_NETCDF +#cmakedefine BUILD_DLL /* Set this when DAP is enabled. */ #cmakedefine ENABLE_DAP +/* Define to 1 if the system has the type `uchar'.*/ #cmakedefine HAVE_UCHAR 1 -#include +/* Define to 1 if the system has the type 'unsigned long long int'.*/ +#cmakedefine HAVE_UNSIGNED_LONG_LONG_INT +#cmakedefine HAVE_LONG_LONG_INT + +#include #endif diff --git a/libsrc/CMakeLists.txt b/libsrc/CMakeLists.txt index 8b2c7ad5d..6d597b156 100644 --- a/libsrc/CMakeLists.txt +++ b/libsrc/CMakeLists.txt @@ -1,11 +1,20 @@ SET(CMAKE_INCLUDE_CURRENT_DIR ON) INCLUDE_DIRECTORIES(".") -#INCLUDE_DIRECTORIES(${NETCDF_SOURCE_DIR}/include) +# Process these files with m4. +SET(m4_SOURCES attr ncx putget t_ncxx) +MACRO(GEN_m4 filename) + ADD_CUSTOM_COMMAND( + OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c + COMMAND m4 ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.m4 > ${CMAKE_CURRENT_SOURCE_DIR}/${filename}.c + VERBATIM + ) +ENDMACRO(GEN_m4) - -#SET(libsrc_SOURCES dim.c ffio.c lookup3.c memio.c mmap.c mmapio.c nc.c nc3dispatch.c ncFile.c ncio.c nclistmgr.c ncstdio.c ncx_cray.c posixio.c t_ncio.c t_ncx.c v1hpg.c var.c winceio.c) +foreach (f ${m4_SOURCES}) + GEN_m4(${f}) +endforeach(f) SET(libsrc_SOURCES v1hpg.c nclistmgr.c putget.c attr.c nc3dispatch.c nc.c var.c dim.c ncx.c lookup3.c ncio.c) @@ -19,6 +28,26 @@ ENDIF (BUILD_DISKLESS) IF (USE_FFIO) SET(libsrc_SOURCES ${libsrc_SOURCES} ffio.c) +ELSE (USE_FFIO) + SET(libsrc_SOURCES ${libsrc_SOURCES} posixio.c) ENDIF (USE_FFIO) -add_library(netcdf3 ${libsrc_SOURCES}) \ No newline at end of file +add_library(netcdf3 ${libsrc_SOURCES}) + +# The C API man page. +set(man_MANS netcdf.3) + +set(ARGS_MANPAGE -DAPI=C) + +IF (USE_NETCDF4) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) +ENDIF(USE_NETCDF4) + +IF (BUILD_DAP) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) +ENDIF(BUILD_DAP) + +IF (BUILD_PARALLEL) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) +ENDIF(BUILD_PARALLEL) + diff --git a/libsrc/ncx.m4 b/libsrc/ncx.m4 index 6fde8aef2..67c83953c 100644 --- a/libsrc/ncx.m4 +++ b/libsrc/ncx.m4 @@ -52,9 +52,15 @@ dnl # define LLONG_MIN (-LLONG_MAX - 1LL) # define ULLONG_MAX 18446744073709551615ULL #endif +#ifndef LONG_LONG_MAX #define LONG_LONG_MAX LLONG_MAX +#endif +#ifndef LONG_LONG_MIN #define LONG_LONG_MIN LLONG_MIN +#endif +#ifndef ULONG_LONG_MAX #define ULONG_LONG_MAX ULLONG_MAX +#endif #include #ifndef FLT_MAX /* This POSIX macro missing on some systems */ # ifndef NO_IEEE_FLOAT diff --git a/libsrc4/CMakeLists.txt b/libsrc4/CMakeLists.txt new file mode 100644 index 000000000..7337dfa3d --- /dev/null +++ b/libsrc4/CMakeLists.txt @@ -0,0 +1,27 @@ +SET(CMAKE_INCLUDE_CURRENT_DIR ON) + +INCLUDE_DIRECTORIES(".") + +# Process these files with m4. + +SET(libsrc4_SOURCES nc4dispatch.c nc4attr.c nc4dim.c nc4file.c nc4grp.c nc4type.c nc4var.c ncfunc.c nc4internal.c nc4hdf.c error4.c) + +add_library(netcdf4 ${libsrc4_SOURCES}) + +# The C API man page. +set(man_MANS netcdf.3) + +set(ARGS_MANPAGE -DAPI=C) + +IF (USE_NETCDF4) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DNETCDF4=TRUE) +ENDIF(USE_NETCDF4) + +IF (BUILD_DAP) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DDAP=TRUE) +ENDIF(BUILD_DAP) + +IF (BUILD_PARALLEL) + SET(ARGS_MANPAGE ${ARGS_MANPAGE} -DPARALLEL_IO=TRUE) +ENDIF(BUILD_PARALLEL) +