CMake: split out subzero and llvm-subzero into their own CMakeLists
Bug: b/145758253
Change-Id: Ife32c322cf87c9b1b98b4b50f591b75db6ea51e2
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/43148
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
Tested-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a0a8f37..9cd84a3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -360,8 +360,6 @@
set(CPPDAP_DIR ${THIRD_PARTY_DIR}/cppdap)
set(CPPDAP_INCLUDE_DIR ${CPPDAP_DIR}/include)
set(JSON_INCLUDE_DIR ${THIRD_PARTY_DIR}/json/include)
-set(SUBZERO_DIR ${THIRD_PARTY_DIR}/subzero)
-set(SUBZERO_LLVM_DIR ${THIRD_PARTY_DIR}/llvm-subzero)
set(TESTS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/tests)
set(HELLO2_DIR ${THIRD_PARTY_DIR}/PowerVR_SDK/Examples/Beginner/01_HelloAPI/OGLES2)
@@ -621,6 +619,11 @@
###########################################################
add_subdirectory(third_party/llvm-${SWIFTSHADER_LLVM_VERSION})
+###########################################################
+# Subzero
+###########################################################
+add_subdirectory(third_party/llvm-subzero EXCLUDE_FROM_ALL)
+add_subdirectory(third_party/subzero EXCLUDE_FROM_ALL)
###########################################################
# marl
@@ -639,84 +642,6 @@
add_subdirectory(${CPPDAP_DIR})
endif()
-
-###########################################################
-# Subzero
-###########################################################
-
-set(SUBZERO_LIST
- ${SUBZERO_DIR}/src/IceAssembler.cpp
- ${SUBZERO_DIR}/src/IceCfg.cpp
- ${SUBZERO_DIR}/src/IceCfgNode.cpp
- ${SUBZERO_DIR}/src/IceClFlags.cpp
- ${SUBZERO_DIR}/src/IceELFObjectWriter.cpp
- ${SUBZERO_DIR}/src/IceELFSection.cpp
- ${SUBZERO_DIR}/src/IceFixups.cpp
- ${SUBZERO_DIR}/src/IceGlobalContext.cpp
- ${SUBZERO_DIR}/src/IceGlobalInits.cpp
- ${SUBZERO_DIR}/src/IceInst.cpp
- ${SUBZERO_DIR}/src/IceInstrumentation.cpp
- ${SUBZERO_DIR}/src/IceIntrinsics.cpp
- ${SUBZERO_DIR}/src/IceLiveness.cpp
- ${SUBZERO_DIR}/src/IceLoopAnalyzer.cpp
- ${SUBZERO_DIR}/src/IceMangling.cpp
- ${SUBZERO_DIR}/src/IceMemory.cpp
- ${SUBZERO_DIR}/src/IceOperand.cpp
- ${SUBZERO_DIR}/src/IceRangeSpec.cpp
- ${SUBZERO_DIR}/src/IceRegAlloc.cpp
- ${SUBZERO_DIR}/src/IceRevision.cpp
- ${SUBZERO_DIR}/src/IceRNG.cpp
- ${SUBZERO_DIR}/src/IceSwitchLowering.cpp
- ${SUBZERO_DIR}/src/IceTargetLowering.cpp
- ${SUBZERO_DIR}/src/IceThreading.cpp
- ${SUBZERO_DIR}/src/IceTimerTree.cpp
- ${SUBZERO_DIR}/src/IceTypes.cpp
- ${SUBZERO_DIR}/src/IceVariableSplitting.cpp
-)
-
-# FIXME: Shouldn't depend on external source files directly.
-list(APPEND SUBZERO_LIST
- ${SOURCE_DIR}/Common/Memory.cpp
-)
-
-if(ARCH STREQUAL "x86_64")
- list(APPEND SUBZERO_LIST
- ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
- ${SUBZERO_DIR}/src/IceInstX8664.cpp
- ${SUBZERO_DIR}/src/IceTargetLoweringX8664.cpp
- )
- set(SUBZERO_TARGET X8664)
-elseif(ARCH STREQUAL "x86")
- list(APPEND SUBZERO_LIST
- ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
- ${SUBZERO_DIR}/src/IceInstX8632.cpp
- ${SUBZERO_DIR}/src/IceTargetLoweringX8632.cpp
- )
- set(SUBZERO_TARGET X8632)
-elseif(ARCH STREQUAL "arm")
- list(APPEND SUBZERO_LIST
- ${SUBZERO_DIR}/src/IceAssemblerARM32.cpp
- ${SUBZERO_DIR}/src/IceInstARM32.cpp
- ${SUBZERO_DIR}/src/IceTargetLoweringARM32.cpp
- )
- set(SUBZERO_TARGET ARM32)
-elseif(ARCH STREQUAL "mipsel")
- list(APPEND SUBZERO_LIST
- ${SUBZERO_DIR}/src/IceAssemblerMIPS32.cpp
- ${SUBZERO_DIR}/src/IceInstMIPS32.cpp
- ${SUBZERO_DIR}/src/IceTargetLoweringMIPS32.cpp
- )
- set(SUBZERO_TARGET MIPS32)
-else()
- message(FATAL_ERROR "Architecture '${ARCH}' not supported by Subzero")
-endif()
-
-file(GLOB_RECURSE SUBZERO_DEPENDENCIES_LIST
- ${SUBZERO_LLVM_DIR}/*.cpp
- ${SUBZERO_LLVM_DIR}/*.c
- ${SUBZERO_LLVM_DIR}/*.h
-)
-
set(SUBZERO_REACTOR_LIST
${SOURCE_DIR}/Reactor/Debug.cpp
${SOURCE_DIR}/Reactor/Debug.hpp
@@ -734,61 +659,15 @@
${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
)
-set(SUBZERO_INCLUDE_DIR
- ${SUBZERO_DIR}/
- ${SUBZERO_LLVM_DIR}/include/
- ${SUBZERO_DIR}/pnacl-llvm/include/
-)
-
-if(WIN32)
- list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Windows/include/)
-elseif(LINUX)
- list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/Linux/include/)
-elseif(APPLE)
- list(APPEND SUBZERO_INCLUDE_DIR ${SUBZERO_LLVM_DIR}/build/MacOS/include/)
-endif()
-
-if(WIN32)
- list(APPEND SUBZERO_COMPILE_OPTIONS
- "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
- "/wd4334" # ''operator' : result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
- "/wd4996" # The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: new_name.
- )
- list(APPEND SUBZERO_DEPENDENCIES_COMPILE_OPTIONS
- ${SUBZERO_COMPILE_OPTIONS}
- "/wd4267" # '=': conversion from 'size_t' to 'sopno', possible loss of data
- "/wd4244" # '=': conversion from '__int64' to 'llvm_regoff_t', possible loss of data
- "/wd4141" # 'inline': used more than once
- "/wd4291" # 'void *operator new(size_t,const `anonymous-namespace'::NamedBufferAlloc &)': no matching operator delete found; memory will not be freed if initialization throws an exception
- )
-endif()
-
-add_library(SubzeroDependencies STATIC EXCLUDE_FROM_ALL
- ${SUBZERO_DEPENDENCIES_LIST}
-)
-set_target_properties(SubzeroDependencies PROPERTIES
- POSITION_INDEPENDENT_CODE 1
- INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
- COMPILE_OPTIONS "${SUBZERO_DEPENDENCIES_COMPILE_OPTIONS}"
- FOLDER "Subzero"
-)
-
add_library(ReactorSubzero STATIC EXCLUDE_FROM_ALL
- ${SUBZERO_LIST}
${SUBZERO_REACTOR_LIST}
)
set_target_properties(ReactorSubzero PROPERTIES
POSITION_INDEPENDENT_CODE 1
- INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
- COMPILE_OPTIONS "${SUBZERO_COMPILE_OPTIONS};${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
- COMPILE_DEFINITIONS "SZTARGET=${SUBZERO_TARGET}; ALLOW_DUMP=0; ALLOW_TIMERS=0; ALLOW_LLVM_CL=0; ALLOW_LLVM_IR=0; ALLOW_LLVM_IR_AS_INPUT=0; ALLOW_MINIMAL_BUILD=0; ALLOW_WASM=0; ICE_THREAD_LOCAL_HACK=0;"
+ COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
FOLDER "Subzero"
)
-target_link_libraries(ReactorSubzero SubzeroDependencies marl)
-
-if(WIN32)
- target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
-endif()
+target_link_libraries(ReactorSubzero subzero marl)
###########################################################
# Include Directories