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