Move back the llvm setup to the main cmake config as suggested by llvm itself
This commit is contained in:
parent
66da4b5401
commit
990de49c23
|
@ -141,6 +141,49 @@ if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
|
||||||
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
|
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# LLVM setup ==================================================================
|
||||||
|
# Why not specify the version?
|
||||||
|
# Since we use the development version of the LLVM all the time it doesn't
|
||||||
|
# make sense to use a version here
|
||||||
|
find_package(LLVM REQUIRED CONFIG)
|
||||||
|
find_package(MLIR REQUIRED CONFIG)
|
||||||
|
find_package(LLD REQUIRED CONFIG)
|
||||||
|
find_program(LLD_PROGRAM REQUIRED NAMES lld)
|
||||||
|
|
||||||
|
find_program(MLIRTBLGEN_PROGRAM REQUIRED NAMES mlir-tblgen)
|
||||||
|
find_package(Clang REQUIRED CONFIG)
|
||||||
|
|
||||||
|
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
||||||
|
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
|
||||||
|
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
|
||||||
|
message(STATUS "Using LLDConfig.cmake in: ${LLD_DIR}")
|
||||||
|
message(STATUS "Using CLANGConfig.cmake in: ${Clang_DIR}")
|
||||||
|
|
||||||
|
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
|
||||||
|
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
|
||||||
|
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})
|
||||||
|
|
||||||
|
# Make cmake modules available to load
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${MLIR_DIR}")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${LLD_DIR}")
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${Clang_DIR}")
|
||||||
|
|
||||||
|
include(TableGen)
|
||||||
|
include(AddLLVM)
|
||||||
|
include(AddMLIR)
|
||||||
|
include(HandleLLVMOptions)
|
||||||
|
include(AddClang)
|
||||||
|
|
||||||
|
# This goes against the CMake's best practices to add
|
||||||
|
# these kind of settings to the targets only. But this
|
||||||
|
# is what LLVM recommends and we will stick to their
|
||||||
|
# recommendation.
|
||||||
|
include_directories(SYSTEM ${LLVM_INCLUDE_DIRS})
|
||||||
|
add_definitions(${LLVM_DEFINITIONS})
|
||||||
|
|
||||||
|
# /LLVM setup =================================================================
|
||||||
|
|
||||||
add_subdirectory(serene)
|
add_subdirectory(serene)
|
||||||
# include(tablegen-serene)
|
# include(tablegen-serene)
|
||||||
# Create the tools we use to compile Serene
|
# Create the tools we use to compile Serene
|
||||||
|
|
4
builder
4
builder
|
@ -228,8 +228,8 @@ function clean() { ## Cleans up the source dir and removes the build
|
||||||
git clean -dxf
|
git clean -dxf
|
||||||
}
|
}
|
||||||
|
|
||||||
function run() { ## Runs `serenec` and passes all the given aruguments to it
|
function run() { ## Runs `serene` and passes all the given aruguments to it
|
||||||
"$BUILD_DIR"/serenec/serenec "$@"
|
"$BUILD_DIR"/serene/serene "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
function lldb-run() { ## Runs `serenec` under lldb
|
function lldb-run() { ## Runs `serenec` under lldb
|
||||||
|
|
|
@ -14,41 +14,7 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
# LLVM setup ==================================================================
|
|
||||||
# Why not specify the version?
|
|
||||||
# Since we use the development version of the LLVM all the time it doesn't
|
|
||||||
# make sense to use a version here
|
|
||||||
find_package(LLVM REQUIRED CONFIG)
|
|
||||||
find_package(MLIR REQUIRED CONFIG)
|
|
||||||
find_package(LLD REQUIRED CONFIG)
|
|
||||||
find_program(LLD_PROGRAM REQUIRED NAMES lld)
|
|
||||||
|
|
||||||
find_package(BDWgc 8.2.0 REQUIRED)
|
find_package(BDWgc 8.2.0 REQUIRED)
|
||||||
find_program(MLIRTBLGEN_PROGRAM REQUIRED NAMES mlir-tblgen)
|
|
||||||
find_package(Clang REQUIRED CONFIG)
|
|
||||||
|
|
||||||
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
|
||||||
message(STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR}")
|
|
||||||
message(STATUS "Using MLIRConfig.cmake in: ${MLIR_DIR}")
|
|
||||||
message(STATUS "Using LLDConfig.cmake in: ${LLD_DIR}")
|
|
||||||
message(STATUS "Using CLANGConfig.cmake in: ${Clang_DIR}")
|
|
||||||
|
|
||||||
set(LLVM_RUNTIME_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/bin)
|
|
||||||
set(LLVM_LIBRARY_OUTPUT_INTDIR ${CMAKE_BINARY_DIR}/lib)
|
|
||||||
set(MLIR_BINARY_DIR ${CMAKE_BINARY_DIR})
|
|
||||||
|
|
||||||
# Make cmake modules available to load
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${MLIR_DIR}")
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${LLVM_DIR}")
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${LLD_DIR}")
|
|
||||||
list(APPEND CMAKE_MODULE_PATH "${Clang_DIR}")
|
|
||||||
|
|
||||||
include(TableGen)
|
|
||||||
include(AddLLVM)
|
|
||||||
include(AddMLIR)
|
|
||||||
include(HandleLLVMOptions)
|
|
||||||
include(AddClang)
|
|
||||||
# /LLVM setup =================================================================
|
|
||||||
|
|
||||||
# Main Binary =================================================================
|
# Main Binary =================================================================
|
||||||
add_executable(serene)
|
add_executable(serene)
|
||||||
|
@ -74,12 +40,14 @@ target_include_directories(serene
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
)
|
)
|
||||||
|
|
||||||
# We don't want the generated files from table gen
|
target_include_directories(serene SYSTEM PUBLIC
|
||||||
# to be treated as local since the contain warnings
|
# We don't want the generated files from table gen
|
||||||
target_include_directories(serene SYSTEM PRIVATE
|
# to be treated as local since the contain warnings
|
||||||
${PROJECT_BINARY_DIR}/include
|
${PROJECT_BINARY_DIR}/serene/include)
|
||||||
)
|
|
||||||
|
|
||||||
|
target_link_libraries(serene PRIVATE
|
||||||
|
LLVMSupport
|
||||||
|
)
|
||||||
|
|
||||||
# Autogenerate the `config.h` file
|
# Autogenerate the `config.h` file
|
||||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/serene/config.h.in include/serene/config.h)
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/serene/config.h.in include/serene/config.h)
|
||||||
|
@ -118,8 +86,7 @@ target_compile_options(serene
|
||||||
$<$<CONFIG:RELEASE>:-fmerge-all-constants>
|
$<$<CONFIG:RELEASE>:-fmerge-all-constants>
|
||||||
)
|
)
|
||||||
|
|
||||||
target_link_options(serene
|
target_link_options(serene PRIVATE
|
||||||
PRIVATE
|
|
||||||
$<$<NOT:$<BOOL:${SERENE_DISABLE_LIBCXX}>>:-stdlib=libc++>
|
$<$<NOT:$<BOOL:${SERENE_DISABLE_LIBCXX}>>:-stdlib=libc++>
|
||||||
$<$<NOT:$<BOOL:${SERENE_DISABLE_LIBCXX}>>:-lc++abi>
|
$<$<NOT:$<BOOL:${SERENE_DISABLE_LIBCXX}>>:-lc++abi>
|
||||||
$<$<NOT:$<BOOL:${SERENE_DISABLE_COMPILER_RT}>>:--rtlib=compiler-rt>
|
$<$<NOT:$<BOOL:${SERENE_DISABLE_COMPILER_RT}>>:--rtlib=compiler-rt>
|
||||||
|
@ -133,6 +100,7 @@ target_link_options(serene
|
||||||
--static
|
--static
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if(SERENE_ENABLE_BUILDID)
|
if(SERENE_ENABLE_BUILDID)
|
||||||
target_link_options(serene -Wl,--build-id)
|
target_link_options(serene -Wl,--build-id)
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue