xref: /aosp_15_r20/external/sandboxed-api/contrib/pffft/CMakeLists.txt (revision ec63e07ab9515d95e79c211197c445ef84cefa6a)
1*ec63e07aSXin Li# Copyright 2020 Google LLC
2*ec63e07aSXin Li#
3*ec63e07aSXin Li# Licensed under the Apache License, Version 2.0 (the "License");
4*ec63e07aSXin Li# you may not use this file except in compliance with the License.
5*ec63e07aSXin Li# You may obtain a copy of the License at
6*ec63e07aSXin Li#
7*ec63e07aSXin Li#     https://www.apache.org/licenses/LICENSE-2.0
8*ec63e07aSXin Li#
9*ec63e07aSXin Li# Unless required by applicable law or agreed to in writing, software
10*ec63e07aSXin Li# distributed under the License is distributed on an "AS IS" BASIS,
11*ec63e07aSXin Li# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*ec63e07aSXin Li# See the License for the specific language governing permissions and
13*ec63e07aSXin Li# limitations under the License.
14*ec63e07aSXin Li
15*ec63e07aSXin Licmake_minimum_required(VERSION 3.13..3.26)
16*ec63e07aSXin Li
17*ec63e07aSXin Liproject(pffft CXX C)
18*ec63e07aSXin Liinclude(CTest)
19*ec63e07aSXin Li
20*ec63e07aSXin Liset(CMAKE_CXX_STANDARD 17)
21*ec63e07aSXin Liset(CMAKE_CXX_STANDARD_REQUIRED True)
22*ec63e07aSXin Li
23*ec63e07aSXin Liif(NOT TARGET sapi::sapi)
24*ec63e07aSXin Li  set(SAPI_ROOT "../.." CACHE PATH "Path to the Sandboxed API source tree")
25*ec63e07aSXin Li  add_subdirectory("${SAPI_ROOT}"
26*ec63e07aSXin Li                   "${CMAKE_BINARY_DIR}/sandboxed-api-build"
27*ec63e07aSXin Li                   EXCLUDE_FROM_ALL)
28*ec63e07aSXin Liendif()
29*ec63e07aSXin Li
30*ec63e07aSXin Liinclude(CheckLibraryExists)
31*ec63e07aSXin Li
32*ec63e07aSXin LiFetchContent_Declare(pffft
33*ec63e07aSXin Li  GIT_REPOSITORY https://bitbucket.org/jpommier/pffft.git
34*ec63e07aSXin Li  GIT_TAG        988259a41d1522047a9420e6265a6ba8289c1654 # 2021-12-02
35*ec63e07aSXin Li)
36*ec63e07aSXin LiFetchContent_MakeAvailable(pffft)
37*ec63e07aSXin Li
38*ec63e07aSXin Liadd_library(pffft STATIC
39*ec63e07aSXin Li  "${pffft_SOURCE_DIR}/pffft.c"
40*ec63e07aSXin Li  "${pffft_SOURCE_DIR}/pffft.h"
41*ec63e07aSXin Li  "${pffft_SOURCE_DIR}/fftpack.c"
42*ec63e07aSXin Li  "${pffft_SOURCE_DIR}/fftpack.h"
43*ec63e07aSXin Li)
44*ec63e07aSXin Li
45*ec63e07aSXin Liadd_executable(pffft_main
46*ec63e07aSXin Li  "${pffft_SOURCE_DIR}/test_pffft.c"
47*ec63e07aSXin Li)
48*ec63e07aSXin Litarget_link_libraries(pffft_main PRIVATE
49*ec63e07aSXin Li  pffft
50*ec63e07aSXin Li)
51*ec63e07aSXin Li
52*ec63e07aSXin Licheck_library_exists(m sin "" _sapi_HAVE_LIBM)
53*ec63e07aSXin Liif(_sapi_HAVE_LIBM)
54*ec63e07aSXin Li  target_link_libraries(pffft PUBLIC
55*ec63e07aSXin Li    m
56*ec63e07aSXin Li  )
57*ec63e07aSXin Liendif()
58*ec63e07aSXin Li
59*ec63e07aSXin Liadd_sapi_library(pffft_sapi
60*ec63e07aSXin Li  FUNCTIONS pffft_new_setup
61*ec63e07aSXin Li            pffft_destroy_setup
62*ec63e07aSXin Li            pffft_transform
63*ec63e07aSXin Li            pffft_transform_ordered
64*ec63e07aSXin Li            pffft_zreorder
65*ec63e07aSXin Li            pffft_zconvolve_accumulate
66*ec63e07aSXin Li            pffft_aligned_malloc
67*ec63e07aSXin Li            pffft_aligned_free
68*ec63e07aSXin Li            pffft_simd_size
69*ec63e07aSXin Li            cffti
70*ec63e07aSXin Li            cfftf
71*ec63e07aSXin Li            cfftb
72*ec63e07aSXin Li            rffti
73*ec63e07aSXin Li            rfftf
74*ec63e07aSXin Li            rfftb
75*ec63e07aSXin Li            cosqi
76*ec63e07aSXin Li            cosqf
77*ec63e07aSXin Li            cosqb
78*ec63e07aSXin Li            costi
79*ec63e07aSXin Li            cost
80*ec63e07aSXin Li            sinqi
81*ec63e07aSXin Li            sinqb
82*ec63e07aSXin Li            sinqf
83*ec63e07aSXin Li            sinti
84*ec63e07aSXin Li            sint
85*ec63e07aSXin Li
86*ec63e07aSXin Li  INPUTS "${pffft_SOURCE_DIR}/pffft.h"
87*ec63e07aSXin Li         "${pffft_SOURCE_DIR}/fftpack.h"
88*ec63e07aSXin Li  LIBRARY pffft
89*ec63e07aSXin Li  LIBRARY_NAME Pffft
90*ec63e07aSXin Li
91*ec63e07aSXin Li  NAMESPACE ""
92*ec63e07aSXin Li)
93*ec63e07aSXin Liadd_library(sapi_contrib::pffft ALIAS pffft_sapi)
94*ec63e07aSXin Litarget_include_directories(pffft_sapi INTERFACE
95*ec63e07aSXin Li  "${PROJECT_BINARY_DIR}"
96*ec63e07aSXin Li  "${SAPI_SOURCE_DIR}"
97*ec63e07aSXin Li)
98*ec63e07aSXin Li
99*ec63e07aSXin Liadd_executable(pffft_sandboxed
100*ec63e07aSXin Li  main_pffft_sandboxed.cc
101*ec63e07aSXin Li)
102*ec63e07aSXin Litarget_link_libraries(pffft_sandboxed PRIVATE
103*ec63e07aSXin Li  absl::flags
104*ec63e07aSXin Li  absl::flags_parse
105*ec63e07aSXin Li  absl::log
106*ec63e07aSXin Li  absl::log_globals
107*ec63e07aSXin Li  absl::log_initialize
108*ec63e07aSXin Li  sapi_contrib::pffft
109*ec63e07aSXin Li  sapi::sapi
110*ec63e07aSXin Li)
111