[build] Clean the windows targets

This commit is contained in:
Romain Goyet
2019-09-20 14:27:29 +02:00
committed by EmilieNumworks
parent 652a44c844
commit 657a6da583
7 changed files with 58 additions and 59 deletions

View File

@@ -172,46 +172,8 @@ default: $(DEFAULT)
$(foreach extension,$(extensions),$(foreach executable,$(executables),$(eval $(call rules_for_targets,$(executable),$(extension)))))
# Define standard compilation rules
$(eval $(call rule_for, \
AS, %.o, %.s, \
$$(CC) $$(SFLAGS) -c $$< -o $$@ \
))
$(eval $(call rule_for, \
CC, %.o, %.c, \
$$(CC) $$(SFLAGS) $$(CFLAGS) -c $$< -o $$@, \
with_local_version \
))
$(eval $(call rule_for, \
CXX, %.o, %.cpp, \
$$(CXX) $$(SFLAGS) $$(CXXFLAGS) -c $$< -o $$@, \
with_local_version \
))
$(eval $(call rule_for, \
OCC, %.o, %.m, \
$$(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
# Load standard build rules
include build/rules.mk
.PHONY: workshop_python_emulator
workshop_python_emulator:

View File

@@ -1,2 +1,2 @@
TOOLCHAIN ?= windows
TOOLCHAIN = windows
EXE = exe

45
build/rules.mk Normal file
View File

@@ -0,0 +1,45 @@
# Define standard compilation rules
$(eval $(call rule_for, \
AS, %.o, %.s, \
$$(CC) $$(SFLAGS) -c $$< -o $$@ \
))
$(eval $(call rule_for, \
CC, %.o, %.c, \
$$(CC) $$(SFLAGS) $$(CFLAGS) -c $$< -o $$@, \
with_local_version \
))
$(eval $(call rule_for, \
CXX, %.o, %.cpp, \
$$(CXX) $$(SFLAGS) $$(CXXFLAGS) -c $$< -o $$@, \
with_local_version \
))
$(eval $(call rule_for, \
OCC, %.o, %.m, \
$$(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
$(eval $(call rule_for, \
WINDRES, %.o, %.rc, \
$$(WINDRES) $$< -O coff -o $$@ \
))

View File

@@ -1 +0,0 @@
-include build/targets.sdl.$(MODEL).mak

View File

@@ -1,4 +0,0 @@
$(eval $(call rule_for, \
WINDRES, %.o, %.rc, \
$$(WINDRES) $$< -O coff -o $$@ \
))

View File

@@ -1,7 +0,0 @@
CC = gcc
CXX = g++
LD = g++
EXE = exe
SFLAGS += -D_USE_MATH_DEFINES
LDFLAGS += -static -mwindows

View File

@@ -1,7 +1,13 @@
CC = x86_64-w64-mingw32-gcc
CXX = x86_64-w64-mingw32-g++
LD = x86_64-w64-mingw32-g++
EXE = exe
ifeq ($(OS),Windows_NT)
MINGW_TOOLCHAIN_PREFIX=
else
MINGW_TOOLCHAIN_PREFIX=x86_64-w64-mingw32-
endif
CC = $(MINGW_TOOLCHAIN_PREFIX)gcc
CXX = $(MINGW_TOOLCHAIN_PREFIX)g++
LD = $(MINGW_TOOLCHAIN_PREFIX)g++
WINDRES = $(MINGW_TOOLCHAIN_PREFIX)windres
SFLAGS += -D_USE_MATH_DEFINES
LDFLAGS += -static
@@ -12,5 +18,3 @@ ifeq ($(DEBUG),0)
# downside of not defining "-mwindows" is that you lose stdout and stderr.
LDFLAGS += -mwindows
endif
WINDRES = x86_64-w64-mingw32-windres