summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt71
1 files changed, 61 insertions, 10 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ec95845..52ffc21 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,15 +1,66 @@
-CMAKE_MINIMUM_REQUIRED(VERSION 3.3)
+cmake_minimum_required(VERSION 3.3)
-# Name & Version
-PROJECT(LLVM_SPIRV
- VERSION 0.1.0.0
- LANGUAGES CXX)
+# check if we build inside llvm or not
+if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+ set(BUILD_EXTERNAL YES)
+ project(LLVM_SPIRV
+ VERSION
+ 0.1.0.0
+ LANGUAGES
+ CXX
+ )
+
+ set(CMAKE_CXX_STANDARD 11)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+
+ if(LLVM_INCLUDE_TESTS)
+ set(LLVM_TEST_COMPONENTS
+ llvm-as
+ llvm-dis
+ )
+ endif(LLVM_INCLUDE_TESTS)
+
+ find_package(LLVM 7.0.0 REQUIRED
+ COMPONENTS
+ Analysis
+ BitReader
+ BitWriter
+ Core
+ Support
+ TransformUtils
+ ${LLVM_TEST_COMPONENTS}
+ )
+ set(CMAKE_MODULE_PATH
+ ${CMAKE_MODULE_PATH}
+ ${LLVM_CMAKE_DIR}
+ )
+ include(AddLLVM)
+
+ message(STATUS "Found LLVM: ${LLVM_VERSION}")
+else(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
+ set(BUILD_EXTERNAL NO)
+endif(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
-message(STATUS "LLVM-SPIRV found at ${CMAKE_CURRENT_SOURCE_DIR}")
set(LLVM_SPIRV_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/include)
-set(LLVM_SPIRV_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})
-set(CMAKE_CXX_STANDARD 11)
-set(CMAKE_CXX_STANDARD_REQUIRED ON)
+add_subdirectory(lib/SPIRV)
+add_subdirectory(tools/llvm-spirv)
+if(LLVM_INCLUDE_TESTS)
+ add_subdirectory(test)
+endif(LLVM_INCLUDE_TESTS)
+
+install(
+ FILES
+ ${LLVM_SPIRV_INCLUDE_DIRS}/SPIRV.h
+ DESTINATION
+ include
+)
-SUBDIRS(lib/SPIRV tools/llvm-spirv test)
+get_target_property(LLVMSPIRVlib_LIBDIR LLVMSPIRVLib BINARY_DIR)
+configure_file(LLVMSPIRVLib.pc.in ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc @ONLY)
+install(
+ FILES
+ ${CMAKE_BINARY_DIR}/LLVMSPIRVLib.pc
+ DESTINATION
+ ${CMAKE_INSTALL_PREFIX}/lib${LLVM_LIBDIR_SUFFIX}/pkgconfig
+)