Makefile.fpc 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #
  2. # Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples
  3. #
  4. [target]
  5. loaders=
  6. programs=BackgroundAllInOne
  7. [require]
  8. packages=libndsfpc
  9. tools=bin2s mmutil grit_fpc rmdir mv ndstool
  10. nortl=y
  11. [install]
  12. fpcpackage=y
  13. [default]
  14. cpu=arm
  15. target=nds
  16. fpcdir=../../../../../..
  17. [compiler]
  18. options=-Xm
  19. targetdir=$(BIN)
  20. unittargetdir=$(BUILD)
  21. [clean]
  22. files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
  23. $(BUILD)/* \
  24. $(INC)/* \
  25. $(BIN)/*
  26. units=*
  27. [prerules]
  28. BIN = bin
  29. BUILD = build
  30. DATA = data
  31. FILESYSTEM = filesystem
  32. GFX = gfx
  33. INC = inc
  34. ASM_FILES = $(foreach dir,asm,$(notdir $(wildcard $(dir)/*.s)))
  35. AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
  36. GFX_FILES = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
  37. BIN_FILES = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
  38. GBFS_FILES = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
  39. [rules]
  40. .NOTPARALLEL:
  41. clean: dir_delete fpc_clean fpc_cleanall
  42. all: dir_make $(BIN_FILES) $(GFX_FILES) $(ASM_FILES) fpc_all
  43. filesystem: all make_filesystem
  44. #
  45. # Delete temp directories
  46. #
  47. dir_delete:
  48. @$(DELTREE) $(CURDIR)/$(BUILD)
  49. @$(DELTREE) $(CURDIR)/$(INC)
  50. @$(DELTREE) $(CURDIR)/$(BIN)
  51. #
  52. # Create temp directories
  53. #
  54. dir_make:
  55. ifneq ($(BUILD), $(CURDIR))
  56. @$(MKDIR) $(BUILD)
  57. endif
  58. ifneq ($(INC), $(CURDIR))
  59. @$(MKDIR) $(INC)
  60. endif
  61. ifneq ($(BIN), $(CURDIR))
  62. @$(MKDIR) $(BIN)
  63. endif
  64. #
  65. # Audio files processing rule
  66. #
  67. soundbank.bin.o : $(AUDIO_FILES)
  68. @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
  69. $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
  70. $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
  71. #
  72. # Png files processing rule
  73. #
  74. $(GFX_FILES): $(wildcard %.bmp %.png)
  75. @echo 'Converting $(@) file to asm...'
  76. $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
  77. @echo 'Assembling $(@).s file...'
  78. $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
  79. $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc
  80. @echo 'Done!'
  81. #
  82. # Binary files processing rule
  83. #
  84. $(BIN_FILES): $(wildcard %.*)
  85. @echo 'Converting $(@) file to asm...'
  86. @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
  87. @echo 'Creating $(@).inc include file...'
  88. @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
  89. @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
  90. @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
  91. @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
  92. @echo 'Assembling $(@).s file...'
  93. @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
  94. @echo 'Done!'
  95. #
  96. # GBFS files processing rule
  97. #
  98. data.gbfs.o:
  99. @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
  100. $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
  101. $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
  102. #
  103. # Nitro Filesystem processing rule
  104. #
  105. make_filesystem:
  106. @$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
  107. #
  108. # ASM files processing rule
  109. #
  110. $(ASM_FILES): $(wildcard %.*)
  111. @echo 'Assembling $(@) file...'
  112. @$(AS) -o $(BUILD)/$(*F).o asm/$(@)
  113. @echo 'Done!'