Rev 922 | Blame | Compare with Previous | Last modification | View Log | Download
# Supported environments:# GNU/Linux.## Tools used:# GNU core utilities, tools/aspp, tools/sjasmplus, _sdk/nedores.bin.# TODO: Pack data files (author used `xlpz' tool).# TODO: Missing file "barkov/hellfire.scr", used in "levels/w~214.a80".include ../../_sdk/common.mkNAME = br.com brintro.comSOURCES = main.asm WSTART1.asm brfinal.asmRESOURCES =DOCS =LOCALDIR = brINSTALLDIR ?= ../../../release/nedogameBIN_INSTALLDIR = ${INSTALLDIR}RES_INSTALLDIR = ${INSTALLDIR}/brDOC_INSTALLDIR = ${INSTALLDIR}/docNEDORES = ../../_sdk/nedores.bin# All targetsTARGETS=executables flicks modules levels resources.PHONY: empty ${foreach t,${TARGETS},${t} install-${t} clean-${t}} all install install-doc clean.DEFAULT_GOAL=allempty:@echo 'Usage: make [ TARGET | ACTION-TARGET | all | install | install-doc | clean ]'@echo 'where ACTION is one of: install clean'@echo ' TARGET is one of: ${TARGETS}'# Clear listsDEPS=# Create directories${sort \${LOCALDIR} \${BIN_INSTALLDIR} \${RES_INSTALLDIR} \${DOC_INSTALLDIR} \}:mkdir -p $@############################ Target "executables" ############################EXEC_DEPS=EXEC_BINS=EXEC_DATS=# mainEXEC_MAIN_BINS=br.comEXEC_MAIN_DATS=\${LOCALDIR}/br0.dat \${LOCALDIR}/br1.dat \${LOCALDIR}/br3.dat \${LOCALDIR}/br4.dat \${LOCALDIR}/br6.dat \${LOCALDIR}/br7.dat${eval ${call sjasmplus_odd_rule,${EXEC_MAIN_BINS} ${EXEC_MAIN_DATS},main.asm,,EXEC_DEPS,}}EXEC_BINS+=${EXEC_MAIN_BINS}EXEC_DATS+=${EXEC_MAIN_DATS}# introEXEC_INTRO_BINS=brintro.comEXEC_INTRO_DATS=\${LOCALDIR}/bri3.dat \${LOCALDIR}/bri4.dat \${LOCALDIR}/bri7.dat${eval ${call sjasmplus_odd_rule,${EXEC_INTRO_BINS} ${EXEC_INTRO_DATS},WSTART1.asm,,EXEC_DEPS,}}EXEC_BINS+=${EXEC_INTRO_BINS}EXEC_DATS+=${EXEC_INTRO_DATS}# finalEXEC_FINAL_DATS=${LOCALDIR}/brfinal.dat${eval ${call sjasmplus_rule,${EXEC_FINAL_DATS},brfinal.asm,,EXEC_DEPS,}}EXEC_DATS+=${EXEC_FINAL_DATS}executables: ${EXEC_BINS} ${EXEC_DATS} | ${LOCALDIR}install-executables: executables | ${sort ${BIN_INSTALLDIR} ${RES_INSTALLDIR}}cp ${EXEC_BINS} ${BIN_INSTALLDIR}cp ${EXEC_DATS} ${RES_INSTALLDIR}clean-executables:${RM} ${EXEC_DEPS} ${EXEC_BINS} ${EXEC_DATS}DEPS+=${EXEC_DEPS}####################### Target "flicks" #######################FLICKS_LPZS=${wildcard intro/flick.lpz/*.lpz}FLICKS_BINS=define flick_rule =# No pack rule# Copy rule${eval ${call copy_file_rule,${1},${2},FLICKS_BINS}}endef${foreach f,${FLICKS_LPZS},${eval ${call flick_rule,${LOCALDIR}/${notdir ${f}},${f}}}}flicks: ${FLICKS_BINS} | ${LOCALDIR}install-flicks: flicks | ${RES_INSTALLDIR}cp ${FLICKS_BINS} $|clean-flicks:${RM} ${FLICKS_BINS}######################## Target "modules" ########################MODULES_DEPS=MODULES_ASTS=MODULES_BINS=# ${1} = single output file# ${2} = single input file 1# ${3} = single input file 2define nedores_rule =# File order does matter!${1}: ${2} ${3}${NEDORES} $$^ $$@MODULES_ASTS+=${1}endef${eval ${call nedores_rule,W1LAND.ast,images/W1LAND.bmp,images/W1LAND.dat}}${eval ${call nedores_rule,W2LAND.ast,images/W2LAND.bmp,images/W2LAND.dat}}${eval ${call nedores_rule,W3LAND.ast,images/W3LAND.bmp,images/W3LAND.dat}}${eval ${call nedores_rule,W4LAND.ast,images/W4LAND.bmp,images/W4LAND.dat}}${eval ${call nedores_rule,WBAR.ast,images/WBAR.bmp,images/WBAR.dat}}${eval ${call nedores_rule,WHUMBUTT.ast,images/WHUMBUTT.bmp,images/WHUMBUTT.dat}}${eval ${call nedores_rule,WORCBUTT.ast,images/WORCBUTT.bmp,images/WORCBUTT.dat}}${eval ${call nedores_rule,WHUM1.ast,images/WHUM1.bmp,images/WHUM1.dat}}${eval ${call nedores_rule,WHUM1b.ast,images/WHUM1.bmp,images/WHUM1b.dat}}${eval ${call nedores_rule,WHUM1c.ast,images/WHUM1.bmp,images/WHUM1c.dat}}${eval ${call nedores_rule,WHUMCAT.ast,images/WHUM2.bmp,images/WHUMCAT.dat}}${eval ${call nedores_rule,WHUMHOR.ast,images/WHUM2.bmp,images/WHUMHOR.dat}}${eval ${call nedores_rule,WORC1.ast,images/WORC1.bmp,images/WORC1.dat}}${eval ${call nedores_rule,WORC1b.ast,images/WORC1.bmp,images/WORC1b.dat}}${eval ${call nedores_rule,WORC1c.ast,images/WORC1.bmp,images/WORC1c.dat}}${eval ${call nedores_rule,WORCCAT.ast,images/WORC2.bmp,images/WORCCAT.dat}}${eval ${call nedores_rule,WORCHOR.ast,images/WORC2.bmp,images/WORCHOR.dat}}${eval ${call nedores_rule,WCREAT1.ast,images/WCREAT1.bmp,images/WCREAT1.dat}}${eval ${call nedores_rule,WCREAT1b.ast,images/WCREAT1.bmp,images/WCREAT1b.dat}}${eval ${call nedores_rule,WCREAT1c.ast,images/WCREAT1.bmp,images/WCREAT1c.dat}}${eval ${call nedores_rule,WCREAT2.ast,images/WCREAT2.bmp,images/WCREAT2.dat}}${eval ${call nedores_rule,WCREAT2b.ast,images/WCREAT2.bmp,images/WCREAT2b.dat}}${eval ${call nedores_rule,WCREAT2c.ast,images/WCREAT2.bmp,images/WCREAT2c.dat}}${eval ${call nedores_rule,WBODY.ast,images/WMISC.bmp,images/WBODY.dat}}${eval ${call nedores_rule,WBULLET.ast,images/WMISC.bmp,images/WBULLET.dat}}${eval ${call nedores_rule,demobar.ast,images/demobar.bmp,images/demobar.dat}}define compile_module_rule =${eval ${call sjasmplus_rule,${1},${2},${3},MODULES_DEPS,MODULES_BINS}}endefdefine compile_module_odd_rule =${eval ${call sjasmplus_odd_rule,${1},${2},${3},MODULES_DEPS,MODULES_BINS}}endef${eval ${call compile_module_rule,${LOCALDIR}/W1LAND.bin,W1LAND.ast,}}${eval ${call compile_module_rule,${LOCALDIR}/W2LAND.bin,W2LAND.ast,}}${eval ${call compile_module_rule,${LOCALDIR}/W3LAND.bin,W3LAND.ast,}}${eval ${call compile_module_rule,${LOCALDIR}/W4LAND.bin,W4LAND.ast,}}${eval ${call compile_module_rule,${LOCALDIR}/WBAR.bin,WBAR.ast,}}${eval ${call compile_module_rule,${LOCALDIR}/W0BUT.bin,WHUMBUTT.ast,}} # renamed${eval ${call compile_module_rule,${LOCALDIR}/W1BUT.bin,WORCBUTT.ast,}} # renamed${eval ${call compile_module_rule,${LOCALDIR}/WHUM1.bin,WHUM1.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WHUM1b.bin,WHUM1b.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WHUM1c.bin,WHUM1c.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WHUMCAT.bin,WHUMCAT.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WHUMHOR.bin,WHUMHOR.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WORC1.bin,WORC1.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WORC1b.bin,WORC1b.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WORC1c.bin,WORC1c.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WORCCAT.bin,WORCCAT.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WORCHOR.bin,WORCHOR.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WCREAT1.bin,WCREAT1.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WCREAT1b.bin,WCREAT1b.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WCREAT1c.bin,WCREAT1c.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WCREAT2.bin,WCREAT2.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WCREAT2b.bin,WCREAT2b.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WCREAT2c.bin,WCREAT2c.asm,}}#${eval ${call compile_module_odd_rule,${LOCALDIR}/WBODY.bin,WBODY.asm,}}${eval ${call compile_module_rule,${LOCALDIR}/WBULLET.bin,WBULLET.asm,}}modules: ${MODULES_BINS} | ${LOCALDIR}install-modules: modules | ${RES_INSTALLDIR}cp ${MODULES_BINS} $|clean-modules:${RM} ${MODULES_DEPS} ${MODULES_ASTS} ${MODULES_BINS}DEPS+=${MODULES_DEPS}####################### Target "levels" #######################LEVELS_DEPS=LEVELS_DATS=LEVELS_LPZS=LEVELS_BINS=define compile_level_rule =# Compile rule${eval ${call sjasmplus_rule,${patsubst %${suffix ${2}},%.dat,${2}},${2},${3},LEVELS_DEPS,LEVELS_DATS}}# Fake pack rule${eval ${call copy_file_rule,${patsubst %${suffix ${2}},%.lpz,${2}},${patsubst %${suffix ${2}},%.dat,${2}},LEVELS_LPZS}}# Copy rule${eval ${call copy_file_rule,${1},${patsubst %${suffix ${2}},%.lpz,${2}},LEVELS_BINS}}endefdefine fake_compile_level_rule =# Copy rule${eval ${call copy_file_rule,${1},${patsubst %${suffix ${2}},%.lpz,${2}},LEVELS_BINS}}# No pack rule# No compile ruleendefdefine compile_level_odd_rule =# Compile rule${eval ${call sjasmplus_rule,${patsubst %${suffix ${2}},%.dat,${2}},${2},${3},LEVELS_DEPS,LEVELS_DATS}}# Fake pack rule${eval ${call copy_file_rule,${patsubst %${suffix ${2}},%.lpz,${2}},${patsubst %${suffix ${2}},%.dat,${2}},LEVELS_LPZS}}# Copy rule${eval ${call copy_file_rule,${1},${patsubst %${suffix ${2}},%.lpz,${2}},LEVELS_BINS}}endef${eval ${call fake_compile_level_rule,${LOCALDIR}/br101.dat,levels/w~101.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br102.dat,levels/w~102.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br103.dat,levels/w~103.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br104.dat,levels/w~104.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br105.dat,levels/w~105.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br106.dat,levels/w~106.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br107.dat,levels/w~107.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br108.dat,levels/w~108.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br109.dat,levels/w~109.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br110.dat,levels/w~110.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br111.dat,levels/w~111.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br112.dat,levels/w~112.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br113.dat,levels/w~113.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br114.dat,levels/w~114.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br115.dat,levels/w~115.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br116.dat,levels/w~116.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br117.dat,levels/w~117end.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br201.dat,levels/w~201.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br202.dat,levels/w~202.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br203.dat,levels/w~203.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br204.dat,levels/w~204.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br205.dat,levels/w~205.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br206.dat,levels/w~206.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br207.dat,levels/w~207.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br208.dat,levels/w~208.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br209.dat,levels/w~209.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br210.dat,levels/w~210.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br211.dat,levels/w~211.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br212.dat,levels/w~212.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br213.dat,levels/w~213.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br214.dat,levels/w~214.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br215.dat,levels/w~215.a80,}}${eval ${call fake_compile_level_rule,${LOCALDIR}/br216.dat,levels/w~216.a80,}}${eval ${call compile_level_odd_rule,${LOCALDIR}/br217.dat,levels/w~217end.a80,}}levels: ${LEVELS_BINS} | ${LOCALDIR}install-levels: levels | ${RES_INSTALLDIR}cp ${LEVELS_BINS} $|clean-levels:${RM} ${LEVELS_DEPS} ${LEVELS_DATS} ${LEVELS_LPZS} ${LEVELS_BINS}DEPS+=${LEVELS_DEPS}########################## Target "resources" ##########################RES_DATS=\${LOCALDIR}/br0.dat \${LOCALDIR}/br1.dat \${LOCALDIR}/br3.dat \${LOCALDIR}/br4.dat \${LOCALDIR}/br6.dat \${LOCALDIR}/br7.dat \${LOCALDIR}/braniu_0.dat \${LOCALDIR}/braniu_1.dat \${LOCALDIR}/braniv_0.dat \${LOCALDIR}/braniv_1.dat \${LOCALDIR}/braniw_0.dat \${LOCALDIR}/braniw_1.dat \${LOCALDIR}/branix_0.dat \${LOCALDIR}/branix_1.dat \${LOCALDIR}/braniy_0.dat \${LOCALDIR}/braniy_1.dat \${LOCALDIR}/braniz_0.dat \${LOCALDIR}/braniz_1.dat \${LOCALDIR}/brbar.dat \${LOCALDIR}/brbut0.dat \${LOCALDIR}/brbut1.dat \${LOCALDIR}/brmuz0.dat \${LOCALDIR}/brmuz1.dat \${LOCALDIR}/brmuz2.dat \${LOCALDIR}/brmuz3.dat \${LOCALDIR}/brmuz4.dat \${LOCALDIR}/brmuz5.dat \${LOCALDIR}/brmuz6.dat \${LOCALDIR}/brmuz7.dat \${LOCALDIR}/brspr1.dat \${LOCALDIR}/brspr2.dat \${LOCALDIR}/brspr3.dat \${LOCALDIR}/brspr4.datresources: flicks modules levels ${RES_DATS}install-resources: install-flicks install-modules install-levels ${RES_DATS} | ${RES_INSTALLDIR}ifneq "${sort ${RESOURCES}}" ""cp ${RESOURCES} $|endifcp ${RES_DATS} $|clean-resources: clean-flicks clean-modules clean-levels###################### Common targets ######################all: executables resourcesinstall: install-executables install-resourcesifeq "${sort ${DOCS}}" ""install-doc:elseinstall-doc: ${DOCS} | ${DOC_INSTALLDIR}cp $^ $|endifclean: clean-executables clean-resources#################### Dependencies ####################ifneq "${sort \${filter empty,${MAKECMDGOALS}} \${filter clean,${MAKECMDGOALS}} \${filter clean-%,${MAKECMDGOALS}} \}" ""else# FIXME: Triggered when multiple targets specified.include ${DEPS}endif