-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
66 lines (51 loc) · 2.54 KB
/
Makefile
File metadata and controls
66 lines (51 loc) · 2.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# Main makefile
TOROOT= $(patsubst %/,%,$(abspath $(dir $(lastword $(MAKEFILE_LIST)))))
PUGISRC = pugixml/src
SHAREDFOLDERS = $(TOROOT)/math $(TOROOT)/math/io $(TOROOT)/math/conversion $(TOROOT)/arduino $(TOROOT)/motor $(TOROOT)/motor/io $(TOROOT)/motor/calibration $(TOROOT)/util/xml
UPLOADEDFOLDERS = ./arduinosketch
MAIN = GeRobot
include Makefile.config
OBJS := $(wildcard bin/objects/*.o)
.PHONY: CLEAN ALL INSTALL CREATENECESSARYFOLDERS LINKHEADERS clean MACROHEADER PUGI CXX
ALL: CREATENECESSARYFOLDERS MACROHEADER PUGI CXX LINKHEADERS SHAREDTARGET UPLOADEDTARGET
CREATENECESSARYFOLDERS:
@echo "Creating folders for objects and shared libs"
$(MKDIR_P) $(INCLUDEFOLDER)
$(MKDIR_P) $(OBJECTFOLDER)
$(MKDIR_P) $(LIBFOLDER)
$(MKDIR_P) $(DEPDIR)
MACROHEADER: $(TOROOT)/$(INCLUDEFOLDER)/macroHeader.h.gch
@echo "yay"
LINKHEADERS:
@echo "Creating symbolic links for all .h files in the project"
# Link the macro header
$(LINK) ../$(MACROHEADER) $(INCLUDEFOLDER)
# link the h-files in each shared folder where we use relative paths to resolve them
$(foreach FOLDER,$(SHAREDFOLDERS), $(foreach HFILE,$(wildcard $(FOLDER)/*.h),\
$(LINK) $(patsubst $(TOROOT)%,..%,$(HFILE)) $(INCLUDEFOLDER);))
SHAREDTARGET:
$(foreach FOLDER,$(SHAREDFOLDERS), cd $(FOLDER); $(MAKE);)
$(MAKE) shared
UNITTEST:
$(foreach FOLDER,$(SHAREDFOLDERS), cd $(FOLDER); cd unit_test; $(MAKE) unitTest; cd ../..;)
PUGI:
git submodule init
git submodule update
git submodule foreach 'git fetch origin; git checkout $(git rev-parse --abbrev-ref HEAD); git reset --hard origin/$$(git rev-parse --abbrev-ref HEAD); git submodule update --recursive; git clean -dfx'
$(foreach HFILE,$(wildcard $(PUGISRC)/*.hpp),$(LINK) ../$(HFILE) $(INCLUDEFOLDER);)
$(CC) $(CFLAGS) $(INCLUDES) -c $(PUGISRC)/pugixml.cpp -o $(TOROOT)/$(OBJECTFOLDER)/pugixml.o
CXX:
wget -O $(TOROOT)/cxx.tar.gz 'http://sourceforge.net/projects/cxxtest/files/latest/download?source=files'
$(MKDIR_P) $(CXX)
tar -xvzf $(TOROOT)/cxx.tar.gz --strip=1 -C $(CXX)
$(MKDIR_P) $(INCLUDEFOLDER)/cxxtest
$(foreach HFILE,$(wildcard $(CXXSRC)/*.h),$(LINK) $(HFILE) $(INCLUDEFOLDER)/cxxtest;)
$(foreach HFILE,$(wildcard $(CXXSRC)/*.cpp),$(LINK) $(HFILE) $(INCLUDEFOLDER)/cxxtest;)
UPLOADEDTARGET:
$(foreach FOLDER,$(UPLOADEDFOLDERS), cd $(FOLDER); make -i upload; cd ..; )
CLEAN:
$(foreach FOLDER,$(UPLOADEDFOLDERS), cd $(FOLDER); make clean; cd $(TOROOT);)
$(foreach FOLDER,$(SHAREDFOLDERS), cd $(FOLDER); make clean; cd $(TOROOT);)
$(RM) $(INCLUDEFOLDER)/macroHeader.h.gch
.DEFAULT_GOAL := SHAREDTARGET
# End of the main math makefile