Skip to content

Commit 032ae69

Browse files
hjabirdnormallytangent
authored andcommitted
[DFT][CMake] Fix inclusion of public include directories when linking against a DFT backend library (#523)
* Using the DFT backend targets should include the public include directories.
1 parent 24125e3 commit 032ae69

File tree

7 files changed

+51
-22
lines changed

7 files changed

+51
-22
lines changed

examples/dft/compile_time_dispatching/CMakeLists.txt

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,17 @@ foreach(dft_ct_source ${DFT_CT_SOURCES})
3030
add_executable(${EXAMPLE_NAME} ${dft_ct_source}.cpp)
3131
target_include_directories(${EXAMPLE_NAME}
3232
PUBLIC ${PROJECT_SOURCE_DIR}/examples/include
33-
PUBLIC ${PROJECT_SOURCE_DIR}/include
3433
PUBLIC ${CMAKE_BINARY_DIR}/bin
3534
)
3635

37-
if(domain STREQUAL "dft" AND ENABLE_MKLCPU_BACKEND AND ENABLE_CUFFT_BACKEND)
38-
add_dependencies(${EXAMPLE_NAME} onemkl_${domain}_mklcpu onemkl_${domain}_cufft)
39-
list(APPEND ONEMKL_LIBRARIES_${domain} onemkl_${domain}_mklcpu onemkl_${domain}_cufft)
40-
endif()
36+
if(domain STREQUAL "dft" AND ENABLE_MKLCPU_BACKEND AND ENABLE_CUFFT_BACKEND)
37+
add_dependencies(${EXAMPLE_NAME} onemkl_${domain}_mklcpu onemkl_${domain}_cufft)
38+
list(APPEND ONEMKL_LIBRARIES_${domain} onemkl_${domain}_mklcpu onemkl_${domain}_cufft)
39+
endif()
4140

42-
target_link_libraries(${EXAMPLE_NAME} PUBLIC
43-
${ONEMKL_LIBRARIES_${domain}}
44-
ONEMKL::SYCL::SYCL
45-
onemkl_warnings
41+
target_link_libraries(${EXAMPLE_NAME} PUBLIC
42+
${ONEMKL_LIBRARIES_${domain}}
43+
onemkl_warnings
4644
)
4745

4846
# Register example as ctest

src/CMakeLists.txt

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,13 @@ set(ENABLE_PORTBLAS_BACKEND_NVIDIA_GPU OFF CACHE INTERNAL "")
3232
# store path to CMAKE_CURRENT_BINARY_DIR to use it later (makes FetchContent_Declare workable)
3333
set(ONEMKL_GENERATED_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR})
3434

35+
36+
set(ONEMKL_INTERFACE_INCLUDE_DIRS
37+
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
38+
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
39+
$<INSTALL_INTERFACE:include>
40+
)
41+
3542
# Build loader and backends for each domain
3643
add_custom_target(onemkl_backend_libs)
3744
foreach(domain ${TARGET_DOMAINS})
@@ -60,9 +67,7 @@ if(BUILD_SHARED_LIBS)
6067
add_dependencies(onemkl onemkl_backend_libs)
6168

6269
target_include_directories(onemkl
63-
PUBLIC $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/include>
64-
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
65-
$<INSTALL_INTERFACE:include>
70+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
6671
)
6772
set_target_properties(onemkl PROPERTIES
6873
SOVERSION ${PROJECT_VERSION_MAJOR}

src/dft/backends/cufft/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@ add_library(${LIB_OBJ} OBJECT
3232
add_dependencies(onemkl_backend_libs_dft ${LIB_NAME})
3333

3434
target_include_directories(${LIB_OBJ}
35-
PRIVATE ${PROJECT_SOURCE_DIR}/include
36-
${PROJECT_SOURCE_DIR}/src
35+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
36+
)
37+
target_include_directories(${LIB_NAME}
38+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
39+
)
40+
target_include_directories(${LIB_OBJ}
41+
PRIVATE ${PROJECT_SOURCE_DIR}/src
3742
${CMAKE_BINARY_DIR}/bin
3843
${ONEMKL_GENERATED_INCLUDE_PATH}
3944
)

src/dft/backends/mklcpu/CMakeLists.txt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,14 @@ add_library(${LIB_OBJ} OBJECT
3333
add_dependencies(onemkl_backend_libs_dft ${LIB_NAME})
3434

3535
target_include_directories(${LIB_OBJ}
36-
PRIVATE ${PROJECT_SOURCE_DIR}/include
37-
${PROJECT_SOURCE_DIR}/src
36+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
37+
)
38+
target_include_directories(${LIB_NAME}
39+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
40+
)
41+
42+
target_include_directories(${LIB_OBJ}
43+
PRIVATE ${PROJECT_SOURCE_DIR}/src
3844
${CMAKE_BINARY_DIR}/bin
3945
${ONEMKL_GENERATED_INCLUDE_PATH}
4046
)

src/dft/backends/mklgpu/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,13 @@ add_library(${LIB_OBJ} OBJECT
3333
add_dependencies(onemkl_backend_libs_dft ${LIB_NAME})
3434

3535
target_include_directories(${LIB_OBJ}
36-
PRIVATE ${PROJECT_SOURCE_DIR}/include
37-
${PROJECT_SOURCE_DIR}/src
36+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
37+
)
38+
target_include_directories(${LIB_NAME}
39+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
40+
)
41+
target_include_directories(${LIB_OBJ}
42+
PRIVATE ${PROJECT_SOURCE_DIR}/src
3843
${CMAKE_BINARY_DIR}/bin
3944
${ONEMKL_GENERATED_INCLUDE_PATH}
4045
)

src/dft/backends/portfft/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,13 @@ endif()
9191
target_link_libraries(${LIB_OBJ} PRIVATE onemkl_warnings)
9292

9393
target_include_directories(${LIB_OBJ}
94-
PRIVATE ${PROJECT_SOURCE_DIR}/include
95-
${PROJECT_SOURCE_DIR}/src
94+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
95+
)
96+
target_include_directories(${LIB_NAME}
97+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
98+
)
99+
target_include_directories(${LIB_OBJ}
100+
PRIVATE ${PROJECT_SOURCE_DIR}/src
96101
${CMAKE_BINARY_DIR}/bin
97102
)
98103

src/dft/backends/rocfft/CMakeLists.txt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,13 @@ add_library(${LIB_OBJ} OBJECT
3232
add_dependencies(onemkl_backend_libs_dft ${LIB_NAME})
3333

3434
target_include_directories(${LIB_OBJ}
35-
PRIVATE ${PROJECT_SOURCE_DIR}/include
36-
${PROJECT_SOURCE_DIR}/src
35+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
36+
)
37+
target_include_directories(${LIB_NAME}
38+
PUBLIC ${ONEMKL_INTERFACE_INCLUDE_DIRS}
39+
)
40+
target_include_directories(${LIB_OBJ}
41+
PRIVATE ${PROJECT_SOURCE_DIR}/src
3742
${CMAKE_BINARY_DIR}/bin
3843
${ONEMKL_GENERATED_INCLUDE_PATH}
3944
)

0 commit comments

Comments
 (0)