minor gitignore additions
[summerhack] / Makefile
1 src = src/sumhack.cpp src/events.cpp
2 bin = sumhack-thelab
3
4 include src/parts/Makefile-part
5 include src/sdlvf/Makefile-part
6
7 obj = $(src:.cpp=.o) $(csrc:.c=.o)
8
9 opt = -O1
10 opt = -g
11 incdir = -Isrc/3dengfx/src -Ilibs -Ilibs/png -Ilibs/jpeglib -Ilibs/ogg -Ilibs/vorbis
12 CXXFLAGS = -ansi -pedantic -Wall $(opt) $(incdir) -MMD `sdl-config --cflags`
13 CFLAGS = -std=c89 -pedantic -Wall $(opt) $(incdir) -MMD `sdl-config --cflags`
14 libs = $(libdir) $(libsys) src/3dengfx/lib3dengfx.a `sdl-config --libs` $(libgl) \
15            -lvorbis -logg -ljpeg -lpng -lz -l3ds $(libc)
16
17 sys ?= $(shell uname -s | sed 's/MINGW.*/mingw/')
18 ifeq ($(sys), mingw)
19         obj = $(src:.cpp=.w32.o) $(csrc:.c=.w32.o)
20         bin = sumhack-thelab.exe
21         libdir = -Llibs/w32
22         libgl = -lopengl32
23         libsys = -lmingw32 -lgdi32 -mconsole
24         libc = -lm
25
26 else
27         libdir = -Llibs
28         libgl = -lGL
29         libc = -lm
30 endif
31
32
33 $(bin): $(obj) 3dengfx libs
34         $(CXX) -o $@ $(obj) $(libs)
35
36 %.w32.o: %.c
37         $(CC) -o $@ $(CFLAGS) -c $<
38
39 %.w32.o: %.cpp
40         $(CXX) -o $@ $(CXXFLAGS) -c $<
41
42 .PHONY: 3dengfx
43 3dengfx:
44         $(MAKE) -C src/3dengfx
45
46 .PHONY: 3dengfx-clean
47 3dengfx-clean:
48         $(MAKE) -C src/3dengfx clean
49
50 -include $(obj:.o=.d)
51
52 .PHONY: clean
53 clean:
54         $(RM) $(obj) $(bin)
55
56 .PHONY: clean-all
57 clean-all: clean 3dengfx-clean cleandep clean-libs
58
59 .PHONY: cleandep
60 cleandep:
61         $(RM) $(obj:.o=.d)
62
63 .PHONY: libs
64 libs:
65         $(MAKE) -C libs
66
67 .PHONY: clean-libs
68 clean-libs:
69         $(MAKE) -C libs clean
70
71 .PHONY: cross
72 cross:
73         $(MAKE) CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ sys=mingw
74
75 .PHONY: cross-libs
76 cross-libs:
77         $(MAKE) CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ sys=mingw -C libs
78
79 .PHONY: cross-clean
80 cross-clean:
81         $(MAKE) CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ sys=mingw clean
82
83 .PHONY: cross-clean-libs
84 cross-clean-libs:
85         $(MAKE) CC=i686-w64-mingw32-gcc CXX=i686-w64-mingw32-g++ sys=mingw -C libs clean