aboutsummaryrefslogtreecommitdiff
path: root/buildconf
diff options
context:
space:
mode:
authorGravatar Benjamin Barenblat <bbarenblat@gmail.com>2021-12-26 13:53:22 -0500
committerGravatar Benjamin Barenblat <bbarenblat@gmail.com>2021-12-26 14:55:31 -0500
commit4b49b1d0cc23f909d1be89cf8f816f820b343e0a (patch)
tree331616bf0cf1643e9abec6a49e2ead10e58ed0aa /buildconf
parent520bbd892ada57a5c93680eae3c9d7eb691073af (diff)
Don’t hard-code escape sequences
Instead of hard-coding VT100-compatible escape sequences, parse the system terminfo database and read escape sequences from it. This is both more flexible (it should work well on more terminals) and more efficient (it won’t insert padding on terminals that don’t need it).
Diffstat (limited to 'buildconf')
-rw-r--r--buildconf/asan.ninja2
-rw-r--r--buildconf/common.ninja97
-rw-r--r--buildconf/dbg.ninja2
-rw-r--r--buildconf/fastbuild.ninja2
4 files changed, 95 insertions, 8 deletions
diff --git a/buildconf/asan.ninja b/buildconf/asan.ninja
index 8f79f9e..61f1fbc 100644
--- a/buildconf/asan.ninja
+++ b/buildconf/asan.ninja
@@ -17,4 +17,6 @@ third_party_cxxflags = -fsanitize=address
ldflags = -fsanitize=address
+re2cflags = -Werror
+
subninja buildconf/common.ninja
diff --git a/buildconf/common.ninja b/buildconf/common.ninja
index 256df10..a2dab9d 100644
--- a/buildconf/common.ninja
+++ b/buildconf/common.ninja
@@ -27,6 +27,8 @@ cxxflags = $common_cxxflags -Wall -Wextra -Wno-logical-op-parentheses $
-Wno-sign-compare $cxxflags
third_party_cxxflags = $common_cxxflags $third_party_cxxflags
+re2cflags = --empty-class error --no-generation-date -W $re2cflags
+
rule antlr
command = antlr4 $antlrflags $in
description = Generating parser from $in
@@ -45,6 +47,61 @@ rule link
command = g++ $ldflags -o $out $in $libs -pthread
description = Linking $out
+rule re2c
+ command = re2c $re2cflags $in -o $out
+ description = Generating DFAs in $out
+
+build goldfishterm/internal/emit.o: cxx goldfishterm/internal/emit.cc
+build goldfishterm/internal/string_capability.cc: re2c $
+ goldfishterm/internal/string_capability.re
+ re2cflags = $re2cflags
+build goldfishterm/internal/string_capability.o: cxx $
+ goldfishterm/internal/string_capability.cc
+build goldfishterm/simple.o: cxx goldfishterm/simple.cc
+build goldfishterm/terminfo.o: cxx goldfishterm/terminfo.cc
+
+build goldfishterm/internal/string_capability_test.o: cxx $
+ goldfishterm/internal/string_capability_test.cc
+build goldfishterm/internal/string_capability_test: link $
+ goldfishterm/internal/emit.o goldfishterm/internal/string_capability.o $
+ goldfishterm/internal/string_capability_test.o goldfishterm/terminfo.o $
+ $absl/strings/cord.a $absl/strings/cordz_info.a $
+ $absl/strings/cord_internal.a $absl/strings/cordz_functions.a $
+ $absl/strings/cordz_handle.a $absl/hash/hash.a $absl/hash/city.a $
+ $absl/types/bad_variant_access.a $absl/hash/low_level_hash.a $
+ $absl/container/raw_hash_set.a $absl/container/hashtablez_sampler.a $
+ $absl/profiling/exponential_biased.a $
+ $absl/synchronization/synchronization.a $
+ $absl/synchronization/graphcycles_internal.a $absl/debugging/stacktrace.a $
+ $absl/debugging/symbolize.a $absl/debugging/debugging_internal.a $
+ $absl/debugging/demangle_internal.a $absl/base/malloc_internal.a $
+ $absl/strings/str_format_internal.a $absl/time/time.a $
+ $absl/time/civil_time.a $absl/strings/strings.a $absl/strings/internal.a $
+ $absl/base/base.a $absl/base/spinlock_wait.a $absl/numeric/int128.a $
+ $absl/time/time_zone.a $absl/types/bad_optional_access.a $
+ $absl/base/throw_delegate.a $
+ $absl/base/raw_logging_internal.a $absl/base/log_severity.a
+ libs = -lgmock_main -lgmock -lgtest -lm -lrt
+
+build goldfishterm/terminfo_system_test.o: cxx $
+ goldfishterm/terminfo_system_test.cc
+build goldfishterm/terminfo_system_test: link goldfishterm/terminfo.o $
+ goldfishterm/terminfo_system_test.o $absl/types/bad_optional_access.a $
+ $absl/strings/str_format_internal.a $absl/strings/strings.a $
+ $absl/strings/internal.a $absl/base/base.a $absl/base/spinlock_wait.a $
+ $absl/numeric/int128.a $absl/base/throw_delegate.a $
+ $absl/base/raw_logging_internal.a $absl/base/log_severity.a
+ libs = -lrt
+
+build goldfishterm/terminfo_test.o: cxx goldfishterm/terminfo_test.cc
+build goldfishterm/terminfo_test: link goldfishterm/terminfo.o $
+ goldfishterm/terminfo_test.o $absl/strings/str_format_internal.a $
+ $absl/strings/strings.a $absl/strings/internal.a $absl/base/base.a $
+ $absl/base/spinlock_wait.a $absl/numeric/int128.a $
+ $absl/base/throw_delegate.a $absl/types/bad_optional_access.a $
+ $absl/base/raw_logging_internal.a $absl/base/log_severity.a
+ libs = -lgmock_main -lgmock -lgtest -lrt
+
build | src/CalculatorBaseVisitor.cpp src/CalculatorBaseVisitor.h $
src/Calculator.interp src/CalculatorLexer.cpp src/CalculatorLexer.h $
src/CalculatorLexer.interp src/CalculatorLexer.tokens $
@@ -128,21 +185,24 @@ build src/parser_driver_test: link src/builtin.o src/CalculatorBaseVisitor.o $
build ec: link src/CalculatorBaseVisitor.o src/CalculatorLexer.o $
src/CalculatorParser.o src/CalculatorVisitor.o src/builtin.o $
src/language.o src/main.o src/parser_driver.o src/util.o src/ui/stream.o $
- src/ui/terminal.o src/ui/terminal/line.o $absl/strings/cord.a $
- $absl/strings/cordz_info.a $absl/strings/cord_internal.a $
- $absl/strings/cordz_functions.a $absl/strings/cordz_handle.a $
- $absl/hash/hash.a $absl/hash/city.a $absl/types/bad_variant_access.a $
+ src/ui/terminal.o src/ui/terminal/line.o goldfishterm/internal/emit.o $
+ goldfishterm/internal/string_capability.o goldfishterm/simple.o $
+ goldfishterm/terminfo.o $absl/strings/cord.a $absl/strings/cordz_info.a $
+ $absl/strings/cord_internal.a $absl/strings/cordz_functions.a $
+ $absl/strings/cordz_handle.a $absl/hash/hash.a $absl/hash/city.a $
$absl/hash/low_level_hash.a $absl/container/raw_hash_set.a $
- $absl/types/bad_optional_access.a $absl/container/hashtablez_sampler.a $
- $absl/profiling/exponential_biased.a $
+ $absl/container/hashtablez_sampler.a $absl/profiling/exponential_biased.a $
+ $absl/strings/str_format_internal.a $
$absl/synchronization/synchronization.a $
$absl/synchronization/graphcycles_internal.a $absl/debugging/stacktrace.a $
$absl/debugging/symbolize.a $absl/debugging/debugging_internal.a $
$absl/debugging/demangle_internal.a $absl/base/malloc_internal.a $
$absl/time/time.a $absl/time/civil_time.a $absl/strings/strings.a $
$absl/strings/internal.a $absl/base/base.a $absl/base/spinlock_wait.a $
- $absl/numeric/int128.a $absl/time/time_zone.a $absl/base/throw_delegate.a $
- $absl/base/raw_logging_internal.a $absl/base/log_severity.a
+ $absl/numeric/int128.a $absl/time/time_zone.a $
+ $absl/types/bad_optional_access.a $absl/base/throw_delegate.a $
+ $absl/types/bad_variant_access.a $absl/base/raw_logging_internal.a $
+ $absl/base/log_severity.a
libs = -lantlr4-runtime -lm -lrt
# //absl/base
@@ -372,6 +432,27 @@ build $absl/strings/internal/ostringstream.o: cxx $
build $absl/strings/internal/utf8.o: cxx $absl/strings/internal/utf8.cc
cxxflags = $third_party_cxxflags
+# //absl/strings:str_format_internal
+build $absl/strings/str_format_internal.a: ar $
+ $absl/strings/internal/str_format/arg.o $
+ $absl/strings/internal/str_format/bind.o $
+ $absl/strings/internal/str_format/extension.o $
+ $absl/strings/internal/str_format/float_conversion.o $
+ $absl/strings/internal/str_format/output.o $
+ $absl/strings/internal/str_format/parser.o
+build $absl/strings/internal/str_format/arg.o: cxx $absl/strings/internal/str_format/arg.cc
+ cxxflags = $third_party_cxxflags
+build $absl/strings/internal/str_format/bind.o: cxx $absl/strings/internal/str_format/bind.cc
+ cxxflags = $third_party_cxxflags
+build $absl/strings/internal/str_format/extension.o: cxx $absl/strings/internal/str_format/extension.cc
+ cxxflags = $third_party_cxxflags
+build $absl/strings/internal/str_format/float_conversion.o: cxx $absl/strings/internal/str_format/float_conversion.cc
+ cxxflags = $third_party_cxxflags
+build $absl/strings/internal/str_format/output.o: cxx $absl/strings/internal/str_format/output.cc
+ cxxflags = $third_party_cxxflags
+build $absl/strings/internal/str_format/parser.o: cxx $absl/strings/internal/str_format/parser.cc
+ cxxflags = $third_party_cxxflags
+
# //absl/synchronization
build $absl/synchronization/synchronization.a: ar $
$absl/synchronization/barrier.o $absl/synchronization/blocking_counter.o $
diff --git a/buildconf/dbg.ninja b/buildconf/dbg.ninja
index cce13eb..4486e80 100644
--- a/buildconf/dbg.ninja
+++ b/buildconf/dbg.ninja
@@ -15,4 +15,6 @@
cxxflags = -Og -g3 -Werror
third_party_cxxflags = -Og -g3
+re2cflags = -Werror
+
subninja buildconf/common.ninja
diff --git a/buildconf/fastbuild.ninja b/buildconf/fastbuild.ninja
index c321e30..8cd042a 100644
--- a/buildconf/fastbuild.ninja
+++ b/buildconf/fastbuild.ninja
@@ -14,4 +14,6 @@
cxxflags = -Werror
+re2cflags = -Werror
+
subninja buildconf/common.ninja