af00af72a048a9521292f4c144515728a63ddcc5
[dosdemo] / Makefile.dj
1 src = $(wildcard src/*.c) $(wildcard src/scr/*.c) $(wildcard src/dos/*.c)
2 asmsrc = $(wildcard src/*.asm) $(wildcard src/scr/*.asm) $(wildcard src/dos/*.asm)
3 obj = $(src:.c=.cof) $(asmsrc:.asm=.cof)
4 dep = $(obj:.cof=.dep)
5 bin = demo.exe
6
7 asmsrc += cspr/dbgfont.asm cspr/confont.asm
8
9 ifeq ($(findstring COMMAND.COM, $(SHELL)), COMMAND.COM)
10         hostsys = dos
11 else
12         hostsys = unix
13         TOOLPREFIX = i586-pc-msdosdjgpp-
14 endif
15
16 inc = -Isrc -Isrc/scr -Isrc/dos -Ilibs -Ilibs/imago/src -Ilibs/anim/src -Ilibs/mikmod/include
17 opt = -O3 -ffast-math -fno-strict-aliasing
18 dbg = -g
19 warn = -pedantic -Wall -Wno-unused-function -Wno-unused-variable
20
21 CC = $(TOOLPREFIX)gcc
22 AR = $(TOOLPREFIX)ar
23 CFLAGS = $(warn) -march=pentium $(dbg) $(opt) $(inc)
24 LDFLAGS = libs/imago/imago.dja libs/anim/anim.dja libs/mikmod/dos/libmikmod.a
25
26 ifneq ($(hostsys), dos)
27 .PHONY: all
28 all: data $(bin)
29 endif
30
31 $(bin): $(obj) imago anim mikmod
32         $(CC) -o $@ -Wl,-Map=ld.map $(obj) $(LDFLAGS)
33
34 %.cof: %.asm
35         nasm -f coff -o $@ $<
36
37 ifneq ($(hostsys), dos)
38 -include $(dep)
39 endif
40
41 %.cof: %.c
42         $(CC) $(CFLAGS) -o $@ -c $<
43
44 %.dep: %.c
45         @echo dep $@
46         @$(CPP) $(CFLAGS) $< -MM -MT $(@:.dep=.cof) >$@
47
48 .PHONY: imago
49 imago:
50         $(MAKE) -C libs/imago -f Makefile.dj
51
52 .PHONY: anim
53 anim:
54         $(MAKE) -C libs/anim -f Makefile.dj
55
56 .PHONY: mikmod
57 mikmod:
58         $(MAKE) -C libs/mikmod/dos -f Makefile.dj
59
60 .PHONY: cleanlibs
61 cleanlibs:
62         $(MAKE) -C libs/imago -f Makefile.dj clean
63         $(MAKE) -C libs/anim -f Makefile.dj clean
64         $(MAKE) -C libs/mikmod/dos -f Makefile.dj clean
65
66 .PHONY: clean
67 .PHONY: cleandep
68
69 ifeq ($(hostsys), dos)
70 clean:
71         del src\*.cof
72         del src\dos\*.cof
73         del $(bin)
74
75 cleandep:
76         del src\*.dep
77         del src\dos\*.dep
78 else
79 clean:
80         rm -f $(obj) $(bin)
81
82 cleandep:
83         rm -f $(dep)
84
85 .PHONY: data
86 data:
87         @tools/procdata
88 endif