@@ -459,6 +459,7 @@ set(IO_SOURCE
459
459
set (IO_ADIOS1_SEQUENTIAL_SOURCE
460
460
src/Error.cpp
461
461
src/auxiliary/Filesystem.cpp
462
+ src/auxiliary/JSON.cpp
462
463
src/ChunkInfo.cpp
463
464
src/IO/ADIOS/CommonADIOS1IOHandler.cpp
464
465
src/IO/ADIOS/ADIOS1IOHandler.cpp)
@@ -554,15 +555,34 @@ if(openPMD_HAVE_ADIOS1)
554
555
$<TARGET_PROPERTY:openPMD::thirdparty::nlohmann_json,INTERFACE_INCLUDE_DIRECTORIES >
555
556
$<TARGET_PROPERTY:openPMD::thirdparty::toml11,INTERFACE_INCLUDE_DIRECTORIES >)
556
557
558
+ # Strip all symbols from wrapped library objects, so we can link parallel
559
+ # and serial ADIOS1 (with MPI mock/stubs) at the same time.
560
+ include (CheckLinkerFlag)
561
+ # Vanilla Clang, g++, etc., e.g., on conda-forge
562
+ set (_GNU_LINKSTRIP "LINKER:SHELL:--exclude-libs,ALL" )
563
+ set (_LLVM_LINKSTRIP "LINKER:SHELL:--exclude-libs=ALL" )
564
+ check_linker_flag(CXX "${_GNU_LINKSTRIP} " SUPP_GNU_LINKSTRIP)
565
+ check_linker_flag(CXX "${_LLVM_LINKSTRIP} " SUPP_LLVM_LINKSTRIP)
566
+
557
567
set_target_properties (openPMD.ADIOS1.Serial PROPERTIES
558
568
POSITION_INDEPENDENT_CODE ON
559
569
CXX_VISIBILITY_PRESET hidden
560
570
VISIBILITY_INLINES_HIDDEN ON
561
571
)
562
572
if ("${CMAKE_SYSTEM_NAME} " MATCHES "Linux" )
563
- set_target_properties (openPMD.ADIOS1.Serial PROPERTIES
564
- LINK_FLAGS "-Wl,--exclude-libs,ALL" )
573
+ if (SUPP_GNU_LINKSTRIP)
574
+ target_link_options (openPMD.ADIOS1.Serial PRIVATE "${_GNU_LINKSTRIP} " )
575
+ elseif (SUPP_LLVM_LINKSTRIP)
576
+ target_link_options (openPMD.ADIOS1.Serial PRIVATE "${_LLVM_LINKSTRIP} " )
577
+ else ()
578
+ message (WARNING "Cannot strip serial ADIOS1 MPI mock" )
579
+ endif ()
565
580
elseif ("${CMAKE_SYSTEM_NAME} " MATCHES "Darwin" )
581
+ if (SUPP_GNU_LINKSTRIP)
582
+ target_link_options (openPMD.ADIOS1.Serial PRIVATE "${_GNU_LINKSTRIP} " )
583
+ elseif (SUPP_LLVM_LINKSTRIP)
584
+ target_link_options (openPMD.ADIOS1.Serial PRIVATE "${_LLVM_LINKSTRIP} " )
585
+ endif ()
566
586
set_target_properties (openPMD.ADIOS1.Serial PROPERTIES
567
587
XCODE_ATTRIBUTE_STRIP_STYLE "non-global"
568
588
XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING "YES"
@@ -585,9 +605,19 @@ if(openPMD_HAVE_ADIOS1)
585
605
VISIBILITY_INLINES_HIDDEN 1
586
606
)
587
607
if ("${CMAKE_SYSTEM_NAME} " MATCHES "Linux" )
588
- set_target_properties (openPMD.ADIOS1.Parallel PROPERTIES
589
- LINK_FLAGS "-Wl,--exclude-libs,ALL" )
608
+ if (SUPP_GNU_LINKSTRIP)
609
+ target_link_options (openPMD.ADIOS1.Parallel PRIVATE "${_GNU_LINKSTRIP} " )
610
+ elseif (SUPP_LLVM_LINKSTRIP)
611
+ target_link_options (openPMD.ADIOS1.Parallel PRIVATE "${_LLVM_LINKSTRIP} " )
612
+ else ()
613
+ message (WARNING "Cannot strip serial ADIOS1 MPI mock" )
614
+ endif ()
590
615
elseif ("${CMAKE_SYSTEM_NAME} " MATCHES "Darwin" )
616
+ if (SUPP_GNU_LINKSTRIP)
617
+ target_link_options (openPMD.ADIOS1.Parallel PRIVATE "${_GNU_LINKSTRIP} " )
618
+ elseif (SUPP_LLVM_LINKSTRIP)
619
+ target_link_options (openPMD.ADIOS1.Parallel PRIVATE "${_LLVM_LINKSTRIP} " )
620
+ endif ()
591
621
set_target_properties (openPMD.ADIOS1.Parallel PROPERTIES
592
622
XCODE_ATTRIBUTE_STRIP_STYLE "non-global"
593
623
XCODE_ATTRIBUTE_DEPLOYMENT_POSTPROCESSING "YES"
0 commit comments