Makefile: parallel by default

This commit is contained in:
Jean Sirmai 2024-06-29 17:29:45 +02:00
parent d570d253b9
commit 3850f371a3
Signed by: jean
GPG Key ID: FB3115C340E057E3
1 changed files with 19 additions and 11 deletions

View File

@ -2,7 +2,8 @@
.DELETE_ON_ERROR: $(BINDIR)/Getting_Started_with_GTK .DELETE_ON_ERROR: $(BINDIR)/Getting_Started_with_GTK
.DEFAULT_GOAL: all .DEFAULT_GOAL: all
NTHREADS= $(shell nproc) CPUS ?= $(shell (nproc --all || sysctl -n hw.ncpu) 2>/dev/null || echo 1)
MAKEFLAGS += --jobs=$(CPUS)
CC=gcc CC=gcc
CFLAGS=`pkg-config --cflags gtk4 gl glib-2.0 libxml-2.0` CFLAGS=`pkg-config --cflags gtk4 gl glib-2.0 libxml-2.0`
@ -27,10 +28,12 @@ all: $(BINDIR)/gem-graph-client
# Directories # Directories
# #
$(BUILDDIR): $(BUILDDIR):
mkdir -p $@ @mkdir -p $@
@echo " MKDIR $@"
$(BINDIR): $(BINDIR):
mkdir -p $@ @mkdir -p $@
@echo " MKDIR $@"
# #
# Dependencies # Dependencies
@ -38,34 +41,39 @@ $(BINDIR):
-include $(DEPENDENCIES) -include $(DEPENDENCIES)
$(BUILDDIR)/%.d: %.c Makefile | $(BUILDDIR) $(BUILDDIR)/%.d: %.c Makefile | $(BUILDDIR)
mkdir -p $(shell dirname $@) @mkdir -p $(shell dirname $@)
$(CC) $(CFLAGS) -MM -MT $(@:%.d=%.o) -MF $@ $< @$(CC) $(CFLAGS) -MM -MT $(@:%.d=%.o) -MF $@ $<
@echo " DEP $@"
# #
# Main program # Main program
# #
$(BINDIR)/gem-graph-client: $(OBJECTS) | $(BINDIR) $(BINDIR)/gem-graph-client: $(OBJECTS) | $(BINDIR)
$(CC) $(LDFLAGS) $(WARNINGS) $(DEBUG) $(OPTIMIZE) $^ -o $@ @$(CC) $(LDFLAGS) $(WARNINGS) $(DEBUG) $(OPTIMIZE) $^ -o $@
@echo " LD $@"
# #
# Objects # Objects
# #
$(BUILDDIR)/%.o: %.c Makefile | $(BUILDDIR) $(BUILDDIR)/%.o: %.c Makefile | $(BUILDDIR)
mkdir -p $(shell dirname $@) @mkdir -p $(shell dirname $@)
$(CC) $(CFLAGS) $(WARNINGS) $(DEBUG) $(OPTIMIZE) -c $< -o $@ @$(CC) $(CFLAGS) $(WARNINGS) $(DEBUG) $(OPTIMIZE) -c $< -o $@
@echo " CC $@"
# #
# Virtual recipes # Virtual recipes
# #
install: install:
echo "Installing is not supported" @echo "Installing is not supported"
run: $(BINDIR)/gem-graph-client run: $(BINDIR)/gem-graph-client
$(BINDIR)/gem-graph-client $(BINDIR)/gem-graph-client
clean: clean:
rm -rf $(BINDIR) @rm -rf $(BINDIR)
rm -rf $(BUILDDIR) @echo " RM $(BINDIR)"
@rm -rf $(BUILDDIR)
@echo " RM $(BUILDDIR)"
# More docs : # More docs :