Browse Source

* synchronised with fixes_3_0 till r30252

git-svn-id: branches/fixes_3_0_ios@30253 -
Jonas Maebe 10 years ago
parent
commit
c64052c628
100 changed files with 8215 additions and 1249 deletions
  1. 6 2
      .gitattributes
  2. 45 12
      compiler/arm/aasmcpu.pas
  3. 0 9
      compiler/i8086/cpupara.pas
  4. 0 12
      compiler/ncgutil.pas
  5. 7 1
      compiler/optcse.pas
  6. 16 6
      compiler/options.pas
  7. 3 3
      compiler/pdecobj.pas
  8. 14 3
      compiler/pexpr.pas
  9. 2 5
      compiler/powerpc/cgcpu.pas
  10. 4 0
      compiler/powerpc/cpubase.pas
  11. 1 3
      compiler/powerpc64/cgcpu.pas
  12. 1 1
      compiler/powerpc64/cpubase.pas
  13. 2 1
      compiler/powerpc64/cpupara.pas
  14. 1 1
      compiler/powerpc64/itcpugas.pas
  15. 17 0
      compiler/ppcgen/hlcgppc.pas
  16. 5 2
      compiler/systems/t_wii.pas
  17. 7 0
      packages/gdbint/src/gdbcon.pp
  18. 10 1
      packages/gdbint/src/gdbint.pp
  19. 1 1
      packages/libgbafpc/Makefile.fpc.fpcmake
  20. 89 16
      packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile.fpc
  21. 85 12
      packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile.fpc
  22. 87 14
      packages/libndsfpc/examples/audio/maxmod/reverb/Makefile.fpc
  23. 57 11
      packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile.fpc
  24. 89 15
      packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc
  25. 3976 0
      packages/libndsfpc/examples/audio/maxmod/streaming/Makefile
  26. 124 0
      packages/libndsfpc/examples/audio/maxmod/streaming/Makefile.fpc
  27. 130 0
      packages/libndsfpc/examples/audio/maxmod/streaming/streaming.pp
  28. 68 12
      packages/libndsfpc/examples/audio/micrecord/Makefile.fpc
  29. 69 12
      packages/libndsfpc/examples/card/eeprom/Makefile.fpc
  30. 68 12
      packages/libndsfpc/examples/debugging/exceptionTest/Makefile.fpc
  31. 68 12
      packages/libndsfpc/examples/ds_motion/Makefile.fpc
  32. 68 12
      packages/libndsfpc/examples/dswifi/ap_search/Makefile.fpc
  33. 68 12
      packages/libndsfpc/examples/dswifi/autoconnect/Makefile.fpc
  34. 68 12
      packages/libndsfpc/examples/dswifi/httpget/Makefile.fpc
  35. 28 14
      packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile.fpc
  36. 29 22
      packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile.fpc
  37. 28 22
      packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile.fpc
  38. 28 22
      packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile.fpc
  39. 35 18
      packages/libndsfpc/examples/filesystem/nitrofs/nitrodir/Makefile.fpc
  40. 34 19
      packages/libndsfpc/examples/gl2d/2Dplus3D/Makefile.fpc
  41. 34 19
      packages/libndsfpc/examples/gl2d/dual_screen/Makefile.fpc
  42. 35 19
      packages/libndsfpc/examples/gl2d/fonts/Makefile.fpc
  43. 35 19
      packages/libndsfpc/examples/gl2d/primitives/Makefile.fpc
  44. 35 19
      packages/libndsfpc/examples/gl2d/scrolling/Makefile.fpc
  45. 35 19
      packages/libndsfpc/examples/gl2d/sprites/Makefile.fpc
  46. 45 13
      packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile.fpc
  47. 45 13
      packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile.fpc
  48. 45 14
      packages/libndsfpc/examples/graphics/3D/Display_List/Makefile.fpc
  49. 45 14
      packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile.fpc
  50. 45 14
      packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile.fpc
  51. 45 14
      packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile.fpc
  52. 45 14
      packages/libndsfpc/examples/graphics/3D/Ortho/Makefile.fpc
  53. 45 14
      packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile.fpc
  54. 45 14
      packages/libndsfpc/examples/graphics/3D/Picking/Makefile.fpc
  55. 45 14
      packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile.fpc
  56. 45 14
      packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile.fpc
  57. 45 14
      packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile.fpc
  58. 45 14
      packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile.fpc
  59. 45 14
      packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile.fpc
  60. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile.fpc
  61. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile.fpc
  62. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile.fpc
  63. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile.fpc
  64. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile.fpc
  65. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile.fpc
  66. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile.fpc
  67. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile.fpc
  68. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile.fpc
  69. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile.fpc
  70. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile.fpc
  71. 45 14
      packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile.fpc
  72. 46 14
      packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile.fpc
  73. 45 14
      packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile.fpc
  74. 45 14
      packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile.fpc
  75. 44 15
      packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile.fpc
  76. 45 14
      packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile.fpc
  77. 45 14
      packages/libndsfpc/examples/graphics/Effects/windows/Makefile.fpc
  78. 37 8
      packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/Makefile.fpc
  79. 0 35
      packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/inc/devkitlogo.inc
  80. 0 35
      packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/inc/drunkenlogo.inc
  81. 45 14
      packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile.fpc
  82. 45 14
      packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile.fpc
  83. 45 14
      packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile.fpc
  84. 45 14
      packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile.fpc
  85. 45 14
      packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile.fpc
  86. 45 14
      packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile.fpc
  87. 46 15
      packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile.fpc
  88. 46 15
      packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile.fpc
  89. 45 14
      packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile.fpc
  90. 45 14
      packages/libndsfpc/examples/graphics/Sprites/simple/Makefile.fpc
  91. 45 14
      packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile.fpc
  92. 45 14
      packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile.fpc
  93. 38 23
      packages/libndsfpc/examples/hello_world/Makefile.fpc
  94. 89 14
      packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile.fpc
  95. 45 13
      packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile.fpc
  96. 56 21
      packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile.fpc
  97. 89 14
      packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile.fpc
  98. 89 14
      packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile.fpc
  99. 89 14
      packages/libndsfpc/examples/time/RealTimeClock/Makefile.fpc
  100. 89 14
      packages/libndsfpc/examples/time/stopwatch/Makefile.fpc

+ 6 - 2
.gitattributes

@@ -4850,6 +4850,9 @@ packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile svneol=na
 packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc svneol=native#text/plain
 packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc svneol=native#text/plain
 packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it -text
 packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it -text
 packages/libndsfpc/examples/audio/maxmod/song_events_example2/song_events_example2.pp svneol=native#text/plain
 packages/libndsfpc/examples/audio/maxmod/song_events_example2/song_events_example2.pp svneol=native#text/plain
+packages/libndsfpc/examples/audio/maxmod/streaming/Makefile svneol=native#text/plain
+packages/libndsfpc/examples/audio/maxmod/streaming/Makefile.fpc svneol=native#text/plain
+packages/libndsfpc/examples/audio/maxmod/streaming/streaming.pp svneol=native#text/plain
 packages/libndsfpc/examples/audio/micrecord/Makefile svneol=native#text/plain
 packages/libndsfpc/examples/audio/micrecord/Makefile svneol=native#text/plain
 packages/libndsfpc/examples/audio/micrecord/Makefile.fpc svneol=native#text/plain
 packages/libndsfpc/examples/audio/micrecord/Makefile.fpc svneol=native#text/plain
 packages/libndsfpc/examples/audio/micrecord/micrecord.pp svneol=native#text/plain
 packages/libndsfpc/examples/audio/micrecord/micrecord.pp svneol=native#text/plain
@@ -5146,8 +5149,6 @@ packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/devkitlogo.gri
 packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/devkitlogo.png -text
 packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/devkitlogo.png -text
 packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/drunkenlogo.grit svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/drunkenlogo.grit svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/drunkenlogo.png -text
 packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/gfx/drunkenlogo.png -text
-packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/inc/devkitlogo.inc svneol=native#text/plain
-packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/inc/drunkenlogo.inc svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Makefile svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Makefile svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Makefile.fpc svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Makefile.fpc svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Printing/Makefile svneol=native#text/plain
 packages/libndsfpc/examples/graphics/Printing/Makefile svneol=native#text/plain
@@ -5450,6 +5451,7 @@ packages/libogcfpc/src/ogc/ios.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/ipc.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/ipc.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/irq.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/irq.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/isfs.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/isfs.inc svneol=native#text/plain
+packages/libogcfpc/src/ogc/libversion.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/lwp.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/lwp.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/lwp_config.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/lwp_config.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/lwp_heap.inc svneol=native#text/plain
 packages/libogcfpc/src/ogc/lwp_heap.inc svneol=native#text/plain
@@ -8780,6 +8782,7 @@ rtl/nds/ndsbiosh.inc svneol=native#text/plain
 rtl/nds/ndsh.inc svneol=native#text/plain
 rtl/nds/ndsh.inc svneol=native#text/plain
 rtl/nds/prt07.as svneol=native#text/plain
 rtl/nds/prt07.as svneol=native#text/plain
 rtl/nds/prt09.as svneol=native#text/plain
 rtl/nds/prt09.as svneol=native#text/plain
+rtl/nds/rtl.cfg svneol=native#text/plain
 rtl/nds/rtldefs.inc svneol=native#text/plain
 rtl/nds/rtldefs.inc svneol=native#text/plain
 rtl/nds/sysdir.inc svneol=native#text/plain
 rtl/nds/sysdir.inc svneol=native#text/plain
 rtl/nds/sysfile.inc svneol=native#text/plain
 rtl/nds/sysfile.inc svneol=native#text/plain
@@ -9311,6 +9314,7 @@ rtl/wii/classes.pp svneol=native#text/plain
 rtl/wii/dos.pp svneol=native#text/plain
 rtl/wii/dos.pp svneol=native#text/plain
 rtl/wii/libc.inc svneol=native#text/plain
 rtl/wii/libc.inc svneol=native#text/plain
 rtl/wii/libch.inc svneol=native#text/plain
 rtl/wii/libch.inc svneol=native#text/plain
+rtl/wii/rtl.cfg svneol=native#text/plain
 rtl/wii/rtldefs.inc svneol=native#text/plain
 rtl/wii/rtldefs.inc svneol=native#text/plain
 rtl/wii/sysdir.inc svneol=native#text/plain
 rtl/wii/sysdir.inc svneol=native#text/plain
 rtl/wii/sysfile.inc svneol=native#text/plain
 rtl/wii/sysfile.inc svneol=native#text/plain

+ 45 - 12
compiler/arm/aasmcpu.pas

@@ -898,6 +898,20 @@ implementation
               limit:=254;
               limit:=254;
         end;
         end;
 
 
+      function is_case_dispatch(hp: taicpu): boolean;
+        begin
+          result:=
+            ((taicpu(hp).opcode in [A_ADD,A_LDR]) and
+             not(GenerateThumbCode or GenerateThumb2Code) and
+             (taicpu(hp).oper[0]^.typ=top_reg) and
+             (taicpu(hp).oper[0]^.reg=NR_PC)) or
+             ((taicpu(hp).opcode=A_MOV) and (GenerateThumbCode) and
+              (taicpu(hp).oper[0]^.typ=top_reg) and
+              (taicpu(hp).oper[0]^.reg=NR_PC)) or
+             (taicpu(hp).opcode=A_TBH) or
+             (taicpu(hp).opcode=A_TBB);
+        end;
+
       var
       var
         curinspos,
         curinspos,
         penalty,
         penalty,
@@ -906,7 +920,8 @@ implementation
         currentsize,
         currentsize,
         extradataoffset,
         extradataoffset,
         curop : longint;
         curop : longint;
-        curtai : tai;
+        curtai,
+        inserttai : tai;
         ai_label : tai_label;
         ai_label : tai_label;
         curdatatai,hp,hp2 : tai;
         curdatatai,hp,hp2 : tai;
         curdata : TAsmList;
         curdata : TAsmList;
@@ -1066,15 +1081,11 @@ implementation
                 case taicpu(hp).opcode of
                 case taicpu(hp).opcode of
                   A_MOV,
                   A_MOV,
                   A_LDR,
                   A_LDR,
-                  A_ADD:
+                  A_ADD,
+                  A_TBH,
+                  A_TBB:
                     { approximation if we hit a case jump table }
                     { approximation if we hit a case jump table }
-                    if ((taicpu(hp).opcode in [A_ADD,A_LDR]) and not(GenerateThumbCode or GenerateThumb2Code) and
-                       (taicpu(hp).oper[0]^.typ=top_reg) and
-                      (taicpu(hp).oper[0]^.reg=NR_PC)) or
-                      ((taicpu(hp).opcode=A_MOV) and (GenerateThumbCode) and
-                       (taicpu(hp).oper[0]^.typ=top_reg) and
-                       (taicpu(hp).oper[0]^.reg=NR_PC))
-                       then
+                    if is_case_dispatch(taicpu(hp)) then
                       begin
                       begin
                         penalty:=multiplier;
                         penalty:=multiplier;
                         hp:=tai(hp.next);
                         hp:=tai(hp.next);
@@ -1168,12 +1179,34 @@ implementation
                 else
                 else
                   limit:=1016;
                   limit:=1016;
 
 
+                { if this is an add/tbh/tbb-based jumptable, go back to the
+                  previous instruction, because inserting data between the
+                  dispatch instruction and the table would mess up the
+                  addresses }
+                inserttai:=curtai;
+                if is_case_dispatch(taicpu(inserttai)) and
+                   ((taicpu(inserttai).opcode=A_ADD) or
+                    (taicpu(inserttai).opcode=A_TBH) or
+                    (taicpu(inserttai).opcode=A_TBB)) then
+                  begin
+                    repeat
+                      inserttai:=tai(inserttai.previous);
+                    until inserttai.typ=ait_instruction;
+                    { if it's an add-based jump table, then also skip the
+                      pc-relative load }
+                    if taicpu(curtai).opcode=A_ADD then
+                      repeat
+                        inserttai:=tai(inserttai.previous);
+                      until inserttai.typ=ait_instruction;
+                  end
+                else
+
                 { on arm thumb, insert the data always after all labels etc. following an instruction so it
                 { on arm thumb, insert the data always after all labels etc. following an instruction so it
                   is prevent that a bxx yyy; bl xxx; yyyy: sequence gets separated ( we never insert on arm thumb after
                   is prevent that a bxx yyy; bl xxx; yyyy: sequence gets separated ( we never insert on arm thumb after
                   bxx) and the distance of bxx gets too long }
                   bxx) and the distance of bxx gets too long }
                 if GenerateThumbCode then
                 if GenerateThumbCode then
-                  while assigned(tai(curtai.Next)) and (tai(curtai.Next).typ in SkipInstr+[ait_label]) do
-                    curtai:=tai(curtai.next);
+                  while assigned(tai(inserttai.Next)) and (tai(inserttai.Next).typ in SkipInstr+[ait_label]) do
+                    inserttai:=tai(inserttai.next);
 
 
                 doinsert:=false;
                 doinsert:=false;
                 current_asmdata.getjumplabel(l);
                 current_asmdata.getjumplabel(l);
@@ -1200,7 +1233,7 @@ implementation
                   is then equal curdata.last.previous) we could over see one
                   is then equal curdata.last.previous) we could over see one
                   instruction }
                   instruction }
                 hp:=tai(curdata.Last);
                 hp:=tai(curdata.Last);
-                list.insertlistafter(curtai,curdata);
+                list.insertlistafter(inserttai,curdata);
                 curtai:=hp;
                 curtai:=hp;
               end
               end
             else
             else

+ 0 - 9
compiler/i8086/cpupara.pas

@@ -286,15 +286,6 @@ unit cpupara;
           usedef:=p.returndef
           usedef:=p.returndef
         else
         else
           usedef:=forcetempdef;
           usedef:=forcetempdef;
-        { on darwin/i386, if a record has only one field and that field is a
-          single or double, it has to be returned like a single/double }
-        if (target_info.system in [system_i386_darwin,system_i386_iphonesim]) and
-           ((usedef.typ=recorddef) or
-            is_object(usedef)) and
-           tabstractrecordsymtable(tabstractrecorddef(usedef).symtable).has_single_field(sym) and
-           (sym.vardef.typ=floatdef) and
-           (tfloatdef(sym.vardef).floattype in [s32real,s64real]) then
-          usedef:=sym.vardef;
 
 
         handled:=set_common_funcretloc_info(p,usedef,retcgsize,result);
         handled:=set_common_funcretloc_info(p,usedef,retcgsize,result);
         { normally forcetempdef is passed straight through to
         { normally forcetempdef is passed straight through to

+ 0 - 12
compiler/ncgutil.pas

@@ -1259,18 +1259,6 @@ implementation
           the initialization and body is parsed because the refcounts are
           the initialization and body is parsed because the refcounts are
           incremented using the local copies }
           incremented using the local copies }
         current_procinfo.procdef.parast.SymList.ForEachCall(@hlcg.g_copyvalueparas,list);
         current_procinfo.procdef.parast.SymList.ForEachCall(@hlcg.g_copyvalueparas,list);
-{$ifdef powerpc}
-        { unget the register that contains the stack pointer before the procedure entry, }
-        { which is used to access the parameters in their original callee-side location  }
-        if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
-          cg.a_reg_dealloc(list,NR_R12);
-{$endif powerpc}
-{$ifdef powerpc64}
-        { unget the register that contains the stack pointer before the procedure entry, }
-        { which is used to access the parameters in their original callee-side location  }
-        if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
-          cg.a_reg_dealloc(list, NR_OLD_STACK_POINTER_REG);
-{$endif powerpc64}
         if not(po_assembler in current_procinfo.procdef.procoptions) then
         if not(po_assembler in current_procinfo.procdef.procoptions) then
           begin
           begin
             { initialize refcounted paras, and trash others. Needed here
             { initialize refcounted paras, and trash others. Needed here

+ 7 - 1
compiler/optcse.pas

@@ -317,7 +317,13 @@ unit optcse;
                    { for sets, we can do this always }
                    { for sets, we can do this always }
                    (is_set(n.resultdef))
                    (is_set(n.resultdef))
                    ) then
                    ) then
-                  while n.nodetype=tbinarynode(n).left.nodetype do
+                  while (n.nodetype=tbinarynode(n).left.nodetype) and
+                        { the resulttypes of the operands we'll swap must be equal,
+                          required in case of a 32x32->64 multiplication, then we
+                          cannot swap out one of the 32 bit operands for a 64 bit one
+                        }
+                        (tbinarynode(tbinarynode(n).left).left.resultdef=tbinarynode(n).left.resultdef) and
+                        (tbinarynode(n).left.resultdef=tbinarynode(n).right.resultdef) do
                     begin
                     begin
                       csedomain:=true;
                       csedomain:=true;
                       foreachnodestatic(pm_postprocess,tbinarynode(n).right,@searchsubdomain,@csedomain);
                       foreachnodestatic(pm_postprocess,tbinarynode(n).right,@searchsubdomain,@csedomain);

+ 16 - 6
compiler/options.pas

@@ -807,6 +807,7 @@ function toption.ParseMacVersionMin(out minstr, emptystr: string; const compvarn
     temp,
     temp,
     compvarvalue: string[15];
     compvarvalue: string[15];
     i: longint;
     i: longint;
+    osx_minor_two_digits: boolean;
   begin
   begin
     minstr:=value;
     minstr:=value;
     emptystr:='';
     emptystr:='';
@@ -830,11 +831,16 @@ function toption.ParseMacVersionMin(out minstr, emptystr: string; const compvarn
     temp:=subval(i+1,2,i);
     temp:=subval(i+1,2,i);
     if temp='' then
     if temp='' then
       exit(false);
       exit(false);
-    { on Mac OS X, the minor version number is limited to 1 digit }
+    { on Mac OS X, the minor version number was originally limited to 1 digit;
+      with 10.10 the format changed and two digits were also supported; on iOS,
+      the minor version number always takes up two digits }
+    osx_minor_two_digits:=false;
     if not ios then
     if not ios then
       begin
       begin
-        if length(temp)<>1 then
-          exit(false);
+        { if the minor version number is two digits on OS X (the case since
+          OS X 10.10), we also have to add two digits for the patch level}
+        if length(temp)=2 then
+          osx_minor_two_digits:=true;
       end
       end
     { the minor version number always takes up two digits on iOS }
     { the minor version number always takes up two digits on iOS }
     else if length(temp)=1 then
     else if length(temp)=1 then
@@ -851,9 +857,12 @@ function toption.ParseMacVersionMin(out minstr, emptystr: string; const compvarn
         { there's only room for a single digit patch level in the version macro
         { there's only room for a single digit patch level in the version macro
           for Mac OS X. gcc sets it to zero if there are more digits, but that
           for Mac OS X. gcc sets it to zero if there are more digits, but that
           seems worse than clamping to 9 (don't declare as invalid like with
           seems worse than clamping to 9 (don't declare as invalid like with
-          minor version number, because there is a precedent like 10.4.11)
+          minor version number, because there is a precedent like 10.4.11).
+
+          As of OS X 10.10 there are two digits for the patch level
         }
         }
-        if not ios then
+        if not ios and
+           not osx_minor_two_digits then
           begin
           begin
             if length(temp)<>1 then
             if length(temp)<>1 then
               temp:='9';
               temp:='9';
@@ -869,7 +878,8 @@ function toption.ParseMacVersionMin(out minstr, emptystr: string; const compvarn
         if i<=length(value) then
         if i<=length(value) then
           exit(false);
           exit(false);
       end
       end
-    else if not ios then
+    else if not ios and
+       not osx_minor_two_digits then
       compvarvalue:=compvarvalue+'0'
       compvarvalue:=compvarvalue+'0'
     else
     else
       compvarvalue:=compvarvalue+'00';
       compvarvalue:=compvarvalue+'00';

+ 3 - 3
compiler/pdecobj.pas

@@ -679,9 +679,6 @@ implementation
               Message1(sym_e_formal_class_not_resolved,childof.objrealname^);
               Message1(sym_e_formal_class_not_resolved,childof.objrealname^);
           end;
           end;
 
 
-        { remove forward flag, is resolved }
-        exclude(current_structdef.objectoptions,oo_is_forward);
-
         if hasparentdefined then
         if hasparentdefined then
           begin
           begin
             if current_objectdef.objecttype in [odt_class,odt_objcclass,odt_objcprotocol,odt_javaclass,odt_interfacejava] then
             if current_objectdef.objecttype in [odt_class,odt_objcclass,odt_objcprotocol,odt_javaclass,odt_interfacejava] then
@@ -695,6 +692,9 @@ implementation
               end;
               end;
             consume(_RKLAMMER);
             consume(_RKLAMMER);
           end;
           end;
+
+        { remove forward flag, is resolved }
+        exclude(current_structdef.objectoptions,oo_is_forward);
       end;
       end;
 
 
     procedure parse_extended_type(helpertype:thelpertype);
     procedure parse_extended_type(helpertype:thelpertype);

+ 14 - 3
compiler/pexpr.pas

@@ -2938,10 +2938,21 @@ implementation
              _RETURN :
              _RETURN :
                 begin
                 begin
                   consume(_RETURN);
                   consume(_RETURN);
+                  p1:=nil;
                   if not(token in [_SEMICOLON,_ELSE,_END]) then
                   if not(token in [_SEMICOLON,_ELSE,_END]) then
-                    p1 := cexitnode.create(comp_expr(true,false))
-                  else
-                    p1 := cexitnode.create(nil);
+                    begin
+                      p1:=comp_expr(true,false);
+                      if not assigned(current_procinfo) or
+                         (current_procinfo.procdef.proctypeoption in [potype_constructor,potype_destructor]) or
+                         is_void(current_procinfo.procdef.returndef) then
+                        begin
+                          Message(parser_e_void_function);
+                          { recovery }
+                          p1.free;
+                          p1:=nil;
+                        end;
+                    end;
+                  p1 := cexitnode.create(p1);
                 end;
                 end;
              _INHERITED :
              _INHERITED :
                begin
                begin

+ 2 - 5
compiler/powerpc/cgcpu.pas

@@ -830,11 +830,8 @@ const
             usesgpr := firstregint <> 32;
             usesgpr := firstregint <> 32;
             usesfpr := firstregfpu <> 32;
             usesfpr := firstregfpu <> 32;
 
 
-             if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
-              begin
-                a_reg_alloc(list,NR_R12);
-                list.concat(taicpu.op_reg_reg(A_MR,NR_R12,NR_STACK_POINTER_REG));
-              end;
+             if tppcprocinfo(current_procinfo).needs_frame_pointer then
+               list.concat(taicpu.op_reg_reg(A_MR,NR_OLD_STACK_POINTER_REG,NR_STACK_POINTER_REG));
           end;
           end;
 
 
         if usesfpr then
         if usesfpr then

+ 4 - 0
compiler/powerpc/cpubase.pas

@@ -291,6 +291,10 @@ uses
       {# Stack pointer register }
       {# Stack pointer register }
       NR_STACK_POINTER_REG = NR_R1;
       NR_STACK_POINTER_REG = NR_R1;
       RS_STACK_POINTER_REG = RS_R1;
       RS_STACK_POINTER_REG = RS_R1;
+      { old stack pointer register used during copying variables from the caller
+        stack frame
+      }
+      NR_OLD_STACK_POINTER_REG = NR_R12;
       {# Frame pointer register }
       {# Frame pointer register }
       NR_FRAME_POINTER_REG = NR_STACK_POINTER_REG;
       NR_FRAME_POINTER_REG = NR_STACK_POINTER_REG;
       RS_FRAME_POINTER_REG = RS_STACK_POINTER_REG;
       RS_FRAME_POINTER_REG = RS_STACK_POINTER_REG;

+ 1 - 3
compiler/powerpc64/cgcpu.pas

@@ -1193,10 +1193,8 @@ begin
   save_standard_registers;
   save_standard_registers;
 
 
   { save old stack frame pointer }
   { save old stack frame pointer }
-  if (tppcprocinfo(current_procinfo).needs_frame_pointer) then begin
-    a_reg_alloc(list, NR_OLD_STACK_POINTER_REG);
+  if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
     list.concat(taicpu.op_reg_reg(A_MR, NR_OLD_STACK_POINTER_REG, NR_STACK_POINTER_REG));
     list.concat(taicpu.op_reg_reg(A_MR, NR_OLD_STACK_POINTER_REG, NR_STACK_POINTER_REG));
-  end;
 
 
   { create stack frame }
   { create stack frame }
   if (not nostackframe) and (localsize > 0) and
   if (not nostackframe) and (localsize > 0) and

+ 1 - 1
compiler/powerpc64/cpubase.pas

@@ -93,7 +93,7 @@ type
     A_CMPD, A_CMPDI, A_CMPLD, A_CMPLDI,
     A_CMPD, A_CMPDI, A_CMPLD, A_CMPLDI,
     A_SRDI, A_SRADI,
     A_SRDI, A_SRADI,
     A_SLDI,
     A_SLDI,
-    A_RLDCL, A_RLDICL,
+    A_RLDCL, A_RLDCL_, A_RLDICL, A_RLDICL_, A_RLDCR, A_RLDCR_, A_RLDICR, A_RLDICR_,
     A_DIVDU, A_DIVDU_, A_DIVD, A_DIVD_, A_MULLD, A_MULLD_, A_MULHD, A_MULHD_, A_SRAD, A_SLD, A_SRD,
     A_DIVDU, A_DIVDU_, A_DIVD, A_DIVD_, A_MULLD, A_MULLD_, A_MULHD, A_MULHD_, A_SRAD, A_SLD, A_SRD,
     A_DIVDUO_, A_DIVDO_,
     A_DIVDUO_, A_DIVDO_,
     A_LWA, A_LWAX, A_LWAUX,
     A_LWA, A_LWAX, A_LWAUX,

+ 2 - 1
compiler/powerpc64/cpupara.pas

@@ -177,7 +177,8 @@ begin
     procvardef,
     procvardef,
     recorddef:
     recorddef:
       result :=
       result :=
-        ((varspez = vs_const) and
+        (varspez = vs_const) and
+        (
          (
          (
           (not (calloption in [pocall_cdecl, pocall_cppdecl]) and
           (not (calloption in [pocall_cdecl, pocall_cppdecl]) and
           (def.size > 8))
           (def.size > 8))

+ 1 - 1
compiler/powerpc64/itcpugas.pas

@@ -83,7 +83,7 @@ const
     'cmpd', 'cmpdi', 'cmpld', 'cmpldi',
     'cmpd', 'cmpdi', 'cmpld', 'cmpldi',
     'srdi', 'sradi',
     'srdi', 'sradi',
     'sldi',
     'sldi',
-    'rldcl', 'rldicl',
+    'rldcl', 'rldcl_', 'rldicl', 'rldicl_', 'rldcr', 'rldcr_', 'rldicr', 'rldicr_',
     'divdu', 'divdu.', 'divd', 'divd.', 'mulld', 'mulld.', 'mulhd', 'mulhd.', 'srad', 'sld', 'srd',
     'divdu', 'divdu.', 'divd', 'divd.', 'mulld', 'mulld.', 'mulhd', 'mulhd.', 'srad', 'sld', 'srd',
     'divduo.', 'divdo.',
     'divduo.', 'divdo.',
     'lwa', 'lwax', 'lwaux',
     'lwa', 'lwax', 'lwaux',

+ 17 - 0
compiler/ppcgen/hlcgppc.pas

@@ -36,12 +36,15 @@ type
   thlcgppcgen = class(thlcg2ll)
   thlcgppcgen = class(thlcg2ll)
    protected
    protected
     procedure a_load_subsetref_regs_noindex(list: TAsmList; subsetsize: tdef; loadbitsize: byte; const sref: tsubsetreference; valuereg, extra_value_reg: tregister); override;
     procedure a_load_subsetref_regs_noindex(list: TAsmList; subsetsize: tdef; loadbitsize: byte; const sref: tsubsetreference; valuereg, extra_value_reg: tregister); override;
+   public
+    procedure gen_load_para_value(list: TAsmList); override;
   end;
   end;
 
 
 implementation
 implementation
 
 
   uses
   uses
     cpubase,globtype,
     cpubase,globtype,
+    procinfo,cpupi,
     symdef,defutil;
     symdef,defutil;
 
 
 { thlcgppc }
 { thlcgppc }
@@ -80,5 +83,19 @@ implementation
       a_load_subsetreg_subsetreg(list,subsetsize,subsetsize,fromsreg,tosreg);
       a_load_subsetreg_subsetreg(list,subsetsize,subsetsize,fromsreg,tosreg);
     end;
     end;
 
 
+
+  procedure thlcgppcgen.gen_load_para_value(list: TAsmList);
+    begin
+      { get the register that contains the stack pointer before the procedure
+        entry, which is used to access the parameters in their original
+        callee-side location }
+      if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
+        getcpuregister(list,NR_OLD_STACK_POINTER_REG);
+      inherited;
+      { free it again }
+      if (tppcprocinfo(current_procinfo).needs_frame_pointer) then
+        ungetcpuregister(list,NR_OLD_STACK_POINTER_REG);
+    end;
+
 end.
 end.
 
 

+ 5 - 2
compiler/systems/t_wii.pas

@@ -238,6 +238,9 @@ begin
     Add('  stub PT_LOAD FLAGS(5);');
     Add('  stub PT_LOAD FLAGS(5);');
     Add('  text PT_LOAD FLAGS(5);');
     Add('  text PT_LOAD FLAGS(5);');
     Add('  data PT_LOAD FLAGS(6);');
     Add('  data PT_LOAD FLAGS(6);');
+    Add('  bss1 PT_LOAD;');
+    Add('  bss2 PT_LOAD;');
+    Add('');
     Add('}');
     Add('}');
     Add('');
     Add('');
     Add('SECTIONS');
     Add('SECTIONS');
@@ -431,7 +434,7 @@ begin
     Add('		PROVIDE (___sbss_end = .);');
     Add('		PROVIDE (___sbss_end = .);');
     Add('		. = ALIGN(32);   /* REQUIRED. LD is flaky without it. */');
     Add('		. = ALIGN(32);   /* REQUIRED. LD is flaky without it. */');
     Add('		__sbss_end = .;');
     Add('		__sbss_end = .;');
-    Add('	}');
+    Add('	} :bss1');
     Add('');
     Add('');
     Add('	.bss       :');
     Add('	.bss       :');
     Add('	{');
     Add('	{');
@@ -450,7 +453,7 @@ begin
     Add('');
     Add('');
     Add('		PROVIDE (__bss_end = .);');
     Add('		PROVIDE (__bss_end = .);');
     Add('		__bss_end = .;');
     Add('		__bss_end = .;');
-    Add('	}');
+    Add('	} :bss2');
     Add('');
     Add('');
     Add('	_end = .;');
     Add('	_end = .;');
     Add('	PROVIDE(end = .);');
     Add('	PROVIDE(end = .);');

+ 7 - 0
packages/gdbint/src/gdbcon.pp

@@ -12,6 +12,13 @@
 
 
  **********************************************************************}
  **********************************************************************}
 unit GDBCon;
 unit GDBCon;
+
+{$ifdef USE_GDBLIBINC}
+  {$i gdblib.inc}
+{$else not USE_GDBLIBINC}
+  {$i gdbver.inc}
+{$endif not USE_GDBLIBINC}
+
 interface
 interface
 
 
 uses
 uses

+ 10 - 1
packages/gdbint/src/gdbint.pp

@@ -215,6 +215,7 @@ interface
   {$define GDB_TARGET_CLOSE_HAS_PTARGET_ARG}
   {$define GDB_TARGET_CLOSE_HAS_PTARGET_ARG}
   {$define GDB_HAS_BP_NONE}
   {$define GDB_HAS_BP_NONE}
   {$define GDB_USE_XSTRVPRINTF}
   {$define GDB_USE_XSTRVPRINTF}
+  {$define GDB_ANNOTATE_FRAME_BEGIN_HAS_GDBARCH_FIELD}
 {$endif def GDB_V7}
 {$endif def GDB_V7}
 
 
 
 
@@ -2272,7 +2273,11 @@ begin
 end;
 end;
 
 
 
 
-procedure annotate_frame_begin(level:longint;pc:CORE_ADDR);cdecl;public;
+procedure annotate_frame_begin(level:longint;
+{$ifdef GDB_ANNOTATE_FRAME_BEGIN_HAS_GDBARCH_FIELD}
+  gdbarch : pointer;
+{$endif GDB_ANNOTATE_FRAME_BEGIN_HAS_GDBARCH_FIELD}
+pc:CORE_ADDR);cdecl;public;
 begin
 begin
 {$ifdef Verbose}
 {$ifdef Verbose}
   Debug('|frame_begin(%d,%ld)|');
   Debug('|frame_begin(%d,%ld)|');
@@ -2430,6 +2435,10 @@ begin
         begin
         begin
           if (gdboutputbuf.buf[args_end-1]=#10) then
           if (gdboutputbuf.buf[args_end-1]=#10) then
            dec(args_end);
            dec(args_end);
+          { Flushing is not always correct for args,
+            try to move on to next closing brace }
+          while (args_end<file_start) and (gdboutputbuf.buf[args_end-1]<>')') do
+            inc(args_end);
           c:=gdboutputbuf.buf[args_end];
           c:=gdboutputbuf.buf[args_end];
           gdboutputbuf.buf[args_end]:=#0;
           gdboutputbuf.buf[args_end]:=#0;
           fe^.args:=strnew(gdboutputbuf.buf+args_start);
           fe^.args:=strnew(gdboutputbuf.buf+args_start);

+ 1 - 1
packages/libgbafpc/Makefile.fpc.fpcmake

@@ -18,7 +18,7 @@ includedir=src src/maxmod
 sourcedir=src tests
 sourcedir=src tests
 
 
 [prerules]
 [prerules]
-BINUTILSPREFIX=arm-eabi-
+BINUTILSPREFIX=arm-none-eabi-
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y

+ 89 - 16
packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile.fpc

@@ -3,48 +3,121 @@
 #
 #
 
 
 [target]
 [target]
-loaders=soundbank.bin $(GFX_FILES)
+loaders=soundbank.bin
 programs=audio_modes
 programs=audio_modes
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+        
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 85 - 12
packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile.fpc

@@ -8,7 +8,7 @@ programs=basic_sound
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,30 +20,103 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -O2
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
 endif
 endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 87 - 14
packages/libndsfpc/examples/audio/maxmod/reverb/Makefile.fpc

@@ -8,42 +8,115 @@ programs=reverb
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
 endif
 endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 57 - 11
packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile.fpc

@@ -8,7 +8,7 @@ programs=song_events_example
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -21,33 +21,44 @@ fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
 options=-Xm
 options=-Xm
-#-d__THUMB__
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard music/*.*)), $(CURDIR)/music/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard music/*.*)), $(CURDIR)/music/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
 #
 #
 dir_delete:
 dir_delete:
-        @$(DELTREE) $(CURDIR)/$(BUILD)
-        @$(DELTREE) $(CURDIR)/$(INC)
-
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +69,10 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,9 +85,40 @@ mmsolution.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png)
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 89 - 15
packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc

@@ -3,48 +3,122 @@
 #
 #
 
 
 [target]
 [target]
-loaders=mmsolution.bin $(GFX_FILES)
+loaders=mmsolution.bin
 programs=song_events_example2
 programs=song_events_example2
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 mmsolution.bin.o : $(AUDIO_FILES)
 mmsolution.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/mmsolution.bin -h$(BUILD)/mmsolution.h
         @$(MMUTIL) $^ -d -o$(BUILD)/mmsolution.bin -h$(BUILD)/mmsolution.h
         $(BIN2S) $(BUILD)/mmsolution.bin > $(BUILD)/mmsolution.bin.s
         $(BIN2S) $(BUILD)/mmsolution.bin > $(BUILD)/mmsolution.bin.s
         $(AS) -o $(BUILD)/mmsolution.bin.o $(BUILD)/mmsolution.bin.s
         $(AS) -o $(BUILD)/mmsolution.bin.o $(BUILD)/mmsolution.bin.s
 
 
-$(GFX_FILES).o: 
-        grit $(GFX_DIR)/$(GFX_FILES) -fts -ff $(GFX_DIR)/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
 
 
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 3976 - 0
packages/libndsfpc/examples/audio/maxmod/streaming/Makefile

@@ -0,0 +1,3976 @@
+#
+# Don't edit, this file is generated by FPCMake Version 2.0.0 [2014-12-07 rev 29213]
+#
+default: all
+MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-haiku i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-darwin i386-emx i386-watcom i386-netwlibc i386-wince i386-embedded i386-symbian i386-nativent i386-iphonesim i386-android i386-aros m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos m68k-embedded powerpc-linux powerpc-netbsd powerpc-amiga powerpc-macos powerpc-darwin powerpc-morphos powerpc-embedded powerpc-wii powerpc-aix sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-netbsd x86_64-solaris x86_64-openbsd x86_64-darwin x86_64-win64 x86_64-embedded x86_64-dragonfly arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian arm-android powerpc64-linux powerpc64-darwin powerpc64-embedded powerpc64-aix avr-embedded armeb-linux armeb-embedded mips-linux mipsel-linux mipsel-embedded mipsel-android jvm-java jvm-android i8086-msdos
+BSDs = freebsd netbsd openbsd darwin dragonfly
+UNIXs = linux $(BSDs) solaris qnx haiku aix
+LIMIT83fs = go32v2 os2 emx watcom msdos
+OSNeedsComspecToRunBatch = go32v2 watcom
+FORCE:
+.PHONY: FORCE
+override PATH:=$(patsubst %/,%,$(subst \,/,$(PATH)))
+ifneq ($(findstring darwin,$(OSTYPE)),)
+inUnix=1 #darwin
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+ifeq ($(findstring ;,$(PATH)),)
+inUnix=1
+SEARCHPATH:=$(filter-out .,$(subst :, ,$(PATH)))
+else
+SEARCHPATH:=$(subst ;, ,$(PATH))
+endif
+endif
+SEARCHPATH+=$(patsubst %/,%,$(subst \,/,$(dir $(MAKE))))
+PWD:=$(strip $(wildcard $(addsuffix /pwd.exe,$(SEARCHPATH))))
+ifeq ($(PWD),)
+PWD:=$(strip $(wildcard $(addsuffix /pwd,$(SEARCHPATH))))
+ifeq ($(PWD),)
+$(error You need the GNU utils package to use this Makefile)
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=
+endif
+else
+PWD:=$(firstword $(PWD))
+SRCEXEEXT=.exe
+endif
+ifndef inUnix
+ifeq ($(OS),Windows_NT)
+inWinNT=1
+else
+ifdef OS2_SHELL
+inOS2=1
+endif
+endif
+else
+ifneq ($(findstring cygdrive,$(PATH)),)
+inCygWin=1
+endif
+endif
+ifdef inUnix
+SRCBATCHEXT=.sh
+else
+ifdef inOS2
+SRCBATCHEXT=.cmd
+else
+SRCBATCHEXT=.bat
+endif
+endif
+ifdef COMSPEC
+ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
+ifndef RUNBATCH
+RUNBATCH=$(COMSPEC) /C
+endif
+endif
+endif
+ifdef inUnix
+PATHSEP=/
+else
+PATHSEP:=$(subst /,\,/)
+ifdef inCygWin
+PATHSEP=/
+endif
+endif
+ifdef PWD
+BASEDIR:=$(subst \,/,$(shell $(PWD)))
+ifdef inCygWin
+ifneq ($(findstring /cygdrive/,$(BASEDIR)),)
+BASENODIR:=$(patsubst /cygdrive%,%,$(BASEDIR))
+BASEDRIVE:=$(firstword $(subst /, ,$(BASENODIR)))
+BASEDIR:=$(subst /cygdrive/$(BASEDRIVE)/,$(BASEDRIVE):/,$(BASEDIR))
+endif
+endif
+else
+BASEDIR=.
+endif
+ifdef inOS2
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO=echo
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+endif
+override OS_TARGET_DEFAULT=nds
+override CPU_TARGET_DEFAULT=arm
+override DEFAULT_FPCDIR=../../../../../..
+ifndef FPC
+ifdef PP
+FPC=$(PP)
+endif
+endif
+ifndef FPC
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+ifneq ($(CPU_TARGET),)
+FPC:=$(shell $(FPCPROG) -P$(CPU_TARGET) -PB)
+else
+FPC:=$(shell $(FPCPROG) -PB)
+endif
+ifneq ($(findstring Error,$(FPC)),)
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+else
+ifeq ($(strip $(wildcard $(FPC))),)
+FPC:=$(firstword $(FPCPROG))
+endif
+endif
+else
+override FPC=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+endif
+override FPC:=$(subst $(SRCEXEEXT),,$(FPC))
+override FPC:=$(subst \,/,$(FPC))$(SRCEXEEXT)
+FOUNDFPC:=$(strip $(wildcard $(FPC)))
+ifeq ($(FOUNDFPC),)
+FOUNDFPC=$(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))
+ifeq ($(FOUNDFPC),)
+$(error Compiler $(FPC) not found)
+endif
+endif
+ifndef FPC_COMPILERINFO
+FPC_COMPILERINFO:=$(shell $(FPC) -iVSPTPSOTO)
+endif
+ifndef FPC_VERSION
+FPC_VERSION:=$(word 1,$(FPC_COMPILERINFO))
+endif
+export FPC FPC_VERSION FPC_COMPILERINFO
+unexport CHECKDEPEND ALLDEPENDENCIES
+ifndef CPU_TARGET
+ifdef CPU_TARGET_DEFAULT
+CPU_TARGET=$(CPU_TARGET_DEFAULT)
+endif
+endif
+ifndef OS_TARGET
+ifdef OS_TARGET_DEFAULT
+OS_TARGET=$(OS_TARGET_DEFAULT)
+endif
+endif
+ifndef CPU_SOURCE
+CPU_SOURCE:=$(word 2,$(FPC_COMPILERINFO))
+endif
+ifndef CPU_TARGET
+CPU_TARGET:=$(word 3,$(FPC_COMPILERINFO))
+endif
+ifndef OS_SOURCE
+OS_SOURCE:=$(word 4,$(FPC_COMPILERINFO))
+endif
+ifndef OS_TARGET
+OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
+endif
+FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifeq ($(CPU_TARGET),armeb)
+ARCH=arm
+override FPCOPT+=-Cb
+else
+ifeq ($(CPU_TARGET),armel)
+ARCH=arm
+override FPCOPT+=-CaEABI
+else
+ARCH=$(CPU_TARGET)
+endif
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for arm-embedded, a sub-architecture (e.g. SUBARCH=armv4t or SUBARCH=armv7m) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+ifeq ($(SUBARCH),)
+$(error When compiling for mipsel-embedded, a sub-architecture (e.g. SUBARCH=pic32mx) must be defined)
+endif
+override FPCOPT+=-Cp$(SUBARCH)
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+SOURCESUFFIX=$(OS_SOURCE)
+else
+ifneq ($(findstring $(OS_TARGET),$(LIMIT83fs)),)
+TARGETSUFFIX=$(OS_TARGET)
+else
+TARGETSUFFIX=$(FULL_TARGET)
+endif
+SOURCESUFFIX=$(FULL_SOURCE)
+endif
+ifneq ($(FULL_TARGET),$(FULL_SOURCE))
+CROSSCOMPILE=1
+endif
+ifeq ($(findstring makefile,$(MAKECMDGOALS)),)
+ifeq ($(findstring $(FULL_TARGET),$(MAKEFILETARGETS)),)
+$(error The Makefile doesn't support target $(FULL_TARGET), please run fpcmake first)
+endif
+endif
+ifneq ($(findstring $(OS_TARGET),$(BSDs)),)
+BSDhier=1
+endif
+ifeq ($(OS_TARGET),linux)
+linuxHier=1
+endif
+ifndef CROSSCOMPILE
+BUILDFULLNATIVE=1
+export BUILDFULLNATIVE
+endif
+ifdef BUILDFULLNATIVE
+BUILDNATIVE=1
+export BUILDNATIVE
+endif
+export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
+ifdef FPCDIR
+override FPCDIR:=$(subst \,/,$(FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+else
+override FPCDIR=wrong
+endif
+ifdef DEFAULT_FPCDIR
+ifeq ($(FPCDIR),wrong)
+override FPCDIR:=$(subst \,/,$(DEFAULT_FPCDIR))
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=wrong
+endif
+endif
+endif
+ifeq ($(FPCDIR),wrong)
+ifdef inUnix
+override FPCDIR=/usr/local/lib/fpc/$(FPC_VERSION)
+ifeq ($(wildcard $(FPCDIR)/units),)
+override FPCDIR=/usr/lib/fpc/$(FPC_VERSION)
+endif
+else
+override FPCDIR:=$(subst /$(FPC),,$(firstword $(strip $(wildcard $(addsuffix /$(FPC),$(SEARCHPATH))))))
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(FPCDIR)/..
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR:=$(BASEDIR)
+ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
+override FPCDIR=c:/pp
+endif
+endif
+endif
+endif
+endif
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(FPCDIR)/bin/$(TARGETSUFFIX))
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+ifeq ($(OS_SOURCE),darwin)
+DARWIN2DARWIN=1
+endif
+endif
+ifndef BINUTILSPREFIX
+ifndef CROSSBINDIR
+ifdef CROSSCOMPILE
+ifneq ($(OS_TARGET),msdos)
+ifndef DARWIN2DARWIN
+ifneq ($(CPU_TARGET),jvm)
+BINUTILSPREFIX=$(CPU_TARGET)-$(OS_TARGET)-
+ifeq ($(OS_TARGET),android)
+ifeq ($(CPU_TARGET),arm)
+BINUTILSPREFIX=arm-linux-androideabi-
+else
+ifeq ($(CPU_TARGET),i386)
+BINUTILSPREFIX=i686-linux-android-
+else
+ifeq ($(CPU_TARGET),mipsel)
+BINUTILSPREFIX=mipsel-linux-android-
+endif
+endif
+endif
+endif
+endif
+endif
+else
+BINUTILSPREFIX=$(OS_TARGET)-
+endif
+endif
+endif
+endif
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(TARGETSUFFIX))
+ifeq ($(UNITSDIR),)
+UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET))
+endif
+PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra)
+ifndef FPCFPMAKE
+ifdef CROSSCOMPILE
+ifeq ($(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR)))),)
+FPCPROG:=$(strip $(wildcard $(addsuffix /fpc$(SRCEXEEXT),$(SEARCHPATH))))
+ifneq ($(FPCPROG),)
+FPCPROG:=$(firstword $(FPCPROG))
+FPCFPMAKE:=$(shell $(FPCPROG) -PB)
+ifeq ($(strip $(wildcard $(FPCFPMAKE))),)
+FPCFPMAKE:=$(firstword $(FPCPROG))
+endif
+else
+override FPCFPMAKE=$(firstword $(strip $(wildcard $(addsuffix /ppc386$(SRCEXEEXT),$(SEARCHPATH)))))
+endif
+else
+FPCFPMAKE=$(strip $(wildcard $(addsuffix /compiler/ppc$(SRCEXEEXT),$(FPCDIR))))
+FPMAKE_SKIP_CONFIG=-n
+export FPCFPMAKE
+export FPMAKE_SKIP_CONFIG
+endif
+else
+FPMAKE_SKIP_CONFIG=-n
+FPCFPMAKE=$(FPC)
+endif
+endif
+BIN = bin
+BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
+ifeq ($(FULL_TARGET),i386-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override TARGET_PROGRAMS+=streaming
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override CLEAN_UNITS+=*
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* $(BIN)/*
+endif
+override INSTALL_FPCPACKAGE=y
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override COMPILER_OPTIONS+=-Xm
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override COMPILER_TARGETDIR+=$(BIN)
+endif
+ifeq ($(FULL_TARGET),i386-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-android)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),arm-android)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+override COMPILER_UNITTARGETDIR+=$(BUILD)
+endif
+ifdef REQUIRE_UNITSDIR
+override UNITSDIR+=$(REQUIRE_UNITSDIR)
+endif
+ifdef REQUIRE_PACKAGESDIR
+override PACKAGESDIR+=$(REQUIRE_PACKAGESDIR)
+endif
+ifdef ZIPINSTALL
+ifneq ($(findstring $(OS_TARGET),$(UNIXs)),)
+UNIXHier=1
+endif
+else
+ifneq ($(findstring $(OS_SOURCE),$(UNIXs)),)
+UNIXHier=1
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef PREFIX
+INSTALL_PREFIX=$(PREFIX)
+endif
+endif
+ifndef INSTALL_PREFIX
+ifdef UNIXHier
+INSTALL_PREFIX=/usr/local
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=/pp
+else
+INSTALL_BASEDIR:=/$(PACKAGE_NAME)
+endif
+endif
+endif
+export INSTALL_PREFIX
+ifdef INSTALL_FPCSUBDIR
+export INSTALL_FPCSUBDIR
+endif
+ifndef DIST_DESTDIR
+DIST_DESTDIR:=$(BASEDIR)
+endif
+export DIST_DESTDIR
+ifndef COMPILER_UNITTARGETDIR
+ifdef PACKAGEDIR_MAIN
+COMPILER_UNITTARGETDIR=$(PACKAGEDIR_MAIN)/units/$(TARGETSUFFIX)
+else
+COMPILER_UNITTARGETDIR=units/$(TARGETSUFFIX)
+endif
+endif
+ifndef COMPILER_TARGETDIR
+COMPILER_TARGETDIR=.
+endif
+ifndef INSTALL_BASEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/fpc/$(FPC_VERSION)
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)/lib/$(PACKAGE_NAME)
+endif
+else
+INSTALL_BASEDIR:=$(INSTALL_PREFIX)
+endif
+endif
+ifndef INSTALL_BINDIR
+ifdef UNIXHier
+INSTALL_BINDIR:=$(INSTALL_PREFIX)/bin
+else
+INSTALL_BINDIR:=$(INSTALL_BASEDIR)/bin
+ifdef INSTALL_FPCPACKAGE
+ifdef CROSSCOMPILE
+ifdef CROSSINSTALL
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(SOURCESUFFIX)
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+else
+INSTALL_BINDIR:=$(INSTALL_BINDIR)/$(TARGETSUFFIX)
+endif
+endif
+endif
+endif
+ifndef INSTALL_UNITDIR
+INSTALL_UNITDIR:=$(INSTALL_BASEDIR)/units/$(TARGETSUFFIX)
+ifdef INSTALL_FPCPACKAGE
+ifdef PACKAGE_NAME
+INSTALL_UNITDIR:=$(INSTALL_UNITDIR)/$(PACKAGE_NAME)
+endif
+endif
+endif
+ifndef INSTALL_LIBDIR
+ifdef UNIXHier
+INSTALL_LIBDIR:=$(INSTALL_PREFIX)/lib
+else
+INSTALL_LIBDIR:=$(INSTALL_UNITDIR)
+endif
+endif
+ifndef INSTALL_SOURCEDIR
+ifdef UNIXHier
+ifdef BSDhier
+SRCPREFIXDIR=share/src
+else
+ifdef linuxHier
+SRCPREFIXDIR=share/src
+else
+SRCPREFIXDIR=src
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_PREFIX)/$(SRCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+ifdef INSTALL_FPCSUBDIR
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(INSTALL_FPCSUBDIR)/$(PACKAGE_NAME)
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source/$(PACKAGE_NAME)
+endif
+else
+INSTALL_SOURCEDIR:=$(INSTALL_BASEDIR)/source
+endif
+endif
+endif
+ifndef INSTALL_DOCDIR
+ifdef UNIXHier
+ifdef BSDhier
+DOCPREFIXDIR=share/doc
+else
+ifdef linuxHier
+DOCPREFIXDIR=share/doc
+else
+DOCPREFIXDIR=doc
+endif
+endif
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_PREFIX)/$(DOCPREFIXDIR)/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc/$(PACKAGE_NAME)
+else
+INSTALL_DOCDIR:=$(INSTALL_BASEDIR)/doc
+endif
+endif
+endif
+ifndef INSTALL_EXAMPLEDIR
+ifdef UNIXHier
+ifdef INSTALL_FPCPACKAGE
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/fpc-$(FPC_VERSION)/$(PACKAGE_NAME)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/fpc-$(FPC_VERSION)/examples/$(PACKAGE_NAME)
+endif
+endif
+else
+ifdef BSDhier
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/share/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+ifdef linuxHier
+INSTALL_EXAMPLEDIR:=$(INSTALL_DOCDIR)/examples/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_PREFIX)/doc/$(PACKAGE_NAME)-$(PACKAGE_VERSION)
+endif
+endif
+endif
+else
+ifdef INSTALL_FPCPACKAGE
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples/$(PACKAGE_NAME)
+else
+INSTALL_EXAMPLEDIR:=$(INSTALL_BASEDIR)/examples
+endif
+endif
+endif
+ifndef INSTALL_DATADIR
+INSTALL_DATADIR=$(INSTALL_BASEDIR)
+endif
+ifndef INSTALL_SHAREDDIR
+INSTALL_SHAREDDIR=$(INSTALL_PREFIX)/lib
+endif
+ifdef CROSSCOMPILE
+ifndef CROSSBINDIR
+CROSSBINDIR:=$(wildcard $(CROSSTARGETDIR)/bin/$(SOURCESUFFIX))
+ifeq ($(CROSSBINDIR),)
+CROSSBINDIR:=$(wildcard $(INSTALL_BASEDIR)/cross/$(TARGETSUFFIX)/bin/$(FULL_SOURCE))
+endif
+endif
+else
+CROSSBINDIR=
+endif
+BATCHEXT=.bat
+LOADEREXT=.as
+EXEEXT=.exe
+PPLEXT=.ppl
+PPUEXT=.ppu
+OEXT=.o
+ASMEXT=.s
+SMARTEXT=.sl
+STATICLIBEXT=.a
+SHAREDLIBEXT=.so
+SHAREDLIBPREFIX=libfp
+STATICLIBPREFIX=libp
+IMPORTLIBPREFIX=libimp
+RSTEXT=.rst
+EXEDBGEXT=.dbg
+ifeq ($(OS_TARGET),go32v1)
+STATICLIBPREFIX=
+SHORTSUFFIX=v1
+endif
+ifeq ($(OS_TARGET),go32v2)
+STATICLIBPREFIX=
+SHORTSUFFIX=dos
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),watcom)
+STATICLIBPREFIX=
+OEXT=.obj
+ASMEXT=.asm
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=wat
+IMPORTLIBPREFIX=
+endif
+ifneq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+endif
+ifeq ($(OS_TARGET),linux)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=lnx
+endif
+ifeq ($(OS_TARGET),dragonfly)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=df
+endif
+ifeq ($(OS_TARGET),freebsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=fbs
+endif
+ifeq ($(OS_TARGET),netbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=nbs
+endif
+ifeq ($(OS_TARGET),openbsd)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=obs
+endif
+ifeq ($(OS_TARGET),win32)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=w32
+endif
+ifeq ($(OS_TARGET),os2)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=os2
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),emx)
+BATCHEXT=.cmd
+AOUTEXT=.out
+STATICLIBPREFIX=
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=emx
+ECHO=echo
+IMPORTLIBPREFIX=
+endif
+ifeq ($(OS_TARGET),amiga)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=amg
+endif
+ifeq ($(OS_TARGET),aros)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=aros
+endif
+ifeq ($(OS_TARGET),morphos)
+EXEEXT=
+SHAREDLIBEXT=.library
+SHORTSUFFIX=mos
+endif
+ifeq ($(OS_TARGET),atari)
+EXEEXT=.ttp
+SHORTSUFFIX=ata
+endif
+ifeq ($(OS_TARGET),beos)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=be
+endif
+ifeq ($(OS_TARGET),haiku)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=hai
+endif
+ifeq ($(OS_TARGET),solaris)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=sun
+endif
+ifeq ($(OS_TARGET),qnx)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=qnx
+endif
+ifeq ($(OS_TARGET),netware)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nw
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),netwlibc)
+EXEEXT=.nlm
+STATICLIBPREFIX=
+SHORTSUFFIX=nwl
+IMPORTLIBPREFIX=imp
+endif
+ifeq ($(OS_TARGET),macos)
+BATCHEXT=
+EXEEXT=
+DEBUGSYMEXT=.xcoff
+SHORTSUFFIX=mac
+IMPORTLIBPREFIX=imp
+endif
+ifneq ($(findstring $(OS_TARGET),darwin iphonesim),)
+BATCHEXT=.sh
+EXEEXT=
+HASSHAREDLIB=1
+SHORTSUFFIX=dwn
+EXEDBGEXT=.dSYM
+endif
+ifeq ($(OS_TARGET),gba)
+EXEEXT=.gba
+SHAREDLIBEXT=.so
+SHORTSUFFIX=gba
+endif
+ifeq ($(OS_TARGET),symbian)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=symbian
+endif
+ifeq ($(OS_TARGET),NativeNT)
+SHAREDLIBEXT=.dll
+SHORTSUFFIX=nativent
+endif
+ifeq ($(OS_TARGET),wii)
+EXEEXT=.dol
+SHAREDLIBEXT=.so
+SHORTSUFFIX=wii
+endif
+ifeq ($(OS_TARGET),aix)
+BATCHEXT=.sh
+EXEEXT=
+SHORTSUFFIX=aix
+endif
+ifeq ($(OS_TARGET),java)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=java
+endif
+ifeq ($(CPU_TARGET),jvm)
+ifeq ($(OS_TARGET),android)
+OEXT=.class
+ASMEXT=.j
+SHAREDLIBEXT=.jar
+SHORTSUFFIX=android
+endif
+endif
+ifeq ($(OS_TARGET),msdos)
+STATICLIBPREFIX=
+STATICLIBEXT=.a
+SHORTSUFFIX=d16
+endif
+ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
+FPCMADE=fpcmade.$(SHORTSUFFIX)
+ZIPSUFFIX=$(SHORTSUFFIX)
+ZIPCROSSPREFIX=
+ZIPSOURCESUFFIX=src
+ZIPEXAMPLESUFFIX=exm
+else
+FPCMADE=fpcmade.$(TARGETSUFFIX)
+ZIPSOURCESUFFIX=.source
+ZIPEXAMPLESUFFIX=.examples
+ifdef CROSSCOMPILE
+ZIPSUFFIX=.$(SOURCESUFFIX)
+ZIPCROSSPREFIX=$(TARGETSUFFIX)-
+else
+ZIPSUFFIX=.$(TARGETSUFFIX)
+ZIPCROSSPREFIX=
+endif
+endif
+ifndef ECHO
+ECHO:=$(strip $(wildcard $(addsuffix /gecho$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO:=$(strip $(wildcard $(addsuffix /echo$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ECHO),)
+ECHO= __missing_command_ECHO
+else
+ECHO:=$(firstword $(ECHO))
+endif
+else
+ECHO:=$(firstword $(ECHO))
+endif
+endif
+export ECHO
+ifndef DATE
+DATE:=$(strip $(wildcard $(addsuffix /gdate$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE:=$(strip $(wildcard $(addsuffix /date$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(DATE),)
+DATE= __missing_command_DATE
+else
+DATE:=$(firstword $(DATE))
+endif
+else
+DATE:=$(firstword $(DATE))
+endif
+endif
+export DATE
+ifndef GINSTALL
+GINSTALL:=$(strip $(wildcard $(addsuffix /ginstall$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL:=$(strip $(wildcard $(addsuffix /install$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GINSTALL),)
+GINSTALL= __missing_command_GINSTALL
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+else
+GINSTALL:=$(firstword $(GINSTALL))
+endif
+endif
+export GINSTALL
+ifndef CPPROG
+CPPROG:=$(strip $(wildcard $(addsuffix /cp$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(CPPROG),)
+CPPROG= __missing_command_CPPROG
+else
+CPPROG:=$(firstword $(CPPROG))
+endif
+endif
+export CPPROG
+ifndef RMPROG
+RMPROG:=$(strip $(wildcard $(addsuffix /rm$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMPROG),)
+RMPROG= __missing_command_RMPROG
+else
+RMPROG:=$(firstword $(RMPROG))
+endif
+endif
+export RMPROG
+ifndef MVPROG
+MVPROG:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MVPROG),)
+MVPROG= __missing_command_MVPROG
+else
+MVPROG:=$(firstword $(MVPROG))
+endif
+endif
+export MVPROG
+ifndef MKDIRPROG
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /gmkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG:=$(strip $(wildcard $(addsuffix /mkdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MKDIRPROG),)
+MKDIRPROG= __missing_command_MKDIRPROG
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+else
+MKDIRPROG:=$(firstword $(MKDIRPROG))
+endif
+endif
+export MKDIRPROG
+ifndef ECHOREDIR
+ifndef inUnix
+ECHOREDIR=echo
+else
+ECHOREDIR=$(ECHO)
+endif
+endif
+ifndef COPY
+COPY:=$(CPPROG) -fp
+endif
+ifndef COPYTREE
+COPYTREE:=$(CPPROG) -Rfp
+endif
+ifndef MKDIRTREE
+MKDIRTREE:=$(MKDIRPROG) -p
+endif
+ifndef MOVE
+MOVE:=$(MVPROG) -f
+endif
+ifndef DEL
+DEL:=$(RMPROG) -f
+endif
+ifndef DELTREE
+DELTREE:=$(RMPROG) -rf
+endif
+ifndef INSTALL
+ifdef inUnix
+INSTALL:=$(GINSTALL) -c -m 644
+else
+INSTALL:=$(COPY)
+endif
+endif
+ifndef INSTALLEXE
+ifdef inUnix
+INSTALLEXE:=$(GINSTALL) -c -m 755
+else
+INSTALLEXE:=$(COPY)
+endif
+endif
+ifndef MKDIR
+MKDIR:=$(GINSTALL) -m 755 -d
+endif
+export ECHOREDIR COPY COPYTREE MOVE DEL DELTREE INSTALL INSTALLEXE MKDIR
+ifndef PPUMOVE
+PPUMOVE:=$(strip $(wildcard $(addsuffix /ppumove$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(PPUMOVE),)
+PPUMOVE= __missing_command_PPUMOVE
+else
+PPUMOVE:=$(firstword $(PPUMOVE))
+endif
+endif
+export PPUMOVE
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef ZIPPROG
+ZIPPROG:=$(strip $(wildcard $(addsuffix /zip$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(ZIPPROG),)
+ZIPPROG= __missing_command_ZIPPROG
+else
+ZIPPROG:=$(firstword $(ZIPPROG))
+endif
+endif
+export ZIPPROG
+ifndef TARPROG
+TARPROG:=$(strip $(wildcard $(addsuffix /gtar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG:=$(strip $(wildcard $(addsuffix /tar$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(TARPROG),)
+TARPROG= __missing_command_TARPROG
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+else
+TARPROG:=$(firstword $(TARPROG))
+endif
+endif
+export TARPROG
+ASNAME=$(BINUTILSPREFIX)as
+LDNAME=$(BINUTILSPREFIX)ld
+ARNAME=$(BINUTILSPREFIX)ar
+RCNAME=$(BINUTILSPREFIX)rc
+NASMNAME=$(BINUTILSPREFIX)nasm
+ifndef ASPROG
+ifdef CROSSBINDIR
+ASPROG=$(CROSSBINDIR)/$(ASNAME)$(SRCEXEEXT)
+else
+ASPROG=$(ASNAME)
+endif
+endif
+ifndef LDPROG
+ifdef CROSSBINDIR
+LDPROG=$(CROSSBINDIR)/$(LDNAME)$(SRCEXEEXT)
+else
+LDPROG=$(LDNAME)
+endif
+endif
+ifndef RCPROG
+ifdef CROSSBINDIR
+RCPROG=$(CROSSBINDIR)/$(RCNAME)$(SRCEXEEXT)
+else
+RCPROG=$(RCNAME)
+endif
+endif
+ifndef ARPROG
+ifdef CROSSBINDIR
+ARPROG=$(CROSSBINDIR)/$(ARNAME)$(SRCEXEEXT)
+else
+ARPROG=$(ARNAME)
+endif
+endif
+ifndef NASMPROG
+ifdef CROSSBINDIR
+NASMPROG=$(CROSSBINDIR)/$(NASMNAME)$(SRCEXEEXT)
+else
+NASMPROG=$(NASMNAME)
+endif
+endif
+AS=$(ASPROG)
+LD=$(LDPROG)
+RC=$(RCPROG)
+AR=$(ARPROG)
+NASM=$(NASMPROG)
+ifdef inUnix
+PPAS=./ppas$(SRCBATCHEXT)
+else
+PPAS=ppas$(SRCBATCHEXT)
+endif
+ifdef inUnix
+LDCONFIG=ldconfig
+else
+LDCONFIG=
+endif
+ifdef DATE
+DATESTR:=$(shell $(DATE) +%Y%m%d)
+else
+DATESTR=
+endif
+ZIPOPT=-9
+ZIPEXT=.zip
+ifeq ($(USETAR),bz2)
+TAROPT=vj
+TAREXT=.tar.bz2
+else
+TAROPT=vz
+TAREXT=.tar.gz
+endif
+override REQUIRE_PACKAGES=libndsfpc
+ifeq ($(FULL_TARGET),i386-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-go32v2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-win32)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-os2)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-beos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-haiku)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-qnx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-netware)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-wdosx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-emx)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-watcom)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-netwlibc)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-nativent)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-iphonesim)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i386-aros)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-atari)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),m68k-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-amiga)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-macos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-morphos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-wii)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),sparc-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),sparc-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),sparc-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),sparc-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-freebsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-netbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-solaris)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-openbsd)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-win64)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),x86_64-dragonfly)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-palmos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-wince)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-gba)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-nds)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-symbian)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),arm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-darwin)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),powerpc64-aix)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),avr-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),armeb-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),armeb-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),mips-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),mipsel-linux)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),mipsel-embedded)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),mipsel-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),jvm-java)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),jvm-android)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifeq ($(FULL_TARGET),i8086-msdos)
+REQUIRE_PACKAGES_RTL=1
+REQUIRE_PACKAGES_PASZLIB=1
+REQUIRE_PACKAGES_FCL-PROCESS=1
+REQUIRE_PACKAGES_HASH=1
+REQUIRE_PACKAGES_LIBTAR=1
+REQUIRE_PACKAGES_FPMKUNIT=1
+REQUIRE_PACKAGES_LIBNDSFPC=1
+endif
+ifdef REQUIRE_PACKAGES_RTL
+PACKAGEDIR_RTL:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /rtl/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_RTL),)
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)),)
+UNITDIR_RTL=$(PACKAGEDIR_RTL)/units/$(TARGETSUFFIX)
+else
+UNITDIR_RTL=$(PACKAGEDIR_RTL)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_RTL=$(PACKAGEDIR_RTL)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_RTL)/$(OS_TARGET) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_RTL)/$(OS_TARGET)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_RTL=
+UNITDIR_RTL:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /rtl/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_RTL),)
+UNITDIR_RTL:=$(firstword $(UNITDIR_RTL))
+else
+UNITDIR_RTL=
+endif
+endif
+ifdef UNITDIR_RTL
+override COMPILER_UNITDIR+=$(UNITDIR_RTL)
+endif
+ifdef UNITDIR_FPMAKE_RTL
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_RTL)
+endif
+endif
+ifdef REQUIRE_PACKAGES_PASZLIB
+PACKAGEDIR_PASZLIB:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_PASZLIB),)
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)),)
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(TARGETSUFFIX)
+else
+UNITDIR_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_PASZLIB=$(PACKAGEDIR_PASZLIB)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_PASZLIB)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_PASZLIB) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_PASZLIB)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_PASZLIB=
+UNITDIR_PASZLIB:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /paszlib/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_PASZLIB),)
+UNITDIR_PASZLIB:=$(firstword $(UNITDIR_PASZLIB))
+else
+UNITDIR_PASZLIB=
+endif
+endif
+ifdef UNITDIR_PASZLIB
+override COMPILER_UNITDIR+=$(UNITDIR_PASZLIB)
+endif
+ifdef UNITDIR_FPMAKE_PASZLIB
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_PASZLIB)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FCL-PROCESS
+PACKAGEDIR_FCL-PROCESS:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FCL-PROCESS),)
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)),)
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FCL-PROCESS=$(PACKAGEDIR_FCL-PROCESS)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_FCL-PROCESS) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FCL-PROCESS)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FCL-PROCESS=
+UNITDIR_FCL-PROCESS:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fcl-process/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FCL-PROCESS),)
+UNITDIR_FCL-PROCESS:=$(firstword $(UNITDIR_FCL-PROCESS))
+else
+UNITDIR_FCL-PROCESS=
+endif
+endif
+ifdef UNITDIR_FCL-PROCESS
+override COMPILER_UNITDIR+=$(UNITDIR_FCL-PROCESS)
+endif
+ifdef UNITDIR_FPMAKE_FCL-PROCESS
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FCL-PROCESS)
+endif
+endif
+ifdef REQUIRE_PACKAGES_HASH
+PACKAGEDIR_HASH:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /hash/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_HASH),)
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)),)
+UNITDIR_HASH=$(PACKAGEDIR_HASH)/units/$(TARGETSUFFIX)
+else
+UNITDIR_HASH=$(PACKAGEDIR_HASH)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_HASH=$(PACKAGEDIR_HASH)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_HASH)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_HASH) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_HASH)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_HASH=
+UNITDIR_HASH:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /hash/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_HASH),)
+UNITDIR_HASH:=$(firstword $(UNITDIR_HASH))
+else
+UNITDIR_HASH=
+endif
+endif
+ifdef UNITDIR_HASH
+override COMPILER_UNITDIR+=$(UNITDIR_HASH)
+endif
+ifdef UNITDIR_FPMAKE_HASH
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_HASH)
+endif
+endif
+ifdef REQUIRE_PACKAGES_LIBTAR
+PACKAGEDIR_LIBTAR:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libtar/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_LIBTAR),)
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)),)
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(TARGETSUFFIX)
+else
+UNITDIR_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_LIBTAR=$(PACKAGEDIR_LIBTAR)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_LIBTAR)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_LIBTAR) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBTAR)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_LIBTAR=
+UNITDIR_LIBTAR:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libtar/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_LIBTAR),)
+UNITDIR_LIBTAR:=$(firstword $(UNITDIR_LIBTAR))
+else
+UNITDIR_LIBTAR=
+endif
+endif
+ifdef UNITDIR_LIBTAR
+override COMPILER_UNITDIR+=$(UNITDIR_LIBTAR)
+endif
+ifdef UNITDIR_FPMAKE_LIBTAR
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBTAR)
+endif
+endif
+ifdef REQUIRE_PACKAGES_FPMKUNIT
+PACKAGEDIR_FPMKUNIT:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_FPMKUNIT),)
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)),)
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(TARGETSUFFIX)
+else
+UNITDIR_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_FPMKUNIT=$(PACKAGEDIR_FPMKUNIT)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_FPMKUNIT) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_FPMKUNIT)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_FPMKUNIT=
+UNITDIR_FPMKUNIT:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /fpmkunit/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_FPMKUNIT),)
+UNITDIR_FPMKUNIT:=$(firstword $(UNITDIR_FPMKUNIT))
+else
+UNITDIR_FPMKUNIT=
+endif
+endif
+ifdef UNITDIR_FPMKUNIT
+override COMPILER_UNITDIR+=$(UNITDIR_FPMKUNIT)
+endif
+ifdef UNITDIR_FPMAKE_FPMKUNIT
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_FPMKUNIT)
+endif
+endif
+ifdef REQUIRE_PACKAGES_LIBNDSFPC
+PACKAGEDIR_LIBNDSFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libndsfpc/Makefile.fpc,$(PACKAGESDIR))))))
+ifneq ($(PACKAGEDIR_LIBNDSFPC),)
+ifneq ($(wildcard $(PACKAGEDIR_LIBNDSFPC)/units/$(TARGETSUFFIX)),)
+UNITDIR_LIBNDSFPC=$(PACKAGEDIR_LIBNDSFPC)/units/$(TARGETSUFFIX)
+else
+UNITDIR_LIBNDSFPC=$(PACKAGEDIR_LIBNDSFPC)
+endif
+ifneq ($(wildcard $(PACKAGEDIR_LIBNDSFPC)/units/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBNDSFPC=$(PACKAGEDIR_LIBNDSFPC)/units/$(SOURCESUFFIX)
+else
+ifneq ($(wildcard $(PACKAGEDIR_LIBNDSFPC)/units_bs/$(SOURCESUFFIX)),)
+UNITDIR_FPMAKE_LIBNDSFPC=$(PACKAGEDIR_LIBNDSFPC)/units_bs/$(SOURCESUFFIX)
+else
+UNITDIR_FPMAKE_LIBNDSFPC=$(PACKAGEDIR_LIBNDSFPC)
+endif
+endif
+ifdef CHECKDEPEND
+$(PACKAGEDIR_LIBNDSFPC)/$(FPCMADE):
+	$(MAKE) -C $(PACKAGEDIR_LIBNDSFPC) $(FPCMADE)
+override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBNDSFPC)/$(FPCMADE)
+endif
+else
+PACKAGEDIR_LIBNDSFPC=
+UNITDIR_LIBNDSFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libndsfpc/Package.fpc,$(UNITSDIR)))))
+ifneq ($(UNITDIR_LIBNDSFPC),)
+UNITDIR_LIBNDSFPC:=$(firstword $(UNITDIR_LIBNDSFPC))
+else
+UNITDIR_LIBNDSFPC=
+endif
+endif
+ifdef UNITDIR_LIBNDSFPC
+override COMPILER_UNITDIR+=$(UNITDIR_LIBNDSFPC)
+endif
+ifdef UNITDIR_FPMAKE_LIBNDSFPC
+override COMPILER_FPMAKE_UNITDIR+=$(UNITDIR_FPMAKE_LIBNDSFPC)
+endif
+endif
+ifndef NOCPUDEF
+override FPCOPTDEF=$(ARCH)
+endif
+ifneq ($(OS_TARGET),$(OS_SOURCE))
+override FPCOPT+=-T$(OS_TARGET)
+endif
+ifneq ($(CPU_TARGET),$(CPU_SOURCE))
+override FPCOPT+=-P$(ARCH)
+endif
+ifeq ($(OS_SOURCE),openbsd)
+override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
+endif
+ifndef CROSSBOOTSTRAP
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-XP$(BINUTILSPREFIX)
+endif
+ifneq ($(BINUTILSPREFIX),)
+override FPCOPT+=-Xr$(RLINKPATH)
+endif
+endif
+ifndef CROSSCOMPILE
+ifneq ($(BINUTILSPREFIX),)
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
+endif
+endif
+ifdef UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(UNITDIR))
+endif
+ifdef LIBDIR
+override FPCOPT+=$(addprefix -Fl,$(LIBDIR))
+endif
+ifdef OBJDIR
+override FPCOPT+=$(addprefix -Fo,$(OBJDIR))
+endif
+ifdef INCDIR
+override FPCOPT+=$(addprefix -Fi,$(INCDIR))
+endif
+ifdef LINKSMART
+override FPCOPT+=-XX
+endif
+ifdef CREATESMART
+override FPCOPT+=-CX
+endif
+ifdef DEBUG
+override FPCOPT+=-gl
+override FPCOPTDEF+=DEBUG
+endif
+ifdef RELEASE
+ifneq ($(findstring 2.0.,$(FPC_VERSION)),)
+ifeq ($(CPU_TARGET),i386)
+FPCCPUOPT:=-OG2p3
+endif
+ifeq ($(CPU_TARGET),powerpc)
+FPCCPUOPT:=-O1r
+endif
+else
+FPCCPUOPT:=-O2
+endif
+override FPCOPT+=-Ur -Xs $(FPCCPUOPT) -n
+override FPCOPTDEF+=RELEASE
+endif
+ifdef STRIP
+override FPCOPT+=-Xs
+endif
+ifdef OPTIMIZE
+override FPCOPT+=-O2
+endif
+ifdef VERBOSE
+override FPCOPT+=-vwni
+endif
+ifdef COMPILER_OPTIONS
+override FPCOPT+=$(COMPILER_OPTIONS)
+endif
+ifdef COMPILER_UNITDIR
+override FPCOPT+=$(addprefix -Fu,$(COMPILER_UNITDIR))
+endif
+ifdef COMPILER_LIBRARYDIR
+override FPCOPT+=$(addprefix -Fl,$(COMPILER_LIBRARYDIR))
+endif
+ifdef COMPILER_OBJECTDIR
+override FPCOPT+=$(addprefix -Fo,$(COMPILER_OBJECTDIR))
+endif
+ifdef COMPILER_INCLUDEDIR
+override FPCOPT+=$(addprefix -Fi,$(COMPILER_INCLUDEDIR))
+endif
+ifdef CROSSBINDIR
+override FPCOPT+=-FD$(CROSSBINDIR)
+endif
+ifdef COMPILER_TARGETDIR
+override FPCOPT+=-FE$(COMPILER_TARGETDIR)
+ifeq ($(COMPILER_TARGETDIR),.)
+override TARGETDIRPREFIX=
+else
+override TARGETDIRPREFIX=$(COMPILER_TARGETDIR)/
+endif
+endif
+ifdef COMPILER_UNITTARGETDIR
+override FPCOPT+=-FU$(COMPILER_UNITTARGETDIR)
+ifeq ($(COMPILER_UNITTARGETDIR),.)
+override UNITTARGETDIRPREFIX=
+else
+override UNITTARGETDIRPREFIX=$(COMPILER_UNITTARGETDIR)/
+endif
+else
+ifdef COMPILER_TARGETDIR
+override COMPILER_UNITTARGETDIR=$(COMPILER_TARGETDIR)
+override UNITTARGETDIRPREFIX=$(TARGETDIRPREFIX)
+endif
+endif
+ifdef CREATESHARED
+override FPCOPT+=-Cg
+endif
+ifneq ($(findstring $(OS_TARGET),dragonfly freebsd openbsd netbsd linux solaris),)
+ifeq ($(CPU_TARGET),x86_64)
+override FPCOPT+=-Cg
+endif
+endif
+ifdef LINKSHARED
+endif
+ifdef OPT
+override FPCOPT+=$(OPT)
+endif
+ifdef FPCOPTDEF
+override FPCOPT+=$(addprefix -d,$(FPCOPTDEF))
+endif
+ifdef CFGFILE
+override FPCOPT+=@$(CFGFILE)
+endif
+ifdef USEENV
+override FPCEXTCMD:=$(FPCOPT)
+override FPCOPT:=!FPCEXTCMD
+export FPCEXTCMD
+endif
+override AFULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
+override AFULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
+ifneq ($(AFULL_TARGET),$(AFULL_SOURCE))
+override ACROSSCOMPILE=1
+endif
+ifdef ACROSSCOMPILE
+override FPCOPT+=$(CROSSOPT)
+endif
+override COMPILER:=$(strip $(FPC) $(FPCOPT))
+ifneq (,$(findstring -sh ,$(COMPILER)))
+UseEXECPPAS=1
+endif
+ifneq (,$(findstring -s ,$(COMPILER)))
+ifeq ($(FULL_SOURCE),$(FULL_TARGET))
+UseEXECPPAS=1
+endif
+endif
+ifneq ($(UseEXECPPAS),1)
+EXECPPAS=
+else
+ifdef RUNBATCH
+EXECPPAS:=@$(RUNBATCH) $(PPAS)
+else
+EXECPPAS:=@$(PPAS)
+endif
+endif
+.PHONY: fpc_exes
+ifndef CROSSINSTALL
+ifneq ($(TARGET_PROGRAMS),)
+override EXEFILES=$(addsuffix $(EXEEXT),$(TARGET_PROGRAMS))
+override EXEOFILES:=$(addsuffix $(OEXT),$(TARGET_PROGRAMS)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_PROGRAMS)))
+override EXEDBGFILES:=$(addsuffix $(EXEDBGEXT),$(TARGET_PROGRAMS))
+override ALLTARGET+=fpc_exes
+override INSTALLEXEFILES+=$(EXEFILES)
+override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES)
+override CLEANEXEDBGFILES+=$(EXEDBGFILES)
+ifeq ($(OS_TARGET),os2)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+ifeq ($(OS_TARGET),emx)
+override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_PROGRAMS))
+endif
+endif
+endif
+fpc_exes: $(COMPILER_TARGETDIR) $(COMPILER_UNITTARGETDIR) $(EXEFILES)
+ifdef TARGET_RSTS
+override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS))
+override CLEANRSTFILES+=$(RSTFILES)
+endif
+.PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared
+$(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET)
+	@$(ECHOREDIR) Compiled > $(FPCMADE)
+fpc_all: $(FPCMADE)
+fpc_smart:
+	$(MAKE) all LINKSMART=1 CREATESMART=1
+fpc_debug:
+	$(MAKE) all DEBUG=1
+fpc_release:
+	$(MAKE) all RELEASE=1
+.SUFFIXES: $(EXEEXT) $(PPUEXT) $(OEXT) .pas .lpr .dpr .pp .rc .res
+$(COMPILER_UNITTARGETDIR):
+	$(MKDIRTREE) $(COMPILER_UNITTARGETDIR)
+$(COMPILER_TARGETDIR):
+	$(MKDIRTREE) $(COMPILER_TARGETDIR)
+%$(PPUEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(PPUEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pp
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.pas
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.lpr
+	$(COMPILER) $<
+	$(EXECPPAS)
+%$(EXEEXT): %.dpr
+	$(COMPILER) $<
+	$(EXECPPAS)
+%.res: %.rc
+	windres -i $< -o $@
+vpath %.pp $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.pas $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.lpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.dpr $(COMPILER_SOURCEDIR) $(COMPILER_INCLUDEDIR)
+vpath %.inc $(COMPILER_INCLUDEDIR)
+vpath %$(OEXT) $(COMPILER_UNITTARGETDIR)
+vpath %$(PPUEXT) $(COMPILER_UNITTARGETDIR)
+.PHONY: fpc_shared
+override INSTALLTARGET+=fpc_shared_install
+ifndef SHARED_LIBVERSION
+SHARED_LIBVERSION=$(FPC_VERSION)
+endif
+ifndef SHARED_LIBNAME
+SHARED_LIBNAME=$(PACKAGE_NAME)
+endif
+ifndef SHARED_FULLNAME
+SHARED_FULLNAME=$(SHAREDLIBPREFIX)$(SHARED_LIBNAME)-$(SHARED_LIBVERSION)$(SHAREDLIBEXT)
+endif
+ifndef SHARED_LIBUNITS
+SHARED_LIBUNITS:=$(TARGET_UNITS) $(TARGET_IMPLICITUNITS)
+override SHARED_LIBUNITS:=$(filter-out $(INSTALL_BUILDUNIT),$(SHARED_LIBUNITS))
+endif
+fpc_shared:
+ifdef HASSHAREDLIB
+	$(MAKE) all CREATESHARED=1 LINKSHARED=1 CREATESMART=1
+ifneq ($(SHARED_BUILD),n)
+	$(PPUMOVE) -q $(SHARED_LIBUNITS) -i$(COMPILER_UNITTARGETDIR) -o$(SHARED_FULLNAME) -d$(COMPILER_UNITTARGETDIR)
+endif
+else
+	@$(ECHO) Shared Libraries not supported
+endif
+fpc_shared_install:
+ifneq ($(SHARED_BUILD),n)
+ifneq ($(SHARED_LIBUNITS),)
+ifneq ($(wildcard $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME)),)
+	$(INSTALL) $(COMPILER_UNITTARGETDIR)/$(SHARED_FULLNAME) $(INSTALL_SHAREDDIR)
+endif
+endif
+endif
+.PHONY: fpc_install fpc_sourceinstall fpc_exampleinstall
+ifdef INSTALL_UNITS
+override INSTALLPPUFILES+=$(addsuffix $(PPUEXT),$(INSTALL_UNITS))
+endif
+ifdef INSTALL_BUILDUNIT
+override INSTALLPPUFILES:=$(filter-out $(INSTALL_BUILDUNIT)$(PPUEXT),$(INSTALLPPUFILES))
+endif
+ifdef INSTALLPPUFILES
+override INSTALLPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(INSTALLPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(INSTALLPPUFILES)))
+ifneq ($(UNITTARGETDIRPREFIX),)
+override INSTALLPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPUFILES)))
+override INSTALLPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(notdir $(INSTALLPPULINKFILES))))
+endif
+override INSTALL_CREATEPACKAGEFPC=1
+endif
+ifdef INSTALLEXEFILES
+ifneq ($(TARGETDIRPREFIX),)
+override INSTALLEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(notdir $(INSTALLEXEFILES)))
+endif
+endif
+fpc_install: all $(INSTALLTARGET)
+ifdef INSTALLEXEFILES
+	$(MKDIR) $(INSTALL_BINDIR)
+	$(INSTALLEXE) $(INSTALLEXEFILES) $(INSTALL_BINDIR)
+endif
+ifdef INSTALL_CREATEPACKAGEFPC
+ifdef FPCMAKE
+ifdef PACKAGE_VERSION
+ifneq ($(wildcard Makefile.fpc),)
+	$(FPCMAKE) -p -T$(CPU_TARGET)-$(OS_TARGET) Makefile.fpc
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) Package.fpc $(INSTALL_UNITDIR)
+endif
+endif
+endif
+endif
+ifdef INSTALLPPUFILES
+	$(MKDIR) $(INSTALL_UNITDIR)
+	$(INSTALL) $(INSTALLPPUFILES) $(INSTALL_UNITDIR)
+ifneq ($(INSTALLPPULINKFILES),)
+	$(INSTALL) $(INSTALLPPULINKFILES) $(INSTALL_UNITDIR)
+endif
+ifneq ($(wildcard $(LIB_FULLNAME)),)
+	$(MKDIR) $(INSTALL_LIBDIR)
+	$(INSTALL) $(LIB_FULLNAME) $(INSTALL_LIBDIR)
+ifdef inUnix
+	ln -sf $(LIB_FULLNAME) $(INSTALL_LIBDIR)/$(LIB_NAME)
+endif
+endif
+endif
+ifdef INSTALL_FILES
+	$(MKDIR) $(INSTALL_DATADIR)
+	$(INSTALL) $(INSTALL_FILES) $(INSTALL_DATADIR)
+endif
+fpc_sourceinstall: distclean
+	$(MKDIR) $(INSTALL_SOURCEDIR)
+	$(COPYTREE) $(BASEDIR)/* $(INSTALL_SOURCEDIR)
+fpc_exampleinstall: $(addsuffix _distclean,$(TARGET_EXAMPLEDIRS))
+ifdef HASEXAMPLES
+	$(MKDIR) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef EXAMPLESOURCEFILES
+	$(COPY) $(EXAMPLESOURCEFILES) $(INSTALL_EXAMPLEDIR)
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(COPYTREE) $(addsuffix /*,$(TARGET_EXAMPLEDIRS)) $(INSTALL_EXAMPLEDIR)
+endif
+.PHONY: fpc_clean fpc_cleanall fpc_distclean
+ifdef EXEFILES
+override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES))
+override CLEANEXEDBGFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEDBGFILES))
+endif
+ifdef CLEAN_PROGRAMS
+override CLEANEXEFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEEXT), $(CLEAN_PROGRAMS)))
+override CLEANEXEDBGFILES+=$(addprefix $(TARGETDIRPREFIX),$(addsuffix $(EXEDBGEXT), $(CLEAN_PROGRAMS)))
+endif
+ifdef CLEAN_UNITS
+override CLEANPPUFILES+=$(addsuffix $(PPUEXT),$(CLEAN_UNITS))
+endif
+ifdef CLEANPPUFILES
+override CLEANPPULINKFILES:=$(subst $(PPUEXT),$(OEXT),$(CLEANPPUFILES)) $(addprefix $(STATICLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES))) $(addprefix $(IMPORTLIBPREFIX),$(subst $(PPUEXT),$(STATICLIBEXT),$(CLEANPPUFILES)))
+ifdef DEBUGSYMEXT
+override CLEANPPULINKFILES+=$(subst $(PPUEXT),$(DEBUGSYMEXT),$(CLEANPPUFILES))
+endif
+override CLEANPPUFILES:=$(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPUFILES))
+override CLEANPPULINKFILES:=$(wildcard $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANPPULINKFILES)))
+endif
+fpc_clean: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef CLEANEXEDBGFILES
+	-$(DELTREE) $(CLEANEXEDBGFILES)
+endif
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+ifdef LIB_NAME
+	-$(DEL) $(LIB_NAME) $(LIB_FULLNAME)
+endif
+	-$(DEL) $(FPCMADE) Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *$(ASMEXT) *_ppas$(BATCHEXT)
+fpc_cleanall: $(CLEANTARGET)
+ifdef CLEANEXEFILES
+	-$(DEL) $(CLEANEXEFILES)
+endif
+ifdef COMPILER_UNITTARGETDIR
+ifdef CLEANPPUFILES
+	-$(DEL) $(CLEANPPUFILES)
+endif
+ifneq ($(CLEANPPULINKFILES),)
+	-$(DEL) $(CLEANPPULINKFILES)
+endif
+ifdef CLEANRSTFILES
+	-$(DEL) $(addprefix $(UNITTARGETDIRPREFIX),$(CLEANRSTFILES))
+endif
+endif
+ifdef CLEAN_FILES
+	-$(DEL) $(CLEAN_FILES)
+endif
+	-$(DELTREE) units
+	-$(DEL) *$(OEXT) *$(PPUEXT) *$(RSTEXT) *$(ASMEXT) *$(STATICLIBEXT) *$(SHAREDLIBEXT) *$(PPLEXT)
+ifneq ($(PPUEXT),.ppu)
+	-$(DEL) *.o *.ppu *.a
+endif
+	-$(DELTREE) *$(SMARTEXT)
+	-$(DEL) fpcmade.* Package.fpc $(PPAS) script.res link.res $(FPCEXTFILE) $(REDIRFILE)
+	-$(DEL) *_ppas$(BATCHEXT)
+ifdef AOUTEXT
+	-$(DEL) *$(AOUTEXT)
+endif
+ifdef DEBUGSYMEXT
+	-$(DEL) *$(DEBUGSYMEXT)
+endif
+fpc_distclean: cleanall
+.PHONY: fpc_baseinfo
+override INFORULES+=fpc_baseinfo
+fpc_baseinfo:
+	@$(ECHO)
+	@$(ECHO)  == Package info ==
+	@$(ECHO)  Package Name..... $(PACKAGE_NAME)
+	@$(ECHO)  Package Version.. $(PACKAGE_VERSION)
+	@$(ECHO)
+	@$(ECHO)  == Configuration info ==
+	@$(ECHO)
+	@$(ECHO)  FPC.......... $(FPC)
+	@$(ECHO)  FPC Version.. $(FPC_VERSION)
+	@$(ECHO)  Source CPU... $(CPU_SOURCE)
+	@$(ECHO)  Target CPU... $(CPU_TARGET)
+	@$(ECHO)  Source OS.... $(OS_SOURCE)
+	@$(ECHO)  Target OS.... $(OS_TARGET)
+	@$(ECHO)  Full Source.. $(FULL_SOURCE)
+	@$(ECHO)  Full Target.. $(FULL_TARGET)
+	@$(ECHO)  SourceSuffix. $(SOURCESUFFIX)
+	@$(ECHO)  TargetSuffix. $(TARGETSUFFIX)
+	@$(ECHO)  FPC fpmake... $(FPCFPMAKE)
+	@$(ECHO)
+	@$(ECHO)  == Directory info ==
+	@$(ECHO)
+	@$(ECHO)  Required pkgs... $(REQUIRE_PACKAGES)
+	@$(ECHO)
+	@$(ECHO)  Basedir......... $(BASEDIR)
+	@$(ECHO)  FPCDir.......... $(FPCDIR)
+	@$(ECHO)  CrossBinDir..... $(CROSSBINDIR)
+	@$(ECHO)  UnitsDir........ $(UNITSDIR)
+	@$(ECHO)  PackagesDir..... $(PACKAGESDIR)
+	@$(ECHO)
+	@$(ECHO)  GCC library..... $(GCCLIBDIR)
+	@$(ECHO)  Other library... $(OTHERLIBDIR)
+	@$(ECHO)
+	@$(ECHO)  == Tools info ==
+	@$(ECHO)
+	@$(ECHO)  As........ $(AS)
+	@$(ECHO)  Ld........ $(LD)
+	@$(ECHO)  Ar........ $(AR)
+	@$(ECHO)  Rc........ $(RC)
+	@$(ECHO)
+	@$(ECHO)  Mv........ $(MVPROG)
+	@$(ECHO)  Cp........ $(CPPROG)
+	@$(ECHO)  Rm........ $(RMPROG)
+	@$(ECHO)  GInstall.. $(GINSTALL)
+	@$(ECHO)  Echo...... $(ECHO)
+	@$(ECHO)  Shell..... $(SHELL)
+	@$(ECHO)  Date...... $(DATE)
+	@$(ECHO)  FPCMake... $(FPCMAKE)
+	@$(ECHO)  PPUMove... $(PPUMOVE)
+	@$(ECHO)  Zip....... $(ZIPPROG)
+	@$(ECHO)
+	@$(ECHO)  == Object info ==
+	@$(ECHO)
+	@$(ECHO)  Target Loaders........ $(TARGET_LOADERS)
+	@$(ECHO)  Target Units.......... $(TARGET_UNITS)
+	@$(ECHO)  Target Implicit Units. $(TARGET_IMPLICITUNITS)
+	@$(ECHO)  Target Programs....... $(TARGET_PROGRAMS)
+	@$(ECHO)  Target Dirs........... $(TARGET_DIRS)
+	@$(ECHO)  Target Examples....... $(TARGET_EXAMPLES)
+	@$(ECHO)  Target ExampleDirs.... $(TARGET_EXAMPLEDIRS)
+	@$(ECHO)
+	@$(ECHO)  Clean Units......... $(CLEAN_UNITS)
+	@$(ECHO)  Clean Files......... $(CLEAN_FILES)
+	@$(ECHO)
+	@$(ECHO)  Install Units....... $(INSTALL_UNITS)
+	@$(ECHO)  Install Files....... $(INSTALL_FILES)
+	@$(ECHO)
+	@$(ECHO)  == Install info ==
+	@$(ECHO)
+	@$(ECHO)  DateStr.............. $(DATESTR)
+	@$(ECHO)  ZipName.............. $(ZIPNAME)
+	@$(ECHO)  ZipPrefix............ $(ZIPPREFIX)
+	@$(ECHO)  ZipCrossPrefix....... $(ZIPCROSSPREFIX)
+	@$(ECHO)  ZipSuffix............ $(ZIPSUFFIX)
+	@$(ECHO)  FullZipName.......... $(FULLZIPNAME)
+	@$(ECHO)  Install FPC Package.. $(INSTALL_FPCPACKAGE)
+	@$(ECHO)
+	@$(ECHO)  Install base dir..... $(INSTALL_BASEDIR)
+	@$(ECHO)  Install binary dir... $(INSTALL_BINDIR)
+	@$(ECHO)  Install library dir.. $(INSTALL_LIBDIR)
+	@$(ECHO)  Install units dir.... $(INSTALL_UNITDIR)
+	@$(ECHO)  Install source dir... $(INSTALL_SOURCEDIR)
+	@$(ECHO)  Install doc dir...... $(INSTALL_DOCDIR)
+	@$(ECHO)  Install example dir.. $(INSTALL_EXAMPLEDIR)
+	@$(ECHO)  Install data dir..... $(INSTALL_DATADIR)
+	@$(ECHO)
+	@$(ECHO)  Dist destination dir. $(DIST_DESTDIR)
+	@$(ECHO)  Dist zip name........ $(DIST_ZIPNAME)
+	@$(ECHO)
+.PHONY: fpc_info
+fpc_info: $(INFORULES)
+.PHONY: fpc_makefile fpc_makefiles fpc_makefile_sub1 fpc_makefile_sub2 \
+	fpc_makefile_dirs
+fpc_makefile:
+	$(FPCMAKE) -w -T$(OS_TARGET) Makefile.fpc
+fpc_makefile_sub1:
+ifdef TARGET_DIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_DIRS))
+endif
+ifdef TARGET_EXAMPLEDIRS
+	$(FPCMAKE) -w -T$(OS_TARGET) $(addsuffix /Makefile.fpc,$(TARGET_EXAMPLEDIRS))
+endif
+fpc_makefile_sub2: $(addsuffix _makefile_dirs,$(TARGET_DIRS) $(TARGET_EXAMPLEDIRS))
+fpc_makefile_dirs: fpc_makefile_sub1 fpc_makefile_sub2
+fpc_makefiles: fpc_makefile fpc_makefile_dirs
+ifndef BIN2S
+BIN2S:=$(strip $(wildcard $(addsuffix /bin2s$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(BIN2S),)
+BIN2S= __missing_command_BIN2S
+else
+BIN2S:=$(firstword $(BIN2S))
+endif
+endif
+export BIN2S
+ifndef MMUTIL
+MMUTIL:=$(strip $(wildcard $(addsuffix /mmutil$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MMUTIL),)
+MMUTIL= __missing_command_MMUTIL
+else
+MMUTIL:=$(firstword $(MMUTIL))
+endif
+endif
+export MMUTIL
+ifndef GRIT
+GRIT:=$(strip $(wildcard $(addsuffix /grit$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(GRIT),)
+GRIT= __missing_command_GRIT
+else
+GRIT:=$(firstword $(GRIT))
+endif
+endif
+export GRIT
+ifndef RMDIR
+RMDIR:=$(strip $(wildcard $(addsuffix /rmdir$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(RMDIR),)
+RMDIR= __missing_command_RMDIR
+else
+RMDIR:=$(firstword $(RMDIR))
+endif
+endif
+export RMDIR
+ifndef MV
+MV:=$(strip $(wildcard $(addsuffix /mv$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(MV),)
+MV= __missing_command_MV
+else
+MV:=$(firstword $(MV))
+endif
+endif
+export MV
+ifndef FPCMAKE
+FPCMAKE:=$(strip $(wildcard $(addsuffix /fpcmake$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(FPCMAKE),)
+FPCMAKE= __missing_command_FPCMAKE
+else
+FPCMAKE:=$(firstword $(FPCMAKE))
+endif
+endif
+export FPCMAKE
+ifndef NDSTOOL
+NDSTOOL:=$(strip $(wildcard $(addsuffix /ndstool$(SRCEXEEXT),$(SEARCHPATH))))
+ifeq ($(NDSTOOL),)
+NDSTOOL= __missing_command_NDSTOOL
+else
+NDSTOOL:=$(firstword $(NDSTOOL))
+endif
+endif
+export NDSTOOL
+debug: fpc_debug
+smart: fpc_smart
+release: fpc_release
+units: fpc_units
+examples:
+shared: fpc_shared
+install: fpc_install
+sourceinstall: fpc_sourceinstall
+exampleinstall: fpc_exampleinstall
+distinstall:
+zipinstall:
+zipsourceinstall:
+zipexampleinstall:
+zipdistinstall:
+distclean: fpc_distclean
+cleanall: fpc_cleanall
+info: fpc_info
+makefiles: fpc_makefiles
+.PHONY: debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall distclean cleanall info makefiles
+ifneq ($(wildcard fpcmake.loc),)
+include fpcmake.loc
+endif
+.NOTPARALLEL:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+fpcm:
+	@$(FPCMAKE) -r -w -Tnds 
+dir_delete:
+	@$(DELTREE) $(CURDIR)/$(BUILD) 
+	@$(DELTREE) $(CURDIR)/$(INC) 
+	@$(DELTREE) $(CURDIR)/$(BIN) 
+dir_make:
+ifneq ($(BUILD), $(CURDIR))
+	@$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+	@$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+	@$(MKDIR) $(BIN)
+endif
+soundbank.bin.o : $(AUDIO_FILES)
+	@$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
+	$(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
+	$(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
+$(GFX_FILES): $(wildcard %.bmp %.png)
+	@echo 'Converting $(@) file to asm...'
+	$(GRIT) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+	@echo 'Assembling $(@).s file...'
+	$(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+	$(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+	@echo 'Done!'
+$(BIN_FILES): $(wildcard %.*)
+	@echo 'Converting $(@) file to asm...'
+	@$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+	@echo 'Creating $(@).inc include file...'
+	@echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+	@echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+	@echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+	@echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+	@echo 'Assembling $(@).s file...'
+	@$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+	@echo 'Done!'
+data.gbfs.o:
+	@cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+	$(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+	$(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 124 - 0
packages/libndsfpc/examples/audio/maxmod/streaming/Makefile.fpc

@@ -0,0 +1,124 @@
+#
+#   Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples
+#
+
+[target]
+loaders=
+programs=streaming
+
+[require]
+packages=libndsfpc
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
+nortl=y
+
+[install]
+fpcpackage=y
+
+[default]
+cpu=arm
+target=nds
+fpcdir=../../../../../..
+
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
+[clean]
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
+units=*
+
+
+[prerules]
+BIN = bin
+BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
+
+[rules]
+.NOTPARALLEL:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
+ifneq ($(BUILD), $(CURDIR))
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
+soundbank.bin.o : $(AUDIO_FILES)
+        @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
+        $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
+        $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
+
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 130 - 0
packages/libndsfpc/examples/audio/maxmod/streaming/streaming.pp

@@ -0,0 +1,130 @@
+program Streaming;
+
+{$mode objfpc}
+
+uses
+  ctypes, nds9, maxmod9;
+  
+
+var
+  sine: cint;  // sine position
+  lfo: cint;   // LFO position
+
+const
+  // waveform base frequency
+  sine_freq = 500;
+  
+  // LFO frequency
+  lfo_freq = 3;
+  
+  // LFO output shift amount
+  lfo_shift = 4;
+  
+  // blue backdrop
+  bg_colour = 13 shl 10;
+  
+  // red cpu usage
+  cpu_colour = 31;
+
+
+function on_stream_request(aLength: mm_word; aDest: mm_addr; aFormat: mm_stream_formats): mm_word; 
+var
+  target: pcint16;
+  len: cint;
+  sample: cint;
+begin	
+	target := aDest;
+	
+	//------------------------------------------------------------
+	// synthensize a sine wave with an LFO applied to the pitch
+	// the stereo data is interleaved
+	//------------------------------------------------------------
+	len := aLength;
+  while len <> 0 do
+  begin
+		sample := sinLerp(sine);
+		
+		// output sample for left
+		target^ := sample;
+		inc(target);
+   
+		// output inverted sample for right
+		target^ := -sample;
+		inc(target);
+   
+		sine := sine + sine_freq + (sinLerp(lfo) shr lfo_shift);
+		lfo := (lfo + lfo_freq);
+  
+    dec(len);
+  end;
+	
+	result := aLength;
+end;
+
+var
+  sys: mm_ds_system;
+  mystream: mm_stream;
+begin	
+
+	//----------------------------------------------------------------
+	// print out some stuff
+	//----------------------------------------------------------------
+	consoleDemoInit();
+	iprintf( #10'    Maxmod Streaming Example   '#10);
+
+	//----------------------------------------------------------------
+	// initialize maxmod without any soundbank (unusual setup)
+	//----------------------------------------------------------------
+	sys.mod_count 			:= 0;
+	sys.samp_count			:= 0;
+	sys.mem_bank			:= nil;
+	sys.fifo_channel		:= FIFO_MAXMOD;
+	mmInit( @sys );
+	
+	//----------------------------------------------------------------
+	// open stream
+	//----------------------------------------------------------------
+	
+	mystream.sampling_rate	:= 25000;					// sampling rate = 25khz
+	mystream.buffer_length	:= 1200;						// buffer length = 1200 samples
+	mystream.callback		:= @on_stream_request;		// set callback function
+	mystream.format			:= MM_STREAM_16BIT_STEREO;	// format = stereo 16-bit
+	mystream.timer			:= MM_TIMER0;				// use hardware timer 0
+	mystream.manual			:= 1;						// use manual filling
+	mmStreamOpen( @mystream );
+		
+	//----------------------------------------------------------------
+	// when using 'automatic' filling, your callback will be triggered
+	// every time half of the wave buffer is processed.
+	//
+	// so: 
+	// 25000 (rate)
+	// ----- = ~21 Hz for a full pass, and ~42hz for half pass
+	// 1200  (length)
+	//----------------------------------------------------------------
+	// with 'manual' filling, you must call mmStreamUpdate
+	// periodically (and often enough to avoid buffer underruns)
+	//----------------------------------------------------------------
+	
+	SetYtrigger( 0 );
+	irqEnable( IRQ_VCOUNT );
+	
+	while true do
+	begin
+		// wait until line 0
+		swiIntrWait( 0, IRQ_VCOUNT);
+		
+		// update stream
+		mmStreamUpdate();
+		
+		// restore backdrop (some lines were drawn with another colour to show cpu usage)
+		BG_PALETTE_SUB[0] := bg_colour;
+		
+		// wait until next frame
+		swiWaitForVBlank();
+		
+		// set backdrop to show cpu usage
+		BG_PALETTE_SUB[0] := cpu_colour;
+	end;
+		
+end.

+ 68 - 12
packages/libndsfpc/examples/audio/micrecord/Makefile.fpc

@@ -8,14 +8,16 @@ programs=micrecord
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,81 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'

+ 69 - 12
packages/libndsfpc/examples/card/eeprom/Makefile.fpc

@@ -8,14 +8,16 @@ programs=eeprom
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,82 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+

+ 68 - 12
packages/libndsfpc/examples/debugging/exceptionTest/Makefile.fpc

@@ -8,14 +8,16 @@ programs=exceptionTest
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,81 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'

+ 68 - 12
packages/libndsfpc/examples/ds_motion/Makefile.fpc

@@ -8,14 +8,16 @@ programs=dsMotion
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,81 @@ target=nds
 fpcdir=../../../..
 fpcdir=../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'

+ 68 - 12
packages/libndsfpc/examples/dswifi/ap_search/Makefile.fpc

@@ -8,14 +8,16 @@ programs=apSearch
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,81 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'

+ 68 - 12
packages/libndsfpc/examples/dswifi/autoconnect/Makefile.fpc

@@ -8,14 +8,16 @@ programs=autoconnect
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,81 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'

+ 68 - 12
packages/libndsfpc/examples/dswifi/httpget/Makefile.fpc

@@ -8,14 +8,16 @@ programs=httpget
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD) 
 
 
 [default]
 [default]
 cpu=arm
 cpu=arm
@@ -23,27 +25,81 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'

+ 28 - 14
packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile.fpc

@@ -8,9 +8,10 @@ programs=embedded_gbfs
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
+
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
@@ -21,26 +22,34 @@ fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
 options=-Xm
 options=-Xm
-#-d__THUMB__
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*)))
 GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +57,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +69,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +84,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,12 +97,12 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'

+ 29 - 22
packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile.fpc

@@ -8,9 +8,10 @@ programs=access_dir
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
+
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
@@ -20,26 +21,34 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +56,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +68,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +83,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,21 +96,14 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
-#
-# GBFS files processing rule
-#
-data.gbfs.o:
-        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
-        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
-        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 

+ 28 - 22
packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile.fpc

@@ -8,7 +8,7 @@ programs=access_file
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,34 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +55,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +67,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +82,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,21 +95,14 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
-#
-# GBFS files processing rule
-#
-data.gbfs.o:
-        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
-        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
-        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 

+ 28 - 22
packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile.fpc

@@ -8,7 +8,7 @@ programs=libfatdir
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv fpcmake
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,34 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +55,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +67,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +82,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,21 +95,14 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
-#
-# GBFS files processing rule
-#
-data.gbfs.o:
-        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
-        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
-        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 

+ 35 - 18
packages/libndsfpc/examples/filesystem/nitrofs/nitrodir/Makefile.fpc

@@ -8,7 +8,7 @@ programs=nitrodir
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all nitro
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all nitro
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MOVE) /Y $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,16 +98,17 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -101,8 +118,8 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c nitrodir.nds -9 nitrodir.nef.bin -d $(CURDIR)/nitrofiles
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 

+ 34 - 19
packages/libndsfpc/examples/gl2d/2Dplus3D/Makefile.fpc

@@ -8,7 +8,7 @@ programs=2Dplus3D
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,36 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm -O2 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp) $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +57,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +69,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +84,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.bmp) $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,16 +97,17 @@ $(GFX_FILES): $(wildcard %.bmp) $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -102,10 +117,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 34 - 19
packages/libndsfpc/examples/gl2d/dual_screen/Makefile.fpc

@@ -8,7 +8,7 @@ programs=dual_screen
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,36 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm -O2 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +57,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +69,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +84,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.bmp) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,16 +97,17 @@ $(GFX_FILES): $(wildcard %.bmp)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -102,10 +117,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 35 - 19
packages/libndsfpc/examples/gl2d/fonts/Makefile.fpc

@@ -8,7 +8,7 @@ programs=fonts
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,37 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm -O2 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.bmp) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,16 +98,17 @@ $(GFX_FILES): $(wildcard %.bmp)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -102,10 +118,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 35 - 19
packages/libndsfpc/examples/gl2d/primitives/Makefile.fpc

@@ -8,7 +8,7 @@ programs=primitives
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,37 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm -O2 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,16 +98,17 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -102,10 +118,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 35 - 19
packages/libndsfpc/examples/gl2d/scrolling/Makefile.fpc

@@ -8,7 +8,7 @@ programs=scrolling
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,37 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm -O2 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.bmp) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,16 +98,17 @@ $(GFX_FILES): $(wildcard %.bmp)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -102,10 +118,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 35 - 19
packages/libndsfpc/examples/gl2d/sprites/Makefile.fpc

@@ -8,7 +8,7 @@ programs=sprites
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,37 @@ target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm -O2 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp) $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.bmp) $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,16 +98,17 @@ $(GFX_FILES): $(wildcard %.bmp) $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -102,10 +118,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 45 - 13
packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile.fpc

@@ -8,7 +8,7 @@ programs=3DBothScreens
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,25 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  #-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -46,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -57,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -69,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -81,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 13
packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile.fpc

@@ -8,7 +8,7 @@ programs=BoxTest
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,25 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  #-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -46,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -57,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -69,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -81,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Display_List/Makefile.fpc

@@ -8,7 +8,7 @@ programs=DisplayList
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile.fpc

@@ -8,7 +8,7 @@ programs=DisplayList2
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile.fpc

@@ -8,7 +8,7 @@ programs=EnvMapping
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile.fpc

@@ -8,7 +8,7 @@ programs=MixedText3D
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Ortho/Makefile.fpc

@@ -8,7 +8,7 @@ programs=Ortho
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile.fpc

@@ -8,7 +8,7 @@ programs=PalettedCube
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Picking/Makefile.fpc

@@ -8,7 +8,7 @@ programs=Picking
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile.fpc

@@ -8,7 +8,7 @@ programs=SimpleQuad
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile.fpc

@@ -8,7 +8,7 @@ programs=SimpleTri
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile.fpc

@@ -8,7 +8,7 @@ programs=TexturedCube
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile.fpc

@@ -8,7 +8,7 @@ programs=TexturedQuad
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile.fpc

@@ -8,7 +8,7 @@ programs=ToonShading
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson01
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson02
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson03
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson04
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson05
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson06
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson07
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson08
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson09
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson10
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson10b
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile.fpc

@@ -8,7 +8,7 @@ programs=lesson11
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../../..
 fpcdir=../../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 46 - 14
packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile.fpc

@@ -8,9 +8,10 @@ programs=16bitColorBmp
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
+
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
@@ -20,26 +21,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +59,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +71,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +86,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +99,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile.fpc

@@ -8,7 +8,7 @@ programs=256ColorBmp
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile.fpc

@@ -8,7 +8,7 @@ programs=DoubleBuffer
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 44 - 15
packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile.fpc

@@ -8,7 +8,7 @@ programs=BackgroundAllInOne
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm -O2
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
-AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
 ASM_FILES = $(foreach dir,asm,$(notdir $(wildcard $(dir)/*.s)))
 ASM_FILES = $(foreach dir,asm,$(notdir $(wildcard $(dir)/*.s)))
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) $(ASM_FILES) fpc_all
 all: dir_make $(BIN_FILES) $(GFX_FILES) $(ASM_FILES) fpc_all
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) $(ASM_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -71,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -83,17 +98,31 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
 
 
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
+
 #
 #
 # ASM files processing rule
 # ASM files processing rule
 #
 #

+ 45 - 14
packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile.fpc

@@ -8,7 +8,7 @@ programs=Rotation
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Effects/windows/Makefile.fpc

@@ -8,7 +8,7 @@ programs=windows
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 37 - 8
packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/Makefile.fpc

@@ -8,7 +8,7 @@ programs=backgrounds
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir mv
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,27 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
 DATA = data
 DATA = data
+FILESYSTEM = filesystem
 GFX = gfx
 GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES =   $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
-BIN_FILES =   $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -73,10 +87,10 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 $(GFX_FILES): $(wildcard %.bmp %.png)
 $(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
-        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc         
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -93,3 +107,18 @@ $(BIN_FILES): $(wildcard %.*)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 0 - 35
packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/inc/devkitlogo.inc

@@ -1,35 +0,0 @@
-
-{%REGION devkitlogo}
-
-//======================================================================
-//
-//	devkitlogo, 256x192@8, 
-//	+ palette 256 entries, not compressed
-//	+ 180 tiles (t|f reduced) not compressed
-//	+ regular map (flat), not compressed, 32x24 
-//	Total size: 512 + 11520 + 1536 = 13568
-//
-//	Time-stamp: 2014-08-04, 20:56:23
-//	Exported by Cearn's GBA Image Transmogrifier, v0.8.10
-//	( http://www.coranac.com/projects/#grit )
-//
-//======================================================================
-
-{$IFNDEF GRIT_DEVKITLOGO_INC}
-{$DEFINE GRIT_DEVKITLOGO_INC}
-
-const devkitlogoTilesLen = 11520;
-      devkitlogoTilesMax = 2880;
-var devkitlogoTiles: array [0..0] of cuint32; cvar; external;
-
-const devkitlogoMapLen = 1536;
-      devkitlogoMapMax = 768;
-var devkitlogoMap: array [0..0] of cuint16; cvar; external;
-
-const devkitlogoPalLen = 512;
-      devkitlogoPalMax = 256;
-var devkitlogoPal: array [0..0] of cuint16; cvar; external;
-
-{$ENDIF GRIT_DEVKITLOGO_INC}
-
-{%ENDREGION devkitlogo}

+ 0 - 35
packages/libndsfpc/examples/graphics/Ext_Palettes/backgrounds/inc/drunkenlogo.inc

@@ -1,35 +0,0 @@
-
-{%REGION drunkenlogo}
-
-//======================================================================
-//
-//	drunkenlogo, 256x192@8, 
-//	+ palette 256 entries, not compressed
-//	+ 547 tiles (t|f reduced) not compressed
-//	+ regular map (flat), not compressed, 32x24 
-//	Total size: 512 + 35008 + 1536 = 37056
-//
-//	Time-stamp: 2014-08-04, 20:56:22
-//	Exported by Cearn's GBA Image Transmogrifier, v0.8.10
-//	( http://www.coranac.com/projects/#grit )
-//
-//======================================================================
-
-{$IFNDEF GRIT_DRUNKENLOGO_INC}
-{$DEFINE GRIT_DRUNKENLOGO_INC}
-
-const drunkenlogoTilesLen = 35008;
-      drunkenlogoTilesMax = 8752;
-var drunkenlogoTiles: array [0..0] of cuint32; cvar; external;
-
-const drunkenlogoMapLen = 1536;
-      drunkenlogoMapMax = 768;
-var drunkenlogoMap: array [0..0] of cuint16; cvar; external;
-
-const drunkenlogoPalLen = 512;
-      drunkenlogoPalMax = 256;
-var drunkenlogoPal: array [0..0] of cuint16; cvar; external;
-
-{$ENDIF GRIT_DRUNKENLOGO_INC}
-
-{%ENDREGION drunkenlogo}

+ 45 - 14
packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile.fpc

@@ -8,7 +8,7 @@ programs=AnsiConsole
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile.fpc

@@ -8,7 +8,7 @@ programs=ConsoleWindows
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile.fpc

@@ -8,7 +8,7 @@ programs=CustomFont
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile.fpc

@@ -8,7 +8,7 @@ programs=printBothScreens
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile.fpc

@@ -8,7 +8,7 @@ programs=RotscaleText
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.bmp)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile.fpc

@@ -8,7 +8,7 @@ programs=AllocationTest
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  -O2
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 46 - 15
packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile.fpc

@@ -8,7 +8,7 @@ programs=AnimateSimple
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  -O2
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = sprites
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-SPRITE_FILES = $(foreach dir,sprites,$(notdir $(wildcard $(dir)/*.png)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(SPRITE_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(SPRITE_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(SPRITE_FILES): $(wildcard %.png)
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) sprites/$(@) -fts -ff sprites/sprite.grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(SPRITE_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 46 - 15
packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile.fpc

@@ -8,7 +8,7 @@ programs=BitmapSprites
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  -O2
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-SPRITE_FILES = $(foreach dir,sprites,$(notdir $(wildcard $(dir)/*.png)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(SPRITE_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(SPRITE_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(SPRITE_FILES): $(wildcard %.png)
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) sprites/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(SPRITE_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile.fpc

@@ -8,7 +8,7 @@ programs=FireAndSprites
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm  -O2
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Sprites/simple/Makefile.fpc

@@ -8,7 +8,7 @@ programs=Simple
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile.fpc

@@ -8,7 +8,7 @@ programs=SpriteExtendedPalettes
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 14
packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile.fpc

@@ -8,7 +8,7 @@ programs=SpriteRotate
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,26 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-g -Xm 
-#-d__THUMB__
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -47,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -58,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -70,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -82,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 38 - 23
packages/libndsfpc/examples/hello_world/Makefile.fpc

@@ -8,39 +8,49 @@ programs=helloWorld
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir ndstool
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../..
 fpcdir=../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
-NITRO_FILES = $(foreach dir,nitrofiles,$(notdir $(wildcard $(dir)/*)))
-
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
-all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -48,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -59,7 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
-
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -72,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.bmp) $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -84,16 +98,17 @@ $(GFX_FILES): $(wildcard %.bmp) $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
 
 
+
 #
 #
 # GBFS files processing rule
 # GBFS files processing rule
 #
 #
@@ -103,10 +118,10 @@ data.gbfs.o:
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
         $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
 
 
 #
 #
-# Binary files processing rule
+# Nitro Filesystem processing rule
 # 
 # 
-nitro: 
-	@ndstool -c $(TARGET_PROGRAMS).nds -9 $(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/filesystem
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)
 
 
 patch:
 patch:
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds
 	@dlditool r4tf.dldi $(TARGET_PROGRAMS).nds

+ 89 - 14
packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile.fpc

@@ -8,42 +8,117 @@ programs=touchArea
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 45 - 13
packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile.fpc

@@ -8,7 +8,7 @@ programs=touchLook
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
@@ -20,25 +20,37 @@ target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
 [compiler]
 [compiler]
-options=-Xm 
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
 
 
 [clean]
 [clean]
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
 files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
@@ -46,7 +58,8 @@ all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all
 dir_delete:
 dir_delete:
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(BUILD) 
         @$(DELTREE) $(CURDIR)/$(INC) 
         @$(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
@@ -57,6 +70,9 @@ endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
         @$(MKDIR) $(INC)
         @$(MKDIR) $(INC)
 endif
 endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
+endif
 
 
 #
 #
 # Audio files processing rule
 # Audio files processing rule
@@ -69,11 +85,12 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
+$(GFX_FILES): $(wildcard %.bmp %.png)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
         @echo 'Done!'
         @echo 'Done!'
 
 
 #
 #
@@ -81,12 +98,27 @@ $(GFX_FILES): $(wildcard %.png)
 # 
 # 
 $(BIN_FILES): $(wildcard %.*)
 $(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 56 - 21
packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile.fpc

@@ -8,54 +8,70 @@ programs=touchTest
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit rmdir
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
        $(BUILD)/* \
        $(BUILD)/* \
-       $(INC)/*
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
 INC = inc
 INC = inc
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
 AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
-BIN_FILES = $(foreach dir,data,$(notdir $(wildcard $(dir)/*.bin)))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
 clean: dir_delete fpc_clean fpc_cleanall
 clean: dir_delete fpc_clean fpc_cleanall
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
 all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
 
 
 #
 #
 # Delete temp directories
 # Delete temp directories
 #
 #
 dir_delete:
 dir_delete:
-        $(DELTREE) $(CURDIR)/$(BUILD) 
-        $(DELTREE) $(CURDIR)/$(INC) 
-        
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
 #
 #
 # Create temp directories
 # Create temp directories
 #
 #
 dir_make:
 dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
 endif
 endif
 ifneq ($(INC), $(CURDIR))
 ifneq ($(INC), $(CURDIR))
-        $(MKDIR) $(INC)
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
 
 
 #
 #
@@ -69,21 +85,40 @@ soundbank.bin.o : $(AUDIO_FILES)
 #
 #
 # Png files processing rule
 # Png files processing rule
 #
 #
-$(GFX_FILES): $(wildcard %.png) 
-        $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@)
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
         $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
 
 
 #
 #
 # Binary files processing rule
 # Binary files processing rule
 # 
 # 
-$(BIN_FILES): $(wildcard %.bin)
+$(BIN_FILES): $(wildcard %.*)
         @echo 'Converting $(@) file to asm...'
         @echo 'Converting $(@) file to asm...'
-        @$(BIN2S) data/$(@) > $(BUILD)/$(@).s
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
         @echo 'Creating $(@).inc include file...'
         @echo 'Creating $(@).inc include file...'
-        @echo "var" > `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
-        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "inc/"$(@F) | tr . .)`.inc
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
         @echo 'Assembling $(@).s file...'
         @echo 'Assembling $(@).s file...'
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
         @echo 'Done!'
         @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 89 - 14
packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile.fpc

@@ -8,42 +8,117 @@ programs=keyboardAsync
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 89 - 14
packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile.fpc

@@ -8,42 +8,117 @@ programs=keyboardStdin
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../../..
 fpcdir=../../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 89 - 14
packages/libndsfpc/examples/time/RealTimeClock/Makefile.fpc

@@ -8,42 +8,117 @@ programs=RealTimeClock
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

+ 89 - 14
packages/libndsfpc/examples/time/stopwatch/Makefile.fpc

@@ -8,42 +8,117 @@ programs=stopwatch
 
 
 [require]
 [require]
 packages=libndsfpc
 packages=libndsfpc
-tools=bin2s mmutil grit
+tools=bin2s mmutil grit_fpc rmdir mv ndstool
 nortl=y
 nortl=y
 
 
 [install]
 [install]
 fpcpackage=y
 fpcpackage=y
 
 
-[compiler]
-options=-Xm 
-
 [default]
 [default]
 cpu=arm
 cpu=arm
 target=nds
 target=nds
 fpcdir=../../../../..
 fpcdir=../../../../..
 
 
+[compiler]
+options=-Xm
+targetdir=$(BIN)  
+unittargetdir=$(BUILD)
+
 [clean]
 [clean]
-files=*.elf *.o *.s *.nds *.nef *.h *.bin \
-       $(BUILD)/*
+files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \
+       $(BUILD)/* \
+       $(INC)/* \
+       $(BIN)/*
 units=*
 units=*
 
 
+
 [prerules]
 [prerules]
+BIN = bin
 BUILD = build
 BUILD = build
-AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir))
-GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
+DATA = data
+FILESYSTEM = filesystem
+GFX = gfx
+INC = inc
+AUDIO_FILES = $(foreach dir, $(notdir $(wildcard audio/*.*)), $(CURDIR)/audio/$(dir))
+GFX_FILES   = $(foreach dir, $(GFX), $(notdir $(wildcard $(dir)/*.bmp $(dir)/*.png)))
+BIN_FILES   = $(foreach dir, $(DATA), $(notdir $(wildcard $(dir)/*)))
+GBFS_FILES  = $(foreach dir, GBFS, $(notdir $(wildcard $(dir)/*)))
 
 
 [rules]
 [rules]
 .NOTPARALLEL:
 .NOTPARALLEL:
-all: direc fpc_all 
-direc:
+clean: dir_delete fpc_clean fpc_cleanall
+all: dir_make $(BIN_FILES) $(GFX_FILES) fpc_all 
+filesystem: all make_filesystem
+
+
+
+#
+# Delete temp directories
+#
+dir_delete:
+        @$(DELTREE) $(CURDIR)/$(BUILD) 
+        @$(DELTREE) $(CURDIR)/$(INC) 
+        @$(DELTREE) $(CURDIR)/$(BIN) 
+                
+#
+# Create temp directories
+#
+dir_make:
 ifneq ($(BUILD), $(CURDIR))
 ifneq ($(BUILD), $(CURDIR))
-        $(MKDIR) $(BUILD)
+        @$(MKDIR) $(BUILD)
+endif
+ifneq ($(INC), $(CURDIR))
+        @$(MKDIR) $(INC)
+endif
+ifneq ($(BIN), $(CURDIR))
+        @$(MKDIR) $(BIN)
 endif
 endif
+
+#
+# Audio files processing rule
+#
 soundbank.bin.o : $(AUDIO_FILES)
 soundbank.bin.o : $(AUDIO_FILES)
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         @$(MMUTIL) $^ -d -o$(BUILD)/soundbank.bin -h$(BUILD)/soundbank.h
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(BIN2S) $(BUILD)/soundbank.bin > $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
         $(AS) -o $(BUILD)/soundbank.bin.o $(BUILD)/soundbank.bin.s
 
 
-$(GFX_FILES).o: 
-        $(GRIT) gfx/$(GFX_FILES) -fts -ff gfx/$(basename $(GFX_FILES)).grit -o$(BUILD)/$(GFX_FILES)
-        $(AS) -o $(BUILD)/$(basename $(GFX_FILES)).o $(BUILD)/$(basename $(GFX_FILES)).s
+#
+# Png files processing rule
+#
+$(GFX_FILES): $(wildcard %.bmp %.png)
+        @echo 'Converting $(@) file to asm...'
+        $(GRIT_FPC) $(GFX)/$(@) -fp -fts -ff $(GFX)/$(basename $(@)).grit -o$(BUILD)/$(@)
+        @echo 'Assembling $(@).s file...'
+        $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s
+        $(MV) -f $(BUILD)/$(basename $(@)).inc $(INC)/$(basename $(@)).inc           
+        @echo 'Done!'
+
+#
+# Binary files processing rule
+# 
+$(BIN_FILES): $(wildcard %.*)
+        @echo 'Converting $(@) file to asm...'
+        @$(BIN2S) $(DATA)/$(@) > $(BUILD)/$(@).s
+        @echo 'Creating $(@).inc include file...'
+        @echo "var" > `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end: array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`": array [0..0] of cuint8; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo " " `(echo $(@F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size": cuint32; cvar; external;" >> `(echo "$(INC)/"$(@F) | tr . .)`.inc
+        @echo 'Assembling $(@).s file...'
+        @$(AS) -o $(BUILD)/$(@).o $(BUILD)/$(@).s
+        @echo 'Done!'
+
+
+#
+# GBFS files processing rule
+#
+data.gbfs.o:
+        @cd GBFS && gbfs ../$(BUILD)/data.gbfs $(GBFS_FILES)
+        $(BIN2S) $(BUILD)/data.gbfs > $(BUILD)/data.gbfs.s
+        $(AS) -o $(BUILD)/data.gbfs.o $(BUILD)/data.gbfs.s
+
+#
+# Nitro Filesystem processing rule
+# 
+make_filesystem:
+	@$(NDSTOOL) -c $(BIN)/$(TARGET_PROGRAMS).fs.nds -9 $(BIN)/$(TARGET_PROGRAMS).nef.bin -d $(CURDIR)/$(FILESYSTEM)

Some files were not shown because too many files changed in this diff