-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathMakefile.win16
139 lines (102 loc) · 3.14 KB
/
Makefile.win16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
# vi:syntax=make
ifneq ($(CALLER),MASTER)
include Makefile.inc
endif
# 1. Directories
OBJDIR_WIN16 := $(OBJDIR)/win16
DEPDIR_WIN16 := $(DEPDIR)/win16
GENDIR_WIN16 := $(GENDIR)/win16
# 2. Files
BIN_WIN16 := $(BINDIR)/$(DSEKAI)16.exe
DSEKAI_C_FILES_WIN16_ONLY := \
src/main.c \
unilayer/src/input/wini.c \
unilayer/src/memory/winm.c \
unilayer/src/graphics/wing.c \
unilayer/src/save/file.c
ifeq ($(RESOURCE),DEFAULT)
DSEKAI_C_FILES_WIN16_ONLY += unilayer/src/resource/winr.c
else
DSEKAI_C_FILES_WIN16_ONLY += $(DSEKAI_C_FILES_RES)
endif
DSEKAI_O_FILES_WIN16 := \
$(addprefix $(OBJDIR_WIN16)/,$(subst .c,.o,$(DSEKAI_C_FILES))) \
$(addprefix $(OBJDIR_WIN16)/,$(subst .c,.o,$(DSEKAI_C_FILES_WIN16_ONLY)))
WIN16_RES_FILES := src/winstat.rc
ifeq ($(RESOURCE),DEFAULT)
WIN16_RES_FILES += $(GENDIR_WIN16)/win.rc
endif
WIN16_RES_FILES += $(ASSETDIR)/$(DSEKAI).ico
# 1a. Packaging Manifest
WIN16_MANIFEST :=
ifeq ($(RESOURCE),FILE)
WIN16_MANIFEST += $(DSEKAI_ASSETS_BITMAPS)
endif
ifeq ($(FMT_ASN),TRUE)
WIN16_MANIFEST += $(subst .json,.asn,$(DSEKAI_ASSETS_MAPS_JSON))
endif
ifeq ($(FMT_JSON),TRUE)
WIN16_MANIFEST += \
$(DSEKAI_ASSETS_MAPS_JSON) \
$(DSEKAI_ASSETS_TILESETS_JSON)
endif
RESEXT_H_WIN16 := $(GENDIR_WIN16)/resext.h
# 3. Programs
CC_WIN16 := wcc
LD_WIN16 := wcl
RC_WIN16 := wrc
# 4. Arguments
DEFINES_WIN16 := \
$(DEFINES_DSEKAI) \
$(DEFINES_DEPTH) \
-DPLATFORM_WIN16 \
-DNO_ENGINE_POV \
-DNO_ANIMATE \
-DWINM_MOVEABLE \
-DNO_SCRIPT_COMPILER
#-DWIN16_FAKE_DS
INCLUDES_WIN16 := \
$(subst -I ,-i=,$(INCLUDES_UNILAYER)) \
-i=$(GENDIR_WIN16) \
-i=$(INCLUDE)/win
CFLAGS_WIN16 := -bt=windows -bw -ml -DMEMORY_LARGE $(CFLAGS_OWC_GENERIC) -zp=1 $(DEFINES_WIN16) $(INCLUDES_WIN16)
LDFLAGS_WIN16 := -l=windows -ml $(LDFLAGS_OWC_GENERIC)
RCFLAGS_WIN16 := -r $(DEFINES_WIN16) -i=$(INCLUDE)win
ifneq ($(BUILD),RELEASE)
# Debug build.
CFLAGS_WIN16 += -DLOG_TO_FILE
LDFLAGS_WIN16 += -en -d3
endif
ifneq ($(RESOURCE),DEFAULT)
CFLAGS_WIN16 += $(subst -I ,-I=,$(DEFINES_RESOURCE))
endif
ifeq ($(RESOURCE),DEFAULT)
RCFLAGS_WIN16 += -DRESOURCE_WIN
endif
# 5. Targets
platform := win16
platform_upper := WIN16
res_gfx := $(DSEKAI_ASSETS_BITMAPS)
$(eval $(RESEXT_H_RULE))
pkg_bin := $(BIN_WIN16)
pkg_strip := echo
pkg_name := $(DSEKAI)-$(platform)-$(GIT_HASH)
pkg_reqs := $(WIN16_MANIFEST)
$(eval $(PKG_RULE))
$(BINDIR)/$(DSEKAI)16.img: $(BIN_WIN16)
$(DD) if=/dev/zero bs=512 count=2880 of="$@"
$(MKFSVFAT) "$@"
$(MCOPY) -i "$@" $< ::$(DSEKAI)16.exe
$(BIN_WIN16): \
$(DSEKAI_O_FILES_WIN16) $(OBJDIR_WIN16)/win.res | $(BINDIR)/$(STAMPFILE)
$(LD_WIN16) $(LDFLAGS_WIN16) -fe=$@ $^
$(OBJDIR_WIN16)/win.res: $(WIN16_RES_FILES) | $(OBJDIR_WIN16)/$(STAMPFILE)
$(RC_WIN16) $(RCFLAGS_WIN16) $< -fo=$@
$(OBJDIR_WIN16)/%.o: %.c $(OBJDIR_WIN16)/win.res $(RESEXT_H_WIN16)
$(MD) $(dir $@)
$(CC_WIN16) $(CFLAGS_WIN16) -fo=$@ $(<:%.c=%)
#$(DEPDIR_WIN16)/%.d: %.c $(RESEXT_H_WIN16)
# $(MD) $(dir $@)
# $(HOST_CC) $(subst -i=,-I ,$(INCLUDES_WIN16)) $(DEFINES_WIN16) -MM $< \
# -MT $(subst .c,.o,$(addprefix $(DEPDIR_WIN32)/,$<)) -MF $@
#include $(subst $(OBJDIR)/,$(DEPDIR)/,$(DSEKAI_O_FILES_WIN16:.o=.d))