From 6f413e46e2e2ab5a72cf081fbb1c68c53fb6a7bc Mon Sep 17 00:00:00 2001 From: Milk-Cool Date: Thu, 2 Nov 2023 17:37:50 +0300 Subject: [PATCH] faster compilation times! --- .gitignore | 8 +++++--- Makefile | 28 +++++++++++++++++++++++----- 2 files changed, 28 insertions(+), 8 deletions(-) diff --git a/.gitignore b/.gitignore index 0826892..944ef15 100644 --- a/.gitignore +++ b/.gitignore @@ -133,8 +133,7 @@ dist # CUSTOM ENTRIES # Object files -flipper/**/*.o -helpers/**/*.o +**/*.o # Test script test.sh @@ -161,4 +160,7 @@ wasm/ .gdb_history # Storage -flippulator_sd \ No newline at end of file +flippulator_sd + +# Build timestamps +timestamps.json \ No newline at end of file diff --git a/Makefile b/Makefile index 7641cf8..f0f9809 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,7 @@ HELPERS = helpers/ APP = flippulator_app_copy/ SOURCES = $(shell find $(LIBS) -name "*.c") $(shell find $(LIBS_HAL) -name "*.c") $(shell find $(HELPERS) -name "*.c") $(shell find $(EXT_LIB_ALL) -name "*.c") SRC_APP = $(shell find $(APP) -name "*.c") -#OBJECTS = ${subst .c,.o,$(SOURCES)} +OBJECTS = ${subst .c,.o,$(SOURCES)} ${subst .c,.o,$(SRC_APP)} OUT_DIR = $(shell cat /tmp/flippulator_temp_out_app_dir) OUT_APP_NAME = $(shell cat /tmp/flippulator_temp_out_app_name) CC_EXTRA = $(shell cat /tmp/flippulator_temp_cc_extra) @@ -18,13 +18,16 @@ OUT_ALL = $(OUT_DIR) $(OUT_APP) #OUT_LIB_NAME = flipper #OUT_LIB = lib$(OUT_LIB_NAME).a #CC_PREFIX = gcc -c -Wall# -fPIC -CC_PREFIX_FINAL = gcc -O2 -Wall -Wno-main -g -m32 -D_FLIPPULATOR +CC_PREFIX_FINAL = gcc -O2 -Wall -Wno-main -g -m32 -DFLIPPULATOR_APP_ID=\"$(OUT_APP_NAME)\" -D_FLIPPULATOR +CC_POSTFIX_FINAL = -lSDL2 -lSDL2_ttf -lm -lbsd BUILD_LIB_heatshrink_PATH = lib/heatshrink/ BUILD_LIB_heatshrink = $(BUILD_LIB_heatshrink_PATH)libheatshrink_static.a $(BUILD_LIB_heatshrink_PATH)libheatshrink_dynamic.a #CC_PREFIX = clang -c CR_TEXT = \ "The FontStruction “HaxrCorp 4089” (https://fontstruct.com/fontstructions/show/192981) by “sahwar” is licensed under a Creative Commons Attribution Share Alike license (http://creativecommons.org/licenses/by-sa/3.0/)." WASM_DIR = wasm/ +TIMESTAMPS = timestamps.json +TIMESTAMPS_TMP = /tmp/flippulator_timestamps.json all: $(OUT_ALL) @@ -34,7 +37,22 @@ $(OUT_DIR): $(OUT_APP) $(SRC_FONT) $(OUT_APP): mkdir $(OUT_DIR) - $(CC_PREFIX_FINAL) $(CC_EXTRA) -I$(LIBS) -I$(LIBS_HAL) -I$(HELPERS) -I$(EXT_LIB_ALL) $(SRC_APP) $(SOURCES) -DFLIPPULATOR_APP_ID=\"$(OUT_APP_NAME)\" -lSDL2 -lSDL2_ttf -lm -lbsd -o $(OUT_APP) + touch $(TIMESTAMPS) + if [ ! -s $(TIMESTAMPS) ]; then \ + echo '{}' > $(TIMESTAMPS); \ + fi +# $(CC_PREFIX_FINAL) $(CC_EXTRA) -I$(LIBS) -I$(LIBS_HAL) -I$(HELPERS) -I$(EXT_LIB_ALL) $(SRC_APP) $(SOURCES) -lSDL2 -lSDL2_ttf -lm -lbsd -o $(OUT_APP) + for file in $(SRC_APP) $(SOURCES); do \ + dateextr=`date -r "$$file" +%s`; \ + datejson=`jq '.["'$$file'"]' $(TIMESTAMPS) | sed 's/"//g'`; \ + if [ "$$dateextr" != "$$datejson" ]; then \ + objname=`echo "$$file" | sed 's/\.c/\.o/g'`; \ + $(CC_PREFIX_FINAL) -c $(CC_EXTRA) -I$(LIBS) -I$(LIBS_HAL) -I$(HELPERS) -I$(EXT_LIB_ALL) "$$file" -o $$objname $(CC_POSTFIX_FINAL); \ + echo CC: $$file = $$objname; \ + jq '.["'$$file'"] = "'$$dateextr'"' $(TIMESTAMPS) > $(TIMESTAMPS_TMP); mv $(TIMESTAMPS_TMP) $(TIMESTAMPS); \ + fi; \ + done + $(CC_PREFIX_FINAL) $(OBJECTS) -o $(OUT_APP) $(CC_POSTFIX_FINAL) #$(BUILD_LIB_heatshrink): # make -C lib/heatshrink libraries @@ -53,6 +71,6 @@ clean: $(WASM_DIR): mkdir $(WASM_DIR) -wasm: $(WASM_DIR) - emcc -O2 $(SOURCES) $(SRC_APP) $(CC_EXTRA) -g -s WASM=1 -s USE_SDL=2 -s USE_SDL_TTF=2 --preload-file $(SRC_FONT) -o $(WASM_DIR)index.html -I$(LIBS) -I$(LIBS_HAL) -I$(EXT_LIB_ALL) -I$(HELPERS) +#wasm: $(WASM_DIR) +# emcc -O2 $(SOURCES) $(SRC_APP) $(CC_EXTRA) -g -s WASM=1 -s USE_SDL=2 -s USE_SDL_TTF=2 --preload-file $(SRC_FONT) -o $(WASM_DIR)index.html -I$(LIBS) -I$(LIBS_HAL) -I$(EXT_LIB_ALL) -I$(HELPERS)