# headers only module # ------------------- add_custom_target(utils_inc SOURCES #log.hpp # sparse solvers # -------------- sparse_solvers/sparse_solver_base.hpp sparse_solvers/sparse_solver.hpp sparse_solvers/sparse_solver_structs.hpp sparse_solvers/sparse_qr.hpp sparse_solvers/sparse_lu.hpp sparse_solvers/sparse_bicgstab.hpp sparse_solvers/sparse_gmres.hpp range_iterator.hpp range_iterator.inl options_handler.hpp perfs_handler.hpp compat.hpp value_checker.hpp scope_guard.hpp plugins/plugin_api_version.h plugins/plugin_interface.h plugins/plugin_types.hpp ) set(SPECMICP_COMMON_LIBRARY_FILES log.cpp dateandtime.cpp timer.cpp moving_average.cpp plugins/dynamic_library.cpp plugins/plugin_base.cpp plugins/module_base.cpp plugins/plugin_manager.cpp ../physics/laws.cpp ../physics/unsaturated_laws.cpp ../physics/units.cpp ../physics/io/units.cpp io/format.cpp io/csv_formatter.cpp io/yaml.cpp cli/parser.cpp ) # hdf5 # ----- if (HDF5_FOUND) list(APPEND SPECMICP_COMMON_LIBRARY_FILES io/specmicp_hdf5.cpp ) include_directories(${HDF5_INCLUDE_DIRS}) set_source_files_properties(io/specmicp_hdf5.cpp PROPERTIES COMPILE_DEFINITIONS HDF5_DEFINITIONS) add_custom_target(utils_io_hdf5_inc SOURCES io/hdf5_eigen.hpp io/hdf5_eigen.inl ) endif() set_pgo_flag(${SPECMICP_COMMON_LIBRARY_FILES}) add_library(objspecmicp_common OBJECT ${SPECMICP_COMMON_LIBRARY_FILES}) set_property(TARGET objspecmicp_common PROPERTY POSITION_INDEPENDENT_CODE 1) add_library(specmicp_common SHARED $) if (UNIX) set(SPECMICP_COMMON_LINK dl) else() message(FATAL_ERROR "Plugin system only for POSIX at this time !") endif() if (HDF5_FOUND) set(SPECMICP_COMMON_LINK "${HDF5_LIBRARIES};${SPECMICP_COMMON_LINK}") endif() target_link_libraries(specmicp_common ${SPECMICP_COMMON_LINK}) install(TARGETS specmicp_common LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR} ) set(UTILS_INCLUDE_LIST range_iterator.hpp range_iterator.inl log.hpp options_handler.hpp perfs_handler.hpp moving_average.hpp timer.hpp dateandtime.hpp compat.hpp scope_guard.hpp ) set(UTILS_SPARSE_INCLUDE_LIST # sparse solvers # -------------- sparse_solvers/sparse_solver.hpp sparse_solvers/sparse_solver_base.hpp sparse_solvers/sparse_solver_structs.hpp sparse_solvers/sparse_qr.hpp sparse_solvers/sparse_lu.hpp sparse_solvers/sparse_bicgstab.hpp sparse_solvers/sparse_gmres.hpp ) set(UTILS_IO_INCLUDE_LIST io/format.hpp io/csv_formatter.hpp io/yaml.hpp ) set(UTILS_CLI_INCLUDE_LIST cli/parser.hpp ) install(FILES ${UTILS_INCLUDE_LIST} DESTINATION ${INCLUDE_INSTALL_DIR}/utils ) install(FILES ${UTILS_SPARSE_INCLUDE_LIST} DESTINATION ${INCLUDE_INSTALL_DIR}/utils/sparse_solvers ) install(FILES ${UTILS_IO_INCLUDE_LIST} DESTINATION ${INCLUDE_INSTALL_DIR}/utils/io ) # static libraries # ---------------- if(SPECMICP_BUILD_STATIC) add_library(specmicp_common_static STATIC $ ) install(TARGETS specmicp_common_static ARCHIVE DESTINATION ${STATIC_LIBRARY_INSTALL_DIR} ) else() add_library(specmicp_common_static EXCLUDE_FROM_ALL STATIC $ ) endif() target_link_libraries(specmicp_common_static ${SPECMICP_COMMON_LINK}) set_target_properties(specmicp_common_static PROPERTIES OUTPUT_NAME specmicp_common)