Bonjour !
Frédéric a écrit :
> Bon, mes dépendances semblent ok, mais lorsque j'utilise l'option -j,
> toutes les cibles ne sont pas générées.
>
> Ici, en l'occurence, il crée bien les cibles 'menu', 'intro', et
> 'game', mais pas la cible 'dsk', ni la cible 'run' ! C'est pourtant la
> cible (par défaut) 'run' qui crée la cible 'dsk', qui à son tour crée
> les 3 autres...
J'ai regardé, et je n'ai pas trouvé le problème. De ce que j'ai compris,
ton graphe de dépendances est un arbre :
run
└── Fugitif.dsk
├── menu.bin
│ └── menu.asm
├── intro.bin
│ └── intro.asm
├── game.bin
│ ├── font_charset.asm
│ │ └── fontNormalAsSprites.py
│ ├── state.bin
│ └── game.asm
└── gameplay_data_{01..21}.bin.zx0
└── gameplay_data_{01..21}.bin
Le seul truc bizarre, c'est $(STATE_FILE) (state.bin), qui ne dépend de
rien, et qui n'a pas de recette pour le créer. Est-ce que le fichier est
préexistant ?
J'ai testé ton Makefile avec le script ci-dessous. Il semble bien
marcher, autant en mode séquentiel qu'en parallèle. En mode séquentiel,
il affiche ces messages :
'Generating menu.bin'...
Generating 'intro.bin'...
Generating 'font_charset.asm'...
Generating 'game.bin'...
Compressing '../build/gameplay_data_01.bin'...
[...et les autres gameplay_data_*.bin...]
Generating 'Fugitif.dsk'...
RetroVirtualMachine -boot=cpc6128 -noshader -insert ...
En mode parallèle, je vois la même chose, dans le même ordre, sauf la
ligne game.bin qui apparaît après les « Compressing... ».
Tu peux toujours essayer de lancer make avec les options -d (attention,
très verbeux), -r (i.e. --no-builtin-rules, par précaution) ou --trace.
J'ai GNU Make 4.3 / Ubuntu 22.04.
À+,
Edgar.
────────────────────────────────────────────────────────────────────────
#!/bin/bash
# Copy the Makefile to a temporary directory and move there.
root=$(mktemp -d /tmp/fugitif-XXX)
mkdir $root/src
cp -a Makefile $root/src/
cd $root
# Create the directory tree.
mkdir -p bin build tools/font dsk
# Create the binaries.
cat >bin/dummy <<EOF
#!/bin/bash
sleep \$(bc<<<\$RANDOM/65536)
EOF
chmod a+x bin/dummy
ln -s dummy bin/RetroVirtualMachine
ln -s dummy bin/sjasmplus
ln -s dummy bin/zx0
ln -s ../../bin/dummy tools/font/fontNormalAsSprites2Charset.py
ln -s ../bin/dummy tools/sectorize.py
# Create source files.
touch src/{menu,intro,game}.asm
touch tools/font/fontNormalAsSprites.py
touch build/gameplay_data_{01..21}.bin
# Show the tree we built.
tree -a $root
# Run make.
PATH=../bin:$PATH make -C src -j $(nproc)
# Clean up.
cd -
rm -rf "$root"