Commit e204f0a0 authored by Guillaume Huard's avatar Guillaume Huard
Browse files

Restoration of the weakened symbols

parent 86dd8a14
......@@ -16,9 +16,12 @@ permettre aux étudiants d'exécuter et debugger leur programmes.
* Compilation dans =vpl_evaluate.cases=
Il est possible d'utiliser la fonction =C_compilation()= pour générer le réglage de compilation d'un
programme. Grâce à cette fonction, la compilation se fait de manière séparée, en affaiblissant le
symbole =main= dans les fichiers soumis par l'étudiant, ce qui permet à l'enseignant de
redéfinir cette fonction.
programme. Grâce à cette fonction, la compilation se fait de manière séparée et il est possible
d'affaiblir certains symboles dans les fichiers soumis en en mentionnant la liste dans la variable
=WEAKEN_SYMBOLS= (noms des symboles séparés par des espaces). Affaiblir un symbole d'un fichier
soumis permet à l'enseignant de le redéfinir ses fichiers. Si cela ne s'applique qu'à certains
exercices, il est aussi possible de le mentionner lors de l'appel de la fonction
(=C_compilation("WEAKEN_SYMBOLS=main")=).
* Les modes =run= et =debug=
......
......@@ -2,6 +2,7 @@
C_FILES=0
export CC=${CC-'gcc'}
export CFLAGS=${CFLAGS-'-Wall -Werror -g'}
export WEAKEN_SYMBOLS
compile() {
for file in $*
......
......@@ -30,13 +30,22 @@ do
base=$(basename $file .c)
$CC $CFLAGS -c $file || end $?
GENERATED_FILES="$GENERATED_FILES $base.o"
if [ -n "$WEAKEN_SYMBOLS" ] && search $file $VPL_SUBFILES
then
weaken_list=""
for symbol in $WEAKEN_SYMBOLS
do
weaken_list="$weaken_list -W $symbol"
done
objcopy $weaken_list $base.o
fi
done
$CC $GENERATED_FILES $LDLIBS -o $NAME || end $?
end 0
};
sub C_compilation() {
return "#!/bin/bash\n".$compilation_code;
sub C_compilation(@) {
return "#!/bin/bash\n".join('\n',@_)."\n".$compilation_code;
}
sub C_function_call($) {
......
ACTIVITIES=$(patsubst %.org, %, $(wildcard *.org))
ACTIVITIES=$(patsubst %.org, %, $(filter-out README.org, $(wildcard *.org)))
ALL_VPL_IDS=$(addsuffix /vpl_id.txt, $(ACTIVITIES))
VPL_IDS=$(filter-out Default_%, $(ALL_VPL_IDS))
DEFAULT_VPL_IDS=$(filter Default_%, $(ALL_VPL_IDS))
......@@ -36,6 +36,7 @@ $(DEBUGS): %/debug: $$(wildcard %/*/*)
echo $^
debug:
@echo "ACTIVITIES: $(ACTIVITIES)"
@echo "VPL_IDS: $(VPL_IDS)"
@echo "DEFAULT_VPL_IDS: $(DEFAULT_VPL_IDS)"
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment