-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
131 lines (81 loc) · 3.24 KB
/
Makefile
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
# Makefile général.
# Fait plein de choses
#
# \author Pierre Pomeret-Coquot
# \version 3
# \date 30 mars 2017
#
# Différentes commandes :
# - java : compile le java
# - c : compile le c et place une copie de la bibliothèque dans JAVA_BIN/JAVA_SO_PATH
# - doc : crée la documentation avec doxygen
# - raccourci : crée un exécutable lançant le java en utilisant la bibliothèque
# - client : crée le dossier client
#
#
#
# RÉGLAGES
include parametres/make.txt
C_SOURCES_CACHEES = $(filter-out tests ia_randombot, $(C_TOUT))
C_SOURCES_PUBLIQUES = $(filter-out $(C_SOURCES_CACHEES), $(C_TOUT))
FICHIERS_CLIENT = $(foreach f, \
$(foreach dos,$(C_SOURCES_PUBLIQUES),$(wildcard $(C)/$(dos)/*.c) \
$(wildcard $(C)/$(dos)/*.h) \
$(wildcard $(C)/$(dos)/*.sh) \
$(wildcard $(C)/$(dos)/Makefile)) \
$(foreach dos,$(C_SOURCES_CACHEES) ,$(wildcard $(C)/$(dos)/*.h) \
$(patsubst $(C)/$(dos)/%.c,$(C)/$(dos)/$(DOS_O)/%.o,$(wildcard $(C)/$(dos)/*.c))) \
$(filter-out $(foreach dos,$(C_TOUT),$(C)/$(dos)), $(wildcard $(C)/*)) \
$(foreach f, Makefile doc.h $(JAVA_SRC), $(JAVA)/$(f)) \
$(filter-out $(wildcard $(JAVA)/$(JAVA_IMG)/*/*.xcf), $(wildcard $(JAVA)/$(JAVA_IMG)/*/*)) \
$(filter-out $(DOSSIER_CLIENT) $(C) $(EXE) $(JAVA),$(wildcard *)) \
,$(DOSSIER_CLIENT)/$(f))
# MAKES
all: c java raccourci
java: $(JAVA)/$(JAVA_APP)
c: $(foreach lib, $(TOUTES_LIB), $(C)/$(lib))
raccourci: $(EXE)
doc: javadoc cdoc
rm -fr doc/html && doxygen $(PARAMS)/doxygen_all.txt
echo '<!doctype html><html><meta http-equiv="refresh" content="0;URL=html/index.html"></html>' > doc/index.html
client: $(FICHIERS_CLIENT)
tests tests_memoire memory_tests:
make $@ -C c/tests
# L'application java
$(JAVA)/$(JAVA_APP):
make -C $(JAVA)
# La bibliothèque dans le dossier lib
$(JAVA)/$(JAVA_BIN)/lib%: $(C)/%
cp $^ $@
# Compilation de la bibliothèque (.so)
$(C)/%:
make $* -C $(C)
# Génère le raccourci
$(EXE): $(JAVA)/$(JAVA_APP) $(foreach lib, $(TOUTES_LIB), $(JAVA)/$(JAVA_BIN)/lib$(lib))
echo "(cd \"$(CURDIR)/$(JAVA)/$(JAVA_BIN)\" && java -Djava.library.path=./ $(JAVA_CLASS_APP) \$$@)" > $(EXE) && chmod 751 $(EXE)
# Doc java
javadoc:
make doc -C $(JAVA)
# Doc c
cdoc:
make doc -C $(C)
# Fichier dans le dossier client
$(DOSSIER_CLIENT)/%: %
@mkdir -p $(dir $@)
cp -r $* $@
$(C)/%.o:
make $*.o -C $(C)
# NETTOYAGE
doc-clean:
rm -fr doc/html
make $@ -C $(JAVA)
make $@ -C $(C)
clean maxclean:
make $@ -C $(JAVA)
make $@ -C $(C)
rm -fr $(EXE)
maxmaxclean: maxclean doc-clean
rm -fr $(DOSSIER_CLIENT)
rm -fr doc $(RACCOURCI_APP)
rm -fr $(JAVA)/$(JAVA_BIN)/lib*.so
.PHONY: all java c raccourci client copie_fichiers_client doc javadoc cdoc tests tests_memoire memory_tests clean maxclean maxmaxclean