dropping SDL for the cross-platform version almost done
[dosdemo] / GNUmakefile
1 src = $(wildcard src/*.c) $(wildcard src/3dgfx/*.c) $(wildcard src/scr/*.c) \
2           $(wildcard src/glut/*.c)
3 asmsrc = $(wildcard src/*.asm)
4 obj = $(src:.c=.o) $(asmsrc:.asm=.o)
5 dep = $(obj:.o=.d)
6 bin = demo
7
8 asmsrc += cspr/dbgfont.asm cspr/confont.asm
9 bindata = data/loading.img
10
11 inc = -I/usr/local/include -Isrc -Isrc/3dgfx -Isrc/scr -Isrc/glut -Ilibs \
12           -Ilibs/imago/src -Ilibs/mikmod/include
13 def = -DMINIGLUT_USE_LIBC -DMIKMOD_STATIC
14 warn = -pedantic -Wall -Wno-unused-variable -Wno-unused-function
15 #opt = -O3 -ffast-math
16 dbg = -g
17
18 CFLAGS = $(arch) $(warn) $(opt) -fno-pie -fno-strict-aliasing $(dbg) $(inc)
19 LDFLAGS = $(arch) -no-pie -Llibs/imago -Llibs/mikmod -limago -lmikmod \
20                   $(sndlib_$(sys)) -lm
21
22 cpu ?= $(shell uname -m | sed 's/i.86/i386/')
23
24 ifeq ($(cpu), x86_64)
25         arch = -m32
26 endif
27
28 sys ?= $(shell uname -s | sed 's/MINGW.*/mingw/; s/IRIX.*/IRIX/')
29 ifeq ($(sys), mingw)
30         obj = $(src:.c=.w32.o)
31
32         bin = demo_win32.exe
33
34         LDFLAGS += -static-libgcc -lmingw32 -mconsole -lgdi32 -lwinmm \
35                            -lopengl32
36 else
37         LDFLAGS += -lGL -lX11 -lpthread
38 endif
39
40 sndlib_Linux = -lasound
41 sndlib_IRIX = -laudio
42 sndlib_mingw = -ldsound
43
44 .PHONY: all
45 all: data $(bin)
46
47 $(bin): $(obj) imago mikmod
48         $(CC) -o $@ $(obj) $(LDFLAGS)
49
50 -include $(dep)
51
52 %.o: %.asm
53         nasm -f elf -o $@ $<
54
55 %.w32.o: %.c
56         $(CC) -o $@ $(CFLAGS) -c $<
57
58 src/data.o: src/data.asm $(bindata)
59
60 %.d: %.c
61         @echo dep $@
62         @$(CPP) $(CFLAGS) $< -MM -MT $(@:.d=.o) >$@
63
64 .PHONY: libs
65 libs: imago anim mikmod
66
67 .PHONY: imago
68 imago:
69         $(MAKE) -C libs/imago
70
71 .PHONY: anim
72 anim:
73         $(MAKE) -C libs/anim
74
75 .PHONY: mikmod
76 mikmod:
77         $(MAKE) -C libs/mikmod
78
79 .PHONY: cleanlibs
80 cleanlibs:
81         $(MAKE) -C libs/imago clean
82         $(MAKE) -C libs/anim clean
83         $(MAKE) -C libs/mikmod clean
84
85 .PHONY: clean
86 clean:
87         rm -f $(obj) $(bin)
88
89 .PHONY: cleandep
90 cleandep:
91         rm -f $(dep)
92
93 .PHONY: data
94 data:
95         @tools/procdata
96
97
98 .PHONY: crosswin
99 crosswin:
100         $(MAKE) CC=i686-w64-mingw32-gcc sys=mingw