Exclude all static libraries from "all" build target
This ensures these intermediate targets only get built when needed,
and allows reducing the complexity of conditional logic.
Bug: b/151250656
Change-Id: I3cbc2cc7a4c3d6f3691eeeef55d381ef03c2db9f
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/42308
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0589d0d..eff9c36 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1572,155 +1572,151 @@
# Subzero
###########################################################
-if(${REACTOR_BACKEND} STREQUAL "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
- )
+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.
+# 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
- ${SOURCE_DIR}/Common/Memory.cpp
+ ${SUBZERO_DIR}/src/IceTargetLoweringX86.cpp
+ ${SUBZERO_DIR}/src/IceInstX8664.cpp
+ ${SUBZERO_DIR}/src/IceTargetLoweringX8664.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_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_REACTOR_LIST
- ${SOURCE_DIR}/Reactor/Debug.cpp
- ${SOURCE_DIR}/Reactor/Debug.hpp
- ${SOURCE_DIR}/Reactor/EmulatedReactor.cpp
- ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
- ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
- ${SOURCE_DIR}/Reactor/Nucleus.hpp
- ${SOURCE_DIR}/Reactor/Optimizer.cpp
- ${SOURCE_DIR}/Reactor/Print.hpp
- ${SOURCE_DIR}/Reactor/Reactor.cpp
- ${SOURCE_DIR}/Reactor/Reactor.hpp
- ${SOURCE_DIR}/Reactor/ReactorDebugInfo.cpp
- ${SOURCE_DIR}/Reactor/ReactorDebugInfo.hpp
- ${SOURCE_DIR}/Reactor/Routine.hpp
- ${SOURCE_DIR}/Reactor/SubzeroReactor.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_INCLUDE_DIR
- ${SUBZERO_DIR}/
- ${SUBZERO_LLVM_DIR}/include/
- ${SUBZERO_DIR}/pnacl-llvm/include/
+ 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()
- 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()
+file(GLOB_RECURSE SUBZERO_DEPENDENCIES_LIST
+ ${SUBZERO_LLVM_DIR}/*.cpp
+ ${SUBZERO_LLVM_DIR}/*.c
+ ${SUBZERO_LLVM_DIR}/*.h
+)
- 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()
+set(SUBZERO_REACTOR_LIST
+ ${SOURCE_DIR}/Reactor/Debug.cpp
+ ${SOURCE_DIR}/Reactor/Debug.hpp
+ ${SOURCE_DIR}/Reactor/EmulatedReactor.cpp
+ ${SOURCE_DIR}/Reactor/ExecutableMemory.cpp
+ ${SOURCE_DIR}/Reactor/ExecutableMemory.hpp
+ ${SOURCE_DIR}/Reactor/Nucleus.hpp
+ ${SOURCE_DIR}/Reactor/Optimizer.cpp
+ ${SOURCE_DIR}/Reactor/Print.hpp
+ ${SOURCE_DIR}/Reactor/Reactor.cpp
+ ${SOURCE_DIR}/Reactor/Reactor.hpp
+ ${SOURCE_DIR}/Reactor/ReactorDebugInfo.cpp
+ ${SOURCE_DIR}/Reactor/ReactorDebugInfo.hpp
+ ${SOURCE_DIR}/Reactor/Routine.hpp
+ ${SOURCE_DIR}/Reactor/SubzeroReactor.cpp
+)
- add_library(SubzeroDependencies STATIC
- ${SUBZERO_DEPENDENCIES_LIST}
+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.
)
- set_target_properties(SubzeroDependencies PROPERTIES
- POSITION_INDEPENDENT_CODE 1
- INCLUDE_DIRECTORIES "${SUBZERO_INCLUDE_DIR}"
- COMPILE_OPTIONS "${SUBZERO_DEPENDENCIES_COMPILE_OPTIONS}"
- FOLDER "Subzero"
+ 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(ReactorSubzero STATIC
- ${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;"
- FOLDER "Subzero"
- )
- target_link_libraries(ReactorSubzero SubzeroDependencies)
+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"
+)
- target_link_libraries(ReactorSubzero marl)
+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;"
+ FOLDER "Subzero"
+)
+target_link_libraries(ReactorSubzero SubzeroDependencies marl)
- if(WIN32)
- target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
- endif()
-endif(${REACTOR_BACKEND} STREQUAL "Subzero")
+if(WIN32)
+ target_compile_definitions(ReactorSubzero PRIVATE SUBZERO_USE_MICROSOFT_ABI)
+endif()
###########################################################
# Include Directories
@@ -2032,7 +2028,7 @@
# SwiftShader Targets
###########################################################
-add_library(SwiftShader STATIC ${SWIFTSHADER_LIST})
+add_library(SwiftShader STATIC EXCLUDE_FROM_ALL ${SWIFTSHADER_LIST})
set_target_properties(SwiftShader PROPERTIES
INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
POSITION_INDEPENDENT_CODE 1
@@ -2042,15 +2038,16 @@
)
target_link_libraries(SwiftShader ${OS_LIBS})
+add_library(ReactorLLVM STATIC EXCLUDE_FROM_ALL ${REACTOR_LLVM_LIST})
+set_target_properties(ReactorLLVM PROPERTIES
+ INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
+ POSITION_INDEPENDENT_CODE 1
+ FOLDER "Core"
+ COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
+)
+target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
+
if(${REACTOR_BACKEND} STREQUAL "LLVM")
- add_library(ReactorLLVM STATIC ${REACTOR_LLVM_LIST})
- set_target_properties(ReactorLLVM PROPERTIES
- INCLUDE_DIRECTORIES "${COMMON_INCLUDE_DIR}"
- POSITION_INDEPENDENT_CODE 1
- FOLDER "Core"
- COMPILE_OPTIONS "${SWIFTSHADER_COMPILE_OPTIONS};${WARNINGS_AS_ERRORS}"
- )
- target_link_libraries(ReactorLLVM llvm ${OS_LIBS})
set(Reactor ReactorLLVM)
elseif(${REACTOR_BACKEND} STREQUAL "Subzero")
set(Reactor ReactorSubzero)
@@ -2070,7 +2067,7 @@
# Boost stacktrace uses exceptions, so force enable it
set_cpp_flag("-fexceptions")
- add_library(Libbacktrace STATIC ${LIBBACKTRACE_LIST})
+ add_library(Libbacktrace STATIC EXCLUDE_FROM_ALL ${LIBBACKTRACE_LIST})
set_target_properties(Libbacktrace PROPERTIES
INCLUDE_DIRECTORIES "${LIBBACKTRACE_INCLUDE_DIR}"
POSITION_INDEPENDENT_CODE 1
@@ -2085,10 +2082,9 @@
set(BOOST_INCLUDEDIR ${BOOST_THIRD_PARTY_DIR})
find_package(Boost REQUIRED)
target_link_libraries(${Reactor} Boost::boost)
-
endif(REACTOR_EMIT_DEBUG_INFO)
-add_library(GLCompiler STATIC ${OPENGL_COMPILER_LIST})
+add_library(GLCompiler STATIC EXCLUDE_FROM_ALL ${OPENGL_COMPILER_LIST})
set_target_properties(GLCompiler PROPERTIES
INCLUDE_DIRECTORIES "${OPENGL_INCLUDE_DIR}"
POSITION_INDEPENDENT_CODE 1