[build] Work around command-line length limitation on windows

This commit is contained in:
Romain Goyet
2019-09-19 11:41:29 +02:00
committed by Ecco
parent ef9ab3b4fe
commit ff10c5ec78
2 changed files with 12 additions and 11 deletions

View File

@@ -190,10 +190,22 @@ $(eval $(call rule_for, \
$$(CC) $$(SFLAGS) $$(CFLAGS) -c $$< -o $$@ \
))
ifeq ($(OS),Windows_NT)
# Work around command-line length limit
# On Msys2 the max command line is 32 000 characters. Our standard LD command
# can be longer than that because we have quite a lot of object files. To work
# around this issue, we write the object list in a "target.objs" file, and tell
# the linker to read its arguments from this file.
$(eval $(call rule_for, \
LD, %.$$(EXE), , \
echo $$^ > $$@.objs && $$(LD) @$$@.objs $$(LDFLAGS) -o $$@ && rm $$@.objs \
))
else
$(eval $(call rule_for, \
LD, %.$$(EXE), , \
$$(LD) $$^ $$(LDFLAGS) -o $$@ \
))
endif
.PHONY: workshop_python_emulator
workshop_python_emulator:

View File

@@ -5,14 +5,3 @@ EXE = exe
SFLAGS += -D_USE_MATH_DEFINES
LDFLAGS += -static -mwindows
# Work around command-line length limit
# On Msys2 the max command line is 32 000 characters. Our standard LD command
# can be longer than that because we have quite a lot of object files. To work
# around this issue, we write the object list in a "target.objs" file, and tell
# the linker to read its arguments from this file.
$(BUILD_DIR)/%.$(EXE):
$(Q) echo $^ > $@.objs
@echo "LD $(@:$(BUILD_DIR)/%=%)"
$(Q) $(LD) @$@.objs $(LDFLAGS) -o $@
$(Q) rm $@.objs