1# Makefile
2
3# Palomides:
4#CC=i586-mingw32msvc-gcc
5#CXX=i586-mingw32msvc-g++
6#LD=i586-mingw32msvc-ld
7#AR=i586-mingw32msvc-ar
8#AS=i586-mingw32msvc-as
9#NM=i586-mingw32msvc-nm
10#STRIP=i586-mingw32msvc-strip
11#RANLIB=i586-mingw32msvc-ranlib
12#DLLTOOL=i586-mingw32msvc-dlltool
13#OBJDUMP=i586-mingw32msvc-objdump
14#RC=i586-mingw32msvc-windres
15
16# Fedora 13:
17CC=i686-pc-mingw32-gcc
18CXX=i686-pc-mingw32-g++
19LD=i686-pc-mingw32-ld
20AR=i686-pc-mingw32-ar
21AS=i686-pc-mingw32-as
22NM=i686-pc-mingw32-nm
23STRIP=i686-pc-mingw32-strip
24RANLIB=i686-pc-mingw32-ranlib
25DLLTOOL=i686-pc-mingw32-dlltool
26OBJDUMP=i686-pc-mingw32-objdump
27RC=i686-pc-mingw32-windres
28
29LIB_DIR=../libraries
30
31CFLAGS+=-DSIMULATOR -W -I$(LIB_DIR)/Boost1.40 -O0 -I../ -D_CRT_SECURE_NO_DEPRECATE -I$(LIB_DIR)/fltk-1.1.10 -I$(LIB_DIR)/vmmlib/include -I$(LIB_DIR)/glut-3.7.6/include -I$(LIB_DIR)/ann_1.1.1/include -DWIN32 -I$(LIB_DIR)/ -D_DEBUG -D_WINDOWS -DWIN32_LEAN_AND_MEAN -DVC_EXTRA_LEAN -I$(LIB_DIR)/polylib -DWIN32_EXTRA_LEAN -g -I/usr/i586-mingw32msvc/include -I/usr/i586-mingw32msvc/lib -I$(LIB_DIR)/libconfig-1.3.2
32
33LDFLAGS+=-L$(LIB_DIR)/boost1.40
34LDFLAGS+=-L$(LIB_DIR)/polylib
35LDFLAGS+=-L$(LIB_DIR)/fltk-1.1.10
36LDFLAGS+=-L$(LIB_DIR)/vmmlib
37LDFLAGS+=-L$(LIB_DIR)/CGAL_3.5/CGAL-3.5
38LDFLAGS+=-L$(LIB_DIR)/glut-3.7.6
39LDFLAGS+=-L$(LIB_DIR)/ann_1.1.1/include
40LDFLAGS+=-L$(LIB_DIR)/libconfig-1.3.2/lib
41
42# Palomides:
43#LDFLAGS+=-L"/usr/i586-mingw32msvc/lib"
44
45# Fedora 13:
46LDFLAGS+=-L"/usr/i686-pc-mingw32/lib"
47LDFLAGS+=-lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lwsock32 -lcomctl32 -lws2_32 -limm32 -lwinmm -lopengl32 -lstdc++ -lgcc -lctl3d32 -lwsock32 -lopengl32 -lglu32
48
49LDFLAGS+=-lpolylib -lconfig++ -lGLU -lGL -lfltk -lfltk_gl -lfltk_forms -lglut -lboost_thread-mt -lboost_system-mt
50
51ifeq ($(TARGET),)
52	TARGET=RELEASE
53endif
54
55WARNING_FLAGS = -Wall
56
57EXEC=RepSnapper.exe
58EXEC_DEBUG=RepSnapper_debug.exe
59
60ifeq ($(TARGET),RELEASE)
61	CFLAGS ?= -O2 $(WARNING_FLAGS)
62	EXECUTABLE=$(EXEC)
63else
64	CFLAGS ?= -g -O0 $(WARNING_FLAGS)
65	EXECUTABLE=$(EXEC_DEBUG)
66endif
67
68GENERATED=ui.cxx ui.h
69
70MAIN_SOURCES=repsnapper.cpp
71TEST_SOURCES=unittest.cpp
72SHARED_SOURCES=asyncserial.cpp stl.cpp reprapserial.cpp \
73	processcontroller.cpp printer.cpp modelviewcontroller.cpp \
74	gllight.cpp gcode.cpp arcball.cpp stdafx.cpp ui.cxx \
75	rfo.cpp flu_dnd.cpp flu_pixmaps.cpp flu_simplestring.cpp \
76	flu_tree_browser.cpp ivcon.cpp file.cpp platform.cpp
77
78HEADERS=arcball.h asyncserial.h convert.h flu_dnd.h flu_enumerations.h \
79	flu_export.h flu_pixmaps.h flu_simplestring.h flu_tree_browser.h \
80	gcode.h gllight.h ivcon.h miniball.h modelviewcontroller.h \
81	printer.h processcontroller.h reprapserial.h rfo.h \
82	stdafx.h stl.h triangle.h ui.h platform.h
83
84SHARED_OBJECTS=$(subst .c,.o,$(subst .cxx,.o,$(subst .cpp,.o,$(SHARED_SOURCES))))
85MAIN_OBJECTS=$(subst .c,.o,$(subst .cxx,.o,$(subst .cpp,.o,$(MAIN_SOURCES)))) $(SHARED_OBJECTS)
86TEST_OBJECTS=$(subst .c,.o,$(subst .cxx,.o,$(subst .cpp,.o,$(TEST_SOURCES)))) $(SHARED_OBJECTS)
87
88all: $(EXECUTABLE)
89
90$(EXECUTABLE): poly_lib $(MAIN_OBJECTS)
91	$(CXX) ${INC} $(MAIN_OBJECTS) $(LDFLAGS) -o $@
92
93unittest : poly_lib $(TEST_OBJECTS)
94	$(CXX) ${INC} $(TEST_OBJECTS) $(LDFLAGS) $(TEST_LDFLAGS) -o $@
95
96%.cxx %.h:%.fl
97	rm -f $@ # fluid doesn't remove on failure.
98	fluid -c $<
99%.o:%.cxx
100	$(CXX) ${INC} -c $(CFLAGS) $< -o $@
101%.o:%.cpp
102	$(CXX) ${INC} -c $(CFLAGS) $< -o $@
103%.o:%.c
104	$(CC) ${INC} -c $(CFLAGS) $< -o $@
105
106poly_lib:
107	make -C $(LIB_DIR)/polylib/ all
108
109boost_lib:
110	cd $(LIB_DIR)/Boost1.40/ && configure --host=i586-mingw32msvc --prefix=/usr/i586-mingw32msvc
111	make -C $(LIB_DIR)/Boost1.40
112
113libconfig_lib:
114	PATH=/usr/i586-mingw32msvc/bin:$(PATH)
115	cd $(LIB_DIR)/libconfig-1.3.2/ && ./configure --host=i586-mingw32msvc --prefix=$(realpath $(LIB_DIR)/libconfig-1.3.2/)
116	make -C $(LIB_DIR)/libconfig-1.3.2/ all
117	make -C $(LIB_DIR)/libconfig-1.3.2/ install
118
119
120check: unittest
121	./unittest
122
123clean:
124	rm -f $(SHARED_OBJECTS) $(MAIN_OBJECTS) $(TEST_OBJECTS) \
125	      $(EXEC) $(EXEC_DEBUG) $(GENERATED) unittest
126	make -i -C $(LIB_DIR)/polylib/ clean
127	make -C $(LIB_DIR)/libconfig-1.3.2/ distclean
128
129asyncserial.o: stdafx.h config.h platform.h arcball.h ivcon.h asyncserial.h
130repsnapper.o: stdafx.h config.h platform.h arcball.h ivcon.h
131repsnapper.o: modelviewcontroller.h ui.h file.h flu_tree_browser.h
132repsnapper.o: flu_enumerations.h flu_export.h flu_simplestring.h gcode.h stl.h
133repsnapper.o: processcontroller.h printer.h rfo.h gllight.h reprapserial.h
134repsnapper.o: asyncserial.h
135stl.o: stdafx.h config.h platform.h arcball.h ivcon.h stl.h gcode.h ui.h
136stl.o: file.h modelviewcontroller.h processcontroller.h printer.h rfo.h
137stl.o: flu_tree_browser.h flu_enumerations.h flu_export.h flu_simplestring.h
138stl.o: gllight.h reprapserial.h asyncserial.h
139reprapserial.o: stdafx.h config.h platform.h arcball.h ivcon.h reprapserial.h
140reprapserial.o: ui.h file.h modelviewcontroller.h gcode.h stl.h
141reprapserial.o: processcontroller.h printer.h rfo.h flu_tree_browser.h
142reprapserial.o: flu_enumerations.h flu_export.h flu_simplestring.h gllight.h
143reprapserial.o: asyncserial.h convert.h
144processcontroller.o: stdafx.h config.h platform.h arcball.h ivcon.h
145processcontroller.o: modelviewcontroller.h ui.h file.h flu_tree_browser.h
146processcontroller.o: flu_enumerations.h flu_export.h flu_simplestring.h
147processcontroller.o: gcode.h stl.h processcontroller.h printer.h rfo.h
148processcontroller.o: gllight.h reprapserial.h asyncserial.h
149printer.o: stdafx.h config.h platform.h arcball.h ivcon.h processcontroller.h
150printer.o: printer.h gcode.h rfo.h flu_tree_browser.h flu_enumerations.h
151printer.o: flu_export.h flu_simplestring.h stl.h
152modelviewcontroller.o: stdafx.h config.h platform.h arcball.h ivcon.h
153modelviewcontroller.o: modelviewcontroller.h ui.h file.h flu_tree_browser.h
154modelviewcontroller.o: flu_enumerations.h flu_export.h flu_simplestring.h
155modelviewcontroller.o: gcode.h stl.h processcontroller.h printer.h rfo.h
156modelviewcontroller.o: gllight.h reprapserial.h asyncserial.h
157gllight.o: stdafx.h config.h platform.h arcball.h ivcon.h gllight.h
158gcode.o: stdafx.h config.h platform.h arcball.h ivcon.h gcode.h ui.h file.h
159gcode.o: modelviewcontroller.h stl.h processcontroller.h printer.h rfo.h
160gcode.o: flu_tree_browser.h flu_enumerations.h flu_export.h flu_simplestring.h
161gcode.o: gllight.h reprapserial.h asyncserial.h
162arcball.o: stdafx.h config.h platform.h arcball.h ivcon.h
163stdafx.o: stdafx.h config.h platform.h arcball.h ivcon.h stl.h
164ui.o: ui.h config.h stdafx.h platform.h arcball.h ivcon.h file.h
165ui.o: modelviewcontroller.h gcode.h stl.h processcontroller.h printer.h rfo.h
166ui.o: flu_tree_browser.h flu_enumerations.h flu_export.h flu_simplestring.h
167ui.o: gllight.h reprapserial.h asyncserial.h
168rfo.o: stdafx.h config.h platform.h arcball.h ivcon.h ui.h file.h
169rfo.o: modelviewcontroller.h gcode.h stl.h processcontroller.h printer.h
170rfo.o: rfo.h flu_tree_browser.h flu_enumerations.h flu_export.h
171rfo.o: flu_simplestring.h gllight.h reprapserial.h asyncserial.h flu_pixmaps.h
172flu_dnd.o: flu_dnd.h flu_enumerations.h flu_export.h
173flu_pixmaps.o: flu_pixmaps.h flu_export.h
174flu_simplestring.o: flu_simplestring.h flu_enumerations.h flu_export.h
175flu_tree_browser.o: flu_tree_browser.h flu_enumerations.h flu_export.h
176flu_tree_browser.o: flu_simplestring.h flu_pixmaps.h
177ivcon.o: ivcon.h
178file.o: stdafx.h config.h platform.h arcball.h ivcon.h file.h
179file.o: modelviewcontroller.h ui.h flu_tree_browser.h flu_enumerations.h
180file.o: flu_export.h flu_simplestring.h gcode.h stl.h processcontroller.h
181file.o: printer.h rfo.h gllight.h reprapserial.h asyncserial.h
182