cmake: Link diagnostic sources into tint_utils_io
Splits these sources out into a separate library target to make sure
that it is only built once.
Many of these symbols are used by tint_utils_io, and building with
shared libraries enabled fails if they are not present.
Change-Id: I501d302b2502b22357f5691f012cd56ebcfde478
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/75600
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index d760dcb..ddcb686 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -36,6 +36,19 @@
endif()
endfunction()
+## Tint diagnostic utilities. Used by libtint and tint_utils_io.
+add_library(tint_diagnostic_utils
+ debug.cc
+ debug.h
+ diagnostic/diagnostic.cc
+ diagnostic/diagnostic.h
+ diagnostic/formatter.cc
+ diagnostic/formatter.h
+ diagnostic/printer.cc
+ diagnostic/printer.h
+)
+tint_default_compile_options(tint_diagnostic_utils)
+
set(TINT_LIB_SRCS
../include/tint/tint.h
ast/access.cc
@@ -208,16 +221,8 @@
castable.h
clone_context.cc
clone_context.h
- debug.cc
- debug.h
demangler.cc
demangler.h
- diagnostic/diagnostic.cc
- diagnostic/diagnostic.h
- diagnostic/formatter.cc
- diagnostic/formatter.h
- diagnostic/printer.cc
- diagnostic/printer.h
inspector/entry_point.cc
inspector/entry_point.h
inspector/inspector.cc
@@ -535,6 +540,7 @@
utils/io/tmpfile.h
)
tint_default_compile_options(tint_utils_io)
+target_link_libraries(tint_utils_io tint_diagnostic_utils)
## Tint validation utilities. Used by tests and the tint executable.
add_library(tint_val
@@ -562,6 +568,7 @@
## Tint library
add_library(libtint ${TINT_LIB_SRCS})
tint_default_compile_options(libtint)
+target_link_libraries(libtint tint_diagnostic_utils)
if (${COMPILER_IS_LIKE_GNU})
target_compile_options(libtint PRIVATE -fvisibility=hidden)
endif()
@@ -574,6 +581,7 @@
# Tint library with fuzzer instrumentation
add_library(libtint-fuzz ${TINT_LIB_SRCS})
tint_default_compile_options(libtint-fuzz)
+ target_link_libraries(libtint-fuzz tint_diagnostic_utils)
if (${COMPILER_IS_LIKE_GNU})
target_compile_options(libtint-fuzz PRIVATE -fvisibility=hidden)
endif()