Salome HOME
Add option MED_INT_SIZE to know when medfile is built with med_int=long
authorvsr <vsr@opencascade.com>
Thu, 8 Oct 2020 08:21:10 +0000 (11:21 +0300)
committervsr <vsr@opencascade.com>
Thu, 15 Oct 2020 08:25:46 +0000 (11:25 +0300)
cmake/FindSalomeMEDFile.cmake

index b0756a896013ef7aa755270a0c3acb0cb0b738d5..bb5e0de2190f7aff76490ddaaafcafc19b458b8e 100644 (file)
 SALOME_FIND_PACKAGE_AND_DETECT_CONFLICTS(MEDFile MEDFILE_INCLUDE_DIRS 1)
 #MARK_AS_ADVANCED()
 
+SET(MED_INT_IS_LONG FALSE) # fallback value
 IF(MEDFile_FOUND) 
   SALOME_ACCUMULATE_HEADERS(MEDFILE_INCLUDE_DIRS)
   SALOME_ACCUMULATE_ENVIRONMENT(LD_LIBRARY_PATH ${MEDFILE_LIBRARIES})
-ENDIF()
\ No newline at end of file
+
+  # Check size of med_int
+  SET(_med_int_cxx ${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/check_med_int_size.cxx)
+  FILE(WRITE ${_med_int_cxx}
+       "#include <med.h>\n#include <stdio.h>\nint main(){printf(\"%d\", sizeof(med_int)); return 0;}")
+  TRY_RUN(_med_int_run_result _med_int_compile_results
+          ${CMAKE_BINARY_DIR} ${_med_int_cxx}
+          CMAKE_FLAGS "-DINCLUDE_DIRECTORIES:STRING=${MEDFILE_INCLUDE_DIRS};${HDF5_INCLUDE_DIR}"
+          LINK_LIBRARIES ${MEDFILE_C_LIBRARIES}
+          RUN_OUTPUT_VARIABLE _med_int_output)
+  IF(_med_int_compile_results)
+    SET(MED_INT_SIZE ${_med_int_output})
+  ELSE()
+    SET(MED_INT_SIZE UNKNOWN)
+  ENDIF()
+  IF(MED_INT_SIZE EQUAL 8)
+    SET(MED_INT_IS_LONG TRUE)
+  ELSE()
+    SET(MED_INT_IS_LONG FALSE)
+  ENDIF()
+  MESSAGE(STATUS "MEDFile: size of med_int is ${MED_INT_SIZE}")
+  UNSET(_med_int_cxx)
+  UNSET(_med_int_run_result)
+  UNSET(_med_int_compile_results)
+  UNSET(_med_int_output)
+ENDIF()