-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathmakefile
More file actions
executable file
·132 lines (95 loc) · 2.58 KB
/
makefile
File metadata and controls
executable file
·132 lines (95 loc) · 2.58 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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# Commande de délétion
RM=rm
# Flags de délétion
RMFLAGS=-rf
# Commande de copie
CP=cp
# Bibliothèques supplémentaires
LIB=bluetooth pthread rt
# Répertoires de bibliothèques
LIBDIR?=
# Destination prefix for install
DESTDIR?=/usr/
# System libraries folder
SYSLIB?=$(DESTDIR)/lib/
# System include folder
SYSINC?=$(DESTDIR)/include/
# Commande écho
ECHO=@echo
# Nom de la bibliothèque
LIBNAME=libsphero.so
# Dossiers d'include pero
INCDIR=src
# Dossier d'include externes
EXTINCDIR?=
# Dossier sources
SRCDIR=src
# Dossier objets
OBJDIR=obj
# Dossier où sont mises les dépendances
DEPDIR=dep
df=$(DEPDIR)/$(*F)
SRC=$(shell find $(SRCDIR) -type f -name *.cpp | sed -e "s/$(SRCDIR)\///")
INC=$(shell find $(INCDIR) -type f \( -name *.hpp -o -name *.h -o -name *.tpp \) | sed -e "s/$(INCDIR)\///")
OBJ=$(SRC:.cpp=.o)
CLEAR=clean
INSTALL=install
UNINSTALL=uninstall
REINSTALL=reinstall
MAKEDEPEND = g++ $(addprefix -I, $(EXTINCDIR)) -I$(INCDIR) -o $(df).d -std=c++11 -MM $< #Pour calculer les dépendances
#Compilateur
CC=gcc
#Options du compilateur
CCFLAGS+=-Wall -fPIC -fpermissive -Wextra -Woverloaded-virtual -std=c++11 -I$(INCDIR) $(addprefix -I, $(EXTINCDIR)) $(addprefix -l, $(LIB)) -c -pthread
EL=g++ #Éditeur de liens
ELFLAGS= -shared
DEBUG?=FALSE
DSHARP?=FALSE
MAP?=FALSE
PROF?=FALSE
ifneq ($(DEBUG),FALSE)
CCFLAGS+= -g
ELFLAGS+= -g
endif
ifneq ($(MAP),FALSE)
CCFLAGS+= -DMAP
endif
ifneq ($(PROF),FALSE)
CCFLAGS+= -pg
ELFLAGS+= -pg
endif
.PHONY: $(CLEAR)
.PHONY: $(INSTALL)
.PHONY: ALL
.PHONY: $(UNINSTALL)
.PHONY: $(REINSTALL)
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
@mkdir -p $(DEPDIR);
@mkdir -p $(OBJDIR);
@$(MAKEDEPEND); \
cp $(df).d $(df).P;\
sed -e 's/#.*//' -e 's/^[^:]*: *//' -e 's/ *\\$$//' \
-e '/^$$/ d' -e 's/$$/ :/' < $(df).d >> $(df).P;\
sed -i '1s/^/$(OBJDIR)\//' $(df).P;
@rm -f $(df).d
@$(ECHO) "Compilation de $<"
@mkdir -p $(dir $@)
$(CC) $(CCFLAGS) -o $@ $<
ALL: $(LIBNAME)
$(LIBNAME): $(addprefix $(OBJDIR)/, $(OBJ))
$(ECHO) "Fabrication de la bibliothèque"
$(EL) -o $(LIBNAME) $(addprefix $(OBJDIR)/, $(OBJ)) $(ELFLAGS) $(addprefix -l, $(LIB))
#Fichiers de dépendance
-include $(SRC:%.cpp=$(DEPDIR)/%.P)
$(UNINSTALL):
@rm $(addprefix $(SYSLIB), $(LIBNAME))
@rm -rvf $(SYSINC)sphero
$(ECHO) Désinstallation effectuée
$(INSTALL): $(LIBNAME)
@mkdir -p $(SYSLIB)
$(CP) $(LIBNAME) $(addprefix $(SYSLIB), $(LIBNAME))
@mkdir -p $(SYSINC)sphero
cd $(INCDIR) ; $(CP) --parent $(INC) $(SYSINC)sphero
$(REINSTALL): $(UNINSTALL) $(INSTALL)
$(CLEAR):
$(RM) $(RMFLAGS) $(OBJDIR)/* $(DEPDIR)/*.P $(LIBNAME)