Makefiles are now better at handling -j.

This commit is contained in:
2025-03-22 19:18:34 -07:00
parent e866f0e466
commit c463c71375
4 changed files with 40 additions and 30 deletions

View File

@@ -22,15 +22,20 @@ FRAMEWORKS = -framework AppKit -framework ServiceManagement
LIBS = -lzip LIBS = -lzip
zip: default: prereq zip cmdbar_updater $(EXEC).app
prereq:
@mkdir -p arm64 x86_64
zip: prereq
@$(MAKE) -C libs/Zip/Zip FLAGS=$(FLAGS) CFLAGS=$(CFLAGS) \ @$(MAKE) -C libs/Zip/Zip FLAGS=$(FLAGS) CFLAGS=$(CFLAGS) \
MACOS_VERSION=$(MACOS_VERSION) all MACOS_VERSION=$(MACOS_VERSION)
cmdbar_updater: cmdbar_updater:
@$(MAKE) -C updater FLAGS=$(FLAGS) all @$(MAKE) -C updater FLAGS=$(FLAGS)
@cp updater/$@ . @cp updater/$@ .
./arm64/%.o: %.swift ./arm64/%.o: %.swift zip
swift -frontend -c $(if $(DEBUG), -D DEBUG,) \ swift -frontend -c $(if $(DEBUG), -D DEBUG,) \
-target arm64-apple-macos$(MACOS_VERSION) $(FLAGS) \ -target arm64-apple-macos$(MACOS_VERSION) $(FLAGS) \
-I./libs/Zip/Zip -I./libs/Zip/Zip/arm64 -L./libs/Zip/Zip/arm64 \ -I./libs/Zip/Zip -I./libs/Zip/Zip/arm64 -L./libs/Zip/Zip/arm64 \
@@ -38,7 +43,7 @@ cmdbar_updater:
-sdk $(SDK) -module-name $(EXEC) -o $@ -emit-module && touch $@ -sdk $(SDK) -module-name $(EXEC) -o $@ -emit-module && touch $@
ifdef UNIVERSAL ifdef UNIVERSAL
./x86_64/%.o: %.swift ./x86_64/%.o: %.swift zip
@swift -frontend -c $(if $(DEBUG), -D DEBUG,) \ @swift -frontend -c $(if $(DEBUG), -D DEBUG,) \
-target x86_64-apple-macos$(MACOS_VERSION) $(FLAGS) \ -target x86_64-apple-macos$(MACOS_VERSION) $(FLAGS) \
-I./libs/Zip/Zip -I./libs/Zip/Zip/x86_64 -L./libs/Zip/Zip/x86_64 \ -I./libs/Zip/Zip -I./libs/Zip/Zip/x86_64 -L./libs/Zip/Zip/x86_64 \
@@ -92,11 +97,8 @@ $(EXEC).app: $(EXEC)
codesign -s ${APPLE_DEVELOPER_ID_APPLICATION} -f --timestamp \ codesign -s ${APPLE_DEVELOPER_ID_APPLICATION} -f --timestamp \
-o runtime $(EXEC).app) -o runtime $(EXEC).app)
all: zip cmdbar_updater $(EXEC).app
clean: clean:
rm -rf $(EXEC) $(EXEC).app cmdbar_updater arm64 x86_64 rm -rf $(EXEC) $(EXEC).app cmdbar_updater arm64 x86_64
mkdir arm64 x86_64
clean-all: clean clean-all: clean
$(MAKE) -C libs/Zip/Zip clean-all $(MAKE) -C libs/Zip/Zip clean-all

View File

@@ -2,32 +2,31 @@ CC = swiftc
CFLAGS = -g CFLAGS = -g
FLAGS = -g FLAGS = -g
build_minizip: default: prereq build_minizip ./arm64/libzip.a ./x86_64/libzip.a
@:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined))
@$(MAKE) -C minizip CFLAGS=$(CFLAGS) MACOS_VERSION=$(MACOS_VERSION) all
./arm64/libzip.a: Zip.swift QuickZip.swift ZipUtilities.swift \ prereq:
./minizip/arm64/zip.o ./minizip/arm64/unzip.o ./minizip/arm64/ioapi.o @mkdir -p arm64 x86_64
build_minizip: prereq
@:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined))
@$(MAKE) -C minizip CFLAGS=$(CFLAGS) MACOS_VERSION=$(MACOS_VERSION)
./arm64/libzip.a: build_minizip Zip.swift QuickZip.swift ZipUtilities.swift
@:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined)) @:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined))
swiftc -target arm64-apple-macos$(MACOS_VERSION) -I./minizip/module \ swiftc -target arm64-apple-macos$(MACOS_VERSION) -I./minizip/module \
-I./minizip/include -L./minizip/arm64 $(FLAGS) -static \ -I./minizip/include -L./minizip/arm64 $(FLAGS) -static \
-module-name Zip -emit-library -emit-module -parse-as-library \ -module-name Zip -emit-library -emit-module -parse-as-library \
$^ -o $@ $(filter-out build_minizip, $^) ./minizip/arm64/libminizip.a -o $@
./x86_64/libzip.a: Zip.swift QuickZip.swift ZipUtilities.swift \ ./x86_64/libzip.a: build_minizip Zip.swift QuickZip.swift ZipUtilities.swift
./minizip/x86_64/zip.o ./minizip/x86_64/unzip.o \
./minizip/x86_64/ioapi.o
@:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined)) @:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined))
@swiftc -target x86_64-apple-macos$(MACOS_VERSION) -I./minizip/module \ @swiftc -target x86_64-apple-macos$(MACOS_VERSION) -I./minizip/module \
-I./minizip/include -L./minizip/x86_64 $(FLAGS) -static \ -I./minizip/include -L./minizip/x86_64 $(FLAGS) -static \
-module-name Zip -emit-library -emit-module -parse-as-library \ -module-name Zip -emit-library -emit-module -parse-as-library \
$^ -o $@ $(filter-out build_minizip, $^) ./minizip/x86_64/libminizip.a -o $@
all: build_minizip ./arm64/libzip.a ./x86_64/libzip.a
clean: clean:
rm -rf arm64 x86_64 rm -rf arm64 x86_64
mkdir arm64 x86_64
clean-all: clean clean-all: clean
$(MAKE) -C minizip clean $(MAKE) -C minizip clean

View File

@@ -6,6 +6,12 @@ HEADERS = $(wildcard ./include/*.h)
CC = clang CC = clang
CFLAGS = -g CFLAGS = -g
defult: prereq ./arm64/libminizip.a ./x86_64/libminizip.a
# default: $(ARMOBJMODULES) $(X86OBJMODULES)
prereq:
@mkdir -p arm64 x86_64
./arm64/%.o: %.c $(HEADERS) ./arm64/%.o: %.c $(HEADERS)
@:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined)) @:$(if $(value MACOS_VERSION),,$(error MACOS_VERSION is not defined))
$(CC) -target arm64-apple-macos -mmacosx-version-min=$(MACOS_VERSION) \ $(CC) -target arm64-apple-macos -mmacosx-version-min=$(MACOS_VERSION) \
@@ -18,10 +24,11 @@ CFLAGS = -g
$(CFLAGS) -fmodule-file=./module/module.modulemap -I./include \ $(CFLAGS) -fmodule-file=./module/module.modulemap -I./include \
-c $< -o ./$@ -c $< -o ./$@
all: $(ARMOBJMODULES) $(X86OBJMODULES) ./arm64/libminizip.a: prereq $(ARMOBJMODULES)
ar rcs $@ $(ARMOBJMODULES)
default: $(OBJMODULES) ./x86_64/libminizip.a: prereq $(X86OBJMODULES)
ar rcs $@ $(X86OBJMODULES)
clean: clean:
rm -rf arm64 x86_64 rm -rf arm64 x86_64
mkdir arm64 x86_64

View File

@@ -10,21 +10,23 @@ EXEC = cmdbar_updater
FRAMEWORKS = -framework AppKit FRAMEWORKS = -framework AppKit
default: prereq $(EXEC)
prereq:
@mkdir -p arm64 x86_64
./arm64/$(EXEC): $(FILES) ./arm64/$(EXEC): $(FILES)
$(CC) -target arm64-apple-macos$(MACOS_VERSION) $(FLAGS) $^ \ $(CC) -target arm64-apple-macos$(MACOS_VERSION) $(FLAGS) $^ \
$(FRAMEWORKS) -o $@ $(FRAMEWORKS) -o $@
./x86_64/$(EXEC): $(FILES) ./x86_64/$(EXEC): $(FILES)
$(CC) -target x86_64-apple-macos$(MACOS_VERSION) $(FLAGS) $^ \ @$(CC) -target x86_64-apple-macos$(MACOS_VERSION) $(FLAGS) $^ \
$(FRAMEWORKS) -o $@ $(FRAMEWORKS) -o $@
$(EXEC): ./arm64/$(EXEC) ./x86_64/$(EXEC) $(EXEC): prereq ./arm64/$(EXEC) ./x86_64/$(EXEC)
lipo -create -output $(EXEC) $^ && \ lipo -create -output $(EXEC) $(filter-out prereq, $^) && \
codesign -s ${APPLE_DEVELOPER_ID_APPLICATION} -f --timestamp \ codesign -s ${APPLE_DEVELOPER_ID_APPLICATION} -f --timestamp \
-o runtime $(EXEC) -o runtime $(EXEC)
all: $(EXEC)
clean: clean:
rm -rf arm64 x86_64 $(EXEC) rm -rf arm64 x86_64 $(EXEC)
mkdir arm64 x86_64