Re: make -j

トップ ページ

このメッセージに返信
著者: Frédéric
日付:  
To: Guilde
題目: Re: make -j
Le samedi 12 juillet 2025, Edgar a écrit :

> [...] Si le graphe de dépendances est correctement décrit, ça doit
> marcher en parallèle.


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...

Sans l'option -j, ça marche très bien.

Une idée du problème ?

-- 
    Frédéric

# Makefile to build Fugitif 31th

BUILD_DIR = ../build
TOOLS_DIR = ../tools
FONT_DIR = $(TOOLS_DIR)/font
# SCREENS_DIR = ./screens
# SCREENS_SRC_DIR = ../screens
DSK_DIR = ../dsk

FONT_FILE = ./font_charset.asm
FONT_SRC_FILE = $(FONT_DIR)/fontNormalAsSprites.py
DATA_FILES = $(foreach i, $(shell seq -f "%02g" 1 21), $(BUILD_DIR)/gameplay_data_$(i).bin.zx0)
# SCREENS_FILES = $(foreach i, $(shell seq -f "%02g" 0 71), $(SCREENS_DIR)/$i.zx0)
STATE_FILE = $(BUILD_DIR)/state.bin
MENU_FILE = $(BUILD_DIR)/menu.bin
MENU_SRC_FILE = ./menu.asm
MENU_DEP_FILES =
INTRO_FILE = $(BUILD_DIR)/intro.bin
INTRO_SRC_FILE = ./intro.asm
INTRO_DEP_FILES =
GAME_FILE = $(BUILD_DIR)/game.bin
GAME_SRC_FILE = ./game.asm
GAME_DEP_FILES =
DSK_FILE = $(DSK_DIR)/Fugitif.dsk

ASM_CMD = sjasmplus
SIM_CMD = RetroVirtualMachine
ZX0_CMD = zx0
DSK_CMD = $(TOOLS_DIR)/sectorize.py
FONT_CMD = $(FONT_DIR)/fontNormalAsSprites2Charset.py
# DEBUG_SYM_PY = $(TOOLS_DIR)/debugSym.py

ASM_OPTS = --nofakes --syntax=b --outprefix=$(BUILD_DIR)/ --lst=$(BUILD_DIR)/$@.lst --sym=$(BUILD_DIR)/$@.sym #--sld=$(BUILD_DIR)/$@.sld
SIM_OPTS = -noshader

# Defines
L = $(shell echo $${LANG%_*})
LANGUAGE = -DLANG_$(shell echo $${LANG%_*} | tr [:lower:] [:upper:])
# TODO: handle LANG=C

ifdef DEVELOP
    DEVELOP_ = -DDEVELOP  # display develop stuffs (pointer coords...) implies FAST
endif


ifdef FAST
    FAST_ = -DFAST  # speed up messages output
endif


ifdef INTRO_ONLY
    INTRO_ONLY_ = -DINTRO_ONLY  # directly run intro
endif


ifdef GAME_ONLY
    GAME_ONLY_ = -DGAME_ONLY  # directly run game
endif


ifdef LOGGER
    LOGGER_ = -DLOGGER=${LOGGER}  # general logger level
else
    LOGGER_ = -DLOGGER=error
endif


ifdef LOGGER_ENGINE
    LOGGER_ENGINE_ = -DLOGGER_ENGINE=${LOGGER_ENGINE}  # engine logger level
else
    LOGGER_ENGINE_ = -DLOGGER_ENGINE=error
endif


DEFINES = $(LANGUAGE) $(DEVELOP_) $(FAST_) ${INTRO_ONLY_} ${GAME_ONLY_} $(LOGGER_) $(LOGGER_ENGINE_)

# Default target
.DEFAULT_GOAL := run

%.bin.zx0: %.bin
    @echo "\n  * Compressing '$<'...\n"
    @rm -f $@
    $(ZX0_CMD) $< $@


$(MENU_FILE):  $(MENU_SRC_FILE) # TODO: $(MENU_DEP_FILES)
    @echo "\n  * 'Generating menu.bin'...\n"
    $(ASM_CMD) $(ASM_OPTS) $(DEFINES) -DMENU $(MENU_SRC_FILE)


menu: $(MENU_FILE)

$(INTRO_FILE):  $(INTRO_SRC_FILE) # TODO: $(INTRO_DEP_FILES)
    @echo "\n  *Generating 'intro.bin'...\n"
    $(ASM_CMD) $(ASM_OPTS) $(DEFINES) -DINTRO $(INTRO_SRC_FILE)


intro: $(INTRO_FILE)

${FONT_FILE}: $(FONT_SRC_FILE)
    @echo "\n  * Generating 'font_charset.asm'...\n"
    $(FONT_CMD) >$(FONT_FILE)
#     $(FONT_CMD) | tee $(FONT_FILE)  # debug


$(STATE_FILE): # TODO: add asm files

$(GAME_FILE): $(FONT_FILE) $(STATE_FILE) $(GAME_SRC_FILE) #TODO: $(GAME_DEP_FILES)
    @echo "\n  * Generating 'game.bin'...\n"
    $(ASM_CMD) $(ASM_OPTS) $(DEFINES) -DGAME $(GAME_SRC_FILE)
#     $(DEBUG_SYM_PY) $(BUILD_DIR)/game.sym


game: $(GAME_FILE)

${DSK_FILE}: $(MENU_FILE) $(INTRO_FILE) $(GAME_FILE) $(DATA_FILES) # TODO: $(SCREEN_FILES)
    @echo "\n  * Generating 'Fugitif.dsk'...\n"
    ${DSK_CMD}


dsk: ${DSK_FILE}

# $(SCREENS_DIR)%.zx0: $(SCREENS_SCR_DIR)/%.bin
#     @echo "\n  * Compressing '$<'...\n"
#     @rm -f $@
#     $(ZX0_CMD) $< $@
#
# screens: $(SCREENS_FILES)


run: run_${L}

run_en: ${DSK_FILE}
    ${SIM_CMD} -boot=cpc6128 ${SIM_OPTS} -insert ${DSK_FILE} -command='run"F\n'


run_fr: ${DSK_FILE}
    ${SIM_CMD} -boot=cpc6128@fr ${SIM_OPTS} -insert ${DSK_FILE} -command='run3F\n'


run_es: ${DSK_FILE}
    ${SIM_CMD} -boot=cpc6128@es ${SIM_OPTS} -insert ${DSK_FILE} -command='run"F\n'


cat: cat_${L}

cat_en: ${DSK_FILE}
    ${SIM_CMD} -boot=cpc6128 ${SIM_OPTS} -insert ${DSK_FILE} -command='cat\n'


cat_fr: ${DSK_FILE}
    ${SIM_CMD} -boot=cpc6128@fr ${SIM_OPTS} -insert ${DSK_FILE} -command='cqt\n'


cat_es: ${DSK_FILE}
    ${SIM_CMD} -boot=cpc6128@es ${SIM_OPTS} -insert ${DSK_FILE} -command='cat\n'


clean:
    rm -rf $(BUILD_DIR)/*


.PHONY: default menu intro game dsk screens run run_en run_es run_es cat cat_en cat_fr cat_es clean