Commit 67021e2bff
Changed files (3)
cmake/Findclang.cmake
@@ -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)
cmake/Findllvm.cmake
@@ -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)
CMakeLists.txt
@@ -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)