mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
* Update opm-common submodule and use branch development https://github.com/CeetronSolutions/opm-common/tree/development * Add cmake-format of ThirdParty/custom-opm-common/CMakeLists.txt * Add boost-test * Update generated files and simplify CMake configuration Add -D_USE_MATH_DEFINES to CMake to avoid multiple local defines Introduce flag CREATE_OPM_COMMON_KEYWORDS used to generate C++ files JSON files. This enables use also in MSVC. Remove obsolete direct include of source files. * Update generated ESMRY test file There was a invalid extra : postfix for some keywords like NEWTON and other N* keywords. When creating ESRMY using updated opm-common fix this issue. * Update URL for custom-opm-common
121 lines
3.9 KiB
CMake
121 lines
3.9 KiB
CMake
if(CMAKE_VERSION VERSION_LESS 3.8)
|
|
message(WARNING "CMake version does not support c++17, guessing -std=c++17")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
|
else()
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
endif()
|
|
|
|
if(MSVC)
|
|
add_definitions(
|
|
"/wd4996 /wd4244 /wd4267 /wd4101 /wd4477 /wd4661 -D_USE_MATH_DEFINES"
|
|
)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP /permissive-")
|
|
endif(MSVC)
|
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wno-unused-parameter -Wno-switch -Wno-sign-compare -Wno-deprecated-copy -Wno-missing-field-initializers"
|
|
)
|
|
endif()
|
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
set(CMAKE_CXX_FLAGS
|
|
"${CMAKE_CXX_FLAGS} -Wno-sign-compare -Wno-missing-field-initializers -Wno-deprecated-copy"
|
|
)
|
|
endif()
|
|
|
|
# Set defines to include required files for ResInsight. Make sure that these
|
|
# defines are set before including the opm-common CMakeLists
|
|
set(ENABLE_ECL_INPUT true)
|
|
set(ENABLE_ECL_OUTPUT true)
|
|
set(BUILD_TESTING false)
|
|
set(ENABLE_MOCKSIM false)
|
|
set(OPM_ENABLE_PYTHON false)
|
|
set(OPM_INSTALL_PYTHON false)
|
|
set(OPM_ENABLE_EMBEDDED_PYTHON false)
|
|
set(OPM_ENABLE_DUNE false)
|
|
set(BUILD_EXAMPLES false)
|
|
|
|
if(CREATE_OPM_COMMON_KEYWORDS)
|
|
# In ResInsight, we need a subset of the files in opm-common. We also need to
|
|
# generate the keywords. The flag CREATE_OPM_COMMON_KEYWORDS is set in the
|
|
# main CMakeLists.txt file. When this flag is set, the opm-common is added to
|
|
# the solution. Build a test target to trigger the c++ code generation using
|
|
# the tool genkw, use CarfinTest.exe Copy files generated code from
|
|
# build/ThirdParty/custom-opm-common/opm-common: copy ParserInit.cpp and
|
|
# config.h to source folder ThirdParty/custom-opm-common/generated-opm-common/
|
|
# copy the folders "ParserKeywords" and "include" to source folder
|
|
# ThirdParty/custom-opm-common/generated-opm-common/
|
|
add_subdirectory(opm-common)
|
|
message(
|
|
STATUS
|
|
"opm-common is added to the solution used to create keywords from JSON files"
|
|
)
|
|
|
|
else(CREATE_OPM_COMMON_KEYWORDS)
|
|
|
|
project(custom-opm-common)
|
|
|
|
find_package(Boost)
|
|
|
|
list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/opm-common/cmake/Modules)
|
|
|
|
if(NOT cjson_FOUND)
|
|
include(DownloadCjson)
|
|
endif()
|
|
|
|
include_directories(${cjson_SOURCE_DIR})
|
|
list(APPEND opm-common_SOURCES ${cjson_SOURCE_DIR}/cJSON.c)
|
|
|
|
include_directories(
|
|
opm-common generated-opm-common generated-opm-common/include
|
|
)
|
|
|
|
add_definitions(-DFMT_HEADER_ONLY)
|
|
include_directories(SYSTEM ../fmtlib/include)
|
|
|
|
include(opm-common/CMakeLists_files.cmake)
|
|
|
|
set(opm_parser_source_files_short_path ${MAIN_SOURCE_FILES})
|
|
|
|
foreach(file ${opm_parser_source_files_short_path})
|
|
list(APPEND opm_parser_source_files_long_path "opm-common/${file}")
|
|
endforeach()
|
|
|
|
set(opm_parser_source_files ${opm_parser_source_files_long_path}
|
|
${opm_parser_generated_source_files}
|
|
)
|
|
|
|
# Add generated files These files are generated by the parser generator genkw
|
|
file(GLOB ALL_FILES_IN_FOLDER generated-opm-common/ParserKeywords/*.cpp)
|
|
list(APPEND opm-common_SOURCES ${ALL_FILES_IN_FOLDER})
|
|
list(APPEND opm-common_SOURCES generated-opm-common/ParserInit.cpp)
|
|
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0)
|
|
list(APPEND ADDITIONAL_LINK_LIBRARIES stdc++fs)
|
|
endif()
|
|
endif()
|
|
|
|
add_library(
|
|
${PROJECT_NAME} STATIC ${opm_parser_source_files_long_path}
|
|
${opm-common_SOURCES}
|
|
)
|
|
|
|
find_path(BOOST_SPIRIT_INCLUDE_DIRS "boost/spirit.hpp"
|
|
HINTS ${Boost_INCLUDE_DIRS}
|
|
)
|
|
|
|
target_link_libraries(custom-opm-common ${ADDITIONAL_LINK_LIBRARIES})
|
|
|
|
target_include_directories(
|
|
custom-opm-common
|
|
PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/opm-common
|
|
${CMAKE_CURRENT_SOURCE_DIR}/generated-opm-common/include
|
|
PRIVATE ${BOOST_SPIRIT_INCLUDE_DIRS}
|
|
)
|
|
|
|
endif(CREATE_OPM_COMMON_KEYWORDS)
|