Skip to content

Commit 09f9fb9

Browse files
committed
build(examples): Link HeFFTe to all example targets
Add HeFFTe to link dependencies for all examples since they use OpenPFC which now links HeFFTe privately, requiring explicit linking to resolve HeFFTe symbols at link time. - Define _heffte_tgt variable with target fallback logic - Add _heffte_tgt to all example target_link_libraries
1 parent b9834f4 commit 09f9fb9

File tree

1 file changed

+33
-24
lines changed

1 file changed

+33
-24
lines changed

examples/CMakeLists.txt

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,16 @@
33

44
# FFT Backend Benchmark (requires MPI)
55
add_executable(fft_backend_benchmark fft_backend_benchmark.cpp)
6-
target_link_libraries(fft_backend_benchmark PRIVATE OpenPFC)
6+
set(_heffte_tgt "")
7+
if(TARGET Heffte::Heffte)
8+
set(_heffte_tgt Heffte::Heffte)
9+
elseif(TARGET Heffte)
10+
set(_heffte_tgt Heffte)
11+
elseif(TARGET heffte)
12+
set(_heffte_tgt heffte)
13+
endif()
14+
15+
target_link_libraries(fft_backend_benchmark PRIVATE OpenPFC ${_heffte_tgt})
716
if(OpenPFC_ENABLE_CUDA)
817
target_compile_definitions(fft_backend_benchmark PRIVATE OpenPFC_ENABLE_CUDA)
918
endif()
@@ -12,73 +21,73 @@ endif()
1221
# target_link_libraries(01_hello_world PRIVATE OpenPFC)
1322

1423
add_executable(02_domain_decomposition 02_domain_decomposition.cpp)
15-
target_link_libraries(02_domain_decomposition PRIVATE OpenPFC)
24+
target_link_libraries(02_domain_decomposition PRIVATE OpenPFC ${_heffte_tgt})
1625

1726
add_executable(03_parallel_fft 03_parallel_fft.cpp)
18-
target_link_libraries(03_parallel_fft PRIVATE OpenPFC)
27+
target_link_libraries(03_parallel_fft PRIVATE OpenPFC ${_heffte_tgt})
1928

2029
add_executable(04_diffusion_model 04_diffusion_model.cpp)
21-
target_link_libraries(04_diffusion_model PRIVATE OpenPFC)
30+
target_link_libraries(04_diffusion_model PRIVATE OpenPFC ${_heffte_tgt})
2231

2332
add_executable(05_simulator 05_simulator.cpp)
24-
target_link_libraries(05_simulator PRIVATE OpenPFC)
33+
target_link_libraries(05_simulator PRIVATE OpenPFC ${_heffte_tgt})
2534

2635
add_executable(06_multi_index 06_multi_index.cpp)
27-
target_link_libraries(06_multi_index PRIVATE OpenPFC)
36+
target_link_libraries(06_multi_index PRIVATE OpenPFC ${_heffte_tgt})
2837

2938
add_executable(07_array 07_array.cpp)
30-
target_link_libraries(07_array PRIVATE OpenPFC)
39+
target_link_libraries(07_array PRIVATE OpenPFC ${_heffte_tgt})
3140

3241
add_executable(08_discrete_fields 08_discrete_fields.cpp)
33-
target_link_libraries(08_discrete_fields PRIVATE OpenPFC)
42+
target_link_libraries(08_discrete_fields PRIVATE OpenPFC ${_heffte_tgt})
3443

3544
add_executable(09_parallel_fft_high_level 09_parallel_fft_high_level.cpp)
36-
target_link_libraries(09_parallel_fft_high_level PRIVATE OpenPFC)
45+
target_link_libraries(09_parallel_fft_high_level PRIVATE OpenPFC ${_heffte_tgt})
3746

3847
add_executable(10_ui_register_ic 10_ui_register_ic.cpp)
39-
target_link_libraries(10_ui_register_ic PRIVATE OpenPFC nlohmann_json::nlohmann_json)
48+
target_link_libraries(10_ui_register_ic PRIVATE OpenPFC nlohmann_json::nlohmann_json ${_heffte_tgt})
4049

4150
add_executable(11_write_results 11_write_results.cpp)
42-
target_link_libraries(11_write_results PRIVATE OpenPFC)
51+
target_link_libraries(11_write_results PRIVATE OpenPFC ${_heffte_tgt})
4352

4453
add_executable(12_cahn_hilliard 12_cahn_hilliard.cpp)
45-
target_link_libraries(12_cahn_hilliard PRIVATE OpenPFC nlohmann_json::nlohmann_json)
54+
target_link_libraries(12_cahn_hilliard PRIVATE OpenPFC nlohmann_json::nlohmann_json ${_heffte_tgt})
4655

4756
add_executable(fft_kspace_helpers_example fft_kspace_helpers_example.cpp)
48-
target_link_libraries(fft_kspace_helpers_example PRIVATE OpenPFC)
57+
target_link_libraries(fft_kspace_helpers_example PRIVATE OpenPFC ${_heffte_tgt})
4958

5059
add_executable(mpi_worker mpi_worker.cpp)
51-
target_link_libraries(mpi_worker PRIVATE OpenPFC)
60+
target_link_libraries(mpi_worker PRIVATE OpenPFC ${_heffte_tgt})
5261

5362
add_executable(mpi_worker_inside_class mpi_worker_inside_class.cpp)
54-
target_link_libraries(mpi_worker_inside_class PRIVATE OpenPFC)
63+
target_link_libraries(mpi_worker_inside_class PRIVATE OpenPFC ${_heffte_tgt})
5564

5665
add_executable(mpi_timers mpi_timers.cpp)
57-
target_link_libraries(mpi_timers PRIVATE OpenPFC)
66+
target_link_libraries(mpi_timers PRIVATE OpenPFC ${_heffte_tgt})
5867

5968
add_executable(time time.cpp)
60-
target_link_libraries(time PRIVATE OpenPFC)
69+
target_link_libraries(time PRIVATE OpenPFC ${_heffte_tgt})
6170

6271
add_executable(write_results write_results.cpp)
63-
target_link_libraries(write_results PRIVATE OpenPFC)
72+
target_link_libraries(write_results PRIVATE OpenPFC ${_heffte_tgt})
6473

6574
add_executable(diffusion_model_with_custom_initial_condition diffusion_model_with_custom_initial_condition.cpp)
66-
target_link_libraries(diffusion_model_with_custom_initial_condition PRIVATE OpenPFC)
75+
target_link_libraries(diffusion_model_with_custom_initial_condition PRIVATE OpenPFC ${_heffte_tgt})
6776

6877
add_executable(json_read json_read.cpp)
6978
target_link_libraries(json_read PRIVATE nlohmann_json::nlohmann_json)
7079

7180
add_executable(world_helpers_example world_helpers_example.cpp)
72-
target_link_libraries(world_helpers_example PRIVATE OpenPFC)
81+
target_link_libraries(world_helpers_example PRIVATE OpenPFC ${_heffte_tgt})
7382

7483
add_executable(14_custom_field_initializer 14_custom_field_initializer.cpp)
75-
target_link_libraries(14_custom_field_initializer PRIVATE OpenPFC)
84+
target_link_libraries(14_custom_field_initializer PRIVATE OpenPFC ${_heffte_tgt})
7685

7786
add_executable(16_strong_types_demo 16_strong_types_demo.cpp)
78-
target_link_libraries(16_strong_types_demo PRIVATE OpenPFC)
87+
target_link_libraries(16_strong_types_demo PRIVATE OpenPFC ${_heffte_tgt})
7988

8089
add_executable(17_custom_coordinate_system 17_custom_coordinate_system.cpp)
81-
target_link_libraries(17_custom_coordinate_system PRIVATE OpenPFC)
90+
target_link_libraries(17_custom_coordinate_system PRIVATE OpenPFC ${_heffte_tgt})
8291

8392
add_executable(world_strong_types_example world_strong_types_example.cpp)
84-
target_link_libraries(world_strong_types_example PRIVATE OpenPFC)
93+
target_link_libraries(world_strong_types_example PRIVATE OpenPFC ${_heffte_tgt})

0 commit comments

Comments
 (0)