diff options
-rw-r--r-- | llvm/CMakeLists.txt | 2 | ||||
-rw-r--r-- | llvm/cmake/modules/AddLLVM.cmake | 5 | ||||
-rw-r--r-- | llvm/cmake/modules/HandleLLVMOptions.cmake | 6 | ||||
-rw-r--r-- | llvm/include/llvm/Support/Host.h | 2 | ||||
-rw-r--r-- | llvm/lib/Support/Unix/Path.inc | 5 |
5 files changed, 13 insertions, 7 deletions
diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt index 202776a8ade..516ce5c556e 100644 --- a/llvm/CMakeLists.txt +++ b/llvm/CMakeLists.txt @@ -643,7 +643,7 @@ endif() # check its symbols. This is wasteful (the check was done when foo.so # was created) and can fail since it is not the dynamic linker and # doesn't know how to handle search paths correctly. -if (UNIX AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS") +if (UNIX AND NOT APPLE AND NOT ${CMAKE_SYSTEM_NAME} MATCHES "SunOS|AIX") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-allow-shlib-undefined") endif() diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 26e43960014..582f318e421 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -69,6 +69,9 @@ function(add_llvm_symbol_exports target_name export_file) COMMENT "Creating export file for ${target_name}") set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-exported_symbols_list,${CMAKE_CURRENT_BINARY_DIR}/${native_export_file}") + elseif(${CMAKE_SYSTEM_NAME} MATCHES "AIX") + set_property(TARGET ${target_name} APPEND_STRING PROPERTY + LINK_FLAGS " -Wl,-bE:${export_file}") elseif(LLVM_HAVE_LINK_VERSION_SCRIPT) # Gold and BFD ld require a version script rather than a plain list. set(native_export_file "${target_name}.exports") @@ -156,7 +159,7 @@ function(add_link_opts target_name) # Pass -O3 to the linker. This enabled different optimizations on different # linkers. - if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin|SunOS" OR WIN32)) + if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "Darwin|SunOS|AIX" OR WIN32)) set_property(TARGET ${target_name} APPEND_STRING PROPERTY LINK_FLAGS " -Wl,-O3") endif() diff --git a/llvm/cmake/modules/HandleLLVMOptions.cmake b/llvm/cmake/modules/HandleLLVMOptions.cmake index 22b4408b1ac..9dafdc3fc38 100644 --- a/llvm/cmake/modules/HandleLLVMOptions.cmake +++ b/llvm/cmake/modules/HandleLLVMOptions.cmake @@ -79,11 +79,11 @@ else(WIN32) if(UNIX) set(LLVM_ON_WIN32 0) set(LLVM_ON_UNIX 1) - if(APPLE) + if(APPLE OR ${CMAKE_SYSTEM_NAME} MATCHES "AIX") set(LLVM_HAVE_LINK_VERSION_SCRIPT 0) - else(APPLE) + else() set(LLVM_HAVE_LINK_VERSION_SCRIPT 1) - endif(APPLE) + endif() else(UNIX) MESSAGE(SEND_ERROR "Unable to determine platform") endif(UNIX) diff --git a/llvm/include/llvm/Support/Host.h b/llvm/include/llvm/Support/Host.h index 8114f9bf846..9e59a9428da 100644 --- a/llvm/include/llvm/Support/Host.h +++ b/llvm/include/llvm/Support/Host.h @@ -18,6 +18,8 @@ #if defined(__linux__) || defined(__GNU__) || defined(__HAIKU__) #include <endian.h> +#elif defined(_AIX) +#include <sys/machine.h> #else #if !defined(BYTE_ORDER) && !defined(LLVM_ON_WIN32) #include <machine/endian.h> diff --git a/llvm/lib/Support/Unix/Path.inc b/llvm/lib/Support/Unix/Path.inc index ea439c6b79d..a01924cac92 100644 --- a/llvm/lib/Support/Unix/Path.inc +++ b/llvm/lib/Support/Unix/Path.inc @@ -90,7 +90,8 @@ namespace sys { namespace fs { #if defined(__FreeBSD__) || defined (__NetBSD__) || defined(__Bitrig__) || \ defined(__OpenBSD__) || defined(__minix) || defined(__FreeBSD_kernel__) || \ - defined(__linux__) || defined(__CYGWIN__) || defined(__DragonFly__) + defined(__linux__) || defined(__CYGWIN__) || defined(__DragonFly__) || \ + defined(_AIX) static int test_dir(char ret[PATH_MAX], const char *dir, const char *bin) { @@ -161,7 +162,7 @@ std::string getMainExecutable(const char *argv0, void *MainAddr) { } #elif defined(__FreeBSD__) || defined (__NetBSD__) || defined(__Bitrig__) || \ defined(__OpenBSD__) || defined(__minix) || defined(__DragonFly__) || \ - defined(__FreeBSD_kernel__) + defined(__FreeBSD_kernel__) || defined(_AIX) char exe_path[PATH_MAX]; if (getprogpath(exe_path, argv0) != NULL) |