1 ############################################################################
3 # Author: Daniel Giritzer, S1810567004 (daniel@giritzer.eu)
5 # Description: Universal Makefile for Unix based Operating Systems
6 ############################################################################
8 ###################################
10 ###################################
11 WORKDIR = $(shell pwd)
12 SOURCES := $(shell ls *.cxx)
15 INC = -I$(WORKDIR)/../include -I$(WORKDIR)/../../include
16 LDFLAGS = -m32 -std=c++11 -static-libstdc++ -static-libgcc
17 CFLAGS = -m32 -Wall -fexceptions -std=c++11 -static-libstdc++ -static-libgcc
18 LIB = -lfltk_images -lfltk_png -lfltk_z -lfltk_jpeg -lfltk
20 ###################################
22 ###################################
30 LIBDIR_GCC = -L$(WORKDIR)/../lib/linux32 -L$(WORKDIR)/../../lib/linux32
31 CFLAGS_GCC = $(CFLAGS)
33 LDFLAGS_GCC = $(LDFLAGS)
34 LIB_GCC = $(LIB) -lm -lpthread -lX11 -lxcb -lXau -lXdmcp -lbsd -lrt -ldl
36 ###################################
38 ###################################
39 CC_WIN = i686-w64-mingw32-gcc
40 CXX_WIN = i686-w64-mingw32-g++
41 AR_WIN = i686-w64-mingw32-ar
42 LD_WIN = i686-w64-mingw32-g++
43 WINDRES_WIN = i686-w64-mingw32-windres
46 LIBDIR_WIN = -L$(WORKDIR)/../lib/mingw32 -L$(WORKDIR)/../../lib/mingw32
47 CFLAGS_WIN = $(CFLAGS) -mwindows -DWIN32 -DUSE_OPENGL32 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64
49 LDFLAGS_WIN = $(LDFLAGS) -static
50 LIB_WIN = $(LIB) -mwindows -lole32 -luuid -lcomctl32 -lpthread
52 ###################################
53 #RELEASE GCC SETTINGS | EDIT: 4/7
54 ###################################
55 INC_RELEASE_GCC = $(INC_GCC)
56 CFLAGS_RELEASE_GCC = $(CFLAGS_GCC) -O2
57 RESINC_RELEASE_GCC = $(RESINC_GCC)
58 RCFLAGS_RELEASE_GCC = $(RCFLAGS_GCC)
59 LIBDIR_RELEASE_GCC = $(LIBDIR_GCC)
60 LIB_RELEASE_GCC = $(LIB_GCC)
61 LDFLAGS_RELEASE_GCC = $(LDFLAGS_GCC) -s
62 OBJDIR_RELEASE_GCC = obj/Release_Linux
64 OUT_RELEASE_GCC = bin/Release_Linux
66 ###################################
67 #DEBUG GCC SETTINGS | EDIT: 5/7
68 ###################################
69 INC_DEBUG_GCC = $(INC_GCC)
70 CFLAGS_DEBUG_GCC = $(CFLAGS_GCC) -g
71 RESINC_DEBUG_GCC = $(RESINC_GCC)
72 RCFLAGS_DEBUG_GCC = $(RCFLAGS_GCC)
73 LIBDIR_DEBUG_GCC = $(LIBDIR_GCC)
74 LIB_DEBUG_GCC = $(LIB_GCC)
75 LDFLAGS_DEBUG_GCC = $(LDFLAGS_GCC)
76 OBJDIR_DEBUG_GCC = obj/Debug_Linux
78 OUT_DEBUG_GCC = bin/Debug_Linux
80 ###################################
81 #RELEASE MinGW SETTINGS | EDIT: 6/7
82 ###################################
83 INC_RELEASE_WIN = $(INC_WIN)
84 CFLAGS_RELEASE_WIN = $(CFLAGS_WIN) -O2
85 RESINC_RELEASE_WIN = $(RESINC_WIN)
86 RCFLAGS_RELEASE_WIN = $(RCFLAGS_WIN)
87 LIBDIR_RELEASE_WIN = $(LIBDIR_WIN)
88 LIB_RELEASE_WIN = $(LIB_WIN)
89 LDFLAGS_RELEASE_WIN = $(LDFLAGS_WIN) -s
90 OBJDIR_RELEASE_WIN = obj/Release_Windows
92 OUT_RELEASE_WIN = bin/Release_Windows
94 ###################################
95 #DEBUG MinGW SETTINGS | EDIT: 7/7
96 ###################################
97 INC_DEBUG_WIN = $(INC_WIN)
98 CFLAGS_DEBUG_WIN = $(CFLAGS_WIN) -g
99 RESINC_DEBUG_WIN = $(RESINC_WIN)
100 RCFLAGS_DEBUG_WIN = $(RCFLAGS_WIN)
101 LIBDIR_DEBUG_WIN = $(LIBDIR_WIN)
102 LIB_DEBUG_WIN = $(LIB_WIN)
103 LDFLAGS_DEBUG_WIN = $(LDFLAGS_WIN)
104 OBJDIR_DEBUG_WIN = obj/Debug_Windows
106 OUT_DEBUG_WIN = bin/Debug_Windows
108 ############################
109 #OBJECT LISTS | DO NOT EDIT!
110 ############################
111 OBJ_DEBUG_GCC = $(addprefix $(OBJDIR_DEBUG_GCC)/,$(SOURCES:%.cxx=%.o))
112 OBJ_RELEASE_GCC = $(addprefix $(OBJDIR_RELEASE_GCC)/,$(SOURCES:%.cxx=%.o))
113 OBJ_DEBUG_WIN = $(addprefix $(OBJDIR_DEBUG_WIN)/,$(SOURCES:%.cxx=%.o))
114 OBJ_RELEASE_WIN = $(addprefix $(OBJDIR_RELEASE_WIN)/,$(SOURCES:%.cxx=%.o))
116 ##########################
117 #FUNCTIONS | DO NOT EDIT!
118 ##########################
121 all: make_fluid debug release
122 clean: clean_debug_linux clean_release_linux clean_debug_windows clean_release_windows
123 rebuild: clean debug release
125 debug Debug: debug_linux debug_windows
126 release Release: release_linux release_windows
129 $(WORKDIR)/../packages/fltk/fltk-1.3.4-1/fluid/fluid -c $(WORKDIR)/ViewFluid.fld
133 test -d $(OUT_DEBUG_GCC) || mkdir -p $(OUT_DEBUG_GCC)
134 test -d $(OBJDIR_DEBUG_GCC) || mkdir -p $(OBJDIR_DEBUG_GCC)
138 debug_linux: before_debug_linux out_debug_linux after_debug_linux
140 out_debug_linux: before_debug_linux $(OBJ_DEBUG_GCC) $(DEP_DEBUG_GCC)
141 $(LD_GCC) $(LDFLAGS_DEBUG_GCC) $(LIBDIR_GCC) $(LIBDIR_DEBUG_GCC) $(OBJ_DEBUG_GCC) $(LIB_DEBUG_GCC) -o $(OUT_DEBUG_GCC)/$(PROJNAME)
143 $(OBJDIR_DEBUG_GCC)/%.o: %.cxx
144 $(CXX_GCC) $(CFLAGS_DEBUG_GCC) $(INC_DEBUG_GCC) -c $< -D_DEBUG -o $@
147 rm -f $(OBJ_DEBUG_GCC) $(OUT_DEBUG_GCC)/$(PROJNAME)
148 rm -rf $(OUT_DEBUG_GCC)
149 rm -rf $(OBJDIR_DEBUG_GCC)
152 before_release_linux:
153 test -d $(OUT_RELEASE_GCC) || mkdir -p $(OUT_RELEASE_GCC)
154 test -d $(OBJDIR_RELEASE_GCC) || mkdir -p $(OBJDIR_RELEASE_GCC)
158 release_linux: before_release_linux out_release_linux after_release_linux
160 out_release_linux: before_release_linux $(OBJ_RELEASE_GCC) $(DEP_RELEASE_GCC)
161 $(LD_GCC) $(LDFLAGS_RELEASE_GCC) $(LIBDIR_GCC) $(LIBDIR_RELEASE_GCC) $(OBJ_RELEASE_GCC) $(LIB_RELEASE_GCC) -o $(OUT_RELEASE_GCC)/$(PROJNAME)
163 $(OBJDIR_RELEASE_GCC)/%.o: %.cxx
164 $(CXX_GCC) $(CFLAGS_RELEASE_GCC) $(INC_RELEASE_GCC) -c $< -D_RELEASE -o $@
167 rm -f $(OBJ_RELEASE_GCC) $(OUT_RELEASE_GCC)/$(PROJNAME)
168 rm -rf $(OUT_RELEASE_GCC)
169 rm -rf $(OBJDIR_RELEASE_GCC)
172 before_debug_windows:
173 test -d $(OUT_DEBUG_WIN) || mkdir -p $(OUT_DEBUG_WIN)
174 test -d $(OBJDIR_DEBUG_WIN) || mkdir -p $(OBJDIR_DEBUG_WIN)
175 $(WINDRES_WIN) main.rc $(OBJDIR_DEBUG_WIN)/mainres.o
179 debug_windows: before_debug_windows out_debug_windows after_debug_windows
181 out_debug_windows: before_debug_windows $(OBJ_DEBUG_WIN) $(DEP_DEBUG_WIN)
182 $(LD_WIN) $(LDFLAGS_DEBUG_WIN) $(LIBDIR_WIN) $(LIBDIR_DEBUG_WIN) $(OBJ_DEBUG_WIN) $(OBJDIR_DEBUG_WIN)/mainres.o $(LIB_DEBUG_WIN) -o $(OUT_DEBUG_WIN)/$(PROJNAME).exe
184 $(OBJDIR_DEBUG_WIN)/%.o: %.cxx
185 $(CXX_WIN) $(CFLAGS_DEBUG_WIN) $(INC_DEBUG_WIN) -c $< -D_DEBUG -o $@
188 rm -f $(OBJ_DEBUG_WIN) $(OUT_DEBUG_WIN)/$(PROJNAME).exe
189 rm -rf $(OUT_DEBUG_WIN)
190 rm -rf $(OBJDIR_DEBUG_WIN)
193 before_release_windows:
194 test -d $(OUT_RELEASE_WIN) || mkdir -p $(OUT_RELEASE_WIN)
195 test -d $(OBJDIR_RELEASE_WIN) || mkdir -p $(OBJDIR_RELEASE_WIN)
196 $(WINDRES_WIN) main.rc $(OBJDIR_RELEASE_WIN)/mainres.o
198 after_release_windows:
200 release_windows: before_release_windows out_release_windows after_release_windows
202 out_release_windows: before_release_windows $(OBJ_RELEASE_WIN) $(DEP_RELEASE_WIN)
203 $(LD_WIN) $(LDFLAGS_RELEASE_WIN) $(LIBDIR_WIN) $(LIBDIR_RELEASE_WIN) $(OBJ_RELEASE_WIN) $(OBJDIR_RELEASE_WIN)/mainres.o $(LIB_RELEASE_WIN) -o $(OUT_RELEASE_WIN)/$(PROJNAME).exe
205 $(OBJDIR_RELEASE_WIN)/%.o: %.cxx
206 $(CXX_WIN) $(CFLAGS_RELEASE_WIN) $(INC_RELEASE_WIN) -c $< -D_RELEASE -o $@
208 clean_release_windows:
209 rm -f $(OBJ_RELEASE_WIN) $(OUT_RELEASE_WIN)/$(PROJNAME).exe
210 rm -rf $(OUT_RELEASE_WIN)
211 rm -rf $(OBJDIR_RELEASE_WIN)
213 .PHONY: before_debug_linux out_debug_linux after_debug_linux before_release_linux out_release_linux after_release_linux before_debug_windows out_debug_windows after_debug_windows before_release_windows out_release_windows after_release_windows