aboutsummaryrefslogtreecommitdiffhomepage
path: root/Makefile
diff options
context:
space:
mode:
authorIco Doornekamp <ico@zevv.nl>2023-06-01 14:21:15 +0200
committerIco Doornekamp <ico@zevv.nl>2023-06-04 20:02:47 +0200
commitbb4ff05d35fdd01dbd4cd61ae9740c01830d6d86 (patch)
tree6dd9859914b7499ef321be060ba4be77158c08f8 /Makefile
parentFix #1174 - bad debug info causing stack traversal to segfault. (diff)
Added NO_AMALG flag to Makefile to build janet from the individual
source files instead of from the amalgamated janet.c; this considerably speeds up parallel builds on modern CPUs
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile25
1 files changed, 20 insertions, 5 deletions
diff --git a/Makefile b/Makefile
index cd5cfb3f..404f76f2 100644
--- a/Makefile
+++ b/Makefile
@@ -39,6 +39,8 @@ JANET_PATH?=$(LIBDIR)/janet
JANET_MANPATH?=$(PREFIX)/share/man/man1/
JANET_PKG_CONFIG_PATH?=$(LIBDIR)/pkgconfig
JANET_DIST_DIR?=janet-dist
+JANET_BOOT_FLAGS:=. JANET_PATH '$(JANET_PATH)'
+JANET_TARGET_OBJECTS=build/janet.o build/shell.o
JPM_TAG?=master
DEBUGGER=gdb
SONAME_SETTER=-Wl,-soname,
@@ -54,6 +56,12 @@ COMMON_CFLAGS:=-std=c99 -Wall -Wextra -Isrc/include -Isrc/conf -fvisibility=hidd
BOOT_CFLAGS:=-DJANET_BOOTSTRAP -DJANET_BUILD=$(JANET_BUILD) -O0 $(COMMON_CFLAGS) -g
BUILD_CFLAGS:=$(CFLAGS) $(COMMON_CFLAGS)
+# Disable amalgamated build
+ifeq ($(JANET_NO_AMALG), 1)
+ JANET_TARGET_OBJECTS+=$(patsubst src/%.c,build/%.bin.o,$(JANET_CORE_SOURCES))
+ JANET_BOOT_FLAGS+=image-only
+endif
+
# For installation
LDCONFIG:=ldconfig "$(LIBDIR)"
@@ -88,7 +96,7 @@ ifeq ($(findstring MINGW,$(UNAME)), MINGW)
JANET_BOOT:=$(JANET_BOOT).exe
endif
-$(shell mkdir -p build/core build/c build/boot)
+$(shell mkdir -p build/core build/c build/boot build/mainclient)
all: $(JANET_TARGET) $(JANET_LIBRARY) $(JANET_STATIC_LIBRARY) build/janet.h
######################
@@ -172,9 +180,16 @@ $(JANET_BOOT): $(JANET_BOOT_OBJECTS)
# Now the reason we bootstrap in the first place
build/c/janet.c: $(JANET_BOOT) src/boot/boot.janet
- $(RUN) $(JANET_BOOT) . JANET_PATH '$(JANET_PATH)' > $@
+ $(RUN) $(JANET_BOOT) $(JANET_BOOT_FLAGS) > $@
cksum $@
+##################
+##### Quicky #####
+##################
+
+build/%.bin.o: src/%.c $(JANET_HEADERS) $(JANET_LOCAL_HEADERS) Makefile
+ $(HOSTCC) $(BUILD_CFLAGS) -o $@ -c $<
+
########################
##### Amalgamation #####
########################
@@ -200,13 +215,13 @@ build/janet.o: build/c/janet.c $(JANETCONF_HEADER) src/include/janet.h
build/shell.o: build/c/shell.c $(JANETCONF_HEADER) src/include/janet.h
$(HOSTCC) $(BUILD_CFLAGS) -c $< -o $@
-$(JANET_TARGET): build/janet.o build/shell.o
+$(JANET_TARGET): $(JANET_TARGET_OBJECTS)
$(HOSTCC) $(LDFLAGS) $(BUILD_CFLAGS) -o $@ $^ $(CLIBS)
-$(JANET_LIBRARY): build/janet.o build/shell.o
+$(JANET_LIBRARY): $(JANET_TARGET_OBJECTS)
$(HOSTCC) $(LDFLAGS) $(BUILD_CFLAGS) $(SONAME_SETTER)$(SONAME) -shared -o $@ $^ $(CLIBS)
-$(JANET_STATIC_LIBRARY): build/janet.o build/shell.o
+$(JANET_STATIC_LIBRARY): $(JANET_TARGET_OBJECTS)
$(HOSTAR) rcs $@ $^
###################