-
Notifications
You must be signed in to change notification settings - Fork 190
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Adding PATCHES keyword. * Formatting fix. * Move cpm_add_patches() outside if/else scopes. * cmake-format: add PATCHES to CPMAddPackage. * Integration tests for PATCHES command. * Use get_filename_component() in place of cmake_path() for use with all cmake versions 3.14 and above. * Added an example and improved comment for cpm_add_patches.
- Loading branch information
1 parent
76ca486
commit d416d9b
Showing
11 changed files
with
226 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -31,6 +31,7 @@ parse: | |
EXCLUDE_FROM_ALL: 1 | ||
SYSTEM: 1 | ||
SOURCE_SUBDIR: 1 | ||
PATCHES: + | ||
OPTIONS: + | ||
cpmfindpackage: | ||
pargs: | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR) | ||
|
||
project(CPMExamplePatchHighway) | ||
|
||
# ---- Dependencies ---- | ||
|
||
include(../../cmake/CPM.cmake) | ||
|
||
# Google's highway Includes a SIMD sorting function that is faster than x86-simd-sort for larger | ||
# arrays. See: https://github.com/google/highway/blob/master/g3doc/quick_reference.md | ||
CPMAddPackage( | ||
NAME highway | ||
URL https://github.com/google/highway/archive/refs/tags/1.1.0.tar.gz | ||
URL_HASH SHA256=354a8b4539b588e70b98ec70844273e3f2741302c4c377bcc4e81b3d1866f7c9 | ||
PATCHES "highway.patch" # This adds SYSTEM to the includes. | ||
OPTIONS "HWY_ENABLE_EXAMPLES OFF" "HWY_ENABLE_INSTALL OFF" "HWY_ENABLE_TESTS OFF" | ||
) | ||
|
||
# ---- Executable ---- | ||
|
||
if(LINUX) | ||
# This would cause a float compare error inside the highway header code if the patch is NOT | ||
# applied. | ||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wfloat-equal") | ||
endif() | ||
|
||
add_executable(CPMExamplePatchHighway "main.cpp") | ||
target_link_libraries(CPMExamplePatchHighway hwy hwy_contrib) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
Common subdirectories: a/.bcr and b/.bcr | ||
Common subdirectories: a/.github and b/.github | ||
diff -u a/CMakeLists.txt b/CMakeLists.txt | ||
--- a/CMakeLists.txt 2024-05-21 12:50:37.738318520 -0500 | ||
+++ b/CMakeLists.txt 2024-05-21 12:49:59.914226871 -0500 | ||
@@ -350,7 +350,7 @@ | ||
target_compile_options(hwy PRIVATE ${HWY_FLAGS}) | ||
set_property(TARGET hwy PROPERTY POSITION_INDEPENDENT_CODE ON) | ||
set_target_properties(hwy PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_SOVERSION}) | ||
-target_include_directories(hwy PUBLIC | ||
+target_include_directories(hwy SYSTEM PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> | ||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) | ||
target_compile_features(hwy PUBLIC cxx_std_11) | ||
@@ -370,7 +370,7 @@ | ||
target_compile_options(hwy_contrib PRIVATE ${HWY_FLAGS}) | ||
set_property(TARGET hwy_contrib PROPERTY POSITION_INDEPENDENT_CODE ON) | ||
set_target_properties(hwy_contrib PROPERTIES VERSION ${LIBRARY_VERSION} SOVERSION ${LIBRARY_SOVERSION}) | ||
-target_include_directories(hwy_contrib PUBLIC | ||
+target_include_directories(hwy_contrib SYSTEM PUBLIC | ||
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}> | ||
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) | ||
target_compile_features(hwy_contrib PUBLIC cxx_std_11) | ||
Common subdirectories: a/cmake and b/cmake | ||
Common subdirectories: a/debian and b/debian | ||
Common subdirectories: a/docs and b/docs | ||
Common subdirectories: a/g3doc and b/g3doc | ||
Common subdirectories: a/hwy and b/hwy |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
#include <hwy/contrib/sort/vqsort.h> // hwy::VQSort() for large data sets | ||
|
||
#include <cstdint> | ||
#include <random> | ||
#include <vector> | ||
|
||
// Use hwy::VQSort to sort larger vectors | ||
inline void sort_large(std::vector<double>& v) { | ||
hwy::VQSort(v.data(), v.size(), hwy::SortAscending{}); | ||
} | ||
|
||
int main(int, char**) { | ||
std::random_device random_device; | ||
std::default_random_engine random_engine(random_device()); | ||
std::uniform_real_distribution<double> uniform_dist(0.0, 100.0); | ||
|
||
const std::size_t sz = 100000; | ||
std::vector<double> v; | ||
v.reserve(sz); | ||
for (std::size_t i = 0; i < sz; ++i) { | ||
v.push_back(uniform_dist(random_engine)); | ||
} | ||
|
||
sort_large(v); | ||
|
||
return 0; | ||
} |
13 changes: 13 additions & 0 deletions
13
test/integration/templates/using-patch-adder/lists.in.cmake
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
cmake_minimum_required(VERSION 3.14 FATAL_ERROR) | ||
|
||
project(using-patch-adder) | ||
|
||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) | ||
|
||
include("%{cpm_path}") | ||
|
||
%{packages} | ||
|
||
add_executable(using-patch-adder using-patch-adder.cpp) | ||
|
||
target_link_libraries(using-patch-adder adder) |
12 changes: 12 additions & 0 deletions
12
test/integration/templates/using-patch-adder/patches/001-test_patches_command.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
diff --git a/code/adder/adder.hpp b/code/adder/adder.hpp | ||
index fdb9324..7c2fa00 100644 | ||
--- a/code/adder/adder.hpp | ||
+++ b/code/adder/adder.hpp | ||
@@ -1,6 +1,6 @@ | ||
#pragma once | ||
|
||
-namespace adder | ||
+namespace patched | ||
{ | ||
int add(int a, int b); | ||
} |
12 changes: 12 additions & 0 deletions
12
test/integration/templates/using-patch-adder/patches/002-test_patches_command.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
diff --git a/code/adder/adder.cpp b/code/adder/adder.cpp | ||
index fc6e767..44b1197 100644 | ||
--- a/code/adder/adder.cpp | ||
+++ b/code/adder/adder.cpp | ||
@@ -1,6 +1,6 @@ | ||
#include "adder.hpp" | ||
|
||
-namespace adder | ||
+namespace patched | ||
{ | ||
int add(int a, int b) | ||
{ |
8 changes: 8 additions & 0 deletions
8
test/integration/templates/using-patch-adder/using-patch-adder.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#include <adder/adder.hpp> | ||
#include <cstdio> | ||
|
||
int main() { | ||
int sum = patched::add(5, 3); | ||
std::printf("%d\n", sum); | ||
return 0; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
require_relative './lib' | ||
|
||
# Tests using a multi-argumenet PATCHES command to fetch and modify a dependency | ||
|
||
class DownloadCommand < IntegrationTest | ||
|
||
def test_fetch_dependency_using_download_command | ||
prj = make_project from_template: 'using-patch-adder' | ||
|
||
prj.create_lists_from_default_template package: <<~PACK | ||
set(DOWNLOAD_DIR ${CMAKE_BINARY_DIR}/_deps/testpack-adder-src) | ||
CPMAddPackage( | ||
NAME testpack-adder | ||
DOWNLOAD_COMMAND git clone --depth 1 --branch v1.0.0 https://github.com/cpm-cmake/testpack-adder.git ${DOWNLOAD_DIR} | ||
OPTIONS "ADDER_BUILD_TESTS OFF" "ADDER_BUILD_EXAMPLES OFF" | ||
PATCHES | ||
patches/001-test_patches_command.patch | ||
patches/002-test_patches_command.patch | ||
) | ||
PACK | ||
|
||
# configure with unpopulated cache | ||
assert_success prj.configure | ||
assert_success prj.build | ||
end | ||
|
||
end |