removed clang-format and clang_complete files from the repo
[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) -MMD $(opt) -fno-strict-aliasing $(dbg) $(inc)
19 LDFLAGS = $(arch) -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 .PHONY: libs
61 libs: imago anim mikmod
62
63 .PHONY: imago
64 imago:
65         $(MAKE) -C libs/imago
66
67 .PHONY: anim
68 anim:
69         $(MAKE) -C libs/anim
70
71 .PHONY: mikmod
72 mikmod:
73         $(MAKE) -C libs/mikmod
74
75 .PHONY: cleanlibs
76 cleanlibs:
77         $(MAKE) -C libs/imago clean
78         $(MAKE) -C libs/anim clean
79         $(MAKE) -C libs/mikmod clean
80
81 .PHONY: clean
82 clean:
83         rm -f $(obj) $(bin)
84
85 .PHONY: cleandep
86 cleandep:
87         rm -f $(dep)
88
89 .PHONY: data
90 data:
91         @tools/procdata
92
93
94 .PHONY: crosswin
95 crosswin:
96         $(MAKE) CC=i686-w64-mingw32-gcc sys=mingw