NOAA-EMC / wgrib2

Provides functionality for interacting with, reading, writing, and manipulating GRIB2 files.
27 stars 13 forks source link

generate config.h in usual CMake manner #95

Closed edwardhartnett closed 2 months ago

edwardhartnett commented 6 months ago

We have:

# write config.h
message(STATUS "Write config.h")
FILE(WRITE "wgrib2/config.h" "/* config.h generated by cmake */\n")
FILE(APPEND "wgrib2/config.h" "#ifndef _CONFIG_H\n")
FILE(APPEND "wgrib2/config.h" "#define _CONFIG_H\n")

FOREACH(var IN ITEMS USE_NETCDF3 USE_NETCDF4 USE_HDF5 USE_REGEX USE_TIGGE USE_MYSQL
   USE_IPOLATES USE_UDF USE_OPENMP USE_PROJ4 USE_WMO_VALIDATION DISABLE_TIMEZONE
   DISABLE_ALARM USE_NAMES USE_G2CLIB USE_PNG USE_JASPER USE_OPENJPEG MAKE_FTN_API USE_AEC BUILD_COMMENTS)

#      FILE(APPEND "wgrib2/config.h" "#test ${var} ${${var}}\n")
   if(${var} STREQUAL ON)
      FILE(APPEND "wgrib2/config.h" "#define ${var}\n")
   elseif(${var} STREQUAL OFF)
      FILE(APPEND "wgrib2/config.h" "// #define ${var}\n")
   elseif(${${var}} MATCHES " ")
      FILE(APPEND "wgrib2/config.h" "#define ${var} \"${${var}}\"\n")
   else()
      FILE(APPEND "wgrib2/config.h" "#define ${var} ${${var}}\n")
   endif()
ENDFOREACH()

FILE(APPEND "wgrib2/config.h" "#define CC \"${CMAKE_C_COMPILER} ${CMAKE_C_COMPILER_ID}\"\n")
FILE(APPEND "wgrib2/config.h" "#define FORTRAN \"${CMAKE_Fortran_COMPILER} ${CMAKE_Fortran_COMPILER_ID}\"\n")
FILE(APPEND "wgrib2/config.h" "#define CPPFLAGS \"${CMAKE_C_FLAGS}\"\n")
FILE(APPEND "wgrib2/config.h" "#define FFLAGS \"${CMAKE_Fortran_FLAGS}\"\n")
FILE(APPEND "wgrib2/config.h" "#endif\n")

CMake already provides a way to do config.h files which works well and is easier than rolling our own.