-
Notifications
You must be signed in to change notification settings - Fork 8
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Debug/ams def libs #60
base: develop
Are you sure you want to change the base?
Changes from 7 commits
847c9cc
96bf52d
bb2988b
3a0fe69
a3422bc
765f6f5
53a3990
e1a2c39
b71e967
d783ae4
1f4b81a
b83e364
8c51165
bd9ecb4
67dbe8c
1b2f6f2
5580eea
0acb0a3
8e8dc41
56ac1b2
292bc7a
4b6b362
2c0d1b7
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -46,6 +46,7 @@ option(WITH_WORKFLOW "Install python drivers used by the outer workflow" O | |
option(WITH_AMS_LIB "Install C++ library to support scientific applications" ON) | ||
option(WITH_ADIAK "Use Adiak for recording metadata" OFF) | ||
option(BUILD_SHARED_LIBS "Build using shared libraries" ON) | ||
option(EXCLUDE_STATIC_LIBS "Exclude static libs from the linking line" OFF) | ||
|
||
if (WITH_MPI) | ||
# SET(CMAKE_CXX_COMPILER "${MPI_CXX_COMPILER}" CACHE FILEPATH "CXX compiler overridden with MPI C++ wrapper") | ||
|
@@ -69,6 +70,7 @@ if (WITH_CUDA) | |
if (BUILD_SHARED_LIBS) | ||
set(CUDA_RUNTIME_LIBRARY "Shared") | ||
else() | ||
set(HDF5_USE_STATIC_LIBRARIES True) | ||
set(CUDA_RUNTIME_LIBRARY "Static") | ||
endif() | ||
|
||
|
@@ -132,14 +134,14 @@ endif() # WITH_REDIS | |
|
||
if (WITH_HDF5) | ||
if (HDF5_USE_STATIC_LIBRARIES) | ||
find_package(HDF5 NAMES hdf5 COMPONENTS C static NO_DEFAULT_PATH PATHS ${AMS_HDF5_DIR} ${AMS_HDF5_DIR}/share/cmake) | ||
list(APPEND AMS_APP_LIBRARIES ${HDF5_C_STATIC_LIBRARY}) | ||
message(STATUS "HDF5 Static Library : ${HDF5_C_STATIC_LIBRARY}") | ||
else() | ||
find_package(HDF5 NAMES hdf5 COMPONENTS C shared NO_DEFAULT_PATH PATHS ${AMS_HDF5_DIR} ${AMS_HDF5_DIR}/share/cmake) | ||
list(APPEND AMS_APP_LIBRARIES ${HDF5_C_SHARED_LIBRARY}) | ||
message(STATUS "HDF5 Shared Library : ${HDF5_C_SHARED_LIBRARY}") | ||
endif() | ||
find_package(HDF5 NAMES hdf5 COMPONENTS C static NO_DEFAULT_PATH PATHS ${AMS_HDF5_DIR} ${AMS_HDF5_DIR}/share/cmake) | ||
list(APPEND AMS_APP_LIBRARIES ${HDF5_C_STATIC_LIBRARY}) | ||
message(STATUS "HDF5 Static Library : ${HDF5_C_STATIC_LIBRARY}") | ||
else() | ||
find_package(HDF5 NAMES hdf5 COMPONENTS C shared NO_DEFAULT_PATH PATHS ${AMS_HDF5_DIR} ${AMS_HDF5_DIR}/share/cmake) | ||
list(APPEND AMS_APP_LIBRARIES ${HDF5_C_SHARED_LIBRARY}) | ||
message(STATUS "HDF5 Shared Library : ${HDF5_C_SHARED_LIBRARY}") | ||
endif() | ||
list(APPEND AMS_APP_INCLUDES ${HDF5_INCLUDE_DIR}) | ||
list(APPEND AMS_APP_DEFINES "-D__ENABLE_HDF5__") | ||
message(STATUS "HDF5 Include directories: ${HDF5_INCLUDE_DIR}") | ||
|
@@ -191,7 +193,7 @@ if (WITH_TORCH) | |
find_package(Torch REQUIRED) | ||
# This is annoying, torch populates all my cuda flags | ||
# and resets them | ||
set(CMAKE_CUDA_FLAGS "") | ||
# set(CMAKE_CUDA_FLAGS "") | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't remember why I did this in the first place. But did you maybe investigate the implications of commenting this out? |
||
set(CMAKE_CUDA_ARCHITECTURES ON) | ||
|
||
list(APPEND AMS_APP_INCLUDES "${TORCH_INCLUDE_DIRS}") | ||
|
@@ -253,6 +255,98 @@ if (WITH_PERFFLOWASPECT) | |
endif() | ||
|
||
|
||
macro(inherit_target_nostatic) | ||
set(options) | ||
set(singleValueArgs TO FROM OBJECT) | ||
set(multiValueArgs) | ||
|
||
# Parse the arguments | ||
cmake_parse_arguments(arg "${options}" "${singleValueArgs}" | ||
"${multiValueArgs}" ${ARGN} ) | ||
|
||
# Check arguments | ||
if ( NOT DEFINED arg_TO ) | ||
message( FATAL_ERROR "Must provide a TO argument to the 'blt_inherit_target' macro" ) | ||
endif() | ||
|
||
if ( NOT DEFINED arg_FROM ) | ||
message( FATAL_ERROR "Must provide a FROM argument to the 'blt_inherit_target' macro" ) | ||
endif() | ||
|
||
set(_scope INTERFACE) | ||
|
||
get_target_property(_interface_system_includes | ||
${arg_FROM} INTERFACE_SYSTEM_INCLUDE_DIRECTORIES) | ||
if ( _interface_system_includes ) | ||
target_include_directories(${arg_TO} SYSTEM ${_scope} ${_interface_system_includes}) | ||
endif() | ||
|
||
get_target_property(_interface_includes | ||
${arg_FROM} INTERFACE_INCLUDE_DIRECTORIES) | ||
if ( _interface_includes ) | ||
target_include_directories(${arg_TO} ${_scope} ${_interface_includes}) | ||
endif() | ||
|
||
get_target_property(_interface_defines | ||
${arg_FROM} INTERFACE_COMPILE_DEFINITIONS) | ||
if ( _interface_defines ) | ||
target_compile_definitions( ${arg_TO} ${_scope} ${_interface_defines}) | ||
endif() | ||
|
||
if( ${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13.0" ) | ||
get_target_property(_interface_link_options | ||
${arg_FROM} INTERFACE_LINK_OPTIONS) | ||
if ( _interface_link_options ) | ||
target_link_options( ${arg_TO} ${_scope} ${_interface_link_options}) | ||
endif() | ||
endif() | ||
|
||
get_target_property(_interface_compile_options | ||
${arg_FROM} INTERFACE_COMPILE_OPTIONS) | ||
if ( _interface_compile_options ) | ||
target_compile_options( ${arg_TO} ${_scope} ${_interface_compile_options}) | ||
endif() | ||
|
||
if ( NOT arg_OBJECT ) | ||
#get_target_property(_interface_link_directories | ||
# ${arg_FROM} INTERFACE_LINK_DIRECTORIES) | ||
#if ( _interface_link_directories ) | ||
# target_link_directories( ${arg_TO} ${_scope} ${_interface_link_directories}) | ||
#endif() | ||
|
||
#get_target_property(_interface_link_libraries | ||
# ${arg_FROM} INTERFACE_LINK_LIBRARIES) | ||
#if ( _interface_link_libraries ) | ||
# target_link_libraries( ${arg_TO} ${_scope} ${_interface_link_libraries}) | ||
#endif() | ||
endif() | ||
|
||
endmacro(inherit_target_nostatic) | ||
|
||
|
||
if (EXCLUDE_STATIC_LIBS) | ||
set(NONSTATIC_AMS_APP_INTERFACE_LIBRARIES "") | ||
set(NONSTATIC_AMS_APP_PRIVATE_LIBRARIES "") | ||
foreach (THIS_LIB ${AMS_APP_LIBRARIES}) | ||
list(APPEND NONSTATIC_AMS_APP_INTERFACE_LIBRARIES ${THIS_LIB}) | ||
if (TARGET ${THIS_LIB}) | ||
get_target_property(target_type ${THIS_LIB} TYPE) | ||
if (NOT target_type STREQUAL STATIC_LIBRARY) | ||
list(APPEND NONSTATIC_AMS_APP_PRIVATE_LIBRARIES ${THIS_LIB}) | ||
else() | ||
add_library("${THIS_LIB}::nostatic" INTERFACE IMPORTED) | ||
inherit_target_nostatic(TO "${THIS_LIB}::nostatic" FROM ${THIS_LIB}) | ||
list(APPEND NONSTATIC_AMS_APP_PRIVATE_LIBRARIES "${THIS_LIB}::nostatic") | ||
endif() | ||
else() | ||
get_filename_component(THIS_EXT ${THIS_LIB} EXT) | ||
if (NOT ".a" STREQUAL "${THIS_EXT}") | ||
list(APPEND NONSTATIC_AMS_APP_PRIVATE_LIBRARIES ${THIS_LIB}) | ||
endif() | ||
endif() | ||
endforeach() | ||
endif() | ||
|
||
Comment on lines
+297
to
+388
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Should we add a ams_macros.cmake file under cmake directory and have these macros? Not for now. Just asking. |
||
add_subdirectory(src) | ||
|
||
# ------------------------------------------------------------------------------ | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you should delete this line in the future. There is no reason we should always demand a static HDF5 if AMS is static. By deleting this you can always explicitly define it in the CLI and have better control. I prefer when possible explicit control to the user instead of implicitly defining things.