forked from KScl/opentyrian2000
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile.mingw32
183 lines (145 loc) · 4.79 KB
/
Makefile.mingw32
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
# BUILD SETTINGS ###############################################################
PLATFORM := WIN32
TYRIAN_DIR = C:\\TYRIAN
WITH_SDL3 := true
WITH_NETWORK := true
WITH_MIDI := true
################################################################################
# see https://www.gnu.org/prep/standards/html_node/Makefile-Conventions.html
################################################################################
SHELL = /bin/sh
HOSTCC = gcc
CC = gcc -m32
RC = windres -Fpe-i386
INSTALL = /usr/bin/install
PKG_CONFIG = /usr/local/bin/pkg-config
PKG_CONFIG_PATH=/usr/local/x86_64-w64-mingw32/lib/pkg-config
VCS_IDREV ?= `(git describe --tags || git rev-parse --short HEAD)`
INSTALL_PROGRAM = $(INSTALL) -m 755
INSTALL_DATA = $(INSTALL) -m 644
prefix ?= /usr/local/x86_64-w64-mingw32
exec_prefix ?= $(prefix)
bindir ?= $(exec_prefix)/bin
datarootdir ?= $(prefix)/share
datadir ?= $(datarootdir)
docdir ?= $(datarootdir)/doc/opentyrian2000
mandir ?= $(datarootdir)/man
man6dir ?= $(mandir)/man6
man6ext ?= .6
desktopdir ?= $(datarootdir)/applications
icondir ?= $(datarootdir)/icons
# see https://www.pathname.com/fhs/pub/fhs-2.3.html
gamesdir ?= $(datadir)/games
###
TARGET := opentyrian2000
SRCS := $(wildcard src/*.c)
OBJS := $(SRCS:src/%.c=obj/%.o) obj/opentyrian2000.o
DEPS := $(SRCS:src/%.c=obj/%.d)
###
ifeq ($(WITH_SDL3), true)
EXTRA_CPPFLAGS += -DWITH_SDL3
endif
ifeq ($(WITH_NETWORK), true)
EXTRA_CPPFLAGS += -DWITH_NETWORK
endif
ifeq ($(WITH_MIDI), true)
EXTRA_CPPFLAGS += -DWITH_MIDI
endif
ifeq ($(OS), linux)
EXTRA_CPPFLAGS += -DNO_NATIVE_MIDI
endif
OPENTYRIAN_VERSION := $(VCS_IDREV)\
EXTRA_CPPFLAGS += -DOPENTYRIAN_VERSION="$(OPENTYRIAN_VERSION)"
CPPFLAGS = -MMD -DNDEBUG=1
CFLAGS = -g0 -O3 $(EXTRA_CPPFLAGS) -pedantic -Wall -Wextra
LDFLAGS ?=
ifeq ($(WITH_SDL3), true)
LDLIBS ?= -L/c/msys64/mingw32/lib -lws2_32 -liphlpapi -lmingw32 -lSDL3 -mwindows -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion
else
LDLIBS ?= -L/c/msys64/mingw32/lib -lws2_32 -liphlpapi -lmingw32 -lSDL2 -lSDL2main -mwindows -Wl,--dynamicbase -Wl,--nxcompat -lm -ldinput8 -ldxguid -ldxerr8 -luser32 -lgdi32 -lwinmm -limm32 -lole32 -loleaut32 -lshell32 -lsetupapi -lversion
endif
ifeq ($(WITH_NETWORK), true)
ifeq ($(WITH_SDL3), true)
SDL_CPPFLAGS := -I/c/msys64/mingw32/include
SDL_LDFLAGS :=
SDL_LDLIBS := -L/c/msys64/mingw32/lib -lSDL3 -lSDL3_net.dll
else
SDL_CPPFLAGS := -I/c/msys64/mingw32/include
SDL_LDFLAGS :=
SDL_LDLIBS := -L/c/msys64/mingw32/lib -lSDL2 -lSDL2_net
endif
else
ifeq ($(WITH_SDL3), true)
SDL_CPPFLAGS := -I/c/msys64/mingw32/include
SDL_LDFLAGS :=
SDL_LDLIBS := -L/c/msys64/mingw32/lib -lSDL3
else
SDL_CPPFLAGS := -I/c/msys64/mingw32/include
SDL_LDFLAGS :=
SDL_LDLIBS := -L/c/msys64/mingw32/lib -lSDL2
endif
endif
ifeq ($(WITH_MIDI), true)
ifeq ($(WITH_SDL3), true)
SDL_PACKAGES := SDL3_mixer
MIDIPROC_LIBS := midiproc
else
SDL_PACKAGES := SDL2_mixer_ext
MIDIPROC_LIBS := midiproc fluidsynth
endif
endif
ifeq ($(WITH_MIDI), true)
ifeq ($(WITH_SDL3), true)
SDL_CPPFLAGS += -I/c/msys64/mingw32/include -I/c/msys64/mingw32/include/SDL3 -I/c/msys64/mingw32/include/midiproc
SDL_LDFLAGS :=
SDL_LDLIBS += -L/c/msys64/mingw32/lib -lmidiproc -lSDL3_mixer
else
SDL_CPPFLAGS += -I/c/msys64/mingw32/include -I/c/msys64/mingw32/include/SDL2 -I/c/msys64/mingw32/include/midiproc
SDL_LDFLAGS :=
SDL_LDLIBS += -L/c/msys64/mingw32/lib -lmidiproc -lSDL2_mixer_ext -lfluidsynth
endif
endif
# add stdc++ to the ldlibs if using midiproc
ifneq ($(MIDIPROC_LIBS), )
SDL_LDLIBS += -lstdc++ -lsupc++ -lgcc_s
endif
ALL_CPPFLAGS = -DTARGET_$(PLATFORM) \
-DTYRIAN_DIR='"$(TYRIAN_DIR)"' \
$(EXTRA_CPPFLAGS) \
$(SDL_CPPFLAGS) \
$(CPPFLAGS)
ALL_CFLAGS = $(CFLAGS)
ALL_LDFLAGS = $(SDL_LDFLAGS) \
$(LDFLAGS)
ALL_LDLIBS = -lm \
$(SDL_LDLIBS) \
$(LDLIBS)
###
.PHONY : all
all : $(TARGET).exe
.PHONY : installdirs
installdirs :
mkdir -p $(DESTDIR)$(bindir)
mkdir -p $(DESTDIR)$(man6dir)
.PHONY : install
install : $(TARGET).exe installdirs
$(INSTALL_PROGRAM) $(TARGET).exe $(DESTDIR)$(bindir)/
$(INSTALL_DATA) linux/man/opentyrian2000.6 $(DESTDIR)$(man6dir)/opentyrian2000$(man6ext)
.PHONY : uninstall
uninstall :
rm -f $(DESTDIR)$(bindir)/$(TARGET).exe
rm -f $(DESTDIR)$(man6dir)/opentyrian2000$(man6ext)
.PHONY : clean
clean :
rm -f $(OBJS)
rm -f $(DEPS)
rm -f $(TARGET).exe
rm -f obj/opentyrian2000.o
$(TARGET).exe : $(OBJS)
$(CC) $(ALL_CFLAGS) $(ALL_LDFLAGS) -o $@ $^ $(ALL_LDLIBS)
-include $(DEPS)
obj/%.o : src/%.c
@mkdir -p "$(dir $@)"
$(CC) $(ALL_CPPFLAGS) $(ALL_CFLAGS) -c -o $@ $<
obj/%.o: src/%.rc
$(RC) -I/usr/local/x86_64-w64-mingw32/includes -i $< -o $@