]> git.earman.xyz Git - sensor-watch.git/commitdiff
Parallelize alternate fw builds (#66)
authorGeorge Hahn <George.Hahn.VHS@gmail.com>
Mon, 30 May 2022 02:30:02 +0000 (20:30 -0600)
committerGitHub <noreply@github.com>
Mon, 30 May 2022 02:30:02 +0000 (22:30 -0400)
make.mk
rules.mk

diff --git a/make.mk b/make.mk
index ac5be7752b3cc5696da8fb22595fba232e1d4d90..d8e2bf8a391d93410cf52a06d1fbb2f3c12a296c 100644 (file)
--- a/make.mk
+++ b/make.mk
@@ -9,12 +9,38 @@ endif
 ##############################################################################
 .PHONY: all directory clean size
 
+# OS detection, adapted from https://gist.github.com/sighingnow/deee806603ec9274fd47
+DETECTED_OS :=
+ifeq ($(OS),Windows_NT)
+  DETECTED_OS = WINDOWS
+else
+  UNAME_S := $(shell uname -s)
+  ifeq ($(UNAME_S),Linux)
+    DETECTED_OS = LINUX
+  endif
+  ifeq ($(UNAME_S),Darwin)
+    DETECTED_OS = OSX
+  endif
+endif
+$(if ${VERBOSE},$(info OS detected: $(DETECTED_OS)))
+
 ifeq ($(OS), Windows_NT)
   MKDIR = gmkdir
 else
   MKDIR = mkdir
 endif
 
+ifeq ($(DETECTED_OS), LINUX)
+  MAKEFLAGS += -j `nproc`
+endif
+ifeq ($(DETECTED_OS), OSX)
+  NPROCS = $(shell sysctl hw.ncpu  | grep -o '[0-9]\+')
+  MAKEFLAGS += -j $(NPROCS)
+endif
+ifeq ($(DETECTED_OS), WINDOWS)
+  MAKEFLAGS += -j $(NUMBER_OF_PROCESSORS)
+endif
+
 ifndef EMSCRIPTEN
 CC = arm-none-eabi-gcc
 OBJCOPY = arm-none-eabi-objcopy
index 2f2f39225c09acba0150ededb3f4227f58788c64..8de3fc1e46700b0457f5d09582001f07c0175d85 100644 (file)
--- a/rules.mk
+++ b/rules.mk
@@ -7,9 +7,9 @@ SUBMODULES = tinyusb
 COBRA = cobra -f
 
 ifndef EMSCRIPTEN
-all: directory $(SUBMODULES) $(BUILD)/$(BIN).elf $(BUILD)/$(BIN).hex $(BUILD)/$(BIN).bin $(BUILD)/$(BIN).uf2 size
+all: $(BUILD)/$(BIN).elf $(BUILD)/$(BIN).hex $(BUILD)/$(BIN).bin $(BUILD)/$(BIN).uf2 size
 else
-all: directory $(SUBMODULES) $(BUILD)/$(BIN).html
+all: $(BUILD)/$(BIN).html
 endif
 
 $(BUILD)/$(BIN).html: $(OBJS)
@@ -35,13 +35,14 @@ $(BUILD)/$(BIN).uf2: $(BUILD)/$(BIN).bin
        @echo UF2CONV $@
        @$(UF2) $^ -co $@
 
+.phony: $(SUBMODULES)
 $(SUBMODULES):
        git submodule update --init
 
 install:
        @$(UF2) -D $(BUILD)/$(BIN).uf2
 
-%.o:
+$(BUILD)/%.o: | $(SUBMODULES) directory
        @echo CC $@
        @$(CC) $(CFLAGS) $(filter %/$(subst .o,.c,$(notdir $@)), $(SRCS)) -c -o $@
 
@@ -59,4 +60,6 @@ clean:
 analyze:
        @$(COBRA) basic $(INCLUDES) $(DEFINES) $(SRCS)
 
--include $(wildcard $(BUILD)/*.d)
+DEPFILES := $(SRCS:%.c=$(BUILD)/%.d)
+
+-include $(wildcard $(DEPFILES))