Skip to content

Commit daaeeb4

Browse files
kyngchaosnyalldawson
authored andcommitted
strip Qt rpath when bundling
1 parent a04bc86 commit daaeeb4

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

mac/cmake/1qt.cmake.in

+21-1
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ IF (NOT @OSX_HAVE_LOADERPATH@)
5656
EXECUTE_PROCESS (COMMAND ln -sfn @QGIS_CGIBIN_SUBDIR_REV@/@QGIS_LIB_SUBDIR@ "${QCGIDIR}/lib")
5757
ENDIF (NOT @OSX_HAVE_LOADERPATH@)
5858

59-
### copy files
59+
### copy files & strip qt rpath
6060

6161
# Qt frameworks
6262
# Qt5 cmake does not create overall qt prefix var, only individual lib prefixes.
@@ -67,6 +67,7 @@ EXECUTE_PROCESS (COMMAND mkdir -p "${QFWDIR}")
6767
FOREACH (QFW ${QTLISTQG})
6868
IF (NOT IS_DIRECTORY "${QFWDIR}/${QFW}.framework")
6969
COPY_FRAMEWORK("${QT_LIBRARY_DIR}" ${QFW} "${QFWDIR}")
70+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QFWDIR}/${QFW}.framework/${QFW}")
7071
ENDIF ()
7172
ENDFOREACH (QFW)
7273

@@ -76,12 +77,14 @@ EXECUTE_PROCESS (COMMAND mkdir -p "${QPLUGDIR}/../imageformats")
7677
FOREACH (QI qgif;qico;qjpeg;qsvg;qtiff)
7778
IF (NOT EXISTS "${QPLUGDIR}/../imageformats/lib${QI}.dylib")
7879
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QT_PLUGINS_DIR@/imageformats/lib${QI}.dylib" "${QPLUGDIR}/../imageformats/lib${QI}.dylib")
80+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../imageformats/lib${QI}.dylib")
7981
ENDIF ()
8082
ENDFOREACH (QI)
8183
EXECUTE_PROCESS (COMMAND mkdir -p "${QPLUGDIR}/../platforms")
8284
FOREACH (QTP cocoa;minimal;offscreen)
8385
IF (NOT EXISTS "${QPLUGDIR}/../platforms/libq${QTP}.dylib")
8486
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QT_PLUGINS_DIR@/platforms/libq${QTP}.dylib" "${QPLUGDIR}/../platforms/libq${QTP}.dylib")
87+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../platforms/libq${QTP}.dylib")
8588
ENDIF ()
8689
ENDFOREACH (QTP)
8790
EXECUTE_PROCESS (COMMAND mkdir -p "${QPLUGDIR}/../sqldrivers")
@@ -91,11 +94,13 @@ IF (@WITH_QSPATIALITE@)
9194
LIST(APPEND QTLISTSQL spatialite)
9295
IF (EXISTS "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
9396
EXECUTE_PROCESS (COMMAND ${CMAKE_COMMAND} -E remove "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
97+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
9498
ENDIF ()
9599
ENDIF ()
96100
FOREACH (QSL ${QTLISTSQL})
97101
IF (NOT EXISTS "${QPLUGDIR}/../sqldrivers/libqsql${QSL}.dylib" AND EXISTS "@QT_PLUGINS_DIR@/sqldrivers/libqsql${QSL}.dylib")
98102
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QT_PLUGINS_DIR@/sqldrivers/libqsql${QSL}.dylib" "${QPLUGDIR}/../sqldrivers/libqsql${QSL}.dylib")
103+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../sqldrivers/libqsql${QSL}.dylib")
99104
ENDIF ()
100105
ENDFOREACH (QSL)
101106
IF (NOT @WITH_QSPATIALITE@ AND EXISTS "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
@@ -104,10 +109,12 @@ ENDIF ()
104109
EXECUTE_PROCESS (COMMAND mkdir -p "${QPLUGDIR}/../iconengines")
105110
IF (NOT EXISTS "${QPLUGDIR}/../iconengines/libqsvgicon.dylib")
106111
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QT_PLUGINS_DIR@/iconengines/libqsvgicon.dylib" "${QPLUGDIR}/../iconengines/libqsvgicon.dylib")
112+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../iconengines/libqsvgicon.dylib")
107113
ENDIF ()
108114
EXECUTE_PROCESS (COMMAND mkdir -p "${QPLUGDIR}/../styles")
109115
IF (NOT EXISTS "${QPLUGDIR}/../styles/libqmacstyle.dylib")
110116
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QT_PLUGINS_DIR@/styles/libqmacstyle.dylib" "${QPLUGDIR}/../styles/libqmacstyle.dylib")
117+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../styles/libqmacstyle.dylib")
111118
ENDIF ()
112119

113120
# Qwt
@@ -119,6 +126,7 @@ IF (QWT_ISLIB)
119126
MESSAGE (STATUS "Copying Qwt and updating library paths...")
120127
IF (NOT EXISTS "${QLIBDIR}/libqwt.dylib")
121128
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QWT_LIBRARY@" "${QLIBDIR}/libqwt.dylib")
129+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QLIBDIR}/libqwt.dylib")
122130
ENDIF ()
123131
GET_INSTALL_NAME ("@QWT_LIBRARY@" "libqwt" QWT_CHG)
124132
IF (QWT_CHG)
@@ -130,6 +138,7 @@ ELSEIF (QWT_ISFW AND EXISTS "@QWT_LIBRARY@")
130138
STRING(REGEX REPLACE "/qwt.framework.*" "" QWT_PARENT "@QWT_LIBRARY@")
131139
IF (NOT IS_DIRECTORY "${QFWDIR}/qwt.framework")
132140
COPY_FRAMEWORK("${QWT_PARENT}" "qwt" "${QFWDIR}")
141+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QFWDIR}/qwt.framework/qwt")
133142
ENDIF ()
134143
GET_INSTALL_NAME ("${QWT_PARENT}/qwt.framework/qwt" "qwt.framework" QWT_CHG)
135144
IF (QWT_CHG)
@@ -149,6 +158,7 @@ IF (@WITH_DESKTOP@)
149158
MESSAGE (STATUS "Copying QwtPolar and updating library paths...")
150159
IF (NOT EXISTS "${QLIBDIR}/libqwtpolar.dylib")
151160
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QWT_LIBRARY@" "${QLIBDIR}/libqwtpolar.dylib")
161+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QLIBDIR}/libqwtpolar.dylib")
152162
ENDIF ()
153163
GET_INSTALL_NAME ("@QWTPOLAR_LIBRARY@" "libqwtpolar" QWTP_CHG)
154164
IF (QWTP_CHG)
@@ -169,6 +179,7 @@ IF (@WITH_DESKTOP@)
169179
STRING(REGEX REPLACE "/qwtpolar.framework.*" "" QWTP_PARENT "@QWTPOLAR_LIBRARY@")
170180
IF (NOT IS_DIRECTORY "${QFWDIR}/qwtpolar.framework")
171181
COPY_FRAMEWORK("${QWTP_PARENT}" "qwtpolar" "${QFWDIR}")
182+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QFWDIR}/qwtpolar.framework/qwtpolar")
172183
ENDIF ()
173184
GET_INSTALL_NAME ("${QWTP_PARENT}/qwtpolar.framework/qwtpolar" "qwtpolar.framework" QWTP_CHG)
174185
IF (QWTP_CHG)
@@ -197,6 +208,7 @@ IF (ISLIB)
197208
SET (QCA_CHG_TO "${ATLOADER}/@QGIS_PLUGIN_SUBDIR_REV@/${QGIS_LIB_SUBDIR}/libqca.dylib")
198209
IF (NOT EXISTS "${QLIBDIR}/libqca.dylib")
199210
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QCA_LIBRARY@" "${QLIBDIR}/libqca.dylib")
211+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QLIBDIR}/libqca.dylib")
200212
ENDIF ()
201213
GET_INSTALL_NAME ("@QCA_LIBRARY@" "libqca" QCA_CHG)
202214
IF (QCA_CHG)
@@ -220,6 +232,7 @@ ELSEIF (ISFW AND EXISTS "@QCA_LIBRARY@")
220232
IF (NOT IS_DIRECTORY "${QFWDIR}/${_qca_libname}.framework")
221233
STRING(REGEX REPLACE "/${_qca_libname}.framework.*" "" QCA_PARENT "@QCA_LIBRARY@")
222234
COPY_FRAMEWORK("${QCA_PARENT}" "${_qca_libname}" "${QFWDIR}")
235+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QFWDIR}/${_qca_libname}.framework/${_qca_libname}")
223236
ENDIF ()
224237
GET_INSTALL_NAME ("${QCA_LIBRARY}" "${_qca_libname}" QCA_CHG)
225238
IF (QCA_CHG)
@@ -234,6 +247,7 @@ MESSAGE (STATUS "Updating QCA plugins with QCA library path in ${QCA_PLUGIN_DIR}
234247
SET(QCA_PLUGINS logger ossl softstore)
235248
FOREACH (qca_plugin ${QCA_PLUGINS})
236249
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${QCA_PLUGIN_DIR}/crypto/libqca-${qca_plugin}.dylib" "${QPLUGDIR}/../crypto/")
250+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QCA_PLUGIN_DIR}/crypto/libqca-${qca_plugin}.dylib")
237251
IF (QCA_CHG)
238252
INSTALLNAMETOOL_CHANGE ("${QCA_CHG}" "${QCA_CHG_TO}" "${QPLUGDIR}/../crypto/libqca-${qca_plugin}.dylib")
239253
ENDIF ()
@@ -243,6 +257,7 @@ ENDFOREACH ()
243257
# linked to qca and qgis_core frameworks (see also 2lib.cmake.in)
244258
IF (@WITH_QSPATIALITE@ AND EXISTS "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
245259
# qca.framework
260+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
246261
INSTALLNAMETOOL_CHANGE ("${QCA_CHG}" "${QCA_CHG_TO}" "${QPLUGDIR}/../sqldrivers/libqsqlspatialite.dylib")
247262
# qgis_core.framework
248263
GET_INSTALL_NAME ("@QGIS_OUTPUT_DIRECTORY@/lib/qgis_core.framework/qgis_core" qgis_core.framework QGCORE)
@@ -260,6 +275,7 @@ ENDIF ()
260275
IF (QSCI_LIB)
261276
MESSAGE (STATUS "Copying QScintilla2 library and updating library paths...")
262277
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QSCINTILLA_LIBRARY@" "${QLIBDIR}/${QSCI_LIB}.dylib")
278+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QLIBDIR}/${QSCI_LIB}.dylib")
263279
GET_INSTALL_NAME ("@QSCINTILLA_LIBRARY@" "${QSCI_LIB}" QSCI_CHG)
264280
IF (QSCI_CHG)
265281
UPDATEQGISPATHS (${QSCI_CHG} ${QSCI_LIB}.dylib)
@@ -271,6 +287,7 @@ ENDIF ()
271287
IF (@QTKEYCHAIN_LIBRARY@ MATCHES ".*libqt5keychain.dylib")
272288
MESSAGE (STATUS "Copying QtKeychain library and updating library paths...")
273289
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "@QTKEYCHAIN_LIBRARY@" "${QLIBDIR}/libqt5keychain.dylib")
290+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QLIBDIR}/libqt5keychain.dylib")
274291
GET_INSTALL_NAME ("@QTKEYCHAIN_LIBRARY@" "libqt5keychain" QTKEY_CHG)
275292
IF (QTKEY_CHG)
276293
UPDATEQGISPATHS (${QTKEY_CHG} libqt5keychain.dylib)
@@ -294,8 +311,10 @@ IF (SIPMODDIR)
294311
# MYMESSAGE ("ditto ${QARCHS} \"${SIPMODDIR}/sip.so\" \"${QGISPYDIR}/\"")
295312
IF (${SIPMODDIR} MATCHES ".*PyQt5.*")
296313
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${SIPMODDIR}/sip.so" "${QGISPYDIR}/PyQt5/")
314+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QGISPYDIR}/PyQt5/sip.so")
297315
ELSE ()
298316
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${SIPMODDIR}/sip.so" "${QGISPYDIR}/")
317+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QGISPYDIR}/sip.so")
299318
ENDIF ()
300319
EXECUTE_PROCESS (COMMAND cp -fp "${SIPMODDIR}/sipconfig.py" "${QGISPYDIR}/")
301320
ENDIF ()
@@ -316,6 +335,7 @@ FOREACH (PQ ${PYQTLIST})
316335
IF (NOT EXISTS "${QGISPYDIR}/${MODSUBPATH}")
317336
# MESSAGE (STATUS "ditto ${QARCHS} \"${PYQT5MOD}\" \"${QGISPYDIR}/${MODSUBPATH}\"")
318337
EXECUTE_PROCESS (COMMAND ditto ${QARCHS} "${MODDIR}/${MODSUBPATH}" "${QGISPYDIR}/${MODSUBPATH}")
338+
EXECUTE_PROCESS (COMMAND install_name_tool -delete_rpath "@QT_LIBRARY_DIR@" "${QGISPYDIR}/${MODSUBPATH}")
319339
IF (EXISTS "${MODDIR}/${MODPYI}")
320340
EXECUTE_PROCESS (COMMAND ditto "${MODDIR}/${MODPYI}" "${QGISPYDIR}/${MODPYI}")
321341
ENDIF ()

0 commit comments

Comments
 (0)