set(LLVM_INCLUDE_TESTS OFF)
endif()
endif()
+
+ if(LLVM_HAVE_LIBXAR)
+ set(XAR_LIB xar)
+ endif()
endif()
set(LLD_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
LINK_LIBS
lldCommon
${LLVM_PTHREAD_LIB}
+ ${XAR_LIB}
DEPENDS
MachOOptionsTableGen
#include "llvm/ADT/StringRef.h"
#include "llvm/BinaryFormat/MachO.h"
#include "llvm/BinaryFormat/Magic.h"
-#include "llvm/Config/config.h"
+#include "llvm/Config/llvm-config.h"
#include "llvm/LTO/LTO.h"
#include "llvm/Object/Archive.h"
#include "llvm/Option/ArgList.h"
args.hasFlag(OPT_encryptable, OPT_no_encryption,
is_contained(encryptablePlatforms, config->platform()));
-#ifndef HAVE_LIBXAR
+#ifndef LLVM_HAVE_LIBXAR
if (config->emitBitcodeBundle)
error("-bitcode_bundle unsupported because LLD wasn't built with libxar");
#endif
#include "lld/Common/ErrorHandler.h"
#include "lld/Common/Memory.h"
#include "llvm/ADT/STLExtras.h"
-#include "llvm/Config/config.h"
+#include "llvm/Config/llvm-config.h"
#include "llvm/Support/EndianStream.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/LEB128.h"
#include <sys/mman.h>
#endif
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
#include <fcntl.h>
#include <xar/xar.h>
#endif
} while (0);
void BitcodeBundleSection::finalize() {
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
using namespace llvm::sys::fs;
CHECK_EC(createTemporaryFile("bitcode-bundle", "xar", xarPath));
CHECK_EC(xar_close(xar));
file_size(xarPath, xarSize);
-#endif // defined(HAVE_LIBXAR)
+#endif // defined(LLVM_HAVE_LIBXAR)
}
void BitcodeBundleSection::writeTo(uint8_t *buf) const {
LLVM_ENABLE_ZLIB
LLVM_ENABLE_LIBXML2
LLD_DEFAULT_LD_LLD_IS_MINGW
- HAVE_LIBXAR
+ LLVM_HAVE_LIBXAR
)
configure_lit_site_cfg(
config.target_triple = "@TARGET_TRIPLE@"
config.python_executable = "@Python3_EXECUTABLE@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
-config.have_libxar = @HAVE_LIBXAR@
+config.have_libxar = @LLVM_HAVE_LIBXAR@
config.have_libxml2 = @LLVM_ENABLE_LIBXML2@
config.sizeof_void_p = @CMAKE_SIZEOF_VOID_P@
config.ld_lld_default_mingw = @LLD_DEFAULT_LD_LLD_IS_MINGW@
lldWasm
)
-if(HAVE_LIBXAR)
+if(LLVM_HAVE_LIBXAR)
target_link_libraries(lld PRIVATE ${XAR_LIB})
endif()
set(LLVM_ENABLE_TERMINFO 0)
endif()
-check_library_exists(xar xar_open "" HAVE_LIBXAR)
-if(HAVE_LIBXAR)
+check_library_exists(xar xar_open "" LLVM_HAVE_LIBXAR)
+if(LLVM_HAVE_LIBXAR)
set(XAR_LIB xar)
endif()
set(LLVM_DEFAULT_EXTERNAL_LIT "@LLVM_CONFIG_DEFAULT_EXTERNAL_LIT@")
set(LLVM_LIT_ARGS "@LLVM_LIT_ARGS@")
+set(LLVM_HAVE_LIBXAR "@LLVM_HAVE_LIBXAR@")
+
if(NOT TARGET LLVMSupport)
@LLVM_CONFIG_INCLUDE_EXPORTS@
@llvm_config_include_buildtree_only_exports@
/* Define if the setupterm() function is supported this platform. */
#cmakedefine LLVM_ENABLE_TERMINFO ${LLVM_ENABLE_TERMINFO}
-/* Define if the xar_open() function is supported this platform. */
-#cmakedefine HAVE_LIBXAR ${HAVE_LIBXAR}
-
/* Define to 1 if you have the <termios.h> header file. */
#cmakedefine HAVE_TERMIOS_H ${HAVE_TERMIOS_H}
/* Define to 1 to enable the experimental new pass manager by default */
#cmakedefine01 LLVM_ENABLE_NEW_PASS_MANAGER
+/* Define if the xar_open() function is supported on this platform. */
+#cmakedefine LLVM_HAVE_LIBXAR ${LLVM_HAVE_LIBXAR}
+
#endif
llvm_canonicalize_cmake_booleans(
BUILD_SHARED_LIBS
- HAVE_LIBXAR
+ LLVM_HAVE_LIBXAR
HAVE_OCAMLOPT
HAVE_OCAML_OUNIT
LLVM_ENABLE_DIA_SDK
config.llvm_use_intel_jitevents = @LLVM_USE_INTEL_JITEVENTS@
config.llvm_use_sanitizer = "@LLVM_USE_SANITIZER@"
config.have_zlib = @LLVM_ENABLE_ZLIB@
-config.have_libxar = @HAVE_LIBXAR@
+config.have_libxar = @LLVM_HAVE_LIBXAR@
config.have_libxml2 = @LLVM_ENABLE_LIBXML2@
config.have_dia_sdk = @LLVM_ENABLE_DIA_SDK@
config.enable_ffi = @LLVM_ENABLE_FFI@
OtoolOptsTableGen
)
-if(HAVE_LIBXAR)
+if(LLVM_HAVE_LIBXAR)
target_link_libraries(llvm-objdump PRIVATE ${XAR_LIB})
endif()
#include <cstring>
#include <system_error>
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
extern "C" {
#include <xar/xar.h>
}
typedef std::vector<DiceTableEntry> DiceTable;
typedef DiceTable::iterator dice_table_iterator;
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
namespace {
struct ScopedXarFile {
xar_t xar;
operator xar_iter_t() { return iter; }
};
} // namespace
-#endif // defined(HAVE_LIBXAR)
+#endif // defined(LLVM_HAVE_LIBXAR)
// This is used to search for a data in code table entry for the PC being
// disassembled. The j parameter has the PC in j.first. A single data in code
StringRef DisSegName, StringRef DisSectName);
static void DumpProtocolSection(MachOObjectFile *O, const char *sect,
uint32_t size, uint32_t addr);
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
static void DumpBitcodeSection(MachOObjectFile *O, const char *sect,
uint32_t size, bool verbose,
bool PrintXarHeader, bool PrintXarFileHeaders,
std::string XarMemberName);
-#endif // defined(HAVE_LIBXAR)
+#endif // defined(LLVM_HAVE_LIBXAR)
static void DumpSectionContents(StringRef Filename, MachOObjectFile *O,
bool verbose) {
DumpProtocolSection(O, sect, sect_size, sect_addr);
continue;
}
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
if (SegName == "__LLVM" && SectName == "__bundle") {
DumpBitcodeSection(O, sect, sect_size, verbose, SymbolicOperands,
ArchiveHeaders, "");
continue;
}
-#endif // defined(HAVE_LIBXAR)
+#endif // defined(LLVM_HAVE_LIBXAR)
switch (section_type) {
case MachO::S_REGULAR:
DumpRawSectionContents(O, sect, sect_size, sect_addr);
}
}
-#ifdef HAVE_LIBXAR
+#ifdef LLVM_HAVE_LIBXAR
static inline void swapStruct(struct xar_header &xar) {
sys::swapByteOrder(xar.magic);
sys::swapByteOrder(xar.size);
}
}
}
-#endif // defined(HAVE_LIBXAR)
+#endif // defined(LLVM_HAVE_LIBXAR)
static void printObjcMetaData(MachOObjectFile *O, bool verbose) {
if (O->is64Bit())
}
if (llvm_enable_libxar) {
- extra_values += [ "HAVE_LIBXAR=1" ]
+ extra_values += [ "LLVM_HAVE_LIBXAR=1" ]
} else {
- extra_values += [ "HAVE_LIBXAR=0" ] # Must be 0.
+ extra_values += [ "LLVM_HAVE_LIBXAR=0" ] # Must be 0.
}
if (llvm_enable_libxml2) {
values += [ "HAVE_LIBEDIT=" ]
}
- if (llvm_enable_libxar) {
- values += [ "HAVE_LIBXAR=1" ]
- } else {
- values += [ "HAVE_LIBXAR=" ]
- }
-
if (llvm_enable_terminfo) {
values += [ "LLVM_ENABLE_TERMINFO=1" ]
} else {
]
}
+ if (llvm_enable_libxar) {
+ values += [ "LLVM_HAVE_LIBXAR=1" ]
+ } else {
+ values += [ "LLVM_HAVE_LIBXAR=" ]
+ }
+
if (llvm_enable_threads) {
values += [ "LLVM_ENABLE_THREADS=1" ]
} else {
}
if (llvm_enable_libxar) {
- extra_values += [ "HAVE_LIBXAR=1" ]
+ extra_values += [ "LLVM_HAVE_LIBXAR=1" ]
} else {
- extra_values += [ "HAVE_LIBXAR=0" ] # Must be 0.
+ extra_values += [ "LLVM_HAVE_LIBXAR=0" ] # Must be 0.
}
if (llvm_enable_dia_sdk) {