diff options
author | Brad King <brad.king@kitware.com> | 2011-01-12 18:52:14 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2011-01-12 18:52:14 (GMT) |
commit | cf5ad18340f1d775e47c7aa9afde7deb0482027e (patch) | |
tree | 7191008f1faa201954c42546ca0c8d0fc17c3a22 /Utilities | |
parent | dde0c89cfcec22ac75cbadd77e45d2113521f326 (diff) | |
download | CMake-cf5ad18340f1d775e47c7aa9afde7deb0482027e.zip CMake-cf5ad18340f1d775e47c7aa9afde7deb0482027e.tar.gz CMake-cf5ad18340f1d775e47c7aa9afde7deb0482027e.tar.bz2 |
libarchive: Fix major() check for LSB 4.0 (#11648)
The LSB header files define major() as a macro but if it is ever called
the macro references symbols not available at link time. Improve the
test for major() to actually call the macro and try to link. This
approach is based on upstream libarchive SVN commit 2866 which fixed
libarchive issue 125, submitted in response to CMake issue #11648.
Inspired-by: Tim Kientzle <kientzle@freebsd.org>
Diffstat (limited to 'Utilities')
-rw-r--r-- | Utilities/cmlibarchive/CMakeLists.txt | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index 8c10b21..6472ec5 100644 --- a/Utilities/cmlibarchive/CMakeLists.txt +++ b/Utilities/cmlibarchive/CMakeLists.txt @@ -415,8 +415,12 @@ CHECK_SYMBOL_EXISTS(strerror_r "string.h" HAVE_STRERROR_R) CHECK_SYMBOL_EXISTS(strftime "time.h" HAVE_STRFTIME) CHECK_SYMBOL_EXISTS(vprintf "stdio.h" HAVE_VPRINTF) -CHECK_SYMBOL_EXISTS(major "sys/mkdev.h" MAJOR_IN_MKDEV) -CHECK_SYMBOL_EXISTS(major "sys/sysmacros.h" MAJOR_IN_SYSMACROS) +CHECK_C_SOURCE_COMPILES( + "#include <sys/mkdev.h>\nint main() { return major(256); }" + MAJOR_IN_MKDEV) +CHECK_C_SOURCE_COMPILES( + "#include <sys/sysmacros.h>\nint main() { return major(256); }" + MAJOR_IN_SYSMACROS) IF(HAVE_STRERROR_R) SET(HAVE_DECL_STRERROR_R 1) |