[tint][build] Make <thread> an external library
Removes bespoke target code in CMakeLists.txt
Change-Id: Iff1d06c1d583e264a46dab0a1547e9d19a815beb
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/147942
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Dan Sinclair <dsinclair@chromium.org>
diff --git a/src/tint/BUILD.gn b/src/tint/BUILD.gn
index b21fd52..51c6b92 100644
--- a/src/tint/BUILD.gn
+++ b/src/tint/BUILD.gn
@@ -109,6 +109,10 @@
}
}
+source_set("thread") {
+ # GN doesn't appear to need to depend on any thread libraries.
+}
+
source_set("metal") {
frameworks = [
"Foundation.framework",
diff --git a/src/tint/CMakeLists.txt b/src/tint/CMakeLists.txt
index b9221b2..8e14741 100644
--- a/src/tint/CMakeLists.txt
+++ b/src/tint/CMakeLists.txt
@@ -426,18 +426,16 @@
-Wno-weak-vtables
)
endif()
+ elseif(${DEPENDENCY} STREQUAL "glslang-res-limits")
+ target_link_libraries(${TARGET} PRIVATE
+ glslang-default-resource-limits
+ )
elseif(${DEPENDENCY} STREQUAL "gtest")
target_include_directories(${TARGET} PRIVATE ${gmock_SOURCE_DIR}/include)
target_link_libraries(${TARGET} PRIVATE gmock)
elseif(${DEPENDENCY} STREQUAL "metal")
- find_library(FoundationFramework Foundation)
- if(NOT FoundationFramework)
- message(FATAL_ERROR "Foundation framework not found")
- endif()
- find_library(MetalFramework Metal)
- if(NOT MetalFramework)
- message(FATAL_ERROR "Metal framework not found")
- endif()
+ find_library(FoundationFramework Foundation REQUIRED)
+ find_library(MetalFramework Metal REQUIRED)
target_link_libraries(${TARGET} PRIVATE ${FoundationFramework} ${MetalFramework})
elseif(${DEPENDENCY} STREQUAL "spirv-headers")
tint_spvheaders_compile_options(${TARGET})
@@ -453,10 +451,9 @@
"${TINT_SPIRV_TOOLS_DIR}/source"
"${spirv-tools_BINARY_DIR}"
)
- elseif(${DEPENDENCY} STREQUAL "glslang-res-limits")
- target_link_libraries(${TARGET} PRIVATE
- glslang-default-resource-limits
- )
+ elseif(${DEPENDENCY} STREQUAL "thread")
+ find_package(Threads REQUIRED)
+ target_link_libraries(${TARGET} PRIVATE Threads::Threads)
elseif(${DEPENDENCY} STREQUAL "winsock")
target_link_libraries(${TARGET} PRIVATE ws2_32)
else()
@@ -503,9 +500,6 @@
################################################################################
include("BUILD.cmake")
-find_package(Threads REQUIRED)
-target_link_libraries(tint_cmd_remote_compile_cmd PRIVATE Threads::Threads)
-
################################################################################
# Additional fuzzer tests
################################################################################
diff --git a/src/tint/cmd/remote_compile/BUILD.cmake b/src/tint/cmd/remote_compile/BUILD.cmake
index a92b5bd..7ab34a5 100644
--- a/src/tint/cmd/remote_compile/BUILD.cmake
+++ b/src/tint/cmd/remote_compile/BUILD.cmake
@@ -36,6 +36,10 @@
tint_utils_traits
)
+tint_target_add_external_dependencies(tint_cmd_remote_compile_cmd cmd
+ "thread"
+)
+
if(TINT_BUILD_MSL_WRITER)
tint_target_add_dependencies(tint_cmd_remote_compile_cmd cmd
tint_lang_msl_validate
diff --git a/src/tint/cmd/remote_compile/BUILD.gn b/src/tint/cmd/remote_compile/BUILD.gn
index 033196a6..4890389 100644
--- a/src/tint/cmd/remote_compile/BUILD.gn
+++ b/src/tint/cmd/remote_compile/BUILD.gn
@@ -28,6 +28,7 @@
output_name = "tint_remote_compile"
sources = [ "main.cc" ]
deps = [
+ "${tint_src_dir}:thread",
"${tint_src_dir}/lang/wgsl/ast",
"${tint_src_dir}/utils/macros",
"${tint_src_dir}/utils/socket",
diff --git a/src/tint/externals.json b/src/tint/externals.json
index 4eb861e..649a650 100644
--- a/src/tint/externals.json
+++ b/src/tint/externals.json
@@ -14,6 +14,11 @@
],
"Condition": "is_mac",
},
+ "thread": {
+ "IncludePatterns": [
+ "thread"
+ ],
+ },
"spirv-tools": {
"IncludePatterns": [
"spirv-tools/**"
diff --git a/tools/src/cmd/gen/build/BUILD.gn.tmpl b/tools/src/cmd/gen/build/BUILD.gn.tmpl
index ef7d1bf..be1b666 100644
--- a/tools/src/cmd/gen/build/BUILD.gn.tmpl
+++ b/tools/src/cmd/gen/build/BUILD.gn.tmpl
@@ -144,13 +144,14 @@
*/ -}}
{{- define "ExternalDependencyTargets"}}
{{- if eq $.Name "abseil" -}}"${tint_src_dir}:abseil",
+{{- else if eq $.Name "glslang-res-limits" -}}"${tint_glslang_dir}:glslang_default_resource_limits_sources",
+{{- else if eq $.Name "glslang" -}}"${tint_glslang_dir}:glslang_lib_sources",
{{- else if eq $.Name "gtest" -}}"${tint_src_dir}:gmock_and_gtest",
{{- else if eq $.Name "metal" -}}"${tint_src_dir}:metal",
-{{- else if eq $.Name "spirv-tools" -}}"${tint_spirv_tools_dir}:spvtools_headers", "${tint_spirv_tools_dir}:spvtools_val",
-{{- else if eq $.Name "spirv-opt-internal" -}}"${tint_spirv_tools_dir}:spvtools", "${tint_spirv_tools_dir}:spvtools_opt",
{{- else if eq $.Name "spirv-headers" -}}"${tint_spirv_headers_dir}:spv_headers",
-{{- else if eq $.Name "glslang" -}}"${tint_glslang_dir}:glslang_lib_sources",
-{{- else if eq $.Name "glslang-res-limits" -}}"${tint_glslang_dir}:glslang_default_resource_limits_sources",
+{{- else if eq $.Name "spirv-opt-internal" -}}"${tint_spirv_tools_dir}:spvtools", "${tint_spirv_tools_dir}:spvtools_opt",
+{{- else if eq $.Name "spirv-tools" -}}"${tint_spirv_tools_dir}:spvtools_headers", "${tint_spirv_tools_dir}:spvtools_val",
+{{- else if eq $.Name "thread" -}}"${tint_src_dir}:thread",
{{- else if eq $.Name "winsock" -}}"${tint_src_dir}:winsock",
{{- else -}}{{Error (printf "unhandled external dependency '%v'" $.Name)}}
{{- end}}