Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/pkg
Path: blob/main/external/curl/tests/cmake/test.sh
2066 views
1
#!/bin/sh -x
2
# Copyright (C) Viktor Szakats
3
#
4
# SPDX-License-Identifier: curl
5
6
# shellcheck disable=SC2086
7
8
set -eu
9
10
cd "$(dirname "$0")"
11
12
mode="${1:-all}"; shift
13
14
cmake_consumer="${TEST_CMAKE_CONSUMER:-cmake}"
15
cmake_provider="${TEST_CMAKE_PROVIDER:-${cmake_consumer}}"
16
17
# 'modern': supports -S/-B (3.13+), --install (3.15+)
18
"${cmake_consumer}" --help | grep -q -- '--install' && cmake_consumer_modern=1
19
"${cmake_provider}" --help | grep -q -- '--install' && cmake_provider_modern=1
20
21
if [ -n "${TEST_CMAKE_GENERATOR:-}" ]; then
22
gen="${TEST_CMAKE_GENERATOR}"
23
elif [ -n "${cmake_consumer_modern:-}" ] && \
24
[ -n "${cmake_provider_modern:-}" ] && \
25
command -v ninja >/dev/null; then
26
gen='Ninja' # 3.17+
27
else
28
gen='Unix Makefiles'
29
fi
30
31
cmake_opts='-DBUILD_CURL_EXE=OFF -DBUILD_LIBCURL_DOCS=OFF -DBUILD_MISC_DOCS=OFF -DENABLE_CURL_MANUAL=OFF'
32
33
src='../..'
34
35
runresults() {
36
set +x
37
for bin in "$1"/test-consumer*; do
38
file "${bin}" || true
39
${TEST_CMAKE_EXE_RUNNER:-} "${bin}" || true
40
done
41
set -x
42
}
43
44
if [ "${mode}" = 'ExternalProject' ]; then # Broken
45
(cd "${src}"; git archive --format=tar HEAD) | gzip > source.tar.gz
46
src="${PWD}/source.tar.gz"
47
sha="$(openssl dgst -sha256 "${src}" | grep -a -i -o -E '[0-9a-f]{64}$')"
48
bldc='bld-externalproject'
49
rm -rf "${bldc}"
50
if [ -n "${cmake_consumer_modern:-}" ]; then # 3.15+
51
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
52
-DTEST_INTEGRATION_MODE=ExternalProject \
53
-DFROM_ARCHIVE="${src}" -DFROM_HASH="${sha}"
54
"${cmake_consumer}" --build "${bldc}" --verbose
55
else
56
mkdir "${bldc}"; cd "${bldc}"
57
"${cmake_consumer}" .. -G "${gen}" ${cmake_opts} ${TEST_CMAKE_FLAGS:-} "$@" \
58
-DTEST_INTEGRATION_MODE=ExternalProject \
59
-DFROM_ARCHIVE="${src}" -DFROM_HASH="${sha}"
60
VERBOSE=1 "${cmake_consumer}" --build .
61
cd ..
62
fi
63
runresults "${bldc}"
64
fi
65
66
if [ "${mode}" = 'all' ] || [ "${mode}" = 'FetchContent' ]; then # 3.14+
67
src="${PWD}/${src}"
68
bldc='bld-fetchcontent'
69
rm -rf "${bldc}"
70
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
71
-DTEST_INTEGRATION_MODE=FetchContent \
72
-DFROM_GIT_REPO="${src}" \
73
-DFROM_GIT_TAG="$(git rev-parse HEAD)"
74
"${cmake_consumer}" --build "${bldc}" --verbose
75
PATH="${bldc}/_deps/curl-build/lib:${PATH}"
76
runresults "${bldc}"
77
fi
78
79
if [ "${mode}" = 'all' ] || [ "${mode}" = 'add_subdirectory' ]; then
80
rm -rf curl
81
if ! ln -s "${src}" curl; then
82
rm -rf curl; mkdir curl; (cd "${src}"; git archive --format=tar HEAD) | tar -x --directory=curl # for MSYS2/Cygwin
83
fi
84
bldc='bld-add_subdirectory'
85
rm -rf "${bldc}"
86
if [ -n "${cmake_consumer_modern:-}" ]; then # 3.15+
87
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
88
-DTEST_INTEGRATION_MODE=add_subdirectory
89
"${cmake_consumer}" --build "${bldc}" --verbose
90
else
91
mkdir "${bldc}"; cd "${bldc}"
92
# Disable `pkg-config` for CMake <= 3.12. These versions cannot propagate
93
# library directories to the consumer project.
94
"${cmake_consumer}" .. -G "${gen}" ${cmake_opts} -DCURL_USE_PKGCONFIG=OFF ${TEST_CMAKE_FLAGS:-} "$@" \
95
-DTEST_INTEGRATION_MODE=add_subdirectory
96
VERBOSE=1 "${cmake_consumer}" --build .
97
cd ..
98
fi
99
PATH="${bldc}/curl/lib:${PATH}"
100
runresults "${bldc}"
101
fi
102
103
if [ "${mode}" = 'all' ] || [ "${mode}" = 'find_package' ]; then
104
src="${PWD}/${src}"
105
bldp='bld-curl'
106
prefix="${PWD}/${bldp}/_pkg"
107
rm -rf "${bldp}"
108
if [ -n "${cmake_provider_modern:-}" ]; then # 3.15+
109
"${cmake_provider}" -B "${bldp}" -S "${src}" -G "${gen}" ${cmake_opts} -DCMAKE_UNITY_BUILD=ON ${TEST_CMAKE_FLAGS:-} "$@" \
110
-DBUILD_SHARED_LIBS=ON \
111
-DBUILD_STATIC_LIBS=ON \
112
-DCMAKE_INSTALL_PREFIX="${prefix}"
113
"${cmake_provider}" --build "${bldp}" --verbose
114
"${cmake_provider}" --install "${bldp}"
115
else
116
mkdir "${bldp}"; cd "${bldp}"
117
"${cmake_provider}" "${src}" -G "${gen}" ${cmake_opts} -DCURL_USE_PKGCONFIG=OFF ${TEST_CMAKE_FLAGS:-} "$@" \
118
-DBUILD_SHARED_LIBS=ON \
119
-DBUILD_STATIC_LIBS=ON \
120
-DCMAKE_INSTALL_PREFIX="${prefix}"
121
VERBOSE=1 "${cmake_provider}" --build .
122
make install
123
cd ..
124
fi
125
bldc='bld-find_package'
126
rm -rf "${bldc}"
127
if [ -n "${cmake_consumer_modern:-}" ]; then # 3.15+
128
"${cmake_consumer}" -B "${bldc}" -G "${gen}" ${TEST_CMAKE_FLAGS:-} \
129
-DTEST_INTEGRATION_MODE=find_package \
130
-DCMAKE_PREFIX_PATH="${prefix}/lib/cmake/CURL"
131
"${cmake_consumer}" --build "${bldc}" --verbose
132
else
133
mkdir "${bldc}"; cd "${bldc}"
134
"${cmake_consumer}" .. -G "${gen}" ${TEST_CMAKE_FLAGS:-} \
135
-DTEST_INTEGRATION_MODE=find_package \
136
-DCMAKE_PREFIX_PATH="${prefix}/lib/cmake/CURL"
137
VERBOSE=1 "${cmake_consumer}" --build .
138
cd ..
139
fi
140
PATH="${prefix}/bin:${PATH}"
141
runresults "${bldc}"
142
fi
143
144