diff --git a/Makefile b/Makefile index e6ae827..bbd3ce8 100644 --- a/Makefile +++ b/Makefile @@ -33,6 +33,8 @@ CONFIG_LTO=y #CONFIG_WERROR=y # force 32 bit build for some utilities #CONFIG_M32=y +# build with -Os instead of -O2 +#CONFIG_SMALL=y ifdef CONFIG_DARWIN # use clang instead of gcc @@ -52,6 +54,13 @@ CONFIG_BIGNUM=y OBJDIR=.obj +CFLAGS_ENV:=$(CFLAGS) +LDFLAGS_ENV:=$(LDFLAGS) + +HOST_BUILD= +CFLAGS=$(if $(HOST_BUILD),,$(CFLAGS_ENV)) +LDFLAGS=$(if $(HOST_BUILD),,$(LDFLAGS_ENV)) + ifdef CONFIG_WIN32 ifdef CONFIG_M32 CROSS_PREFIX=i686-w64-mingw32- @@ -66,7 +75,7 @@ endif ifdef CONFIG_CLANG HOST_CC=clang CC=$(CROSS_PREFIX)clang - CFLAGS=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d + CFLAGS += -g -Wall -MMD -MF $(OBJDIR)/$(@F).d CFLAGS += -Wextra CFLAGS += -Wno-sign-compare CFLAGS += -Wno-missing-field-initializers @@ -87,7 +96,7 @@ ifdef CONFIG_CLANG else HOST_CC=gcc CC=$(CROSS_PREFIX)gcc - CFLAGS=-g -Wall -MMD -MF $(OBJDIR)/$(@F).d + CFLAGS += -g -Wall -MMD -MF $(OBJDIR)/$(@F).d CFLAGS += -Wno-array-bounds -Wno-format-truncation ifdef CONFIG_LTO AR=$(CROSS_PREFIX)gcc-ar @@ -110,9 +119,13 @@ endif CFLAGS+=$(DEFINES) CFLAGS_DEBUG=$(CFLAGS) -O0 CFLAGS_SMALL=$(CFLAGS) -Os +ifdef CONFIG_SMALL +CFLAGS_OPT=$(CFLAGS) -Os +else CFLAGS_OPT=$(CFLAGS) -O2 +endif CFLAGS_NOLTO:=$(CFLAGS_OPT) -LDFLAGS=-g +LDFLAGS+=-g ifdef CONFIG_LTO CFLAGS_SMALL+=-flto CFLAGS_OPT+=-flto @@ -175,7 +188,7 @@ QJS_OBJS+=$(OBJDIR)/qjscalc.o endif HOST_LIBS=-lm -ldl -lpthread -LIBS=-lm +LIBS+=-lm ifndef CONFIG_WIN32 LIBS+=-ldl -lpthread endif @@ -194,6 +207,8 @@ qjsc$(EXE): $(OBJDIR)/qjsc.o $(QJS_LIB_OBJS) ifneq ($(CROSS_PREFIX),) +$(QJSC): HOST_BUILD=1 + $(QJSC): $(OBJDIR)/qjsc.host.o \ $(patsubst %.o, %.host.o, $(QJS_LIB_OBJS)) $(HOST_CC) $(LDFLAGS) -o $@ $^ $(HOST_LIBS) @@ -261,6 +276,8 @@ run-test262-32: $(patsubst %.o, %.m32.o, $(OBJDIR)/run-test262.o $(QJS_LIB_OBJS) $(OBJDIR)/%.o: %.c | $(OBJDIR) $(CC) $(CFLAGS_OPT) -c -o $@ $< +$(OBJDIR)/%.host.o: HOST_BUILD=1 + $(OBJDIR)/%.host.o: %.c | $(OBJDIR) $(HOST_CC) $(CFLAGS_OPT) -c -o $@ $< @@ -285,6 +302,8 @@ $(OBJDIR)/%.check.o: %.c | $(OBJDIR) regexp_test: libregexp.c libunicode.c cutils.c $(CC) $(LDFLAGS) $(CFLAGS) -DTEST -o $@ libregexp.c libunicode.c cutils.c $(LIBS) +unicode_gen: HOST_BUILD=1 + unicode_gen: $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o libunicode.c unicode_gen_def.h $(HOST_CC) $(LDFLAGS) $(CFLAGS) -o $@ $(OBJDIR)/unicode_gen.host.o $(OBJDIR)/cutils.host.o