diff --git a/Makefile b/Makefile index f9e65d1b2..d3d8bbc83 100644 --- a/Makefile +++ b/Makefile @@ -157,6 +157,7 @@ include third_party/quickjs/quickjs.mk include third_party/lz4cli/lz4cli.mk include third_party/zip/zip.mk include third_party/unzip/unzip.mk +include third_party/double-conversion/double-conversion.mk include tool/build/lib/buildlib.mk include third_party/chibicc/chibicc.mk include third_party/chibicc/test/test.mk diff --git a/third_party/double-conversion/double-conversion.mk b/third_party/double-conversion/double-conversion.mk new file mode 100644 index 000000000..a19a123ef --- /dev/null +++ b/third_party/double-conversion/double-conversion.mk @@ -0,0 +1,60 @@ +#-*-mode:makefile-gmake;indent-tabs-mode:t;tab-width:8;coding:utf-8-*-┐ +#───vi: set et ft=make ts=8 tw=8 fenc=utf-8 :vi───────────────────────┘ + +PKGS += THIRD_PARTY_DOUBLECONVERSION + +THIRD_PARTY_DOUBLECONVERSION_ARTIFACTS += THIRD_PARTY_DOUBLECONVERSION_A +THIRD_PARTY_DOUBLECONVERSION = $(THIRD_PARTY_DOUBLECONVERSION_A_DEPS) $(THIRD_PARTY_DOUBLECONVERSION_A) +THIRD_PARTY_DOUBLECONVERSION_A = o/$(MODE)/third_party/double-conversion/libdouble-conversion.a + +THIRD_PARTY_DOUBLECONVERSION_A_FILES := $(wildcard third_party/double-conversion/*) +THIRD_PARTY_DOUBLECONVERSION_A_SRCS_CC = $(filter %.cc,$(THIRD_PARTY_DOUBLECONVERSION_A_FILES)) +THIRD_PARTY_DOUBLECONVERSION_A_HDRS = $(filter %.h,$(THIRD_PARTY_DOUBLECONVERSION_A_FILES)) + +THIRD_PARTY_DOUBLECONVERSION_A_OBJS = \ + $(THIRD_PARTY_DOUBLECONVERSION_A_SRCS_CC:%.cc=o/$(MODE)/%.o) + +THIRD_PARTY_DOUBLECONVERSION_A_CHECKS = \ + $(THIRD_PARTY_DOUBLECONVERSION_A).pkg \ + $(THIRD_PARTY_DOUBLECONVERSION_A_HDRS:%=o/$(MODE)/%.okk) + +THIRD_PARTY_DOUBLECONVERSION_A_DIRECTDEPS = \ + LIBC_INTRIN \ + LIBC_NEXGEN32E \ + LIBC_MEM \ + LIBC_RUNTIME \ + LIBC_RAND \ + LIBC_STDIO \ + LIBC_FMT \ + LIBC_SYSV \ + LIBC_STR \ + LIBC_STUBS \ + LIBC_TINYMATH \ + THIRD_PARTY_GDTOA \ + THIRD_PARTY_LIBCXX + +THIRD_PARTY_DOUBLECONVERSION_A_DEPS := \ + $(call uniq,$(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_A_DIRECTDEPS),$($(x)))) + +$(THIRD_PARTY_DOUBLECONVERSION_A): \ + third_party/double-conversion/ \ + $(THIRD_PARTY_DOUBLECONVERSION_A).pkg \ + $(THIRD_PARTY_DOUBLECONVERSION_A_OBJS) + +$(THIRD_PARTY_DOUBLECONVERSION_A).pkg: \ + $(THIRD_PARTY_DOUBLECONVERSION_A_OBJS) \ + $(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_A_DIRECTDEPS),$($(x)_A).pkg) + +$(THIRD_PARTY_DOUBLECONVERSION_A_OBJS): \ + OVERRIDE_CXXFLAGS += \ + -ffunction-sections \ + -fdata-sections + +THIRD_PARTY_DOUBLECONVERSION_LIBS = $(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_ARTIFACTS),$($(x))) +THIRD_PARTY_DOUBLECONVERSION_SRCS = $(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_ARTIFACTS),$($(x)_SRCS)) +THIRD_PARTY_DOUBLECONVERSION_HDRS = $(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_ARTIFACTS),$($(x)_HDRS)) +THIRD_PARTY_DOUBLECONVERSION_CHECKS = $(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_ARTIFACTS),$($(x)_CHECKS)) +THIRD_PARTY_DOUBLECONVERSION_OBJS = $(foreach x,$(THIRD_PARTY_DOUBLECONVERSION_ARTIFACTS),$($(x)_OBJS)) + +.PHONY: o/$(MODE)/third_party/double-conversion +o/$(MODE)/third_party/double-conversion: $(THIRD_PARTY_DOUBLECONVERSION_CHECKS) diff --git a/third_party/double-conversion/string-to-double.cc b/third_party/double-conversion/string-to-double.cc index 4a0634363..752cc0cea 100644 --- a/third_party/double-conversion/string-to-double.cc +++ b/third_party/double-conversion/string-to-double.cc @@ -52,9 +52,10 @@ namespace double_conversion { namespace { inline char ToLower(char ch) { - static const std::ctype& cType = + /* static const std::ctype& cType = std::use_facet >(std::locale::classic()); - return cType.tolower(ch); + return cType.tolower(ch); */ + return tolower(ch); } inline char Pass(char ch) {