Cloned SEACAS for EXODUS library with extra build files for internal package management.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

113 lines
3.6 KiB

#
# A) Define the package
#
TRIBITS_PACKAGE_DECL( SEACAS ENABLE_SHADOWING_WARNINGS )
TRIBITS_ADD_DEBUG_OPTION()
TRIBITS_ADD_SHOW_DEPRECATED_WARNINGS_OPTION()
TRIBITS_ADD_OPTION_AND_DEFINE(
SEACASExodus_ENABLE_THREADSAFE
EXODUS_THREADSAFE
"Enable thread-safe version of Exodus."
OFF
)
set(${PROJECT_NAME}_C_Standard_DEFAULT c99)
SET(${PROJECT_NAME}_CMAKE_CXX_STANDARD_DEFAULT 17)
SET(${PROJECT_NAME}_CMAKE_CXX_STANDARDS_ALLOWED "(14|17|20)")
ADVANCED_SET(CMAKE_CXX_STANDARD ${${PROJECT_NAME}_CMAKE_CXX_STANDARD_DEFAULT}
CACHE STRING
"C++ standard number with values ${${PROJECT_NAME}_CMAKE_CXX_STANDARDS_ALLOWED} (default ${${PROJECT_NAME}_CMAKE_CXX_STANDARD_DEFAULT})")
IF (NOT CMAKE_CXX_STANDARD MATCHES "^${${PROJECT_NAME}_CMAKE_CXX_STANDARDS_ALLOWED}$")
MESSAGE(FATAL_ERROR
"CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} is not in the allowed set "
"${${PROJECT_NAME}_CMAKE_CXX_STANDARDS_ALLOWED}")
ENDIF ()
set(SEACASExodus_ENABLE_STATIC_DEFAULT "OFF")
set(SEACASExodus_ENABLE_SHARED_DEFAULT "OFF")
# On windows (and probably other systems), we only want a single
# exodus library and not both static and shared.
if (NOT CMAKE_HOST_SYSTEM_NAME STREQUAL "Windows")
if (${CMAKE_PROJECT_NAME} STREQUAL "Seacas")
if (BUILD_SHARED_LIBS)
set(SEACASExodus_ENABLE_STATIC_DEFAULT "ON")
else()
set(SEACASExodus_ENABLE_SHARED_DEFAULT "ON")
endif()
endif()
TRIBITS_ADD_OPTION_AND_DEFINE(
SEACASExodus_ENABLE_STATIC
EXODUS_STATIC
"Build static version of Exodus in addition to shared version."
${SEACASExodus_ENABLE_STATIC_DEFAULT}
)
TRIBITS_ADD_OPTION_AND_DEFINE(
SEACASExodus_ENABLE_SHARED
EXODUS_SHARED
"Build shared version of Exodus in addition to static version."
${SEACASExodus_ENABLE_SHARED_DEFAULT}
)
endif()
TRIBITS_ADD_OPTION_AND_DEFINE(
SEACASIoss_ENABLE_THREADSAFE
IOSS_THREADSAFE
"Enable thread-safe version of Ioss."
OFF
)
ADVANCED_SET(${CMAKE_PROJECT_NAME}_ENABLE_SEACASIoss_Applications ON CACHE BOOL
"Build the io_shell, io_info, io_modify and other ioss executables")
IF (NOT ${PROJECT_NAME}_ENABLE_Fortran)
# For some reason, this variable is undefined if fortran is disabled and it causes a cmake error.
# define it to a nonsense variable to avoid error.
IF (NOT CMAKE_Fortran_LINK_EXECUTABLE)
MESSAGE("-- "
"WARNING: Setting CMAKE_Fortran_LINK_EXECUTABLE to a random value to avoid CMake error"
)
SET(CMAKE_Fortran_LINK_EXECUTABLE empty)
ENDIF()
ENDIF()
ASSERT_DEFINED(TPL_ENABLE_Pthread)
IF (SEACASExodus_ENABLE_THREADSAFE AND NOT TPL_ENABLE_Pthread)
MESSAGE(FATAL_ERROR "You set SEACASExodus_ENABLE_THREADSAFE=ON, but TriBITs support for Pthread(s) is not enabled (TPL_ENABLE_Pthread=OFF). This is not allowed. Please enable Pthreads before attempting to enable the thread-safe Exodus support.")
ENDIF ()
IF (SEACASIoss_ENABLE_THREADSAFE AND NOT TPL_ENABLE_Pthread)
MESSAGE(FATAL_ERROR "You set SEACASIoss_ENABLE_THREADSAFE=ON, but TriBITs support for Pthread(s) is not enabled (TPL_ENABLE_Pthread=OFF). This is not allowed. Please enable Pthreads before attempting to enable the thread-safe IOSS support.")
ENDIF ()
# C) Add the libraries, tests, and examples
#- Add executable that will be installed in bin dir...
#
# ADD_BIN_EXECUTABLE(<executable>)
#
function(install_executable target)
IF (TARGET ${target})
INSTALL(TARGETS ${target} COMPONENT ${PACKAGE_NAME} RUNTIME DESTINATION ${${PROJECT_NAME}_INSTALL_RUNTIME_DIR})
ENDIF()
endfunction()
TRIBITS_PROCESS_SUBPACKAGES()
TRIBITS_PACKAGE_DEF()
ADD_SUBDIRECTORY(scripts)
TRIBITS_EXCLUDE_FILES(
doc
)
#
# D) Do standard postprocessing
#
TRIBITS_PACKAGE_POSTPROCESS()