Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion ApplicationExeCode/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,30 @@ if(RESINSIGHT_ENABLE_OPENVDS)
add_definitions(-DUSE_OPENVDS)
endif()

target_link_libraries(ResInsight PRIVATE ${LINK_LIBRARIES})
# Link libraries with WHOLE_ARCHIVE for ApplicationLibCode, cafCommandFeatures, Commands, and GrpcInterface
# to ensure static initialization is not optimized away by the linker.
# Other libraries are linked normally.
set(FILTERED_LINK_LIBRARIES ${LINK_LIBRARIES})
list(REMOVE_ITEM FILTERED_LINK_LIBRARIES ApplicationLibCode cafCommandFeatures Commands GrpcInterface)

target_link_libraries(
ResInsight
PRIVATE
${FILTERED_LINK_LIBRARIES}
$<LINK_LIBRARY:WHOLE_ARCHIVE,ApplicationLibCode>
$<LINK_LIBRARY:WHOLE_ARCHIVE,cafCommandFeatures>
$<LINK_LIBRARY:WHOLE_ARCHIVE,Commands>
$<$<BOOL:${RESINSIGHT_ENABLE_GRPC}>:$<LINK_LIBRARY:WHOLE_ARCHIVE,GrpcInterface>>
)

# Add RifGeoMechFileInterface after WHOLE_ARCHIVE to resolve link order issues
if(UNIX AND NOT APPLE)
target_link_options(ResInsight PRIVATE "LINKER:--start-group")
target_link_libraries(ResInsight PRIVATE RifGeoMechFileInterface RigGeoMechDataModel)
target_link_options(ResInsight PRIVATE "LINKER:--end-group")
else()
target_link_libraries(ResInsight PRIVATE RifGeoMechFileInterface)
endif()

if(UNIX AND NOT APPLE)
target_link_libraries(ResInsight PRIVATE xcb)
Expand Down
2 changes: 1 addition & 1 deletion ApplicationLibCode/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,7 @@ list(APPEND ALL_SOURCE_FILES ${CPP_SOURCES} ${MOC_SOURCE_FILES}
${FORM_FILES_CPP} ${QRC_FILES}
)

add_library(${PROJECT_NAME} OBJECT ${ALL_SOURCE_FILES})
add_library(${PROJECT_NAME} STATIC ${ALL_SOURCE_FILES})

option(RESINSIGHT_ENABLE_DYNAMIC_DEOPTIMALIZATION
"Ensable Dynamic Deoptimalization" OFF
Expand Down
7 changes: 5 additions & 2 deletions ApplicationLibCode/Commands/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ endforeach(referencedfile)
find_package(Eigen3 REQUIRED)

add_library(
${PROJECT_NAME} OBJECT
${PROJECT_NAME} STATIC
${COMMAND_CODE_SOURCE_FILES} ${COMMAND_CODE_HEADER_FILES}
${COMMAND_MOC_SOURCE_FILES}
)
Expand All @@ -91,6 +91,8 @@ endif()
target_include_directories(
${PROJECT_NAME} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/EclipseCommands
$<TARGET_PROPERTY:ApplicationLibCode,INTERFACE_INCLUDE_DIRECTORIES>
$<TARGET_PROPERTY:cafCommandFeatures,INTERFACE_INCLUDE_DIRECTORIES>
)

if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
Expand Down Expand Up @@ -135,7 +137,8 @@ if(MSVC)

endif()

set(LINK_LIBRARIES ApplicationLibCode ResultStatisticsCache
set(LINK_LIBRARIES # ApplicationLibCode removed - linked with WHOLE_ARCHIVE in executables
ResultStatisticsCache
ResInsightCommonSettings
)
target_link_libraries(Commands PRIVATE ${LINK_LIBRARIES})
3 changes: 2 additions & 1 deletion ApplicationLibCode/GeoMech/GeoMechDataModel/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ add_library(
RigFemAddressDefines.cpp
)

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE $<TARGET_PROPERTY:ApplicationLibCode,INTERFACE_INCLUDE_DIRECTORIES>)

target_link_libraries(
RigGeoMechDataModel PUBLIC LibCore cafPdmCvf cafTensor cafUserInterface
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,8 @@ add_library(
RifVtkReader.cpp
)

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE $<TARGET_PROPERTY:ApplicationLibCode,INTERFACE_INCLUDE_DIRECTORIES>)

target_link_libraries(
RifGeoMechFileInterface PUBLIC RigGeoMechDataModel LibCore
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -245,8 +245,7 @@ void RivReservoirFaultsPartMgr::updateColors( size_t timeStepIndex, RimEclipseCe
{
if ( !m_reservoirView ) return;

RimFaultInViewCollection* faultCollection = m_reservoirView->faultCollection();
CVF_ASSERT( faultCollection );
CVF_ASSERT( m_reservoirView->faultCollection() );

for ( auto& faultPart : m_faultParts )
{
Expand Down
6 changes: 4 additions & 2 deletions ApplicationLibCode/ResultStatisticsCache/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@ add_library(
RigStatisticsMath.cpp
)

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
PRIVATE $<TARGET_PROPERTY:ApplicationLibCode,INTERFACE_INCLUDE_DIRECTORIES>)

target_link_libraries(${PROJECT_NAME} LibCore ApplicationLibCode)
target_link_libraries(${PROJECT_NAME} PRIVATE LibCore)
# ApplicationLibCode removed - linked with WHOLE_ARCHIVE in executables
17 changes: 16 additions & 1 deletion ApplicationLibCode/UnitTests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -233,7 +233,22 @@ if(RESINSIGHT_USE_ODB_API)
list(APPEND LINK_LIBRARIES RifOdbReader)
endif()

target_link_libraries(ResInsight-tests PUBLIC ${LINK_LIBRARIES} GTest::gtest)
# Link libraries with WHOLE_ARCHIVE for ApplicationLibCode, cafCommandFeatures, Commands, and GrpcInterface
# to ensure static initialization is not optimized away by the linker.
# Other libraries are linked normally.
set(FILTERED_LINK_LIBRARIES ${LINK_LIBRARIES})
list(REMOVE_ITEM FILTERED_LINK_LIBRARIES ApplicationLibCode cafCommandFeatures Commands GrpcInterface)

target_link_libraries(
ResInsight-tests
PUBLIC
${FILTERED_LINK_LIBRARIES}
GTest::gtest
$<LINK_LIBRARY:WHOLE_ARCHIVE,ApplicationLibCode>
$<LINK_LIBRARY:WHOLE_ARCHIVE,cafCommandFeatures>
$<LINK_LIBRARY:WHOLE_ARCHIVE,Commands>
$<$<BOOL:${RESINSIGHT_ENABLE_GRPC}>:$<LINK_LIBRARY:WHOLE_ARCHIVE,GrpcInterface>>
)

if(MSVC)
add_custom_command(
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -977,7 +977,7 @@ list(
CommonCode
cafVizExtensions
cafPdmScripting
cafCommandFeatures
# cafCommandFeatures removed - linked with WHOLE_ARCHIVE in executables
)

set_property(TARGET ${APP_FWK_LIBRARIES} PROPERTY FOLDER "AppFwk")
Expand Down
18 changes: 9 additions & 9 deletions Fwk/AppFwk/cafCommandFeatures/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,18 +53,18 @@ set(QRC_FILES
PARENT_SCOPE
)

# NOTE! Adding the library as a cmake "OBJECT" library to make sure the linker
# is not pruning the seemingly unused features, and to make sure that the static
# initialization based registration of the features into the factory is done
# properly see
# https://gitlab.kitware.com/cmake/community/wikis/doc/tutorials/Object-Library
# and
# https://cmake.org/cmake/help/v3.15/command/add_library.html?highlight=add_library#object-libraries
# NOTE! Adding the library as a cmake "STATIC" library. To ensure the linker
# doesn't prune seemingly unused features and that static initialization based
# registration of features into the factory is done properly, MSVC uses
# /WHOLEARCHIVE and GCC/Clang use --whole-archive linker flags. See
# https://cmake.org/cmake/help/latest/command/add_library.html

add_library(${PROJECT_NAME} OBJECT ${PROJECT_FILES} ${MOC_SOURCE_FILES})
add_library(${PROJECT_NAME} STATIC ${PROJECT_FILES} ${MOC_SOURCE_FILES})

target_include_directories(${PROJECT_NAME} PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

target_link_libraries(
${PROJECT_NAME} cafCommand cafUserInterface ${QT_LIBRARIES}
${PROJECT_NAME} PRIVATE cafCommand cafUserInterface ${QT_LIBRARIES}
)

if(MSVC)
Expand Down
8 changes: 2 additions & 6 deletions Fwk/AppFwk/cafTests/cafTestApplication/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -52,17 +52,13 @@ set(PROJECT_FILES

qt_add_executable(
${PROJECT_NAME} ${PROJECT_FILES} ${MOC_SOURCE_FILES} ${QRC_FILES}
$<TARGET_OBJECTS:cafCommandFeatures> # Needed for cmake version < 3.12. Remove
# when we can use target_link_libraries with OBJECT libraries
)

set(TAP_LINK_LIBRARIES cafUserInterface)

if(USE_COMMAND_FRAMEWORK)
set(TAP_LINK_LIBRARIES
${TAP_LINK_LIBRARIES} cafCommand
# cafCommandFeatures # Not possible using cmake version < 3.12. Use when
# we can use target_link_libraries with OBJECT libraries
set(TAP_LINK_LIBRARIES ${TAP_LINK_LIBRARIES} cafCommand
$<LINK_LIBRARY:WHOLE_ARCHIVE,cafCommandFeatures>
)
endif(USE_COMMAND_FRAMEWORK)

Expand Down
7 changes: 4 additions & 3 deletions GrpcInterface/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -124,10 +124,10 @@ set(_LINK_LIBRARIES
LibCore
CommonCode
cafCommand
cafCommandFeatures
# cafCommandFeatures and ApplicationLibCode removed - linked with WHOLE_ARCHIVE in executables
cafProjectDataModel
cafPdmScripting
ApplicationLibCode)
)

# Proto files
file(GLOB GRPC_PROTO_FILES GrpcProtos/*.proto)
Expand Down Expand Up @@ -219,7 +219,7 @@ list(
list(APPEND GRPC_PYTHON_SOURCES ${GRPC_PYTHON_GENERATED_SOURCES})

add_library(
${PROJECT_NAME} OBJECT
${PROJECT_NAME} STATIC
${SOURCE_GROUP_HEADER_FILES} ${SOURCE_GROUP_SOURCE_FILES}
${GRPC_HEADER_FILES} ${GRPC_CPP_SOURCES})

Expand All @@ -228,6 +228,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC
PRIVATE
${GRPC_INCLUDE_DIRS}
${CMAKE_BINARY_DIR}/Generated
$<TARGET_PROPERTY:ApplicationLibCode,INTERFACE_INCLUDE_DIRECTORIES>
)

target_link_libraries(${PROJECT_NAME} PRIVATE ${_LINK_LIBRARIES})
Expand Down
2 changes: 1 addition & 1 deletion ThirdParty/openzgy
Submodule openzgy updated 1 files
+1 −1 CMakeLists.txt
Loading