Skip to content

Commit 49164ab

Browse files
committed
Move pffft to upstream fetch
1 parent 34dcad6 commit 49164ab

28 files changed

+111
-12452
lines changed

cmake/yup_modules.cmake

Lines changed: 84 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@
1717
#
1818
# ==============================================================================
1919

20-
#==============================================================================
21-
2220
function (_yup_module_parse_config module_header output_module_configs output_module_user_configs)
2321
set (module_configs "")
2422
set (module_user_configs "")
@@ -96,7 +94,7 @@ endfunction()
9694

9795
#==============================================================================
9896

99-
function (_yup_module_fetch_upstream module_name module_path module_upstream module_sha256 module_repository module_branch)
97+
function (_yup_module_fetch_upstream module_name module_path module_upstream module_sha256 module_repository module_branch module_submodules output_target_variable)
10098
if (NOT YUP_FETCH_UPSTREAM_MODULES)
10199
return()
102100
endif()
@@ -160,13 +158,80 @@ function (_yup_module_fetch_upstream module_name module_path module_upstream mod
160158
endif()
161159

162160
set (upstream_target_dir "${CMAKE_BINARY_DIR}/externals/${module_name}/upstream")
163-
FetchContent_Declare(
164-
"${module_name}_upstream"
165-
GIT_REPOSITORY "${module_repository}"
166-
GIT_TAG "${module_branch}"
167-
GIT_SUBMODULES_RECURSE ON
168-
SOURCE_DIR "${upstream_target_dir}")
169-
FetchContent_Populate ("${module_name}_upstream")
161+
if (module_submodules)
162+
set (module_submodules_recurse ON)
163+
else()
164+
set (module_submodules_recurse OFF)
165+
endif()
166+
167+
file (MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/externals/${module_name}")
168+
169+
file (REMOVE_RECURSE "${upstream_target_dir}")
170+
set (module_branch_value "${module_branch}")
171+
string (STRIP "${module_branch_value}" module_branch_value)
172+
string (REGEX REPLACE "^\"(.*)\"$" "\\1" module_branch_value "${module_branch_value}")
173+
string (REGEX REPLACE "^'(.*)'$" "\\1" module_branch_value "${module_branch_value}")
174+
175+
if (module_branch_value AND NOT module_branch_value STREQUAL "HEAD")
176+
string (REGEX MATCH "^[0-9a-fA-F]+$" module_branch_is_hex "${module_branch_value}")
177+
string (LENGTH "${module_branch_value}" module_branch_length)
178+
if (module_branch_is_hex AND module_branch_length GREATER_EQUAL 7 AND module_branch_length LESS_EQUAL 40)
179+
set (module_branch_is_commit ON)
180+
else()
181+
set (module_branch_is_commit "")
182+
endif()
183+
else()
184+
set (module_branch_is_commit "")
185+
endif()
186+
187+
if (module_branch_is_commit)
188+
execute_process (
189+
COMMAND git clone -q --no-checkout "${module_repository}" "${upstream_target_dir}"
190+
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals/${module_name}"
191+
RESULT_VARIABLE clone_result)
192+
if (clone_result EQUAL 0)
193+
execute_process (
194+
COMMAND git -c advice.detachedHead=false -C "${upstream_target_dir}" fetch -q --depth=1 origin "${module_branch_value}"
195+
RESULT_VARIABLE fetch_result)
196+
execute_process (
197+
COMMAND git -c advice.detachedHead=false -C "${upstream_target_dir}" checkout -q "${module_branch_value}"
198+
RESULT_VARIABLE checkout_result)
199+
if (module_submodules_recurse AND fetch_result EQUAL 0 AND checkout_result EQUAL 0)
200+
execute_process (
201+
COMMAND git -c advice.detachedHead=false -C "${upstream_target_dir}" submodule update --init --recursive --depth=1
202+
RESULT_VARIABLE submodule_result)
203+
endif()
204+
endif()
205+
else()
206+
set (clone_args git clone)
207+
if (module_submodules_recurse)
208+
list (APPEND clone_args --recurse-submodules --shallow-submodules)
209+
endif()
210+
list (APPEND clone_args -q --depth=1)
211+
if (module_branch_value AND NOT module_branch_value STREQUAL "HEAD")
212+
list (APPEND clone_args --branch "${module_branch_value}")
213+
endif()
214+
list (APPEND clone_args "${module_repository}" "${upstream_target_dir}")
215+
execute_process (
216+
COMMAND ${clone_args}
217+
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}/externals/${module_name}"
218+
RESULT_VARIABLE clone_result)
219+
endif()
220+
221+
if (module_branch_is_commit)
222+
if (NOT clone_result EQUAL 0 OR NOT fetch_result EQUAL 0 OR NOT checkout_result EQUAL 0)
223+
_yup_message (FATAL_ERROR "Failed to clone ${module_repository} at commit ${module_branch} for ${module_name}")
224+
endif()
225+
if (module_submodules_recurse AND NOT submodule_result EQUAL 0)
226+
_yup_message (FATAL_ERROR "Failed to update submodules for ${module_repository} at commit ${module_branch}")
227+
endif()
228+
else()
229+
if (NOT clone_result EQUAL 0)
230+
_yup_message (FATAL_ERROR "Failed to clone ${module_repository} for ${module_name}")
231+
endif()
232+
endif()
233+
234+
set (${output_target_variable} "" PARENT_SCOPE)
170235
endif()
171236
endfunction()
172237

@@ -485,19 +550,23 @@ function (yup_add_module module_path modules_definitions module_group)
485550
set (module_repository "${value}")
486551
elseif (${key} MATCHES "^branch$")
487552
set (module_branch "${value}")
553+
elseif (${key} MATCHES "^submodules$")
554+
_yup_boolean_property ("${value}" module_submodules)
488555
endif()
489556
endforeach()
490557

491558
_yup_set_default (module_cpp_standard "20")
492559
_yup_set_default (module_arc_enabled OFF)
493560
_yup_set_default (module_needs_python OFF)
561+
_yup_set_default (module_submodules ON)
494562
_yup_resolve_variable_paths ("${module_searchpaths}" module_searchpaths)
495563

564+
set (module_upstream_target "")
496565
if (module_upstream OR module_repository)
497566
_yup_module_upstream_has_content ("${module_name}" "${module_path}" upstream_has_content)
498567
if (NOT upstream_has_content)
499568
if (YUP_FETCH_UPSTREAM_MODULES)
500-
_yup_module_fetch_upstream ("${module_name}" "${module_path}" "${module_upstream}" "${module_sha256}" "${module_repository}" "${module_branch}")
569+
_yup_module_fetch_upstream ("${module_name}" "${module_path}" "${module_upstream}" "${module_sha256}" "${module_repository}" "${module_branch}" "${module_submodules}" module_upstream_target)
501570
else()
502571
_yup_message (WARNING "Upstream sources for ${module_name} are missing and YUP_FETCH_UPSTREAM_MODULES is OFF")
503572
endif()
@@ -702,6 +771,10 @@ function (yup_add_module module_path modules_definitions module_group)
702771
"${module_dependencies}"
703772
"${module_arc_enabled}")
704773

774+
if (module_upstream_target)
775+
add_dependencies (${module_name} "${module_upstream_target}")
776+
endif()
777+
705778
#set (${module_name}_Configs "${module_user_configs}")
706779
#set (${module_name}_Configs ${${module_name}_Configs} PARENT_SCOPE)
707780

thirdparty/pffft_library/pffft_library.c

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,15 @@
2121

2222
#include "pffft_library.h"
2323

24-
#include "upstream/pffft.c"
25-
#include "upstream/pffft_common.c"
26-
#include "upstream/pffastconv.c"
24+
#if defined(__clang__)
25+
#pragma clang diagnostic push
26+
#pragma clang diagnostic ignored "-W#pragma-messages"
27+
#endif
28+
29+
#include <pffft.c>
30+
#include <pffft_common.c>
31+
#include <pffastconv.c>
32+
33+
#if defined(__clang__)
34+
#pragma clang diagnostic pop
35+
#endif

thirdparty/pffft_library/pffft_library.h

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,18 @@
3030
name: A pretty fast FFT and fast convolution with PFFASTCONV
3131
description: A pretty fast FFT and fast convolution with PFFASTCONV.
3232
website: https://github.com/marton78/pffft
33+
repository: https://github.com/marton78/pffft.git
34+
branch: 20a601531c96b736d3e9a5e204eda768f86741d5
35+
submodules: 0
3336
license: BSD
3437
3538
defines: PFFFT_ENABLE_FLOAT=1 PFFFT_ENABLE_DOUBLE=1 PFFFT_ENABLE_NEON=1 _USE_MATH_DEFINES=1
36-
39+
3740
END_YUP_MODULE_DECLARATION
3841
3942
==============================================================================
4043
*/
4144

4245
#pragma once
4346

44-
#include "upstream/pffft.h"
47+
#include <pffft.h>

thirdparty/pffft_library/pffft_library_double.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,13 @@
2121

2222
#include "pffft_library.h"
2323

24-
#include "upstream/pffft_double.c"
24+
#if defined(__clang__)
25+
#pragma clang diagnostic push
26+
#pragma clang diagnostic ignored "-W#pragma-messages"
27+
#endif
28+
29+
#include <pffft_double.c>
30+
31+
#if defined(__clang__)
32+
#pragma clang diagnostic pop
33+
#endif

thirdparty/pffft_library/upstream/LICENSE.txt

Lines changed: 0 additions & 38 deletions
This file was deleted.

0 commit comments

Comments
 (0)