diff --git a/CMakeLists.txt b/CMakeLists.txt index 45dd932b..50fd4c7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -138,7 +138,7 @@ set(camp_SOURCES sub_models/sub_model_UNIFAC.c sub_models/sub_model_UNIFAC.F90 sub_models/sub_model_ZSR_aerosol_water.F90 - sub_models/sub_model_ZSR_aerosol_water.c + sub_models/sub_model_ZSR_aerosol_water.c ) add_prefix(gitmodules/camp/src/ camp_SOURCES) @@ -328,6 +328,8 @@ add_prefix(sundials_ SUNDIALS_items) ### CAMP ########################################################################################### add_library(camplib STATIC ${camp_SOURCES} ${json_fortran_SOURCES}) +target_compile_options(camplib PRIVATE $<$:-std=c99>) +target_compile_definitions(camplib PRIVATE $<$:__bool_true_false_are_defined>) target_compile_definitions(camplib PRIVATE CAMP_USE_JSON="1") target_compile_definitions(camplib PRIVATE CAMP_USE_SUNDIALS="1") target_include_directories(camplib PRIVATE @@ -353,9 +355,15 @@ set(HDF5_BUILD_TOOLS OFF) set(HDF5_BUILD_EXAMPLES OFF) set(HDF5_ENABLE_Z_LIB_SUPPORT OFF) set(HDF5_ENABLE_SZIP_SUPPORT OFF) +set(HDF5_ENABLE_NONSTANDARD_FEATURE_FLOAT16 OFF) add_subdirectory(${CMAKE_SOURCE_DIR}/gitmodules/hdf5) +if (MINGW) + # https://github.com/HDFGroup/hdf5/issues/5885 + target_compile_definitions(hdf5-static PRIVATE _GNU_SOURCE) +endif() + foreach(file ${hdf5_GENERATED_HEADERS}) execute_process( COMMAND ${PYTHON_EXECUTABLE} "-c" "import re;open(1,'wb').write(re.sub(b'\\r',b'',open(0,'rb').read()))" @@ -437,6 +445,20 @@ target_compile_definitions(netcdf_clib PRIVATE USE_NETCDF4 USE_HDF5 ) +if (MINGW) + file(WRITE "${CMAKE_BINARY_DIR}/fix_mingw_wstat64.h" " +#pragma once +#include +#ifdef _WIN64 +# undef _wstat64 +# define _wstat64(path, buf) _wstat64((path), (struct _stat64*)(buf)) +#endif +") + target_compile_options(netcdf_clib PRIVATE + -include${CMAKE_BINARY_DIR}/fix_mingw_wstat64.h + ) +endif() + target_compile_options(netcdf_clib PRIVATE $<$:-Wno-unused-result -Wno-pointer-to-int-cast -Wno-int-to-pointer-cast> $<$:-Wno-pointer-to-int-cast -Wno-int-to-void-pointer-cast>