@@ -11,6 +11,13 @@ list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../cmake/)
11
11
set (CURRENT_PACKAGES_DIR "${_VCPKG_INSTALLED_DIR} /${VCPKG_TARGET_TRIPLET} " )
12
12
13
13
if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" )
14
+ # Ensure the .so files produced can be patched with install_name_tool later
15
+ set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-headerpad_max_install_names" )
16
+ set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-headerpad_max_install_names" )
17
+
18
+ # Set LDFLAGS for Python wheel builds to ensure sufficient header padding
19
+ set (WHEEL_LDFLAGS "-Wl,-headerpad_max_install_names" )
20
+
14
21
execute_process (
15
22
COMMAND brew --prefix
16
23
RESULT_VARIABLE BREW_PREFIX_RETURN
@@ -24,6 +31,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
24
31
if (NOT PKG_CONFIG_FOUND )
25
32
set (PKG_CONFIG_EXECUTABLE "${BREW_PREFIX} /pkg-config" )
26
33
endif ()
34
+ else ()
35
+ set (WHEEL_LDFLAGS "" )
27
36
endif ()
28
37
find_package (PkgConfig REQUIRED )
29
38
@@ -130,7 +139,8 @@ ExternalProject_Add(
130
139
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /cffi-prefix/setup.cfg
131
140
<SOURCE_DIR>
132
141
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
133
- COMMAND ${wheelBuildEnv_PYTHON} -m build --wheel --outdir <TMP_DIR>/dist
142
+ COMMAND ${CMAKE_COMMAND} -E env LDFLAGS=${WHEEL_LDFLAGS} -- ${wheelBuildEnv_PYTHON} -m build
143
+ --wheel --outdir <TMP_DIR>/dist
134
144
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy
135
145
<TMP_DIR>/dist/cffi-${CFFI_WHEEL_VER}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
136
146
ExternalProject_Get_Property (cffi INSTALL_DIR )
@@ -189,7 +199,8 @@ ExternalProject_Add(
189
199
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /gdal_py-prefix/setup.cfg
190
200
<SOURCE_DIR>
191
201
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
192
- COMMAND ${wheelBuildEnv_PYTHON} -m build --wheel --outdir <TMP_DIR>/dist
202
+ COMMAND ${CMAKE_COMMAND} -E env LDFLAGS=${WHEEL_LDFLAGS} -- ${wheelBuildEnv_PYTHON} -m build
203
+ --wheel --outdir <TMP_DIR>/dist
193
204
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy
194
205
<TMP_DIR>/dist/gdal-${GDAL_VERSION}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
195
206
ExternalProject_Get_Property (gdal_py INSTALL_DIR )
@@ -230,7 +241,8 @@ ExternalProject_Add(
230
241
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /psycopg2-prefix/setup.cfg
231
242
<SOURCE_DIR>
232
243
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
233
- COMMAND ${wheelBuildEnv_PYTHON} -m build --wheel --outdir <TMP_DIR>/dist
244
+ COMMAND ${CMAKE_COMMAND} -E env LDFLAGS=${WHEEL_LDFLAGS} -- ${wheelBuildEnv_PYTHON} -m build
245
+ --wheel --outdir <TMP_DIR>/dist
234
246
INSTALL_COMMAND
235
247
${CMAKE_COMMAND} -E copy <TMP_DIR>/dist/psycopg2-${PYSCOPG2_WHEEL_VER}-${Python3_WHEEL_ID}.whl
236
248
<INSTALL_DIR> )
@@ -266,8 +278,8 @@ ExternalProject_Add(
266
278
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /pygit2-prefix/setup.cfg
267
279
<SOURCE_DIR>
268
280
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl <TMP_DIR>/dist <SOURCE_DIR>/.eggs
269
- COMMAND ${CMAKE_COMMAND} -E env LIBGIT2=${CURRENT_PACKAGES_DIR} -- ${pygitWheelBuildEnv_PYTHON } -m
270
- build --wheel --no-isolation --outdir <TMP_DIR>/dist
281
+ COMMAND ${CMAKE_COMMAND} -E env LIBGIT2=${CURRENT_PACKAGES_DIR} LDFLAGS=${WHEEL_LDFLAGS } --
282
+ ${pygitWheelBuildEnv_PYTHON} -m build --wheel --no-isolation --outdir <TMP_DIR>/dist
271
283
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy
272
284
<TMP_DIR>/dist/pygit2-${PYGIT2_WHEEL_VER}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
273
285
ExternalProject_Get_Property (pygit2 INSTALL_DIR )
@@ -305,8 +317,9 @@ ExternalProject_Add(
305
317
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /pyodbc-prefix/setup.cfg
306
318
<SOURCE_DIR>
307
319
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
308
- COMMAND ${CMAKE_COMMAND} -E env --modify PATH =path_list_prepend:${ODBC_CONFIG_DIR} --
309
- ${wheelBuildEnv_PYTHON} -m build --wheel --outdir <TMP_DIR>/dist
320
+ COMMAND
321
+ ${CMAKE_COMMAND} -E env --modify PATH =path_list_prepend:${ODBC_CONFIG_DIR}
322
+ LDFLAGS=${WHEEL_LDFLAGS} -- ${wheelBuildEnv_PYTHON} -m build --wheel --outdir <TMP_DIR>/dist
310
323
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy
311
324
<TMP_DIR>/dist/pyodbc-${PYODBC_WHEEL_VER}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
312
325
ExternalProject_Get_Property (pyodbc INSTALL_DIR )
@@ -327,6 +340,7 @@ library_dirs=${BUILD_WHEEL_LIBRARY_DIRS}
327
340
" )
328
341
329
342
set (PYSQLITE3_WHEEL_VER 0.5.2 )
343
+
330
344
ExternalProject_Add (
331
345
pysqlite3
332
346
GIT_REPOSITORY https://github.com/coleifer/pysqlite3.git
@@ -338,7 +352,8 @@ ExternalProject_Add(
338
352
CONFIGURE_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_BINARY_DIR} /pysqlite3-prefix/setup.cfg
339
353
<SOURCE_DIR>
340
354
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
341
- COMMAND ${wheelBuildEnv_PYTHON} -m build --wheel --outdir <TMP_DIR>/dist
355
+ COMMAND ${CMAKE_COMMAND} -E env LDFLAGS=${WHEEL_LDFLAGS} -- ${wheelBuildEnv_PYTHON} -m build
356
+ --wheel --outdir <TMP_DIR>/dist
342
357
INSTALL_COMMAND
343
358
${CMAKE_COMMAND} -E copy
344
359
<TMP_DIR>/dist/pysqlite3-${PYSQLITE3_WHEEL_VER}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
@@ -370,9 +385,10 @@ ExternalProject_Add(
370
385
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
371
386
COMMAND
372
387
${CMAKE_COMMAND} -E env OPENSSL_LIB_DIR=${CURRENT_PACKAGES_DIR}/lib
373
- OPENSSL_INCLUDE_DIR=${CURRENT_PACKAGES_DIR}/include --modify PATH =path_list_prepend:${RUST_DIR}
374
- -- ${cryptographyWheelBuildEnv_PIP} wheel --no-binary :all: --no-build-isolation --no-deps
375
- --no-index --wheel-dir <TMP_DIR>/dist .
388
+ OPENSSL_INCLUDE_DIR=${CURRENT_PACKAGES_DIR}/include LDFLAGS=${WHEEL_LDFLAGS}
389
+ RUSTFLAGS=-C\ link-arg=-Wl,-headerpad_max_install_names --modify
390
+ PATH =path_list_prepend:${RUST_DIR} -- ${cryptographyWheelBuildEnv_PIP} wheel --no-binary :all:
391
+ --no-build-isolation --no-deps --no-index --wheel-dir <TMP_DIR>/dist .
376
392
INSTALL_COMMAND
377
393
${CMAKE_COMMAND} -E copy
378
394
<TMP_DIR>/dist/cryptography-${CRYPTOGRAPHY_WHEEL_VER}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
@@ -388,6 +404,7 @@ createvirtualenvironment(reflinkWheelBuildEnv REQUIREMENTS wheel ${CFFI_WHEEL} p
388
404
add_dependencies (reflinkWheelBuildEnv cffi )
389
405
390
406
set (REFLINK_WHEEL_VER 0.2.2 )
407
+
391
408
ExternalProject_Add (
392
409
reflink
393
410
URL https://files.pythonhosted.org/packages/63/47/b503f286378336aa6d2fd3caad10633bb79f3bc6256f1f2f9102dacb3c98/reflink-0.2.2.tar.gz
@@ -399,7 +416,8 @@ ExternalProject_Add(
399
416
BUILD_BYPRODUCTS "<SOURCE_DIR>/build"
400
417
CONFIGURE_COMMAND ""
401
418
BUILD_COMMAND ${CMAKE_COMMAND} -E rm -rf <INSTALL_DIR>/*.whl
402
- COMMAND ${reflinkWheelBuildEnv_PYTHON} -m build --wheel --no-isolation --outdir <TMP_DIR>/dist
419
+ COMMAND ${CMAKE_COMMAND} -E env LDFLAGS=${WHEEL_LDFLAGS} -- ${reflinkWheelBuildEnv_PYTHON} -m
420
+ build --wheel --no-isolation --outdir <TMP_DIR>/dist
403
421
INSTALL_COMMAND ${CMAKE_COMMAND} -E copy
404
422
<TMP_DIR>/dist/reflink-${REFLINK_WHEEL_VER}-${Python3_WHEEL_ID}.whl <INSTALL_DIR> )
405
423
ExternalProject_Get_Property (reflink INSTALL_DIR )
0 commit comments