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
|
# 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)
|
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)
|
# TODO: this currently doesn't work, it currently defines UNICODE but zig
|
||||||
include_directories(${LLVM_INCLUDE_DIR})
|
# uses MBCS
|
||||||
link_directories(${LLVM_LIBDIRS})
|
#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})
|
include_directories(${CLANG_INCLUDE_DIRS})
|
||||||
|
set(CLANG_LIBRARIES
|
||||||
|
clangFrontend
|
||||||
|
clangDriver
|
||||||
|
clangSerialization
|
||||||
|
clangSema
|
||||||
|
clangAnalysis
|
||||||
|
clangAST
|
||||||
|
clangParse
|
||||||
|
clangSema
|
||||||
|
clangBasic
|
||||||
|
clangEdit
|
||||||
|
clangLex
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if(ZIG_FORCE_EXTERNAL_LLD)
|
if(ZIG_FORCE_EXTERNAL_LLD)
|
||||||
find_package(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