1 |
commit: 08ad139374c65516481275579264319c74b4afcb |
2 |
Author: Michał Górny <mgorny <AT> gentoo <DOT> org> |
3 |
AuthorDate: Sun Aug 28 14:45:49 2016 +0000 |
4 |
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org> |
5 |
CommitDate: Sun Aug 28 16:19:24 2016 +0000 |
6 |
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=08ad1393 |
7 |
|
8 |
dev-util/cmake: Backport find_library() lib32 fix, #338492 |
9 |
|
10 |
dev-util/cmake/cmake-3.6.1-r1.ebuild | 199 +++++++++ |
11 |
.../files/cmake-3.6.1-find_library-lib32.patch | 476 +++++++++++++++++++++ |
12 |
2 files changed, 675 insertions(+) |
13 |
|
14 |
diff --git a/dev-util/cmake/cmake-3.6.1-r1.ebuild b/dev-util/cmake/cmake-3.6.1-r1.ebuild |
15 |
new file mode 100644 |
16 |
index 00000000..aded1dc |
17 |
--- /dev/null |
18 |
+++ b/dev-util/cmake/cmake-3.6.1-r1.ebuild |
19 |
@@ -0,0 +1,199 @@ |
20 |
+# Copyright 1999-2016 Gentoo Foundation |
21 |
+# Distributed under the terms of the GNU General Public License v2 |
22 |
+# $Id$ |
23 |
+ |
24 |
+EAPI=6 |
25 |
+ |
26 |
+CMAKE_REMOVE_MODULES="no" |
27 |
+inherit bash-completion-r1 elisp-common toolchain-funcs eutils versionator cmake-utils virtualx |
28 |
+ |
29 |
+MY_P="${P/_/-}" |
30 |
+ |
31 |
+DESCRIPTION="Cross platform Make" |
32 |
+HOMEPAGE="http://www.cmake.org/" |
33 |
+SRC_URI="http://www.cmake.org/files/v$(get_version_component_range 1-2)/${MY_P}.tar.gz" |
34 |
+ |
35 |
+LICENSE="CMake" |
36 |
+SLOT="0" |
37 |
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd ~hppa-hpux ~ia64-hpux ~x86-interix ~amd64-linux ~arm-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" |
38 |
+IUSE="doc emacs system-jsoncpp ncurses qt4 qt5" |
39 |
+ |
40 |
+RDEPEND=" |
41 |
+ >=app-arch/libarchive-3.0.0:= |
42 |
+ >=dev-libs/expat-2.0.1 |
43 |
+ >=net-misc/curl-7.21.5[ssl] |
44 |
+ sys-libs/zlib |
45 |
+ virtual/pkgconfig |
46 |
+ emacs? ( virtual/emacs ) |
47 |
+ ncurses? ( sys-libs/ncurses:0= ) |
48 |
+ qt4? ( |
49 |
+ dev-qt/qtcore:4 |
50 |
+ dev-qt/qtgui:4 |
51 |
+ ) |
52 |
+ qt5? ( |
53 |
+ dev-qt/qtcore:5 |
54 |
+ dev-qt/qtgui:5 |
55 |
+ dev-qt/qtwidgets:5 |
56 |
+ ) |
57 |
+ system-jsoncpp? ( >=dev-libs/jsoncpp-0.6.0_rc2:0= ) |
58 |
+" |
59 |
+DEPEND="${RDEPEND} |
60 |
+ doc? ( dev-python/sphinx ) |
61 |
+" |
62 |
+ |
63 |
+S="${WORKDIR}/${MY_P}" |
64 |
+ |
65 |
+SITEFILE="50${PN}-gentoo.el" |
66 |
+ |
67 |
+CMAKE_BINARY="${S}/Bootstrap.cmk/cmake" |
68 |
+ |
69 |
+PATCHES=( |
70 |
+ # prefix |
71 |
+ "${FILESDIR}"/${PN}-3.4.0_rc1-darwin-bundle.patch |
72 |
+ "${FILESDIR}"/${PN}-3.0.0-prefix-dirs.patch |
73 |
+ "${FILESDIR}"/${PN}-3.1.0-darwin-isysroot.patch |
74 |
+ |
75 |
+ # handle gentoo packaging in find modules |
76 |
+ "${FILESDIR}"/${PN}-2.8.12.1-FindImageMagick.patch |
77 |
+ "${FILESDIR}"/${PN}-3.0.0-FindBLAS.patch |
78 |
+ "${FILESDIR}"/${PN}-3.0.0-FindBoost-python.patch |
79 |
+ "${FILESDIR}"/${PN}-3.0.2-FindLAPACK.patch |
80 |
+ "${FILESDIR}"/${PN}-3.5.2-FindQt4.patch |
81 |
+ |
82 |
+ # respect python eclasses |
83 |
+ "${FILESDIR}"/${PN}-2.8.10.2-FindPythonLibs.patch |
84 |
+ "${FILESDIR}"/${PN}-3.1.0-FindPythonInterp.patch |
85 |
+ |
86 |
+ # upstream fixes (can usually be removed with a version bump) |
87 |
+ "${FILESDIR}"/${PN}-3.6.1-find_library-lib32.patch |
88 |
+) |
89 |
+ |
90 |
+cmake_src_bootstrap() { |
91 |
+ # Cleanup args to extract only JOBS. |
92 |
+ # Because bootstrap does not know anything else. |
93 |
+ echo ${MAKEOPTS} | egrep -o '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' > /dev/null |
94 |
+ if [ $? -eq 0 ]; then |
95 |
+ par_arg=$(echo ${MAKEOPTS} | egrep -o '(\-j|\-\-jobs)(=?|[[:space:]]*)[[:digit:]]+' | tail -n1 | egrep -o '[[:digit:]]+') |
96 |
+ par_arg="--parallel=${par_arg}" |
97 |
+ else |
98 |
+ par_arg="--parallel=1" |
99 |
+ fi |
100 |
+ |
101 |
+ # execinfo.h on Solaris isn't quite what it is on Darwin |
102 |
+ if [[ ${CHOST} == *-solaris* ]] ; then |
103 |
+ sed -i -e 's/execinfo\.h/blablabla.h/' Source/kwsys/CMakeLists.txt || die |
104 |
+ fi |
105 |
+ |
106 |
+ tc-export CC CXX LD |
107 |
+ |
108 |
+ # bootstrap script isn't exactly /bin/sh compatible |
109 |
+ ${CONFIG_SHELL:-sh} ./bootstrap \ |
110 |
+ --prefix="${T}/cmakestrap/" \ |
111 |
+ ${par_arg} \ |
112 |
+ || die "Bootstrap failed" |
113 |
+} |
114 |
+ |
115 |
+cmake_src_test() { |
116 |
+ # fix OutDir and SelectLibraryConfigurations tests |
117 |
+ # these are altered thanks to our eclass |
118 |
+ sed -i -e 's:#IGNORE ::g' \ |
119 |
+ "${S}"/Tests/{OutDir,CMakeOnly/SelectLibraryConfigurations}/CMakeLists.txt \ |
120 |
+ || die |
121 |
+ |
122 |
+ pushd "${BUILD_DIR}" > /dev/null |
123 |
+ |
124 |
+ local ctestargs |
125 |
+ [[ -n ${TEST_VERBOSE} ]] && ctestargs="--extra-verbose --output-on-failure" |
126 |
+ |
127 |
+ # Excluded tests: |
128 |
+ # BootstrapTest: we actualy bootstrap it every time so why test it. |
129 |
+ # BundleUtilities: bundle creation broken |
130 |
+ # CTest.updatecvs: which fails to commit as root |
131 |
+ # Fortran: requires fortran |
132 |
+ # Qt4Deploy, which tries to break sandbox and ignores prefix |
133 |
+ # TestUpload, which requires network access |
134 |
+ "${BUILD_DIR}"/bin/ctest ${ctestargs} \ |
135 |
+ -E "(BootstrapTest|BundleUtilities|CTest.UpdateCVS|Fortran|Qt4Deploy|TestUpload)" \ |
136 |
+ || die "Tests failed" |
137 |
+ |
138 |
+ popd > /dev/null |
139 |
+} |
140 |
+ |
141 |
+src_prepare() { |
142 |
+ cmake-utils_src_prepare |
143 |
+ |
144 |
+ # disable running of cmake in boostrap command |
145 |
+ sed -i \ |
146 |
+ -e '/"${cmake_bootstrap_dir}\/cmake"/s/^/#DONOTRUN /' \ |
147 |
+ bootstrap || die "sed failed" |
148 |
+ |
149 |
+ # Add gcc libs to the default link paths |
150 |
+ sed -i \ |
151 |
+ -e "s|@GENTOO_PORTAGE_GCCLIBDIR@|${EPREFIX}/usr/${CHOST}/lib/|g" \ |
152 |
+ -e "s|@GENTOO_PORTAGE_EPREFIX@|${EPREFIX}/|g" \ |
153 |
+ Modules/Platform/{UnixPaths,Darwin}.cmake || die "sed failed" |
154 |
+ |
155 |
+ cmake_src_bootstrap |
156 |
+} |
157 |
+ |
158 |
+src_configure() { |
159 |
+ local mycmakeargs=( |
160 |
+ -DCMAKE_USE_SYSTEM_LIBRARIES=ON |
161 |
+ -DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=$(usex system-jsoncpp) |
162 |
+ -DCMAKE_INSTALL_PREFIX="${EPREFIX}"/usr |
163 |
+ -DCMAKE_DOC_DIR=/share/doc/${PF} |
164 |
+ -DCMAKE_MAN_DIR=/share/man |
165 |
+ -DCMAKE_DATA_DIR=/share/${PN} |
166 |
+ -DSPHINX_MAN=$(usex doc) |
167 |
+ -DSPHINX_HTML=$(usex doc) |
168 |
+ -DBUILD_CursesDialog="$(usex ncurses)" |
169 |
+ ) |
170 |
+ |
171 |
+ if use qt4 || use qt5 ; then |
172 |
+ mycmakeargs+=( |
173 |
+ -DBUILD_QtDialog=ON |
174 |
+ $(cmake-utils_use_find_package qt5 Qt5Widgets) |
175 |
+ ) |
176 |
+ fi |
177 |
+ |
178 |
+ cmake-utils_src_configure |
179 |
+} |
180 |
+ |
181 |
+src_compile() { |
182 |
+ cmake-utils_src_compile |
183 |
+ use emacs && elisp-compile Auxiliary/cmake-mode.el |
184 |
+} |
185 |
+ |
186 |
+src_test() { |
187 |
+ virtx cmake_src_test |
188 |
+} |
189 |
+ |
190 |
+src_install() { |
191 |
+ cmake-utils_src_install |
192 |
+ |
193 |
+ if use emacs; then |
194 |
+ elisp-install ${PN} Auxiliary/cmake-mode.el Auxiliary/cmake-mode.elc |
195 |
+ elisp-site-file-install "${FILESDIR}/${SITEFILE}" |
196 |
+ fi |
197 |
+ |
198 |
+ insinto /usr/share/vim/vimfiles/syntax |
199 |
+ doins Auxiliary/cmake-syntax.vim |
200 |
+ |
201 |
+ insinto /usr/share/vim/vimfiles/indent |
202 |
+ doins Auxiliary/cmake-indent.vim |
203 |
+ |
204 |
+ insinto /usr/share/vim/vimfiles/ftdetect |
205 |
+ doins "${FILESDIR}/${PN}.vim" |
206 |
+ |
207 |
+ dobashcomp Auxiliary/bash-completion/{${PN},ctest,cpack} |
208 |
+ |
209 |
+ rm -rf "${ED}"/usr/share/cmake/{completions,editors} || die |
210 |
+} |
211 |
+ |
212 |
+pkg_postinst() { |
213 |
+ use emacs && elisp-site-regen |
214 |
+} |
215 |
+ |
216 |
+pkg_postrm() { |
217 |
+ use emacs && elisp-site-regen |
218 |
+} |
219 |
|
220 |
diff --git a/dev-util/cmake/files/cmake-3.6.1-find_library-lib32.patch b/dev-util/cmake/files/cmake-3.6.1-find_library-lib32.patch |
221 |
new file mode 100644 |
222 |
index 00000000..e02faa2 |
223 |
--- /dev/null |
224 |
+++ b/dev-util/cmake/files/cmake-3.6.1-find_library-lib32.patch |
225 |
@@ -0,0 +1,476 @@ |
226 |
+From 896ad251de49f167f4ce3cbbcf9a6cce85a16681 Mon Sep 17 00:00:00 2001 |
227 |
+From: Daniel Scharrer <daniel@×××××××××.org> |
228 |
+Date: Fri, 10 Jun 2016 16:11:18 +0200 |
229 |
+Subject: [PATCH] Teach find_library and find_package to search lib32 paths |
230 |
+ (#11260) |
231 |
+ |
232 |
+Add a ``FIND_LIBRARY_USE_LIB32_PATHS`` global property analogous to the |
233 |
+``FIND_LIBRARY_USE_LIB64_PATHS`` property. This helps find commands on |
234 |
+multilib systems that use ``lib32`` directories and either do not have |
235 |
+``lib`` symlinks or point ``lib`` to ``lib64``. |
236 |
+--- |
237 |
+ Help/command/find_library.rst | 7 +++++++ |
238 |
+ Help/manual/cmake-properties.7.rst | 1 + |
239 |
+ Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst | 10 ++++++++++ |
240 |
+ Help/release/dev/find-lib32.rst | 7 +++++++ |
241 |
+ Modules/FindPkgConfig.cmake | 8 ++++++-- |
242 |
+ Modules/Platform/Linux.cmake | 3 ++- |
243 |
+ Modules/Platform/OpenBSD.cmake | 1 + |
244 |
+ Modules/Platform/UnixPaths.cmake | 3 ++- |
245 |
+ Source/cmFindLibraryCommand.cxx | 9 ++++----- |
246 |
+ Source/cmFindPackageCommand.cxx | 11 +++++++++++ |
247 |
+ Source/cmFindPackageCommand.h | 1 + |
248 |
+ Source/cmMakefile.cxx | 8 ++++++++ |
249 |
+ Source/cmMakefile.h | 3 +++ |
250 |
+ Tests/CMakeOnly/find_library/CMakeLists.txt | 7 +++++++ |
251 |
+ Tests/CMakeOnly/find_library/lib/32/libtest5.a | 0 |
252 |
+ Tests/CMakeOnly/find_library/lib/A/lib32/libtest3.a | 0 |
253 |
+ Tests/CMakeOnly/find_library/lib32/A/lib/libtest2.a | 0 |
254 |
+ Tests/CMakeOnly/find_library/lib32/A/lib32/libtest4.a | 0 |
255 |
+ Tests/CMakeOnly/find_library/lib32/A/libtest4.a | 0 |
256 |
+ Tests/CMakeOnly/find_library/lib32/libtest4.a | 0 |
257 |
+ .../FindPkgConfig/FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake | 11 ++++++++--- |
258 |
+ .../FindPkgConfig/FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake | 11 ++++++++--- |
259 |
+ .../FindPkgConfig/FindPkgConfig_NO_PKGCONFIG_PATH.cmake | 3 --- |
260 |
+ .../RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH.cmake | 11 ++++++++--- |
261 |
+ ...ndPkgConfig_PKGCONFIG_PATH_NO_CMAKE_ENVIRONMENT_PATH.cmake | 11 ++++++++--- |
262 |
+ .../FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_PATH.cmake | 11 ++++++++--- |
263 |
+ .../FindPkgConfig/pc-bar/lib32/pkgconfig/.placeholder | 0 |
264 |
+ .../FindPkgConfig/pc-foo/lib32/pkgconfig/.placeholder | 0 |
265 |
+ 28 files changed, 110 insertions(+), 27 deletions(-) |
266 |
+ create mode 100644 Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst |
267 |
+ create mode 100644 Help/release/dev/find-lib32.rst |
268 |
+ create mode 100644 Tests/CMakeOnly/find_library/lib/32/libtest5.a |
269 |
+ create mode 100644 Tests/CMakeOnly/find_library/lib/A/lib32/libtest3.a |
270 |
+ create mode 100644 Tests/CMakeOnly/find_library/lib32/A/lib/libtest2.a |
271 |
+ create mode 100644 Tests/CMakeOnly/find_library/lib32/A/lib32/libtest4.a |
272 |
+ create mode 100644 Tests/CMakeOnly/find_library/lib32/A/libtest4.a |
273 |
+ create mode 100644 Tests/CMakeOnly/find_library/lib32/libtest4.a |
274 |
+ create mode 100644 Tests/RunCMake/FindPkgConfig/pc-bar/lib32/pkgconfig/.placeholder |
275 |
+ create mode 100644 Tests/RunCMake/FindPkgConfig/pc-foo/lib32/pkgconfig/.placeholder |
276 |
+ |
277 |
+diff --git a/Help/command/find_library.rst b/Help/command/find_library.rst |
278 |
+index 31e6ec0..1eb50f7 100644 |
279 |
+--- a/Help/command/find_library.rst |
280 |
++++ b/Help/command/find_library.rst |
281 |
+@@ -49,6 +49,13 @@ path to the framework ``<fullPath>/A.framework``. When a full path to a |
282 |
+ framework is used as a library, CMake will use a ``-framework A``, and a |
283 |
+ ``-F<fullPath>`` to link the framework to the target. |
284 |
+ |
285 |
++If the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global property is set |
286 |
++all search paths will be tested as normal, with ``32/`` appended, and |
287 |
++with all matches of ``lib/`` replaced with ``lib32/``. This property is |
288 |
++automatically set for the platforms that are known to need it if at |
289 |
++least one of the languages supported by the :command:`project` command |
290 |
++is enabled. |
291 |
++ |
292 |
+ If the :prop_gbl:`FIND_LIBRARY_USE_LIB64_PATHS` global property is set |
293 |
+ all search paths will be tested as normal, with ``64/`` appended, and |
294 |
+ with all matches of ``lib/`` replaced with ``lib64/``. This property is |
295 |
+diff --git a/Help/manual/cmake-properties.7.rst b/Help/manual/cmake-properties.7.rst |
296 |
+index 3403dcd..3574b7f 100644 |
297 |
+--- a/Help/manual/cmake-properties.7.rst |
298 |
++++ b/Help/manual/cmake-properties.7.rst |
299 |
+@@ -24,6 +24,7 @@ Properties of Global Scope |
300 |
+ /prop_gbl/DISABLED_FEATURES |
301 |
+ /prop_gbl/ENABLED_FEATURES |
302 |
+ /prop_gbl/ENABLED_LANGUAGES |
303 |
++ /prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS |
304 |
+ /prop_gbl/FIND_LIBRARY_USE_LIB64_PATHS |
305 |
+ /prop_gbl/FIND_LIBRARY_USE_OPENBSD_VERSIONING |
306 |
+ /prop_gbl/GLOBAL_DEPENDS_DEBUG_MODE |
307 |
+diff --git a/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst b/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst |
308 |
+new file mode 100644 |
309 |
+index 0000000..ce18b65 |
310 |
+--- /dev/null |
311 |
++++ b/Help/prop_gbl/FIND_LIBRARY_USE_LIB32_PATHS.rst |
312 |
+@@ -0,0 +1,10 @@ |
313 |
++FIND_LIBRARY_USE_LIB32_PATHS |
314 |
++---------------------------- |
315 |
++ |
316 |
++Whether the :command:`find_library` command should automatically search |
317 |
++``lib32`` directories. |
318 |
++ |
319 |
++``FIND_LIBRARY_USE_LIB32_PATHS`` is a boolean specifying whether the |
320 |
++:command:`find_library` command should automatically search the ``lib32`` |
321 |
++variant of directories called ``lib`` in the search path when building 32-bit |
322 |
++binaries. |
323 |
+diff --git a/Help/release/dev/find-lib32.rst b/Help/release/dev/find-lib32.rst |
324 |
+new file mode 100644 |
325 |
+index 0000000..00818dc |
326 |
+--- /dev/null |
327 |
++++ b/Help/release/dev/find-lib32.rst |
328 |
+@@ -0,0 +1,7 @@ |
329 |
++find-lib32 |
330 |
++---------- |
331 |
++ |
332 |
++* The :command:`find_library` and :command:`find_package` commands learned |
333 |
++ to search in ``lib32/`` directories when the build targets a 32-bit |
334 |
++ architecture. See the :prop_gbl:`FIND_LIBRARY_USE_LIB32_PATHS` global |
335 |
++ property. |
336 |
+diff --git a/Modules/FindPkgConfig.cmake b/Modules/FindPkgConfig.cmake |
337 |
+index 644687c..33290c4 100644 |
338 |
+--- a/Modules/FindPkgConfig.cmake |
339 |
++++ b/Modules/FindPkgConfig.cmake |
340 |
+@@ -316,9 +316,13 @@ macro(_pkg_check_modules_internal _is_required _is_silent _no_cmake_path _no_cma |
341 |
+ list(APPEND _lib_dirs "lib/${CMAKE_LIBRARY_ARCHITECTURE}/pkgconfig") |
342 |
+ endif() |
343 |
+ else() |
344 |
+- # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property |
345 |
++ # not debian, check the FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS properties |
346 |
++ get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS) |
347 |
++ if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4) |
348 |
++ list(APPEND _lib_dirs "lib32/pkgconfig") |
349 |
++ endif() |
350 |
+ get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) |
351 |
+- if(uselib64) |
352 |
++ if(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
353 |
+ list(APPEND _lib_dirs "lib64/pkgconfig") |
354 |
+ endif() |
355 |
+ endif() |
356 |
+diff --git a/Modules/Platform/Linux.cmake b/Modules/Platform/Linux.cmake |
357 |
+index e40a74f..1f8c1b4 100644 |
358 |
+--- a/Modules/Platform/Linux.cmake |
359 |
++++ b/Modules/Platform/Linux.cmake |
360 |
+@@ -50,8 +50,9 @@ set(CMAKE_LIBRARY_ARCHITECTURE_REGEX "[a-z0-9_]+(-[a-z0-9_]+)?-linux-gnu[a-z0-9_ |
361 |
+ |
362 |
+ include(Platform/UnixPaths) |
363 |
+ |
364 |
+-# Debian has lib64 paths only for compatibility so they should not be |
365 |
++# Debian has lib32 and lib64 paths only for compatibility so they should not be |
366 |
+ # searched. |
367 |
+ if(NOT CMAKE_CROSSCOMPILING AND EXISTS "/etc/debian_version") |
368 |
++ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS FALSE) |
369 |
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE) |
370 |
+ endif() |
371 |
+diff --git a/Modules/Platform/OpenBSD.cmake b/Modules/Platform/OpenBSD.cmake |
372 |
+index 7ac6c7e..6466a0a 100644 |
373 |
+--- a/Modules/Platform/OpenBSD.cmake |
374 |
++++ b/Modules/Platform/OpenBSD.cmake |
375 |
+@@ -18,6 +18,7 @@ endif() |
376 |
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_OPENBSD_VERSIONING 1) |
377 |
+ |
378 |
+ # OpenBSD has no multilib |
379 |
++set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS FALSE) |
380 |
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS FALSE) |
381 |
+ |
382 |
+ # OpenBSD policy requires that shared libraries be installed without |
383 |
+diff --git a/Modules/Platform/UnixPaths.cmake b/Modules/Platform/UnixPaths.cmake |
384 |
+index 20ee1d1..d6c3d41 100644 |
385 |
+--- a/Modules/Platform/UnixPaths.cmake |
386 |
++++ b/Modules/Platform/UnixPaths.cmake |
387 |
+@@ -93,5 +93,6 @@ list(APPEND CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES |
388 |
+ /usr/include |
389 |
+ ) |
390 |
+ |
391 |
+-# Enable use of lib64 search path variants by default. |
392 |
++# Enable use of lib32 and lib64 search path variants by default. |
393 |
++set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS TRUE) |
394 |
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE) |
395 |
+diff --git a/Source/cmFindLibraryCommand.cxx b/Source/cmFindLibraryCommand.cxx |
396 |
+index a4d4dbb..3094fcf 100644 |
397 |
+--- a/Source/cmFindLibraryCommand.cxx |
398 |
++++ b/Source/cmFindLibraryCommand.cxx |
399 |
+@@ -40,11 +40,10 @@ bool cmFindLibraryCommand::InitialPass(std::vector<std::string> const& argsIn, |
400 |
+ return true; |
401 |
+ } |
402 |
+ |
403 |
+- if (const char* abi_name = |
404 |
+- this->Makefile->GetDefinition("CMAKE_INTERNAL_PLATFORM_ABI")) { |
405 |
+- std::string abi = abi_name; |
406 |
+- if (abi.find("ELF N32") != abi.npos) { |
407 |
+- // Convert lib to lib32. |
408 |
++ if (this->Makefile->GetState()->GetGlobalPropertyAsBool( |
409 |
++ "FIND_LIBRARY_USE_LIB32_PATHS")) { |
410 |
++ // add special 32 bit paths if this is a 32 bit compile. |
411 |
++ if (this->Makefile->PlatformIs32Bit()) { |
412 |
+ this->AddArchitecturePaths("32"); |
413 |
+ } |
414 |
+ } |
415 |
+diff --git a/Source/cmFindPackageCommand.cxx b/Source/cmFindPackageCommand.cxx |
416 |
+index 7908afe..1a44d73 100644 |
417 |
+--- a/Source/cmFindPackageCommand.cxx |
418 |
++++ b/Source/cmFindPackageCommand.cxx |
419 |
+@@ -43,6 +43,7 @@ cmFindPackageCommand::cmFindPackageCommand() |
420 |
+ this->UseConfigFiles = true; |
421 |
+ this->UseFindModules = true; |
422 |
+ this->DebugMode = false; |
423 |
++ this->UseLib32Paths = false; |
424 |
+ this->UseLib64Paths = false; |
425 |
+ this->PolicyScope = true; |
426 |
+ this->VersionMajor = 0; |
427 |
+@@ -110,6 +111,13 @@ bool cmFindPackageCommand::InitialPass(std::vector<std::string> const& args, |
428 |
+ this->LibraryArchitecture = arch; |
429 |
+ } |
430 |
+ |
431 |
++ // Lookup whether lib32 paths should be used. |
432 |
++ if (this->Makefile->PlatformIs32Bit() && |
433 |
++ this->Makefile->GetState()->GetGlobalPropertyAsBool( |
434 |
++ "FIND_LIBRARY_USE_LIB32_PATHS")) { |
435 |
++ this->UseLib32Paths = true; |
436 |
++ } |
437 |
++ |
438 |
+ // Lookup whether lib64 paths should be used. |
439 |
+ if (this->Makefile->PlatformIs64Bit() && |
440 |
+ this->Makefile->GetState()->GetGlobalPropertyAsBool( |
441 |
+@@ -1907,6 +1915,9 @@ bool cmFindPackageCommand::SearchPrefix(std::string const& prefix_in) |
442 |
+ if (!this->LibraryArchitecture.empty()) { |
443 |
+ common.push_back("lib/" + this->LibraryArchitecture); |
444 |
+ } |
445 |
++ if (this->UseLib32Paths) { |
446 |
++ common.push_back("lib32"); |
447 |
++ } |
448 |
+ if (this->UseLib64Paths) { |
449 |
+ common.push_back("lib64"); |
450 |
+ } |
451 |
+diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h |
452 |
+index eff6b80..9019f1b 100644 |
453 |
+--- a/Source/cmFindPackageCommand.h |
454 |
++++ b/Source/cmFindPackageCommand.h |
455 |
+@@ -148,6 +148,7 @@ private: |
456 |
+ bool NoUserRegistry; |
457 |
+ bool NoSystemRegistry; |
458 |
+ bool DebugMode; |
459 |
++ bool UseLib32Paths; |
460 |
+ bool UseLib64Paths; |
461 |
+ bool PolicyScope; |
462 |
+ std::string LibraryArchitecture; |
463 |
+diff --git a/Source/cmMakefile.cxx b/Source/cmMakefile.cxx |
464 |
+index ca30b3d..eaf6a7d 100644 |
465 |
+--- a/Source/cmMakefile.cxx |
466 |
++++ b/Source/cmMakefile.cxx |
467 |
+@@ -2076,6 +2076,14 @@ bool cmMakefile::IsSet(const std::string& name) const |
468 |
+ return true; |
469 |
+ } |
470 |
+ |
471 |
++bool cmMakefile::PlatformIs32Bit() const |
472 |
++{ |
473 |
++ if (const char* sizeof_dptr = this->GetDefinition("CMAKE_SIZEOF_VOID_P")) { |
474 |
++ return atoi(sizeof_dptr) == 4; |
475 |
++ } |
476 |
++ return false; |
477 |
++} |
478 |
++ |
479 |
+ bool cmMakefile::PlatformIs64Bit() const |
480 |
+ { |
481 |
+ if (const char* sizeof_dptr = this->GetDefinition("CMAKE_SIZEOF_VOID_P")) { |
482 |
+diff --git a/Source/cmMakefile.h b/Source/cmMakefile.h |
483 |
+index c665b1f..1d9ccd0 100644 |
484 |
+--- a/Source/cmMakefile.h |
485 |
++++ b/Source/cmMakefile.h |
486 |
+@@ -437,6 +437,9 @@ public: |
487 |
+ bool IsOn(const std::string& name) const; |
488 |
+ bool IsSet(const std::string& name) const; |
489 |
+ |
490 |
++ /** Return whether the target platform is 32-bit. */ |
491 |
++ bool PlatformIs32Bit() const; |
492 |
++ |
493 |
+ /** Return whether the target platform is 64-bit. */ |
494 |
+ bool PlatformIs64Bit() const; |
495 |
+ |
496 |
+diff --git a/Tests/CMakeOnly/find_library/CMakeLists.txt b/Tests/CMakeOnly/find_library/CMakeLists.txt |
497 |
+index 2d4ecaf..9958650 100644 |
498 |
+--- a/Tests/CMakeOnly/find_library/CMakeLists.txt |
499 |
++++ b/Tests/CMakeOnly/find_library/CMakeLists.txt |
500 |
+@@ -33,16 +33,23 @@ endmacro() |
501 |
+ |
502 |
+ set(CMAKE_FIND_LIBRARY_PREFIXES "lib") |
503 |
+ set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") |
504 |
++set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS TRUE) |
505 |
+ set_property(GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS TRUE) |
506 |
+ |
507 |
+ set(CMAKE_SIZEOF_VOID_P 4) |
508 |
+ foreach(lib |
509 |
++ lib/32/libtest5.a |
510 |
+ lib/A/lib/libtest1.a |
511 |
++ lib/A/lib32/libtest3.a |
512 |
+ lib/A/libtest1.a |
513 |
+ lib/libtest1.a |
514 |
+ lib/libtest2.a |
515 |
+ lib/libtest3.a |
516 |
+ lib/libtest3.a |
517 |
++ lib32/A/lib/libtest2.a |
518 |
++ lib32/A/lib32/libtest4.a |
519 |
++ lib32/A/libtest4.a |
520 |
++ lib32/libtest4.a |
521 |
+ ) |
522 |
+ test_find_library_subst(${lib}) |
523 |
+ endforeach() |
524 |
+diff --git a/Tests/CMakeOnly/find_library/lib/32/libtest5.a b/Tests/CMakeOnly/find_library/lib/32/libtest5.a |
525 |
+new file mode 100644 |
526 |
+index 0000000..e69de29 |
527 |
+diff --git a/Tests/CMakeOnly/find_library/lib/A/lib32/libtest3.a b/Tests/CMakeOnly/find_library/lib/A/lib32/libtest3.a |
528 |
+new file mode 100644 |
529 |
+index 0000000..e69de29 |
530 |
+diff --git a/Tests/CMakeOnly/find_library/lib32/A/lib/libtest2.a b/Tests/CMakeOnly/find_library/lib32/A/lib/libtest2.a |
531 |
+new file mode 100644 |
532 |
+index 0000000..e69de29 |
533 |
+diff --git a/Tests/CMakeOnly/find_library/lib32/A/lib32/libtest4.a b/Tests/CMakeOnly/find_library/lib32/A/lib32/libtest4.a |
534 |
+new file mode 100644 |
535 |
+index 0000000..e69de29 |
536 |
+diff --git a/Tests/CMakeOnly/find_library/lib32/A/libtest4.a b/Tests/CMakeOnly/find_library/lib32/A/libtest4.a |
537 |
+new file mode 100644 |
538 |
+index 0000000..e69de29 |
539 |
+diff --git a/Tests/CMakeOnly/find_library/lib32/libtest4.a b/Tests/CMakeOnly/find_library/lib32/libtest4.a |
540 |
+new file mode 100644 |
541 |
+index 0000000..e69de29 |
542 |
+diff --git a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake |
543 |
+index 9d4826f..4a41533 100644 |
544 |
+--- a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake |
545 |
++++ b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_APPBUNDLE_PATH.cmake |
546 |
+@@ -1,4 +1,4 @@ |
547 |
+-# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE and FIND_LIBRARY_USE_LIB64_PATHS |
548 |
++# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE, FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS |
549 |
+ enable_language(C) |
550 |
+ |
551 |
+ # Prepare environment and variables |
552 |
+@@ -29,10 +29,15 @@ if(NOT DEFINED CMAKE_SYSTEM_NAME |
553 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
554 |
+ endif() |
555 |
+ else() |
556 |
+- # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property |
557 |
++ # not debian, check the FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS properties |
558 |
++ get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS) |
559 |
+ get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) |
560 |
+- if(uselib64) |
561 |
++ if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4) |
562 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
563 |
++ elseif(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
564 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
565 |
++ else() |
566 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
567 |
+ endif() |
568 |
+ endif() |
569 |
+ else() |
570 |
+diff --git a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake |
571 |
+index d9943d4..b66d02f 100644 |
572 |
+--- a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake |
573 |
++++ b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_CMAKE_FRAMEWORK_PATH.cmake |
574 |
+@@ -1,4 +1,4 @@ |
575 |
+-# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE and FIND_LIBRARY_USE_LIB64_PATHS |
576 |
++# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE, FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS |
577 |
+ enable_language(C) |
578 |
+ |
579 |
+ # Prepare environment and variables |
580 |
+@@ -29,10 +29,15 @@ if(NOT DEFINED CMAKE_SYSTEM_NAME |
581 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
582 |
+ endif() |
583 |
+ else() |
584 |
+- # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property |
585 |
++ # not debian, check the FIND_LIBRARY_USE_LIB64_PATHS and FIND_LIBRARY_USE_LIB64_PATHS properties |
586 |
++ get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS) |
587 |
+ get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) |
588 |
+- if(uselib64) |
589 |
++ if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4) |
590 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
591 |
++ elseif(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
592 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
593 |
++ else() |
594 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
595 |
+ endif() |
596 |
+ endif() |
597 |
+ else() |
598 |
+diff --git a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_NO_PKGCONFIG_PATH.cmake b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_NO_PKGCONFIG_PATH.cmake |
599 |
+index 89ce4c6..25a775d 100644 |
600 |
+--- a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_NO_PKGCONFIG_PATH.cmake |
601 |
++++ b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_NO_PKGCONFIG_PATH.cmake |
602 |
+@@ -1,6 +1,3 @@ |
603 |
+-# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE and FIND_LIBRARY_USE_LIB64_PATHS |
604 |
+-enable_language(C) |
605 |
+- |
606 |
+ # Prepare environment and variables |
607 |
+ set(PKG_CONFIG_USE_CMAKE_PREFIX_PATH FALSE) |
608 |
+ set(CMAKE_PREFIX_PATH "${CMAKE_CURRENT_SOURCE_DIR}/pc-foo") |
609 |
+diff --git a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH.cmake b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH.cmake |
610 |
+index c903279..bdecb8a 100644 |
611 |
+--- a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH.cmake |
612 |
++++ b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH.cmake |
613 |
+@@ -1,4 +1,4 @@ |
614 |
+-# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE and FIND_LIBRARY_USE_LIB64_PATHS |
615 |
++# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE, FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS |
616 |
+ enable_language(C) |
617 |
+ |
618 |
+ # Prepare environment and variables |
619 |
+@@ -29,10 +29,15 @@ if(NOT DEFINED CMAKE_SYSTEM_NAME |
620 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
621 |
+ endif() |
622 |
+ else() |
623 |
+- # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property |
624 |
++ # not debian, check the FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS propertie |
625 |
++ get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS) |
626 |
+ get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) |
627 |
+- if(uselib64) |
628 |
++ if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4) |
629 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
630 |
++ elseif(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
631 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
632 |
++ else() |
633 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
634 |
+ endif() |
635 |
+ endif() |
636 |
+ else() |
637 |
+diff --git a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_ENVIRONMENT_PATH.cmake b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_ENVIRONMENT_PATH.cmake |
638 |
+index a52bcbf..df67235 100644 |
639 |
+--- a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_ENVIRONMENT_PATH.cmake |
640 |
++++ b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_ENVIRONMENT_PATH.cmake |
641 |
+@@ -1,4 +1,4 @@ |
642 |
+-# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE and FIND_LIBRARY_USE_LIB64_PATHS |
643 |
++# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE, FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS |
644 |
+ enable_language(C) |
645 |
+ |
646 |
+ # Prepare environment and variables |
647 |
+@@ -29,10 +29,15 @@ if(NOT DEFINED CMAKE_SYSTEM_NAME |
648 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig") |
649 |
+ endif() |
650 |
+ else() |
651 |
+- # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property |
652 |
++ # not debian, check the FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS properties |
653 |
++ get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS) |
654 |
+ get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) |
655 |
+- if(uselib64) |
656 |
++ if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4) |
657 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig") |
658 |
++ elseif(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
659 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig") |
660 |
++ else() |
661 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-foo/lib/pkgconfig") |
662 |
+ endif() |
663 |
+ endif() |
664 |
+ else() |
665 |
+diff --git a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_PATH.cmake b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_PATH.cmake |
666 |
+index 2fabe5b..1351b6f 100644 |
667 |
+--- a/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_PATH.cmake |
668 |
++++ b/Tests/RunCMake/FindPkgConfig/FindPkgConfig_PKGCONFIG_PATH_NO_CMAKE_PATH.cmake |
669 |
+@@ -1,4 +1,4 @@ |
670 |
+-# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE and FIND_LIBRARY_USE_LIB64_PATHS |
671 |
++# Needed for CMAKE_SYSTEM_NAME, CMAKE_LIBRARY_ARCHITECTURE, FIND_LIBRARY_USE_LIB32_PATHS and FIND_LIBRARY_USE_LIB64_PATHS |
672 |
+ enable_language(C) |
673 |
+ |
674 |
+ # Prepare environment and variables |
675 |
+@@ -29,10 +29,15 @@ if(NOT DEFINED CMAKE_SYSTEM_NAME |
676 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
677 |
+ endif() |
678 |
+ else() |
679 |
+- # not debian, chech the FIND_LIBRARY_USE_LIB64_PATHS property |
680 |
++ # not debian, check the FIND_LIBRARY_USE_LIB64_PATHS and FIND_LIBRARY_USE_LIB32_PATHS properties |
681 |
++ get_property(uselib32 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB32_PATHS) |
682 |
+ get_property(uselib64 GLOBAL PROPERTY FIND_LIBRARY_USE_LIB64_PATHS) |
683 |
+- if(uselib64) |
684 |
++ if(uselib32 AND CMAKE_SIZEOF_VOID_P EQUAL 4) |
685 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib32/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
686 |
++ elseif(uselib64 AND CMAKE_SIZEOF_VOID_P EQUAL 8) |
687 |
+ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib64/pkgconfig:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
688 |
++ else() |
689 |
++ set(expected_path "/baz:${CMAKE_CURRENT_SOURCE_DIR}/pc-bar/lib/pkgconfig") |
690 |
+ endif() |
691 |
+ endif() |
692 |
+ else() |
693 |
+diff --git a/Tests/RunCMake/FindPkgConfig/pc-bar/lib32/pkgconfig/.placeholder b/Tests/RunCMake/FindPkgConfig/pc-bar/lib32/pkgconfig/.placeholder |
694 |
+new file mode 100644 |
695 |
+index 0000000..e69de29 |
696 |
+diff --git a/Tests/RunCMake/FindPkgConfig/pc-foo/lib32/pkgconfig/.placeholder b/Tests/RunCMake/FindPkgConfig/pc-foo/lib32/pkgconfig/.placeholder |
697 |
+new file mode 100644 |
698 |
+index 0000000..e69de29 |
699 |
+-- |
700 |
+2.9.3 |
701 |
+ |