From af7943a2f6827f7eefe398c6d9cc4b5b4687f946 Mon Sep 17 00:00:00 2001 From: Elvis Stansvik Date: Tue, 8 Dec 2015 02:52:25 +0100 Subject: [PATCH] Don't assume multiarch locations in module map On non-Debian distros, these headers are directly in /usr/include. --- stdlib/public/Glibc/.gitignore | 1 + stdlib/public/Glibc/CMakeLists.txt | 13 +++++++ .../Glibc/{module.map => module.map.in} | 36 +++++++++---------- 3 files changed, 32 insertions(+), 18 deletions(-) create mode 100644 stdlib/public/Glibc/.gitignore rename stdlib/public/Glibc/{module.map => module.map.in} (87%) diff --git a/stdlib/public/Glibc/.gitignore b/stdlib/public/Glibc/.gitignore new file mode 100644 index 0000000000000..f637ff78e362a --- /dev/null +++ b/stdlib/public/Glibc/.gitignore @@ -0,0 +1 @@ +module.map diff --git a/stdlib/public/Glibc/CMakeLists.txt b/stdlib/public/Glibc/CMakeLists.txt index e80197d0093e1..820491cf800e3 100644 --- a/stdlib/public/Glibc/CMakeLists.txt +++ b/stdlib/public/Glibc/CMakeLists.txt @@ -1,3 +1,16 @@ +# If CMAKE_LIBRARY_ARCHITECTURE is set, we're probably on a Debian +# style multiarch system and Glibc headers are in /usr/include/{triplet}, +# otherwise they're in /usr/include. This is the best way to determine +# this path until https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=796545 +# is fixed. +if(CMAKE_LIBRARY_ARCHITECTURE) + set(arch_include_dir "/usr/include/${CMAKE_LIBRARY_ARCHITECTURE}") +else() + set(arch_include_dir "/usr/include") +endif() + +configure_file(module.map.in "${CMAKE_CURRENT_SOURCE_DIR}/module.map") + set(sources module.map ) diff --git a/stdlib/public/Glibc/module.map b/stdlib/public/Glibc/module.map.in similarity index 87% rename from stdlib/public/Glibc/module.map rename to stdlib/public/Glibc/module.map.in index b08485d2abad9..827893d60aa94 100644 --- a/stdlib/public/Glibc/module.map +++ b/stdlib/public/Glibc/module.map.in @@ -184,7 +184,7 @@ module SwiftGlibc [system] { export * } module ioctl { - header "/usr/include/x86_64-linux-gnu/sys/ioctl.h" + header "@arch_include_dir@/sys/ioctl.h" export * } module langinfo { @@ -266,71 +266,71 @@ module SwiftGlibc [system] { export * module ipc { - header "/usr/include/x86_64-linux-gnu/sys/ipc.h" + header "@arch_include_dir@/sys/ipc.h" export * } module mman { - header "/usr/include/x86_64-linux-gnu/sys/mman.h" + header "@arch_include_dir@/sys/mman.h" export * } module msg { - header "/usr/include/x86_64-linux-gnu/sys/msg.h" + header "@arch_include_dir@/sys/msg.h" export * } module resource { - header "/usr/include/x86_64-linux-gnu/sys/resource.h" + header "@arch_include_dir@/sys/resource.h" export * } module select { - header "/usr/include/x86_64-linux-gnu/sys/select.h" + header "@arch_include_dir@/sys/select.h" export * } module sem { - header "/usr/include/x86_64-linux-gnu/sys/sem.h" + header "@arch_include_dir@/sys/sem.h" export * } module shm { - header "/usr/include/x86_64-linux-gnu/sys/shm.h" + header "@arch_include_dir@/sys/shm.h" export * } module socket { - header "/usr/include/x86_64-linux-gnu/sys/socket.h" + header "@arch_include_dir@/sys/socket.h" export * } module stat { - header "/usr/include/x86_64-linux-gnu/sys/stat.h" + header "@arch_include_dir@/sys/stat.h" export * } module statvfs { - header "/usr/include/x86_64-linux-gnu/sys/statvfs.h" + header "@arch_include_dir@/sys/statvfs.h" export * } module time { - header "/usr/include/x86_64-linux-gnu/sys/time.h" + header "@arch_include_dir@/sys/time.h" export * } module times { - header "/usr/include/x86_64-linux-gnu/sys/times.h" + header "@arch_include_dir@/sys/times.h" export * } module types { - header "/usr/include/x86_64-linux-gnu/sys/types.h" + header "@arch_include_dir@/sys/types.h" export * } module uio { - header "/usr/include/x86_64-linux-gnu/sys/uio.h" + header "@arch_include_dir@/sys/uio.h" export * } module un { - header "/usr/include/x86_64-linux-gnu/sys/un.h" + header "@arch_include_dir@/sys/un.h" export * } module utsname { - header "/usr/include/x86_64-linux-gnu/sys/utsname.h" + header "@arch_include_dir@/sys/utsname.h" export * } module wait { - header "/usr/include/x86_64-linux-gnu/sys/wait.h" + header "@arch_include_dir@/sys/wait.h" export * } }