1
0
Fork 0
mirror of https://github.com/RobotechLille/cdf2018-principal synced 2024-11-25 01:26:04 +01:00
cdf2018-principal/chef/Makefile

61 lines
1.8 KiB
Makefile
Raw Normal View History

2018-02-07 17:57:01 +01:00
# VARIABLES
## Compilateur
CC=gcc
# Bibliothèques
LIBS=
## Drapeaux pour le linker
2018-05-02 05:51:14 +02:00
LDFLAGS_CUSTOM += -lpthread -lwiringPi -lm
2018-02-07 17:57:01 +01:00
## Drapeaux pour le compilateur
2018-04-30 16:15:10 +02:00
CFLAGS_CUSTOM += -g
2018-02-07 17:57:01 +01:00
## Générateurs de drapeaux pour les bibliothèques
PKG_CONFIG=pkg-config
2018-04-30 22:40:20 +02:00
## Nom des objets communs
2018-05-09 04:09:38 +02:00
OBJS=actionneurs buttons CA CF debug diagnostics i2c imu ihm lcd motor movement parcours points position securite
2018-04-30 22:40:20 +02:00
OBJS_O=$(addprefix obj/,$(addsuffix .o,$(OBJS)))
2018-02-07 17:57:01 +01:00
# VARIABLES AUTOMATIQUES
ifdef LIBS
2018-04-04 16:17:13 +02:00
LDFLAGS_CUSTOM += $(shell $(PKG_CONFIG) --libs $(LIBS))
2018-02-07 17:57:01 +01:00
CFLAGS += $(shell $(PKG_CONFIG) --cflags $(LIBS))
endif
# Par défaut on affiche les warnings et on ajoute les symboles de debug pour utiliser GDB
CFLAGS += -Wall -Wextra -pedantic -g -DDEBUG
# buildroot se charge de remplacer ces flags avec des optimisations
2018-04-30 22:40:20 +02:00
# RÈGLES DE COMPILATION
# Règle éxecutée par défaut (quand on fait juste `make`)
default: bin/premier bin/local $(subst src,bin,$(subst .c,,$(wildcard src/test*.c)))
2018-02-07 17:57:01 +01:00
# Génération des fichiers éxecutables
2018-04-30 22:40:20 +02:00
bin/%: obj/%.o $(OBJS_O)
2018-04-30 16:15:10 +02:00
$(CC) $(LDFLAGS) $(LDFLAGS_CUSTOM) $^ -o $@
$(OBJCOPY) --only-keep-debug $@ $@.debug
$(STRIP) --strip-debug --strip-unneeded $@
2018-02-07 17:57:01 +01:00
# Binaires (dont il faut spécifier les objets explicitement)
2018-04-30 22:40:20 +02:00
bin/premier: obj/premier.o $(OBJS_O)
bin/test%: obj/test%.o $(OBJS_O)
2018-04-04 16:17:13 +02:00
2018-04-30 16:15:10 +02:00
# Programme de test sur PC, n'embarquant pas wiringPi
2018-05-06 18:35:26 +02:00
bin/local: obj/local.o
2018-05-06 01:14:09 +02:00
$(CC) $(CFLAGS) $(CFLAGS_CUSTOM) -lpthread -lm $^ -o $@
2018-02-07 17:57:01 +01:00
# Génération des fichiers objets
obj/%.o: src/%.c src/%.h
2018-04-30 16:15:10 +02:00
$(CC) $(CFLAGS) $(CFLAGS_CUSTOM) -c $< -o $@
2018-02-07 17:57:01 +01:00
obj/%.o: src/%.c
2018-04-30 16:15:10 +02:00
$(CC) $(CFLAGS) $(CFLAGS_CUSTOM) -c $< -o $@
2018-02-07 17:57:01 +01:00
# OUTILS DE DÉVELOPPEMENT
# Supprime les fichiers automatiquement générés
clean:
rm -f obj/*
rm -f bin/*
# Au cas où des fichiers avec certains noms existent, les règles suivantes seront executées quand même
.PHONY: default clean