foo
[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 #prof = -pg
20 warn = -pedantic -Wall -Wno-unused-function -Wno-unused-variable
21
22 CC = $(TOOLPREFIX)gcc
23 AR = $(TOOLPREFIX)ar
24 CFLAGS = $(warn) -march=pentium $(dbg) $(opt) $(prof) $(inc)
25 LDFLAGS = libs/imago/imago.dja libs/anim/anim.dja libs/mikmod/dos/libmikmod.a
26
27 ifneq ($(hostsys), dos)
28 .PHONY: all
29 all: data $(bin)
30 endif
31
32 $(bin): $(obj) imago anim mikmod
33         $(CC) -o $@ -Wl,-Map=ld.map $(prof) $(obj) $(LDFLAGS)
34
35 %.cof: %.asm
36         nasm -f coff -o $@ $<
37
38 ifneq ($(hostsys), dos)
39 -include $(dep)
40 endif
41
42 %.cof: %.c
43         $(CC) $(CFLAGS) -o $@ -c $<
44
45 %.dep: %.c
46         @echo dep $@
47         @$(CPP) $(CFLAGS) $< -MM -MT $(@:.dep=.cof) >$@
48
49 .PHONY: imago
50 imago:
51         $(MAKE) -C libs/imago -f Makefile.dj
52
53 .PHONY: anim
54 anim:
55         $(MAKE) -C libs/anim -f Makefile.dj
56
57 .PHONY: mikmod
58 mikmod:
59         $(MAKE) -C libs/mikmod/dos -f Makefile.dj
60
61 .PHONY: cleanlibs
62 cleanlibs:
63         $(MAKE) -C libs/imago -f Makefile.dj clean
64         $(MAKE) -C libs/anim -f Makefile.dj clean
65         $(MAKE) -C libs/mikmod/dos -f Makefile.dj clean
66
67 .PHONY: clean
68 .PHONY: cleandep
69
70 ifeq ($(hostsys), dos)
71 clean:
72         del src\*.cof
73         del src\dos\*.cof
74         del $(bin)
75
76 cleandep:
77         del src\*.dep
78         del src\dos\*.dep
79 else
80 clean:
81         rm -f $(obj) $(bin)
82
83 cleandep:
84         rm -f $(dep)
85
86 .PHONY: data
87 data:
88         @tools/procdata
89 endif