64 lines
2.0 KiB
CMake
64 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 3.10)
|
|
project(Bluebell VERSION 0.1)
|
|
|
|
set(CMAKE_CXX_STANDARD 14)
|
|
|
|
set(CMAKE_CXX_STANDARD_REQUIRED True)
|
|
|
|
include(FindPkgConfig)
|
|
find_package(Boost 1.74
|
|
COMPONENTS log)
|
|
list(APPEND CMAKE_MODULE_PATH "${LLVM_CMAKE_DIR}")
|
|
if (EXISTS "${CMAKE_CURRENT_LIST_DIR}/vendor/llvm/llvm/CMakeLists.txt")
|
|
set(PATH_TO_LLVM "${CMAKE_CURRENT_LIST_DIR}/vendor/llvm/llvm")
|
|
message(STATUS "Using vendored LLVM")
|
|
set(LLVM_ENABLE_PROJECTS "" CACHE STRING "" FORCE)
|
|
set(LLVM_ENABLE_RUNTIMES "" CACHE STRING "" FORCE)
|
|
set(LLVM_BUILD_TOOLS YES CACHE BOOL "" FORCE)
|
|
|
|
set(LLVM_TARGETS_TO_BUILD "X86;ARM;AArch64" CACHE STRING "" FORCE)
|
|
set(LLVM_INCLUDE_BENCHMARKS NO CACHE BOOL "" FORCE)
|
|
|
|
add_subdirectory(vendor/llvm/llvm llvm-build)
|
|
|
|
get_target_property(LLVM_INCLUDE_DIRS LLVMSupport INCLUDE_DIRECTORIES)
|
|
list(APPEND CMAKE_MODULE_PATH "${PATH_TO_LLVM}/cmake/modules")
|
|
|
|
else()
|
|
message(STATUS "Using system LLVM")
|
|
find_package(LLVM 14 REQUIRED CONFIG)
|
|
endif()
|
|
|
|
include(AddLLVM)
|
|
include(HandleLLVMOptions)
|
|
|
|
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/vendor/shaderc/CMakeLists.txt")
|
|
set(SHADERC_SKIP_TESTS ON)
|
|
set(SHADERC_ENABLE_WERROR_COMPILE OFF)
|
|
add_subdirectory(vendor/shaderc)
|
|
|
|
else()
|
|
pkg_check_modules(shaderc REQUIRED IMPORTED_TARGET shaderc)
|
|
endif()
|
|
|
|
message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}")
|
|
|
|
|
|
include_directories(${LLVM_INCLUDE_DIRS})
|
|
add_definitions(${LLVM_DEFINITIONS})
|
|
|
|
add_executable(bluebell
|
|
src/bluebell.cpp src/bluebell.hpp
|
|
src/pre-compiler.cpp src/pre-compiler.hpp src/compiler.cpp src/compiler.hpp src/spv_meta.cpp src/spv_meta.hpp src/runtime.cpp src/runtime.hpp src/runtime_support.c)
|
|
|
|
add_executable(render_stub
|
|
src/render_frame/render_stub.c)
|
|
message(STATUS "Include dirs are ${LLVM_INCLUDE_DIRS}")
|
|
#target_link_libraries(bluebell PkgConfig::shaderc)
|
|
|
|
#print(${LLVM_AVAILABLE_LIBS})
|
|
llvm_map_components_to_libnames(llvm_libs core native passes nativecodegen OrcJIT X86CodeGen X86Disassembler)
|
|
|
|
target_link_libraries(bluebell shaderc_shared Boost::boost Boost::log ${llvm_libs})
|
|
|