Skip to content

Commit 86f3022

Browse files
committed
finding FFTW in the env build with apt
1 parent 2d56d0a commit 86f3022

File tree

2 files changed

+80
-26
lines changed

2 files changed

+80
-26
lines changed
Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,54 @@
1-
# Attempt to find FFTW
2-
# URL: https://www.fftw.org/
3-
# DOCS: https://cmake.org/cmake/help/latest/command/find_library.html
4-
# https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
1+
# FindFFTW.cmake — Enhanced to support apt installs, env hints, and pkg-config
52

6-
include(FindPackageHandleStandardArgs)
3+
# Try pkg-config first (if available)
4+
find_package(PkgConfig QUIET)
5+
if(PkgConfig_FOUND)
6+
pkg_check_modules(PC_FFTW QUIET fftw3)
7+
endif()
78

9+
# Build include + lib search paths
10+
set(FFTW_HINTED_INCLUDE
11+
$ENV{FFTW_INCLUDE_DIR}
12+
${PC_FFTW_INCLUDE_DIRS}
13+
/usr/include
14+
/usr/local/include
15+
)
16+
17+
set(FFTW_HINTED_LIBRARY
18+
$ENV{FFTW_LIBRARY}
19+
${PC_FFTW_LIBRARY_DIRS}
20+
/usr/lib
21+
/usr/lib64
22+
/usr/local/lib
23+
/usr/lib/x86_64-linux-gnu
24+
)
825

26+
# Locate fftw3.h and libfftw3.so
927
find_path(FFTW_INCLUDE_DIR
10-
NAMES fftw3.h
11-
PATH_SUFFIXES fftw fftw3
28+
NAMES fftw3.h
29+
HINTS ${FFTW_HINTED_INCLUDE}
1230
)
1331

1432
find_library(FFTW_LIBRARY
15-
NAMES fftw3
16-
PATH_SUFFIXES fftw fftw3
17-
NAMES_PER_DIR
33+
NAMES fftw3
34+
HINTS ${FFTW_HINTED_LIBRARY}
1835
)
1936

20-
21-
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
22-
FFTW
23-
REQUIRED_VARS
24-
FFTW_LIBRARY
25-
FFTW_INCLUDE_DIR
37+
# Required FFTW_FOUND logic
38+
include(FindPackageHandleStandardArgs)
39+
find_package_handle_standard_args(FFTW
40+
REQUIRED_VARS FFTW_LIBRARY FFTW_INCLUDE_DIR
41+
VERSION_VAR PC_FFTW_VERSION
2642
)
2743

44+
mark_as_advanced(FFTW_INCLUDE_DIR FFTW_LIBRARY)
2845

29-
if (FFTW_FOUND AND NOT TARGET FFTW::FFTW)
30-
set(FFTW_LIBRARIES "${FFTW_LIBRARY}")
31-
set(FFTW_INCLUDE_DIRS "${FFTW_INCLUDE_DIR}")
32-
33-
add_library(FFTW::FFTW UNKNOWN IMPORTED)
34-
35-
set_target_properties(FFTW::FFTW PROPERTIES
36-
IMPORTED_LOCATION "${FFTW_LIBRARIES}"
37-
INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}"
38-
)
46+
# Define an imported target (optional but modern)
47+
if(FFTW_FOUND AND NOT TARGET FFTW::FFTW)
48+
add_library(FFTW::FFTW UNKNOWN IMPORTED)
49+
set_target_properties(FFTW::FFTW PROPERTIES
50+
IMPORTED_LOCATION "${FFTW_LIBRARY}"
51+
INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIR}"
52+
)
3953
endif()
54+
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# Attempt to find FFTW
2+
# URL: https://www.fftw.org/
3+
# DOCS: https://cmake.org/cmake/help/latest/command/find_library.html
4+
# https://cmake.org/cmake/help/latest/module/FindPackageHandleStandardArgs.html
5+
6+
include(FindPackageHandleStandardArgs)
7+
8+
9+
find_path(FFTW_INCLUDE_DIR
10+
NAMES fftw3.h
11+
PATH_SUFFIXES fftw fftw3
12+
)
13+
14+
find_library(FFTW_LIBRARY
15+
NAMES fftw3
16+
PATH_SUFFIXES fftw fftw3
17+
NAMES_PER_DIR
18+
)
19+
20+
21+
FIND_PACKAGE_HANDLE_STANDARD_ARGS(
22+
FFTW
23+
REQUIRED_VARS
24+
FFTW_LIBRARY
25+
FFTW_INCLUDE_DIR
26+
)
27+
28+
29+
if (FFTW_FOUND AND NOT TARGET FFTW::FFTW)
30+
set(FFTW_LIBRARIES "${FFTW_LIBRARY}")
31+
set(FFTW_INCLUDE_DIRS "${FFTW_INCLUDE_DIR}")
32+
33+
add_library(FFTW::FFTW UNKNOWN IMPORTED)
34+
35+
set_target_properties(FFTW::FFTW PROPERTIES
36+
IMPORTED_LOCATION "${FFTW_LIBRARIES}"
37+
INTERFACE_INCLUDE_DIRECTORIES "${FFTW_INCLUDE_DIRS}"
38+
)
39+
endif()

0 commit comments

Comments
 (0)