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