add recipe to build libdouble-conversion.a

some locale function was missing in libcxx, so used regular tolower
This commit is contained in:
ahgamut 2022-06-24 10:59:51 +05:30
parent 0fe17174a0
commit 3d30dcd204
3 changed files with 64 additions and 2 deletions

View file

@ -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

View file

@ -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)

View file

@ -52,9 +52,10 @@ namespace double_conversion {
namespace {
inline char ToLower(char ch) {
static const std::ctype<char>& cType =
/* static const std::ctype<char>& cType =
std::use_facet<std::ctype<char> >(std::locale::classic());
return cType.tolower(ch);
return cType.tolower(ch); */
return tolower(ch);
}
inline char Pass(char ch) {