Modified cmake to use LLVM imported packages.
parent
7c81cd30de
commit
67021e2bff
|
@ -26,13 +26,86 @@ option(ZIG_TEST_COVERAGE "Build Zig with test coverage instrumentation" OFF)
|
|||
# git log -p -- deps/lld
|
||||
option(ZIG_FORCE_EXTERNAL_LLD "If your system has the LLD patches use it instead of the embedded LLD" OFF)
|
||||
|
||||
find_package(LLVM REQUIRED CONFIG)
|
||||
include_directories(${LLVM_INCLUDE_DIRS})
|
||||
|
||||
find_package(llvm)
|
||||
include_directories(${LLVM_INCLUDE_DIR})
|
||||
link_directories(${LLVM_LIBDIRS})
|
||||
# TODO: this currently doesn't work, it currently defines UNICODE but zig
|
||||
# uses MBCS
|
||||
#add_definitions(${LLVM_DEFINITIONS})
|
||||
|
||||
find_package(clang)
|
||||
link_directories(${LLVM_LIBRARY_DIRS})
|
||||
llvm_map_components_to_libnames(LLVM_LIBRARIES
|
||||
LTO
|
||||
Symbolize
|
||||
XCoreDisassembler
|
||||
XCoreCodeGen
|
||||
XCoreAsmPrinter
|
||||
SystemZDisassembler
|
||||
SystemZCodeGen
|
||||
SystemZAsmParser
|
||||
SystemZAsmPrinter
|
||||
SparcDisassembler
|
||||
SparcCodeGen
|
||||
SparcAsmParser
|
||||
SparcAsmPrinter
|
||||
PowerPCDisassembler
|
||||
PowerPCCodeGen
|
||||
PowerPCAsmParser
|
||||
PowerPCAsmPrinter
|
||||
NVPTXCodeGen
|
||||
NVPTXAsmPrinter
|
||||
MSP430CodeGen
|
||||
MSP430AsmPrinter
|
||||
MipsDisassembler
|
||||
MipsCodeGen
|
||||
MipsAsmParser
|
||||
MipsAsmPrinter
|
||||
LanaiDisassembler
|
||||
LanaiCodeGen
|
||||
LanaiAsmParser
|
||||
LanaiAsmPrinter
|
||||
HexagonDisassembler
|
||||
HexagonCodeGen
|
||||
HexagonAsmParser
|
||||
BPFDisassembler
|
||||
BPFCodeGen
|
||||
BPFAsmPrinter
|
||||
ARMDisassembler
|
||||
ARMCodeGen
|
||||
ARMAsmParser
|
||||
ARMAsmPrinter
|
||||
AMDGPUDisassembler
|
||||
AMDGPUCodeGen
|
||||
AMDGPUAsmParser
|
||||
AMDGPUAsmPrinter
|
||||
AArch64Disassembler
|
||||
AArch64CodeGen
|
||||
AArch64AsmParser
|
||||
AArch64AsmPrinter
|
||||
LibDriver
|
||||
X86Disassembler
|
||||
X86AsmParser
|
||||
X86CodeGen
|
||||
X86AsmPrinter
|
||||
Core
|
||||
)
|
||||
|
||||
find_package(CLANG REQUIRED CONFIG)
|
||||
include_directories(${CLANG_INCLUDE_DIRS})
|
||||
set(CLANG_LIBRARIES
|
||||
clangFrontend
|
||||
clangDriver
|
||||
clangSerialization
|
||||
clangSema
|
||||
clangAnalysis
|
||||
clangAST
|
||||
clangParse
|
||||
clangSema
|
||||
clangBasic
|
||||
clangEdit
|
||||
clangLex
|
||||
)
|
||||
|
||||
|
||||
if(ZIG_FORCE_EXTERNAL_LLD)
|
||||
find_package(lld)
|
||||
|
|
|
@ -1,50 +0,0 @@
|
|||
# Copyright (c) 2016 Andrew Kelley
|
||||
# This file is MIT licensed.
|
||||
# See http://opensource.org/licenses/MIT
|
||||
|
||||
# CLANG_FOUND
|
||||
# CLANG_INCLUDE_DIRS
|
||||
# CLANG_LIBRARIES
|
||||
|
||||
find_path(CLANG_INCLUDE_DIRS NAMES clang/Frontend/ASTUnit.h
|
||||
PATHS
|
||||
${LLVM_INSTALL_PREFIX}/include
|
||||
/usr/lib/llvm/5/include
|
||||
/usr/lib/llvm-5.0/include
|
||||
/mingw64/include)
|
||||
|
||||
if(NOT CLANG_INCLUDE_DIRS)
|
||||
message(FATAL_ERROR "Failed to find CLANG header files")
|
||||
endif()
|
||||
|
||||
macro(FIND_AND_ADD_CLANG_LIB _libname_)
|
||||
string(TOUPPER ${_libname_} _prettylibname_)
|
||||
find_library(CLANG_${_prettylibname_}_LIB NAMES ${_libname_}
|
||||
PATHS
|
||||
${LLVM_INSTALL_PREFIX}/lib
|
||||
/usr/lib/llvm/5/lib
|
||||
/usr/lib/llvm-5.0/lib
|
||||
/mingw64/lib
|
||||
/c/msys64/mingw64/lib
|
||||
c:\\msys64\\mingw64\\lib)
|
||||
if(CLANG_${_prettylibname_}_LIB)
|
||||
set(CLANG_LIBRARIES ${CLANG_LIBRARIES} ${CLANG_${_prettylibname_}_LIB})
|
||||
endif()
|
||||
endmacro(FIND_AND_ADD_CLANG_LIB)
|
||||
|
||||
FIND_AND_ADD_CLANG_LIB(clangFrontend)
|
||||
FIND_AND_ADD_CLANG_LIB(clangDriver)
|
||||
FIND_AND_ADD_CLANG_LIB(clangSerialization)
|
||||
FIND_AND_ADD_CLANG_LIB(clangSema)
|
||||
FIND_AND_ADD_CLANG_LIB(clangAnalysis)
|
||||
FIND_AND_ADD_CLANG_LIB(clangAST)
|
||||
FIND_AND_ADD_CLANG_LIB(clangParse)
|
||||
FIND_AND_ADD_CLANG_LIB(clangSema)
|
||||
FIND_AND_ADD_CLANG_LIB(clangBasic)
|
||||
FIND_AND_ADD_CLANG_LIB(clangEdit)
|
||||
FIND_AND_ADD_CLANG_LIB(clangLex)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(CLANG DEFAULT_MSG CLANG_LIBRARIES CLANG_INCLUDE_DIRS)
|
||||
|
||||
mark_as_advanced(CLANG_INCLUDE_DIRS CLANG_LIBRARIES)
|
|
@ -1,75 +0,0 @@
|
|||
# Copyright (c) 2014 Andrew Kelley
|
||||
# This file is MIT licensed.
|
||||
# See http://opensource.org/licenses/MIT
|
||||
|
||||
# LLVM_INCLUDE_DIR
|
||||
# LLVM_LIBRARIES
|
||||
# LLVM_LIBDIRS
|
||||
|
||||
if(LLVM_INSTALL_PREFIX)
|
||||
find_program(LLVM_CONFIG_EXE
|
||||
NAMES llvm-config-5.0 llvm-config
|
||||
PATHS ${LLVM_INSTALL_PREFIX}/bin
|
||||
NO_DEFAULT_PATH)
|
||||
if(NOT LLVM_CONFIG_EXE)
|
||||
message(FATAL_ERROR "Invalid LLVM_INSTALL_PREFIX \"${LLVM_INSTALL_PREFIX}\", could not find llvm-config")
|
||||
endif()
|
||||
else()
|
||||
find_program(LLVM_CONFIG_EXE
|
||||
NAMES llvm-config-5.0 llvm-config
|
||||
PATHS
|
||||
"/mingw64/bin"
|
||||
"/c/msys64/mingw64/bin"
|
||||
"c:/msys64/mingw64/bin"
|
||||
"C:/Libraries/llvm-5.0.0/bin")
|
||||
if(NOT LLVM_CONFIG_EXE)
|
||||
message(FATAL_ERROR "Could not find llvm-config, use -DLLVM_INSTALL_PREFIX to specify the install path")
|
||||
endif()
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_EXE} --prefix
|
||||
OUTPUT_VARIABLE LLVM_INSTALL_PREFIX
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
endif()
|
||||
|
||||
if(${LLVM_INSTALL_PREFIX} MATCHES "^.* ")
|
||||
# NOTE: this is a limitation due to llvm-config. If the path contains spaces then there's
|
||||
# no way to tell from the output of llvm-config whether a space is seperating a filename, or
|
||||
# just a space in the path name.
|
||||
message(FATAL_ERROR "The LLVM install path \"${LLVM_INSTALL_PREFIX}\" cannot contain spaces")
|
||||
endif()
|
||||
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_EXE} --libs
|
||||
OUTPUT_VARIABLE LLVM_LIBRARIES_STRING
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
string(REPLACE " " ";" LLVM_LIBRARIES ${LLVM_LIBRARIES_STRING})
|
||||
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_EXE} --system-libs
|
||||
OUTPUT_VARIABLE LLVM_SYSTEM_LIBS_STRING
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
string(REPLACE " " ";" LLVM_SYSTEM_LIBS ${LLVM_SYSTEM_LIBS_STRING})
|
||||
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_EXE} --libdir
|
||||
OUTPUT_VARIABLE LLVM_LIBDIRS
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${LLVM_CONFIG_EXE} --includedir
|
||||
OUTPUT_VARIABLE LLVM_INCLUDE_DIR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
find_library(LLVM_LIBRARY NAMES LLVM)
|
||||
|
||||
set(LLVM_LIBRARIES ${LLVM_LIBRARIES} ${LLVM_SYSTEM_LIBS})
|
||||
|
||||
if(LLVM_LIBRARY)
|
||||
set(LLVM_LIBRARIES ${LLVM_LIBRARY})
|
||||
endif()
|
||||
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(LLVM DEFAULT_MSG LLVM_LIBRARIES LLVM_INCLUDE_DIR)
|
||||
|
||||
mark_as_advanced(LLVM_INCLUDE_DIR LLVM_LIBRARIES LLVM_LIBDIRS)
|
Loading…
Reference in New Issue