From cf5ad18340f1d775e47c7aa9afde7deb0482027e Mon Sep 17 00:00:00 2001 From: Brad King Date: Wed, 12 Jan 2011 13:52:14 -0500 Subject: [PATCH] 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 --- Utilities/cmlibarchive/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Utilities/cmlibarchive/CMakeLists.txt b/Utilities/cmlibarchive/CMakeLists.txt index 8c10b2184..6472ec558 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 \nint main() { return major(256); }" + MAJOR_IN_MKDEV) +CHECK_C_SOURCE_COMPILES( + "#include \nint main() { return major(256); }" + MAJOR_IN_SYSMACROS) IF(HAVE_STRERROR_R) SET(HAVE_DECL_STRERROR_R 1)