From f803d950d1e95ecefe2fbe8fac65331ddfbd264c Mon Sep 17 00:00:00 2001 From: Legolas Date: Sun, 31 May 2009 12:15:24 +0000 Subject: * updated nds/gba linker scripts and reverted some changes for 2.2.4a release - Removed unused/outdated stuff from libndsfpc + Added new examples for libndsfpc + Added working (I hope so...) makefile.fpc for all libndsfpc/libgbafpc examples git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@13217 3ad0048d-3df7-0310-abae-a5850022a9f2 --- packages/libndsfpc/Makefile | 667 ++- packages/libndsfpc/Makefile.fpc | 13 +- packages/libndsfpc/examples/Makefile | 1851 +++++++ packages/libndsfpc/examples/Makefile.fpc | 18 + packages/libndsfpc/examples/RealTimeClock/Makefile | 1437 +++++ .../libndsfpc/examples/RealTimeClock/Makefile.fpc | 18 + .../examples/RealTimeClock/Watch/Makefile | 1633 ++++++ .../examples/RealTimeClock/Watch/Makefile.fpc | 93 + .../examples/RealTimeClock/Watch/watch.pp | 120 + packages/libndsfpc/examples/audio/Makefile | 1483 +++++ packages/libndsfpc/examples/audio/Makefile.fpc | 18 + packages/libndsfpc/examples/audio/maxmod/Makefile | 1621 ++++++ .../libndsfpc/examples/audio/maxmod/Makefile.fpc | 18 + .../examples/audio/maxmod/audio_modes/Makefile | 1629 ++++++ .../examples/audio/maxmod/audio_modes/Makefile.fpc | 46 + .../maxmod/audio_modes/audio/keyg-subtonal.xm | Bin 0 -> 76499 bytes .../audio/purple_motion-inspiration.s3m | Bin 0 -> 14176 bytes .../audio/maxmod/audio_modes/audio/rez-monday.mod | Bin 0 -> 37000 bytes .../audio/maxmod/audio_modes/audio_modes.pp | 219 + .../examples/audio/maxmod/basic_sound/Makefile | 1632 ++++++ .../examples/audio/maxmod/basic_sound/Makefile.fpc | 49 + .../audio/maxmod/basic_sound/audio/Ambulance.wav | Bin 0 -> 15676 bytes .../audio/maxmod/basic_sound/audio/Boom.wav | Bin 0 -> 7344 bytes .../audio/maxmod/basic_sound/audio/FlatOutLies.mod | Bin 0 -> 158578 bytes .../audio/maxmod/basic_sound/basic_sound.pp | 99 + .../examples/audio/maxmod/reverb/Makefile | 1629 ++++++ .../examples/audio/maxmod/reverb/Makefile.fpc | 46 + .../maxmod/reverb/audio/tempest-zen_bowling.mod | Bin 0 -> 26292 bytes .../examples/audio/maxmod/reverb/reverb.pp | 161 + .../audio/maxmod/song_events_example/Makefile | 1652 ++++++ .../audio/maxmod/song_events_example/Makefile.fpc | 78 + .../audio/maxmod/song_events_example/gfx/ball.grit | 1 + .../audio/maxmod/song_events_example/gfx/ball.png | Bin 0 -> 1367 bytes .../maxmod/song_events_example/music/example.it | Bin 0 -> 21248 bytes .../song_events_example/song_events_example.pp | 120 + .../audio/maxmod/song_events_example2/Makefile | 1629 ++++++ .../audio/maxmod/song_events_example2/Makefile.fpc | 47 + .../maxmod/song_events_example2/audio/example2.it | Bin 0 -> 76646 bytes .../song_events_example2/song_events_example2.pp | 155 + .../libndsfpc/examples/audio/micrecord/Makefile | 1599 ++++++ .../examples/audio/micrecord/Makefile.fpc | 46 + .../examples/audio/micrecord/micrecord.pp | 94 + packages/libndsfpc/examples/card/Makefile | 1437 +++++ packages/libndsfpc/examples/card/Makefile.fpc | 18 + packages/libndsfpc/examples/card/eeprom/Makefile | 1599 ++++++ .../libndsfpc/examples/card/eeprom/Makefile.fpc | 46 + packages/libndsfpc/examples/card/eeprom/eeprom.pp | 94 + packages/libndsfpc/examples/debugging/Makefile | 1437 +++++ packages/libndsfpc/examples/debugging/Makefile.fpc | 18 + .../examples/debugging/exceptionTest/Makefile | 1599 ++++++ .../examples/debugging/exceptionTest/Makefile.fpc | 46 + .../debugging/exceptionTest/exceptionTest.pp | 25 + .../2D/16bit_color_bmp/data/drunkenlogo.git | 8 - .../2D/16bit_color_bmp/data/drunkenlogo.png | Bin 28528 -> 0 bytes .../devkitPro/Graphics/2D/16bit_color_bmp/main.pp | 83 - .../Graphics/2D/256_color_bmp/data/drunkenlogo.git | 5 - .../Graphics/2D/256_color_bmp/data/drunkenlogo.png | Bin 28875 -> 0 bytes .../devkitPro/Graphics/2D/256_color_bmp/main.pp | 78 - .../Graphics/2D/BG_Rotation/drunkenlogo.bin.o | Bin 66238 -> 0 bytes .../devkitPro/Graphics/2D/BG_Rotation/main.pp | 137 - .../Graphics/2D/BG_Rotation/palette.bin.o | Bin 1202 -> 0 bytes .../devkitPro/Graphics/2D/Complex_2D/data/ball.pcx | Bin 1855 -> 0 bytes .../devkitPro/Graphics/2D/Complex_2D/main.pp | 254 - .../devkitPro/Graphics/2D/Double_Buffer/main.pp | 95 - .../devkitPro/Graphics/2D/Sprite_Bitmap/main.pp | 140 - .../devkitPro/Graphics/2D/ansi_console/main.pp | 57 - .../Graphics/2D/custom_font/data/font.bmp | Bin 7222 -> 0 bytes .../Graphics/2D/custom_font/data/font.git | 5 - .../devkitPro/Graphics/2D/custom_font/main.pp | 69 - .../devkitPro/Graphics/2D/hello_world/main.pp | 54 - .../Graphics/2D/rotscale_text/data/font.bmp | Bin 7222 -> 0 bytes .../Graphics/2D/rotscale_text/data/font.git | 5 - .../devkitPro/Graphics/2D/rotscale_text/main.pp | 128 - .../devkitPro/Graphics/3D/Misc/BoxTest/main.pp | 248 - .../Graphics/3D/Misc/Display_List/main.pp | 118 - .../3D/Misc/Display_List_2/data/teapot.bin | Bin 53564 -> 0 bytes .../Graphics/3D/Misc/Display_List_2/main.pp | 84 - .../Graphics/3D/Misc/Env_Mapping/data/cafe.bin | Bin 32768 -> 0 bytes .../Graphics/3D/Misc/Env_Mapping/data/teapot.bin | Bin 37464 -> 0 bytes .../devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp | 144 - .../Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx | Bin 8984 -> 0 bytes .../devkitPro/Graphics/3D/Misc/Ortho/main.pp | 183 - .../Graphics/3D/Misc/Paletted_Cube/data.inc | 80 - .../3D/Misc/Paletted_Cube/data/texture.bin | 1 - .../Misc/Paletted_Cube/data/texture1_RGB16_pal.bin | 1 - .../Misc/Paletted_Cube/data/texture1_RGB16_tex.bin | Bin 8192 -> 0 bytes .../Misc/Paletted_Cube/data/texture2_RGB16_pal.bin | Bin 32 -> 0 bytes .../Misc/Paletted_Cube/data/texture2_RGB16_tex.bin | Bin 8192 -> 0 bytes .../Misc/Paletted_Cube/data/texture3_RGB16_pal.bin | Bin 32 -> 0 bytes .../Misc/Paletted_Cube/data/texture3_RGB16_tex.bin | Bin 8192 -> 0 bytes .../Misc/Paletted_Cube/data/texture4_RGB16_pal.bin | Bin 32 -> 0 bytes .../Misc/Paletted_Cube/data/texture4_RGB16_tex.bin | Bin 8192 -> 0 bytes .../Misc/Paletted_Cube/data/texture5_RGB16_pal.bin | 1 - .../Misc/Paletted_Cube/data/texture5_RGB16_tex.bin | Bin 8192 -> 0 bytes .../Misc/Paletted_Cube/data/texture6_RGB4_pal.bin | 1 - .../Misc/Paletted_Cube/data/texture6_RGB4_tex.bin | Bin 4096 -> 0 bytes .../Misc/Paletted_Cube/data/texture7_RGB4_pal.bin | 1 - .../Misc/Paletted_Cube/data/texture7_RGB4_tex.bin | Bin 4096 -> 0 bytes .../Paletted_Cube/data/texture8_RGB32_A3_pal.bin | Bin 64 -> 0 bytes .../Paletted_Cube/data/texture8_RGB32_A3_tex.bin | Bin 16384 -> 0 bytes .../Paletted_Cube/data/texture9_RGB32_A3_pal.bin | Bin 64 -> 0 bytes .../Paletted_Cube/data/texture9_RGB32_A3_tex.bin | Bin 16384 -> 0 bytes .../Graphics/3D/Misc/Paletted_Cube/main.pp | 307 -- .../Graphics/3D/Misc/Picking/data/cone.bin | Bin 1456 -> 0 bytes .../Graphics/3D/Misc/Picking/data/cylinder.bin | Bin 2432 -> 0 bytes .../Graphics/3D/Misc/Picking/data/sphere.bin | Bin 9176 -> 0 bytes .../devkitPro/Graphics/3D/Misc/Picking/main.pp | 219 - .../devkitPro/Graphics/3D/Misc/Simple_Quad/main.pp | 101 - .../devkitPro/Graphics/3D/Misc/Simple_Tri/main.pp | 98 - .../3D/Misc/Textured_Cube/data/texture.bin | 1 - .../Graphics/3D/Misc/Textured_Cube/main.pp | 196 - .../3D/Misc/Textured_Quad/data/texture.bin | 1 - .../Graphics/3D/Misc/Textured_Quad/main.pp | 130 - .../Graphics/3D/Misc/Toon_Shading/data/statue.bin | Bin 10720 -> 0 bytes .../Graphics/3D/Misc/Toon_Shading/main.pp | 133 - .../devkitPro/Graphics/3D/nehe/lesson01/main.pp | 81 - .../devkitPro/Graphics/3D/nehe/lesson02/main1.pp | 91 - .../devkitPro/Graphics/3D/nehe/lesson03/main.pp | 86 - .../devkitPro/Graphics/3D/nehe/lesson04/main.pp | 101 - .../devkitPro/Graphics/3D/nehe/lesson05/main.pp | 145 - .../Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o | Bin 9686 -> 0 bytes .../devkitPro/Graphics/3D/nehe/lesson06/main.pp | 164 - .../Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o | Bin 9686 -> 0 bytes .../devkitPro/Graphics/3D/nehe/lesson07/main.pp | 210 - .../Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o | Bin 9686 -> 0 bytes .../devkitPro/Graphics/3D/nehe/lesson08/main.pp | 206 - .../devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o | Bin 5145 -> 0 bytes .../devkitPro/Graphics/3D/nehe/lesson09/main.pp | 188 - .../Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o | Bin 9686 -> 0 bytes .../devkitPro/Graphics/3D/nehe/lesson11/main.pp | 195 - .../devkitPro/debugging/exceptionTest/main.pp | 29 - .../devkitPro/input/TouchTest/balldata.bin.o | Bin 1717 -> 0 bytes .../devkitPro/input/TouchTest/ballpalette.bin.o | Bin 1214 -> 0 bytes .../examples/devkitPro/input/TouchTest/main.pp | 174 - .../devkitPro/sound/SimpleSound/blaster.raw.o | Bin 5862 -> 0 bytes .../examples/devkitPro/sound/SimpleSound/ion.raw.o | Bin 20458 -> 0 bytes .../examples/devkitPro/sound/SimpleSound/main.pp | 89 - .../devkitPro/sound/SimpleSound/saberoff.raw.o | Bin 16885 -> 0 bytes packages/libndsfpc/examples/ds_motion/Makefile | 1599 ++++++ packages/libndsfpc/examples/ds_motion/Makefile.fpc | 46 + packages/libndsfpc/examples/ds_motion/dsMotion.pp | 59 + packages/libndsfpc/examples/dswifi/Makefile | 1529 ++++++ packages/libndsfpc/examples/dswifi/Makefile.fpc | 18 + .../libndsfpc/examples/dswifi/ap_search/Makefile | 1599 ++++++ .../examples/dswifi/ap_search/Makefile.fpc | 46 + .../examples/dswifi/ap_search/apSearch.pp | 127 + .../libndsfpc/examples/dswifi/autoconnect/Makefile | 1599 ++++++ .../examples/dswifi/autoconnect/Makefile.fpc | 46 + .../examples/dswifi/autoconnect/autoconnect.pp | 41 + .../libndsfpc/examples/dswifi/httpget/Makefile | 1599 ++++++ .../libndsfpc/examples/dswifi/httpget/Makefile.fpc | 46 + .../libndsfpc/examples/dswifi/httpget/httpget.pp | 73 + packages/libndsfpc/examples/dswifi/main7.pp | 183 - packages/libndsfpc/examples/dswifi/main9.pp | 202 - packages/libndsfpc/examples/filesystem/Makefile | 1483 +++++ .../libndsfpc/examples/filesystem/Makefile.fpc | 18 + .../examples/filesystem/embedded_gbfs/GBFS/Mud.pcx | Bin 0 -> 20064 bytes .../filesystem/embedded_gbfs/GBFS/World.txt | 160 + .../examples/filesystem/embedded_gbfs/Makefile | 1668 ++++++ .../examples/filesystem/embedded_gbfs/Makefile.fpc | 103 + .../filesystem/embedded_gbfs/embedded_gbfs.pp | 308 ++ .../libndsfpc/examples/filesystem/libfat/Makefile | 1483 +++++ .../examples/filesystem/libfat/Makefile.fpc | 18 + .../examples/filesystem/libfat/access_dir/Makefile | 1638 ++++++ .../filesystem/libfat/access_dir/Makefile.fpc | 103 + .../filesystem/libfat/access_dir/access_dir.pp | 45 + .../filesystem/libfat/access_file/Makefile | 1638 ++++++ .../filesystem/libfat/access_file/Makefile.fpc | 103 + .../filesystem/libfat/access_file/access_file.pp | 41 + .../filesystem/libfat/access_file/test1.txt | 2 + .../examples/filesystem/libfat/libfatdir/Makefile | 1638 ++++++ .../filesystem/libfat/libfatdir/Makefile.fpc | 103 + .../filesystem/libfat/libfatdir/libfatdir.pp | 48 + .../graphics/3D/3D_Both_Screens/3DBothScreens.pp | 195 + .../examples/graphics/3D/3D_Both_Screens/Makefile | 1633 ++++++ .../graphics/3D/3D_Both_Screens/Makefile.fpc | 92 + .../examples/graphics/3D/BoxTest/BoxTest.pp | 232 + .../examples/graphics/3D/BoxTest/Makefile | 1633 ++++++ .../examples/graphics/3D/BoxTest/Makefile.fpc | 92 + .../graphics/3D/Display_List/DisplayList.pp | 92 + .../examples/graphics/3D/Display_List/Makefile | 1633 ++++++ .../examples/graphics/3D/Display_List/Makefile.fpc | 93 + .../graphics/3D/Display_List_2/DisplayList2.pp | 73 + .../examples/graphics/3D/Display_List_2/Makefile | 1633 ++++++ .../graphics/3D/Display_List_2/Makefile.fpc | 93 + .../graphics/3D/Display_List_2/data/teapot.bin | Bin 0 -> 53564 bytes .../examples/graphics/3D/Env_Mapping/EnvMapping.pp | 126 + .../examples/graphics/3D/Env_Mapping/Makefile | 1633 ++++++ .../examples/graphics/3D/Env_Mapping/Makefile.fpc | 93 + .../examples/graphics/3D/Env_Mapping/data/cafe.bin | Bin 0 -> 32768 bytes .../graphics/3D/Env_Mapping/data/teapot.bin | Bin 0 -> 37464 bytes packages/libndsfpc/examples/graphics/3D/Makefile | 2081 +++++++ .../libndsfpc/examples/graphics/3D/Makefile.fpc | 19 + .../examples/graphics/3D/Mixed_Text_3D/Makefile | 1633 ++++++ .../graphics/3D/Mixed_Text_3D/Makefile.fpc | 93 + .../graphics/3D/Mixed_Text_3D/MixedText3D.pp | 110 + .../libndsfpc/examples/graphics/3D/Ortho/Makefile | 1633 ++++++ .../examples/graphics/3D/Ortho/Makefile.fpc | 93 + .../libndsfpc/examples/graphics/3D/Ortho/Ortho.pp | 167 + .../graphics/3D/Ortho/data/drunkenlogo.pcx | Bin 0 -> 8984 bytes .../examples/graphics/3D/Paletted_Cube/Makefile | 1633 ++++++ .../graphics/3D/Paletted_Cube/Makefile.fpc | 93 + .../graphics/3D/Paletted_Cube/PalettedCube.pp | 307 ++ .../graphics/3D/Paletted_Cube/data/texture.bin | 1 + .../3D/Paletted_Cube/data/texture1_RGB16_pal.bin | 1 + .../3D/Paletted_Cube/data/texture1_RGB16_tex.bin | Bin 0 -> 8192 bytes .../3D/Paletted_Cube/data/texture2_RGB16_pal.bin | Bin 0 -> 32 bytes .../3D/Paletted_Cube/data/texture2_RGB16_tex.bin | Bin 0 -> 8192 bytes .../3D/Paletted_Cube/data/texture3_RGB16_pal.bin | Bin 0 -> 32 bytes .../3D/Paletted_Cube/data/texture3_RGB16_tex.bin | Bin 0 -> 8192 bytes .../3D/Paletted_Cube/data/texture4_RGB16_pal.bin | Bin 0 -> 32 bytes .../3D/Paletted_Cube/data/texture4_RGB16_tex.bin | Bin 0 -> 8192 bytes .../3D/Paletted_Cube/data/texture5_RGB16_pal.bin | 1 + .../3D/Paletted_Cube/data/texture5_RGB16_tex.bin | Bin 0 -> 8192 bytes .../3D/Paletted_Cube/data/texture6_RGB4_pal.bin | 1 + .../3D/Paletted_Cube/data/texture6_RGB4_tex.bin | Bin 0 -> 4096 bytes .../3D/Paletted_Cube/data/texture7_RGB4_pal.bin | 1 + .../3D/Paletted_Cube/data/texture7_RGB4_tex.bin | Bin 0 -> 4096 bytes .../Paletted_Cube/data/texture8_RGB32_A3_pal.bin | Bin 0 -> 64 bytes .../Paletted_Cube/data/texture8_RGB32_A3_tex.bin | Bin 0 -> 16384 bytes .../Paletted_Cube/data/texture9_RGB32_A3_pal.bin | Bin 0 -> 64 bytes .../Paletted_Cube/data/texture9_RGB32_A3_tex.bin | Bin 0 -> 16384 bytes .../examples/graphics/3D/Picking/Makefile | 1633 ++++++ .../examples/graphics/3D/Picking/Makefile.fpc | 93 + .../examples/graphics/3D/Picking/Picking.pp | 174 + .../examples/graphics/3D/Picking/data/cone.bin | Bin 0 -> 1456 bytes .../examples/graphics/3D/Picking/data/cylinder.bin | Bin 0 -> 2432 bytes .../examples/graphics/3D/Picking/data/sphere.bin | Bin 0 -> 9176 bytes .../examples/graphics/3D/Simple_Quad/Makefile | 1633 ++++++ .../examples/graphics/3D/Simple_Quad/Makefile.fpc | 93 + .../examples/graphics/3D/Simple_Quad/SimpleQuad.pp | 90 + .../examples/graphics/3D/Simple_Tri/Makefile | 1633 ++++++ .../examples/graphics/3D/Simple_Tri/Makefile.fpc | 93 + .../examples/graphics/3D/Simple_Tri/SimpleTri.pp | 88 + .../examples/graphics/3D/Textured_Cube/Makefile | 1633 ++++++ .../graphics/3D/Textured_Cube/Makefile.fpc | 93 + .../graphics/3D/Textured_Cube/TexturedCube.pp | 185 + .../graphics/3D/Textured_Cube/data/texture.bin | 1 + .../examples/graphics/3D/Textured_Quad/Makefile | 1633 ++++++ .../graphics/3D/Textured_Quad/Makefile.fpc | 93 + .../graphics/3D/Textured_Quad/TexturedQuad.pp | 115 + .../graphics/3D/Textured_Quad/data/texture.bin | 1 + .../examples/graphics/3D/Toon_Shading/Makefile | 1633 ++++++ .../examples/graphics/3D/Toon_Shading/Makefile.fpc | 93 + .../graphics/3D/Toon_Shading/ToonShading.pp | 124 + .../graphics/3D/Toon_Shading/data/statue.bin | Bin 0 -> 10720 bytes .../libndsfpc/examples/graphics/3D/nehe/Makefile | 1943 +++++++ .../examples/graphics/3D/nehe/Makefile.fpc | 18 + .../examples/graphics/3D/nehe/lesson01/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson01/Makefile.fpc | 93 + .../examples/graphics/3D/nehe/lesson01/lesson01.pp | 71 + .../examples/graphics/3D/nehe/lesson02/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson02/Makefile.fpc | 93 + .../examples/graphics/3D/nehe/lesson02/lesson02.pp | 83 + .../examples/graphics/3D/nehe/lesson03/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson03/Makefile.fpc | 93 + .../examples/graphics/3D/nehe/lesson03/lesson03.pp | 80 + .../examples/graphics/3D/nehe/lesson04/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson04/Makefile.fpc | 93 + .../examples/graphics/3D/nehe/lesson04/lesson04.pp | 91 + .../examples/graphics/3D/nehe/lesson05/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson05/Makefile.fpc | 93 + .../examples/graphics/3D/nehe/lesson05/lesson05.pp | 135 + .../examples/graphics/3D/nehe/lesson06/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson06/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson06/data/drunkenlogo.pcx | Bin 0 -> 8984 bytes .../examples/graphics/3D/nehe/lesson06/lesson06.pp | 153 + .../examples/graphics/3D/nehe/lesson07/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson07/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson07/data/drunkenlogo.pcx | Bin 0 -> 8984 bytes .../examples/graphics/3D/nehe/lesson07/lesson07.pp | 195 + .../examples/graphics/3D/nehe/lesson08/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson08/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson08/data/drunkenlogo.pcx | Bin 0 -> 8984 bytes .../examples/graphics/3D/nehe/lesson08/lesson08.pp | 196 + .../examples/graphics/3D/nehe/lesson09/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson09/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson09/data/Star.pcx | Bin 0 -> 4464 bytes .../examples/graphics/3D/nehe/lesson09/lesson09.pp | 178 + .../examples/graphics/3D/nehe/lesson10/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson10/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson10/data/Mud.pcx | Bin 0 -> 20064 bytes .../graphics/3D/nehe/lesson10/data/World.txt | 160 + .../examples/graphics/3D/nehe/lesson10/lesson10.pp | 314 ++ .../examples/graphics/3D/nehe/lesson10b/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson10b/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson10b/data/Mud.pcx | Bin 0 -> 20064 bytes .../graphics/3D/nehe/lesson10b/data/World.txt | 160 + .../graphics/3D/nehe/lesson10b/lesson10b.pp | 287 + .../examples/graphics/3D/nehe/lesson11/Makefile | 1633 ++++++ .../graphics/3D/nehe/lesson11/Makefile.fpc | 93 + .../graphics/3D/nehe/lesson11/data/drunkenlogo.pcx | Bin 0 -> 8984 bytes .../examples/graphics/3D/nehe/lesson11/lesson11.pp | 194 + .../Backgrounds/16bit_color_bmp/16bitColorBmp.pp | 37 + .../graphics/Backgrounds/16bit_color_bmp/Makefile | 1633 ++++++ .../Backgrounds/16bit_color_bmp/Makefile.fpc | 93 + .../16bit_color_bmp/gfx/drunkenlogo.grit | 9 + .../16bit_color_bmp/gfx/drunkenlogo.png | Bin 0 -> 28528 bytes .../Backgrounds/256_color_bmp/256ColorBmp.pp | 40 + .../graphics/Backgrounds/256_color_bmp/Makefile | 1633 ++++++ .../Backgrounds/256_color_bmp/Makefile.fpc | 93 + .../Backgrounds/256_color_bmp/gfx/drunkenlogo.grit | 5 + .../Backgrounds/256_color_bmp/gfx/drunkenlogo.png | Bin 0 -> 28875 bytes .../Backgrounds/Double_Buffer/DoubleBuffer.pp | 59 + .../graphics/Backgrounds/Double_Buffer/Makefile | 1633 ++++++ .../Backgrounds/Double_Buffer/Makefile.fpc | 93 + .../examples/graphics/Backgrounds/Makefile | 1621 ++++++ .../examples/graphics/Backgrounds/Makefile.fpc | 18 + .../graphics/Backgrounds/all_in_one/Advanced.pp | 240 + .../Backgrounds/all_in_one/BackgroundAllInOne.pp | 164 + .../graphics/Backgrounds/all_in_one/Basic.pp | 527 ++ .../graphics/Backgrounds/all_in_one/Handmade.pp | 119 + .../graphics/Backgrounds/all_in_one/Makefile | 1638 ++++++ .../graphics/Backgrounds/all_in_one/Makefile.fpc | 103 + .../graphics/Backgrounds/all_in_one/Multilayer.pp | 76 + .../Backgrounds/all_in_one/RotBackgrounds.pp | 97 + .../graphics/Backgrounds/all_in_one/Scrolling.pp | 581 ++ .../Backgrounds/all_in_one/TextBackgrounds.pp | 129 + .../Backgrounds/all_in_one/asm/Multilayer.s | 1258 +++++ .../Backgrounds/all_in_one/asm/RotBackgrounds.s | 1921 +++++++ .../Backgrounds/all_in_one/asm/TextBackgrounds.s | 5649 ++++++++++++++++++++ .../graphics/Backgrounds/all_in_one/gfx/layers.pew | Bin 0 -> 765527 bytes .../graphics/Backgrounds/all_in_one/gfx/readme.txt | 6 + .../graphics/Backgrounds/all_in_one/gfx/tiles.png | Bin 0 -> 134674 bytes .../graphics/Backgrounds/rotation/Makefile | 1633 ++++++ .../graphics/Backgrounds/rotation/Makefile.fpc | 93 + .../graphics/Backgrounds/rotation/Rotation.pp | 89 + .../Backgrounds/rotation/data/drunkenlogo.bin | 866 +++ .../graphics/Backgrounds/rotation/data/palette.bin | Bin 0 -> 512 bytes packages/libndsfpc/examples/graphics/Makefile | 1575 ++++++ packages/libndsfpc/examples/graphics/Makefile.fpc | 18 + .../libndsfpc/examples/graphics/Printing/Makefile | 1621 ++++++ .../examples/graphics/Printing/Makefile.fpc | 18 + .../graphics/Printing/ansi_console/AnsiConsole.pp | 37 + .../graphics/Printing/ansi_console/Makefile | 1633 ++++++ .../graphics/Printing/ansi_console/Makefile.fpc | 93 + .../Printing/console_windows/ConsoleWindows.pp | 64 + .../graphics/Printing/console_windows/Makefile | 1633 ++++++ .../graphics/Printing/console_windows/Makefile.fpc | 93 + .../graphics/Printing/custom_font/CustomFont.pp | 44 + .../graphics/Printing/custom_font/Makefile | 1633 ++++++ .../graphics/Printing/custom_font/Makefile.fpc | 93 + .../graphics/Printing/custom_font/gfx/font.bmp | Bin 0 -> 3190 bytes .../graphics/Printing/custom_font/gfx/font.grit | 25 + .../graphics/Printing/print_both_screens/Makefile | 1633 ++++++ .../Printing/print_both_screens/Makefile.fpc | 93 + .../print_both_screens/printBothScreens.pp | 50 + .../graphics/Printing/rotscale_text/Makefile | 1633 ++++++ .../graphics/Printing/rotscale_text/Makefile.fpc | 93 + .../Printing/rotscale_text/RotscaleText.pp | 85 + .../graphics/Printing/rotscale_text/gfx/font.bmp | Bin 0 -> 7222 bytes .../graphics/Printing/rotscale_text/gfx/font.grit | 20 + .../libndsfpc/examples/graphics/Sprites/Makefile | 1713 ++++++ .../examples/graphics/Sprites/Makefile.fpc | 18 + .../Sprites/allocation_test/AllocationTest.pp | 243 + .../graphics/Sprites/allocation_test/Makefile | 1633 ++++++ .../graphics/Sprites/allocation_test/Makefile.fpc | 93 + .../Sprites/animate_simple/AnimateSimple.pp | 265 + .../graphics/Sprites/animate_simple/Makefile | 1633 ++++++ .../graphics/Sprites/animate_simple/Makefile.fpc | 93 + .../Sprites/animate_simple/sprites/man.png | Bin 0 -> 1589 bytes .../Sprites/animate_simple/sprites/sprite.grit | 5 + .../Sprites/animate_simple/sprites/woman.png | Bin 0 -> 2027 bytes .../Sprites/bitmap_sprites/BitmapSprites.pp | 124 + .../graphics/Sprites/bitmap_sprites/Makefile | 1633 ++++++ .../graphics/Sprites/bitmap_sprites/Makefile.fpc | 93 + .../Sprites/fire_and_sprites/FireAndSprites.pp | 233 + .../graphics/Sprites/fire_and_sprites/Makefile | 1633 ++++++ .../graphics/Sprites/fire_and_sprites/Makefile.fpc | 93 + .../Sprites/fire_and_sprites/data/ball.pcx | Bin 0 -> 1855 bytes .../examples/graphics/Sprites/simple/Makefile | 1633 ++++++ .../examples/graphics/Sprites/simple/Makefile.fpc | 93 + .../examples/graphics/Sprites/simple/Simple.pp | 80 + .../Sprites/sprite_extended_palettes/Makefile | 1633 ++++++ .../Sprites/sprite_extended_palettes/Makefile.fpc | 93 + .../SpriteExtendedPalettes.pp | 85 + .../graphics/Sprites/sprite_rotate/Makefile | 1633 ++++++ .../graphics/Sprites/sprite_rotate/Makefile.fpc | 93 + .../graphics/Sprites/sprite_rotate/SpriteRotate.pp | 82 + packages/libndsfpc/examples/hello_world/Makefile | 1599 ++++++ .../libndsfpc/examples/hello_world/Makefile.fpc | 46 + .../libndsfpc/examples/hello_world/helloWorld.pp | 36 + packages/libndsfpc/examples/input/Makefile | 1483 +++++ packages/libndsfpc/examples/input/Makefile.fpc | 18 + .../libndsfpc/examples/input/Touch_Pad/Makefile | 1529 ++++++ .../examples/input/Touch_Pad/Makefile.fpc | 18 + .../examples/input/Touch_Pad/touch_area/Makefile | 1599 ++++++ .../input/Touch_Pad/touch_area/Makefile.fpc | 46 + .../input/Touch_Pad/touch_area/touchArea.pp | 40 + .../examples/input/Touch_Pad/touch_look/Makefile | 1633 ++++++ .../input/Touch_Pad/touch_look/Makefile.fpc | 93 + .../input/Touch_Pad/touch_look/data/Mud.pcx | Bin 0 -> 20064 bytes .../input/Touch_Pad/touch_look/data/World.txt | 160 + .../input/Touch_Pad/touch_look/touchLook.pp | 308 ++ .../examples/input/Touch_Pad/touch_test/Makefile | 1630 ++++++ .../input/Touch_Pad/touch_test/Makefile.fpc | 90 + .../input/Touch_Pad/touch_test/data/balldata.bin | Bin 0 -> 1024 bytes .../Touch_Pad/touch_test/data/ballpalette.bin | Bin 0 -> 512 bytes .../input/Touch_Pad/touch_test/touchTest.pp | 143 + .../libndsfpc/examples/input/keyboard/Makefile | 1483 +++++ .../libndsfpc/examples/input/keyboard/Makefile.fpc | 18 + .../input/keyboard/keyboard_async/Makefile | 1599 ++++++ .../input/keyboard/keyboard_async/Makefile.fpc | 46 + .../input/keyboard/keyboard_async/keyboardAsync.pp | 27 + .../input/keyboard/keyboard_stdin/Makefile | 1599 ++++++ .../input/keyboard/keyboard_stdin/Makefile.fpc | 46 + .../input/keyboard/keyboard_stdin/keyboardStdin.pp | 38 + packages/libndsfpc/examples/libfat/main.pp | 47 - packages/libndsfpc/examples/libfat/test1.txt | 2 - .../libndsfpc/examples/libmikmod/data/module.bin.o | Bin 91535 -> 0 bytes packages/libndsfpc/examples/libmikmod/main7.pp | 157 - packages/libndsfpc/examples/libmikmod/main9.pp | 121 - packages/libndsfpc/fpmake.pp | 2 +- packages/libndsfpc/src/dswifi/dswifi7.inc | 60 - packages/libndsfpc/src/dswifi/dswifi7.pp | 4 +- packages/libndsfpc/src/dswifi/dswifi9.inc | 220 - packages/libndsfpc/src/dswifi/dswifi9.pp | 4 +- packages/libndsfpc/src/dswifi/dswifi_version.inc | 7 - packages/libndsfpc/src/dswifi/inc/dswifi7.inc | 60 + packages/libndsfpc/src/dswifi/inc/dswifi9.inc | 242 + .../libndsfpc/src/dswifi/inc/dswifi_version.inc | 7 + packages/libndsfpc/src/dswifi/inc/netdb.inc | 57 + packages/libndsfpc/src/dswifi/inc/netinet/in.inc | 65 + packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc | 183 + packages/libndsfpc/src/dswifi/inc/sys/socket.inc | 166 + packages/libndsfpc/src/dswifi/netdb.inc | 57 - packages/libndsfpc/src/dswifi/netinet/in.inc | 65 - packages/libndsfpc/src/dswifi/sgIP_errno.inc | 183 - packages/libndsfpc/src/dswifi/sys/socket.inc | 166 - packages/libndsfpc/src/fat/fat.inc | 47 +- packages/libndsfpc/src/fat/fat.pp | 10 +- packages/libndsfpc/src/fat/fathelper.inc | 129 + packages/libndsfpc/src/fat/filesystem.inc | 6 + packages/libndsfpc/src/fat/filesystem.pp | 40 + packages/libndsfpc/src/fat/gbfs.inc | 4 +- packages/libndsfpc/src/libmikmod/inc/mikmod.inc | 1247 ----- packages/libndsfpc/src/libmikmod/mikmod7.pp | 32 - packages/libndsfpc/src/libmikmod/mikmod9.pp | 32 - packages/libndsfpc/src/maxmod/inc/maxmod.inc | 80 + packages/libndsfpc/src/maxmod/inc/maxmod7.inc | 91 + packages/libndsfpc/src/maxmod/inc/maxmod9.inc | 137 + packages/libndsfpc/src/maxmod/inc/mm_mas.inc | 167 + packages/libndsfpc/src/maxmod/inc/mm_msl.inc | 38 + packages/libndsfpc/src/maxmod/inc/mm_types.inc | 234 + packages/libndsfpc/src/maxmod/maxmod7.pp | 33 + packages/libndsfpc/src/maxmod/maxmod9.pp | 33 + packages/libndsfpc/src/nds/arm7/audio.inc | 158 +- packages/libndsfpc/src/nds/arm7/clock.inc | 6 +- packages/libndsfpc/src/nds/arm7/input.inc | 5 + packages/libndsfpc/src/nds/arm7/serial.inc | 68 +- packages/libndsfpc/src/nds/arm7/touch.inc | 3 +- packages/libndsfpc/src/nds/arm9/background.inc | 589 +- packages/libndsfpc/src/nds/arm9/boxtest.inc | 4 +- packages/libndsfpc/src/nds/arm9/console.inc | 83 +- packages/libndsfpc/src/nds/arm9/decompress.inc | 60 + packages/libndsfpc/src/nds/arm9/dldi.inc | 54 + packages/libndsfpc/src/nds/arm9/input.inc | 5 + packages/libndsfpc/src/nds/arm9/keyboard.inc | 104 + packages/libndsfpc/src/nds/arm9/math.inc | 166 +- packages/libndsfpc/src/nds/arm9/sassert.inc | 92 + packages/libndsfpc/src/nds/arm9/sound.inc | 94 +- packages/libndsfpc/src/nds/arm9/sprite.inc | 349 +- packages/libndsfpc/src/nds/arm9/trig_lut.inc | 68 +- packages/libndsfpc/src/nds/arm9/video.inc | 709 +-- packages/libndsfpc/src/nds/arm9/videoGL.inc | 1349 +++-- packages/libndsfpc/src/nds/bios.inc | 30 +- packages/libndsfpc/src/nds/card.inc | 72 +- packages/libndsfpc/src/nds/debug.inc | 45 + packages/libndsfpc/src/nds/disc_io.inc | 85 + packages/libndsfpc/src/nds/dma.inc | 97 +- packages/libndsfpc/src/nds/dynamicArray.inc | 96 + packages/libndsfpc/src/nds/fifocommon.inc | 376 ++ packages/libndsfpc/src/nds/fifomessages.inc | 104 + packages/libndsfpc/src/nds/helper.inc | 122 +- packages/libndsfpc/src/nds/interrupts.inc | 18 +- packages/libndsfpc/src/nds/ipc.inc | 98 +- packages/libndsfpc/src/nds/linkedlist.inc | 87 + packages/libndsfpc/src/nds/memory.inc | 48 +- packages/libndsfpc/src/nds/nds.inc | 1 + packages/libndsfpc/src/nds/ndsinclude.inc | 22 +- packages/libndsfpc/src/nds/ndstypes.inc | 160 + packages/libndsfpc/src/nds/registers_alt.inc | 183 +- packages/libndsfpc/src/nds/reload.inc | 84 - packages/libndsfpc/src/nds/system.inc | 218 +- packages/libndsfpc/src/nds/timers.inc | 138 +- packages/libndsfpc/src/nds/touch.inc | 15 + packages/libndsfpc/src/nds7.pp | 1 + packages/libndsfpc/src/nds9.pp | 8 +- 488 files changed, 168715 insertions(+), 10088 deletions(-) create mode 100644 packages/libndsfpc/examples/Makefile create mode 100644 packages/libndsfpc/examples/Makefile.fpc create mode 100644 packages/libndsfpc/examples/RealTimeClock/Makefile create mode 100644 packages/libndsfpc/examples/RealTimeClock/Makefile.fpc create mode 100644 packages/libndsfpc/examples/RealTimeClock/Watch/Makefile create mode 100644 packages/libndsfpc/examples/RealTimeClock/Watch/Makefile.fpc create mode 100644 packages/libndsfpc/examples/RealTimeClock/Watch/watch.pp create mode 100644 packages/libndsfpc/examples/audio/Makefile create mode 100644 packages/libndsfpc/examples/audio/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/Makefile create mode 100644 packages/libndsfpc/examples/audio/maxmod/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile create mode 100644 packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/keyg-subtonal.xm create mode 100644 packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/purple_motion-inspiration.s3m create mode 100644 packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/rez-monday.mod create mode 100644 packages/libndsfpc/examples/audio/maxmod/audio_modes/audio_modes.pp create mode 100644 packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile create mode 100644 packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Ambulance.wav create mode 100644 packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav create mode 100644 packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod create mode 100644 packages/libndsfpc/examples/audio/maxmod/basic_sound/basic_sound.pp create mode 100644 packages/libndsfpc/examples/audio/maxmod/reverb/Makefile create mode 100644 packages/libndsfpc/examples/audio/maxmod/reverb/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/reverb/audio/tempest-zen_bowling.mod create mode 100644 packages/libndsfpc/examples/audio/maxmod/reverb/reverb.pp create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.grit create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.png create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example/music/example.it create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example/song_events_example.pp create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it create mode 100644 packages/libndsfpc/examples/audio/maxmod/song_events_example2/song_events_example2.pp create mode 100644 packages/libndsfpc/examples/audio/micrecord/Makefile create mode 100644 packages/libndsfpc/examples/audio/micrecord/Makefile.fpc create mode 100644 packages/libndsfpc/examples/audio/micrecord/micrecord.pp create mode 100644 packages/libndsfpc/examples/card/Makefile create mode 100644 packages/libndsfpc/examples/card/Makefile.fpc create mode 100644 packages/libndsfpc/examples/card/eeprom/Makefile create mode 100644 packages/libndsfpc/examples/card/eeprom/Makefile.fpc create mode 100644 packages/libndsfpc/examples/card/eeprom/eeprom.pp create mode 100644 packages/libndsfpc/examples/debugging/Makefile create mode 100644 packages/libndsfpc/examples/debugging/Makefile.fpc create mode 100644 packages/libndsfpc/examples/debugging/exceptionTest/Makefile create mode 100644 packages/libndsfpc/examples/debugging/exceptionTest/Makefile.fpc create mode 100644 packages/libndsfpc/examples/debugging/exceptionTest/exceptionTest.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.git delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.png delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.git delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.png delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/drunkenlogo.bin.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/palette.bin.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/data/ball.pcx delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/Double_Buffer/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/Sprite_Bitmap/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/ansi_console/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.bmp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.git delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/hello_world/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.bmp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.git delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/BoxTest/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/data/teapot.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/cafe.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/teapot.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data.inc delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_pal.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_tex.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cone.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cylinder.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/sphere.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Quad/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Tri/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/data/texture.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/data/texture.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/data/statue.bin delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson01/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson02/main1.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson03/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson04/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson05/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o delete mode 100644 packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/debugging/exceptionTest/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o delete mode 100644 packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o delete mode 100644 packages/libndsfpc/examples/devkitPro/input/TouchTest/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/sound/SimpleSound/blaster.raw.o delete mode 100644 packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o delete mode 100644 packages/libndsfpc/examples/devkitPro/sound/SimpleSound/main.pp delete mode 100644 packages/libndsfpc/examples/devkitPro/sound/SimpleSound/saberoff.raw.o create mode 100644 packages/libndsfpc/examples/ds_motion/Makefile create mode 100644 packages/libndsfpc/examples/ds_motion/Makefile.fpc create mode 100644 packages/libndsfpc/examples/ds_motion/dsMotion.pp create mode 100644 packages/libndsfpc/examples/dswifi/Makefile create mode 100644 packages/libndsfpc/examples/dswifi/Makefile.fpc create mode 100644 packages/libndsfpc/examples/dswifi/ap_search/Makefile create mode 100644 packages/libndsfpc/examples/dswifi/ap_search/Makefile.fpc create mode 100644 packages/libndsfpc/examples/dswifi/ap_search/apSearch.pp create mode 100644 packages/libndsfpc/examples/dswifi/autoconnect/Makefile create mode 100644 packages/libndsfpc/examples/dswifi/autoconnect/Makefile.fpc create mode 100644 packages/libndsfpc/examples/dswifi/autoconnect/autoconnect.pp create mode 100644 packages/libndsfpc/examples/dswifi/httpget/Makefile create mode 100644 packages/libndsfpc/examples/dswifi/httpget/Makefile.fpc create mode 100644 packages/libndsfpc/examples/dswifi/httpget/httpget.pp delete mode 100644 packages/libndsfpc/examples/dswifi/main7.pp delete mode 100644 packages/libndsfpc/examples/dswifi/main9.pp create mode 100644 packages/libndsfpc/examples/filesystem/Makefile create mode 100644 packages/libndsfpc/examples/filesystem/Makefile.fpc create mode 100644 packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/Mud.pcx create mode 100644 packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/World.txt create mode 100644 packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile create mode 100644 packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile.fpc create mode 100644 packages/libndsfpc/examples/filesystem/embedded_gbfs/embedded_gbfs.pp create mode 100644 packages/libndsfpc/examples/filesystem/libfat/Makefile create mode 100644 packages/libndsfpc/examples/filesystem/libfat/Makefile.fpc create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile.fpc create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_dir/access_dir.pp create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile.fpc create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_file/access_file.pp create mode 100644 packages/libndsfpc/examples/filesystem/libfat/access_file/test1.txt create mode 100644 packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile create mode 100644 packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile.fpc create mode 100644 packages/libndsfpc/examples/filesystem/libfat/libfatdir/libfatdir.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/3DBothScreens.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/BoxTest/BoxTest.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List/DisplayList.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List_2/DisplayList2.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Display_List_2/data/teapot.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Env_Mapping/EnvMapping.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/cafe.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/teapot.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/MixedText3D.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Ortho/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Ortho/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Ortho/Ortho.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Ortho/data/drunkenlogo.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/PalettedCube.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_pal.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_tex.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Picking/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Picking/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Picking/Picking.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Picking/data/cone.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Picking/data/cylinder.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Picking/data/sphere.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Simple_Quad/SimpleQuad.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Simple_Tri/SimpleTri.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Cube/TexturedCube.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Cube/data/texture.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Quad/TexturedQuad.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Textured_Quad/data/texture.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/Toon_Shading/ToonShading.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/Toon_Shading/data/statue.bin create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson01/lesson01.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson02/lesson02.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson03/lesson03.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson04/lesson04.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson05/lesson05.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson06/data/drunkenlogo.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson06/lesson06.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson07/data/drunkenlogo.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson07/lesson07.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson08/data/drunkenlogo.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson08/lesson08.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson09/data/Star.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson09/lesson09.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/Mud.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/World.txt create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10/lesson10.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/Mud.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/World.txt create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/lesson10b.pp create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson11/data/drunkenlogo.pcx create mode 100644 packages/libndsfpc/examples/graphics/3D/nehe/lesson11/lesson11.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/16bitColorBmp.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.grit create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.png create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/256ColorBmp.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.grit create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.png create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/DoubleBuffer.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Advanced.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/BackgroundAllInOne.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Basic.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Handmade.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Multilayer.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/RotBackgrounds.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Scrolling.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/TextBackgrounds.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/Multilayer.s create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/RotBackgrounds.s create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/TextBackgrounds.s create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/layers.pew create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/readme.txt create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/tiles.png create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/rotation/Rotation.pp create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/drunkenlogo.bin create mode 100644 packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin create mode 100644 packages/libndsfpc/examples/graphics/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Printing/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/ansi_console/AnsiConsole.pp create mode 100644 packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/console_windows/ConsoleWindows.pp create mode 100644 packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/custom_font/CustomFont.pp create mode 100644 packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.bmp create mode 100644 packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.grit create mode 100644 packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/print_both_screens/printBothScreens.pp create mode 100644 packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Printing/rotscale_text/RotscaleText.pp create mode 100644 packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.bmp create mode 100644 packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.grit create mode 100644 packages/libndsfpc/examples/graphics/Sprites/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/allocation_test/AllocationTest.pp create mode 100644 packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/animate_simple/AnimateSimple.pp create mode 100644 packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/man.png create mode 100644 packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/sprite.grit create mode 100644 packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/woman.png create mode 100644 packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/BitmapSprites.pp create mode 100644 packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/FireAndSprites.pp create mode 100644 packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/data/ball.pcx create mode 100644 packages/libndsfpc/examples/graphics/Sprites/simple/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/simple/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/simple/Simple.pp create mode 100644 packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/SpriteExtendedPalettes.pp create mode 100644 packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile create mode 100644 packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile.fpc create mode 100644 packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/SpriteRotate.pp create mode 100644 packages/libndsfpc/examples/hello_world/Makefile create mode 100644 packages/libndsfpc/examples/hello_world/Makefile.fpc create mode 100644 packages/libndsfpc/examples/hello_world/helloWorld.pp create mode 100644 packages/libndsfpc/examples/input/Makefile create mode 100644 packages/libndsfpc/examples/input/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/Makefile create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_area/touchArea.pp create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/Mud.pcx create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/World.txt create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_look/touchLook.pp create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/balldata.bin create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/ballpalette.bin create mode 100644 packages/libndsfpc/examples/input/Touch_Pad/touch_test/touchTest.pp create mode 100644 packages/libndsfpc/examples/input/keyboard/Makefile create mode 100644 packages/libndsfpc/examples/input/keyboard/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile create mode 100644 packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/keyboard/keyboard_async/keyboardAsync.pp create mode 100644 packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile create mode 100644 packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile.fpc create mode 100644 packages/libndsfpc/examples/input/keyboard/keyboard_stdin/keyboardStdin.pp delete mode 100644 packages/libndsfpc/examples/libfat/main.pp delete mode 100644 packages/libndsfpc/examples/libfat/test1.txt delete mode 100644 packages/libndsfpc/examples/libmikmod/data/module.bin.o delete mode 100644 packages/libndsfpc/examples/libmikmod/main7.pp delete mode 100644 packages/libndsfpc/examples/libmikmod/main9.pp delete mode 100644 packages/libndsfpc/src/dswifi/dswifi7.inc delete mode 100644 packages/libndsfpc/src/dswifi/dswifi9.inc delete mode 100644 packages/libndsfpc/src/dswifi/dswifi_version.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/dswifi7.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/dswifi9.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/dswifi_version.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/netdb.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/netinet/in.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc create mode 100644 packages/libndsfpc/src/dswifi/inc/sys/socket.inc delete mode 100644 packages/libndsfpc/src/dswifi/netdb.inc delete mode 100644 packages/libndsfpc/src/dswifi/netinet/in.inc delete mode 100644 packages/libndsfpc/src/dswifi/sgIP_errno.inc delete mode 100644 packages/libndsfpc/src/dswifi/sys/socket.inc create mode 100644 packages/libndsfpc/src/fat/fathelper.inc create mode 100644 packages/libndsfpc/src/fat/filesystem.inc create mode 100644 packages/libndsfpc/src/fat/filesystem.pp delete mode 100644 packages/libndsfpc/src/libmikmod/inc/mikmod.inc delete mode 100644 packages/libndsfpc/src/libmikmod/mikmod7.pp delete mode 100644 packages/libndsfpc/src/libmikmod/mikmod9.pp create mode 100644 packages/libndsfpc/src/maxmod/inc/maxmod.inc create mode 100644 packages/libndsfpc/src/maxmod/inc/maxmod7.inc create mode 100644 packages/libndsfpc/src/maxmod/inc/maxmod9.inc create mode 100644 packages/libndsfpc/src/maxmod/inc/mm_mas.inc create mode 100644 packages/libndsfpc/src/maxmod/inc/mm_msl.inc create mode 100644 packages/libndsfpc/src/maxmod/inc/mm_types.inc create mode 100644 packages/libndsfpc/src/maxmod/maxmod7.pp create mode 100644 packages/libndsfpc/src/maxmod/maxmod9.pp create mode 100644 packages/libndsfpc/src/nds/arm7/input.inc create mode 100644 packages/libndsfpc/src/nds/arm9/decompress.inc create mode 100644 packages/libndsfpc/src/nds/arm9/dldi.inc create mode 100644 packages/libndsfpc/src/nds/arm9/keyboard.inc create mode 100644 packages/libndsfpc/src/nds/arm9/sassert.inc create mode 100644 packages/libndsfpc/src/nds/debug.inc create mode 100644 packages/libndsfpc/src/nds/disc_io.inc create mode 100644 packages/libndsfpc/src/nds/dynamicArray.inc create mode 100644 packages/libndsfpc/src/nds/fifocommon.inc create mode 100644 packages/libndsfpc/src/nds/fifomessages.inc create mode 100644 packages/libndsfpc/src/nds/linkedlist.inc create mode 100644 packages/libndsfpc/src/nds/ndstypes.inc delete mode 100644 packages/libndsfpc/src/nds/reload.inc create mode 100644 packages/libndsfpc/src/nds/touch.inc (limited to 'packages/libndsfpc') diff --git a/packages/libndsfpc/Makefile b/packages/libndsfpc/Makefile index 972f66a231..cf5c6f3c06 100644 --- a/packages/libndsfpc/Makefile +++ b/packages/libndsfpc/Makefile @@ -1,8 +1,8 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2008/10/22] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] # 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 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 sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-darwin arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded avr-embedded armeb-linux armeb-embedded +MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos 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 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 sparc-linux sparc-netbsd sparc-solaris sparc-embedded x86_64-linux x86_64-freebsd x86_64-darwin x86_64-win64 x86_64-embedded arm-linux arm-palmos arm-wince arm-gba arm-nds arm-embedded arm-symbian powerpc64-linux powerpc64-darwin powerpc64-embedded BSDs = freebsd netbsd openbsd darwin UNIXs = linux $(BSDs) solaris qnx LIMIT83fs = go32v2 os2 emx watcom @@ -173,17 +173,6 @@ 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 ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) TARGETSUFFIX=$(OS_TARGET) SOURCESUFFIX=$(OS_SOURCE) @@ -205,7 +194,7 @@ endif ifeq ($(OS_TARGET),linux) linuxHier=1 endif -export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE +export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE ifdef FPCDIR override FPCDIR:=$(subst \,/,$(FPCDIR)) ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),) @@ -265,355 +254,485 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) endif PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) override PACKAGE_NAME=libndsfpc -override PACKAGE_VERSION=2.2.2 +override PACKAGE_VERSION=2.2.4a +BINUTILSPREFIX=arm-eabi- ifeq ($(FULL_TARGET),i386-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 -endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-qnx) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-macos) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 -endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 +endif +ifeq ($(FULL_TARGET),i386-linux) +override TARGET_EXAMPLEDIRS+=examples endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +ifeq ($(FULL_TARGET),i386-go32v2) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-win32) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-os2) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-freebsd) +override TARGET_EXAMPLEDIRS+=examples endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +ifeq ($(FULL_TARGET),i386-beos) +override TARGET_EXAMPLEDIRS+=examples endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_UNITS+=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 +ifeq ($(FULL_TARGET),i386-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-solaris) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-qnx) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-netware) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-openbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-wdosx) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-emx) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-watcom) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-wince) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),i386-symbian) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-amiga) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-atari) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-palmos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),m68k-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-macos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-solaris) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),sparc-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-win64) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-palmos) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-wince) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-gba) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-embedded) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),arm-symbian) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +override TARGET_EXAMPLEDIRS+=examples +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +override TARGET_EXAMPLEDIRS+=examples endif override INSTALL_FPCPACKAGE=y ifeq ($(FULL_TARGET),i386-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-go32v2) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-win32) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-os2) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-freebsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-beos) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod -endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-netbsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-solaris) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-qnx) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-netware) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-openbsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-wdosx) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-darwin) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-emx) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-watcom) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-netwlibc) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-wince) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-symbian) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-freebsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-netbsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-amiga) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-atari) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-openbsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-palmos) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),m68k-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-amiga) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-macos) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-darwin) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-morphos) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),sparc-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),sparc-netbsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),sparc-solaris) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),sparc-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),x86_64-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),x86_64-darwin) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),x86_64-win64) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),x86_64-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-palmos) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod -endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-wince) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-gba) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-nds) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),arm-symbian) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc64-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod -endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/libmikmod +override COMPILER_INCLUDEDIR+=src src/dswifi src/fat src/maxmod endif ifeq ($(FULL_TARGET),i386-linux) override COMPILER_SOURCEDIR+=src tests @@ -633,9 +752,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override COMPILER_SOURCEDIR+=src tests endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_SOURCEDIR+=src tests -endif ifeq ($(FULL_TARGET),i386-netbsd) override COMPILER_SOURCEDIR+=src tests endif @@ -753,9 +869,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override COMPILER_SOURCEDIR+=src tests endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_SOURCEDIR+=src tests -endif ifeq ($(FULL_TARGET),arm-wince) override COMPILER_SOURCEDIR+=src tests endif @@ -780,15 +893,8 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override COMPILER_SOURCEDIR+=src tests endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_SOURCEDIR+=src tests -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_SOURCEDIR+=src tests -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_SOURCEDIR+=src tests -endif +override SHARED_BUILD=n +override SHARED_BUILD=n ifdef REQUIRE_UNITSDIR override UNITSDIR+=$(REQUIRE_UNITSDIR) endif @@ -1078,11 +1184,6 @@ BATCHEXT=.sh EXEEXT= SHORTSUFFIX=be endif -ifeq ($(OS_TARGET),haiku) -BATCHEXT=.sh -EXEEXT= -SHORTSUFFIX=hai -endif ifeq ($(OS_TARGET),solaris) BATCHEXT=.sh EXEEXT= @@ -1542,13 +1643,13 @@ TAROPT=vz TAREXT=.tar.gz endif ifndef NOCPUDEF -override FPCOPTDEF=$(ARCH) +override FPCOPTDEF=$(CPU_TARGET) endif ifneq ($(OS_TARGET),$(OS_SOURCE)) override FPCOPT+=-T$(OS_TARGET) endif ifneq ($(CPU_TARGET),$(CPU_SOURCE)) -override FPCOPT+=-P$(ARCH) +override FPCOPT+=-P$(CPU_TARGET) endif ifeq ($(OS_SOURCE),openbsd) override FPCOPT+=-FD$(NEW_BINUTILS_PATH) @@ -1707,6 +1808,24 @@ ifdef TARGET_RSTS override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) override CLEANRSTFILES+=$(RSTFILES) endif +.PHONY: fpc_examples +ifneq ($(TARGET_EXAMPLES),) +HASEXAMPLES=1 +override EXAMPLESOURCEFILES:=$(wildcard $(addsuffix .pp,$(TARGET_EXAMPLES)) $(addsuffix .pas,$(TARGET_EXAMPLES)) $(addsuffix .lpr,$(TARGET_EXAMPLES)) $(addsuffix .dpr,$(TARGET_EXAMPLES))) +override EXAMPLEFILES:=$(addsuffix $(EXEEXT),$(TARGET_EXAMPLES)) +override EXAMPLEOFILES:=$(addsuffix $(OEXT),$(TARGET_EXAMPLES)) $(addprefix $(STATICLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) $(addprefix $(IMPORTLIBPREFIX),$(addsuffix $(STATICLIBEXT),$(TARGET_EXAMPLES))) +override CLEANEXEFILES+=$(EXAMPLEFILES) $(EXAMPLEOFILES) +ifeq ($(OS_TARGET),os2) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES)) +endif +ifeq ($(OS_TARGET),emx) +override CLEANEXEFILES+=$(addsuffix $(AOUTEXT),$(TARGET_EXAMPLES)) +endif +endif +ifneq ($(TARGET_EXAMPLEDIRS),) +HASEXAMPLES=1 +endif +fpc_examples: all $(EXAMPLEFILES) $(addsuffix _all,$(TARGET_EXAMPLEDIRS)) .PHONY: fpc_all fpc_smart fpc_debug fpc_release fpc_shared $(FPCMADE): $(ALLDEPENDENCIES) $(ALLTARGET) @$(ECHOREDIR) Compiled > $(FPCMADE) @@ -2110,12 +2229,216 @@ 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 +ifeq ($(FULL_TARGET),i386-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-go32v2) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-win32) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-os2) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-freebsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-beos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-solaris) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-qnx) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-netware) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-openbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-wdosx) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-emx) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-watcom) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-netwlibc) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-wince) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),i386-symbian) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-freebsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-amiga) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-atari) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-openbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-palmos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),m68k-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-amiga) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-macos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-morphos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-netbsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-solaris) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),sparc-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-freebsd) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-win64) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),x86_64-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-palmos) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-wince) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-gba) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-nds) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),arm-symbian) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc64-linux) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc64-darwin) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifeq ($(FULL_TARGET),powerpc64-embedded) +TARGET_EXAMPLEDIRS_EXAMPLES=1 +endif +ifdef TARGET_EXAMPLEDIRS_EXAMPLES +examples_all: + $(MAKE) -C examples all +examples_debug: + $(MAKE) -C examples debug +examples_smart: + $(MAKE) -C examples smart +examples_release: + $(MAKE) -C examples release +examples_units: + $(MAKE) -C examples units +examples_examples: + $(MAKE) -C examples examples +examples_shared: + $(MAKE) -C examples shared +examples_install: + $(MAKE) -C examples install +examples_sourceinstall: + $(MAKE) -C examples sourceinstall +examples_exampleinstall: + $(MAKE) -C examples exampleinstall +examples_distinstall: + $(MAKE) -C examples distinstall +examples_zipinstall: + $(MAKE) -C examples zipinstall +examples_zipsourceinstall: + $(MAKE) -C examples zipsourceinstall +examples_zipexampleinstall: + $(MAKE) -C examples zipexampleinstall +examples_zipdistinstall: + $(MAKE) -C examples zipdistinstall +examples_clean: + $(MAKE) -C examples clean +examples_distclean: + $(MAKE) -C examples distclean +examples_cleanall: + $(MAKE) -C examples cleanall +examples_info: + $(MAKE) -C examples info +examples_makefiles: + $(MAKE) -C examples makefiles +examples: + $(MAKE) -C examples all +.PHONY: examples_all examples_debug examples_smart examples_release examples_units examples_examples examples_shared examples_install examples_sourceinstall examples_exampleinstall examples_distinstall examples_zipinstall examples_zipsourceinstall examples_zipexampleinstall examples_zipdistinstall examples_clean examples_distclean examples_cleanall examples_info examples_makefiles examples +endif all: fpc_all debug: fpc_debug smart: fpc_smart release: fpc_release units: fpc_units -examples: +examples: fpc_examples shared: fpc_shared install: fpc_install sourceinstall: fpc_sourceinstall @@ -2125,7 +2448,7 @@ zipinstall: fpc_zipinstall zipsourceinstall: fpc_zipsourceinstall zipexampleinstall: fpc_zipexampleinstall zipdistinstall: fpc_zipdistinstall -clean: fpc_clean +clean: fpc_clean $(addsuffix _clean,$(TARGET_EXAMPLEDIRS)) distclean: fpc_distclean cleanall: fpc_cleanall info: fpc_info diff --git a/packages/libndsfpc/Makefile.fpc b/packages/libndsfpc/Makefile.fpc index 89aa422127..0d5f9c727f 100644 --- a/packages/libndsfpc/Makefile.fpc +++ b/packages/libndsfpc/Makefile.fpc @@ -4,17 +4,19 @@ [package] name=libndsfpc -version=2.2.2 +version=2.2.4a [target] -units=nds9 nds7 dswifi9 dswifi7 fat gbfs mikmod9 mikmod7 -examples= +units=nds9 nds7 dswifi9 dswifi7 fat gbfs filesystem maxmod9 maxmod7 +exampledirs=examples [compiler] options= -includedir=src src/dswifi src/fat src/libmikmod +includedir=src src/dswifi src/fat src/maxmod sourcedir=src tests +[prerules] +BINUTILSPREFIX=arm-eabi- [install] fpcpackage=y @@ -27,6 +29,9 @@ fpcdir=../.. [require] nortl=y +[shared] +build=n + [rules] .NOTPARALLEL: diff --git a/packages/libndsfpc/examples/Makefile b/packages/libndsfpc/examples/Makefile new file mode 100644 index 0000000000..4871815109 --- /dev/null +++ b/packages/libndsfpc/examples/Makefile @@ -0,0 +1,1851 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=audio card debugging ds_motion dswifi filesystem graphics hello_world input RealTimeClock +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_AUDIO=1 +TARGET_DIRS_CARD=1 +TARGET_DIRS_DEBUGGING=1 +TARGET_DIRS_DS_MOTION=1 +TARGET_DIRS_DSWIFI=1 +TARGET_DIRS_FILESYSTEM=1 +TARGET_DIRS_GRAPHICS=1 +TARGET_DIRS_HELLO_WORLD=1 +TARGET_DIRS_INPUT=1 +TARGET_DIRS_REALTIMECLOCK=1 +endif +ifdef TARGET_DIRS_AUDIO +audio_all: + $(MAKE) -C audio all +audio_debug: + $(MAKE) -C audio debug +audio_smart: + $(MAKE) -C audio smart +audio_release: + $(MAKE) -C audio release +audio_units: + $(MAKE) -C audio units +audio_examples: + $(MAKE) -C audio examples +audio_shared: + $(MAKE) -C audio shared +audio_install: + $(MAKE) -C audio install +audio_sourceinstall: + $(MAKE) -C audio sourceinstall +audio_exampleinstall: + $(MAKE) -C audio exampleinstall +audio_distinstall: + $(MAKE) -C audio distinstall +audio_zipinstall: + $(MAKE) -C audio zipinstall +audio_zipsourceinstall: + $(MAKE) -C audio zipsourceinstall +audio_zipexampleinstall: + $(MAKE) -C audio zipexampleinstall +audio_zipdistinstall: + $(MAKE) -C audio zipdistinstall +audio_clean: + $(MAKE) -C audio clean +audio_distclean: + $(MAKE) -C audio distclean +audio_cleanall: + $(MAKE) -C audio cleanall +audio_info: + $(MAKE) -C audio info +audio_makefiles: + $(MAKE) -C audio makefiles +audio: + $(MAKE) -C audio all +.PHONY: audio_all audio_debug audio_smart audio_release audio_units audio_examples audio_shared audio_install audio_sourceinstall audio_exampleinstall audio_distinstall audio_zipinstall audio_zipsourceinstall audio_zipexampleinstall audio_zipdistinstall audio_clean audio_distclean audio_cleanall audio_info audio_makefiles audio +endif +ifdef TARGET_DIRS_CARD +card_all: + $(MAKE) -C card all +card_debug: + $(MAKE) -C card debug +card_smart: + $(MAKE) -C card smart +card_release: + $(MAKE) -C card release +card_units: + $(MAKE) -C card units +card_examples: + $(MAKE) -C card examples +card_shared: + $(MAKE) -C card shared +card_install: + $(MAKE) -C card install +card_sourceinstall: + $(MAKE) -C card sourceinstall +card_exampleinstall: + $(MAKE) -C card exampleinstall +card_distinstall: + $(MAKE) -C card distinstall +card_zipinstall: + $(MAKE) -C card zipinstall +card_zipsourceinstall: + $(MAKE) -C card zipsourceinstall +card_zipexampleinstall: + $(MAKE) -C card zipexampleinstall +card_zipdistinstall: + $(MAKE) -C card zipdistinstall +card_clean: + $(MAKE) -C card clean +card_distclean: + $(MAKE) -C card distclean +card_cleanall: + $(MAKE) -C card cleanall +card_info: + $(MAKE) -C card info +card_makefiles: + $(MAKE) -C card makefiles +card: + $(MAKE) -C card all +.PHONY: card_all card_debug card_smart card_release card_units card_examples card_shared card_install card_sourceinstall card_exampleinstall card_distinstall card_zipinstall card_zipsourceinstall card_zipexampleinstall card_zipdistinstall card_clean card_distclean card_cleanall card_info card_makefiles card +endif +ifdef TARGET_DIRS_DEBUGGING +debugging_all: + $(MAKE) -C debugging all +debugging_debug: + $(MAKE) -C debugging debug +debugging_smart: + $(MAKE) -C debugging smart +debugging_release: + $(MAKE) -C debugging release +debugging_units: + $(MAKE) -C debugging units +debugging_examples: + $(MAKE) -C debugging examples +debugging_shared: + $(MAKE) -C debugging shared +debugging_install: + $(MAKE) -C debugging install +debugging_sourceinstall: + $(MAKE) -C debugging sourceinstall +debugging_exampleinstall: + $(MAKE) -C debugging exampleinstall +debugging_distinstall: + $(MAKE) -C debugging distinstall +debugging_zipinstall: + $(MAKE) -C debugging zipinstall +debugging_zipsourceinstall: + $(MAKE) -C debugging zipsourceinstall +debugging_zipexampleinstall: + $(MAKE) -C debugging zipexampleinstall +debugging_zipdistinstall: + $(MAKE) -C debugging zipdistinstall +debugging_clean: + $(MAKE) -C debugging clean +debugging_distclean: + $(MAKE) -C debugging distclean +debugging_cleanall: + $(MAKE) -C debugging cleanall +debugging_info: + $(MAKE) -C debugging info +debugging_makefiles: + $(MAKE) -C debugging makefiles +debugging: + $(MAKE) -C debugging all +.PHONY: debugging_all debugging_debug debugging_smart debugging_release debugging_units debugging_examples debugging_shared debugging_install debugging_sourceinstall debugging_exampleinstall debugging_distinstall debugging_zipinstall debugging_zipsourceinstall debugging_zipexampleinstall debugging_zipdistinstall debugging_clean debugging_distclean debugging_cleanall debugging_info debugging_makefiles debugging +endif +ifdef TARGET_DIRS_DS_MOTION +ds_motion_all: + $(MAKE) -C ds_motion all +ds_motion_debug: + $(MAKE) -C ds_motion debug +ds_motion_smart: + $(MAKE) -C ds_motion smart +ds_motion_release: + $(MAKE) -C ds_motion release +ds_motion_units: + $(MAKE) -C ds_motion units +ds_motion_examples: + $(MAKE) -C ds_motion examples +ds_motion_shared: + $(MAKE) -C ds_motion shared +ds_motion_install: + $(MAKE) -C ds_motion install +ds_motion_sourceinstall: + $(MAKE) -C ds_motion sourceinstall +ds_motion_exampleinstall: + $(MAKE) -C ds_motion exampleinstall +ds_motion_distinstall: + $(MAKE) -C ds_motion distinstall +ds_motion_zipinstall: + $(MAKE) -C ds_motion zipinstall +ds_motion_zipsourceinstall: + $(MAKE) -C ds_motion zipsourceinstall +ds_motion_zipexampleinstall: + $(MAKE) -C ds_motion zipexampleinstall +ds_motion_zipdistinstall: + $(MAKE) -C ds_motion zipdistinstall +ds_motion_clean: + $(MAKE) -C ds_motion clean +ds_motion_distclean: + $(MAKE) -C ds_motion distclean +ds_motion_cleanall: + $(MAKE) -C ds_motion cleanall +ds_motion_info: + $(MAKE) -C ds_motion info +ds_motion_makefiles: + $(MAKE) -C ds_motion makefiles +ds_motion: + $(MAKE) -C ds_motion all +.PHONY: ds_motion_all ds_motion_debug ds_motion_smart ds_motion_release ds_motion_units ds_motion_examples ds_motion_shared ds_motion_install ds_motion_sourceinstall ds_motion_exampleinstall ds_motion_distinstall ds_motion_zipinstall ds_motion_zipsourceinstall ds_motion_zipexampleinstall ds_motion_zipdistinstall ds_motion_clean ds_motion_distclean ds_motion_cleanall ds_motion_info ds_motion_makefiles ds_motion +endif +ifdef TARGET_DIRS_DSWIFI +dswifi_all: + $(MAKE) -C dswifi all +dswifi_debug: + $(MAKE) -C dswifi debug +dswifi_smart: + $(MAKE) -C dswifi smart +dswifi_release: + $(MAKE) -C dswifi release +dswifi_units: + $(MAKE) -C dswifi units +dswifi_examples: + $(MAKE) -C dswifi examples +dswifi_shared: + $(MAKE) -C dswifi shared +dswifi_install: + $(MAKE) -C dswifi install +dswifi_sourceinstall: + $(MAKE) -C dswifi sourceinstall +dswifi_exampleinstall: + $(MAKE) -C dswifi exampleinstall +dswifi_distinstall: + $(MAKE) -C dswifi distinstall +dswifi_zipinstall: + $(MAKE) -C dswifi zipinstall +dswifi_zipsourceinstall: + $(MAKE) -C dswifi zipsourceinstall +dswifi_zipexampleinstall: + $(MAKE) -C dswifi zipexampleinstall +dswifi_zipdistinstall: + $(MAKE) -C dswifi zipdistinstall +dswifi_clean: + $(MAKE) -C dswifi clean +dswifi_distclean: + $(MAKE) -C dswifi distclean +dswifi_cleanall: + $(MAKE) -C dswifi cleanall +dswifi_info: + $(MAKE) -C dswifi info +dswifi_makefiles: + $(MAKE) -C dswifi makefiles +dswifi: + $(MAKE) -C dswifi all +.PHONY: dswifi_all dswifi_debug dswifi_smart dswifi_release dswifi_units dswifi_examples dswifi_shared dswifi_install dswifi_sourceinstall dswifi_exampleinstall dswifi_distinstall dswifi_zipinstall dswifi_zipsourceinstall dswifi_zipexampleinstall dswifi_zipdistinstall dswifi_clean dswifi_distclean dswifi_cleanall dswifi_info dswifi_makefiles dswifi +endif +ifdef TARGET_DIRS_FILESYSTEM +filesystem_all: + $(MAKE) -C filesystem all +filesystem_debug: + $(MAKE) -C filesystem debug +filesystem_smart: + $(MAKE) -C filesystem smart +filesystem_release: + $(MAKE) -C filesystem release +filesystem_units: + $(MAKE) -C filesystem units +filesystem_examples: + $(MAKE) -C filesystem examples +filesystem_shared: + $(MAKE) -C filesystem shared +filesystem_install: + $(MAKE) -C filesystem install +filesystem_sourceinstall: + $(MAKE) -C filesystem sourceinstall +filesystem_exampleinstall: + $(MAKE) -C filesystem exampleinstall +filesystem_distinstall: + $(MAKE) -C filesystem distinstall +filesystem_zipinstall: + $(MAKE) -C filesystem zipinstall +filesystem_zipsourceinstall: + $(MAKE) -C filesystem zipsourceinstall +filesystem_zipexampleinstall: + $(MAKE) -C filesystem zipexampleinstall +filesystem_zipdistinstall: + $(MAKE) -C filesystem zipdistinstall +filesystem_clean: + $(MAKE) -C filesystem clean +filesystem_distclean: + $(MAKE) -C filesystem distclean +filesystem_cleanall: + $(MAKE) -C filesystem cleanall +filesystem_info: + $(MAKE) -C filesystem info +filesystem_makefiles: + $(MAKE) -C filesystem makefiles +filesystem: + $(MAKE) -C filesystem all +.PHONY: filesystem_all filesystem_debug filesystem_smart filesystem_release filesystem_units filesystem_examples filesystem_shared filesystem_install filesystem_sourceinstall filesystem_exampleinstall filesystem_distinstall filesystem_zipinstall filesystem_zipsourceinstall filesystem_zipexampleinstall filesystem_zipdistinstall filesystem_clean filesystem_distclean filesystem_cleanall filesystem_info filesystem_makefiles filesystem +endif +ifdef TARGET_DIRS_GRAPHICS +graphics_all: + $(MAKE) -C graphics all +graphics_debug: + $(MAKE) -C graphics debug +graphics_smart: + $(MAKE) -C graphics smart +graphics_release: + $(MAKE) -C graphics release +graphics_units: + $(MAKE) -C graphics units +graphics_examples: + $(MAKE) -C graphics examples +graphics_shared: + $(MAKE) -C graphics shared +graphics_install: + $(MAKE) -C graphics install +graphics_sourceinstall: + $(MAKE) -C graphics sourceinstall +graphics_exampleinstall: + $(MAKE) -C graphics exampleinstall +graphics_distinstall: + $(MAKE) -C graphics distinstall +graphics_zipinstall: + $(MAKE) -C graphics zipinstall +graphics_zipsourceinstall: + $(MAKE) -C graphics zipsourceinstall +graphics_zipexampleinstall: + $(MAKE) -C graphics zipexampleinstall +graphics_zipdistinstall: + $(MAKE) -C graphics zipdistinstall +graphics_clean: + $(MAKE) -C graphics clean +graphics_distclean: + $(MAKE) -C graphics distclean +graphics_cleanall: + $(MAKE) -C graphics cleanall +graphics_info: + $(MAKE) -C graphics info +graphics_makefiles: + $(MAKE) -C graphics makefiles +graphics: + $(MAKE) -C graphics all +.PHONY: graphics_all graphics_debug graphics_smart graphics_release graphics_units graphics_examples graphics_shared graphics_install graphics_sourceinstall graphics_exampleinstall graphics_distinstall graphics_zipinstall graphics_zipsourceinstall graphics_zipexampleinstall graphics_zipdistinstall graphics_clean graphics_distclean graphics_cleanall graphics_info graphics_makefiles graphics +endif +ifdef TARGET_DIRS_HELLO_WORLD +hello_world_all: + $(MAKE) -C hello_world all +hello_world_debug: + $(MAKE) -C hello_world debug +hello_world_smart: + $(MAKE) -C hello_world smart +hello_world_release: + $(MAKE) -C hello_world release +hello_world_units: + $(MAKE) -C hello_world units +hello_world_examples: + $(MAKE) -C hello_world examples +hello_world_shared: + $(MAKE) -C hello_world shared +hello_world_install: + $(MAKE) -C hello_world install +hello_world_sourceinstall: + $(MAKE) -C hello_world sourceinstall +hello_world_exampleinstall: + $(MAKE) -C hello_world exampleinstall +hello_world_distinstall: + $(MAKE) -C hello_world distinstall +hello_world_zipinstall: + $(MAKE) -C hello_world zipinstall +hello_world_zipsourceinstall: + $(MAKE) -C hello_world zipsourceinstall +hello_world_zipexampleinstall: + $(MAKE) -C hello_world zipexampleinstall +hello_world_zipdistinstall: + $(MAKE) -C hello_world zipdistinstall +hello_world_clean: + $(MAKE) -C hello_world clean +hello_world_distclean: + $(MAKE) -C hello_world distclean +hello_world_cleanall: + $(MAKE) -C hello_world cleanall +hello_world_info: + $(MAKE) -C hello_world info +hello_world_makefiles: + $(MAKE) -C hello_world makefiles +hello_world: + $(MAKE) -C hello_world all +.PHONY: hello_world_all hello_world_debug hello_world_smart hello_world_release hello_world_units hello_world_examples hello_world_shared hello_world_install hello_world_sourceinstall hello_world_exampleinstall hello_world_distinstall hello_world_zipinstall hello_world_zipsourceinstall hello_world_zipexampleinstall hello_world_zipdistinstall hello_world_clean hello_world_distclean hello_world_cleanall hello_world_info hello_world_makefiles hello_world +endif +ifdef TARGET_DIRS_INPUT +input_all: + $(MAKE) -C input all +input_debug: + $(MAKE) -C input debug +input_smart: + $(MAKE) -C input smart +input_release: + $(MAKE) -C input release +input_units: + $(MAKE) -C input units +input_examples: + $(MAKE) -C input examples +input_shared: + $(MAKE) -C input shared +input_install: + $(MAKE) -C input install +input_sourceinstall: + $(MAKE) -C input sourceinstall +input_exampleinstall: + $(MAKE) -C input exampleinstall +input_distinstall: + $(MAKE) -C input distinstall +input_zipinstall: + $(MAKE) -C input zipinstall +input_zipsourceinstall: + $(MAKE) -C input zipsourceinstall +input_zipexampleinstall: + $(MAKE) -C input zipexampleinstall +input_zipdistinstall: + $(MAKE) -C input zipdistinstall +input_clean: + $(MAKE) -C input clean +input_distclean: + $(MAKE) -C input distclean +input_cleanall: + $(MAKE) -C input cleanall +input_info: + $(MAKE) -C input info +input_makefiles: + $(MAKE) -C input makefiles +input: + $(MAKE) -C input all +.PHONY: input_all input_debug input_smart input_release input_units input_examples input_shared input_install input_sourceinstall input_exampleinstall input_distinstall input_zipinstall input_zipsourceinstall input_zipexampleinstall input_zipdistinstall input_clean input_distclean input_cleanall input_info input_makefiles input +endif +ifdef TARGET_DIRS_REALTIMECLOCK +RealTimeClock_all: + $(MAKE) -C RealTimeClock all +RealTimeClock_debug: + $(MAKE) -C RealTimeClock debug +RealTimeClock_smart: + $(MAKE) -C RealTimeClock smart +RealTimeClock_release: + $(MAKE) -C RealTimeClock release +RealTimeClock_units: + $(MAKE) -C RealTimeClock units +RealTimeClock_examples: + $(MAKE) -C RealTimeClock examples +RealTimeClock_shared: + $(MAKE) -C RealTimeClock shared +RealTimeClock_install: + $(MAKE) -C RealTimeClock install +RealTimeClock_sourceinstall: + $(MAKE) -C RealTimeClock sourceinstall +RealTimeClock_exampleinstall: + $(MAKE) -C RealTimeClock exampleinstall +RealTimeClock_distinstall: + $(MAKE) -C RealTimeClock distinstall +RealTimeClock_zipinstall: + $(MAKE) -C RealTimeClock zipinstall +RealTimeClock_zipsourceinstall: + $(MAKE) -C RealTimeClock zipsourceinstall +RealTimeClock_zipexampleinstall: + $(MAKE) -C RealTimeClock zipexampleinstall +RealTimeClock_zipdistinstall: + $(MAKE) -C RealTimeClock zipdistinstall +RealTimeClock_clean: + $(MAKE) -C RealTimeClock clean +RealTimeClock_distclean: + $(MAKE) -C RealTimeClock distclean +RealTimeClock_cleanall: + $(MAKE) -C RealTimeClock cleanall +RealTimeClock_info: + $(MAKE) -C RealTimeClock info +RealTimeClock_makefiles: + $(MAKE) -C RealTimeClock makefiles +RealTimeClock: + $(MAKE) -C RealTimeClock all +.PHONY: RealTimeClock_all RealTimeClock_debug RealTimeClock_smart RealTimeClock_release RealTimeClock_units RealTimeClock_examples RealTimeClock_shared RealTimeClock_install RealTimeClock_sourceinstall RealTimeClock_exampleinstall RealTimeClock_distinstall RealTimeClock_zipinstall RealTimeClock_zipsourceinstall RealTimeClock_zipexampleinstall RealTimeClock_zipdistinstall RealTimeClock_clean RealTimeClock_distclean RealTimeClock_cleanall RealTimeClock_info RealTimeClock_makefiles RealTimeClock +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/Makefile.fpc b/packages/libndsfpc/examples/Makefile.fpc new file mode 100644 index 0000000000..06c2bc8c50 --- /dev/null +++ b/packages/libndsfpc/examples/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=audio card debugging ds_motion dswifi filesystem graphics hello_world input RealTimeClock + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/RealTimeClock/Makefile b/packages/libndsfpc/examples/RealTimeClock/Makefile new file mode 100644 index 0000000000..011d65d98f --- /dev/null +++ b/packages/libndsfpc/examples/RealTimeClock/Makefile @@ -0,0 +1,1437 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=Watch +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_WATCH=1 +endif +ifdef TARGET_DIRS_WATCH +Watch_all: + $(MAKE) -C Watch all +Watch_debug: + $(MAKE) -C Watch debug +Watch_smart: + $(MAKE) -C Watch smart +Watch_release: + $(MAKE) -C Watch release +Watch_units: + $(MAKE) -C Watch units +Watch_examples: + $(MAKE) -C Watch examples +Watch_shared: + $(MAKE) -C Watch shared +Watch_install: + $(MAKE) -C Watch install +Watch_sourceinstall: + $(MAKE) -C Watch sourceinstall +Watch_exampleinstall: + $(MAKE) -C Watch exampleinstall +Watch_distinstall: + $(MAKE) -C Watch distinstall +Watch_zipinstall: + $(MAKE) -C Watch zipinstall +Watch_zipsourceinstall: + $(MAKE) -C Watch zipsourceinstall +Watch_zipexampleinstall: + $(MAKE) -C Watch zipexampleinstall +Watch_zipdistinstall: + $(MAKE) -C Watch zipdistinstall +Watch_clean: + $(MAKE) -C Watch clean +Watch_distclean: + $(MAKE) -C Watch distclean +Watch_cleanall: + $(MAKE) -C Watch cleanall +Watch_info: + $(MAKE) -C Watch info +Watch_makefiles: + $(MAKE) -C Watch makefiles +Watch: + $(MAKE) -C Watch all +.PHONY: Watch_all Watch_debug Watch_smart Watch_release Watch_units Watch_examples Watch_shared Watch_install Watch_sourceinstall Watch_exampleinstall Watch_distinstall Watch_zipinstall Watch_zipsourceinstall Watch_zipexampleinstall Watch_zipdistinstall Watch_clean Watch_distclean Watch_cleanall Watch_info Watch_makefiles Watch +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/RealTimeClock/Makefile.fpc b/packages/libndsfpc/examples/RealTimeClock/Makefile.fpc new file mode 100644 index 0000000000..419fa632a2 --- /dev/null +++ b/packages/libndsfpc/examples/RealTimeClock/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=Watch + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/RealTimeClock/Watch/Makefile b/packages/libndsfpc/examples/RealTimeClock/Watch/Makefile new file mode 100644 index 0000000000..4868513eb5 --- /dev/null +++ b/packages/libndsfpc/examples/RealTimeClock/Watch/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=watch +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/RealTimeClock/Watch/Makefile.fpc b/packages/libndsfpc/examples/RealTimeClock/Watch/Makefile.fpc new file mode 100644 index 0000000000..35083c34df --- /dev/null +++ b/packages/libndsfpc/examples/RealTimeClock/Watch/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=watch + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/RealTimeClock/Watch/watch.pp b/packages/libndsfpc/examples/RealTimeClock/Watch/watch.pp new file mode 100644 index 0000000000..70fea7d2d6 --- /dev/null +++ b/packages/libndsfpc/examples/RealTimeClock/Watch/watch.pp @@ -0,0 +1,120 @@ +program watch; + +uses + ctypes, nds9; + +var + hours, seconds, minutes: integer; + months: array [0..11] of pchar = ('January', 'February', 'March', 'April', + 'May', 'June', 'July', 'August', + 'September', 'October', 'November', 'December'); + + unixTime: time_t; + timeStruct: ptm; + +//function errno2: pcint; cdecl; external name 'errno'; + +{ $define errno := __errno()^} + + +//draw a watch hands +procedure DrawQuad(x, y, width, height: cfloat); +begin + glBegin(GL_QUADS); + glVertex3f(x - width / 2, y, 0); + glVertex3f(x + width / 2, y, 0); + glVertex3f(x + width / 2, y + height, 0); + glVertex3f(x - width / 2, y + height, 0); + glEnd(); +end; + + +begin + //put 3D on top + lcdMainOnTop(); + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + // Reset the screen and setup the view + glInit(); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + // Specify the Clear Color and Depth + glClearColor(0,0,0,31); + glClearDepth($7FFF); + + consoleDemoInit(); + + + + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + gluLookAt( 0.0, 0.0, 3.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + unixTime := time(nil); + timeStruct := gmtime(ptime_t(@unixTime)); + + hours := timeStruct^.tm_hour; + minutes := timeStruct^.tm_min; + seconds := timeStruct^.tm_sec; + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + //draw second hand + glColor3f(0,0,1); + glRotateZ(-seconds * 360 / 60); + glTranslatef(0, 1.9, 0); + DrawQuad(0, 0, 0.2, 0.2); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + //draw minute hand + glColor3f(0, 1, 0); + glRotateZ(-minutes * 360 / 60); + DrawQuad(0, 0, 0.2, 2); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + //draw hourhand + glColor3f(1, 0, 0); + glRotateZ(-hours * 360 / 12); + DrawQuad(0, 0, 0.3, 1.8); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + printf(#$1B'[2J%02i:%02i:%02i', hours, minutes, seconds); + printf(#10'%s %i %i', months[timeStruct^.tm_mon], timeStruct^.tm_mday, timeStruct^.tm_year +1900); + + // flush to screen + glFlush(0); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/audio/Makefile b/packages/libndsfpc/examples/audio/Makefile new file mode 100644 index 0000000000..b0106ae3da --- /dev/null +++ b/packages/libndsfpc/examples/audio/Makefile @@ -0,0 +1,1483 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=maxmod micrecord +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_MAXMOD=1 +TARGET_DIRS_MICRECORD=1 +endif +ifdef TARGET_DIRS_MAXMOD +maxmod_all: + $(MAKE) -C maxmod all +maxmod_debug: + $(MAKE) -C maxmod debug +maxmod_smart: + $(MAKE) -C maxmod smart +maxmod_release: + $(MAKE) -C maxmod release +maxmod_units: + $(MAKE) -C maxmod units +maxmod_examples: + $(MAKE) -C maxmod examples +maxmod_shared: + $(MAKE) -C maxmod shared +maxmod_install: + $(MAKE) -C maxmod install +maxmod_sourceinstall: + $(MAKE) -C maxmod sourceinstall +maxmod_exampleinstall: + $(MAKE) -C maxmod exampleinstall +maxmod_distinstall: + $(MAKE) -C maxmod distinstall +maxmod_zipinstall: + $(MAKE) -C maxmod zipinstall +maxmod_zipsourceinstall: + $(MAKE) -C maxmod zipsourceinstall +maxmod_zipexampleinstall: + $(MAKE) -C maxmod zipexampleinstall +maxmod_zipdistinstall: + $(MAKE) -C maxmod zipdistinstall +maxmod_clean: + $(MAKE) -C maxmod clean +maxmod_distclean: + $(MAKE) -C maxmod distclean +maxmod_cleanall: + $(MAKE) -C maxmod cleanall +maxmod_info: + $(MAKE) -C maxmod info +maxmod_makefiles: + $(MAKE) -C maxmod makefiles +maxmod: + $(MAKE) -C maxmod all +.PHONY: maxmod_all maxmod_debug maxmod_smart maxmod_release maxmod_units maxmod_examples maxmod_shared maxmod_install maxmod_sourceinstall maxmod_exampleinstall maxmod_distinstall maxmod_zipinstall maxmod_zipsourceinstall maxmod_zipexampleinstall maxmod_zipdistinstall maxmod_clean maxmod_distclean maxmod_cleanall maxmod_info maxmod_makefiles maxmod +endif +ifdef TARGET_DIRS_MICRECORD +micrecord_all: + $(MAKE) -C micrecord all +micrecord_debug: + $(MAKE) -C micrecord debug +micrecord_smart: + $(MAKE) -C micrecord smart +micrecord_release: + $(MAKE) -C micrecord release +micrecord_units: + $(MAKE) -C micrecord units +micrecord_examples: + $(MAKE) -C micrecord examples +micrecord_shared: + $(MAKE) -C micrecord shared +micrecord_install: + $(MAKE) -C micrecord install +micrecord_sourceinstall: + $(MAKE) -C micrecord sourceinstall +micrecord_exampleinstall: + $(MAKE) -C micrecord exampleinstall +micrecord_distinstall: + $(MAKE) -C micrecord distinstall +micrecord_zipinstall: + $(MAKE) -C micrecord zipinstall +micrecord_zipsourceinstall: + $(MAKE) -C micrecord zipsourceinstall +micrecord_zipexampleinstall: + $(MAKE) -C micrecord zipexampleinstall +micrecord_zipdistinstall: + $(MAKE) -C micrecord zipdistinstall +micrecord_clean: + $(MAKE) -C micrecord clean +micrecord_distclean: + $(MAKE) -C micrecord distclean +micrecord_cleanall: + $(MAKE) -C micrecord cleanall +micrecord_info: + $(MAKE) -C micrecord info +micrecord_makefiles: + $(MAKE) -C micrecord makefiles +micrecord: + $(MAKE) -C micrecord all +.PHONY: micrecord_all micrecord_debug micrecord_smart micrecord_release micrecord_units micrecord_examples micrecord_shared micrecord_install micrecord_sourceinstall micrecord_exampleinstall micrecord_distinstall micrecord_zipinstall micrecord_zipsourceinstall micrecord_zipexampleinstall micrecord_zipdistinstall micrecord_clean micrecord_distclean micrecord_cleanall micrecord_info micrecord_makefiles micrecord +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/audio/Makefile.fpc b/packages/libndsfpc/examples/audio/Makefile.fpc new file mode 100644 index 0000000000..6293dfe0ab --- /dev/null +++ b/packages/libndsfpc/examples/audio/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=maxmod micrecord + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/audio/maxmod/Makefile b/packages/libndsfpc/examples/audio/maxmod/Makefile new file mode 100644 index 0000000000..a0d5879bdd --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/Makefile @@ -0,0 +1,1621 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=audio_modes basic_sound reverb song_events_example song_events_example2 +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_AUDIO_MODES=1 +TARGET_DIRS_BASIC_SOUND=1 +TARGET_DIRS_REVERB=1 +TARGET_DIRS_SONG_EVENTS_EXAMPLE=1 +TARGET_DIRS_SONG_EVENTS_EXAMPLE2=1 +endif +ifdef TARGET_DIRS_AUDIO_MODES +audio_modes_all: + $(MAKE) -C audio_modes all +audio_modes_debug: + $(MAKE) -C audio_modes debug +audio_modes_smart: + $(MAKE) -C audio_modes smart +audio_modes_release: + $(MAKE) -C audio_modes release +audio_modes_units: + $(MAKE) -C audio_modes units +audio_modes_examples: + $(MAKE) -C audio_modes examples +audio_modes_shared: + $(MAKE) -C audio_modes shared +audio_modes_install: + $(MAKE) -C audio_modes install +audio_modes_sourceinstall: + $(MAKE) -C audio_modes sourceinstall +audio_modes_exampleinstall: + $(MAKE) -C audio_modes exampleinstall +audio_modes_distinstall: + $(MAKE) -C audio_modes distinstall +audio_modes_zipinstall: + $(MAKE) -C audio_modes zipinstall +audio_modes_zipsourceinstall: + $(MAKE) -C audio_modes zipsourceinstall +audio_modes_zipexampleinstall: + $(MAKE) -C audio_modes zipexampleinstall +audio_modes_zipdistinstall: + $(MAKE) -C audio_modes zipdistinstall +audio_modes_clean: + $(MAKE) -C audio_modes clean +audio_modes_distclean: + $(MAKE) -C audio_modes distclean +audio_modes_cleanall: + $(MAKE) -C audio_modes cleanall +audio_modes_info: + $(MAKE) -C audio_modes info +audio_modes_makefiles: + $(MAKE) -C audio_modes makefiles +audio_modes: + $(MAKE) -C audio_modes all +.PHONY: audio_modes_all audio_modes_debug audio_modes_smart audio_modes_release audio_modes_units audio_modes_examples audio_modes_shared audio_modes_install audio_modes_sourceinstall audio_modes_exampleinstall audio_modes_distinstall audio_modes_zipinstall audio_modes_zipsourceinstall audio_modes_zipexampleinstall audio_modes_zipdistinstall audio_modes_clean audio_modes_distclean audio_modes_cleanall audio_modes_info audio_modes_makefiles audio_modes +endif +ifdef TARGET_DIRS_BASIC_SOUND +basic_sound_all: + $(MAKE) -C basic_sound all +basic_sound_debug: + $(MAKE) -C basic_sound debug +basic_sound_smart: + $(MAKE) -C basic_sound smart +basic_sound_release: + $(MAKE) -C basic_sound release +basic_sound_units: + $(MAKE) -C basic_sound units +basic_sound_examples: + $(MAKE) -C basic_sound examples +basic_sound_shared: + $(MAKE) -C basic_sound shared +basic_sound_install: + $(MAKE) -C basic_sound install +basic_sound_sourceinstall: + $(MAKE) -C basic_sound sourceinstall +basic_sound_exampleinstall: + $(MAKE) -C basic_sound exampleinstall +basic_sound_distinstall: + $(MAKE) -C basic_sound distinstall +basic_sound_zipinstall: + $(MAKE) -C basic_sound zipinstall +basic_sound_zipsourceinstall: + $(MAKE) -C basic_sound zipsourceinstall +basic_sound_zipexampleinstall: + $(MAKE) -C basic_sound zipexampleinstall +basic_sound_zipdistinstall: + $(MAKE) -C basic_sound zipdistinstall +basic_sound_clean: + $(MAKE) -C basic_sound clean +basic_sound_distclean: + $(MAKE) -C basic_sound distclean +basic_sound_cleanall: + $(MAKE) -C basic_sound cleanall +basic_sound_info: + $(MAKE) -C basic_sound info +basic_sound_makefiles: + $(MAKE) -C basic_sound makefiles +basic_sound: + $(MAKE) -C basic_sound all +.PHONY: basic_sound_all basic_sound_debug basic_sound_smart basic_sound_release basic_sound_units basic_sound_examples basic_sound_shared basic_sound_install basic_sound_sourceinstall basic_sound_exampleinstall basic_sound_distinstall basic_sound_zipinstall basic_sound_zipsourceinstall basic_sound_zipexampleinstall basic_sound_zipdistinstall basic_sound_clean basic_sound_distclean basic_sound_cleanall basic_sound_info basic_sound_makefiles basic_sound +endif +ifdef TARGET_DIRS_REVERB +reverb_all: + $(MAKE) -C reverb all +reverb_debug: + $(MAKE) -C reverb debug +reverb_smart: + $(MAKE) -C reverb smart +reverb_release: + $(MAKE) -C reverb release +reverb_units: + $(MAKE) -C reverb units +reverb_examples: + $(MAKE) -C reverb examples +reverb_shared: + $(MAKE) -C reverb shared +reverb_install: + $(MAKE) -C reverb install +reverb_sourceinstall: + $(MAKE) -C reverb sourceinstall +reverb_exampleinstall: + $(MAKE) -C reverb exampleinstall +reverb_distinstall: + $(MAKE) -C reverb distinstall +reverb_zipinstall: + $(MAKE) -C reverb zipinstall +reverb_zipsourceinstall: + $(MAKE) -C reverb zipsourceinstall +reverb_zipexampleinstall: + $(MAKE) -C reverb zipexampleinstall +reverb_zipdistinstall: + $(MAKE) -C reverb zipdistinstall +reverb_clean: + $(MAKE) -C reverb clean +reverb_distclean: + $(MAKE) -C reverb distclean +reverb_cleanall: + $(MAKE) -C reverb cleanall +reverb_info: + $(MAKE) -C reverb info +reverb_makefiles: + $(MAKE) -C reverb makefiles +reverb: + $(MAKE) -C reverb all +.PHONY: reverb_all reverb_debug reverb_smart reverb_release reverb_units reverb_examples reverb_shared reverb_install reverb_sourceinstall reverb_exampleinstall reverb_distinstall reverb_zipinstall reverb_zipsourceinstall reverb_zipexampleinstall reverb_zipdistinstall reverb_clean reverb_distclean reverb_cleanall reverb_info reverb_makefiles reverb +endif +ifdef TARGET_DIRS_SONG_EVENTS_EXAMPLE +song_events_example_all: + $(MAKE) -C song_events_example all +song_events_example_debug: + $(MAKE) -C song_events_example debug +song_events_example_smart: + $(MAKE) -C song_events_example smart +song_events_example_release: + $(MAKE) -C song_events_example release +song_events_example_units: + $(MAKE) -C song_events_example units +song_events_example_examples: + $(MAKE) -C song_events_example examples +song_events_example_shared: + $(MAKE) -C song_events_example shared +song_events_example_install: + $(MAKE) -C song_events_example install +song_events_example_sourceinstall: + $(MAKE) -C song_events_example sourceinstall +song_events_example_exampleinstall: + $(MAKE) -C song_events_example exampleinstall +song_events_example_distinstall: + $(MAKE) -C song_events_example distinstall +song_events_example_zipinstall: + $(MAKE) -C song_events_example zipinstall +song_events_example_zipsourceinstall: + $(MAKE) -C song_events_example zipsourceinstall +song_events_example_zipexampleinstall: + $(MAKE) -C song_events_example zipexampleinstall +song_events_example_zipdistinstall: + $(MAKE) -C song_events_example zipdistinstall +song_events_example_clean: + $(MAKE) -C song_events_example clean +song_events_example_distclean: + $(MAKE) -C song_events_example distclean +song_events_example_cleanall: + $(MAKE) -C song_events_example cleanall +song_events_example_info: + $(MAKE) -C song_events_example info +song_events_example_makefiles: + $(MAKE) -C song_events_example makefiles +song_events_example: + $(MAKE) -C song_events_example all +.PHONY: song_events_example_all song_events_example_debug song_events_example_smart song_events_example_release song_events_example_units song_events_example_examples song_events_example_shared song_events_example_install song_events_example_sourceinstall song_events_example_exampleinstall song_events_example_distinstall song_events_example_zipinstall song_events_example_zipsourceinstall song_events_example_zipexampleinstall song_events_example_zipdistinstall song_events_example_clean song_events_example_distclean song_events_example_cleanall song_events_example_info song_events_example_makefiles song_events_example +endif +ifdef TARGET_DIRS_SONG_EVENTS_EXAMPLE2 +song_events_example2_all: + $(MAKE) -C song_events_example2 all +song_events_example2_debug: + $(MAKE) -C song_events_example2 debug +song_events_example2_smart: + $(MAKE) -C song_events_example2 smart +song_events_example2_release: + $(MAKE) -C song_events_example2 release +song_events_example2_units: + $(MAKE) -C song_events_example2 units +song_events_example2_examples: + $(MAKE) -C song_events_example2 examples +song_events_example2_shared: + $(MAKE) -C song_events_example2 shared +song_events_example2_install: + $(MAKE) -C song_events_example2 install +song_events_example2_sourceinstall: + $(MAKE) -C song_events_example2 sourceinstall +song_events_example2_exampleinstall: + $(MAKE) -C song_events_example2 exampleinstall +song_events_example2_distinstall: + $(MAKE) -C song_events_example2 distinstall +song_events_example2_zipinstall: + $(MAKE) -C song_events_example2 zipinstall +song_events_example2_zipsourceinstall: + $(MAKE) -C song_events_example2 zipsourceinstall +song_events_example2_zipexampleinstall: + $(MAKE) -C song_events_example2 zipexampleinstall +song_events_example2_zipdistinstall: + $(MAKE) -C song_events_example2 zipdistinstall +song_events_example2_clean: + $(MAKE) -C song_events_example2 clean +song_events_example2_distclean: + $(MAKE) -C song_events_example2 distclean +song_events_example2_cleanall: + $(MAKE) -C song_events_example2 cleanall +song_events_example2_info: + $(MAKE) -C song_events_example2 info +song_events_example2_makefiles: + $(MAKE) -C song_events_example2 makefiles +song_events_example2: + $(MAKE) -C song_events_example2 all +.PHONY: song_events_example2_all song_events_example2_debug song_events_example2_smart song_events_example2_release song_events_example2_units song_events_example2_examples song_events_example2_shared song_events_example2_install song_events_example2_sourceinstall song_events_example2_exampleinstall song_events_example2_distinstall song_events_example2_zipinstall song_events_example2_zipsourceinstall song_events_example2_zipexampleinstall song_events_example2_zipdistinstall song_events_example2_clean song_events_example2_distclean song_events_example2_cleanall song_events_example2_info song_events_example2_makefiles song_events_example2 +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/audio/maxmod/Makefile.fpc b/packages/libndsfpc/examples/audio/maxmod/Makefile.fpc new file mode 100644 index 0000000000..1f6e0ae2da --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=audio_modes basic_sound reverb song_events_example song_events_example2 + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile b/packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile new file mode 100644 index 0000000000..239396bf5f --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile @@ -0,0 +1,1629 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=audio_modes +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_LOADERS+=soundbank.bin $(GFX_FILES) +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_loaders +ifneq ($(TARGET_LOADERS),) +override ALLTARGET+=fpc_loaders +override CLEANTARGET+=fpc_loaders_clean +override INSTALLTARGET+=fpc_loaders_install +override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS)) +endif +%$(OEXT): %$(LOADEREXT) +ifdef COMPILER_UNITTARGETDIR + $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $< +else + $(AS) -o $*$(OEXT) $< +endif +fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES) +fpc_loaders_clean: +ifdef COMPILER_UNITTARGETDIR + -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) +else + -$(DEL) $(LOADEROFILES) +endif +fpc_loaders_install: + $(MKDIR) $(INSTALL_UNITDIR) +ifdef COMPILER_UNITTARGETDIR + $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR) +else + $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR) +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile.fpc b/packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile.fpc new file mode 100644 index 0000000000..4f0a0c535c --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/audio_modes/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders=soundbank.bin $(GFX_FILES) +programs=audio_modes + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/keyg-subtonal.xm b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/keyg-subtonal.xm new file mode 100644 index 0000000000..0090da863e Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/keyg-subtonal.xm differ diff --git a/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/purple_motion-inspiration.s3m b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/purple_motion-inspiration.s3m new file mode 100644 index 0000000000..e0b5e6274b Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/purple_motion-inspiration.s3m differ diff --git a/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/rez-monday.mod b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/rez-monday.mod new file mode 100644 index 0000000000..f3f1d9d714 Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/rez-monday.mod differ diff --git a/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio_modes.pp b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio_modes.pp new file mode 100644 index 0000000000..3e04d4aad0 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio_modes.pp @@ -0,0 +1,219 @@ +program AudioModes; +{$L build/soundbank.bin.o} + +uses + ctypes, nds9, maxmod9; + +(*********************************************** + * this example demonstrates the 3 audio modes + * + * functions used: + * mmInitDefaultMem(soundbank) + * Initialize with default settings + * + * mmLoad( module ) + * Loads a module to be played + * + * mmStart( module ) + * Starts playback of a module + * + * mmStop() + * Stops module playback + * + * mmSelectMode( mode ) + * Selects the audio mode + * modes: + * 0: MM_MODE_A, hardware audio mode + * 1: MM_MODE_B, interpolated audio mode + * 2: MM_MODE_C, extended audio mode + *********************************************************) + + +var + soundbank_bin_end: array [0..0] of cuint8; cvar; external; + soundbank_bin: array [0..0] of cuint8; cvar; external; + soundbank_bin_size: cuint32; cvar; external; + +const + MOD_KEYG_SUBTONAL = 0; + MOD_PURPLE_MOTION_INSPIRATION = 1; + MOD_REZ_MONDAY = 2; + MSL_NSONGS = 3; + MSL_NSAMPS = 65; + MSL_BANKSIZE = 68; + + + +//--------------------------------------------- + SHOW_TEXT = #10 + + +' Maxmod Audio Modes Example'#10#10 + + +' Song: '#10 + +' Mode: '#10#10 + + +' Left/Right: Select Song'#10 + +' Up/Down: Change Audio Mode'#10 + +' A: Start Playback'#10 + +' B: Stop Playback'#10#10 + + +' Tip: Play subtonal with the'#10 + +' extended mode or else it won''t'#10 + +' sound right.'#10#10 + + +' Another Tip: The interpolated'#10 + +' mode doesn''t work in current'#10 + +' emulators.'; +//--------------------------------------------- + + + + +var + // song order + song_order: array [0..2] of cshort = ( MOD_KEYG_SUBTONAL, MOD_REZ_MONDAY, MOD_PURPLE_MOTION_INSPIRATION ); + + // rez-monday.mod is a bit loud, so we will lower the volume to 500 (normal volume is 1024) + song_volumes: array [0..2] of cshort = ( 1024, 500, 1024 ); + + // strings for the "Song: " display + song_titles: array [0..2] of pchar = ( + 'subtonal (30ch) ', + 'monday (14ch) ', + 'inspiration (4ch)'); + +// strings for the "Mode: " display + audiomode_names: array [0..2] of pchar = ( + 'A - Hardware (16ch) ', + 'B - Interpolated (16ch)', + 'C - Extended (30ch) '); + + song: integer = 0; + mode: integer = 0; + keys: integer; + + + +procedure print_song(song: cint); +begin + iprintf(#27'[3;7H%s', song_titles[song] ); +end; + +procedure print_mode(mode: cint); +begin + iprintf(#27'[4;7H%s', audiomode_names[mode] ); +end; + + +begin + //--------------------------------------------------------- + // setup console + //--------------------------------------------------------- + consoleDemoInit(); + + // set a dark blue backdrop + BG_PALETTE_SUB[0] := RGB15( 0, 0, 10 ); + + //--------------------------------------------------------- + // init maxmod with default settings + //--------------------------------------------------------- + mmInitDefaultMem(mm_addr(@soundbank_bin)); + + //--------------------------------------------------------- + // load songs (must be loaded before using with mmStart) + //--------------------------------------------------------- + mmLoad( MOD_KEYG_SUBTONAL ); + mmLoad( MOD_REZ_MONDAY ); + mmLoad( MOD_PURPLE_MOTION_INSPIRATION ); + + + //--------------------------------------------------------- + // display screen info + //--------------------------------------------------------- + iprintf( SHOW_TEXT ); + print_song( song ); + print_mode( mode ); + + //--------------------------------------------------------- + // main loop + //--------------------------------------------------------- + while true do + begin + //----------------------------------------------------- + // get new keypad input + //----------------------------------------------------- + scanKeys(); + keys := keysDown(); + + //----------------------------------------------------- + // LEFT: select previous song + //----------------------------------------------------- + if( keys and KEY_LEFT ) <> 0 then + begin + dec(song); + if( song < 0 ) then song := 2; + print_song( song ); + end; + + //----------------------------------------------------- + // RIGHT: select next song + //----------------------------------------------------- + if( keys and KEY_RIGHT ) <> 0 then + begin + inc(song); + if( song > 2 ) then song := 0; + print_song( song ); + end; + + //----------------------------------------------------- + // A: start song + //----------------------------------------------------- + if( keys and KEY_A ) <> 0 then + begin + mmSetModuleVolume( song_volumes[song] ); + + // loop module until stopped with B keypress + mmStart( song_order[song], MM_PLAY_LOOP ); + end; + + //----------------------------------------------------- + // B: stop song + //----------------------------------------------------- + if( keys and KEY_B ) <> 0 then + begin + mmStop(); + end; + + //----------------------------------------------------- + // UP: next audio mode + //----------------------------------------------------- + if( keys and KEY_UP ) <> 0 then + begin + inc(mode); + if( mode > 2 ) then mode := 0; + print_mode( mode ); + + // switch audio mode + mmSelectMode( mode ); + end; + + //----------------------------------------------------- + // DOWN: previous audio mode + //----------------------------------------------------- + if( keys and KEY_DOWN )<> 0 then + begin + dec(mode); + if( mode < 0 ) then mode := 2; + print_mode( mode ); + + // switch audio mode + mmSelectMode( mode ); + end; + + //----------------------------------------------------- + // wait until next frame + //----------------------------------------------------- + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile b/packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile new file mode 100644 index 0000000000..113a46058c --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile @@ -0,0 +1,1632 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=basic_sound +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_LOADERS+=soundbank.bin $(GFX_FILES) +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -O2 -d__THUMB__ +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_loaders +ifneq ($(TARGET_LOADERS),) +override ALLTARGET+=fpc_loaders +override CLEANTARGET+=fpc_loaders_clean +override INSTALLTARGET+=fpc_loaders_install +override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS)) +endif +%$(OEXT): %$(LOADEREXT) +ifdef COMPILER_UNITTARGETDIR + $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $< +else + $(AS) -o $*$(OEXT) $< +endif +fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES) +fpc_loaders_clean: +ifdef COMPILER_UNITTARGETDIR + -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) +else + -$(DEL) $(LOADEROFILES) +endif +fpc_loaders_install: + $(MKDIR) $(INSTALL_UNITDIR) +ifdef COMPILER_UNITTARGETDIR + $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR) +else + $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR) +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile.fpc b/packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile.fpc new file mode 100644 index 0000000000..14071c506e --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/basic_sound/Makefile.fpc @@ -0,0 +1,49 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders=soundbank.bin $(GFX_FILES) +programs=basic_sound + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -O2 -d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Ambulance.wav b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Ambulance.wav new file mode 100644 index 0000000000..e3efc25b9c Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Ambulance.wav differ diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav new file mode 100644 index 0000000000..1d8665bc5e Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav differ diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod new file mode 100644 index 0000000000..7b06f97a85 Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod differ diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/basic_sound.pp b/packages/libndsfpc/examples/audio/maxmod/basic_sound/basic_sound.pp new file mode 100644 index 0000000000..e148864fd2 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/basic_sound/basic_sound.pp @@ -0,0 +1,99 @@ +program BasicSound; +{$L build/soundbank.bin.o} + +{$mode objfpc} + +uses + ctypes, nds9, maxmod9; + +const + SFX_AMBULANCE = 0; + SFX_BOOM = 1; + MOD_FLATOUTLIES = 0; + MSL_NSONGS = 1; + MSL_NSAMPS = 33; + MSL_BANKSIZE = 34; + +var + soundbank_bin_end: array [0..0] of cuint8; cvar; external; + soundbank_bin: array [0..0] of cuint8; cvar; external; + soundbank_bin_size: cuint32; cvar; external; + + ambulance, boom: mm_sound_effect; + + amb: mm_sfxhand; + keys_pressed, keys_released: integer; + +begin + consoleDemoInit(); + + mmInitDefaultMem(mm_addr(@soundbank_bin)); + + // load the module + mmLoad(MOD_FLATOUTLIES); + + // load sound effects + mmLoadEffect(SFX_AMBULANCE); + mmLoadEffect(SFX_BOOM); + + // Start playing module + mmStart(MOD_FLATOUTLIES, MM_PLAY_LOOP); + + with ambulance do + begin + id := SFX_AMBULANCE; + rate := trunc(1.0 * (1 shl 10)); + handle := 0; + volume := 255; + panning := 0; + end; + + with boom do + begin + id := SFX_BOOM; + rate := trunc(1.0 * (1 shl 10)); + handle := 0; + volume := 255; + panning := 255; + end; + + // ansi escape sequence to clear screen and home cursor + // /x1b[line;columnH + iprintf(#27 + '[2J'); + + // ansi escape sequence to set print co-ordinates + // /x1b[line;columnH + iprintf(#27 + '[0;8HMaxMod Audio demo'); + iprintf(#27 + '[3;0HHold A for ambulance sound'); + iprintf(#27 + '[4;0HPress B for boom sound'); + + // sound effect handle (for cancelling it later) + amb := 0; + + while true do + begin + swiWaitForVBlank(); + scanKeys(); + + keys_pressed := keysDown(); + keys_released := keysUp(); + + // Play looping ambulance sound effect out of left speaker if A button is pressed + if ( keys_pressed and KEY_A ) <> 0 then + begin + amb := mmEffectEx(@ambulance); + end; + + // stop ambulance sound when A button is released + if ( keys_released and KEY_A ) <> 0 then + begin + mmEffectCancel(amb); + end; + + // Play explosion sound effect out of right speaker if B button is pressed + if ( keys_pressed and KEY_B ) <> 0 then + begin + mmEffectEx(@boom); + end; + end; +end. diff --git a/packages/libndsfpc/examples/audio/maxmod/reverb/Makefile b/packages/libndsfpc/examples/audio/maxmod/reverb/Makefile new file mode 100644 index 0000000000..abe7497687 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/reverb/Makefile @@ -0,0 +1,1629 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=reverb +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_LOADERS+=soundbank.bin $(GFX_FILES) +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_loaders +ifneq ($(TARGET_LOADERS),) +override ALLTARGET+=fpc_loaders +override CLEANTARGET+=fpc_loaders_clean +override INSTALLTARGET+=fpc_loaders_install +override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS)) +endif +%$(OEXT): %$(LOADEREXT) +ifdef COMPILER_UNITTARGETDIR + $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $< +else + $(AS) -o $*$(OEXT) $< +endif +fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES) +fpc_loaders_clean: +ifdef COMPILER_UNITTARGETDIR + -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) +else + -$(DEL) $(LOADEROFILES) +endif +fpc_loaders_install: + $(MKDIR) $(INSTALL_UNITDIR) +ifdef COMPILER_UNITTARGETDIR + $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR) +else + $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR) +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/maxmod/reverb/Makefile.fpc b/packages/libndsfpc/examples/audio/maxmod/reverb/Makefile.fpc new file mode 100644 index 0000000000..64c636363a --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/reverb/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders=soundbank.bin $(GFX_FILES) +programs=reverb + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/maxmod/reverb/audio/tempest-zen_bowling.mod b/packages/libndsfpc/examples/audio/maxmod/reverb/audio/tempest-zen_bowling.mod new file mode 100644 index 0000000000..9656cdcd4a Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/reverb/audio/tempest-zen_bowling.mod differ diff --git a/packages/libndsfpc/examples/audio/maxmod/reverb/reverb.pp b/packages/libndsfpc/examples/audio/maxmod/reverb/reverb.pp new file mode 100644 index 0000000000..1b0323b729 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/reverb/reverb.pp @@ -0,0 +1,161 @@ +program reverb; +{$L build/soundbank.bin.o} + +{$mode objfpc} + +uses + ctypes, nds9, maxmod9; + +var + soundbank_bin_end: array [0..0] of cuint8; cvar; external; + soundbank_bin: array [0..0] of cuint8; cvar; external; + soundbank_bin_size: cuint32; cvar; external; + +const + SFX_DAM = 0; + MOD_TEMPEST_ZEN_BOWLING = 0; + MSL_NSONGS = 1; + MSL_NSAMPS = 31; + MSL_BANKSIZE = 32; + + SCREEN_TEXT = #10 + + + ' Maxmod Reverb Example'#10#10 + + + ' Press A to toggle reverb. '#10#10; + + rv_delay_left = 500; // milliseconds + rv_delay_right = 520; + rv_rate = 32768; // Hertz + rv_format = 16; // 16-bit + +procedure setupReverb(); +var + rv_buffer_left, + rv_buffer_right: pointer; + rv_size_left, + rv_size_right: cint; + config: mm_reverb_cfg; +begin + //--------------------------------------------------------- + // Enable reverb system + //--------------------------------------------------------- + mmReverbEnable(); + + //--------------------------------------------------------- + // Calculate amount required and allocate memory + // for both reverb channels + //--------------------------------------------------------- + rv_size_left := mmReverbBufferSize( rv_format, rv_rate, rv_delay_left ); + rv_size_right := mmReverbBufferSize( rv_format, rv_rate, rv_delay_right ); + + GetMem(rv_buffer_left, rv_size_left * 4); + GetMem(rv_buffer_right, rv_size_right * 4); + + //--------------------------------------------------------- + // Configure reverb settings + //--------------------------------------------------------- + + config.flags := MMRF_MEMORY or MMRF_DELAY or MMRF_FEEDBACK or + MMRF_PANNING or MMRF_DRYLEFT or MMRF_DRYRIGHT or + MMRF_RATE or MMRF_16BITLEFT or MMRF_16BITRIGHT or + MMRF_INVERSEPAN or MMRF_BOTH; + + config.memory := rv_buffer_left; // Set memory target (for left) + config.delay := rv_size_left; // Set delay (for left) + config.feedback := 1024; // Set feedback to 50% (for both) + config.panning := 0; // Set panning to 0% (and inversed (100%) for right channel) + config.rate := 16777216 div rv_rate; // Set sampling rate for both channels + mmReverbConfigure(@config); // Run configuration... + + //--------------------------------------------------------- + // Configure remaining parameters (right channel memory + // and delay) + //--------------------------------------------------------- + config.flags := MMRF_MEMORY or MMRF_DELAY or MMRF_RIGHT; + config.delay := rv_size_right; + config.memory := rv_buffer_right; + mmReverbConfigure( @config ); + +end; + +var + reverb_is_started: cint = 0; + keys: cint; + + +begin + //--------------------------------------------------------- + // setup console + //--------------------------------------------------------- + consoleDemoInit(); + + // give it a dark blue backdrop + BG_PALETTE_SUB[0] := RGB15( 0, 0, 13 ); + + //--------------------------------------------------------- + // init maxmod with default settings + //--------------------------------------------------------- + mmInitDefaultMem(mm_addr(@soundbank_bin)); + + //--------------------------------------------------------- + // setup and configure the reverb system + //--------------------------------------------------------- + setupReverb(); + + //--------------------------------------------------------- + // load and play test module + //--------------------------------------------------------- + mmLoad( MOD_TEMPEST_ZEN_BOWLING ); + mmStart( MOD_TEMPEST_ZEN_BOWLING, MM_PLAY_LOOP ); + + //--------------------------------------------------------- + // display screen info + //--------------------------------------------------------- + iprintf(SCREEN_TEXT); + + //--------------------------------------------------------- + // main loop + //--------------------------------------------------------- + while true do + begin + //----------------------------------------------------- + // get new keypad input + //----------------------------------------------------- + scanKeys(); + keys := keysDown(); + + //----------------------------------------------------- + // A: toggle reverb + //----------------------------------------------------- + if( keys and KEY_A ) <> 0 then + begin + if (reverb_is_started) = 0 then + begin + // start reverb + mmReverbStart( MMRC_BOTH ); + + // lower module volume & tempo + // this creates a cool atmosphere + mmSetModuleVolume( 550 ); + mmSetModuleTempo( 800 ); + + reverb_is_started := 1; + end else + begin + // stop reverb and restore volume and tempo + mmReverbStop( MMRC_BOTH ); + mmSetModuleVolume( $400 ); + mmSetModuleTempo( $400 ); + + reverb_is_started := 0; + end; + end; + + //----------------------------------------------------- + // wait until next frame + //----------------------------------------------------- + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile b/packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile new file mode 100644 index 0000000000..ad8bd502db --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile @@ -0,0 +1,1652 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +INC = inc +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=song_events_example +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_LOADERS+=mmsolution.bin +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_loaders +ifneq ($(TARGET_LOADERS),) +override ALLTARGET+=fpc_loaders +override CLEANTARGET+=fpc_loaders_clean +override INSTALLTARGET+=fpc_loaders_install +override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS)) +endif +%$(OEXT): %$(LOADEREXT) +ifdef COMPILER_UNITTARGETDIR + $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $< +else + $(AS) -o $*$(OEXT) $< +endif +fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES) +fpc_loaders_clean: +ifdef COMPILER_UNITTARGETDIR + -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) +else + -$(DEL) $(LOADEROFILES) +endif +fpc_loaders_install: + $(MKDIR) $(INSTALL_UNITDIR) +ifdef COMPILER_UNITTARGETDIR + $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR) +else + $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR) +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +endif +mmsolution.bin.o : $(AUDIO_FILES) + @$(MMUTIL) $^ -d -o$(BUILD)/mmsolution.bin -h$(BUILD)/mmsolution.h + $(BIN2S) $(BUILD)/mmsolution.bin > $(BUILD)/mmsolution.bin.s + $(AS) -o $(BUILD)/mmsolution.bin.o $(BUILD)/mmsolution.bin.s +$(GFX_FILES): $(wildcard %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @echo 'Done!' diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile.fpc b/packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile.fpc new file mode 100644 index 0000000000..8838c21291 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example/Makefile.fpc @@ -0,0 +1,78 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders=mmsolution.bin +programs=song_events_example + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +INC = inc +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +endif + +# +# Audio files processing rule +# +mmsolution.bin.o : $(AUDIO_FILES) + @$(MMUTIL) $^ -d -o$(BUILD)/mmsolution.bin -h$(BUILD)/mmsolution.h + $(BIN2S) $(BUILD)/mmsolution.bin > $(BUILD)/mmsolution.bin.s + $(AS) -o $(BUILD)/mmsolution.bin.o $(BUILD)/mmsolution.bin.s + +# +# Png files processing rule +# +$(GFX_FILES): $(wildcard %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @echo 'Done!' diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.grit b/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.grit new file mode 100644 index 0000000000..6ec2b74e54 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.grit @@ -0,0 +1 @@ +#default options work for sprites \ No newline at end of file diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.png b/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.png new file mode 100644 index 0000000000..de216918b4 Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.png differ diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example/music/example.it b/packages/libndsfpc/examples/audio/maxmod/song_events_example/music/example.it new file mode 100644 index 0000000000..ab42fb4cef Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/song_events_example/music/example.it differ diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example/song_events_example.pp b/packages/libndsfpc/examples/audio/maxmod/song_events_example/song_events_example.pp new file mode 100644 index 0000000000..b5cc199eda --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example/song_events_example.pp @@ -0,0 +1,120 @@ +program song_events_example; +{$L build/ball.o} +{$L build/mmsolution.bin.o} + +{$mode objfpc} + +uses + ctypes, nds9, maxmod9; + +const + ballTilesLen = 1024; + ballPalLen = 512; +var + ballTiles: array [0..255] of cuint; cvar; external; + ballPal: array [0..255] of cushort; cvar; external; + + +const + MOD_EXAMPLE = 0; + MSL_NSONGS = 1; + MSL_NSAMPS = 3; + MSL_BANKSIZE = 4; + +var + mmsolution_bin_end: array [0..0] of cuint8; cvar; external; + mmsolution_bin: array [0..0] of cuint8; cvar; external; + mmsolution_bin_size: cuint32; cvar; external; + + + spriteDy: cint = 0; + spriteY: cint = 140; + +//--------------------------------------------------------------------------------- +// callback function to handle song events +//--------------------------------------------------------------------------------- +function myEventHandler(msg, param: mm_word): pmm_word; +begin + case msg of + + MMCB_SONGMESSAGE: // process song messages + // if song event 1 is triggered, set sprite's y velocity to make it jump + if (param = 1) then spriteDy := -16; + + MMCB_SONGFINISHED: // process song finish message (only triggered in songs played with MM_PLAY_ONCE) + exit; + end; +end; + +var + gfx: pcuint16; + +begin + videoSetMode(MODE_0_2D); + + //initialize the sprite engine with 1D mapping 32 byte boundary + //and no external palette support + oamInit(oamMain, SpriteMapping_1D_32, false); + + vramSetBankA(VRAM_A_MAIN_SPRITE); + + //allocate some space for the sprite graphics + gfx := oamAllocateGfx(oamMain, SpriteSize_32x32, SpriteColorFormat_256Color); + + //copy in our ball graphics + dmaCopy(@ballTiles, gfx, ballTilesLen); + dmaCopy(@ballPal, SPRITE_PALETTE, ballPalLen); + + //-------------------------------------------- + // initialise maxmod using default settings, and + // enable interface for a soundbank that is loaded + // into memory + //-------------------------------------------- + mmInitDefaultMem( mm_addr(@mmsolution_bin)); + + // setup maxmod to use the song event handler + mmSetEventHandler(mm_callback(@myEventHandler)); + + // load song + // values for this function are in the solution header + mmLoad( MOD_EXAMPLE ); + + // start the music playing + mmStart( MOD_EXAMPLE, MM_PLAY_LOOP ); + + while true do + begin + // Sprite accelerates down + spriteDy := spriteDy + 2; + + // sprite falls + spriteY := spriteY + spriteDy; + + // Floor is arbitrarily set to 140 + if ( spriteY > 140 ) then spriteY := 140; + + + oamSet(oamMain, //main graphics engine context + 0, //oam index (0 to 127) + (256 div 2)-16, //x and y pixel location of the sprite + spriteY, + 0, //priority, lower renders last (on top) + 0, //palette index if multiple palettes or the alpha value if bmp sprite + SpriteSize_32x32, + SpriteColorFormat_256Color, + gfx, //pointer to the loaded graphics + -1, //sprite rotation data + false, //double the size when rotating? + false, //hide the sprite? + false, false, //vflip, hflip + false //apply mosaic + ); + + swiWaitForVBlank(); + + //send the updates to the hardware + oamUpdate(oamMain); + end; + +end. + diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile new file mode 100644 index 0000000000..57079335b9 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile @@ -0,0 +1,1629 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/28] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=song_events_example2 +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_LOADERS+=mmsolution.bin $(GFX_FILES) +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_loaders +ifneq ($(TARGET_LOADERS),) +override ALLTARGET+=fpc_loaders +override CLEANTARGET+=fpc_loaders_clean +override INSTALLTARGET+=fpc_loaders_install +override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS)) +endif +%$(OEXT): %$(LOADEREXT) +ifdef COMPILER_UNITTARGETDIR + $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $< +else + $(AS) -o $*$(OEXT) $< +endif +fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES) +fpc_loaders_clean: +ifdef COMPILER_UNITTARGETDIR + -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) +else + -$(DEL) $(LOADEROFILES) +endif +fpc_loaders_install: + $(MKDIR) $(INSTALL_UNITDIR) +ifdef COMPILER_UNITTARGETDIR + $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR) +else + $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR) +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +endif +mmsolution.bin.o : $(AUDIO_FILES) + @$(MMUTIL) $^ -d -o$(BUILD)/mmsolution.bin -h$(BUILD)/mmsolution.h + $(BIN2S) $(BUILD)/mmsolution.bin > $(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 diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc new file mode 100644 index 0000000000..03301b13e0 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/Makefile.fpc @@ -0,0 +1,47 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders=mmsolution.bin $(GFX_FILES) +programs=song_events_example2 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +endif +mmsolution.bin.o : $(AUDIO_FILES) + @$(MMUTIL) $^ -d -o$(BUILD)/mmsolution.bin -h$(BUILD)/mmsolution.h + $(BIN2S) $(BUILD)/mmsolution.bin > $(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 + diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it new file mode 100644 index 0000000000..b8137d862b Binary files /dev/null and b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it differ diff --git a/packages/libndsfpc/examples/audio/maxmod/song_events_example2/song_events_example2.pp b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/song_events_example2.pp new file mode 100644 index 0000000000..293cdc04d4 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/song_events_example2.pp @@ -0,0 +1,155 @@ +program song_events_example2; +{$L build/mmsolution.bin.o} + +{$mode objfpc} + +uses + ctypes, nds9, maxmod9; + +const + MOD_EXAMPLE2 = 0; + MSL_NSONGS = 1; + MSL_NSAMPS = 3; + MSL_BANKSIZE = 4; + +var + mmsolution_bin_end: array [0..0] of cuint8; cvar; external; + mmsolution_bin: array [0..0] of cuint8; cvar; external; + mmsolution_bin_size: cuint32; cvar; external; + + + +// a simple sprite structure +type + MySprite = record + gfx: pcuint16; + size: SpriteSize; + format: SpriteColorFormat; + rotationIndex: cint; + paletteAlpha: cint; + x: cint; + y: cint; + dy: cint; + end; + + +var + sprites: array[0..4] of MySprite; + + +function myEventHandler(msg, param: mm_word): mm_word; +begin + case msg of + MMCB_SONGMESSAGE: // process song messages + begin + if (param = 1) then sprites[0].dy := -8; + if (param = 2) then sprites[1].dy := -8; + if (param = 3) then sprites[2].dy := -8; + if (param = 4) then sprites[3].dy := -8; + if (param = 5) then sprites[4].dy := -8; + end; + MMCB_SONGFINISHED:; // process song finish message (only triggered in songs played with MM_PLAY_ONCE) + end; + result := 0; +end; + + + +var + j: integer; + i: integer; + +begin + for j := 0 to 4 do + with sprites[j] do + begin + gfx := nil; + size := SpriteSize_16x16; + format := SpriteColorFormat_256Color; + rotationIndex := 0; + paletteAlpha := 0; + x := 20 +(50 * j); + y := 96; + dy := 0; + end; + + videoSetMode(MODE_0_2D); + videoSetModeSub(0); // not using subscreen + + lcdMainOnBottom(); + + //initialize the sprite engine with 1D mapping 128 byte boundary + //and no external palette support + oamInit(oamMain, SpriteMapping_1D_32, false); + + vramSetBankA(VRAM_A_MAIN_SPRITE); + + for i := 0 to 4 do + begin + //allocate some space for the sprite graphics + sprites[i].gfx := oamAllocateGfx(oamMain, sprites[i].size, sprites[i].format); + + //fill each sprite with a different index (2 pixels at a time) + dmaFillHalfWords( ((i+1) shl 8) or (i + 1), sprites[i].gfx, 32*32); + end; + + //set indexes to different colours + SPRITE_PALETTE[1] := RGB15(31,0,0); + SPRITE_PALETTE[2] := RGB15(0,31,0); + SPRITE_PALETTE[3] := RGB15(0,0,31); + SPRITE_PALETTE[4] := RGB15(31,0,31); + SPRITE_PALETTE[5] := RGB15(0,31,31); + + // initialise maxmod using default settings, and enable interface for soundbank that is loaded into memory + mmInitDefaultMem( mm_addr(@mmsolution_bin)); + + // setup maxmod to use the song event handler + mmSetEventHandler( mm_callback(@myEventHandler)); + + // load song + // values for this function are in the solution header + mmLoad( MOD_EXAMPLE2 ); + + // start song playing + mmStart( MOD_EXAMPLE2, MM_PLAY_LOOP ); + + while true do + begin + for i := 0 to 4 do + begin + // constantly increase the sprite's y velocity + sprites[i].dy := sprites[i].dy + 1; + + // update the sprite's y position with its y velocity + sprites[i].y := sprites[i].y + sprites[i].dy; + + // clamp the sprite's y position + if ( sprites[i].y<72 ) then sprites[i].y := 72; + if ( sprites[i].y>96 ) then sprites[i].y := 96; + + oamSet(oamMain, //main graphics engine context + i, //oam index (0 to 127) + sprites[i].x, //x and y pixel location of the sprite + sprites[i].y, + 0, //priority, lower renders last (on top) + sprites[i].paletteAlpha, //palette index + sprites[i].size, + sprites[i].format, + sprites[i].gfx, //pointer to the loaded graphics + sprites[i].rotationIndex, //sprite rotation data + false, //double the size when rotating? + false, //hide the sprite? + false, false, //vflip, hflip + false //apply mosaic + ); + end; + + swiWaitForVBlank(); + + //send the updates to the hardware + oamUpdate(oamMain); + end; + +end. + + diff --git a/packages/libndsfpc/examples/audio/micrecord/Makefile b/packages/libndsfpc/examples/audio/micrecord/Makefile new file mode 100644 index 0000000000..a76e98558b --- /dev/null +++ b/packages/libndsfpc/examples/audio/micrecord/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=micrecord +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/micrecord/Makefile.fpc b/packages/libndsfpc/examples/audio/micrecord/Makefile.fpc new file mode 100644 index 0000000000..e952ae514f --- /dev/null +++ b/packages/libndsfpc/examples/audio/micrecord/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=micrecord + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/audio/micrecord/micrecord.pp b/packages/libndsfpc/examples/audio/micrecord/micrecord.pp new file mode 100644 index 0000000000..a022ecab26 --- /dev/null +++ b/packages/libndsfpc/examples/audio/micrecord/micrecord.pp @@ -0,0 +1,94 @@ +program micrecord; + +uses + ctypes, nds9, maxmod9; + +const + //the record sample rate + sample_rate = 8000; + +var + //buffer to hold sound data for playback + sound_buffer: pcuint16 = nil; + + //buffer which is written to by the arm7 + mic_buffer: pcuint16 = nil; + + //the length of the current data + data_length: cuint32 = 0; + + //enough hold 5 seconds of 16bit audio + sound_buffer_size: cuint32 = sample_rate * 2 * 5; + + //the mic buffer sent to the arm7 is a double buffer + //every time it is half full the arm7 signals us so we can read the + //data. I want the buffer to swap about once per frame so i chose a + //buffer size large enough to hold two frames of 16bit mic data + mic_buffer_size: cuint32 = sample_rate * 2 div 30; + + +//mic stream handler +procedure micHandler(data: pointer; length: cint); +begin + if (sound_buffer = nil) or (data_length > sound_buffer_size) then + exit; + + DC_InvalidateRange(data, length); + + dmaCopy(data, pcuint8(sound_buffer) + data_length, length); + + data_length := data_length + length; + + iprintf('.'); + +end; + +procedure rec(); +begin + data_length := 0; + soundMicRecord(mic_buffer, mic_buffer_size, MicFormat_12Bit, sample_rate, @micHandler); +end; + +procedure play(); +begin + soundMicOff(); + soundEnable(); + iprintf('data length: %i'#10, data_length); + soundPlaySample(sound_buffer, SoundFormat_16Bit, data_length, sample_rate, 127, 64, false, 0); +end; + +var + key: cint; + recording: cbool = false; +begin + getmem(sound_buffer, sound_buffer_size); + + getmem(mic_buffer, mic_buffer_size); + + consoleDemoInit(); + + iprintf('Press A to record / play'#10); + + while true do + begin + scanKeys(); + key := keysDown(); + + if(key and KEY_A )<> 0 then + begin + if recording then + begin + play(); + iprintf('playing'); + end else + begin + rec(); + iprintf('recording'); + end; + recording := not recording; + end; + + swiWaitForVBlank(); + + end; +end. diff --git a/packages/libndsfpc/examples/card/Makefile b/packages/libndsfpc/examples/card/Makefile new file mode 100644 index 0000000000..fdf958ac83 --- /dev/null +++ b/packages/libndsfpc/examples/card/Makefile @@ -0,0 +1,1437 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=eeprom +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_EEPROM=1 +endif +ifdef TARGET_DIRS_EEPROM +eeprom_all: + $(MAKE) -C eeprom all +eeprom_debug: + $(MAKE) -C eeprom debug +eeprom_smart: + $(MAKE) -C eeprom smart +eeprom_release: + $(MAKE) -C eeprom release +eeprom_units: + $(MAKE) -C eeprom units +eeprom_examples: + $(MAKE) -C eeprom examples +eeprom_shared: + $(MAKE) -C eeprom shared +eeprom_install: + $(MAKE) -C eeprom install +eeprom_sourceinstall: + $(MAKE) -C eeprom sourceinstall +eeprom_exampleinstall: + $(MAKE) -C eeprom exampleinstall +eeprom_distinstall: + $(MAKE) -C eeprom distinstall +eeprom_zipinstall: + $(MAKE) -C eeprom zipinstall +eeprom_zipsourceinstall: + $(MAKE) -C eeprom zipsourceinstall +eeprom_zipexampleinstall: + $(MAKE) -C eeprom zipexampleinstall +eeprom_zipdistinstall: + $(MAKE) -C eeprom zipdistinstall +eeprom_clean: + $(MAKE) -C eeprom clean +eeprom_distclean: + $(MAKE) -C eeprom distclean +eeprom_cleanall: + $(MAKE) -C eeprom cleanall +eeprom_info: + $(MAKE) -C eeprom info +eeprom_makefiles: + $(MAKE) -C eeprom makefiles +eeprom: + $(MAKE) -C eeprom all +.PHONY: eeprom_all eeprom_debug eeprom_smart eeprom_release eeprom_units eeprom_examples eeprom_shared eeprom_install eeprom_sourceinstall eeprom_exampleinstall eeprom_distinstall eeprom_zipinstall eeprom_zipsourceinstall eeprom_zipexampleinstall eeprom_zipdistinstall eeprom_clean eeprom_distclean eeprom_cleanall eeprom_info eeprom_makefiles eeprom +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/card/Makefile.fpc b/packages/libndsfpc/examples/card/Makefile.fpc new file mode 100644 index 0000000000..b33cba1d21 --- /dev/null +++ b/packages/libndsfpc/examples/card/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=eeprom + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/card/eeprom/Makefile b/packages/libndsfpc/examples/card/eeprom/Makefile new file mode 100644 index 0000000000..388f29d017 --- /dev/null +++ b/packages/libndsfpc/examples/card/eeprom/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=eeprom +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/card/eeprom/Makefile.fpc b/packages/libndsfpc/examples/card/eeprom/Makefile.fpc new file mode 100644 index 0000000000..88785be7a5 --- /dev/null +++ b/packages/libndsfpc/examples/card/eeprom/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=eeprom + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/card/eeprom/eeprom.pp b/packages/libndsfpc/examples/card/eeprom/eeprom.pp new file mode 100644 index 0000000000..736d5eb4ec --- /dev/null +++ b/packages/libndsfpc/examples/card/eeprom/eeprom.pp @@ -0,0 +1,94 @@ +program eeprom; + +uses + ctypes, nds9, sysutils; + +var + header1: array [0..511] of cchar; + header2: array [0..511] of cchar; + vtype, vsize: integer; + data: array [0..511] of cchar; + +procedure pause(); +begin + iprintf('Press start...'#10); + while true do + begin + scanKeys(); + if (keysDown() and KEY_START)<>0 then + exit; + swiWaitForVBlank(); + end; + scanKeys(); +end; + +var + x, y: integer; + c: u8; + +begin + consoleDemoInit(); + + iprintf('Reading cart info...'#10); + + sysSetBusOwners(true, true); // give ARM9 access to the cart + + while true do + begin + // Read the header twice to verify. + // If the card is being encrypted, we will get random junk + cardReadHeader(@header1); + cardReadHeader(@header2); + + // Make sure we got the same data twice + while (CompareMem(@header1, @header2, 32)) do + begin + // If not, the card needs ejected and reinserted into the DS + iprintf('Please eject & reinsert DS card.'#10); + pause(); + cardReadHeader(@header1); + cardReadHeader(@header2); + end; + + // Add a null char right after the game title, so we can print it + header1[32] := cchar(#0); + + // Read some various info about the EEPROM + vtype := cardEepromGetType(); + vsize := cardEepromGetSize(); + + iprintf('Game ID: %s'#10, header1[0]); + iprintf('EEPROM:'#10); + iprintf(' Type: %d'#10, vtype); + iprintf(' Size: %d'#10, vsize); + pause(); + + // Read the first 512 bytes of EEPROM + cardReadEeprom(0, @data, 512, vtype); + + iprintf('First 160 bytes of EEPROM: '#10); + + // Print 20 rows of 8 bytes each + for y := 0 to 19 do + begin + // print 8 bytes as hex + for x := 0 to 7 do + begin + iprintf('%02x ', data[y*8 + x]); + end; + + // print 8 bytes as characters + for x := 0 to 7 do + begin + c := data[y*8 + x]; + if not (char(c) in [#0..#7, #14..#31, #127]) then // only display if it's a printable character + iprintf('%c', c) + else + iprintf('.'); + end; + end; + + iprintf('Insert a new card to read again'#10); + pause(); + end; +end. diff --git a/packages/libndsfpc/examples/debugging/Makefile b/packages/libndsfpc/examples/debugging/Makefile new file mode 100644 index 0000000000..c900cac07e --- /dev/null +++ b/packages/libndsfpc/examples/debugging/Makefile @@ -0,0 +1,1437 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=exceptionTest +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_EXCEPTIONTEST=1 +endif +ifdef TARGET_DIRS_EXCEPTIONTEST +exceptionTest_all: + $(MAKE) -C exceptionTest all +exceptionTest_debug: + $(MAKE) -C exceptionTest debug +exceptionTest_smart: + $(MAKE) -C exceptionTest smart +exceptionTest_release: + $(MAKE) -C exceptionTest release +exceptionTest_units: + $(MAKE) -C exceptionTest units +exceptionTest_examples: + $(MAKE) -C exceptionTest examples +exceptionTest_shared: + $(MAKE) -C exceptionTest shared +exceptionTest_install: + $(MAKE) -C exceptionTest install +exceptionTest_sourceinstall: + $(MAKE) -C exceptionTest sourceinstall +exceptionTest_exampleinstall: + $(MAKE) -C exceptionTest exampleinstall +exceptionTest_distinstall: + $(MAKE) -C exceptionTest distinstall +exceptionTest_zipinstall: + $(MAKE) -C exceptionTest zipinstall +exceptionTest_zipsourceinstall: + $(MAKE) -C exceptionTest zipsourceinstall +exceptionTest_zipexampleinstall: + $(MAKE) -C exceptionTest zipexampleinstall +exceptionTest_zipdistinstall: + $(MAKE) -C exceptionTest zipdistinstall +exceptionTest_clean: + $(MAKE) -C exceptionTest clean +exceptionTest_distclean: + $(MAKE) -C exceptionTest distclean +exceptionTest_cleanall: + $(MAKE) -C exceptionTest cleanall +exceptionTest_info: + $(MAKE) -C exceptionTest info +exceptionTest_makefiles: + $(MAKE) -C exceptionTest makefiles +exceptionTest: + $(MAKE) -C exceptionTest all +.PHONY: exceptionTest_all exceptionTest_debug exceptionTest_smart exceptionTest_release exceptionTest_units exceptionTest_examples exceptionTest_shared exceptionTest_install exceptionTest_sourceinstall exceptionTest_exampleinstall exceptionTest_distinstall exceptionTest_zipinstall exceptionTest_zipsourceinstall exceptionTest_zipexampleinstall exceptionTest_zipdistinstall exceptionTest_clean exceptionTest_distclean exceptionTest_cleanall exceptionTest_info exceptionTest_makefiles exceptionTest +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/debugging/Makefile.fpc b/packages/libndsfpc/examples/debugging/Makefile.fpc new file mode 100644 index 0000000000..9e312d65de --- /dev/null +++ b/packages/libndsfpc/examples/debugging/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=exceptionTest + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/debugging/exceptionTest/Makefile b/packages/libndsfpc/examples/debugging/exceptionTest/Makefile new file mode 100644 index 0000000000..a20d174ac2 --- /dev/null +++ b/packages/libndsfpc/examples/debugging/exceptionTest/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=exceptionTest +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/debugging/exceptionTest/Makefile.fpc b/packages/libndsfpc/examples/debugging/exceptionTest/Makefile.fpc new file mode 100644 index 0000000000..6b8d6e437b --- /dev/null +++ b/packages/libndsfpc/examples/debugging/exceptionTest/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=exceptionTest + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/debugging/exceptionTest/exceptionTest.pp b/packages/libndsfpc/examples/debugging/exceptionTest/exceptionTest.pp new file mode 100644 index 0000000000..086a1c6307 --- /dev/null +++ b/packages/libndsfpc/examples/debugging/exceptionTest/exceptionTest.pp @@ -0,0 +1,25 @@ +program main; + +{$apptype arm9} +{$mode objfpc} + +uses + ctypes, nds9; + +// The default exception handler displays the exception type - data abort or undefined instruction +// you can relate the exception to your code using arm-eabi-addr2line -e
+// assuming you built with debug info this will display a source file and a line number +// The address of the instruction is shown as pc, beside the address which faulted +// the rest of the screen is a dump of the registers. + +begin + // install the default exception handler + defaultExceptionHandler(); + + // generate an exception + pu32(250)^ := 100; + + while true do + swiWaitForVBlank(); + +end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.git b/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.git deleted file mode 100644 index bc83d8b33c..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.git +++ /dev/null @@ -1,8 +0,0 @@ -# disable alpha and set opaque bit for all pixels --gT! - -# use lz77 compression --gzl - -# 16 bit bitmap --gB16 diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.png b/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.png deleted file mode 100644 index a99f433e87..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.png and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/main.pp deleted file mode 100644 index 9516b0ea2a..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/main.pp +++ /dev/null @@ -1,83 +0,0 @@ -program main; -{$L drunkenlogo.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -const - drunkenlogoBitmapLen = 26988; - -var - drunkenlogoBitmap: array [0..6746] of cuint; cvar; external; - - -function getSize(source: pcuint8; dest: pcuint16; arg: cuint32): integer; -begin - getSize := pcuint32(source)^; -end; - -function readByte(source: pcuint8): cuint8; -begin - readByte := source^; -end; - - -var - drunkenlogo_decomp: TDecompressionStream; - -begin - drunkenlogo_decomp.getSize := TGetSize(@getSize); - drunkenlogo_decomp.getResult := nil; - drunkenlogo_decomp.readByte := TReadByte(@readByte); - // irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // set the mode for 2 text layers and two extended background layers - videoSetMode(MODE_5_2D or DISPLAY_BG3_ACTIVE); - - // set the sub background up for text display (we could just print to one - // of the main display text backgrounds just as easily - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - - // set the first bank as background memory and the third as sub background memory - // B and D are not used (if you want a bitmap greater than 256x256 you will need more - // memory so another vram bank must be used and mapped consecutivly - vramSetMainBanks(VRAM_A_MAIN_BG_0x06000000, VRAM_B_LCD, VRAM_C_SUB_BG, VRAM_D_LCD); - - // set up text background for text - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := RGB15(31,31,31);//by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - iprintf(#10#10#9 + 'Hello DS devers' + #10); - iprintf(#9 + 'www.drunkencoders.com' + #10); - iprintf(#9 + '16 bit bitmap demo'); - - // set up our bitmap background - BG3_CR^ := BG_BMP16_256x256; - - // these are rotation backgrounds so you must set the rotation attributes: - // these are fixed point numbers with the low 8 bits the fractional part - // this basicaly gives it a 1:1 translation in x and y so you get a nice flat bitmap - BG3_XDX^ := 1 shl 8; - BG3_XDY^ := 0; - BG3_YDX^ := 0; - BG3_YDY^ := 1 shl 8; - - BG3_CX^ := 0; - BG3_CY^ := 0; - - swiDecompressLZSSVram(@drunkenlogoBitmap, BG_GFX, 0, @drunkenlogo_decomp); - while true do - swiWaitForVBlank(); - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.git b/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.git deleted file mode 100644 index f3358514b8..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.git +++ /dev/null @@ -1,5 +0,0 @@ -# 8 bit bitmap --gB8 - -# bitmap format --gb diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.png b/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.png deleted file mode 100644 index ea66c9e42f..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.png and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/main.pp deleted file mode 100644 index 45fb64df94..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/main.pp +++ /dev/null @@ -1,78 +0,0 @@ -program main; -{$L drunkenlogo.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -const - drunkenlogoPalLen = 512; - drunkenlogoBitmapLen = 65536; - -var - drunkenlogoPal: array [0..255] of cushort; cvar; external; - drunkenlogoBitmap: array [0..16383] of cuint; cvar; external; - - -begin - //irqs are nice - irqInit(); - irqSet(IRQ_VBLANK, nil); - - //set the mode for 2 text layers and two extended background layers - videoSetMode(MODE_5_2D or DISPLAY_BG3_ACTIVE); - - //set the sub background up for text display (we could just print to one - //of the main display text backgrounds just as easily - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - - //set the first bank as background memory and the third as sub background memory - //B and D are not used - vramSetMainBanks(VRAM_A_MAIN_BG_0x06000000, VRAM_B_LCD, VRAM_C_SUB_BG, VRAM_D_LCD); - - ////////////////set up text background for text///////////////////// - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := u32(RGB15(31,31,31));//by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - iprintf(#10#10#9 + 'Hello DS devers' + #10); - iprintf(#9 + 'www.drunkencoders.com' + #10); - iprintf(#9 + '256 color bitmap demo'); - - ///////////////set up our bitmap background/////////////////////// - - BG3_CR^ := BG_BMP8_256x256; - - //these are rotation backgrounds so you must set the rotation attributes: - //these are fixed point numbers with the low 8 bits the fractional part - //this basicaly gives it a 1:1 translation in x and y so you get a nice flat bitmap - BG3_XDX^ := 1 shl 8; - BG3_XDY^ := 0; - BG3_YDX^ := 0; - BG3_YDY^ := 1 shl 8; - //our bitmap looks a bit better if we center it so scroll down (256 - 192) / 2 - BG3_CX^ := 0; - BG3_CY^ := 32 shl 8; - -{ - for i := 0 to 256*2 - 1 do - BG_PALETTE[i] := palette_bin[i]; - for i := 0 to 256*256 - 1 do - BG_GFX[i] := drunkenlogo_bin[i]; -} - - - dmaCopy(@drunkenlogoBitmap, BG_GFX, drunkenlogoBitmapLen); - dmaCopy(@drunkenlogoPal, BG_PALETTE, drunkenlogoPalLen); - - while true do - swiWaitForVBlank(); - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/drunkenlogo.bin.o b/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/drunkenlogo.bin.o deleted file mode 100644 index ce9052e475..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/drunkenlogo.bin.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/main.pp deleted file mode 100644 index 6b5695c06b..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/main.pp +++ /dev/null @@ -1,137 +0,0 @@ -program main; -{$L drunkenlogo.bin.o} -{$L palette.bin.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - drunkenlogo_bin_end: array [0..0] of u8; cvar; external; - drunkenlogo_bin: array [0..0] of u8; cvar; external; - drunkenlogo_bin_size: u32; cvar; external; - - palette_bin_end: array [0..0] of u8; cvar; external; - palette_bin: array [0..0] of u8; cvar; external; - palette_bin_size: u32; cvar; external; - - angle: u32; - scrollX, scrollY: s16; - scaleX, scaleY: s16; - rcX, rcY: s16; - keys: u32; - s, c: s16; - - -begin - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // set the mode for 2 text layers and two extended background layers - videoSetMode(MODE_5_2D or DISPLAY_BG3_ACTIVE); - - // set the sub background up for text display (we could just print to one - // of the main display text backgrounds just as easily - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - - // set the first bank as background memory and the third as sub background memory - // B and D are not used - vramSetMainBanks( VRAM_A_MAIN_BG_0x06000000, VRAM_B_LCD, VRAM_C_SUB_BG, VRAM_D_LCD); - - // set up text background for text - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := u32(RGB15(31,31,31));//by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - - - // set up our bitmap background - - BG3_CR^ := BG_BMP8_256x256; - - // these are rotation backgrounds so you must set the rotation attributes: - // these are fixed point numbers with the low 8 bits the fractional part - // this basicaly gives it a 1:1 translation in x and y so you get a nice flat bitmap - BG3_XDX^ := 1 shl 8; - BG3_XDY^ := 0; - BG3_YDX^ := 0; - BG3_YDY^ := 1 shl 8; - // our bitmap looks a bit better if we center it so scroll down (256 - 192) / 2 - BG3_CX^ := 0; - BG3_CY^ := 32 shl 8; - - dmaCopy(@drunkenlogo_bin, BG_GFX, 256*256); - dmaCopy(@palette_bin, BG_PALETTE, 256*2); - - angle := 0; - - // the screen origin is at the rotation center...so scroll to the rotation - // center + a small 32 pixle offset so our image is centered - scrollX := 0 + 128; - scrollY := 32 + 96 ; - - //scale is fixed point - scaleX := 1 shl 8; - scaleY := 1 shl 8; - - //this is the screen pixel that the image will rotate about - rcX := 128; - rcY := 96; - - while true do - begin - printf(#10#10#9 + 'Hello DS devers' + #10); - printf(#9 + 'www.drunkencoders.com' + #10); - printf(#9 + 'BG Rotation demo' + #10); - - iprintf('Angle %3d(actual) %3d(degrees)' + #10, [angle and $1FF, (angle and $1FF) * 360 div 512]); - iprintf('Scroll X: %4d Y: %4d' + #10, [scrollX, scrollY]); - iprintf('Rot center X: %4d Y: %4d' + #10, [rcX, rcY]); - iprintf('Scale X: %4d Y: %4d' + #10, [scaleX, scaleY]); - - scanKeys(); - keys := keysHeld(); - - if ( keys and KEY_L ) <> 0 then angle := angle + 1; - if ( keys and KEY_R ) <> 0 then angle := angle - 1; - if ( keys and KEY_LEFT ) <> 0 then scrollX := scrollX + 1; - if ( keys and KEY_RIGHT ) <> 0 then scrollX := scrollX - 1; - if ( keys and KEY_UP ) <> 0 then scrollY := scrollY + 1; - if ( keys and KEY_DOWN ) <> 0 then scrollY := scrollY - 1; - if ( keys and KEY_A ) <> 0 then scaleX := scaleX + 1; - if ( keys and KEY_B ) <> 0 then scaleX := scaleX - 1; - if ( keys and KEY_START ) <> 0 then rcX := rcX + 1; - if ( keys and KEY_SELECT ) <> 0 then rcY := rcY + 1; - if ( keys and KEY_X ) <> 0 then scaleY := scaleY + 1; - if ( keys and KEY_Y ) <> 0 then scaleY := scaleY - 1; - - // Compute sin and cos - s := SIN_bin[angle and $1FF] shr 4; - c := COS_bin[angle and $1FF] shr 4; - - swiWaitForVBlank(); - - // Set the background registers - - BG3_XDX^ := cuint16(( c * scaleX ) shr 8); - BG3_XDY^ := cuint16((-s * scaleX ) shr 8); - - BG3_YDX^ := cuint16(( s * scaleY ) shr 8); - BG3_YDY^ := cuint16(( c * scaleY ) shr 8); - - BG3_CX^ := cuint32((scrollX shl 8) - rcX * (c - s)); - BG3_CY^ := cuint32((scrollY shl 8) - rcY * (s + c)); - - // clear the console screen (ansi escape sequence) - printf(#27 + '[2J'); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/palette.bin.o b/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/palette.bin.o deleted file mode 100644 index 6a5fb61a46..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/palette.bin.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/data/ball.pcx b/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/data/ball.pcx deleted file mode 100644 index d7120162ac..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/data/ball.pcx and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/main.pp deleted file mode 100644 index 5a5231fcec..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/main.pp +++ /dev/null @@ -1,254 +0,0 @@ -program main; -{$L ball.pcx.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - ball_pcx_end: array [0..0] of u8; cvar; external; - ball_pcx: array [0..0] of u8; cvar; external; - ball_pcx_size: u32; cvar; external; - - -const - NUM_SPRITES = 128; - -var - OAMCopySub: array [0..127] of SpriteEntry; - -type -//simple sprite struct - TSprite = record - x, y: integer; //location - dx, dy: integer; //speed - oam: PSpriteEntry; - gfxID: integer; //graphics lovation - end; - PSprite = ^TSprite; - - -procedure MoveSprite(sp: PSprite); -var - x, y: integer; -begin - x := sp^.x shr 8; - y := sp^.y shr 8; - - sp^.oam^.st.attribute[1] := sp^.oam^.st.attribute[1] and $FE00; - sp^.oam^.st.attribute[1] := sp^.oam^.st.attribute[1] or (x and $01FF); - - sp^.oam^.st.attribute[0] := sp^.oam^.st.attribute[0] and $FF00; - sp^.oam^.st.attribute[0] := sp^.oam^.st.attribute[0] or (y and $00FF); -end; - -procedure initOAM(); -var - i: integer; -begin - for i := 0 to 127 do - OAMCopySub[i].st.attribute[0] := ATTR0_DISABLED; -end; - -procedure updateOAM(); -begin - dmaCopy(@OAMCopySub, OAM_SUB, sizeof(OAMCopySub)); -end; - - -function irqVBlank(): pointer; -begin -end; - -var - back, front: pcuint16; - sprites: array [0..NUM_SPRITES - 1] of TSprite; - i, delta: integer; - ix, iy: integer; - screen: integer; - map0, map1: pcuint16; - red: cuint16; - ball: sImage; - -begin - back := VRAM_A; - front := VRAM_B; - - i := 0; - delta := 0; - ix := 0; - iy := 0; - screen := 1; - map0 := pcuint16(SCREEN_BASE_BLOCK_SUB(1)); - map1 := pcuint16(SCREEN_BASE_BLOCK_SUB(2)); - - //turn on the power to the system - powerON(POWER_ALL); - - //set main display to render directly from the frame buffer - videoSetMode(MODE_FB1); - - //set up the sub display - videoSetModeSub(MODE_0_2D or DISPLAY_SPR_1D_LAYOUT or DISPLAY_SPR_ACTIVE or - DISPLAY_BG0_ACTIVE or DISPLAY_BG1_ACTIVE ); - - //vram banks are somewhat complex - vramSetMainBanks(VRAM_A_LCD, VRAM_B_LCD, VRAM_C_SUB_BG, VRAM_D_SUB_SPRITE); - - // a vblank interrupt is needed to use swiWaitForVBlank() - // since the dispatcher handles the flags no handler is required - irqInit(); - irqSet(IRQ_VBLANK, @irqVBlank); - - //load our ball pcx file into an image - loadPCX(pu8(ball_pcx), @ball); - - //tile it so it is usefull as sprite data - imageTileData(@ball); - - // Sprite initialisation - for i := 0 to 255 do - SPRITE_PALETTE_SUB[i] := u32(ball.palette[i]); - - for i := 0 to 32*16 - 1 do - SPRITE_GFX_SUB[i] := u32(ball.image.data16[i]); - - //turn off sprites - initOAM(); - - for i := 0 to NUM_SPRITES - 1 do - begin - //random place and speed - sprites[i].x := rand() and $FFFF; - sprites[i].y := rand() and $7FFF; - sprites[i].dx := (rand() and $FF) + $100; - sprites[i].dy := (rand() and $FF) + $100; - - if (rand() and 1) <> 0 then - sprites[i].dx := -sprites[i].dx; - if (rand() and 1) <> 0 then - sprites[i].dy := -sprites[i].dy; - - sprites[i].oam := @OAMCopySub[i]; - sprites[i].gfxID := 0; - - //set up our sprites OAM entry attributes - sprites[i].oam^.st.attribute[0] := ATTR0_COLOR_256 or ATTR0_SQUARE; - sprites[i].oam^.st.attribute[1] := ATTR1_SIZE_32; - sprites[i].oam^.st.attribute[2] := sprites[i].gfxID; - end; - - //set up two backgrounds to scroll around - SUB_BG0_CR^ := BG_COLOR_256 or (1 shl SCREEN_SHIFT); - SUB_BG1_CR^ := BG_COLOR_256 or (2 shl SCREEN_SHIFT); - - BG_PALETTE_SUB[0] := u32(RGB15(10,10,10)); - BG_PALETTE_SUB[1] := u32(RGB15(0,16,0)); - BG_PALETTE_SUB[2] := u32(RGB15(0,0,31)); - - //load the maps with alternating tiles (0,1 for bg0 and 0,2 for bg1) - for iy := 0 to 31 do - for ix := 0 to 31 do - begin - map0[iy * 32 + ix] := (ix xor iy) and 1; - map1[iy * 32 + ix] := ((ix xor iy) and 1) shl 1; - end; - - //fill 2 tiles with different colors - for i := 0 to (64 div 2) - 1 do - begin - BG_GFX_SUB[i+32] := $0101; - BG_GFX_SUB[i+32+32] := $0202; - end; - - while (true) do - begin - //scroll the background - SUB_BG0_X0^ := delta; - inc(delta); - SUB_BG0_Y0^ := delta; - - //move the sprites - for i := 0 to NUM_SPRITES - 1 do - begin - sprites[i].x := sprites[i].x + sprites[i].dx; - sprites[i].y := sprites[i].y + sprites[i].dy; - - //check for collision with the screen boundries - if (sprites[i].x < (1 shl 8)) or (sprites[i].x > (247 shl 8)) then - sprites[i].dx := -sprites[i].dx; - - if (sprites[i].y < (1 shl 8)) or (sprites[i].y > (182 shl 8)) then - sprites[i].dy := -sprites[i].dy; - - //reposition the sprites - MoveSprite(@sprites[i]); - end; - - - - //do the plasma/fire - for ix := 0 to SCREEN_WIDTH - 1 do - begin - back[ix + SCREEN_WIDTH * (SCREEN_HEIGHT - 1)] := rand() and $FFFF; - back[ix + SCREEN_WIDTH * (SCREEN_HEIGHT - 2)] := rand() and $FFFF; - end; - - inc(back); - - for iy := 1 to SCREEN_HEIGHT - 3 do - begin - for ix := 1 to SCREEN_WIDTH - 2 do - begin - red := 0; - - red := red + front[0]; - red := red + front[2]; - - front := front + SCREEN_WIDTH; - - red := red + front[0]; - red := red + front[1]; - red := red + front[2]; - - front := front + SCREEN_WIDTH; - - red := red + front[0]; - red := red + front[1]; - red := red + front[2]; - - front := front - ((2 * SCREEN_WIDTH) - 1); - - back[0] := (red shr 3); - inc(back); - end; - inc(back,2); - inc(front,2); - - end; - - swiWaitForVBlank(); - - updateOAM(); - - //flip screens - if (screen) <> 0 then - begin - videoSetMode(MODE_FB1); - front := VRAM_B; - back := VRAM_A; - screen := 0; - end else - begin - videoSetMode(MODE_FB0); - front := VRAM_A; - back := VRAM_B; - screen := 1; - end; - end; -end. - diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Double_Buffer/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/Double_Buffer/main.pp deleted file mode 100644 index c565b907c9..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Double_Buffer/main.pp +++ /dev/null @@ -1,95 +0,0 @@ -program main; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - frontBuffer: pcuint16; - backBuffer: pcuint16; - colorMask: cuint16; - iy, ix: integer; - temp: pcuint16; - - -begin - irqInit(); - // a vblank interrupt is needed to use swiWaitForVBlank() - // since the dispatcher handles the flags no handler is required - irqEnable(IRQ_VBLANK); - - //set the mode for 2 text layers and two extended background layers - videoSetMode(MODE_5_2D or DISPLAY_BG3_ACTIVE); - - //set the sub background up for text display (we could just print to one - //of the main display text backgrounds just as easily - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - - //set the first two banks as background memory and the third as sub background memory - //D is not used..if you need a bigger background then you will need to map - //more vram banks consecutivly (VRAM A-D are all 0x20000 bytes in size) - vramSetMainBanks( VRAM_A_MAIN_BG_0x06000000, VRAM_B_MAIN_BG_0x06020000, - VRAM_C_SUB_BG , VRAM_D_LCD); - - // set up text background for text - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := u32(RGB15(31,31,31));//by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - printf(#10#10#9 + 'Hello DS devers' + #10); - printf(#9 + 'www.drunkencoders.com' + #10); - printf(#9 + 'double buffer demo'); - - // set up our bitmap background - - BG3_CR^ := BG_BMP16_256x256; - - //these are rotation backgrounds so you must set the rotation attributes: - //these are fixed point numbers with the low 8 bits the fractional part - //this basicaly gives it a 1:1 translation in x and y so you get a nice flat bitmap - BG3_XDX^ := 1 shl 8; - BG3_XDY^ := 0; - BG3_YDX^ := 0; - BG3_YDY^ := 1 shl 8; - //our bitmap looks a bit better if we center it so scroll down (256 - 192) / 2 - BG3_CX^ := 0; - BG3_CY^ := 0; - - - frontBuffer := pcuint16($06000000); - backBuffer := pcuint16($06000000 + 256 * 256 * 2); - - //this is just used so we can write red color bits to one frame and green to the - //other - colorMask := $1F; - - while true do - begin - //draw a box - for iy := 60 to 196 - 60 - 1 do - for ix := 60 to 256 - 60 - 1 do - backBuffer[iy * 256 + ix] := (rand() and colorMask) or BIT(15); - - swiWaitForVBlank(); - - //swap - temp := frontBuffer; - frontBuffer := backBuffer; - backBuffer := temp; - - //flip - //base is 16KB and screen size is 256x256x2 (128KB) - BG3_CR^ := BG3_CR^ xor BG_BMP_BASE( 128 div 16 ); - - //this will cause red or green bits only to be set and swap each - //frame - colorMask := colorMask xor $3FF; - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Sprite_Bitmap/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/Sprite_Bitmap/main.pp deleted file mode 100644 index 960eb38626..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Sprite_Bitmap/main.pp +++ /dev/null @@ -1,140 +0,0 @@ -program main; -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - sprites: array [0..127] of SpriteEntry; - spriteRotations: pSpriteRotation; - i, angle: integer; - -//turn off all the sprites -procedure initSprites(); -var - i: integer; -begin - for i := 0 to 127 do - begin - sprites[i].st.attribute[0] := ATTR0_DISABLED; - sprites[i].st.attribute[1] := 0; - sprites[i].st.attribute[2] := 0; - sprites[i].st.attribute[3] := 0; - end; -end; - -//copy our sprite to object attribute memory -procedure updateOAM(); -begin - DC_FlushRange(@sprites, 128 * sizeof(SpriteEntry)); - dmaCopy(@sprites, OAM, 128 * sizeof(SpriteEntry)); -end; - -begin - //rotation attributes overlap so assign then to the same location - spriteRotations := pSpriteRotation(@sprites); - - //turn everything on - powerON(POWER_ALL_2D); - - //irqs are nice - irqInit(); - irqSet(IRQ_VBLANK, nil); - - //enable vram and map it to the right places - vramSetMainBanks( VRAM_A_MAIN_SPRITE, //A and B maped consecutivly as sprite memory - VRAM_B_MAIN_SPRITE, //this gives us 256KB which is the max - VRAM_C_MAIN_BG_0x06000000, //map C to background memory - VRAM_D_LCD //not using D - ); - - //set the video mode - videoSetMode( MODE_0_2D or - DISPLAY_SPR_ACTIVE or //turn on sprites - DISPLAY_BG0_ACTIVE or //turn on background 0 - DISPLAY_SPR_1D or //this is used when in tile mode - DISPLAY_SPR_1D_BMP //and this in bitmap mode - ); - - - // black backdrop - BG_PALETTE[0] := u32(RGB15(0,0,0)); - - - BG0_CR^ := BG_MAP_BASE(31);//use bg0 for the text - - BG_PALETTE[255] := u32(RGB15(31,31,31));//by default font rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK(31)), pu16(CHAR_BASE_BLOCK(0)), 16); - - //turn off the sprites - initSprites(); - - - // direct bitmap sprite - // print at using ansi escape sequence \x1b[line;columnH - printf(#27 + '[1;1H' + 'Direct Bitmap:'); - sprites[0].st.attribute[0] := ATTR0_BMP or ATTR0_ROTSCALE_DOUBLE or 10; - sprites[0].st.attribute[1] := ATTR1_SIZE_32 or 20; - sprites[0].st.attribute[2] := ATTR2_ALPHA(1)or 0; - - // red 32*32 square for 1d bitmap mode - for i := 0 to 32*32 - 1 do - SPRITE_GFX[i] := RGB15(31,0,0) or (1 shl 15); //dont forget alpha bit - - // 256 color sprite - // print at using ansi escape sequence \x1b[line;columnH - printf(#27 + '[9;1H' + '256 color:'); - sprites[1].st.attribute[0] := ATTR0_COLOR_256 or ATTR0_ROTSCALE_DOUBLE or 75; - sprites[1].st.attribute[1] := ATTR1_SIZE_32 or 20; // size 64x64, x 10 - sprites[1].st.attribute[2] := 64; - - // Blue for 256 color sprite - SPRITE_PALETTE[1] := RGB15(0,0,31); - - // blue 64*64 square for 256 color mode (must write two pixles at time) - for i := 0 to 32*16 - 1 do - SPRITE_GFX[i+64*16] := (1 shl 8) or 1; - - // 16 color sprite - // print at using ansi escape sequence \x1b[line;columnH - printf(#27 + '[16;1H' + '16 color:'); - sprites[2].st.attribute[0] := ATTR0_COLOR_16 or ATTR0_ROTSCALE_DOUBLE or 135; - sprites[2].st.attribute[1] := ATTR1_SIZE_32 or 20; - sprites[2].st.attribute[2] := ATTR2_PALETTE(1) or 96; - - //yellow for 16 color sprite (it is using palette 1 so colors 16-31) - SPRITE_PALETTE[17] := RGB15(31,31,0); - - // yellow 32*32 square for 16 color mode (must write 4 pixels at a time) - for i := 0 to 32*8 - 1 do - SPRITE_GFX[i+96*16] := (1 shl 12) or (1 shl 8) or (1 shl 4) or 1; - - - - angle:=0; - - //we tied all our sprites to the same rotation attributes (0) - spriteRotations[0].hdx := 256; - spriteRotations[0].hdy := 0; - spriteRotations[0].vdx := 0; - spriteRotations[0].vdy := 256; - - while true do - begin - angle := angle + 1; - - spriteRotations[0].hdx := COS_bin[angle and $1FF] shr 4; - spriteRotations[0].hdy := SIN_bin[angle and $1FF] shr 4; - spriteRotations[0].vdx := -spriteRotations[0].hdy; - spriteRotations[0].vdy := spriteRotations[0].hdx; - - swiWaitForVBlank(); - - updateOAM(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/ansi_console/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/ansi_console/main.pp deleted file mode 100644 index 2ed40611b5..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/ansi_console/main.pp +++ /dev/null @@ -1,57 +0,0 @@ -program main; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -begin - -//--------------------------------------------------------------------------------- - // initialise the irq dispatcher - irqInit(); - // a vblank interrupt is needed to use swiWaitForVBlank() - // since the dispatcher handles the flags no handler is required - irqEnable(IRQ_VBLANK); - videoSetMode(0); //not using the main screen - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - vramSetBankC(VRAM_C_SUB_BG); - - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := u32(RGB15(31,31,31)); //by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - // ansi escape sequence to clear screen and home cursor - // #27 + [line;columnH - iprintf(#27 + '[2J'); - - // ansi escape sequence to set print co-ordinates - // #27 + [line;columnH - iprintf(#27 + '[10;10H' + 'Hello World!'); - - // ansi escape sequence to move cursor up - // #27 + [linesA - iprintf(#27 + '[10A' + 'Line 0'); - - // ansi escape sequence to move cursor left - // #27 + [columnsD - iprintf(#27 + '[28D' + 'Column 0'); - - // ansi escape sequence to move cursor down - // #27 + [linesB - iprintf(#27 + '[19B' + 'Line 19'); - - // ansi escape sequence to move cursor right - // #27 + [columnsC - iprintf(#27 + '[5C' + 'Column 20'); - - while true do - swiWaitForVBlank(); - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.bmp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.bmp deleted file mode 100644 index bc6ca47475..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.bmp and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.git b/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.git deleted file mode 100644 index f3358514b8..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.git +++ /dev/null @@ -1,5 +0,0 @@ -# 8 bit bitmap --gB8 - -# bitmap format --gb diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/main.pp deleted file mode 100644 index 08ea8218d6..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/main.pp +++ /dev/null @@ -1,69 +0,0 @@ -program main; -{$L font.o} -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - i: integer; - sub_tile: pu16; - sub_map: pu16; - -const - font_WIDTH = 8; - font_HEIGHT = 768; - - fontPalLen = 512; - fontBitmapLen = 6144; - -var -//byte array representing the picture - fontBitmap: array [0..1535] of cuint16; cvar; external; - fontPal: array [0..255] of cuint16; cvar; external; - - -const - char_base = 0; - screen_base = 20; - - -begin - irqInit(); - irqEnable(IRQ_VBLANK); - - videoSetMode(0); - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); - vramSetBankC(VRAM_C_SUB_BG); - - SUB_BG0_CR^ := BG_256_COLOR or BG_TILE_BASE(char_base) or BG_MAP_BASE(screen_base); - - sub_tile := pu16(CHAR_BASE_BLOCK_SUB(char_base)); - sub_map := pu16(SCREEN_BASE_BLOCK_SUB(screen_base)); - - //95 and 32 show how many characters there are and 32 shows which ASCII character to start, respectively - //95 is the smaller set of ACSII characters. It usually will start with 32 - consoleInit(pu16(fontBitmap), sub_tile, 95, 32, sub_map, CONSOLE_USE_COLOR255, 8); - - //Load the Font Data and Palette stuff here - for i := 0 to fontBitmapLen - 1 do - sub_tile[i] := u32(fontBitmap[i]); - - - - for i := 0 to fontPalLen - 1 do - BG_PALETTE_SUB[i] := u32(fontPal[i]); - - - - printf('Custom Font Demo' + #10); - printf(' by Poffy' + #10); - printf('modified by WinterMute' + #10); - printf('for libnds examples' + #10); - - while true do - swiWaitForVBlank(); -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/hello_world/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/hello_world/main.pp deleted file mode 100644 index 462aa78490..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/hello_world/main.pp +++ /dev/null @@ -1,54 +0,0 @@ -program main; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - frame: integer; - touchXY: touchPosition; - - - -function Vblank(): pointer; -begin - inc(frame); -end; - -begin - - irqInit(); - irqSet(IRQ_VBLANK, @Vblank); - irqEnable(IRQ_VBLANK); - videoSetMode(0); //not using the main screen - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - vramSetBankC(VRAM_C_SUB_BG); - - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := u32(RGB15(31,31,31)); //by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - printf(' Hello DS dev''rs' + #10); - printf(' www.devkitpro.org' + #10); - printf(' www.drunkencoders.com'); - - while true do - begin - swiWaitForVBlank(); - touchXY := touchReadXY(); - - // print at using ansi escape sequence #27 + [line;columnH - iprintf(#27 + '[10;0H' + 'Frame = %d',[frame]); - iprintf(#27 + '[16;0H' + 'Touch x = %04X, %04X' + #10, [touchXY.x, touchXY.px]); - iprintf('Touch y = %04X, %04X' + #10, [touchXY.y, touchXY.py]); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.bmp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.bmp deleted file mode 100644 index bc6ca47475..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.bmp and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.git b/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.git deleted file mode 100644 index f3358514b8..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.git +++ /dev/null @@ -1,5 +0,0 @@ -# 8 bit bitmap --gB8 - -# bitmap format --gb diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/main.pp deleted file mode 100644 index 3d2fcb5051..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/main.pp +++ /dev/null @@ -1,128 +0,0 @@ -program main; -{$L font.o} -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - i: integer; - sub_tile: pu16; - sub_map: pu16; - scaleX, scaleY: s16; - scrollX, scrollY: s16; - rcX, rcY: s16; - angle: cuint = 0; - keys: u32; - angleSin, angleCos: s16; - -const - font_WIDTH = 8; - font_HEIGHT = 768; - fontPalLen = 512; - fontBitmapLen = 6144; - -var -//byte array representing the picture - fontBitmap: array [0..1535] of cuint16; cvar; external; - fontPal: array [0..255] of cuint16; cvar; external; - - -const - char_base = 0; - screen_base = 20; - - -begin - irqInit(); - irqEnable(IRQ_VBLANK); - - videoSetMode(0); - videoSetModeSub(MODE_5_2D or DISPLAY_BG3_ACTIVE or DISPLAY_BG_EXT_PALETTE); - vramSetBankC(VRAM_C_SUB_BG); - - SUB_BG3_CR^ := BG_TILE_BASE(char_base) or BG_MAP_BASE(screen_base) or ROTBG_SIZE_256x256; - - sub_tile := pu16(CHAR_BASE_BLOCK_SUB(char_base)); - sub_map := pu16(SCREEN_BASE_BLOCK_SUB(screen_base)); - - //95 and 32 show how many characters there are and 32 shows which ASCII character to start, respectively - //95 is the smaller set of ACSII characters. It usually will start with 32 - consoleInit(pu16(fontBitmap), sub_tile, 95, 32, sub_map, CONSOLE_USE_COLOR255, 8); - - //Load the Font Data and Palette stuff here - for i := 0 to fontBitmapLen - 1 do - sub_tile[i] := u32(fontBitmap[i]); - // extended palettes are written with bank mapped to lcd - vramSetBankH(VRAM_H_LCD); - - for i := 0 to fontPalLen - 1 do - VRAM_H_EXT_PALETTE[3, 0, i] := u32(fontPal[i]); - - // map bank to extended palette after writing data - vramSetBankH(VRAM_H_SUB_BG_EXT_PALETTE); - - - - - iprintf('Custom Font Demo' + #10); - iprintf(' by Poffy' + #10); - iprintf('modified by WinterMute' + #10); - iprintf('for libnds examples' + #10); - - //scale is fixed point - scaleX := 1 shl 8; - scaleY := 1 shl 8; - - scrollX := 128; - scrollY := 96; - - //this is the screen pixel that the image will rotate about - rcX := 128; - rcY := 96; - - angle := 0; - - while true do - begin - scanKeys(); - keys := keysHeld(); - - if ( keys and KEY_L ) <> 0 then angle := angle + 1; - if ( keys and KEY_R ) <> 0 then angle := angle - 1; - - if ( keys and KEY_LEFT ) <> 0 then scrollX := scrollX + 1; - if ( keys and KEY_RIGHT ) <> 0 then scrollX := scrollX - 1; - if ( keys and KEY_UP ) <> 0 then scrollY := scrollY + 1; - if ( keys and KEY_DOWN ) <> 0 then scrollY := scrollY - 1; - - if ( keys and KEY_A ) <> 0 then scaleX := scaleX + 1; - if ( keys and KEY_B ) <> 0 then scaleX := scaleX - 1; - - if( keys and KEY_X ) <> 0 then scaleY := scaleY + 1; - if( keys and KEY_Y ) <> 0 then scaleY := scaleY - 1; - - // wrap angle - angle := angle and $1ff; - - // Compute sin and cos - angleSin := SIN_bin[angle] shr 4; - angleCos := COS_bin[angle] shr 4; - - swiWaitForVBlank(); - - // Set the background registers - SUB_BG3_XDX^ := cuint16(( angleCos * scaleX ) shr 8); - SUB_BG3_XDY^ := cuint16((-angleSin * scaleX ) shr 8); - SUB_BG3_YDX^ := cuint16(( angleSin * scaleY ) shr 8); - SUB_BG3_YDY^ := cuint16(( angleCos * scaleY ) shr 8); - - SUB_BG3_CX^ := cuint16((scrollX shl 8) - rcX * ( angleCos - angleSin)); - SUB_BG3_CY^ := cuint16((scrollY shl 8) - rcY * ( angleSin + angleCos)); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/BoxTest/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/BoxTest/main.pp deleted file mode 100644 index 28acf75ff8..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/BoxTest/main.pp +++ /dev/null @@ -1,248 +0,0 @@ -(*--------------------------------------------------------------------------------- - - $id $ - - Box test to demonstrate 3D bounding box es. also shows the effect of culling and - clipping on vertex usage - $log $ -*--------------------------------------------------------------------------------*) - -program main; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - - -var - rotX: cfloat = 0; - rotY: cfloat = 0; - translate: cfloat = -5.0; - - //some profiling code - time: cuint16; - - //keep track of vertex ram usage - polygon_count, vertex_count: integer; - - //object - rx: integer = 50; - ry: integer = 15; - oldx: integer = 0; - oldy: integer = 0; - - hit: integer; - -//some code for profiling -function startTimer(timer: cint): cuint16; -begin - TIMER_CR(timer)^ := (0); - TIMER_DATA(0)^ := (0); - TIMER_CR(timer)^ := (TIMER_DIV_1); - startTimer := TIMER_DATA(0)^; -end; - -function getTimer(timer: integer): cuint32; -begin - getTimer := TIMER_DATA(timer)^; -end; -{ $define getTimer(timer) := (TIMER_DATA(timer))^} - -//draws a box...same signature as boxTest -procedure DrawBox(x, y, z, height, width, depth: cfloat); -begin - glBegin(GL_QUADS); - //z face - glColor3f(1,0,0); - glVertex3f(x , y , z ); - glVertex3f(x + width, y , z ); - glVertex3f(x + width, y + height, z ); - glVertex3f(x , y + height, z ); - - //z + depth face - glColor3f(1,0,1); - glVertex3f(x , y , z + depth); - glVertex3f(x , y + height, z + depth); - glVertex3f(x + width, y + height, z + depth); - glVertex3f(x + width, y , z + depth); - - - //x face - glColor3f(1,1,0); - glVertex3f(x , y , z ); - glVertex3f(x , y + height, z ); - glVertex3f(x , y + height, z + depth); - glVertex3f(x , y , z + depth); - - //x + width face - glColor3f(1,1,1); - glVertex3f(x + width, y , z ); - glVertex3f(x + width, y , z + depth); - glVertex3f(x + width, y + height, z + depth); - glVertex3f(x + width, y + height, z ); - - //y face - glColor3f(0,1,0); - glVertex3f(x , y , z ); - glVertex3f(x , y , z + depth); - glVertex3f(x + width, y , z + depth); - glVertex3f(x + width, y , z ); - - //y + height face - glColor3f(0,1,1); - glVertex3f(x , y + height, z ); - glVertex3f(x + width, y + height, z ); - glVertex3f(x + width, y + height, z + depth); - glVertex3f(x , y + height, z + depth); - - glEnd(); - -end; - -var - i: integer; -//draw the clock -begin - - // Turn on everything - powerON(POWER_ALL); - - //put 3D on top - lcdMainOnTop(); - - //setup the sub screen for basic printing - consoleDemoInit(); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our view port to be the same size as the screen - glViewPort(0,0,255,191); - - //main loop - while true do - begin - - scanKeys(); - - //process input - if (keysHeld() and KEY_LEFT) <> 0 then rotY := rotY + 1; - if (keysHeld() and KEY_RIGHT) <> 0 then rotY := rotY - 1; - if (keysHeld() and KEY_UP) <> 0 then rotX := rotX + 1; - if (keysHeld() and KEY_DOWN) <> 0 then rotX := rotX - 1; - if (keysHeld() and KEY_L) <> 0 then translate := translate + 0.1; - if (keysHeld() and KEY_R) <> 0 then translate := translate - 0.1; - - //reset x and y when user touches screen - if (keysDown() and KEY_TOUCH) <> 0 then - begin - oldx := touchReadXY().px; - oldy := touchReadXY().py; - end; - - //if user drags then grab the delta - if (keysHeld() and KEY_TOUCH) <> 0 then - begin - rx := rx + touchReadXY().px - oldx; - ry := ry + touchReadXY().py - oldy; - oldx := touchReadXY().px; - oldy := touchReadXY().py; - end; - - //change ortho vs perspective - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - if (keysHeld() and KEY_B) <> 0 then - glOrtho(-4,4,-3,3,0.1,10) - else - gluPerspective(35, 256.0 / 192.0, 0.1, 10); - - //change cull mode - if (keysHeld() and KEY_A) <> 0 then - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE ) - else - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_FRONT ); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - - //handle camera - glRotateY(rotY); - glRotateX(rotX); - glTranslatef(0,0,translate); - - //move the cube - glRotateX(ry); - glRotateY(rx); - - DrawBox(-1,-1,-1,2,2,2); - - printf(#27 + '[2J' + 'Box test cycle count'); - - time := startTimer(0); - hit := BoxTestf(-1,-1,-1,2,2,2); - printf(#10 + 'Single test (float): %i', [2*(getTimer(0) - time)]); - - time := startTimer(0); - BoxTest(inttov16(-1),inttov16(-1),inttov16(-1),inttov16(2),inttov16(2),inttov16(2)); - printf(#10 + 'Single test (fixed): %i', [2*(getTimer(0) - time)]); - - time := startTimer(0); - - for i := 0 to 63 do - BoxTest(inttov16(-1),inttov16(-1),inttov16(-1),inttov16(2),inttov16(2),inttov16(2)); - - printf(#10 + '64 tests avg. (fixed): %i', [(getTimer(0) - time) / 32]); - if hit > 0 then - printf(#10 + 'Box Test result: hit') - else - printf(#10 + 'Box Test result: miss'); - - while (GFX_STATUS^ and (1 shl 27)) <> 0 do; // wait until the geometry engine is not busy - - glGetInt(GL_GET_VERTEX_RAM_COUNT, vertex_count); - glGetInt(GL_GET_POLYGON_RAM_COUNT, polygon_count); - - - if (keysHeld() and KEY_A) <> 0 then - printf(#10#10 + 'Ram usage: Culling none') - else - printf(#10#10 + 'Ram usage: Culling back faces'); - - printf(#10 + 'Vertex ram: %i', vertex_count); - printf(#10 + 'Polygon ram: %i', polygon_count); - printf(#10#10 + 'Press A to change culling'); - printf(#10#10 + 'Press B to change Ortho vs Persp'); - printf(#10 + 'Press Left and Right Up and Down to rotate'); - printf(#10 + 'Press L and R to zoom'); - printf(#10 + 'Touch screen to rotate cube'); - - //a handy little built in function to wait for a screen refresh - swiWaitForVBlank(); - - // flush to screen - glFlush(0); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List/main.pp deleted file mode 100644 index 04d53d7889..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List/main.pp +++ /dev/null @@ -1,118 +0,0 @@ -program main; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - - -var -//display list -{ - triangle: array [0..12] of cuint32 = ( - 12, - FIFO_COMMAND_PACK(FIFO_BEGIN, FIFO_COLOR, FIFO_VERTEX16, FIFO_COLOR), - GL_TRIANGLE, - RGB15(31,0,0), - VERTEX_PACK(inttov16(-1),inttov16(-1)), VERTEX_PACK(0,0), - RGB15(0,31,0), - FIFO_COMMAND_PACK(FIFO_VERTEX16, FIFO_COLOR, FIFO_VERTEX16, FIFO_END), - VERTEX_PACK(inttov16(1),inttov16(-1)), VERTEX_PACK(0,0), - RGB15(0,0,31), - VERTEX_PACK(inttov16(0),inttov16(1)), VERTEX_PACK(0,0) -); -} - triangle: array [0..12] of cuint32; - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keys: u16; - - -procedure SetDisplayList; -begin - triangle[0] := 12; - triangle[1] := FIFO_COMMAND_PACK(FIFO_BEGIN, FIFO_COLOR, FIFO_VERTEX16, FIFO_COLOR); - triangle[2] := GL_TRIANGLE; - triangle[3] := RGB15(31,0,0); - triangle[4] := VERTEX_PACK(inttov16(-1),inttov16(-1)); - triangle[5] := VERTEX_PACK(0,0); - triangle[6] := RGB15(0,31,0); - triangle[7] := FIFO_COMMAND_PACK(FIFO_VERTEX16, FIFO_COLOR, FIFO_VERTEX16, FIFO_END); - triangle[8] := VERTEX_PACK(inttov16(1),inttov16(-1)); - triangle[9] := VERTEX_PACK(0,0); - triangle[10] := RGB15(0,0,31); - triangle[11] := VERTEX_PACK(inttov16(0),inttov16(1)); - triangle[12] := VERTEX_PACK(0,0); -end; - -begin - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - // initialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - SetDisplayList; - - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 1.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - - while true do - begin - glPushMatrix(); - //move it away from the camera - glTranslate3f32(0, 0, floattof32(-1)); - - glRotateX(rotateX); - glRotateY(rotateY); - - glMatrixMode(GL_TEXTURE); - glIdentity(); - - glMatrixMode(GL_MODELVIEW); - - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - scanKeys(); - - keys := keysHeld(); - - if ((keys and KEY_UP)) <> 0 then rotateX := rotateX + 3; - if ((keys and KEY_DOWN)) <> 0 then rotateX := rotateX - 3; - if ((keys and KEY_LEFT)) <> 0 then rotateY := rotateY + 3; - if ((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY - 3; - - glCallList(@triangle); - - glPopMatrix(1); - - glFlush(0); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/data/teapot.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/data/teapot.bin deleted file mode 100644 index 5fb08a6ac6..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/data/teapot.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/main.pp deleted file mode 100644 index 10e8385c15..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/main.pp +++ /dev/null @@ -1,84 +0,0 @@ -program main; -{$L teapot.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -//teapot display list provided by Mike260, as well as the display list gl code. - -var - teapot_bin_end: array [0..0] of u8; cvar; external; - teapot_bin: array [0..0] of u16; cvar; external; - teapot_bin_size: u32; cvar; external; - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keys: cuint16; - -begin - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 3.5, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); - glLight(1, RGB15(31,0,31), 0, floattov10(1) - 1, 0); - glLight(2, RGB15(0,31,0) , floattov10(-1.0), 0, 0); - glLight(3, RGB15(0,0,31) , floattov10(1.0) - 1, 0, 0); - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or - POLY_FORMAT_LIGHT2 or POLY_FORMAT_LIGHT3 ) ; - - while true do - begin - glPushMatrix(); - - glRotateX(rotateX); - glRotateY(rotateY); - - scanKeys(); - keys := keysHeld(); - if (keys and KEY_UP) = 0 then rotateX := rotateX +3; - if (keys and KEY_DOWN) = 0 then rotateX := rotateX -3; - if (keys and KEY_LEFT) = 0 then rotateY := rotateY +3; - if (keys and KEY_RIGHT) = 0 then rotateY := rotateY -3; - - glCallList(@teapot_bin); - - glPopMatrix(1); - - glFlush(0); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/cafe.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/cafe.bin deleted file mode 100644 index 3a3dc3975f..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/cafe.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/teapot.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/teapot.bin deleted file mode 100644 index 423968b900..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/teapot.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp deleted file mode 100644 index a7982062d2..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp +++ /dev/null @@ -1,144 +0,0 @@ -program main; -{$L teapot.o} -{$L cafe.o} - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -var - teapot_bin_end: array [0..0] of u8; cvar; external; - teapot_bin: array [0..0] of u16; cvar; external; - teapot_bin_size: u32; cvar; external; - cafe_bin_end: array [0..0] of u8; cvar; external; - cafe_bin: array [0..0] of u16; cvar; external; - cafe_bin_size: u32; cvar; external; - prev_pen: array [0..1] of cint = ($7FFFFFFF, $7FFFFFFF); - - - -procedure get_pen_delta(dx, dy: pcint); -var - keys: u32; - touchXY: touchPosition; -begin - keys := keysHeld(); - - if (keys and KEY_TOUCH) <> 0 then - begin - touchXY := touchReadXY(); - - if (prev_pen[0] <> $7FFFFFFF) then - begin - dx^ := (prev_pen[0] - touchXY.x); - dy^ := (prev_pen[1] - touchXY.y); - end; - - prev_pen[0] := touchXY.x; - prev_pen[1] := touchXY.y; - end else - begin - prev_pen[0] := $7FFFFFFF; - prev_pen[1] := $7FFFFFFF; - dx^ := 0; - dy^ := 0; - end; -end; - -var - rotateX: Integer = 0; - rotateY: Integer = 0; - tex_scale: GLvector; - keys: u32; - cafe_texid: cint; - pen_delta: array [0..1] of cint; - -begin - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqSet(IRQ_VBLANK, nil); - - - // intialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - vramSetBankA(VRAM_A_TEXTURE); - glEnable(GL_TEXTURE_2D); - - - glGenTextures(1, @cafe_texid); - glBindTexture(0, cafe_texid); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T or TEXGEN_NORMAL, pcuint8(@cafe_bin)); - - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - while true do - begin - //TEXGEN_NORMAL helpfully pops our normals into this matrix and uses the result as texcoords - glMatrixMode(GL_TEXTURE); - glIdentity(); - - tex_scale.x := (64 shl 16); - tex_scale.y := (-64 shl 16); - tex_scale.z := (1 shl 16); - glScalev( @tex_scale ); //scale normals up from (-1,1) range into texcoords - glRotateXi(rotateX shr 3); //rotate texture-matrix to match the camera - glRotateYi(rotateY shr 3); - - - glMatrixMode(GL_POSITION); - glIdentity(); - glTranslate3f32(0, 0, floattof32(-3)); - glRotateXi(rotateX shr 3); - glRotateYi(rotateY shr 3); - - glMaterialf(GL_EMISSION, RGB15(31,31,31)); - - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK ); - - scanKeys(); - keys := keysHeld(); - - if ( keys and KEY_UP ) <> 0 then rotateX := rotateX + (3 shl 3); - if ( keys and KEY_DOWN ) <> 0 then rotateX := rotateX - (3 shl 3); - if ( keys and KEY_LEFT ) <> 0 then rotateY := rotateY + (3 shl 3); - if ( keys and KEY_RIGHT ) <> 0 then rotateY := rotateY - (3 shl 3); - - - get_pen_delta( @pen_delta[0], @pen_delta[1] ); - rotateY := rotateY - pen_delta[0]; - rotateX := rotateX - pen_delta[1]; - - - glBindTexture( 0, cafe_texid ); - glCallList(@teapot_bin); - - glFlush(0); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx deleted file mode 100644 index 610722bec6..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/main.pp deleted file mode 100644 index 1c3c737660..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/main.pp +++ /dev/null @@ -1,183 +0,0 @@ -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -var - drunkenlogo_pcx_end: array [0..0] of cuint8; cvar; external; - drunkenlogo_pcx: array [0..0] of cuint8; cvar; external; - drunkenlogo_pcx_size: cuint32; cvar; external; - -var - xrot: cfloat; // X Rotation ( NEW ) - yrot: cfloat; // Y Rotation ( NEW ) - zrot: cfloat; // Z Rotation ( NEW ) - - texture: array [0..0] of integer; // Storage For One Texture ( NEW ) - - - -function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures -var - pcx: sImage; //////////////(NEW) and different from nehe. -begin - //load our texture - loadPCX(pcuint8(drunkenlogo_pcx), @pcx); - - image8to16(@pcx); - - glGenTextures(1, @texture[0]); - glBindTexture(0, texture[0]); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); - - imageDestroy(@pcx); - - LoadGLTextures := true; -end; - - -function DrawGLScene(): boolean; // Here's Where We Do All The Drawing -begin - glTranslatef(0.0,0.0,-5.0); - - glRotatef(xrot,1.0,0.0,0.0); - glRotatef(yrot,0.0,1.0,0.0); - glRotatef(zrot,0.0,0.0,1.0); - - glBindTexture(GL_TEXTURE_2D, texture[0]); - - glBegin(GL_QUADS); - // Front Face - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - // Back Face - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - // Top Face - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - // Bottom Face - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - // Right face - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - // Left Face - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glEnd(); - - xrot := xrot + 0.3; - yrot := yrot + 0.2; - zrot := zrot + 0.4; - DrawGLScene := true; -end; - - - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - vramSetBankA(VRAM_A_TEXTURE); // reserve some memory for textures - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize gl - glInit(); - - //enable textures - //glEnable(GL_TEXTURE_2D); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); - glLight(1, RGB15(31,31,31) , 0, 0, floattov10(-1.0)); - glLight(2, RGB15(31,31,31) , 0, 0, floattov10(1.0)); - - glMatrixMode(GL_TEXTURE); - glIdentity(); - - glMatrixMode(GL_MODELVIEW); - - //need to set up some material properties since DS does not have them set by default - glMaterialf(GL_AMBIENT, RGB15(16,16,16)); - glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(16,16,16)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - LoadGLTextures(); - - // set the vertex color to white - glColor3f(1,1,1); - - while true do - begin - scanKeys(); - - //reset the projection matrix - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - - // set the projection matrix as either ortho or perspective - if (keysHeld() and KEY_R) = 0 then - gluPerspective(35, 256.0 / 192.0, 0.1, 100) - else - glOrtho(-3, 3,-2, 2, 0.1, 100); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - //ds specific, several attributes can be set here - if (keysHeld() and KEY_L) <> 0 then - glPolyFmt(POLY_ALPHA(0) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_FORMAT_LIGHT2) - else - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_FORMAT_LIGHT2); - - - //Push our original Matrix onto the stack (save state) - glPushMatrix(); - - DrawGLScene(); - - // Pop our Matrix from the stack (restore state) - glPopMatrix(1); - - // flush to screen - glFlush(0); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data.inc b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data.inc deleted file mode 100644 index 88d68cf7a1..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data.inc +++ /dev/null @@ -1,80 +0,0 @@ - // most of the following textures were generated from online samples available at - // http://www.marlinstudios.com/samples/sampvtf.htm and http://www.3dtotal.com/textures_v15/ - texture_bin_end: array [0..0] of u8; cvar; external; - texture_bin: array [0..0] of u16; cvar; external; - texture_bin_size: u32; cvar; external; - - texture1_RGB16_pal_bin_end: array [0..0] of u8; cvar; external; - texture1_RGB16_pal_bin: array [0..0] of u16; cvar; external; - texture1_RGB16_pal_bin_size: u32; cvar; external; - - texture1_RGB16_tex_bin_end: array [0..0] of u8; cvar; external; - texture1_RGB16_tex_bin: array [0..0] of u16; cvar; external; - texture1_RGB16_tex_bin_size: u32; cvar; external; - - texture2_RGB16_pal_bin_end: array [0..0] of u8; cvar; external; - texture2_RGB16_pal_bin: array [0..0] of u16; cvar; external; - texture2_RGB16_pal_bin_size: u32; cvar; external; - - texture2_RGB16_tex_bin_end: array [0..0] of u8; cvar; external; - texture2_RGB16_tex_bin: array [0..0] of u16; cvar; external; - texture2_RGB16_tex_bin_size: u32; cvar; external; - - texture3_RGB16_pal_bin_end: array [0..0] of u8; cvar; external; - texture3_RGB16_pal_bin: array [0..0] of u16; cvar; external; - texture3_RGB16_pal_bin_size: u32; cvar; external; - - texture3_RGB16_tex_bin_end: array [0..0] of u8; cvar; external; - texture3_RGB16_tex_bin: array [0..0] of u16; cvar; external; - texture3_RGB16_tex_bin_size: u32; cvar; external; - - texture4_RGB16_pal_bin_end: array [0..0] of u8; cvar; external; - texture4_RGB16_pal_bin: array [0..0] of u16; cvar; external; - texture4_RGB16_pal_bin_size: u32; cvar; external; - - texture4_RGB16_tex_bin_end: array [0..0] of u8; cvar; external; - texture4_RGB16_tex_bin: array [0..0] of u16; cvar; external; - texture4_RGB16_tex_bin_size: u32; cvar; external; - - texture5_RGB16_pal_bin_end: array [0..0] of u8; cvar; external; - texture5_RGB16_pal_bin: array [0..0] of u16; cvar; external; - texture5_RGB16_pal_bin_size: u32; cvar; external; - - texture5_RGB16_tex_bin_end: array [0..0] of u8; cvar; external; - texture5_RGB16_tex_bin: array [0..0] of u16; cvar; external; - texture5_RGB16_tex_bin_size: u32; cvar; external; - - texture6_RGB4_pal_bin_end: array [0..0] of u8; cvar; external; - texture6_RGB4_pal_bin: array [0..0] of u16; cvar; external; - texture6_RGB4_pal_bin_size: u32; cvar; external; - - texture6_RGB4_tex_bin_end: array [0..0] of u8; cvar; external; - texture6_RGB4_tex_bin: array [0..0] of u16; cvar; external; - texture6_RGB4_tex_bin_size: u32; cvar; external; - - - texture7_RGB4_pal_bin_end: array [0..0] of u8; cvar; external; - texture7_RGB4_pal_bin: array [0..0] of u16; cvar; external; - texture7_RGB4_pal_bin_size: u32; cvar; external; - - texture7_RGB4_tex_bin_end: array [0..0] of u8; cvar; external; - texture7_RGB4_tex_bin: array [0..0] of u16; cvar; external; - texture7_RGB4_tex_bin_size: u32; cvar; external; - - - texture8_RGB32_A3_pal_bin_end: array [0..0] of u8; cvar; external; - texture8_RGB32_A3_pal_bin: array [0..0] of u16; cvar; external; - texture8_RGB32_A3_pal_bin_size: u32; cvar; external; - - texture8_RGB32_A3_tex_bin_end: array [0..0] of u8; cvar; external; - texture8_RGB32_A3_tex_bin: array [0..0] of u16; cvar; external; - texture8_RGB32_A3_tex_bin_size: u32; cvar; external; - - - texture9_RGB32_A3_pal_bin_end: array [0..0] of u8; cvar; external; - texture9_RGB32_A3_pal_bin: array [0..0] of u16; cvar; external; - texture9_RGB32_A3_pal_bin_size: u32; cvar; external; - - texture9_RGB32_A3_tex_bin_end: array [0..0] of u8; cvar; external; - texture9_RGB32_A3_tex_bin: array [0..0] of u16; cvar; external; - texture9_RGB32_A3_tex_bin_size: u32; cvar; external; diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture.bin deleted file mode 100644 index 423699d1f7..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture.bin +++ /dev/null @@ -1 +0,0 @@ -­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µÎ¹RÊrÎrέµ¬±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÂ1Æï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½RÊsÎ1Æî½­µ­µ­µ0Â÷ÞœóÝûÝûÝû¼óXç1Æ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½“ΛïœïÖÚ´Ö”ÒQÊï½Î¹­µ­µ­µµִÒã¼÷½÷½÷œóãνRÊ›ï½÷ÞûþûþÿþÿþÿþÿöÞ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÍ¹1Æã½ó½ï½óÞ÷þûþÿÞûœórÎ͵RÊã½ó½÷½ó½ó½óÞ÷ÞûÞûÝû“Ò9çÿûÞûÞûÞûÞûÞûþÿþÿÞûÞûZëÖÚß”ÒÂιï½Î¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹RÊzëÞ÷½ï½ïÞ÷½÷Þ÷ÿûÿÿÿÿ½÷´Ò8ß|çœç½ïÞ÷Þûþûþÿÿÿÿÿÿû½÷¾ó¾ïÞó½óÝóÞ÷Ý÷Þ÷Þ÷Þ÷ÞóÞóÞóÞ÷Þ÷½÷›ï½÷´Öî½­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÌµ ¾pÊ-¾í¹¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹”ÒÞ÷Þ÷¾ó½ó½ó½óÞ÷ÿûÿûþûÿûÞ÷ëœçÞ÷ÿÿÿÿÿÿÿÿÿûÿûß÷½ïœï÷Úß{ëÞ÷Þ÷Þ÷Þ÷ÞóÞóÞó¾ï¾ó½ï½ë½óÞ÷þûÿûÝûrÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ«±¬±¬µ¬µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µìµôÖÛÒÒí¹¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µrʾ÷Þ÷›ïÖÖßÞ÷ÞûÞûÞ÷Þ÷Þ÷ÿû¾óÞóÞ÷Þ÷Þ÷ß÷ÿûÿûß÷ß÷¾÷0Ƭ¹Í¹Í¹RÊ{ë½ïœëœçëëëœç|ãœç½ïÝ÷Þ÷Þû¼÷QÊ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ.¾ÊÊ ºìµí¹í¹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½ ¶6Û7ÛÓÎ-¾­µ±­µ­µ­µ­µ­µ­µ­µ­µ­µÍµµÒ¾÷œó1ÆÎ¹9ã¾ó½ó¾ó¾óÞ÷Þ÷Þ÷¾ó½ïë½ïÞ÷ÿûÿÿÿÿÿÿÿÿÿÿÞûÝûÝ÷YëÂ0ÂsÎ9ãë½ë½ë½ë½ï½ï½ïÝóÞ÷Þ÷Ý÷Þûã­µ­µ­µ­µ­µ­µ­µ­µ­µ«±M¾òÒÒβʲÊoÆ-¾í¹î½Íµ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µí¹ ºôÎöÒôÒN¬µ­±­µ­µ­µ­µ¬±¬µ¬µ­µ­µï½:ã¾ózë͹Ûëëë¾óÞó¾óëëëë½ïÞ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿû½÷zë÷ÞsΜï½ï½ï½ïÝóÝóÞóÝó½ó½óÝ÷Zë0Æ­µ­µ­µ­µ­µ­µ­µ­µµ¬µ-¾ÒαÊÓÊÓÊÓÎóÒ±ÎOÆ.¾͵¬µ¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ ºÔÎõÎÓÊí¹¬±­µ­µ­µÍµ¾Ìµ¬µ¬±­µî¹ZçëZç­µ:ßç¾ï¾ï½ïïëë½ï¾óÞûÿûÿÿÿÿßûÿûÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿÿÿÿÞû½÷Þ÷Þ÷½ó½ï½ó½ó½ï½ëÞóÞ÷ÞûÕÚι­µµ­µ­µ­µ­µ­µ­µ­µ¬µ-ºÒÊÓÎÓÊÔÊÔÊÔÊôÒóÖóÖpÆ-¾ìµÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ¬µ­µ­µ­µ¬µ­µ­µ¬µ­µ¬µ¬±¬µ¬µ­µ­µ­µ­µ¬µ­µ­µÍ¹í¹ëµôÒõÒ×±Îí¹¬±¬µ­µÍµ‘ÊÓβÎí¹­µ¬µÍµrʼï»ó›óÞ÷Þó½ïë|çë¾óÞ÷Þ÷Þ÷þûÝûÝûÝ÷¾óßûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÞ÷Þ÷Þ÷Þ÷ÿ÷þûÿÿþÿ’Ò1Æî¹­µ­µ­µ­µ­µ­µ­µ­µÌµoÂÒÊÓÊÓÎôÎôÎôÎôÎôÒÓ×óÒNÂì¹í¹­µ­µ¬µ­µŒ±¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ¬±Œ±¬±¬µ­µ­µ­µ­µ¬µ«±¬±¬±¬µÌµÌ±¬±µ­µ­µ­µ­µÍµË±-¾N ºËµ×Ó×ÒÒí¹¬±¬µ¬µ.¾ÓÎÓÎÓÎì¹í¹ ¾ì¹í¹³Ò ¾ ºqÊyç½ïëï¾óÞ÷Þ÷½ï›ë’ÎqÊpÆ/¾{ëÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿûÿûþûÿÿÿÿÿ÷ß÷ÞûÝ÷8ãrέµµ­µ­µ­µ­µµÌµNÂÒÎÒÊÓÊôÎ××ôÒ×õÒôÎ××ÑÎN¾¬µ­µ¬µí¹í¹í¹ÍµÌµÍµ¬µÍµ¬µ­µ¬µNÂÎ ¾Œ±­µ­±­µ¬µËµNÂÒÒì¹ëµ,¾ÒÒOƬµ¬µ­µ­µµÍ¹ì¹6ÛÓÎôÒO²Î××ÓÒí¹­µ¬µ ¾ÓÎôÎ×pÆpÂôÒÔÒôÖôÖNÂpÆבÊ.¾YçÞ÷ÿûÞ÷¾ó¾ó½ó’γÊöÒõÎ º7ãÿÿÿÿÿûÿ÷ÿûÿÿÿÿÿûÿûÿûÿÿÿÿÿÿÿÿÞû¼óÿûÿûþûþûþÿÿûÞó¾ïßóÿ÷ÿû›ï´Ö­µ­±­µ­µ­µµÌµNÂÓÎÓÎóÎôÎ×ß7ãxçÛ×ôÒôÒÛóÖoÆ.¬µî¹.¾ÛÛNÂì¹N²ÎÒÒpÊ ¾Ë±±ÊôÖÊ˵­µ­±­µ¬µì¹óÖÔÎpÆËµ±ÊÛóÖî½­µ­µ­µ­µÍµ-º6ÛôÎôÒÓÒOÂ7Û×ôÖ ¾Í¹ìµ²ÎÓÎôÒ±ÎNÂôÒ³ÊÓÎôÖÓÒÒÎ.ºõÎײξYëÿÿÿû¾ó¾ó½óOƳÎÓÕÎ º³Òÿÿÿÿÿ÷ÿ÷ÿ÷ÿ÷ß÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿ÷âî½ÕÖÞûÿûÿûÿûÞ÷ß÷ß÷¾ï¾ïÿûÿÿœ÷­±­µ­µ­µ­µí¹OÂÒÎÓÎÓÎÒαÊpÆ.Â.¾O¾²ÊôÒôÒ×ÛÛoÆ.¾ ¾OÂõÖõÒÓÒ ºÓÎôÒõÒÛÓÒNÂOÂõÖôÒ-¾Íµ­±­µ¬µ ºôÖÔÊôÒì¹ÒÎÛ6߲άµ­µ­µ­µÍ¹-ºxç×ÓÎÒÒ.¾õÖÛÛ ¾í¹O¾ôÒôҲΠºÊÓÒ²ÊÓÒÓҲΑÊ/¾õÎõÒ×pÊqÊÞûÿÿÞ÷Þ÷½ïpÊ‘Ê×ôξ²Îÿÿÿÿÿ÷ß÷ß÷¿ïß÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿßû{ëQÆ÷Úß÷ß÷ß÷ßó¾ï¾ëßïß÷ÿûÿû{ïî½­±­µ­µ­µ­µ¾OÂÒÎóÒÒÎÒÎNÂNÂíµí½ ¾ ºº³ÊôÒôÒÛÛnÆËµ ºôÖÓ×ôÎôÒ×õÒôÒÓÎóÒ‘ÊpÊÛPÆÍµ­µ­µ¬µ ºÆõÎ6ß ¾ÓÒÛ5ÛóÖ ¾±¬µ­µ¬µ ºÛôÒôÒóÒ º×6Û6ß.¾õÒõÒóÒ ºì¹M¾ôÖ‘Æ ºí¹ì¹O¾öÒõÒõÒ×6ß¾ßÿÿÞûÞ÷œëqʲÎÛ×.¾NÂÝ÷ÿÿÿûÿûÿ÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿûßó¾ïµÒµÒÞóßóßóß÷ÿûßóßóÿûÿûÿûYçι­µ­µ­µ­µµ¾NÂóÒóÒÒÎÓÒÓÒ ¾º¬µ­µÍµ-¾ º×ôÒ×ÛóÖNÂ˱ÒÎÓôÎÛ6ßÓÒpƑʲʑƱÎNÂבÊí¹­µ­µ¬µ º‘ÊõÎ7ã ¾óÖÛôÖ5ÛÊ̵µµ¬µí¹5ßôÒÓóÖìµôÒ6Û6ßÓÒõÖ7Û×oÆì¹ËµoÆ×ÒÎ̵¬µÌµ‘Ê×ôÒõÖÛ6Û’ÎO¼óÿÿÿû½ïrÊôÚÛôÒpÆO¼÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ÷ß÷ß÷zïsÎÞûÿûÿûÿ÷ß÷ÿûÿûÿûÿ÷ÿû›ïι­µ­µ­µ­µµî¹OÂóÒÓÎôÎôÒÛÊ ¾¬±¬±±Íµì¹ÓÒ6ÛÓôÖ5ßÒÖN²Î7ÛõÒ×ó־͵í¹o±ÊÊOÂבÊ̵­µ­µ­µ ¾±ÊôÒWã ºÛÛóÒ6Û×O¬µ¬µ¬µì¹±ÎÒÎ×Û ¾6ß7ß6ß7ß7Û7ßÛ ºÍµËµÆÛÒÒ«±µÍ¹pÊôÖôÒ×ÛÛÛ.ÂÔÖ½÷ÿÿÞ÷’ÎóÒôÎÒÊpÆ ºzëÞûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûßûß÷ß÷9çÖÖÿûÿûÿÿÿÿÿûßóßóßóßóÞûrέµ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎôÎôÎÛÓÖ ºÍµ­µ¬µ¬µËµoÆÓôÒ×6ß6ßÊPÆõÖÓÊÔÎPÂí¹¬µÍµìµ º ºÓÎבÊ̵­µ­µ­µ.¾ÒÎôÒ6ß-¾ÓÖÒÒÒÎ××ÒÒ º­µ¬µì¹ÒÒÒÎÓÎÛ-¾6ß6ß6ß6Û7Û7ß±Îìµ­µËµÆôÖÒÎí¹Ìµí¹.¾qÊÛôÖ×ÛóÖ²Îìµ7ãþûÞû²Ò³ÎõÖôÒoÆëµ/­µãÿÿÿÿÿûÿ÷ÿ÷ÿûÿÿÿÿÿûÿûß÷ßóÞó½ï¾óß÷ß÷ÿ÷ßûßûß÷¿ïßóÿûœï­µ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎÓÊôÎ×óÖ͹­µ­µµ­µ«±²ÎôÒóÒóÒÛxç±ÎOÂÒγÊÔÎoÆÍµ¬±µ¬µËµ.¾×ôÒ‘Î̹­µ­µ­µ/ÂÒÎôÒÛ.ÂÛÛ±ÊóÒ6Û5ßoÆì¹¬µí¹ÓÒóÒÓÎÛ.ÂÛÛ×7ß7ÛÛoÆÌµ­µëµ±ÊôÖôÖóÖÓÒÓÒÊOÂ6ßÛôÖÛÛÛ.Â/½óÞ÷³ÖõÖ×ôÒ‘ÆëµôÚrÎ͹”Ò¾óÞïÿûÿûÿÿÿÿÿÿÿûÿûÿûÿûÿûÿûÿûÿûÿûÿÿÿûÿûÿ÷ßóß÷ÿÿãî½­µ­±­µ­µ­µ­µÍµ.ÂôÖôÒÓÊÔÊ×Ûí¹­µ­µ¬µí¹ º×ÒÎÒÎóÒ×yçÒÒNÂÓÒÓÊõÒpÆŒµ­µ­µ­µÌµ-¾×בÎ̱­µ­µ­µ.¾ÓÒôÒÛ.ÂßÛ±ÊóÖ6ã6ßÒÒ º¾ì¹oÆôÒôÒôÖ-¾óÖÓÎ×7Û7ÛWãÛ º.Â˵±ÊÓÒóұʱÊÒαÊ.¾×6ÛÛôÖÛ7ßÛ ºöÚþû²ÒÛÓôΑÊëµßÞÿ{ïî½sʾïÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûßûÿûÿûÿûß÷ÿûß÷¿ï¾ë¾óßöÞι­µ­µ­µ­µ­µÍµ-¾ôÖ×ÔÊÔÊôÒÛ ¾ÍµÍµ ¾ì¹ôÖ5ßóÒÒÎôÒÓ6ß±Î-¾ôÒôÎõÒpÆŒµ­µ­µ­µì¹N¾××óÖ«±­µ­µ­µ ¾ÓÒôÒ×-¾Û󮮱ÊóÖ5ßNÆ ºí¹N¾Ó×óÖ ºÓÒõÒ××6ßWãôÖ±Îëµ ºôÖÒÎÆÆ±Ê±Î±Î ¾ôÖóÒÛôÖõÖÓÕÎÓÒ ¾›óÓÖÔÎÓ×oÆìµôÖÿÿÿÿ9닱ßß÷ßóÞïßóßó¾ï¿ï¿ï¾ïßóßóÞóß÷ß÷ßóßóßóßó¾ëžã¾ëß÷½÷­µ­µ­µ­µ­µ­µ-¾ÓÒ×ÔÎôÎôÖÛÊ ¾ º ºõÖ7ÛôÒÓÊÓÎÓÎ×5߯.¾×ÓÎôÖpʵ­µ­µ­µÌµ‘ÊôÒÛ5ß̵­µ­µ­µì¹±Î×6Û.ÂÓÒÛÒÎÒÎÒÎÒÒ۱Πº.Â-ºÓÎ6ÛÛ¾Û7ÛÛ6ßÛÊÛ6ß/Â/ÂÛÆÆ±Ê‘ÊpÆOÆ.¾±ÊóÒÓÒoƲÎÓõÎ6Û.¾pƲΒÊõÒÛ±Îëµ’ÎÞûÞ÷½óÂÛžçžããããžã¾ëßïßóß÷ßóßó¿ï¾ë¾ë¾ë:ß÷Öžçãßóÿûþÿ­µ­µ­µ­µµ­µN±Ê×ôÎõÒ×ÛÛ‘Ê’Ê×ÓÔβʲÊÓÎÒÎóÒÒÒ-¾pÆÓÒóÒôÒʬ±­µ­µ­µÌµ²ÎÛÛÛ̵­µ­µ­µí¹±Ê×6ã.±ÊôÖ6ßÛÊÒÒÛôÖìµëµ.¾ôÎ×ôÖ¾7ß××xç¾NÂÆ6ßóÖì¹ôÚóÖÒÎÊì¹ì¹ ºÓÒóÒ²ÎÊ/ÂpÊOÂÓõÎÓÎO º‘ÊÓÊõÒ’Îìµ8ãÿû¾ïç[ß|ß\ß\ß}ß}ãžç¾ëßïß÷Þ÷{çœë¾ï¿ï¾ë¾ï¾ïrÊRÆžç¾ëÿ÷ÿÿ¼÷͹­µ­µ­µ­µ­µ­µ-¾/Â6ß×Û7ß7ß×õÒõÒôÒôÒôÎÓÊÓÎôÒ×ÒÒoÆìµpÆóÒÓÊÓΑʬ±­µ­µ­µÌµÓÖWã×6ß-¾Ìµ¬±¬µ.ÂÒÒÛxëNÂÓÎ×5Û.Âʱ ºÛ6Û‘Ê.¾±ÊÓÎײΠºÛôÒ6Û6ßì¹pÆ º×ôÖpÆìµôÖóÖ-¾¬±î¹ ºÛôÖôÖ‘Î’Ê8ß ºôÖõÒ6Û×ôÖõÒõÎôÎ’Ê ºõÚœïë:ßÖÒ:ß}ã¾ëÞóßóßó¾ï¾óÞóßQÆ÷Úß÷ßóß÷ÿ÷œï1Æ:ß¾ë¿ïßûÝû”Ö¬µ­µ­µ­µ­µ­µ¬µ ¾-¾6ãWç6Û7Û7Û7Û×óÎôÒôÎôÒôÒôÒ×5ÛoÆ.¾.¾-¾ÒÊÒÊÓβά±­µ­µ­µÌ¹ôÚ6ß×6ßÓÖëµÌµí¹²Î6ß6Û6ßNÂÓÎÓ6ß-¾-¾ËµôÖóұʱÊÒÊóÎ×ÒÒ º²ÎôÒôÖôÖìµ¾ ºÓÒôÖÓÒ ºpÆÒÒ ºÍ¹Í¹¾ÓÖÒÎÒÒ²Ò¾Xã.¾qÊVßôÖÛ6ßôÒÔÊ×²Ò ºÌµ­µï½Í¹‹±Íµ”ξ÷ÿû¾ï¾ï¾óœïÖÚî½Â8ãÞ÷ÿûÿûÿûÞ÷çžë¿ó½ó÷Þ0ÆÍ¹­µ­µ­µ­µ­µ­µ­µ ¾ ºßxë6ß6Û×××ÓõÎõÎõÎõÒÓóÒÊ ºëµ.¾oÆÒαÆÓÊÒÒ͵­µ­µ­µí¹ôÚ5ß××ÛÛôÖÛ7ß7ß6߲ΠºÔÎõÒÛ.Âí¹ì¹ÒÒÒÒ±ÆÓÊóÒ×±ÎëµÓÎôÒ×Û¾¾ ¾±ÊôÖóҲΠ¾ÓÒOÂì¹OÆ.Â5ßÓÎÓαΠºXã³ÎOÂWã×Û×ôÖôÒ5Û‘Î ºÔÒÖҔΔÎ÷ޔξrÊ8ã9ããÕÖ0Æ0ÆÂÖÚßûÿûÿûÿûß÷ßóßóÞ÷÷Þî½­µ­µ¬µ­±­µ­µ­µ­µ­µ­µÍ¹ º²Îšï6ß×××7Û8×Ó8×7ÛôÖÊ.¾.ÂôÖôÖ¾OÂóґƒƲʾ­µ­µ­µí¹ÓÒWã××ÛWßXã7ß7ß7Û6ÛoÆìµõÖÔÎôÒNÂ͵ì¹OÆôÖ²ÆÓÎôÎôÒ6ÛÊ˱ôÖ××ôÒ.¾í¹OÂpÆÛôÒÓÎOÂpÆóÒPÂpÆPÆOÂÓÎ×ôÖ.¾Zã8ßì¹ôÖ5Û××××ÛÒÒëµÛ|ã[ã9ß9ã¾ï[ã”Ò0Â0ÂQÆsεҔÎrÊÞ÷ÿûÿûß÷ßó¿ïß÷ÿû8笱­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºoÆwçxç6Û7Û6ßÛõÖÓұΑÊoÆpÆÓÒôÖ×6ßóÖ.¾óÒÒÎÒÎÊì¹­µ­µ­µî¹-¾Wã6ßÛXãXßWß7ßXß7ßÓÎ ºËµÓÎÒÎ×oÆí¹Í¹ ¾×õÎõÎôÎ×ôÖ,¾Ë±²ÎôÖÓÊÔÎ.¾Íµ/ÂìµÓÎ7ßÓÒÓÖ ºóÒÂÓÎôÖPƲÊõÎöÒ.¾zçœëpÆpÆ6ß×××ôÒôÒóÖì¹×}ã[ã9ß\ã~ß}ã[ã}çëœë[ç:ãQÆãÿÿÿûß÷ßó¿ïßóÿûßû’Ò¬µÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ ºO‘ÎÊpÊpÆ.Â.¾qʲÎôÖ6ßXãWß6ß×5ß6ß.¾NÂN ºÌµ­µ­±­µ­µ­µÌµ ¾±ÎôÖXãXãWã6ßôÚÊ ºí¹ìµÊÒÒÓÖì¹Ìµ­µÌµpÆôÒôÖÒÎÆNÂ˵칱ÎßÛʾ­±Í¹ ¾oÆ7ß×ôÖ.¾ÛÆ‘ÆÓÒpʳÎÛôÒºZßZçÔÖ º6ßÛ×õÒÓ×ÒÎìµÛ|ãZç:ßÓ<×|ççžçç|ë{çµÒrʽóÿûÿûÿûÿ÷ß÷ÿûß÷ë0¬µÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ¬µÍ¹¬µ¬µ­µí¹±ÎWã7ßXãzçÛÓÒõÖ6ß6ã6ßÛ.Â̵­µ¬µ­µ­µ­µ¬µ­µ¬µ¬µ¬µí¹ìµìµ ¾ì¹Ìµ¬±­µ¬µÌ¹Ë±ëµìµÌµ­µ±¬µËµìµì¹ëµËµÌµ­µÍµì¹-¾-¾ º/Â͹¬µí¹ ¾-¾ ¾ ºOÂÛôÒ²ÎpÊ º-¾oÂ.¾PÂzç9ãYç’Î.¾²ÎÓÒÓÒ²ÊpÆìµ0º[ßZçZã;Û<×|ã|ç¾ë}ã}ç{ë|ëQÊãÿûÿûß÷ÿûÿûÿûÞ÷9ãSÆtÊrÊ͹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ­µ­µì¹ôÖ7ß7ÛYãÛ ¾ ¾.¾7ßXç5ß6ãÎ͵µ¬µ¬µ­±­±±­µ­µµ¬µ¬µ­µ¬µ­µ­µ­µ­µ¬µµ­µ¬µÍ¹í¹í¹í¹ÍµÍ¹ÍµÌµì¹.¾.¾í¹Î¹­µÍ¹.¾ º ¾ ¾ ¾/¾­µÍ¹Í¹î¹0¾qÆqÆqʳÒÛµÎÕÒ÷ÖZßZã:ã[ßZß÷ִγγғÎÕÒÖÒ[Û|ç{ç\ß]Û}ã|ëçç|ã|ç|çÖÒsξ÷ÿûÿûÿûÿûÿûÞ÷µÒ¾¶Æ;×øÚ͹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ ¾6ßXã8ßYßqÆÌµ­±¾qÊ™ïxë6ãOƬ±Íµî½¾N¾µ¬µ¬µ«±Ëµì¹ì¹«±¬µ¬µ­±µ­µ¬µí¹ì¹.¾OÂʲÎÊìµ ºoƱÎÓÒpÆ ¾ º.¾N¾²Ê²Ê‘ÊÆNÂ.Âî¹­µÎ¹RÆøÎ[ß{çZë8ß\ß|ßçç{ë9ç{ã|ãçç{ç9ßç}ãã}ã|ã[ã\ã<Û}ß|ë|çã}ã}ç{çZã0Â:ã¾ïßóß÷ßóßóß÷œï¾–ÆùÎ\ß{ç­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ º×ÛXßYãºÍ¹µ¬µî½/ÂPÆí¹¬µ¬µ.¾pÆÓÒôÖÊ ¾ì¹¾Ìµ ºôÒ×6ßÒÒ ¾ÌµÌµ­µ­µ­µìµôÖ×ôÎôÒÛÛO‘ÎôÒ‘ÆpÆÓÒ±Ê º.¾ÓβÊÓÒõÒÔαÊNÂ͹͹0Â×Ê:×{ã{ëYç{ã|ß}ã}ãëZë{ëœçžëççZç[ã}ß}ß}ß\Û\ã[ã\ß]ßçœëë¾ëžëë|ã”ÎQÆ}ç¾ë¾ë|ë|ëÞ÷ÞûãsÆ×\ßç¾ïrέ¹µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ º×7ÛXßXã-¾í¹­µ­µ¬µ­µ¬µ¬µ¬µí¹ÓÒ6ÛXß7ßWã6ßÓÒ ¾.ÂOÂYã×ôÒôÒ5ßÛoÆì¹Íµ¬µËµ³ÎõÒõÒÛ6ã6ãNÂÓÒ ºÌµÍ¹¾²ÎNÂOÂ²Ê‘Ê º º³ÎÛoÆÎ¹ï½tÆÏ|ã{ã{çZç|ã}ã}ß\Û{çZëëëžë½ë{ç[ç}ç}ß}ß]Û\ß;Û\Û]ßçœëë¾ë¾ï¾ï\çøÖï½ÕÖ½ïë[ç1Æ1ƵÖsÎÊ}ãžçžëžë÷Úι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ/ÂÛ6ÛXãWç ºÍµ¬µ­µ­µµ­µ¬µ¬µOÂÛÛyçXãWãyëXçÛ ºpÊšëXßôÒ³ÎôÒõÒôÖ²ÎìµÍµËµOÂ×õÖoÆ ¾ º ºÓ¬µOÂpÆÊº²Ê.¾¾.Â.±Ê¾î½¾×Ê[Û|ç{çZç{ççžç\Û|ãZëœïëç}ãœëzë|ç}ß}ß]ß}ß|ã;Û\Û}ãë|ë¾ï¾ë¾ï|ë:Û1Âî½Î¹0¾͹ι͵ιι¾•Êçžçžë}ãZãï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßXãšïšï ºÍ¹­µ­µ­µ­µ­µ¬µÍ¹ÓÒ7Û6ÛÓÒoÆpÆÛXãÛÊ-¾yë7ßõÖôÖÓÒ×Û6Û±Î칩­pÆõÒ‘ÆÊ±í¹ì¹oÂôÒ‘Æìµí¹OÂÒÒnÆ.ºÓÎ-¾¾­µî¹Ì¹î¹î½RÂÓ\ß|ç{ç{ç|çã}ß}ãœë{ï½ïççœç{ëZç}ã}ß}ß]ß}ç:ß;×<×ç|ç¾ï¾ëžç½ó|ç۾ι­µ­µ­µ­µ­µ­µ­µ­µQÆ×Ö¾ë¾ï¾ï}ã{ç¾­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßYãyç7ç.Â͹­µ­µ­µ­µ­µÍµí¹õÚ6ß²Ê ºî½OÆ-¾ôÖ6ÛóÖêµôÖXãÛ ¾OÆOƲÎ×6ßÎʱ³ÎõÒ²Îëµî½í¹ÊÓÎÒÎÓÎÓÒÓÒ,º ºpÆÓÒO ºOÂ/Âî½î¹ºÖÊ:×|ã{ëZç[ã|ã}ß<×}ç{ïœëëç}çœë{ë|ç}ã}ã\Û}ã|ç;ß<×[Û:ßçžë}ãžëœï{çsÊï½µµ­µ­µ­µ¬µ­µ­µ­µ0Âß¾óßó¾ïçZç͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ‹±¾Xãyç™ëxëÂ͹­µ­µ­µ­µ­µÍ¹ìµ7ãxë.¾¾­±­µOƲÎXãÛ뵑ÊXã7ß.Âî¹î¹.¾²ÎWãßNÂ.¾õÖÓÖoÆ.¾.¾ ºÓÒÓÎÓÎôÖ-¾ëµÊ±ÓÒôÖÓβÊpÂOÆ º¾ÕÒ:ÛלëZçZã|ã\ß\Û\ß|ëœïëç}ãë{ë{ççžç}ß}ßë[ã;Û\Û{çZãçžçç¾ó{çÛï½Î¹¬µ­µ­µ­µ­µ­µ­µ­µÍ¹0Â\çßóß÷¾ëžë8ãî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ«±ìµ7ßxçxçyëÂ͵­µ­µ­µµ­µí¹ëµôÖyç‘ʾ¬µ­µ.ÂPÆXçWã,¾oÆ7ß7ßPÆÍ¹­µ¾PÆÛßoÆí¹××õÒ×ÛOÆpÂôÒôÒoÆNÂ-¾ìµ-¾‘ÊÓÒÛõÖÛõÖ.¾º9ß{ãœëZç|ç|ß]Û<×çœëœë}ã|ß}ãœë|ëç}ã}ß\Û|ç[ã;Û\Û|ç{ç|çžçžç¾óï{çrÊïÁ­±­µ­µ­µ­µ­µ­µ­µ­µÎ¹1Â\ã¾ï¿ïžç¾ïÕÚî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµëµßšëyë»óOÆÍµ­µ­µµ¬µÌµì¹ º ¾‘Ê7ÛÔÖ͵­µ/ÂpÆXçWçnÆ º6ÛÛOÆ­µµ­µ.¾²ÎÛ±Îì¹ôÒ7ßÛ6ßWã²Î‘Ê×õÒ×ÛôÖO ºí¹.¾¾OÆõÖõÒóÖ-¾“ÎzçZç{ç|ã\ß<×}ß{çœëç|ß\ßœçœïëžç}ã\Û}ã[ç:ß|ß¾ç|ë|ë}çç¾ï½ó[ç÷Ú­µ­µ­µ­µ­µ­µ­µ­µ­µÎµ¾¶Îžç¾ëžç}ãï0ÆÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ëµÓÒXãyëÜ÷ÓÖ͵­µ­±­µÍ¹.ÂÒÒß6ã.³ÎX㾬µ¾.¾ÛÛ. ¾7ß6ßpÆÍµ¬µ­µ/‘ÊóÒÒÒìµÓÎ6ãôÚNÂʵ˱6ßÛÛÛöÖ6ÛÓÒí¹­µ­µÍµ.Â.¾õÒÔÒMÂ/¾Yã9ã{ç}ã\Û<×|ã{ëœï}ã}ã|ãœëœï¾ëžç\ß|ß|ç9ß;Ûç½ëœïœëçë¾ó|ë[ãQÆï½­±­µ­µ­µ­µ­µ­µ­µ­µ¾¾מçžçžç}ãøÚ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµ³Ò™ëyë¼óßî½­±­±­µí¹ÒÎ6ÛÛ6ßOƲÎ7ß.­±Â.¾6ÛÛ.‘ÎXã7ßPÆî¹¬µ.Â.²ÎôÖÓÖ ºÓÎÛ.Âí¹Ìµ.¾šïßÒÒìµ/¾ÓÎôÒ¾¾Íµ¬±/Â-¾õÒôÒoƾ8ã9ã}ç}ß<Û\ß|çœï½ï}ã}ã|ë›ë½ëžç}ß\Û|çZãÛ\ßžë½ï¾ó¾ïç¾ï½÷{ãÖÖî½­µ­µ­µ­µ­µ­µ­µ­µ­±ÎµRÆØÒ\ß}ßžç~ã\ßQÆÍ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.™ïšëyë7ãOÆí¹î½í¹qÆôÒôÎôÖÛNÂÓÎÛOÆPÆpÊOÆ7ßôÖ ¾õÚzçÛOÆ/Â.ÂNÂqÆ7ßWãÓÖì¹ôÖóÖ ºí¹Ì¹oÆxëߑΠ¾ì¹pÂõÖ‘ÎOÂì¹ìµìµÓÒ8ßWãoÆqÆYç{ç}ã]ß]ß|çœï½óë\ß|çœïœï¾ë}ã<Û\ã|ç9ß;×ã¾ï½óÞóëë½óœë[ã1Âï½­µ­µ­µ­µ­µ­µ­µ­µ­µRÆ•Ê<Û\Û~ã}ã\Û×Ö͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµõÚšë™ë»ó6ßOÂOƲÎÛ××6ßÒÒ-¾ôÖõÒÓÎpÆ‘ÎÛVã‘Î º7ãyç×OÆ.¾N³Ò7ß7ßÛÊ/ÂÛ6ßOÆÊ±Ë±Ê±ÓÒXãßí¹¬µpÆ6ßõÚOÂÔÖ³ÊÔÒXãyçôÚ ºöÖzçç}ã]ß}ã|ç¼ó¾ï}ã}ßœë{ëïë\Û]ß}çZã×;מë¾ïÞó¾ë}ãçœë[ãßï½Î¹­µ­µ­µ­µ­µ­µ­±­µ1ÂsÆ;Û}ß}ãžç~ç:ßÂ͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.Â7ãšëšïšëXçXã7Û6Û7Û6ÛÛpÊ.¾ÛÛõÎÓ7Û6ßÛ ¾ì¹ôÖ7ß6ßÛôÖÛ6ß6ßÛóÖì¹³ÒÛ×ÒÒNÂN¾oÆ ºöÖ7Û¾­µ ºôÖXçN²ÎôÖõÖ7ã5ßpÆ“ÎZç|ç|ß}ã]ßçï½óë<Û\ßœïœï¾ï}ß;×|ã[ç:ß;×]ß¾ï¾ó¿ï}ã}ãë{ç:ã1Æï½±­µ­µ­µ­µ­µ­µ­µ0ÂRÆ×}ãžçžçç|ç´Ò͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µî¹PÆWãyçXãXß7Û7Û6Û6ßôÖ‘Êí¹Í¹pÊxç×ÕÊ×ôÖOÆî½ ºpÆ6ÛÓÒôÖÛÛÛ±ÎNÂìµÌµÛ7ß×7ÛÛ6ÛÛ ¾ß7ã ¾­µí¹±Î7ãÊ˱-¾‘ΑÊpƳÒ8ã{ç}ã}ß]Û]ßëœï½ï\ß<Ûëœï½ïžë\Û;Û|ç:ß:×\Ûçï¾ëžç}ãçœë[ãÖÖι­µ­µ­µ­µ­µ­±­µÎ¹¾”Ê;Ûžç¿ë¾ë¾ë¾ï÷Úι­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¾²ÎÛ6Û6Û×ÒÎÊ.¾Íµ¬µ­µ.¾pÆõÖ³Îqʾ͵¬µí¹-¾±ÊÒÒÓÒÊOÆ.¾Ìµ¬µ­µ«±³ÒXã×YßXãÛÒÒì¹. ºÌµ¬±Íµ-¾Û²Ò¾’ΓÊõÖYçzë8ã|ç}ß]ß]ßçœï½ïë]ßç{ëœïï}ã\Û|ãZã:Û;×\ßëëã~ãçë{ã[ã1ÆÎ¹­±¬µ±­µ­µÎ¹ï¹¾¶Î\ãžë¾ï¾ï¿ïÞóZçî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±í¹í¹¾í¹Ìµ¬µ¬µµ­µ­µÍµí¹í¹¾î¹­µŒ±­µ¬±¬±¬µÌµÌµ¬µ­µ­µ¬±¬µµÌµì¹.¾ ¾¾í¹ì¹ËµÌµ«±¬µ¬±±­µ ºôÚ7ãOÂrÂ×{ãZç9ã[ç|ã}ß\ß}ãëïžë}ß|ß½ï{ïœïç}ãç{ë:ß;Û<×}ãë}ç}ß}ãë|ç[ß÷Öî½­µ­µ­µÍ¹î¹ï¹¾–Ê<Û}ã¿ë¿ï¿ï¿óßóYçµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­µµµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µµµ±­µ­µ­µ­µ­µ­µ­±¬µÌµ‘ÊXã²Î º×ZßYã9ã|ã}ß|ß}ßçœë½ï}ç\Ûžë½óœïë}ãçœëZã:Û<×\ßëç\ß\Ûçœï[ã[ß1Æï½Î¹Î¹ï½1Æ•ÊùÖ<Û~ãžãžçžç¾ë¿ïÞ÷ãµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºõÖ7ÛpÆOÂ8ßYç{ç|ß\ß\ß|ãœëœëë\Û}ã½ó½ó½ëç}çë[ç:ß;×<×|ãë}ã}ß}çë{ç[ßÖÒ”Î:ßß:ãœï¾ïžëžçžçžã~ã}ßžã¾ï½ó´Öî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÌµpÆ7ÛõÒOÂpÆ8ã|ç|ã\ß}ßë{ëë}ã\ßïœïëç}ãç|ëZã[ß<×\Û}ë}ç}ãžç¾ïœë[ã:Û1¾<Ûžç¾ëžë¿ë¿ëžë¿ë¾ëžã~ç\ß:ßÖÖ0Â͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹’Ê ºÓÎÓôÎOÂ.¾Ûzã[ß\ãœë|ëç\Û|ãœóœïëççëZã[ß\ß\ß}çëã}ãžëï{ç;Û”ÊuÆžë¿ó¾ï¾ï¿ï¿ïžç~ã}ã;ß×ÒRÆï½­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Æ9߯ ºôÒÔÎ×pʾ8ß[ß|ç{ëœç|ß\Û|ë›ïëç}ã|ç{ë[ã\ß|ß|çïžë}ãžç¾ï|ë;Û×RÂ;Û~ççžçžçç[ãÛµÎRÂï¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹ÖÒ\ãyç.Â-ºôÎÓ6Û‘ÊrÆ[ß|ç|ç}ç;Û|ã{ëœëç}ã|ã{ë[ç\ã}ßç½ïëžã~ãžë¾ï[ãÓ•ÎsÆÛøÖ¶Î”ÊRÆÂï¹Í¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Â×\Û{ã8Û.¾NÂôÒÛ±ÎqÂ[ã{ç|ç|ã[Û{ç{ëœë}ç\ß|çZã[ã|ß|ãëëžç}ã}ãžëœë×øÎî¹ï½Î¹Î¹­µ­µ­µ­µ¬µ­µ­µ­µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÎ¹ØÒ<×}ã|ßZßßOÂ.ºoÆqÆ×{ã{çë|ã{ã{ëœëç\ß[ßZçZã|ã}ãœë½ëç}ß]ßçœë[ç:×R­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï¹Ó;×\ß[ßZã9ßZß××[ß|ã[ß{ã|ã[ß{ã{ç|ç|ã[ß[ç:ã[ß|ß|çïç}ß\Û}ßë{ç[ß÷Ö͵­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±ºÓ\Û\ã[ß9Û:Û;Û[Û|ß}ã[ß[ß|ã[Û:Û:ß[ß[ß\ß|ãYãZã\ß|çïë}ã\Û\Û}ã|ç:Û9×1­µ­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬±ð¹ùÎÓ|ãç{ç:ß[Û\Û|ß|ã[ß{ã}ã|ã[ã[ã[ß;Û;Û:ß:ß|ç|ãœëœï}ã}ß<Û}ß|ç[ãϵÎ͵­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹sÂØÊ;Û[ß{ãZã[ã[ß[ã[ã{ã|ß|ãç{ã[ã\ß;Û:Û×:Û|ã{ãœëœë|ã\Û\ß|ã|ç×øÎï¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹1¾×Ò:Û;Ûëë}ç|ã|ß\ß\Û|ß|ç{ã[ß:Û:×9Û:ß|ã[ß[ã|çë}ã\ß|ã|ã[ß:×sÊ͵¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½1µÎ[ã|ãç¾ëžç}ã\Û\ß\ß\ß[ß:Û:Û;ß[ß[ã|ã[ã|ã|ã|ß}ß|ã[ã;×øÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½sÊøÖ\ã}ççççç}ã\ß;Û;Û[Û\ß[ß[ß\ß\Û\Û\ß}ã[ã[ß:ÛrÊι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ¬µ­µ¬µÍµ0ƵÒZãëë|çç|ç|ã|ß|ã\ß\ß;Û;Û\Û\ß|ã[ã[ß;Û÷Öï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹RÆß{ç{ç|ç|ã|ãç|ã|ã[ß:Û[ß[ßZß[ã[ß;ßRÊ͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µÎ¹QÆÖÖöÚ{ç|ç|ã|ß}ã|ã:ß:ßZãZã|ç;ÛÖÒî½­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±­µ­¹î¹1ƵÖß[ã|ã|ß\Û|ß|çë\ßøÒ0Âι­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½î¹tÊøÖ×\ßžç}ã[ßµÎι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹î½ÂRʵÒ×ÒÖÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ±­µ­µ­µÍ¹Î¹ï½î½­µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_pal.bin deleted file mode 100644 index e9b04b72bf..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_pal.bin +++ /dev/null @@ -1 +0,0 @@ -¸6x&w.V*6&6"5"&Ò%c C¾ov2V&¹.Ô \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_tex.bin deleted file mode 100644 index 03068e687d..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_pal.bin deleted file mode 100644 index 9b1d466d21..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_pal.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_tex.bin deleted file mode 100644 index 1e4cd1c853..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_pal.bin deleted file mode 100644 index 174ed18640..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_pal.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_tex.bin deleted file mode 100644 index 5254cb965d..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_pal.bin deleted file mode 100644 index 0d7b385707..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_pal.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_tex.bin deleted file mode 100644 index ade6231da9..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_pal.bin deleted file mode 100644 index 0ee8f0fa71..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_pal.bin +++ /dev/null @@ -1 +0,0 @@ ->ò9Ñ5°1¯--Ž-Ž)n)m)m%L%œsvJÓ1Ç \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_tex.bin deleted file mode 100644 index 036f1a1bec..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_pal.bin deleted file mode 100644 index 18a6bc0b4f..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_pal.bin +++ /dev/null @@ -1 +0,0 @@ -Bï=1F* \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_tex.bin deleted file mode 100644 index 0acb3a4efd..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_pal.bin deleted file mode 100644 index 2664fc4571..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_pal.bin +++ /dev/null @@ -1 +0,0 @@ -}[Ž!–B§ \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_tex.bin deleted file mode 100644 index b6d1e38795..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_pal.bin deleted file mode 100644 index d770464540..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_pal.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_tex.bin deleted file mode 100644 index 7084002f86..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_pal.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_pal.bin deleted file mode 100644 index f855ce6411..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_pal.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_tex.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_tex.bin deleted file mode 100644 index 8ca2cfe3b0..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_tex.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/main.pp deleted file mode 100644 index 40d4b45bf4..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/main.pp +++ /dev/null @@ -1,307 +0,0 @@ -program main; -{$L texture.o} -{$L texture1_RGB16_pal.o} -{$L texture1_RGB16_tex.o} -{$L texture2_RGB16_pal.o} -{$L texture2_RGB16_tex.o} -{$L texture3_RGB16_pal.o} -{$L texture3_RGB16_tex.o} -{$L texture4_RGB16_pal.o} -{$L texture4_RGB16_tex.o} -{$L texture5_RGB16_pal.o} -{$L texture5_RGB16_tex.o} -{$L texture6_RGB4_pal.o} -{$L texture6_RGB4_tex.o} -{$L texture7_RGB4_pal.o} -{$L texture7_RGB4_tex.o} -{$L texture8_RGB32_A3_pal.o} -{$L texture8_RGB32_A3_tex.o} -{$L texture9_RGB32_A3_pal.o} -{$L texture9_RGB32_A3_tex.o} - - - - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -var -{$include data.inc} - -var -//verticies for the cube - CubeVectors: array [0..23] of v16; -//polys - CubeFaces: array [0..23] of u8; - //texture coordinates - uv: array [0..3] of u32; - normals: array [0..5] of u32; - - -procedure Initialize(); -begin -//verticies for the cube - CubeVectors[0] := floattov16(-0.5); CubeVectors[1] := floattov16(-0.5); CubeVectors[2] := floattov16(0.5); - CubeVectors[3] := floattov16(0.5); CubeVectors[4] := floattov16(-0.5); CubeVectors[5] := floattov16(0.5); - CubeVectors[6] := floattov16(0.5); CubeVectors[7] := floattov16(-0.5); CubeVectors[8] := floattov16(-0.5); - CubeVectors[9] := floattov16(-0.5); CubeVectors[10] := floattov16(-0.5); CubeVectors[11] := floattov16(-0.5); - CubeVectors[12] := floattov16(-0.5); CubeVectors[13] := floattov16(0.5); CubeVectors[14] := floattov16(0.5); - CubeVectors[15] := floattov16(0.5); CubeVectors[16] := floattov16(0.5); CubeVectors[17] := floattov16(0.5); - CubeVectors[18] := floattov16(0.5); CubeVectors[19] := floattov16(0.5); CubeVectors[20] := floattov16(-0.5); - CubeVectors[21] := floattov16(-0.5); CubeVectors[22] := floattov16(0.5); CubeVectors[23] := floattov16(-0.5); - -//polys - CubeFaces[0] := 3; CubeFaces[1] := 2; CubeFaces[2] := 1; CubeFaces[3] := 0; - CubeFaces[4] := 0; CubeFaces[5] := 1; CubeFaces[6] := 5; CubeFaces[7] := 4; - CubeFaces[8] := 1; CubeFaces[9] := 2; CubeFaces[10] := 6; CubeFaces[11] := 5; - CubeFaces[12] := 2; CubeFaces[13] := 3; CubeFaces[14] := 7; CubeFaces[15] := 6; - CubeFaces[16] := 3; CubeFaces[17] := 0; CubeFaces[18] := 4; CubeFaces[19] := 7; - CubeFaces[20] := 5; CubeFaces[21] := 6; CubeFaces[22] := 7; CubeFaces[23] := 4; - - //texture coordinates - uv[0] := TEXTURE_PACK(inttot16(128), 0); - uv[1] := TEXTURE_PACK(inttot16(128),inttot16(128)); - uv[2] := TEXTURE_PACK(0, inttot16(128)); - uv[3] := TEXTURE_PACK(0,0); - - normals[0] := NORMAL_PACK(0,floattov10(-0.97),0); - normals[1] := NORMAL_PACK(0,0,floattov10(0.97)); - normals[2] := NORMAL_PACK(floattov10(0.97),0,0); - normals[3] := NORMAL_PACK(0,0,floattov10(-0.97)); - normals[4] := NORMAL_PACK(floattov10(-0.97),0,0); - normals[5] := NORMAL_PACK(0,floattov10(0.97),0); -end; - -//draw a cube face at the specified color -procedure drawQuad(poly: integer); -var - f1, f2, f3, f4: u32; -begin - f1 := CubeFaces[poly * 4] ; - f2 := CubeFaces[poly * 4 + 1] ; - f3 := CubeFaces[poly * 4 + 2] ; - f4 := CubeFaces[poly * 4 + 3] ; - - - glNormal(normals[poly]); - - GFX_TEX_COORD^ := (uv[0]); - glVertex3v16(CubeVectors[f1*3], CubeVectors[f1*3 + 1], CubeVectors[f1*3 + 2] ); - - GFX_TEX_COORD^ := (uv[1]); - glVertex3v16(CubeVectors[f2*3], CubeVectors[f2*3 + 1], CubeVectors[f2*3 + 2] ); - - GFX_TEX_COORD^ := (uv[2]); - glVertex3v16(CubeVectors[f3*3], CubeVectors[f3*3 + 1], CubeVectors[f3*3 + 2] ); - - GFX_TEX_COORD^ := (uv[3]); - glVertex3v16(CubeVectors[f4*3], CubeVectors[f4*3 + 1], CubeVectors[f4*3 + 2] ); -end; - -type - TTextures = record - format, pal_addr: cint; - size: u32; - end; - -var - textureIDS: array [0..9] of cint; - textures: array [0..9] of TTextures; - i: integer; - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keyspressed: u16; - keys: u16; - nTexture: integer; - -begin - Initialize(); - powerON(POWER_ALL); - lcdMainOnTop(); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - vramSetBankC(VRAM_C_SUB_BG); - // black backdrop - BG_PALETTE_SUB[0] := RGB15(0,0,0); - SUB_BG0_CR^ := BG_MAP_BASE(31); - BG_PALETTE_SUB[255] := RGB15(31,31,31);//by default font rendered with color 255 - - - //irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // initialize gl - glInit(); - - //enable textures - glEnable(GL_TEXTURE_2D); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - // setup other material properties - glMaterialf(GL_AMBIENT, RGB15(16,16,16)); - glMaterialf(GL_DIFFUSE, RGB15(20,20,20)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(5,5,5)); - - // setup the lighting - glLight(0, RGB15(31,31,31) , 0, floattov10(-0.5), floattov10(-0.85)); - - vramSetBankA(VRAM_A_TEXTURE); - - glGenTextures(10, textureIDS); - - // inital full 16 bit colour texture - glBindTexture(0, textureIDS[0]); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture_bin)); - textures[0].format := GL_RGB; - textures[0].pal_addr := 0; - textures[0].size := texture_bin_size; // size field just recorded for on-screen info - - - // Load some 16 colour textures - glBindTexture(0, textureIDS[1]); - glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture1_RGB16_tex_bin)); - textures[1].format := GL_RGB16; - textures[1].pal_addr := gluTexLoadPal( pu16(texture1_RGB16_pal_bin), 16, GL_RGB16 ); - textures[1].size := texture1_RGB16_tex_bin_size+texture1_RGB16_pal_bin_size; - - glBindTexture(0, textureIDS[2]); - glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture2_RGB16_tex_bin)); - textures[2].format := GL_RGB16; - textures[2].pal_addr := gluTexLoadPal( pu16(texture2_RGB16_pal_bin), 16, GL_RGB16 ); - textures[2].size := texture2_RGB16_tex_bin_size+texture2_RGB16_pal_bin_size; - - glBindTexture(0, textureIDS[3]); - glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture3_RGB16_tex_bin)); - textures[3].format := GL_RGB16; - textures[3].pal_addr := gluTexLoadPal( pu16(texture3_RGB16_pal_bin), 16, GL_RGB16 ); - textures[3].size := texture3_RGB16_tex_bin_size+texture3_RGB16_pal_bin_size; - - glBindTexture(0, textureIDS[4]); - glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture4_RGB16_tex_bin)); - textures[4].format := GL_RGB16; - textures[4].pal_addr := gluTexLoadPal( pu16(texture4_RGB16_pal_bin), 16, GL_RGB16 ); - textures[4].size := texture4_RGB16_tex_bin_size+texture4_RGB16_pal_bin_size; - - glBindTexture(0, textureIDS[5]); - glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture5_RGB16_tex_bin)); - textures[5].format := GL_RGB16; - textures[5].pal_addr := gluTexLoadPal( pu16(texture5_RGB16_pal_bin), 16, GL_RGB16 ); - textures[5].size := texture5_RGB16_tex_bin_size+texture5_RGB16_pal_bin_size; - - - // Load some 4 colour textures - glBindTexture(0, textureIDS[6]); - glTexImage2D(0, 0, GL_RGB4, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture6_RGB4_tex_bin)); - textures[6].format := GL_RGB4; - textures[6].pal_addr := gluTexLoadPal( pu16(texture6_RGB4_pal_bin), 4, GL_RGB4 ); - textures[6].size := texture6_RGB4_tex_bin_size+texture6_RGB4_pal_bin_size; - - glBindTexture(0, textureIDS[7]); - glTexImage2D(0, 0, GL_RGB4, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture7_RGB4_tex_bin)); - textures[7].format := GL_RGB4; - textures[7].pal_addr := gluTexLoadPal( pu16(texture7_RGB4_pal_bin), 4, GL_RGB4 ); - textures[7].size := texture7_RGB4_tex_bin_size+texture7_RGB4_pal_bin_size; - - - // Load some 32 colour textures, 8 levels of alpha - glBindTexture(0, textureIDS[8]); - glTexImage2D(0, 0, GL_RGB32_A3, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture8_RGB32_A3_tex_bin)); - textures[8].format := GL_RGB32_A3; - textures[8].pal_addr := gluTexLoadPal( pu16(texture8_RGB32_A3_pal_bin), 32, GL_RGB32_A3 ); - textures[8].size := texture8_RGB32_A3_tex_bin_size+texture8_RGB32_A3_pal_bin_size; - - glBindTexture(0, textureIDS[9]); - glTexImage2D(0, 0, GL_RGB32_A3, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture9_RGB32_A3_tex_bin)); - textures[9].format := GL_RGB32_A3; - textures[9].pal_addr := gluTexLoadPal( pu16(texture9_RGB32_A3_pal_bin), 32, GL_RGB32_A3 ); - textures[9].size := texture9_RGB32_A3_tex_bin_size+texture9_RGB32_A3_pal_bin_size; - - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - iprintf(#27 + '[4;8H' + 'Paletted Cube'); - iprintf(#27 + '[6;2H' + 'Right/Left shoulder to switch'); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 2.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_ID(1) ) ; - - glColor3f(1,1,1); - - glMatrixMode(GL_MODELVIEW); - - nTexture := 0; - while true do - begin - glPushMatrix(); - - glRotateX(rotateX); - glRotateY(rotateY); - - scanKeys(); - keys := keysHeld(); - if((keys and KEY_UP)) <> 0 then rotateX := rotateX +3; - if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX -3; - if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY +3; - if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY -3; - - keysPressed := keysDown(); - if (keysPressed and KEY_R) = 0 then - begin - inc(nTexture); - if( nTexture = 10 ) then - nTexture := 0; - end; - if (keysPressed and KEY_L) = 0 then - begin - dec(nTexture); - if( nTexture = -1 ) then - nTexture := 9; - end; - - glBindTexture(nTexture, textureIDS[nTexture]); - if( textures[nTexture].format <> GL_RGB ) then - glColorTable(textures[nTexture].format, textures[nTexture].pal_addr); - - //draw the obj - glBegin(GL_QUAD); - for i := 0 to 5 do - drawQuad(i); - glEnd(); - - glPopMatrix(1); - - glFlush(0); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cone.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cone.bin deleted file mode 100644 index 577dd5649b..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cone.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cylinder.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cylinder.bin deleted file mode 100644 index 8f38f8f02c..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cylinder.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/sphere.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/sphere.bin deleted file mode 100644 index 008e7fec60..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/sphere.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/main.pp deleted file mode 100644 index 86bfefd0c2..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/main.pp +++ /dev/null @@ -1,219 +0,0 @@ -(*--------------------------------------------------------------------------------- -Demonstrates how to use 3D picking on the DS - -Author: Gabe Ghearing -Created: Feb 2007 - -This file is released into the public domain - -Basic idea behind picking; - Draw the scene a second time with a projection matrix that only renders what is -directly below the cursor. The GPU keeps track of how many polygons are drawn, so -if a polygon is drawn in this limited view the polygon is directly below the cursor. -Several polygons may be drawn under the cursor, so a position test is used for each -object(a collection of polygons) to tell which object is closest to the camera. -The object that is closest to the camera and under the cursor is the one that the -user is clicking on. - -There are several optimizations that are not done in this example, such as: - - Simplify models during the picking pass, the model needs to occupy the - same area, but can usually use fewer polygons. - - Save the projection matrix with glGetFixed() instead of recreating it - every pass. - -*--------------------------------------------------------------------------------*) - -program main; -{$L cone.o} -{$L cylinder.o} -{$L sphere.o} - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -type - TClickable = ( clNothing, clCone, clCylinder, clSphere); - -var - cone_bin_end: array [0..0] of u8; cvar; external; - cone_bin: array [0..0] of u16; cvar; external; - cone_bin_size: u32; cvar; external; - cylinder_bin_end: array [0..0] of u8; cvar; external; - cylinder_bin: array [0..0] of u16; cvar; external; - cylinder_bin_size: u32; cvar; external; - sphere_bin_end: array [0..0] of u8; cvar; external; - sphere_bin: array [0..0] of u16; cvar; external; - sphere_bin_size: u32; cvar; external; - - clicked: TClickable; // what is being clicked - closeW: integer; // closest distace to camera - polyCount: integer; // keeps track of the number of polygons drawn - -// run before starting to draw an object while picking -procedure startCheck(); -begin - while PosTestBusy() do; // wait for the position test to finish - while GFX_BUSY do; // wait for all the polygons from the last object to be drawn - PosTest_Asynch(0,0,0); // start a position test at the current translated position - polyCount := GFX_POLYGON_RAM_USAGE^; // save the polygon count -end; - -// run afer drawing an object while picking -procedure endCheck(obj: TClickable); -begin - while GFX_BUSY do; // wait for all the polygons to get drawn - while PosTestBusy() do; // wait for the position test to finish - if (GFX_POLYGON_RAM_USAGE^ > polyCount) then // if a polygon was drawn - begin - if PosTestWresult() <= closeW then - begin - // this is currently the closest object under the cursor! - closeW := PosTestWresult(); - clicked := obj; - end; - end; -end; - -var - rotateX: cuint32 = 0; - rotateY: cuint32 = 0; - touchXY: touchPosition; - viewport: array [0..3] of integer = (0,0,255,191); // used later for gluPickMatrix() - keys: u16; - -begin - // power up everything; this a bit wasteful but this isn't a power management example - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqSet(IRQ_VBLANK, nil); - - lcdMainOnBottom(); // we are going to be touching the 3D display - - // initialize gl - glInit(); - - // enable edge outlining, this will be used to show which object is selected - glEnable(GL_OUTLINE); - - //set the first outline color to white - glSetOutlineColor(0,RGB15(31,31,31)); - - // setup the rear plane - glClearColor(0,0,0,0); // set BG to black and clear - glClearPolyID(0); // the BG and polygons will have the same ID unless a polygon is highlighted - glClearDepth($7FFF); - - // setup the camera - gluLookAt( 0.0, 0.0, 1.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); // setup the light - - while true do - begin - // handle key input - scanKeys(); - keys := keysHeld(); - if ((keys and KEY_UP)) = 0 then rotateX := rotateX +3; - if((keys and KEY_DOWN)) = 0 then rotateX := rotateX -3; - if((keys and KEY_LEFT)) = 0 then rotateY := rotateY +3; - if((keys and KEY_RIGHT)) = 0 then rotateY := rotateY -3; - - // get touchscreen position - touchXY := touchReadXY(); - - glViewPort(0,0,255,191); // set the viewport to fullscreen - - // setup the projection matrix for regular drawing - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(30, 256.0 / 192.0, 0.1, 20); - - glMatrixMode(GL_MODELVIEW); // use the modelview matrix while drawing - - glPushMatrix(); // save the state of the current matrix(the modelview matrix) - glTranslate3f32(0,0,floattof32(-6)); - glRotateXi(rotateX); // add X rotation to the modelview matrix - glRotateYi(rotateY); // add Y rotation to the modelview matrix - - glPushMatrix(); // save the state of the modelview matrix while making the first pass - // draw the scene for displaying - - glTranslate3f32(floattof32(2.9),floattof32(0),floattof32(0)); // translate the modelview matrix to the drawing location - if (clicked = clCone) then - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(1)) // set a poly ID for outlining - else - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(0)); // set a poly ID for no outlining (same as BG) - - glCallList((@cone_bin)); // draw a green cone from a predefined packed command list - - - glTranslate3f32(floattof32(-3),floattof32(1.8),floattof32(2)); // translate the modelview matrix to the drawing location - if (clicked = clCylinder) then - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(1)) // set a poly ID for outlining - else - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(0)); // set a poly ID for no outlining (same as BG) - - glCallList((@cylinder_bin)); // draw a blue cylinder from a predefined packed command list - - - glTranslate3f32(floattof32(0.5),floattof32(-2.6),floattof32(-4)); // translate the modelview matrix to the drawing location - if(clicked = clSphere) then - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(1)) // set a poly ID for outlining - else - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(0)); // set a poly ID for no outlining (same as BG) - - glCallList((@sphere_bin)); // draw a red sphere from a predefined packed command list - - - glPopMatrix(1); // restores the modelview matrix to where it was just rotated - - // draw the scene again for picking - - clicked := clNothing; //reset what was clicked on - closeW := $7FFFFFFF; //reset the distance - - //set the viewport to just off-screen, this hides all rendering that will be done during picking - glViewPort(0,192,0,192); - - // setup the projection matrix for picking - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPickMatrix((touchXY.px),(191-touchXY.py),4,4,viewport); // render only what is below the cursor - gluPerspective(30, 256.0 / 192.0, 0.1, 20); // this must be the same as the original perspective matrix - - glMatrixMode(GL_MODELVIEW); // switch back to modifying the modelview matrix for drawing - - glTranslate3f32(floattof32(2.9),floattof32(0),floattof32(0)); // translate the modelview matrix to the drawing location - startCheck(); - glCallList((@cone_bin)); // draw a cone from a predefined packed command list - endCheck(clCone); - - glTranslate3f32(floattof32(-3),floattof32(1.8),floattof32(2)); // translate the modelview matrix to the drawing location - startCheck(); - glCallList((@cylinder_bin)); // draw a cylinder from a predefined packed command list - endCheck(clCylinder); - - glTranslate3f32(floattof32(0.5),floattof32(-2.6),floattof32(-4)); // translate the modelview matrix to the drawing location - startCheck(); - glCallList((@sphere_bin)); // draw a sphere from a predefined packed command list - endCheck(clSphere); - - glPopMatrix(1); // restores the modelview matrix to its original state - - glFlush(0); // wait for everything to be drawn before starting on the next frame - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Quad/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Quad/main.pp deleted file mode 100644 index de3745258e..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Quad/main.pp +++ /dev/null @@ -1,101 +0,0 @@ -program main; -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -var - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keys: cuint16; - -begin - - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // initialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 1.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - while true do - begin - glPushMatrix(); - - //move it away from the camera - glTranslate3f32(0, 0, floattof32(-1)); - - glRotateX(rotateX); - glRotateY(rotateY); - - - glMatrixMode(GL_MODELVIEW); - - - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - scanKeys(); - - keys := keysHeld(); - - if ((keys and KEY_UP)) <> 0 then rotateX := rotateX + 3; - if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX - 3; - if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY + 3; - if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY - 3; - - //draw the obj - glBegin(GL_QUAD); - - glColor3b(255,0,0); - glVertex3v16(inttov16(-1),inttov16(-1),0); - - glColor3b(0,255,0); - glVertex3v16(inttov16(1), inttov16(-1), 0); - - glColor3b(0,0,255); - glVertex3v16(inttov16(1), inttov16(1), 0); - - glColor3b(255,0,255); - glVertex3v16(inttov16(-1), inttov16(1), 0); - - glEnd(); - - glPopMatrix(1); - - glFlush(0); - - swiWaitForVBlank(); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Tri/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Tri/main.pp deleted file mode 100644 index f926b57106..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Simple_Tri/main.pp +++ /dev/null @@ -1,98 +0,0 @@ -program main; -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -var - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keys: cuint16; - -begin - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // initialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 1.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - while true do - begin - glPushMatrix(); - - //move it away from the camera - glTranslate3f32(0, 0, floattof32(-1)); - - glRotateX(rotateX); - glRotateY(rotateY); - - - glMatrixMode(GL_MODELVIEW); - - - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - scanKeys(); - - keys := keysHeld(); - - if ((keys and KEY_UP)) <> 0 then rotateX := rotateX + 3; - if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX - 3; - if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY + 3; - if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY - 3; - - - //draw the obj - glBegin(GL_TRIANGLE); - - glColor3b(255,0,0); - glVertex3v16(inttov16(-1),inttov16(-1),0); - - glColor3b(0,255,0); - glVertex3v16(inttov16(1), inttov16(-1), 0); - - glColor3b(0,0,255); - glVertex3v16(inttov16(0), inttov16(1), 0); - - glEnd(); - - glPopMatrix(1); - - glFlush(0); - - swiWaitForVBlank(); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/data/texture.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/data/texture.bin deleted file mode 100644 index 423699d1f7..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/data/texture.bin +++ /dev/null @@ -1 +0,0 @@ -­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µÎ¹RÊrÎrέµ¬±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÂ1Æï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½RÊsÎ1Æî½­µ­µ­µ0Â÷ÞœóÝûÝûÝû¼óXç1Æ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½“ΛïœïÖÚ´Ö”ÒQÊï½Î¹­µ­µ­µµִÒã¼÷½÷½÷œóãνRÊ›ï½÷ÞûþûþÿþÿþÿþÿöÞ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÍ¹1Æã½ó½ï½óÞ÷þûþÿÞûœórÎ͵RÊã½ó½÷½ó½ó½óÞ÷ÞûÞûÝû“Ò9çÿûÞûÞûÞûÞûÞûþÿþÿÞûÞûZëÖÚß”ÒÂιï½Î¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹RÊzëÞ÷½ï½ïÞ÷½÷Þ÷ÿûÿÿÿÿ½÷´Ò8ß|çœç½ïÞ÷Þûþûþÿÿÿÿÿÿû½÷¾ó¾ïÞó½óÝóÞ÷Ý÷Þ÷Þ÷Þ÷ÞóÞóÞóÞ÷Þ÷½÷›ï½÷´Öî½­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÌµ ¾pÊ-¾í¹¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹”ÒÞ÷Þ÷¾ó½ó½ó½óÞ÷ÿûÿûþûÿûÞ÷ëœçÞ÷ÿÿÿÿÿÿÿÿÿûÿûß÷½ïœï÷Úß{ëÞ÷Þ÷Þ÷Þ÷ÞóÞóÞó¾ï¾ó½ï½ë½óÞ÷þûÿûÝûrÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ«±¬±¬µ¬µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µìµôÖÛÒÒí¹¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µrʾ÷Þ÷›ïÖÖßÞ÷ÞûÞûÞ÷Þ÷Þ÷ÿû¾óÞóÞ÷Þ÷Þ÷ß÷ÿûÿûß÷ß÷¾÷0Ƭ¹Í¹Í¹RÊ{ë½ïœëœçëëëœç|ãœç½ïÝ÷Þ÷Þû¼÷QÊ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ.¾ÊÊ ºìµí¹í¹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½ ¶6Û7ÛÓÎ-¾­µ±­µ­µ­µ­µ­µ­µ­µ­µ­µÍµµÒ¾÷œó1ÆÎ¹9ã¾ó½ó¾ó¾óÞ÷Þ÷Þ÷¾ó½ïë½ïÞ÷ÿûÿÿÿÿÿÿÿÿÿÿÞûÝûÝ÷YëÂ0ÂsÎ9ãë½ë½ë½ë½ï½ï½ïÝóÞ÷Þ÷Ý÷Þûã­µ­µ­µ­µ­µ­µ­µ­µ­µ«±M¾òÒÒβʲÊoÆ-¾í¹î½Íµ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µí¹ ºôÎöÒôÒN¬µ­±­µ­µ­µ­µ¬±¬µ¬µ­µ­µï½:ã¾ózë͹Ûëëë¾óÞó¾óëëëë½ïÞ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿû½÷zë÷ÞsΜï½ï½ï½ïÝóÝóÞóÝó½ó½óÝ÷Zë0Æ­µ­µ­µ­µ­µ­µ­µ­µµ¬µ-¾ÒαÊÓÊÓÊÓÎóÒ±ÎOÆ.¾͵¬µ¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ ºÔÎõÎÓÊí¹¬±­µ­µ­µÍµ¾Ìµ¬µ¬±­µî¹ZçëZç­µ:ßç¾ï¾ï½ïïëë½ï¾óÞûÿûÿÿÿÿßûÿûÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿÿÿÿÞû½÷Þ÷Þ÷½ó½ï½ó½ó½ï½ëÞóÞ÷ÞûÕÚι­µµ­µ­µ­µ­µ­µ­µ­µ¬µ-ºÒÊÓÎÓÊÔÊÔÊÔÊôÒóÖóÖpÆ-¾ìµÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ¬µ­µ­µ­µ¬µ­µ­µ¬µ­µ¬µ¬±¬µ¬µ­µ­µ­µ­µ¬µ­µ­µÍ¹í¹ëµôÒõÒ×±Îí¹¬±¬µ­µÍµ‘ÊÓβÎí¹­µ¬µÍµrʼï»ó›óÞ÷Þó½ïë|çë¾óÞ÷Þ÷Þ÷þûÝûÝûÝ÷¾óßûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÞ÷Þ÷Þ÷Þ÷ÿ÷þûÿÿþÿ’Ò1Æî¹­µ­µ­µ­µ­µ­µ­µ­µÌµoÂÒÊÓÊÓÎôÎôÎôÎôÎôÒÓ×óÒNÂì¹í¹­µ­µ¬µ­µŒ±¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ¬±Œ±¬±¬µ­µ­µ­µ­µ¬µ«±¬±¬±¬µÌµÌ±¬±µ­µ­µ­µ­µÍµË±-¾N ºËµ×Ó×ÒÒí¹¬±¬µ¬µ.¾ÓÎÓÎÓÎì¹í¹ ¾ì¹í¹³Ò ¾ ºqÊyç½ïëï¾óÞ÷Þ÷½ï›ë’ÎqÊpÆ/¾{ëÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿûÿûþûÿÿÿÿÿ÷ß÷ÞûÝ÷8ãrέµµ­µ­µ­µ­µµÌµNÂÒÎÒÊÓÊôÎ××ôÒ×õÒôÎ××ÑÎN¾¬µ­µ¬µí¹í¹í¹ÍµÌµÍµ¬µÍµ¬µ­µ¬µNÂÎ ¾Œ±­µ­±­µ¬µËµNÂÒÒì¹ëµ,¾ÒÒOƬµ¬µ­µ­µµÍ¹ì¹6ÛÓÎôÒO²Î××ÓÒí¹­µ¬µ ¾ÓÎôÎ×pÆpÂôÒÔÒôÖôÖNÂpÆבÊ.¾YçÞ÷ÿûÞ÷¾ó¾ó½ó’γÊöÒõÎ º7ãÿÿÿÿÿûÿ÷ÿûÿÿÿÿÿûÿûÿûÿÿÿÿÿÿÿÿÞû¼óÿûÿûþûþûþÿÿûÞó¾ïßóÿ÷ÿû›ï´Ö­µ­±­µ­µ­µµÌµNÂÓÎÓÎóÎôÎ×ß7ãxçÛ×ôÒôÒÛóÖoÆ.¬µî¹.¾ÛÛNÂì¹N²ÎÒÒpÊ ¾Ë±±ÊôÖÊ˵­µ­±­µ¬µì¹óÖÔÎpÆËµ±ÊÛóÖî½­µ­µ­µ­µÍµ-º6ÛôÎôÒÓÒOÂ7Û×ôÖ ¾Í¹ìµ²ÎÓÎôÒ±ÎNÂôÒ³ÊÓÎôÖÓÒÒÎ.ºõÎײξYëÿÿÿû¾ó¾ó½óOƳÎÓÕÎ º³Òÿÿÿÿÿ÷ÿ÷ÿ÷ÿ÷ß÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿ÷âî½ÕÖÞûÿûÿûÿûÞ÷ß÷ß÷¾ï¾ïÿûÿÿœ÷­±­µ­µ­µ­µí¹OÂÒÎÓÎÓÎÒαÊpÆ.Â.¾O¾²ÊôÒôÒ×ÛÛoÆ.¾ ¾OÂõÖõÒÓÒ ºÓÎôÒõÒÛÓÒNÂOÂõÖôÒ-¾Íµ­±­µ¬µ ºôÖÔÊôÒì¹ÒÎÛ6߲άµ­µ­µ­µÍ¹-ºxç×ÓÎÒÒ.¾õÖÛÛ ¾í¹O¾ôÒôҲΠºÊÓÒ²ÊÓÒÓҲΑÊ/¾õÎõÒ×pÊqÊÞûÿÿÞ÷Þ÷½ïpÊ‘Ê×ôξ²Îÿÿÿÿÿ÷ß÷ß÷¿ïß÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿßû{ëQÆ÷Úß÷ß÷ß÷ßó¾ï¾ëßïß÷ÿûÿû{ïî½­±­µ­µ­µ­µ¾OÂÒÎóÒÒÎÒÎNÂNÂíµí½ ¾ ºº³ÊôÒôÒÛÛnÆËµ ºôÖÓ×ôÎôÒ×õÒôÒÓÎóÒ‘ÊpÊÛPÆÍµ­µ­µ¬µ ºÆõÎ6ß ¾ÓÒÛ5ÛóÖ ¾±¬µ­µ¬µ ºÛôÒôÒóÒ º×6Û6ß.¾õÒõÒóÒ ºì¹M¾ôÖ‘Æ ºí¹ì¹O¾öÒõÒõÒ×6ß¾ßÿÿÞûÞ÷œëqʲÎÛ×.¾NÂÝ÷ÿÿÿûÿûÿ÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿûßó¾ïµÒµÒÞóßóßóß÷ÿûßóßóÿûÿûÿûYçι­µ­µ­µ­µµ¾NÂóÒóÒÒÎÓÒÓÒ ¾º¬µ­µÍµ-¾ º×ôÒ×ÛóÖNÂ˱ÒÎÓôÎÛ6ßÓÒpƑʲʑƱÎNÂבÊí¹­µ­µ¬µ º‘ÊõÎ7ã ¾óÖÛôÖ5ÛÊ̵µµ¬µí¹5ßôÒÓóÖìµôÒ6Û6ßÓÒõÖ7Û×oÆì¹ËµoÆ×ÒÎ̵¬µÌµ‘Ê×ôÒõÖÛ6Û’ÎO¼óÿÿÿû½ïrÊôÚÛôÒpÆO¼÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ÷ß÷ß÷zïsÎÞûÿûÿûÿ÷ß÷ÿûÿûÿûÿ÷ÿû›ïι­µ­µ­µ­µµî¹OÂóÒÓÎôÎôÒÛÊ ¾¬±¬±±Íµì¹ÓÒ6ÛÓôÖ5ßÒÖN²Î7ÛõÒ×ó־͵í¹o±ÊÊOÂבÊ̵­µ­µ­µ ¾±ÊôÒWã ºÛÛóÒ6Û×O¬µ¬µ¬µì¹±ÎÒÎ×Û ¾6ß7ß6ß7ß7Û7ßÛ ºÍµËµÆÛÒÒ«±µÍ¹pÊôÖôÒ×ÛÛÛ.ÂÔÖ½÷ÿÿÞ÷’ÎóÒôÎÒÊpÆ ºzëÞûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûßûß÷ß÷9çÖÖÿûÿûÿÿÿÿÿûßóßóßóßóÞûrέµ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎôÎôÎÛÓÖ ºÍµ­µ¬µ¬µËµoÆÓôÒ×6ß6ßÊPÆõÖÓÊÔÎPÂí¹¬µÍµìµ º ºÓÎבÊ̵­µ­µ­µ.¾ÒÎôÒ6ß-¾ÓÖÒÒÒÎ××ÒÒ º­µ¬µì¹ÒÒÒÎÓÎÛ-¾6ß6ß6ß6Û7Û7ß±Îìµ­µËµÆôÖÒÎí¹Ìµí¹.¾qÊÛôÖ×ÛóÖ²Îìµ7ãþûÞû²Ò³ÎõÖôÒoÆëµ/­µãÿÿÿÿÿûÿ÷ÿ÷ÿûÿÿÿÿÿûÿûß÷ßóÞó½ï¾óß÷ß÷ÿ÷ßûßûß÷¿ïßóÿûœï­µ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎÓÊôÎ×óÖ͹­µ­µµ­µ«±²ÎôÒóÒóÒÛxç±ÎOÂÒγÊÔÎoÆÍµ¬±µ¬µËµ.¾×ôÒ‘Î̹­µ­µ­µ/ÂÒÎôÒÛ.ÂÛÛ±ÊóÒ6Û5ßoÆì¹¬µí¹ÓÒóÒÓÎÛ.ÂÛÛ×7ß7ÛÛoÆÌµ­µëµ±ÊôÖôÖóÖÓÒÓÒÊOÂ6ßÛôÖÛÛÛ.Â/½óÞ÷³ÖõÖ×ôÒ‘ÆëµôÚrÎ͹”Ò¾óÞïÿûÿûÿÿÿÿÿÿÿûÿûÿûÿûÿûÿûÿûÿûÿûÿÿÿûÿûÿ÷ßóß÷ÿÿãî½­µ­±­µ­µ­µ­µÍµ.ÂôÖôÒÓÊÔÊ×Ûí¹­µ­µ¬µí¹ º×ÒÎÒÎóÒ×yçÒÒNÂÓÒÓÊõÒpÆŒµ­µ­µ­µÌµ-¾×בÎ̱­µ­µ­µ.¾ÓÒôÒÛ.ÂßÛ±ÊóÖ6ã6ßÒÒ º¾ì¹oÆôÒôÒôÖ-¾óÖÓÎ×7Û7ÛWãÛ º.Â˵±ÊÓÒóұʱÊÒαÊ.¾×6ÛÛôÖÛ7ßÛ ºöÚþû²ÒÛÓôΑÊëµßÞÿ{ïî½sʾïÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûßûÿûÿûÿûß÷ÿûß÷¿ï¾ë¾óßöÞι­µ­µ­µ­µ­µÍµ-¾ôÖ×ÔÊÔÊôÒÛ ¾ÍµÍµ ¾ì¹ôÖ5ßóÒÒÎôÒÓ6ß±Î-¾ôÒôÎõÒpÆŒµ­µ­µ­µì¹N¾××óÖ«±­µ­µ­µ ¾ÓÒôÒ×-¾Û󮮱ÊóÖ5ßNÆ ºí¹N¾Ó×óÖ ºÓÒõÒ××6ßWãôÖ±Îëµ ºôÖÒÎÆÆ±Ê±Î±Î ¾ôÖóÒÛôÖõÖÓÕÎÓÒ ¾›óÓÖÔÎÓ×oÆìµôÖÿÿÿÿ9닱ßß÷ßóÞïßóßó¾ï¿ï¿ï¾ïßóßóÞóß÷ß÷ßóßóßóßó¾ëžã¾ëß÷½÷­µ­µ­µ­µ­µ­µ-¾ÓÒ×ÔÎôÎôÖÛÊ ¾ º ºõÖ7ÛôÒÓÊÓÎÓÎ×5߯.¾×ÓÎôÖpʵ­µ­µ­µÌµ‘ÊôÒÛ5ß̵­µ­µ­µì¹±Î×6Û.ÂÓÒÛÒÎÒÎÒÎÒÒ۱Πº.Â-ºÓÎ6ÛÛ¾Û7ÛÛ6ßÛÊÛ6ß/Â/ÂÛÆÆ±Ê‘ÊpÆOÆ.¾±ÊóÒÓÒoƲÎÓõÎ6Û.¾pƲΒÊõÒÛ±Îëµ’ÎÞûÞ÷½óÂÛžçžããããžã¾ëßïßóß÷ßóßó¿ï¾ë¾ë¾ë:ß÷Öžçãßóÿûþÿ­µ­µ­µ­µµ­µN±Ê×ôÎõÒ×ÛÛ‘Ê’Ê×ÓÔβʲÊÓÎÒÎóÒÒÒ-¾pÆÓÒóÒôÒʬ±­µ­µ­µÌµ²ÎÛÛÛ̵­µ­µ­µí¹±Ê×6ã.±ÊôÖ6ßÛÊÒÒÛôÖìµëµ.¾ôÎ×ôÖ¾7ß××xç¾NÂÆ6ßóÖì¹ôÚóÖÒÎÊì¹ì¹ ºÓÒóÒ²ÎÊ/ÂpÊOÂÓõÎÓÎO º‘ÊÓÊõÒ’Îìµ8ãÿû¾ïç[ß|ß\ß\ß}ß}ãžç¾ëßïß÷Þ÷{çœë¾ï¿ï¾ë¾ï¾ïrÊRÆžç¾ëÿ÷ÿÿ¼÷͹­µ­µ­µ­µ­µ­µ-¾/Â6ß×Û7ß7ß×õÒõÒôÒôÒôÎÓÊÓÎôÒ×ÒÒoÆìµpÆóÒÓÊÓΑʬ±­µ­µ­µÌµÓÖWã×6ß-¾Ìµ¬±¬µ.ÂÒÒÛxëNÂÓÎ×5Û.Âʱ ºÛ6Û‘Ê.¾±ÊÓÎײΠºÛôÒ6Û6ßì¹pÆ º×ôÖpÆìµôÖóÖ-¾¬±î¹ ºÛôÖôÖ‘Î’Ê8ß ºôÖõÒ6Û×ôÖõÒõÎôÎ’Ê ºõÚœïë:ßÖÒ:ß}ã¾ëÞóßóßó¾ï¾óÞóßQÆ÷Úß÷ßóß÷ÿ÷œï1Æ:ß¾ë¿ïßûÝû”Ö¬µ­µ­µ­µ­µ­µ¬µ ¾-¾6ãWç6Û7Û7Û7Û×óÎôÒôÎôÒôÒôÒ×5ÛoÆ.¾.¾-¾ÒÊÒÊÓβά±­µ­µ­µÌ¹ôÚ6ß×6ßÓÖëµÌµí¹²Î6ß6Û6ßNÂÓÎÓ6ß-¾-¾ËµôÖóұʱÊÒÊóÎ×ÒÒ º²ÎôÒôÖôÖìµ¾ ºÓÒôÖÓÒ ºpÆÒÒ ºÍ¹Í¹¾ÓÖÒÎÒÒ²Ò¾Xã.¾qÊVßôÖÛ6ßôÒÔÊ×²Ò ºÌµ­µï½Í¹‹±Íµ”ξ÷ÿû¾ï¾ï¾óœïÖÚî½Â8ãÞ÷ÿûÿûÿûÞ÷çžë¿ó½ó÷Þ0ÆÍ¹­µ­µ­µ­µ­µ­µ­µ ¾ ºßxë6ß6Û×××ÓõÎõÎõÎõÒÓóÒÊ ºëµ.¾oÆÒαÆÓÊÒÒ͵­µ­µ­µí¹ôÚ5ß××ÛÛôÖÛ7ß7ß6߲ΠºÔÎõÒÛ.Âí¹ì¹ÒÒÒÒ±ÆÓÊóÒ×±ÎëµÓÎôÒ×Û¾¾ ¾±ÊôÖóҲΠ¾ÓÒOÂì¹OÆ.Â5ßÓÎÓαΠºXã³ÎOÂWã×Û×ôÖôÒ5Û‘Î ºÔÒÖҔΔÎ÷ޔξrÊ8ã9ããÕÖ0Æ0ÆÂÖÚßûÿûÿûÿûß÷ßóßóÞ÷÷Þî½­µ­µ¬µ­±­µ­µ­µ­µ­µ­µÍ¹ º²Îšï6ß×××7Û8×Ó8×7ÛôÖÊ.¾.ÂôÖôÖ¾OÂóґƒƲʾ­µ­µ­µí¹ÓÒWã××ÛWßXã7ß7ß7Û6ÛoÆìµõÖÔÎôÒNÂ͵ì¹OÆôÖ²ÆÓÎôÎôÒ6ÛÊ˱ôÖ××ôÒ.¾í¹OÂpÆÛôÒÓÎOÂpÆóÒPÂpÆPÆOÂÓÎ×ôÖ.¾Zã8ßì¹ôÖ5Û××××ÛÒÒëµÛ|ã[ã9ß9ã¾ï[ã”Ò0Â0ÂQÆsεҔÎrÊÞ÷ÿûÿûß÷ßó¿ïß÷ÿû8笱­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºoÆwçxç6Û7Û6ßÛõÖÓұΑÊoÆpÆÓÒôÖ×6ßóÖ.¾óÒÒÎÒÎÊì¹­µ­µ­µî¹-¾Wã6ßÛXãXßWß7ßXß7ßÓÎ ºËµÓÎÒÎ×oÆí¹Í¹ ¾×õÎõÎôÎ×ôÖ,¾Ë±²ÎôÖÓÊÔÎ.¾Íµ/ÂìµÓÎ7ßÓÒÓÖ ºóÒÂÓÎôÖPƲÊõÎöÒ.¾zçœëpÆpÆ6ß×××ôÒôÒóÖì¹×}ã[ã9ß\ã~ß}ã[ã}çëœë[ç:ãQÆãÿÿÿûß÷ßó¿ïßóÿûßû’Ò¬µÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ ºO‘ÎÊpÊpÆ.Â.¾qʲÎôÖ6ßXãWß6ß×5ß6ß.¾NÂN ºÌµ­µ­±­µ­µ­µÌµ ¾±ÎôÖXãXãWã6ßôÚÊ ºí¹ìµÊÒÒÓÖì¹Ìµ­µÌµpÆôÒôÖÒÎÆNÂ˵칱ÎßÛʾ­±Í¹ ¾oÆ7ß×ôÖ.¾ÛÆ‘ÆÓÒpʳÎÛôÒºZßZçÔÖ º6ßÛ×õÒÓ×ÒÎìµÛ|ãZç:ßÓ<×|ççžçç|ë{çµÒrʽóÿûÿûÿûÿ÷ß÷ÿûß÷ë0¬µÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ¬µÍ¹¬µ¬µ­µí¹±ÎWã7ßXãzçÛÓÒõÖ6ß6ã6ßÛ.Â̵­µ¬µ­µ­µ­µ¬µ­µ¬µ¬µ¬µí¹ìµìµ ¾ì¹Ìµ¬±­µ¬µÌ¹Ë±ëµìµÌµ­µ±¬µËµìµì¹ëµËµÌµ­µÍµì¹-¾-¾ º/Â͹¬µí¹ ¾-¾ ¾ ºOÂÛôÒ²ÎpÊ º-¾oÂ.¾PÂzç9ãYç’Î.¾²ÎÓÒÓÒ²ÊpÆìµ0º[ßZçZã;Û<×|ã|ç¾ë}ã}ç{ë|ëQÊãÿûÿûß÷ÿûÿûÿûÞ÷9ãSÆtÊrÊ͹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ­µ­µì¹ôÖ7ß7ÛYãÛ ¾ ¾.¾7ßXç5ß6ãÎ͵µ¬µ¬µ­±­±±­µ­µµ¬µ¬µ­µ¬µ­µ­µ­µ­µ¬µµ­µ¬µÍ¹í¹í¹í¹ÍµÍ¹ÍµÌµì¹.¾.¾í¹Î¹­µÍ¹.¾ º ¾ ¾ ¾/¾­µÍ¹Í¹î¹0¾qÆqÆqʳÒÛµÎÕÒ÷ÖZßZã:ã[ßZß÷ִγγғÎÕÒÖÒ[Û|ç{ç\ß]Û}ã|ëçç|ã|ç|çÖÒsξ÷ÿûÿûÿûÿûÿûÞ÷µÒ¾¶Æ;×øÚ͹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ ¾6ßXã8ßYßqÆÌµ­±¾qÊ™ïxë6ãOƬ±Íµî½¾N¾µ¬µ¬µ«±Ëµì¹ì¹«±¬µ¬µ­±µ­µ¬µí¹ì¹.¾OÂʲÎÊìµ ºoƱÎÓÒpÆ ¾ º.¾N¾²Ê²Ê‘ÊÆNÂ.Âî¹­µÎ¹RÆøÎ[ß{çZë8ß\ß|ßçç{ë9ç{ã|ãçç{ç9ßç}ãã}ã|ã[ã\ã<Û}ß|ë|çã}ã}ç{çZã0Â:ã¾ïßóß÷ßóßóß÷œï¾–ÆùÎ\ß{ç­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ º×ÛXßYãºÍ¹µ¬µî½/ÂPÆí¹¬µ¬µ.¾pÆÓÒôÖÊ ¾ì¹¾Ìµ ºôÒ×6ßÒÒ ¾ÌµÌµ­µ­µ­µìµôÖ×ôÎôÒÛÛO‘ÎôÒ‘ÆpÆÓÒ±Ê º.¾ÓβÊÓÒõÒÔαÊNÂ͹͹0Â×Ê:×{ã{ëYç{ã|ß}ã}ãëZë{ëœçžëççZç[ã}ß}ß}ß\Û\ã[ã\ß]ßçœëë¾ëžëë|ã”ÎQÆ}ç¾ë¾ë|ë|ëÞ÷ÞûãsÆ×\ßç¾ïrέ¹µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ º×7ÛXßXã-¾í¹­µ­µ¬µ­µ¬µ¬µ¬µí¹ÓÒ6ÛXß7ßWã6ßÓÒ ¾.ÂOÂYã×ôÒôÒ5ßÛoÆì¹Íµ¬µËµ³ÎõÒõÒÛ6ã6ãNÂÓÒ ºÌµÍ¹¾²ÎNÂOÂ²Ê‘Ê º º³ÎÛoÆÎ¹ï½tÆÏ|ã{ã{çZç|ã}ã}ß\Û{çZëëëžë½ë{ç[ç}ç}ß}ß]Û\ß;Û\Û]ßçœëë¾ë¾ï¾ï\çøÖï½ÕÖ½ïë[ç1Æ1ƵÖsÎÊ}ãžçžëžë÷Úι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ/ÂÛ6ÛXãWç ºÍµ¬µ­µ­µµ­µ¬µ¬µOÂÛÛyçXãWãyëXçÛ ºpÊšëXßôÒ³ÎôÒõÒôÖ²ÎìµÍµËµOÂ×õÖoÆ ¾ º ºÓ¬µOÂpÆÊº²Ê.¾¾.Â.±Ê¾î½¾×Ê[Û|ç{çZç{ççžç\Û|ãZëœïëç}ãœëzë|ç}ß}ß]ß}ß|ã;Û\Û}ãë|ë¾ï¾ë¾ï|ë:Û1Âî½Î¹0¾͹ι͵ιι¾•Êçžçžë}ãZãï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßXãšïšï ºÍ¹­µ­µ­µ­µ­µ¬µÍ¹ÓÒ7Û6ÛÓÒoÆpÆÛXãÛÊ-¾yë7ßõÖôÖÓÒ×Û6Û±Î칩­pÆõÒ‘ÆÊ±í¹ì¹oÂôÒ‘Æìµí¹OÂÒÒnÆ.ºÓÎ-¾¾­µî¹Ì¹î¹î½RÂÓ\ß|ç{ç{ç|çã}ß}ãœë{ï½ïççœç{ëZç}ã}ß}ß]ß}ç:ß;×<×ç|ç¾ï¾ëžç½ó|ç۾ι­µ­µ­µ­µ­µ­µ­µ­µQÆ×Ö¾ë¾ï¾ï}ã{ç¾­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßYãyç7ç.Â͹­µ­µ­µ­µ­µÍµí¹õÚ6ß²Ê ºî½OÆ-¾ôÖ6ÛóÖêµôÖXãÛ ¾OÆOƲÎ×6ßÎʱ³ÎõÒ²Îëµî½í¹ÊÓÎÒÎÓÎÓÒÓÒ,º ºpÆÓÒO ºOÂ/Âî½î¹ºÖÊ:×|ã{ëZç[ã|ã}ß<×}ç{ïœëëç}çœë{ë|ç}ã}ã\Û}ã|ç;ß<×[Û:ßçžë}ãžëœï{çsÊï½µµ­µ­µ­µ¬µ­µ­µ­µ0Âß¾óßó¾ïçZç͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ‹±¾Xãyç™ëxëÂ͹­µ­µ­µ­µ­µÍ¹ìµ7ãxë.¾¾­±­µOƲÎXãÛ뵑ÊXã7ß.Âî¹î¹.¾²ÎWãßNÂ.¾õÖÓÖoÆ.¾.¾ ºÓÒÓÎÓÎôÖ-¾ëµÊ±ÓÒôÖÓβÊpÂOÆ º¾ÕÒ:ÛלëZçZã|ã\ß\Û\ß|ëœïëç}ãë{ë{ççžç}ß}ßë[ã;Û\Û{çZãçžçç¾ó{çÛï½Î¹¬µ­µ­µ­µ­µ­µ­µ­µÍ¹0Â\çßóß÷¾ëžë8ãî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ«±ìµ7ßxçxçyëÂ͵­µ­µ­µµ­µí¹ëµôÖyç‘ʾ¬µ­µ.ÂPÆXçWã,¾oÆ7ß7ßPÆÍ¹­µ¾PÆÛßoÆí¹××õÒ×ÛOÆpÂôÒôÒoÆNÂ-¾ìµ-¾‘ÊÓÒÛõÖÛõÖ.¾º9ß{ãœëZç|ç|ß]Û<×çœëœë}ã|ß}ãœë|ëç}ã}ß\Û|ç[ã;Û\Û|ç{ç|çžçžç¾óï{çrÊïÁ­±­µ­µ­µ­µ­µ­µ­µ­µÎ¹1Â\ã¾ï¿ïžç¾ïÕÚî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµëµßšëyë»óOÆÍµ­µ­µµ¬µÌµì¹ º ¾‘Ê7ÛÔÖ͵­µ/ÂpÆXçWçnÆ º6ÛÛOÆ­µµ­µ.¾²ÎÛ±Îì¹ôÒ7ßÛ6ßWã²Î‘Ê×õÒ×ÛôÖO ºí¹.¾¾OÆõÖõÒóÖ-¾“ÎzçZç{ç|ã\ß<×}ß{çœëç|ß\ßœçœïëžç}ã\Û}ã[ç:ß|ß¾ç|ë|ë}çç¾ï½ó[ç÷Ú­µ­µ­µ­µ­µ­µ­µ­µ­µÎµ¾¶Îžç¾ëžç}ãï0ÆÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ëµÓÒXãyëÜ÷ÓÖ͵­µ­±­µÍ¹.ÂÒÒß6ã.³ÎX㾬µ¾.¾ÛÛ. ¾7ß6ßpÆÍµ¬µ­µ/‘ÊóÒÒÒìµÓÎ6ãôÚNÂʵ˱6ßÛÛÛöÖ6ÛÓÒí¹­µ­µÍµ.Â.¾õÒÔÒMÂ/¾Yã9ã{ç}ã\Û<×|ã{ëœï}ã}ã|ãœëœï¾ëžç\ß|ß|ç9ß;Ûç½ëœïœëçë¾ó|ë[ãQÆï½­±­µ­µ­µ­µ­µ­µ­µ­µ¾¾מçžçžç}ãøÚ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµ³Ò™ëyë¼óßî½­±­±­µí¹ÒÎ6ÛÛ6ßOƲÎ7ß.­±Â.¾6ÛÛ.‘ÎXã7ßPÆî¹¬µ.Â.²ÎôÖÓÖ ºÓÎÛ.Âí¹Ìµ.¾šïßÒÒìµ/¾ÓÎôÒ¾¾Íµ¬±/Â-¾õÒôÒoƾ8ã9ã}ç}ß<Û\ß|çœï½ï}ã}ã|ë›ë½ëžç}ß\Û|çZãÛ\ßžë½ï¾ó¾ïç¾ï½÷{ãÖÖî½­µ­µ­µ­µ­µ­µ­µ­µ­±ÎµRÆØÒ\ß}ßžç~ã\ßQÆÍ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.™ïšëyë7ãOÆí¹î½í¹qÆôÒôÎôÖÛNÂÓÎÛOÆPÆpÊOÆ7ßôÖ ¾õÚzçÛOÆ/Â.ÂNÂqÆ7ßWãÓÖì¹ôÖóÖ ºí¹Ì¹oÆxëߑΠ¾ì¹pÂõÖ‘ÎOÂì¹ìµìµÓÒ8ßWãoÆqÆYç{ç}ã]ß]ß|çœï½óë\ß|çœïœï¾ë}ã<Û\ã|ç9ß;×ã¾ï½óÞóëë½óœë[ã1Âï½­µ­µ­µ­µ­µ­µ­µ­µ­µRÆ•Ê<Û\Û~ã}ã\Û×Ö͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµõÚšë™ë»ó6ßOÂOƲÎÛ××6ßÒÒ-¾ôÖõÒÓÎpÆ‘ÎÛVã‘Î º7ãyç×OÆ.¾N³Ò7ß7ßÛÊ/ÂÛ6ßOÆÊ±Ë±Ê±ÓÒXãßí¹¬µpÆ6ßõÚOÂÔÖ³ÊÔÒXãyçôÚ ºöÖzçç}ã]ß}ã|ç¼ó¾ï}ã}ßœë{ëïë\Û]ß}çZã×;מë¾ïÞó¾ë}ãçœë[ãßï½Î¹­µ­µ­µ­µ­µ­µ­±­µ1ÂsÆ;Û}ß}ãžç~ç:ßÂ͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.Â7ãšëšïšëXçXã7Û6Û7Û6ÛÛpÊ.¾ÛÛõÎÓ7Û6ßÛ ¾ì¹ôÖ7ß6ßÛôÖÛ6ß6ßÛóÖì¹³ÒÛ×ÒÒNÂN¾oÆ ºöÖ7Û¾­µ ºôÖXçN²ÎôÖõÖ7ã5ßpÆ“ÎZç|ç|ß}ã]ßçï½óë<Û\ßœïœï¾ï}ß;×|ã[ç:ß;×]ß¾ï¾ó¿ï}ã}ãë{ç:ã1Æï½±­µ­µ­µ­µ­µ­µ­µ0ÂRÆ×}ãžçžçç|ç´Ò͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µî¹PÆWãyçXãXß7Û7Û6Û6ßôÖ‘Êí¹Í¹pÊxç×ÕÊ×ôÖOÆî½ ºpÆ6ÛÓÒôÖÛÛÛ±ÎNÂìµÌµÛ7ß×7ÛÛ6ÛÛ ¾ß7ã ¾­µí¹±Î7ãÊ˱-¾‘ΑÊpƳÒ8ã{ç}ã}ß]Û]ßëœï½ï\ß<Ûëœï½ïžë\Û;Û|ç:ß:×\Ûçï¾ëžç}ãçœë[ãÖÖι­µ­µ­µ­µ­µ­±­µÎ¹¾”Ê;Ûžç¿ë¾ë¾ë¾ï÷Úι­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¾²ÎÛ6Û6Û×ÒÎÊ.¾Íµ¬µ­µ.¾pÆõÖ³Îqʾ͵¬µí¹-¾±ÊÒÒÓÒÊOÆ.¾Ìµ¬µ­µ«±³ÒXã×YßXãÛÒÒì¹. ºÌµ¬±Íµ-¾Û²Ò¾’ΓÊõÖYçzë8ã|ç}ß]ß]ßçœï½ïë]ßç{ëœïï}ã\Û|ãZã:Û;×\ßëëã~ãçë{ã[ã1ÆÎ¹­±¬µ±­µ­µÎ¹ï¹¾¶Î\ãžë¾ï¾ï¿ïÞóZçî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±í¹í¹¾í¹Ìµ¬µ¬µµ­µ­µÍµí¹í¹¾î¹­µŒ±­µ¬±¬±¬µÌµÌµ¬µ­µ­µ¬±¬µµÌµì¹.¾ ¾¾í¹ì¹ËµÌµ«±¬µ¬±±­µ ºôÚ7ãOÂrÂ×{ãZç9ã[ç|ã}ß\ß}ãëïžë}ß|ß½ï{ïœïç}ãç{ë:ß;Û<×}ãë}ç}ß}ãë|ç[ß÷Öî½­µ­µ­µÍ¹î¹ï¹¾–Ê<Û}ã¿ë¿ï¿ï¿óßóYçµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­µµµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µµµ±­µ­µ­µ­µ­µ­µ­±¬µÌµ‘ÊXã²Î º×ZßYã9ã|ã}ß|ß}ßçœë½ï}ç\Ûžë½óœïë}ãçœëZã:Û<×\ßëç\ß\Ûçœï[ã[ß1Æï½Î¹Î¹ï½1Æ•ÊùÖ<Û~ãžãžçžç¾ë¿ïÞ÷ãµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºõÖ7ÛpÆOÂ8ßYç{ç|ß\ß\ß|ãœëœëë\Û}ã½ó½ó½ëç}çë[ç:ß;×<×|ãë}ã}ß}çë{ç[ßÖÒ”Î:ßß:ãœï¾ïžëžçžçžã~ã}ßžã¾ï½ó´Öî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÌµpÆ7ÛõÒOÂpÆ8ã|ç|ã\ß}ßë{ëë}ã\ßïœïëç}ãç|ëZã[ß<×\Û}ë}ç}ãžç¾ïœë[ã:Û1¾<Ûžç¾ëžë¿ë¿ëžë¿ë¾ëžã~ç\ß:ßÖÖ0Â͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹’Ê ºÓÎÓôÎOÂ.¾Ûzã[ß\ãœë|ëç\Û|ãœóœïëççëZã[ß\ß\ß}çëã}ãžëï{ç;Û”ÊuÆžë¿ó¾ï¾ï¿ï¿ïžç~ã}ã;ß×ÒRÆï½­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Æ9߯ ºôÒÔÎ×pʾ8ß[ß|ç{ëœç|ß\Û|ë›ïëç}ã|ç{ë[ã\ß|ß|çïžë}ãžç¾ï|ë;Û×RÂ;Û~ççžçžçç[ãÛµÎRÂï¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹ÖÒ\ãyç.Â-ºôÎÓ6Û‘ÊrÆ[ß|ç|ç}ç;Û|ã{ëœëç}ã|ã{ë[ç\ã}ßç½ïëžã~ãžë¾ï[ãÓ•ÎsÆÛøÖ¶Î”ÊRÆÂï¹Í¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Â×\Û{ã8Û.¾NÂôÒÛ±ÎqÂ[ã{ç|ç|ã[Û{ç{ëœë}ç\ß|çZã[ã|ß|ãëëžç}ã}ãžëœë×øÎî¹ï½Î¹Î¹­µ­µ­µ­µ¬µ­µ­µ­µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÎ¹ØÒ<×}ã|ßZßßOÂ.ºoÆqÆ×{ã{çë|ã{ã{ëœëç\ß[ßZçZã|ã}ãœë½ëç}ß]ßçœë[ç:×R­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï¹Ó;×\ß[ßZã9ßZß××[ß|ã[ß{ã|ã[ß{ã{ç|ç|ã[ß[ç:ã[ß|ß|çïç}ß\Û}ßë{ç[ß÷Ö͵­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±ºÓ\Û\ã[ß9Û:Û;Û[Û|ß}ã[ß[ß|ã[Û:Û:ß[ß[ß\ß|ãYãZã\ß|çïë}ã\Û\Û}ã|ç:Û9×1­µ­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬±ð¹ùÎÓ|ãç{ç:ß[Û\Û|ß|ã[ß{ã}ã|ã[ã[ã[ß;Û;Û:ß:ß|ç|ãœëœï}ã}ß<Û}ß|ç[ãϵÎ͵­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹sÂØÊ;Û[ß{ãZã[ã[ß[ã[ã{ã|ß|ãç{ã[ã\ß;Û:Û×:Û|ã{ãœëœë|ã\Û\ß|ã|ç×øÎï¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹1¾×Ò:Û;Ûëë}ç|ã|ß\ß\Û|ß|ç{ã[ß:Û:×9Û:ß|ã[ß[ã|çë}ã\ß|ã|ã[ß:×sÊ͵¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½1µÎ[ã|ãç¾ëžç}ã\Û\ß\ß\ß[ß:Û:Û;ß[ß[ã|ã[ã|ã|ã|ß}ß|ã[ã;×øÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½sÊøÖ\ã}ççççç}ã\ß;Û;Û[Û\ß[ß[ß\ß\Û\Û\ß}ã[ã[ß:ÛrÊι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ¬µ­µ¬µÍµ0ƵÒZãëë|çç|ç|ã|ß|ã\ß\ß;Û;Û\Û\ß|ã[ã[ß;Û÷Öï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹RÆß{ç{ç|ç|ã|ãç|ã|ã[ß:Û[ß[ßZß[ã[ß;ßRÊ͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µÎ¹QÆÖÖöÚ{ç|ç|ã|ß}ã|ã:ß:ßZãZã|ç;ÛÖÒî½­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±­µ­¹î¹1ƵÖß[ã|ã|ß\Û|ß|çë\ßøÒ0Âι­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½î¹tÊøÖ×\ßžç}ã[ßµÎι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹î½ÂRʵÒ×ÒÖÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ±­µ­µ­µÍ¹Î¹ï½î½­µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/main.pp deleted file mode 100644 index 0f4b096414..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/main.pp +++ /dev/null @@ -1,196 +0,0 @@ -program main; -{$L texture.o} - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -//texture_bin.h is created automagicaly from the texture.bin placed in arm9/resources -//texture.bin is a raw 128x128 16 bit image. I will release a tool for texture conversion -//later -var - texture_bin_end: array [0..0] of u8; cvar; external; - texture_bin: array [0..0] of u16; cvar; external; - texture_bin_size: u32; cvar; external; - -var - CubeVectors: array [0..23] of v16; - CubeFaces: array [0..23] of u8; - uv: array [0..3] of u32; - normals: array [0..5] of u32; - - -procedure Initialize(); -begin -//verticies for the cube - CubeVectors[0] := floattov16(-0.5); CubeVectors[1] := floattov16(-0.5); CubeVectors[2] := floattov16(0.5); - CubeVectors[3] := floattov16(0.5); CubeVectors[4] := floattov16(-0.5); CubeVectors[5] := floattov16(0.5); - CubeVectors[6] := floattov16(0.5); CubeVectors[7] := floattov16(-0.5); CubeVectors[8] := floattov16(-0.5); - CubeVectors[9] := floattov16(-0.5); CubeVectors[10] := floattov16(-0.5); CubeVectors[11] := floattov16(-0.5); - CubeVectors[12] := floattov16(-0.5); CubeVectors[13] := floattov16(0.5); CubeVectors[14] := floattov16(0.5); - CubeVectors[15] := floattov16(0.5); CubeVectors[16] := floattov16(0.5); CubeVectors[17] := floattov16(0.5); - CubeVectors[18] := floattov16(0.5); CubeVectors[19] := floattov16(0.5); CubeVectors[20] := floattov16(-0.5); - CubeVectors[21] := floattov16(-0.5); CubeVectors[22] := floattov16(0.5); CubeVectors[23] := floattov16(-0.5); - -//polys - CubeFaces[0] := 3; CubeFaces[1] := 2; CubeFaces[2] := 1; CubeFaces[3] := 0; - CubeFaces[4] := 0; CubeFaces[5] := 1; CubeFaces[6] := 5; CubeFaces[7] := 4; - CubeFaces[8] := 1; CubeFaces[9] := 2; CubeFaces[10] := 6; CubeFaces[11] := 5; - CubeFaces[12] := 2; CubeFaces[13] := 3; CubeFaces[14] := 7; CubeFaces[15] := 6; - CubeFaces[16] := 3; CubeFaces[17] := 0; CubeFaces[18] := 4; CubeFaces[19] := 7; - CubeFaces[20] := 5; CubeFaces[21] := 6; CubeFaces[22] := 7; CubeFaces[23] := 4; - - //texture coordinates - uv[0] := TEXTURE_PACK(inttot16(128), 0); - uv[1] := TEXTURE_PACK(inttot16(128),inttot16(128)); - uv[2] := TEXTURE_PACK(0, inttot16(128)); - uv[3] := TEXTURE_PACK(0,0); - - normals[0] := NORMAL_PACK(0,floattov10(-0.97),0); - normals[1] := NORMAL_PACK(0,0,floattov10(0.97)); - normals[2] := NORMAL_PACK(floattov10(0.97),0,0); - normals[3] := NORMAL_PACK(0,0,floattov10(-0.97)); - normals[4] := NORMAL_PACK(floattov10(-0.97),0,0); - normals[5] := NORMAL_PACK(0,floattov10(0.97),0); - -end; - -//draw a cube face at the specified color -procedure drawQuad(poly: integer); -var - f1, f2, f3, f4: u32; -begin - f1 := CubeFaces[poly * 4] ; - f2 := CubeFaces[poly * 4 + 1] ; - f3 := CubeFaces[poly * 4 + 2] ; - f4 := CubeFaces[poly * 4 + 3] ; - - - glNormal(normals[poly]); - - GFX_TEX_COORD^ := (uv[0]); - glVertex3v16(CubeVectors[f1*3], CubeVectors[f1*3 + 1], CubeVectors[f1*3 + 2] ); - - GFX_TEX_COORD^ := (uv[1]); - glVertex3v16(CubeVectors[f2*3], CubeVectors[f2*3 + 1], CubeVectors[f2*3 + 2] ); - - GFX_TEX_COORD^ := (uv[2]); - glVertex3v16(CubeVectors[f3*3], CubeVectors[f3*3 + 1], CubeVectors[f3*3 + 2] ); - - GFX_TEX_COORD^ := (uv[3]); - glVertex3v16(CubeVectors[f4*3], CubeVectors[f4*3 + 1], CubeVectors[f4*3 + 2] ); -end; - - -var - textureID: integer; - i: integer; - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keys: u16; - -begin - Initialize(); - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // initialize gl - glInit(); - - //enable textures - glEnable(GL_TEXTURE_2D); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - vramSetBankA(VRAM_A_TEXTURE); - - glGenTextures(1, @textureID); - glBindTexture(0, textureID); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture_bin)); - - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 1.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - while true do - begin - - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); - glLight(1, RGB15(31,0,31), 0, floattov10(1) - 1, 0); - glLight(2, RGB15(0,31,0) , floattov10(-1.0), 0, 0); - glLight(3, RGB15(0,0,31) , floattov10(1.0) - 1, 0, 0); - - glPushMatrix(); - - //move it away from the camera - glTranslate3f32(0, 0, floattof32(-1)); - - glRotateX(rotateX); - glRotateY(rotateY); - - glMatrixMode(GL_TEXTURE); - glIdentity(); - - glMatrixMode(GL_MODELVIEW); - - glMaterialf(GL_AMBIENT, RGB15(8,8,8)); - glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(5,5,5)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or - POLY_FORMAT_LIGHT2 or POLY_FORMAT_LIGHT3 ) ; - - scanKeys(); - - keys := keysHeld(); - - if((keys and KEY_UP)) <> 0 then rotateX := rotateX +3; - if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX -3; - if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY +3; - if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY -3; - - glBindTexture(0, textureID); - - //draw the obj - glBegin(GL_QUAD); - for i := 0 to 5 do - drawQuad(i); - glEnd(); - - glPopMatrix(1); - - glFlush(0); - - swiWaitForVBlank(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/data/texture.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/data/texture.bin deleted file mode 100644 index 423699d1f7..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/data/texture.bin +++ /dev/null @@ -1 +0,0 @@ -­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µÎ¹RÊrÎrέµ¬±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÂ1Æï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½RÊsÎ1Æî½­µ­µ­µ0Â÷ÞœóÝûÝûÝû¼óXç1Æ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½“ΛïœïÖÚ´Ö”ÒQÊï½Î¹­µ­µ­µµִÒã¼÷½÷½÷œóãνRÊ›ï½÷ÞûþûþÿþÿþÿþÿöÞ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÍ¹1Æã½ó½ï½óÞ÷þûþÿÞûœórÎ͵RÊã½ó½÷½ó½ó½óÞ÷ÞûÞûÝû“Ò9çÿûÞûÞûÞûÞûÞûþÿþÿÞûÞûZëÖÚß”ÒÂιï½Î¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹RÊzëÞ÷½ï½ïÞ÷½÷Þ÷ÿûÿÿÿÿ½÷´Ò8ß|çœç½ïÞ÷Þûþûþÿÿÿÿÿÿû½÷¾ó¾ïÞó½óÝóÞ÷Ý÷Þ÷Þ÷Þ÷ÞóÞóÞóÞ÷Þ÷½÷›ï½÷´Öî½­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÌµ ¾pÊ-¾í¹¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹”ÒÞ÷Þ÷¾ó½ó½ó½óÞ÷ÿûÿûþûÿûÞ÷ëœçÞ÷ÿÿÿÿÿÿÿÿÿûÿûß÷½ïœï÷Úß{ëÞ÷Þ÷Þ÷Þ÷ÞóÞóÞó¾ï¾ó½ï½ë½óÞ÷þûÿûÝûrÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ«±¬±¬µ¬µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µìµôÖÛÒÒí¹¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µrʾ÷Þ÷›ïÖÖßÞ÷ÞûÞûÞ÷Þ÷Þ÷ÿû¾óÞóÞ÷Þ÷Þ÷ß÷ÿûÿûß÷ß÷¾÷0Ƭ¹Í¹Í¹RÊ{ë½ïœëœçëëëœç|ãœç½ïÝ÷Þ÷Þû¼÷QÊ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ.¾ÊÊ ºìµí¹í¹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½ ¶6Û7ÛÓÎ-¾­µ±­µ­µ­µ­µ­µ­µ­µ­µ­µÍµµÒ¾÷œó1ÆÎ¹9ã¾ó½ó¾ó¾óÞ÷Þ÷Þ÷¾ó½ïë½ïÞ÷ÿûÿÿÿÿÿÿÿÿÿÿÞûÝûÝ÷YëÂ0ÂsÎ9ãë½ë½ë½ë½ï½ï½ïÝóÞ÷Þ÷Ý÷Þûã­µ­µ­µ­µ­µ­µ­µ­µ­µ«±M¾òÒÒβʲÊoÆ-¾í¹î½Íµ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µí¹ ºôÎöÒôÒN¬µ­±­µ­µ­µ­µ¬±¬µ¬µ­µ­µï½:ã¾ózë͹Ûëëë¾óÞó¾óëëëë½ïÞ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿû½÷zë÷ÞsΜï½ï½ï½ïÝóÝóÞóÝó½ó½óÝ÷Zë0Æ­µ­µ­µ­µ­µ­µ­µ­µµ¬µ-¾ÒαÊÓÊÓÊÓÎóÒ±ÎOÆ.¾͵¬µ¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ ºÔÎõÎÓÊí¹¬±­µ­µ­µÍµ¾Ìµ¬µ¬±­µî¹ZçëZç­µ:ßç¾ï¾ï½ïïëë½ï¾óÞûÿûÿÿÿÿßûÿûÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿÿÿÿÞû½÷Þ÷Þ÷½ó½ï½ó½ó½ï½ëÞóÞ÷ÞûÕÚι­µµ­µ­µ­µ­µ­µ­µ­µ¬µ-ºÒÊÓÎÓÊÔÊÔÊÔÊôÒóÖóÖpÆ-¾ìµÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ¬µ­µ­µ­µ¬µ­µ­µ¬µ­µ¬µ¬±¬µ¬µ­µ­µ­µ­µ¬µ­µ­µÍ¹í¹ëµôÒõÒ×±Îí¹¬±¬µ­µÍµ‘ÊÓβÎí¹­µ¬µÍµrʼï»ó›óÞ÷Þó½ïë|çë¾óÞ÷Þ÷Þ÷þûÝûÝûÝ÷¾óßûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÞ÷Þ÷Þ÷Þ÷ÿ÷þûÿÿþÿ’Ò1Æî¹­µ­µ­µ­µ­µ­µ­µ­µÌµoÂÒÊÓÊÓÎôÎôÎôÎôÎôÒÓ×óÒNÂì¹í¹­µ­µ¬µ­µŒ±¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ¬±Œ±¬±¬µ­µ­µ­µ­µ¬µ«±¬±¬±¬µÌµÌ±¬±µ­µ­µ­µ­µÍµË±-¾N ºËµ×Ó×ÒÒí¹¬±¬µ¬µ.¾ÓÎÓÎÓÎì¹í¹ ¾ì¹í¹³Ò ¾ ºqÊyç½ïëï¾óÞ÷Þ÷½ï›ë’ÎqÊpÆ/¾{ëÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿûÿûþûÿÿÿÿÿ÷ß÷ÞûÝ÷8ãrέµµ­µ­µ­µ­µµÌµNÂÒÎÒÊÓÊôÎ××ôÒ×õÒôÎ××ÑÎN¾¬µ­µ¬µí¹í¹í¹ÍµÌµÍµ¬µÍµ¬µ­µ¬µNÂÎ ¾Œ±­µ­±­µ¬µËµNÂÒÒì¹ëµ,¾ÒÒOƬµ¬µ­µ­µµÍ¹ì¹6ÛÓÎôÒO²Î××ÓÒí¹­µ¬µ ¾ÓÎôÎ×pÆpÂôÒÔÒôÖôÖNÂpÆבÊ.¾YçÞ÷ÿûÞ÷¾ó¾ó½ó’γÊöÒõÎ º7ãÿÿÿÿÿûÿ÷ÿûÿÿÿÿÿûÿûÿûÿÿÿÿÿÿÿÿÞû¼óÿûÿûþûþûþÿÿûÞó¾ïßóÿ÷ÿû›ï´Ö­µ­±­µ­µ­µµÌµNÂÓÎÓÎóÎôÎ×ß7ãxçÛ×ôÒôÒÛóÖoÆ.¬µî¹.¾ÛÛNÂì¹N²ÎÒÒpÊ ¾Ë±±ÊôÖÊ˵­µ­±­µ¬µì¹óÖÔÎpÆËµ±ÊÛóÖî½­µ­µ­µ­µÍµ-º6ÛôÎôÒÓÒOÂ7Û×ôÖ ¾Í¹ìµ²ÎÓÎôÒ±ÎNÂôÒ³ÊÓÎôÖÓÒÒÎ.ºõÎײξYëÿÿÿû¾ó¾ó½óOƳÎÓÕÎ º³Òÿÿÿÿÿ÷ÿ÷ÿ÷ÿ÷ß÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿ÷âî½ÕÖÞûÿûÿûÿûÞ÷ß÷ß÷¾ï¾ïÿûÿÿœ÷­±­µ­µ­µ­µí¹OÂÒÎÓÎÓÎÒαÊpÆ.Â.¾O¾²ÊôÒôÒ×ÛÛoÆ.¾ ¾OÂõÖõÒÓÒ ºÓÎôÒõÒÛÓÒNÂOÂõÖôÒ-¾Íµ­±­µ¬µ ºôÖÔÊôÒì¹ÒÎÛ6߲άµ­µ­µ­µÍ¹-ºxç×ÓÎÒÒ.¾õÖÛÛ ¾í¹O¾ôÒôҲΠºÊÓÒ²ÊÓÒÓҲΑÊ/¾õÎõÒ×pÊqÊÞûÿÿÞ÷Þ÷½ïpÊ‘Ê×ôξ²Îÿÿÿÿÿ÷ß÷ß÷¿ïß÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿßû{ëQÆ÷Úß÷ß÷ß÷ßó¾ï¾ëßïß÷ÿûÿû{ïî½­±­µ­µ­µ­µ¾OÂÒÎóÒÒÎÒÎNÂNÂíµí½ ¾ ºº³ÊôÒôÒÛÛnÆËµ ºôÖÓ×ôÎôÒ×õÒôÒÓÎóÒ‘ÊpÊÛPÆÍµ­µ­µ¬µ ºÆõÎ6ß ¾ÓÒÛ5ÛóÖ ¾±¬µ­µ¬µ ºÛôÒôÒóÒ º×6Û6ß.¾õÒõÒóÒ ºì¹M¾ôÖ‘Æ ºí¹ì¹O¾öÒõÒõÒ×6ß¾ßÿÿÞûÞ÷œëqʲÎÛ×.¾NÂÝ÷ÿÿÿûÿûÿ÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿûßó¾ïµÒµÒÞóßóßóß÷ÿûßóßóÿûÿûÿûYçι­µ­µ­µ­µµ¾NÂóÒóÒÒÎÓÒÓÒ ¾º¬µ­µÍµ-¾ º×ôÒ×ÛóÖNÂ˱ÒÎÓôÎÛ6ßÓÒpƑʲʑƱÎNÂבÊí¹­µ­µ¬µ º‘ÊõÎ7ã ¾óÖÛôÖ5ÛÊ̵µµ¬µí¹5ßôÒÓóÖìµôÒ6Û6ßÓÒõÖ7Û×oÆì¹ËµoÆ×ÒÎ̵¬µÌµ‘Ê×ôÒõÖÛ6Û’ÎO¼óÿÿÿû½ïrÊôÚÛôÒpÆO¼÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ÷ß÷ß÷zïsÎÞûÿûÿûÿ÷ß÷ÿûÿûÿûÿ÷ÿû›ïι­µ­µ­µ­µµî¹OÂóÒÓÎôÎôÒÛÊ ¾¬±¬±±Íµì¹ÓÒ6ÛÓôÖ5ßÒÖN²Î7ÛõÒ×ó־͵í¹o±ÊÊOÂבÊ̵­µ­µ­µ ¾±ÊôÒWã ºÛÛóÒ6Û×O¬µ¬µ¬µì¹±ÎÒÎ×Û ¾6ß7ß6ß7ß7Û7ßÛ ºÍµËµÆÛÒÒ«±µÍ¹pÊôÖôÒ×ÛÛÛ.ÂÔÖ½÷ÿÿÞ÷’ÎóÒôÎÒÊpÆ ºzëÞûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûßûß÷ß÷9çÖÖÿûÿûÿÿÿÿÿûßóßóßóßóÞûrέµ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎôÎôÎÛÓÖ ºÍµ­µ¬µ¬µËµoÆÓôÒ×6ß6ßÊPÆõÖÓÊÔÎPÂí¹¬µÍµìµ º ºÓÎבÊ̵­µ­µ­µ.¾ÒÎôÒ6ß-¾ÓÖÒÒÒÎ××ÒÒ º­µ¬µì¹ÒÒÒÎÓÎÛ-¾6ß6ß6ß6Û7Û7ß±Îìµ­µËµÆôÖÒÎí¹Ìµí¹.¾qÊÛôÖ×ÛóÖ²Îìµ7ãþûÞû²Ò³ÎõÖôÒoÆëµ/­µãÿÿÿÿÿûÿ÷ÿ÷ÿûÿÿÿÿÿûÿûß÷ßóÞó½ï¾óß÷ß÷ÿ÷ßûßûß÷¿ïßóÿûœï­µ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎÓÊôÎ×óÖ͹­µ­µµ­µ«±²ÎôÒóÒóÒÛxç±ÎOÂÒγÊÔÎoÆÍµ¬±µ¬µËµ.¾×ôÒ‘Î̹­µ­µ­µ/ÂÒÎôÒÛ.ÂÛÛ±ÊóÒ6Û5ßoÆì¹¬µí¹ÓÒóÒÓÎÛ.ÂÛÛ×7ß7ÛÛoÆÌµ­µëµ±ÊôÖôÖóÖÓÒÓÒÊOÂ6ßÛôÖÛÛÛ.Â/½óÞ÷³ÖõÖ×ôÒ‘ÆëµôÚrÎ͹”Ò¾óÞïÿûÿûÿÿÿÿÿÿÿûÿûÿûÿûÿûÿûÿûÿûÿûÿÿÿûÿûÿ÷ßóß÷ÿÿãî½­µ­±­µ­µ­µ­µÍµ.ÂôÖôÒÓÊÔÊ×Ûí¹­µ­µ¬µí¹ º×ÒÎÒÎóÒ×yçÒÒNÂÓÒÓÊõÒpÆŒµ­µ­µ­µÌµ-¾×בÎ̱­µ­µ­µ.¾ÓÒôÒÛ.ÂßÛ±ÊóÖ6ã6ßÒÒ º¾ì¹oÆôÒôÒôÖ-¾óÖÓÎ×7Û7ÛWãÛ º.Â˵±ÊÓÒóұʱÊÒαÊ.¾×6ÛÛôÖÛ7ßÛ ºöÚþû²ÒÛÓôΑÊëµßÞÿ{ïî½sʾïÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûßûÿûÿûÿûß÷ÿûß÷¿ï¾ë¾óßöÞι­µ­µ­µ­µ­µÍµ-¾ôÖ×ÔÊÔÊôÒÛ ¾ÍµÍµ ¾ì¹ôÖ5ßóÒÒÎôÒÓ6ß±Î-¾ôÒôÎõÒpÆŒµ­µ­µ­µì¹N¾××óÖ«±­µ­µ­µ ¾ÓÒôÒ×-¾Û󮮱ÊóÖ5ßNÆ ºí¹N¾Ó×óÖ ºÓÒõÒ××6ßWãôÖ±Îëµ ºôÖÒÎÆÆ±Ê±Î±Î ¾ôÖóÒÛôÖõÖÓÕÎÓÒ ¾›óÓÖÔÎÓ×oÆìµôÖÿÿÿÿ9닱ßß÷ßóÞïßóßó¾ï¿ï¿ï¾ïßóßóÞóß÷ß÷ßóßóßóßó¾ëžã¾ëß÷½÷­µ­µ­µ­µ­µ­µ-¾ÓÒ×ÔÎôÎôÖÛÊ ¾ º ºõÖ7ÛôÒÓÊÓÎÓÎ×5߯.¾×ÓÎôÖpʵ­µ­µ­µÌµ‘ÊôÒÛ5ß̵­µ­µ­µì¹±Î×6Û.ÂÓÒÛÒÎÒÎÒÎÒÒ۱Πº.Â-ºÓÎ6ÛÛ¾Û7ÛÛ6ßÛÊÛ6ß/Â/ÂÛÆÆ±Ê‘ÊpÆOÆ.¾±ÊóÒÓÒoƲÎÓõÎ6Û.¾pƲΒÊõÒÛ±Îëµ’ÎÞûÞ÷½óÂÛžçžããããžã¾ëßïßóß÷ßóßó¿ï¾ë¾ë¾ë:ß÷Öžçãßóÿûþÿ­µ­µ­µ­µµ­µN±Ê×ôÎõÒ×ÛÛ‘Ê’Ê×ÓÔβʲÊÓÎÒÎóÒÒÒ-¾pÆÓÒóÒôÒʬ±­µ­µ­µÌµ²ÎÛÛÛ̵­µ­µ­µí¹±Ê×6ã.±ÊôÖ6ßÛÊÒÒÛôÖìµëµ.¾ôÎ×ôÖ¾7ß××xç¾NÂÆ6ßóÖì¹ôÚóÖÒÎÊì¹ì¹ ºÓÒóÒ²ÎÊ/ÂpÊOÂÓõÎÓÎO º‘ÊÓÊõÒ’Îìµ8ãÿû¾ïç[ß|ß\ß\ß}ß}ãžç¾ëßïß÷Þ÷{çœë¾ï¿ï¾ë¾ï¾ïrÊRÆžç¾ëÿ÷ÿÿ¼÷͹­µ­µ­µ­µ­µ­µ-¾/Â6ß×Û7ß7ß×õÒõÒôÒôÒôÎÓÊÓÎôÒ×ÒÒoÆìµpÆóÒÓÊÓΑʬ±­µ­µ­µÌµÓÖWã×6ß-¾Ìµ¬±¬µ.ÂÒÒÛxëNÂÓÎ×5Û.Âʱ ºÛ6Û‘Ê.¾±ÊÓÎײΠºÛôÒ6Û6ßì¹pÆ º×ôÖpÆìµôÖóÖ-¾¬±î¹ ºÛôÖôÖ‘Î’Ê8ß ºôÖõÒ6Û×ôÖõÒõÎôÎ’Ê ºõÚœïë:ßÖÒ:ß}ã¾ëÞóßóßó¾ï¾óÞóßQÆ÷Úß÷ßóß÷ÿ÷œï1Æ:ß¾ë¿ïßûÝû”Ö¬µ­µ­µ­µ­µ­µ¬µ ¾-¾6ãWç6Û7Û7Û7Û×óÎôÒôÎôÒôÒôÒ×5ÛoÆ.¾.¾-¾ÒÊÒÊÓβά±­µ­µ­µÌ¹ôÚ6ß×6ßÓÖëµÌµí¹²Î6ß6Û6ßNÂÓÎÓ6ß-¾-¾ËµôÖóұʱÊÒÊóÎ×ÒÒ º²ÎôÒôÖôÖìµ¾ ºÓÒôÖÓÒ ºpÆÒÒ ºÍ¹Í¹¾ÓÖÒÎÒÒ²Ò¾Xã.¾qÊVßôÖÛ6ßôÒÔÊ×²Ò ºÌµ­µï½Í¹‹±Íµ”ξ÷ÿû¾ï¾ï¾óœïÖÚî½Â8ãÞ÷ÿûÿûÿûÞ÷çžë¿ó½ó÷Þ0ÆÍ¹­µ­µ­µ­µ­µ­µ­µ ¾ ºßxë6ß6Û×××ÓõÎõÎõÎõÒÓóÒÊ ºëµ.¾oÆÒαÆÓÊÒÒ͵­µ­µ­µí¹ôÚ5ß××ÛÛôÖÛ7ß7ß6߲ΠºÔÎõÒÛ.Âí¹ì¹ÒÒÒÒ±ÆÓÊóÒ×±ÎëµÓÎôÒ×Û¾¾ ¾±ÊôÖóҲΠ¾ÓÒOÂì¹OÆ.Â5ßÓÎÓαΠºXã³ÎOÂWã×Û×ôÖôÒ5Û‘Î ºÔÒÖҔΔÎ÷ޔξrÊ8ã9ããÕÖ0Æ0ÆÂÖÚßûÿûÿûÿûß÷ßóßóÞ÷÷Þî½­µ­µ¬µ­±­µ­µ­µ­µ­µ­µÍ¹ º²Îšï6ß×××7Û8×Ó8×7ÛôÖÊ.¾.ÂôÖôÖ¾OÂóґƒƲʾ­µ­µ­µí¹ÓÒWã××ÛWßXã7ß7ß7Û6ÛoÆìµõÖÔÎôÒNÂ͵ì¹OÆôÖ²ÆÓÎôÎôÒ6ÛÊ˱ôÖ××ôÒ.¾í¹OÂpÆÛôÒÓÎOÂpÆóÒPÂpÆPÆOÂÓÎ×ôÖ.¾Zã8ßì¹ôÖ5Û××××ÛÒÒëµÛ|ã[ã9ß9ã¾ï[ã”Ò0Â0ÂQÆsεҔÎrÊÞ÷ÿûÿûß÷ßó¿ïß÷ÿû8笱­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºoÆwçxç6Û7Û6ßÛõÖÓұΑÊoÆpÆÓÒôÖ×6ßóÖ.¾óÒÒÎÒÎÊì¹­µ­µ­µî¹-¾Wã6ßÛXãXßWß7ßXß7ßÓÎ ºËµÓÎÒÎ×oÆí¹Í¹ ¾×õÎõÎôÎ×ôÖ,¾Ë±²ÎôÖÓÊÔÎ.¾Íµ/ÂìµÓÎ7ßÓÒÓÖ ºóÒÂÓÎôÖPƲÊõÎöÒ.¾zçœëpÆpÆ6ß×××ôÒôÒóÖì¹×}ã[ã9ß\ã~ß}ã[ã}çëœë[ç:ãQÆãÿÿÿûß÷ßó¿ïßóÿûßû’Ò¬µÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ ºO‘ÎÊpÊpÆ.Â.¾qʲÎôÖ6ßXãWß6ß×5ß6ß.¾NÂN ºÌµ­µ­±­µ­µ­µÌµ ¾±ÎôÖXãXãWã6ßôÚÊ ºí¹ìµÊÒÒÓÖì¹Ìµ­µÌµpÆôÒôÖÒÎÆNÂ˵칱ÎßÛʾ­±Í¹ ¾oÆ7ß×ôÖ.¾ÛÆ‘ÆÓÒpʳÎÛôÒºZßZçÔÖ º6ßÛ×õÒÓ×ÒÎìµÛ|ãZç:ßÓ<×|ççžçç|ë{çµÒrʽóÿûÿûÿûÿ÷ß÷ÿûß÷ë0¬µÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ¬µÍ¹¬µ¬µ­µí¹±ÎWã7ßXãzçÛÓÒõÖ6ß6ã6ßÛ.Â̵­µ¬µ­µ­µ­µ¬µ­µ¬µ¬µ¬µí¹ìµìµ ¾ì¹Ìµ¬±­µ¬µÌ¹Ë±ëµìµÌµ­µ±¬µËµìµì¹ëµËµÌµ­µÍµì¹-¾-¾ º/Â͹¬µí¹ ¾-¾ ¾ ºOÂÛôÒ²ÎpÊ º-¾oÂ.¾PÂzç9ãYç’Î.¾²ÎÓÒÓÒ²ÊpÆìµ0º[ßZçZã;Û<×|ã|ç¾ë}ã}ç{ë|ëQÊãÿûÿûß÷ÿûÿûÿûÞ÷9ãSÆtÊrÊ͹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ­µ­µì¹ôÖ7ß7ÛYãÛ ¾ ¾.¾7ßXç5ß6ãÎ͵µ¬µ¬µ­±­±±­µ­µµ¬µ¬µ­µ¬µ­µ­µ­µ­µ¬µµ­µ¬µÍ¹í¹í¹í¹ÍµÍ¹ÍµÌµì¹.¾.¾í¹Î¹­µÍ¹.¾ º ¾ ¾ ¾/¾­µÍ¹Í¹î¹0¾qÆqÆqʳÒÛµÎÕÒ÷ÖZßZã:ã[ßZß÷ִγγғÎÕÒÖÒ[Û|ç{ç\ß]Û}ã|ëçç|ã|ç|çÖÒsξ÷ÿûÿûÿûÿûÿûÞ÷µÒ¾¶Æ;×øÚ͹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ ¾6ßXã8ßYßqÆÌµ­±¾qÊ™ïxë6ãOƬ±Íµî½¾N¾µ¬µ¬µ«±Ëµì¹ì¹«±¬µ¬µ­±µ­µ¬µí¹ì¹.¾OÂʲÎÊìµ ºoƱÎÓÒpÆ ¾ º.¾N¾²Ê²Ê‘ÊÆNÂ.Âî¹­µÎ¹RÆøÎ[ß{çZë8ß\ß|ßçç{ë9ç{ã|ãçç{ç9ßç}ãã}ã|ã[ã\ã<Û}ß|ë|çã}ã}ç{çZã0Â:ã¾ïßóß÷ßóßóß÷œï¾–ÆùÎ\ß{ç­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ º×ÛXßYãºÍ¹µ¬µî½/ÂPÆí¹¬µ¬µ.¾pÆÓÒôÖÊ ¾ì¹¾Ìµ ºôÒ×6ßÒÒ ¾ÌµÌµ­µ­µ­µìµôÖ×ôÎôÒÛÛO‘ÎôÒ‘ÆpÆÓÒ±Ê º.¾ÓβÊÓÒõÒÔαÊNÂ͹͹0Â×Ê:×{ã{ëYç{ã|ß}ã}ãëZë{ëœçžëççZç[ã}ß}ß}ß\Û\ã[ã\ß]ßçœëë¾ëžëë|ã”ÎQÆ}ç¾ë¾ë|ë|ëÞ÷ÞûãsÆ×\ßç¾ïrέ¹µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ º×7ÛXßXã-¾í¹­µ­µ¬µ­µ¬µ¬µ¬µí¹ÓÒ6ÛXß7ßWã6ßÓÒ ¾.ÂOÂYã×ôÒôÒ5ßÛoÆì¹Íµ¬µËµ³ÎõÒõÒÛ6ã6ãNÂÓÒ ºÌµÍ¹¾²ÎNÂOÂ²Ê‘Ê º º³ÎÛoÆÎ¹ï½tÆÏ|ã{ã{çZç|ã}ã}ß\Û{çZëëëžë½ë{ç[ç}ç}ß}ß]Û\ß;Û\Û]ßçœëë¾ë¾ï¾ï\çøÖï½ÕÖ½ïë[ç1Æ1ƵÖsÎÊ}ãžçžëžë÷Úι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ/ÂÛ6ÛXãWç ºÍµ¬µ­µ­µµ­µ¬µ¬µOÂÛÛyçXãWãyëXçÛ ºpÊšëXßôÒ³ÎôÒõÒôÖ²ÎìµÍµËµOÂ×õÖoÆ ¾ º ºÓ¬µOÂpÆÊº²Ê.¾¾.Â.±Ê¾î½¾×Ê[Û|ç{çZç{ççžç\Û|ãZëœïëç}ãœëzë|ç}ß}ß]ß}ß|ã;Û\Û}ãë|ë¾ï¾ë¾ï|ë:Û1Âî½Î¹0¾͹ι͵ιι¾•Êçžçžë}ãZãï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßXãšïšï ºÍ¹­µ­µ­µ­µ­µ¬µÍ¹ÓÒ7Û6ÛÓÒoÆpÆÛXãÛÊ-¾yë7ßõÖôÖÓÒ×Û6Û±Î칩­pÆõÒ‘ÆÊ±í¹ì¹oÂôÒ‘Æìµí¹OÂÒÒnÆ.ºÓÎ-¾¾­µî¹Ì¹î¹î½RÂÓ\ß|ç{ç{ç|çã}ß}ãœë{ï½ïççœç{ëZç}ã}ß}ß]ß}ç:ß;×<×ç|ç¾ï¾ëžç½ó|ç۾ι­µ­µ­µ­µ­µ­µ­µ­µQÆ×Ö¾ë¾ï¾ï}ã{ç¾­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßYãyç7ç.Â͹­µ­µ­µ­µ­µÍµí¹õÚ6ß²Ê ºî½OÆ-¾ôÖ6ÛóÖêµôÖXãÛ ¾OÆOƲÎ×6ßÎʱ³ÎõÒ²Îëµî½í¹ÊÓÎÒÎÓÎÓÒÓÒ,º ºpÆÓÒO ºOÂ/Âî½î¹ºÖÊ:×|ã{ëZç[ã|ã}ß<×}ç{ïœëëç}çœë{ë|ç}ã}ã\Û}ã|ç;ß<×[Û:ßçžë}ãžëœï{çsÊï½µµ­µ­µ­µ¬µ­µ­µ­µ0Âß¾óßó¾ïçZç͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ‹±¾Xãyç™ëxëÂ͹­µ­µ­µ­µ­µÍ¹ìµ7ãxë.¾¾­±­µOƲÎXãÛ뵑ÊXã7ß.Âî¹î¹.¾²ÎWãßNÂ.¾õÖÓÖoÆ.¾.¾ ºÓÒÓÎÓÎôÖ-¾ëµÊ±ÓÒôÖÓβÊpÂOÆ º¾ÕÒ:ÛלëZçZã|ã\ß\Û\ß|ëœïëç}ãë{ë{ççžç}ß}ßë[ã;Û\Û{çZãçžçç¾ó{çÛï½Î¹¬µ­µ­µ­µ­µ­µ­µ­µÍ¹0Â\çßóß÷¾ëžë8ãî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ«±ìµ7ßxçxçyëÂ͵­µ­µ­µµ­µí¹ëµôÖyç‘ʾ¬µ­µ.ÂPÆXçWã,¾oÆ7ß7ßPÆÍ¹­µ¾PÆÛßoÆí¹××õÒ×ÛOÆpÂôÒôÒoÆNÂ-¾ìµ-¾‘ÊÓÒÛõÖÛõÖ.¾º9ß{ãœëZç|ç|ß]Û<×çœëœë}ã|ß}ãœë|ëç}ã}ß\Û|ç[ã;Û\Û|ç{ç|çžçžç¾óï{çrÊïÁ­±­µ­µ­µ­µ­µ­µ­µ­µÎ¹1Â\ã¾ï¿ïžç¾ïÕÚî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµëµßšëyë»óOÆÍµ­µ­µµ¬µÌµì¹ º ¾‘Ê7ÛÔÖ͵­µ/ÂpÆXçWçnÆ º6ÛÛOÆ­µµ­µ.¾²ÎÛ±Îì¹ôÒ7ßÛ6ßWã²Î‘Ê×õÒ×ÛôÖO ºí¹.¾¾OÆõÖõÒóÖ-¾“ÎzçZç{ç|ã\ß<×}ß{çœëç|ß\ßœçœïëžç}ã\Û}ã[ç:ß|ß¾ç|ë|ë}çç¾ï½ó[ç÷Ú­µ­µ­µ­µ­µ­µ­µ­µ­µÎµ¾¶Îžç¾ëžç}ãï0ÆÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ëµÓÒXãyëÜ÷ÓÖ͵­µ­±­µÍ¹.ÂÒÒß6ã.³ÎX㾬µ¾.¾ÛÛ. ¾7ß6ßpÆÍµ¬µ­µ/‘ÊóÒÒÒìµÓÎ6ãôÚNÂʵ˱6ßÛÛÛöÖ6ÛÓÒí¹­µ­µÍµ.Â.¾õÒÔÒMÂ/¾Yã9ã{ç}ã\Û<×|ã{ëœï}ã}ã|ãœëœï¾ëžç\ß|ß|ç9ß;Ûç½ëœïœëçë¾ó|ë[ãQÆï½­±­µ­µ­µ­µ­µ­µ­µ­µ¾¾מçžçžç}ãøÚ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµ³Ò™ëyë¼óßî½­±­±­µí¹ÒÎ6ÛÛ6ßOƲÎ7ß.­±Â.¾6ÛÛ.‘ÎXã7ßPÆî¹¬µ.Â.²ÎôÖÓÖ ºÓÎÛ.Âí¹Ìµ.¾šïßÒÒìµ/¾ÓÎôÒ¾¾Íµ¬±/Â-¾õÒôÒoƾ8ã9ã}ç}ß<Û\ß|çœï½ï}ã}ã|ë›ë½ëžç}ß\Û|çZãÛ\ßžë½ï¾ó¾ïç¾ï½÷{ãÖÖî½­µ­µ­µ­µ­µ­µ­µ­µ­±ÎµRÆØÒ\ß}ßžç~ã\ßQÆÍ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.™ïšëyë7ãOÆí¹î½í¹qÆôÒôÎôÖÛNÂÓÎÛOÆPÆpÊOÆ7ßôÖ ¾õÚzçÛOÆ/Â.ÂNÂqÆ7ßWãÓÖì¹ôÖóÖ ºí¹Ì¹oÆxëߑΠ¾ì¹pÂõÖ‘ÎOÂì¹ìµìµÓÒ8ßWãoÆqÆYç{ç}ã]ß]ß|çœï½óë\ß|çœïœï¾ë}ã<Û\ã|ç9ß;×ã¾ï½óÞóëë½óœë[ã1Âï½­µ­µ­µ­µ­µ­µ­µ­µ­µRÆ•Ê<Û\Û~ã}ã\Û×Ö͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµõÚšë™ë»ó6ßOÂOƲÎÛ××6ßÒÒ-¾ôÖõÒÓÎpÆ‘ÎÛVã‘Î º7ãyç×OÆ.¾N³Ò7ß7ßÛÊ/ÂÛ6ßOÆÊ±Ë±Ê±ÓÒXãßí¹¬µpÆ6ßõÚOÂÔÖ³ÊÔÒXãyçôÚ ºöÖzçç}ã]ß}ã|ç¼ó¾ï}ã}ßœë{ëïë\Û]ß}çZã×;מë¾ïÞó¾ë}ãçœë[ãßï½Î¹­µ­µ­µ­µ­µ­µ­±­µ1ÂsÆ;Û}ß}ãžç~ç:ßÂ͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.Â7ãšëšïšëXçXã7Û6Û7Û6ÛÛpÊ.¾ÛÛõÎÓ7Û6ßÛ ¾ì¹ôÖ7ß6ßÛôÖÛ6ß6ßÛóÖì¹³ÒÛ×ÒÒNÂN¾oÆ ºöÖ7Û¾­µ ºôÖXçN²ÎôÖõÖ7ã5ßpÆ“ÎZç|ç|ß}ã]ßçï½óë<Û\ßœïœï¾ï}ß;×|ã[ç:ß;×]ß¾ï¾ó¿ï}ã}ãë{ç:ã1Æï½±­µ­µ­µ­µ­µ­µ­µ0ÂRÆ×}ãžçžçç|ç´Ò͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µî¹PÆWãyçXãXß7Û7Û6Û6ßôÖ‘Êí¹Í¹pÊxç×ÕÊ×ôÖOÆî½ ºpÆ6ÛÓÒôÖÛÛÛ±ÎNÂìµÌµÛ7ß×7ÛÛ6ÛÛ ¾ß7ã ¾­µí¹±Î7ãÊ˱-¾‘ΑÊpƳÒ8ã{ç}ã}ß]Û]ßëœï½ï\ß<Ûëœï½ïžë\Û;Û|ç:ß:×\Ûçï¾ëžç}ãçœë[ãÖÖι­µ­µ­µ­µ­µ­±­µÎ¹¾”Ê;Ûžç¿ë¾ë¾ë¾ï÷Úι­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¾²ÎÛ6Û6Û×ÒÎÊ.¾Íµ¬µ­µ.¾pÆõÖ³Îqʾ͵¬µí¹-¾±ÊÒÒÓÒÊOÆ.¾Ìµ¬µ­µ«±³ÒXã×YßXãÛÒÒì¹. ºÌµ¬±Íµ-¾Û²Ò¾’ΓÊõÖYçzë8ã|ç}ß]ß]ßçœï½ïë]ßç{ëœïï}ã\Û|ãZã:Û;×\ßëëã~ãçë{ã[ã1ÆÎ¹­±¬µ±­µ­µÎ¹ï¹¾¶Î\ãžë¾ï¾ï¿ïÞóZçî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±í¹í¹¾í¹Ìµ¬µ¬µµ­µ­µÍµí¹í¹¾î¹­µŒ±­µ¬±¬±¬µÌµÌµ¬µ­µ­µ¬±¬µµÌµì¹.¾ ¾¾í¹ì¹ËµÌµ«±¬µ¬±±­µ ºôÚ7ãOÂrÂ×{ãZç9ã[ç|ã}ß\ß}ãëïžë}ß|ß½ï{ïœïç}ãç{ë:ß;Û<×}ãë}ç}ß}ãë|ç[ß÷Öî½­µ­µ­µÍ¹î¹ï¹¾–Ê<Û}ã¿ë¿ï¿ï¿óßóYçµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­µµµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µµµ±­µ­µ­µ­µ­µ­µ­±¬µÌµ‘ÊXã²Î º×ZßYã9ã|ã}ß|ß}ßçœë½ï}ç\Ûžë½óœïë}ãçœëZã:Û<×\ßëç\ß\Ûçœï[ã[ß1Æï½Î¹Î¹ï½1Æ•ÊùÖ<Û~ãžãžçžç¾ë¿ïÞ÷ãµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºõÖ7ÛpÆOÂ8ßYç{ç|ß\ß\ß|ãœëœëë\Û}ã½ó½ó½ëç}çë[ç:ß;×<×|ãë}ã}ß}çë{ç[ßÖÒ”Î:ßß:ãœï¾ïžëžçžçžã~ã}ßžã¾ï½ó´Öî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÌµpÆ7ÛõÒOÂpÆ8ã|ç|ã\ß}ßë{ëë}ã\ßïœïëç}ãç|ëZã[ß<×\Û}ë}ç}ãžç¾ïœë[ã:Û1¾<Ûžç¾ëžë¿ë¿ëžë¿ë¾ëžã~ç\ß:ßÖÖ0Â͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹’Ê ºÓÎÓôÎOÂ.¾Ûzã[ß\ãœë|ëç\Û|ãœóœïëççëZã[ß\ß\ß}çëã}ãžëï{ç;Û”ÊuÆžë¿ó¾ï¾ï¿ï¿ïžç~ã}ã;ß×ÒRÆï½­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Æ9߯ ºôÒÔÎ×pʾ8ß[ß|ç{ëœç|ß\Û|ë›ïëç}ã|ç{ë[ã\ß|ß|çïžë}ãžç¾ï|ë;Û×RÂ;Û~ççžçžçç[ãÛµÎRÂï¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹ÖÒ\ãyç.Â-ºôÎÓ6Û‘ÊrÆ[ß|ç|ç}ç;Û|ã{ëœëç}ã|ã{ë[ç\ã}ßç½ïëžã~ãžë¾ï[ãÓ•ÎsÆÛøÖ¶Î”ÊRÆÂï¹Í¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Â×\Û{ã8Û.¾NÂôÒÛ±ÎqÂ[ã{ç|ç|ã[Û{ç{ëœë}ç\ß|çZã[ã|ß|ãëëžç}ã}ãžëœë×øÎî¹ï½Î¹Î¹­µ­µ­µ­µ¬µ­µ­µ­µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÎ¹ØÒ<×}ã|ßZßßOÂ.ºoÆqÆ×{ã{çë|ã{ã{ëœëç\ß[ßZçZã|ã}ãœë½ëç}ß]ßçœë[ç:×R­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï¹Ó;×\ß[ßZã9ßZß××[ß|ã[ß{ã|ã[ß{ã{ç|ç|ã[ß[ç:ã[ß|ß|çïç}ß\Û}ßë{ç[ß÷Ö͵­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±ºÓ\Û\ã[ß9Û:Û;Û[Û|ß}ã[ß[ß|ã[Û:Û:ß[ß[ß\ß|ãYãZã\ß|çïë}ã\Û\Û}ã|ç:Û9×1­µ­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬±ð¹ùÎÓ|ãç{ç:ß[Û\Û|ß|ã[ß{ã}ã|ã[ã[ã[ß;Û;Û:ß:ß|ç|ãœëœï}ã}ß<Û}ß|ç[ãϵÎ͵­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹sÂØÊ;Û[ß{ãZã[ã[ß[ã[ã{ã|ß|ãç{ã[ã\ß;Û:Û×:Û|ã{ãœëœë|ã\Û\ß|ã|ç×øÎï¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹1¾×Ò:Û;Ûëë}ç|ã|ß\ß\Û|ß|ç{ã[ß:Û:×9Û:ß|ã[ß[ã|çë}ã\ß|ã|ã[ß:×sÊ͵¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½1µÎ[ã|ãç¾ëžç}ã\Û\ß\ß\ß[ß:Û:Û;ß[ß[ã|ã[ã|ã|ã|ß}ß|ã[ã;×øÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½sÊøÖ\ã}ççççç}ã\ß;Û;Û[Û\ß[ß[ß\ß\Û\Û\ß}ã[ã[ß:ÛrÊι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ¬µ­µ¬µÍµ0ƵÒZãëë|çç|ç|ã|ß|ã\ß\ß;Û;Û\Û\ß|ã[ã[ß;Û÷Öï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹RÆß{ç{ç|ç|ã|ãç|ã|ã[ß:Û[ß[ßZß[ã[ß;ßRÊ͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µÎ¹QÆÖÖöÚ{ç|ç|ã|ß}ã|ã:ß:ßZãZã|ç;ÛÖÒî½­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±­µ­¹î¹1ƵÖß[ã|ã|ß\Û|ß|çë\ßøÒ0Âι­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½î¹tÊøÖ×\ßžç}ã[ßµÎι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹î½ÂRʵÒ×ÒÖÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ±­µ­µ­µÍ¹Î¹ï½î½­µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ \ No newline at end of file diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/main.pp deleted file mode 100644 index 5875b83967..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/main.pp +++ /dev/null @@ -1,130 +0,0 @@ -program main; -{$L texture.o} - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -//texture_bin.h is created automagicaly from the texture.bin placed in arm9/resources -//texture.bin is a raw 128x128 16 bit image. I will release a tool for texture conversion -//later -var - texture_bin_end: array [0..0] of u8; cvar; external; - texture_bin: array [0..0] of u16; cvar; external; - texture_bin_size: u32; cvar; external; - textureID: integer; - - rotateX: cfloat = 0.0; - rotateY: cfloat = 0.0; - keys: u16; - - -begin - - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // initialize gl - glInit(); - - //enable textures - glEnable(GL_TEXTURE_2D); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - vramSetBankA(VRAM_A_TEXTURE); - - glGenTextures(1, @textureID); - glBindTexture(0, textureID); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pu8(@texture_bin)); - - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - gluLookAt( 0.0, 0.0, 1.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - while true do - begin - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - - //move it away from the camera - glTranslate3f32(0, 0, floattof32(-1)); - - glRotateX(rotateX); - glRotateY(rotateY); - - - - glMaterialf(GL_AMBIENT, RGB15(16,16,16)); - glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(16,16,16)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - //not a real gl function and will likely change - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK); - - scanKeys(); - - keys := keysHeld(); - - if((keys and KEY_UP)) <> 0 then rotateX := rotateX +3; - if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX -3; - if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY +3; - if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY -3; - - glBindTexture(0, textureID); - - //draw the obj - glBegin(GL_QUAD); - glNormal(NORMAL_PACK(0,inttov10(-1),0)); - - GFX_TEX_COORD^ := (TEXTURE_PACK(0, inttot16(128))); - glVertex3v16(floattov16(-0.5), floattov16(-0.5), 0 ); - - GFX_TEX_COORD^ := (TEXTURE_PACK(inttot16(128),inttot16(128))); - glVertex3v16(floattov16(0.5), floattov16(-0.5), 0 ); - - GFX_TEX_COORD^ := (TEXTURE_PACK(inttot16(128), 0)); - glVertex3v16(floattov16(0.5), floattov16(0.5), 0 ); - - GFX_TEX_COORD^ := (TEXTURE_PACK(0,0)); - glVertex3v16(floattov16(-0.5), floattov16(0.5), 0 ); - - glEnd(); - - glPopMatrix(1); - - glFlush(0); - - swiWaitForVBlank(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/data/statue.bin b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/data/statue.bin deleted file mode 100644 index 3c5bba2c5e..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/data/statue.bin and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/main.pp deleted file mode 100644 index c684925071..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/main.pp +++ /dev/null @@ -1,133 +0,0 @@ -program main; -{$L statue.o} - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -var - statue_bin_end: array [0..0] of u8; cvar; external; - statue_bin: array [0..0] of u16; cvar; external; - statue_bin_size: u32; cvar; external; - - prev_pen: array [0..1] of cint = ( $7FFFFFFF, $7FFFFFFF ); - -procedure get_pen_delta(var dx, dy: cint); -var - keys: u32; - touchXY: touchPosition; -begin - keys := keysHeld(); - - if( keys and KEY_TOUCH ) <> 0 then - begin - touchXY := touchReadXY(); - - if ( prev_pen[0] <> $7FFFFFFF ) then - begin - dx := (prev_pen[0] - touchXY.x); - dy := (prev_pen[1] - touchXY.y); - end; - - prev_pen[0] := touchXY.x; - prev_pen[1] := touchXY.y; - end else - begin - prev_pen[0] := $7FFFFFFF; - prev_pen[1] := $7FFFFFFF; - dx := 0; - dy := 0; - end; -end; - -var - rotateX: integer = 0; - rotateY: integer = 0; - keys: u32; - pen_delta: array [0..1] of cint; - -begin - powerON(POWER_ALL); - - //set mode 0, enable BG0 and set it to 3D - videoSetMode(MODE_0_3D); - - //irqs are nice - irqInit(); - irqEnable(IRQ_VBLANK); - - // initialize gl - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - //this should work the same as the normal gl call - glViewPort(0,0,255,191); - - //toon-table entry 0 is for completely unlit pixels, going up to entry 31 for completely lit - //We block-fill it in two halves, we get cartoony 2-tone lighting - glSetToonTableRange( 0, 15, RGB15(8,8,8) ); - glSetToonTableRange( 16, 31, RGB15(24,24,24) ); - - //any floating point gl call is being converted to fixed prior to being implemented - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 40); - - //NB: When toon-shading, the hw ignores lights 2 and 3 - //Also note that the hw uses the RED component of the lit vertex to index the toon-table - glLight(0, RGB15(16,16,16) , 0, floattov10(-1.0), 0); - glLight(1, RGB15(16,16,16), floattov10(-1.0), 0, 0); - - gluLookAt( 0.0, 0.0, -3.0, //camera possition - 0.0, 0.0, 0.0, //look at - 0.0, 1.0, 0.0); //up - - while true do - begin - - glMatrixMode(GL_MODELVIEW); - glPushMatrix(); - glRotateXi(rotateX); - glRotateYi(rotateY); - - - glMaterialf(GL_AMBIENT, RGB15(8,8,8)); - glMaterialf(GL_DIFFUSE, RGB15(24,24,24)); - glMaterialf(GL_SPECULAR, RGB15(0,0,0)); - glMaterialf(GL_EMISSION, RGB15(0,0,0)); - - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_TOON_SHADING); - - - scanKeys(); - keys := keysHeld(); - - if( keys and KEY_UP ) <> 0 then rotateX := rotateX +1; - if( keys and KEY_DOWN ) <> 0 then rotateX := rotateX -1; - if( keys and KEY_LEFT ) <> 0 then rotateY := rotateY +1; - if( keys and KEY_RIGHT ) <> 0 then rotateY := rotateY -1; - - get_pen_delta( pen_delta[0], pen_delta[1] ); - rotateY := rotateY - pen_delta[0]; - rotateX := rotateY - pen_delta[1]; - - - glCallList(@statue_bin); - glPopMatrix(1); - - glFlush(0); - - swiWaitForVBlank(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson01/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson01/main.pp deleted file mode 100644 index d54c23d0cd..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson01/main.pp +++ /dev/null @@ -1,81 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 01 * - * Author: Dovoto * - ****************************************) - -program main; - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -function DrawGLScene(): boolean; -begin - //we are going to use floating point for the tutorial...keep in mind the DS has no - //floating point hardware. For real life use the built in fixed point types. - //this is where the magic happens - glLoadIdentity(); - DrawGLScene := TRUE; -end; - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - - // IRQ basic setup (not strickly required but nice - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0, 0, 0, 31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0, 0, 255, 191); - - // setup the view - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - - while true do - begin - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - glColor3f(1, 1, 1); // Set the color..not in nehe source...ds gl default will be black - - //Push our original Matrix onto the stack (save state) - glPushMatrix(); - - DrawGLScene(); - - // Pop our Matrix from the stack (restore state) - glPopMatrix(1); - - //a handy little built in function to wait for a screen refresh - swiWaitForVBlank(); - - // flush to screen - glFlush(0); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson02/main1.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson02/main1.pp deleted file mode 100644 index 53030bf443..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson02/main1.pp +++ /dev/null @@ -1,91 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 02 * - * Author: Dovoto * - ****************************************) - -program main1; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -function DrawGLScene(): boolean; -begin - glLoadIdentity(); // Reset The Current Modelview Matrix - glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 - glBegin(GL_TRIANGLES); // Drawing Using Triangles - glVertex3f( 0.0, 1.0, 0.0); // Top - glVertex3f(-1.0,-1.0, 0.0); // Bottom Left - glVertex3f( 1.0,-1.0, 0.0); // Bottom Right - glEnd(); // Finished Drawing The Triangle - - glTranslatef(3.0,0.0,0.0); // Move Right 3 Units - glBegin(GL_QUADS); // Draw A Quad - glVertex3f(-1.0, 1.0, 0.0); // Top Left - glVertex3f( 1.0, 1.0, 0.0); // Top Right - glVertex3f( 1.0,-1.0, 0.0); // Bottom Right - glVertex3f(-1.0,-1.0, 0.0); // Bottom Left - glEnd(); // Done Drawing The Quad - - DrawGLScene := TRUE; // Keep Going -end; - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(70, 256.0 / 192.0, 0.1, 100); - // Set the color of the vertices - glColor3f(1, 1, 1); - - while true do - begin - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - //Push our original Matrix onto the stack (save state) - glPushMatrix(); - - DrawGLScene(); - - // Pop our Matrix from the stack (restore state) - glPopMatrix(1); - - //a handy little built in function to wait for a screen refresh - swiWaitForVBlank(); - - // flush to screen - glFlush(0); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson03/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson03/main.pp deleted file mode 100644 index 99b33da711..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson03/main.pp +++ /dev/null @@ -1,86 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 03 * - * Author: Dovoto * - ****************************************) - -program main; - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -function DrawGLScene(): boolean; -begin - - glLoadIdentity(); // Reset The Current Modelview Matrix - glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 - glBegin(GL_TRIANGLES); // Drawing Using Triangles - glColor3f(1.0,0.0,0.0); // Set The Color To Red - glVertex3f( 0.0, 1.0, 0.0); // Top - glColor3f(0.0,1.0,0.0); // Set The Color To Green - glVertex3f(-1.0,-1.0, 0.0); // Bottom Left - glColor3f(0.0,0.0,1.0); // Set The Color To Blue - glVertex3f( 1.0,-1.0, 0.0); // Bottom Right - glEnd(); // Finished Drawing The Triangle - glTranslatef(3.0,0.0,0.0); // Move Right 3 Units - glColor3f(0.5,0.5,1.0); // Set The Color To Blue One Time Only - glBegin(GL_QUADS); // Draw A Quad - glVertex3f(-1.0, 1.0, 0.0); // Top Left - glVertex3f( 1.0, 1.0, 0.0); // Top Right - glVertex3f( 1.0,-1.0, 0.0); // Bottom Right - glVertex3f(-1.0,-1.0, 0.0); // Bottom Left - glEnd(); // Done Drawing The Quad - DrawGLScene := TRUE; // Keep Going -end; - - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - glInit(); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - // Specify the Clear Color and Depth - glClearColor(0,0,0,31); - glClearDepth($7FFF); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - glColor3f(1, 1, 1); // Set the color..not in nehe source...ds gl default will be black - - while true do - begin - - DrawGLScene(); - - // flush to screen - glFlush(0); - - //a handy little built in function to wait for a screen refresh - swiWaitForVBlank(); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson04/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson04/main.pp deleted file mode 100644 index cd1dc0fd1d..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson04/main.pp +++ /dev/null @@ -1,101 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 04 * - * Author: Dovoto * - ****************************************) - -program main; - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -var - rtri: cfloat = 0.0; // Angle For The Triangle ( NEW ) - rquad: cfloat = 0.0; // Angle For The Quad ( NEW ) - - -function DrawGLScene(): boolean; -begin - glIdentity(); // Reset The Current Modelview Matrix - glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 - glRotatef(rtri,0.0,1.0,0.0); // Rotate The Triangle On The Y axis ( NEW ) - glColor3f(1, 1, 1); // set the vertex color - glBegin(GL_TRIANGLES); // Drawing Using Triangles - glColor3f(1.0,0.0,0.0); // Set The Color To Red - glVertex3f( 0.0, 1.0, 0.0); // Top - glColor3f(0.0,1.0,0.0); // Set The Color To Green - glVertex3f(-1.0,-1.0, 0.0); // Bottom Left - glColor3f(0.0,0.0,1.0); // Set The Color To Blue - glVertex3f( 1.0,-1.0, 0.0); // Bottom Right - glEnd(); // Finished Drawing The Triangle - glIdentity(); // Reset The Current Modelview Matrix - glTranslatef(1.5,0.0,-6.0); // Move Right 3 Units - glRotatef(rquad,1.0,0.0,0.0); // Rotate The Quad On The X axis ( NEW ) - glColor3f(0.5,0.5,1.0); // Set The Color To Blue One Time Only - glBegin(GL_QUADS); // Draw A Quad - glVertex3f(-1.0, 1.0, 0.0); // Top Left - glVertex3f( 1.0, 1.0, 0.0); // Top Right - glVertex3f( 1.0,-1.0, 0.0); // Bottom Right - glVertex3f(-1.0,-1.0, 0.0); // Bottom Left - glEnd(); // Done Drawing The Quad - rtri := rtri + 0.9; // Increase The Rotation Variable For The Triangle ( NEW ) - rquad := rquad - 0.75; // Decrease The Rotation Variable For The Quad ( NEW ) - DrawGLScene := True; // Keep Going -end; - - - -begin -// rtri := 0; // Increase The Rotation Variable For The Triangle ( NEW ) -// rquad := 0; // Decrease The Rotation Variable For The Quad ( NEW ) - - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - while true do - begin - DrawGLScene(); - //a handy little built in function to wait for a screen refresh - swiWaitForVBlank(); - // flush to screen - glFlush(0); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson05/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson05/main.pp deleted file mode 100644 index 4f14b1d674..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson05/main.pp +++ /dev/null @@ -1,145 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 05 * - * Author: Dovoto * - ****************************************) - -program main; - -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -var - rtri: cfloat = 0.0; // Angle For The Triangle ( NEW ) - rquad: cfloat = 0.0; // Angle For The Quad ( NEW ) - - -function DrawGLScene(): boolean; -begin - glLoadIdentity(); // Reset The Current Modelview Matrix - glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 - glRotatef(rtri,0.0,1.0,0.0); // Rotate The Triangle On The Y axis ( NEW ) - glBegin(GL_TRIANGLES); // Start Drawing A Triangle - glColor3f(1.0,0.0,0.0); // Red - glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Front) - glColor3f(0.0,1.0,0.0); // Green - glVertex3f(-1.0,-1.0, 1.0); // Left Of Triangle (Front) - glColor3f(0.0,0.0,1.0); // Blue - glVertex3f( 1.0,-1.0, 1.0); // Right Of Triangle (Front) - glColor3f(1.0,0.0,0.0); // Red - glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Right) - glColor3f(0.0,0.0,1.0); // Blue - glVertex3f( 1.0,-1.0, 1.0); // Left Of Triangle (Right) - glColor3f(0.0,1.0,0.0); // Green - glVertex3f( 1.0,-1.0, -1.0); // Right Of Triangle (Right) - glColor3f(1.0,0.0,0.0); // Red - glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Back) - glColor3f(0.0,1.0,0.0); // Green - glVertex3f( 1.0,-1.0, -1.0); // Left Of Triangle (Back) - glColor3f(0.0,0.0,1.0); // Blue - glVertex3f(-1.0,-1.0, -1.0); // Right Of Triangle (Back) - glColor3f(1.0,0.0,0.0); // Red - glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Left) - glColor3f(0.0,0.0,1.0); // Blue - glVertex3f(-1.0,-1.0,-1.0); // Left Of Triangle (Left) - glColor3f(0.0,1.0,0.0); // Green - glVertex3f(-1.0,-1.0, 1.0); // Right Of Triangle (Left) - glEnd(); // Done Drawing The Pyramid - - glLoadIdentity(); // Reset The Current Modelview Matrix - glTranslatef(1.5,0.0,-7.0); // Move Right 1.5 Units And Into The Screen 7.0 - glRotatef(rquad,1.0,1.0,1.0); // Rotate The Quad On The X axis ( NEW ) - glBegin(GL_QUADS); // Draw A Quad - glColor3f(0.0,1.0,0.0); // Set The Color To Green - glVertex3f( 1.0, 1.0,-1.0); // Top Right Of The Quad (Top) - glVertex3f(-1.0, 1.0,-1.0); // Top Left Of The Quad (Top) - glVertex3f(-1.0, 1.0, 1.0); // Bottom Left Of The Quad (Top) - glVertex3f( 1.0, 1.0, 1.0); // Bottom Right Of The Quad (Top) - glColor3f(1.0,0.5,0.0); // Set The Color To Orange - glVertex3f( 1.0,-1.0, 1.0); // Top Right Of The Quad (Bottom) - glVertex3f(-1.0,-1.0, 1.0); // Top Left Of The Quad (Bottom) - glVertex3f(-1.0,-1.0,-1.0); // Bottom Left Of The Quad (Bottom) - glVertex3f( 1.0,-1.0,-1.0); // Bottom Right Of The Quad (Bottom) - glColor3f(1.0,0.0,0.0); // Set The Color To Red - glVertex3f( 1.0, 1.0, 1.0); // Top Right Of The Quad (Front) - glVertex3f(-1.0, 1.0, 1.0); // Top Left Of The Quad (Front) - glVertex3f(-1.0,-1.0, 1.0); // Bottom Left Of The Quad (Front) - glVertex3f( 1.0,-1.0, 1.0); // Bottom Right Of The Quad (Front) - glColor3f(1.0,1.0,0.0); // Set The Color To Yellow - glVertex3f( 1.0,-1.0,-1.0); // Top Right Of The Quad (Back) - glVertex3f(-1.0,-1.0,-1.0); // Top Left Of The Quad (Back) - glVertex3f(-1.0, 1.0,-1.0); // Bottom Left Of The Quad (Back) - glVertex3f( 1.0, 1.0,-1.0); // Bottom Right Of The Quad (Back) - glColor3f(0.0,0.0,1.0); // Set The Color To Blue - glVertex3f(-1.0, 1.0, 1.0); // Top Right Of The Quad (Left) - glVertex3f(-1.0, 1.0,-1.0); // Top Left Of The Quad (Left) - glVertex3f(-1.0,-1.0,-1.0); // Bottom Left Of The Quad (Left) - glVertex3f(-1.0,-1.0, 1.0); // Bottom Right Of The Quad (Left) - glColor3f(1.0,0.0,1.0); // Set The Color To Violet - glVertex3f( 1.0, 1.0,-1.0); // Top Right Of The Quad (Right) - glVertex3f( 1.0, 1.0, 1.0); // Top Left Of The Quad (Right) - glVertex3f( 1.0,-1.0, 1.0); // Bottom Left Of The Quad (Right) - glVertex3f( 1.0,-1.0,-1.0); // Bottom Right Of The Quad (Right) - glEnd(); // Done Drawing The Quad - - rtri:=rtri+0.2; // Increase The Rotation Variable For The Triangle ( NEW ) - rquad:=rquad-0.15; // Decrease The Rotation Variable For The Quad ( NEW ) - DrawGLScene := TRUE; // Keep Going -end; - - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // Specify the Clear Color and Depth - glClearColor(0,0,0,31); - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); - - while true do - begin - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - //Push our original Matrix onto the stack (save state) - glPushMatrix(); - - DrawGLScene(); - - // Pop our Matrix from the stack (restore state) - glPopMatrix(1); - - // flush to screen - glFlush(0); - - swiWaitForVBlank(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o deleted file mode 100644 index f24743fd17..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/main.pp deleted file mode 100644 index e11b1826e2..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/main.pp +++ /dev/null @@ -1,164 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 06 * - * Author: Dovoto * - ****************************************) -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -var - drunkenlogo_pcx_end: array [0..0] of u8; cvar; external; - drunkenlogo_pcx: array [0..0] of u8; cvar; external; - drunkenlogo_pcx_size: u32; cvar; external; - - xrot: cfloat; // X Rotation ( NEW ) - yrot: cfloat; // Y Rotation ( NEW ) - zrot: cfloat; // Z Rotation ( NEW ) - - texture: array [0..0] of integer; // Storage For One Texture ( NEW ) - - - -function DrawGLScene(): boolean; // Here's Where We Do All The Drawing -begin - glLoadIdentity(); // Reset The View - glTranslatef(0.0,0.0,-5.0); - - glRotatef(xrot,1.0,0.0,0.0); - glRotatef(yrot,0.0,1.0,0.0); - glRotatef(zrot,0.0,0.0,1.0); - - glBindTexture(GL_TEXTURE_2D, texture[0]); - - glBegin(GL_QUADS); - // Front Face - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - // Back Face - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - // Top Face - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - // Bottom Face - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - // Right face - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - // Left Face - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glEnd(); - - xrot:=xrot+0.3; - yrot:=yrot+0.2; - zrot:=zrot+0.4; - DrawGLScene := TRUE; -end; - - -function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures -var - pcx: sImage; //////////////(NEW) and different from nehe. -begin - //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); - - image8to16(@pcx); - - glGenTextures(1, @texture[0]); - glBindTexture(0, texture[0]); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); - - imageDestroy(@pcx); - - result := TRUE; -end; - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable textures - glEnable(GL_TEXTURE_2D); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - LoadGLTextures(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - //need to set up some material properties since DS does not have them set by default - glMaterialf(GL_AMBIENT, RGB15(16,16,16)); - glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(16,16,16)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_FORMAT_LIGHT2); - - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); - glLight(1, RGB15(31,31,31) , 0, 0, floattov10(-1.0)); - glLight(2, RGB15(31,31,31) , 0, 0, floattov10(1.0)); - - while true do - begin - - glColor3f(1,1,1); - - DrawGLScene(); - - // flush to screen - glFlush(0); - - swiWaitForVBlank(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o deleted file mode 100644 index f24743fd17..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/main.pp deleted file mode 100644 index c0b5b08e88..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/main.pp +++ /dev/null @@ -1,210 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 04 * - * Author: Ethos * - ****************************************) - -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -var - drunkenlogo_pcx_end: array [0..0] of u8; cvar; external; - drunkenlogo_pcx: array [0..0] of u8; cvar; external; - drunkenlogo_pcx_size: u32; cvar; external; - - light: boolean; // Lighting ON/OFF ( NEW ) - lp: boolean; // L Pressed? ( NEW ) - - xrot: GLfloat; // X Rotation - yrot: GLfloat; // Y Rotation - xspeed: GLfloat; // X Rotation Speed - yspeed: GLfloat; // Y Rotation Speed - z: GLfloat = -5.0; // Depth Into The Screen - - texture: array [0..2] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) - -const - LightAmbient: array [0..3] of GLfloat = ( 0.5, 0.5, 0.5, 1.0 ); - LightDiffuse: array [0..3] of GLfloat = ( 1.0, 1.0, 1.0, 1.0 ); - LightPosition: array [0..3] of GLfloat = ( 0.0, 0.0, 2.0, 1.0 ); - - - -function DrawGLScene(): boolean; // Here's Where We Do All The Drawing -begin - glLoadIdentity(); // Reset The View - glTranslatef(0.0,0.0,z); - - glRotatef(xrot,1.0,0.0,0.0); - glRotatef(yrot,0.0,1.0,0.0); - - glBindTexture(GL_TEXTURE_2D, texture[0]); //no filters to swtich between - - glBegin(GL_QUADS); - // Front Face - glNormal3f( 0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - // Back Face - glNormal3f( 0.0, 0.0,-1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - // Top Face - glNormal3f( 0.0, 1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - // Bottom Face - glNormal3f( 0.0,-1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - // Right face - glNormal3f( 1.0, 0.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - // Left Face - glNormal3f(-1.0, 0.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glEnd(); - - xrot:=xrot+xspeed; - yrot:=yrot+yspeed; - - - DrawGLScene := TRUE; -end; - - -function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures -var - pcx: sImage; //////////////(NEW) and different from nehe. -begin - //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); - - image8to16(@pcx); - - glGenTextures(1, @texture[0]); - glBindTexture(0, texture[0]); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); - - imageDestroy(@pcx); - - result := TRUE; -end; - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable textures - glEnable(GL_TEXTURE_2D); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - LoadGLTextures(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - //set up a directional light arguments are light number (0-3), light color, - //and an x,y,z vector that points in the direction of the light, the direction must be normalized - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); - - //need to set up some material properties since DS does not have them set by default - glMaterialf(GL_AMBIENT, RGB15(8,8,8)); - glMaterialf(GL_DIFFUSE, RGB15(8,8,8)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(16,16,16)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - - while true do - begin - //these little button functions are pretty handy - scanKeys(); - - - if ((keysDown() and KEY_A)) <> 0 then - light := not light; - - if (keysHeld() and KEY_R) <> 0 then - z := z -0.02; - if (keysHeld() and KEY_L) <> 0 then - z := z+0.02; - if (keysHeld() and KEY_LEFT) <> 0 then - xspeed := xspeed-0.01; - if (keysHeld() and KEY_RIGHT) <> 0 then - xspeed := xspeed+0.01; - if (keysHeld() and KEY_UP) <> 0 then - yspeed := yspeed+0.01; - if (keysHeld() and KEY_DOWN) <> 0 then - yspeed := yspeed-0.01; - - - glColor3f(1,1,1); - - if (not light) then - begin - //ds specific, several attributes can be set here including turning on our light - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK); - end else - begin - //ds specific, several attributes can be set here including turning on our light - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0); - end; - - DrawGLScene(); - - // flush to screen - glFlush(0); - - // wait for the screen to refresh - swiWaitForVBlank(); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o deleted file mode 100644 index f24743fd17..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/main.pp deleted file mode 100644 index 84841f1146..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/main.pp +++ /dev/null @@ -1,206 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 04 * - * Author: Ethos * - ****************************************) - -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - -var - drunkenlogo_pcx_end: array [0..0] of u8; cvar; external; - drunkenlogo_pcx: array [0..0] of u8; cvar; external; - drunkenlogo_pcx_size: u32; cvar; external; - - light: boolean; // Lighting ON/OFF ( NEW ) - lp: boolean; // L Pressed? ( NEW ) - - xrot: GLfloat; // X Rotation - yrot: GLfloat; // Y Rotation - xspeed: GLfloat; // X Rotation Speed - yspeed: GLfloat; // Y Rotation Speed - z: GLfloat = -5.0; // Depth Into The Screen - - texture: array [0..2] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) - -const - LightAmbient: array [0..3] of GLfloat = ( 0.5, 0.5, 0.5, 1.0 ); - LightDiffuse: array [0..3] of GLfloat = ( 1.0, 1.0, 1.0, 1.0 ); - LightPosition: array [0..3] of GLfloat = ( 0.0, 0.0, 2.0, 1.0 ); - -function DrawGLScene(): boolean; // Here's Where We Do All The Drawing -begin - glLoadIdentity(); // Reset The View - glTranslatef(0.0,0.0,z); - - glRotatef(xrot,1.0,0.0,0.0); - glRotatef(yrot,0.0,1.0,0.0); - - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0); - - glBindTexture(GL_TEXTURE_2D, texture[0]); //no filters to swtich between - - glBegin(GL_QUADS); - // Front Face - glNormal3f( 0.0, 0.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - // Back Face - glNormal3f( 0.0, 0.0,-1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - // Top Face - glNormal3f( 0.0, 1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - // Bottom Face - glNormal3f( 0.0,-1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - // Right face - glNormal3f( 1.0, 0.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); - glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); - glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); - glEnd(); - - glPolyFmt(POLY_ALPHA(15) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0); - - glBegin(GL_QUADS); - - // Left Face - glNormal3f(-1.0, 0.0, 0.0); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); - glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); - glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); - glEnd(); - - xrot := xrot+xspeed; - yrot := yrot+yspeed; - - DrawGLScene := TRUE; -end; - - -function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures -var - pcx: sImage; //////////////(NEW) and different from nehe. -begin - //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); - - image8to16(@pcx); - - glGenTextures(1, @texture[0]); - glBindTexture(0, texture[0]); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); - - imageDestroy(@pcx); - - result := TRUE; -end; - - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable textures - glEnable(GL_TEXTURE_2D); - - glEnable(GL_BLEND); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - LoadGLTextures(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - //set up a directional ligth arguments are light number (0-3), light color, - //and an x,y,z vector that points in the direction of the light - glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); - - - glColor3f(1,1,1); - - glMatrixMode(GL_MODELVIEW); - - //need to set up some material properties since DS does not have them set by default - - glMaterialf(GL_AMBIENT, RGB15(16,16,16)); - glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(16,16,16)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - // Set the current matrix to be the model matrix - glMatrixMode(GL_MODELVIEW); - while true do - begin - //these little button functions are pretty handy - scanKeys(); - - if (keysHeld() and KEY_R) <> 0 then - z := z -0.02; - if (keysHeld() and KEY_L) <> 0 then - z := z+0.02; - if (keysHeld() and KEY_LEFT) <> 0 then - xspeed := xspeed-0.01; - if (keysHeld() and KEY_RIGHT) <> 0 then - xspeed := xspeed+0.01; - if (keysHeld() and KEY_UP) <> 0 then - yspeed := yspeed+0.01; - if (keysHeld() and KEY_DOWN) <> 0 then - yspeed := yspeed-0.01; - - DrawGLScene(); - - // flush to screen - glFlush(0); - - // wait for the screen to refresh - swiWaitForVBlank(); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o deleted file mode 100644 index 2f8299a83b..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/main.pp deleted file mode 100644 index 2fb3dcefd7..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/main.pp +++ /dev/null @@ -1,188 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 09 * - * Author: dovoto - * DS does not appear to support - the features needed for this demo - ****************************************) - -program main; -{$L Star.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation - -uses - ctypes, nds9; // required by nds headers! - - -type - TStars = record // Create A Structure For Star - r, g, b: integer; // Stars Color - dist: cfloat; // Stars Distance From Center - angle: cfloat; // Stars Current Angle - end; - - -var - Star_pcx_end: array [0..0] of u8; cvar; external; - Star_pcx: array [0..0] of u8; cvar; external; - Star_pcx_size: u32; cvar; external; - - twinkle: boolean; // Twinkling Stars - tp: boolean; // 'T' Key Pressed? - -const - num = 50; // Number Of Stars To Draw - - -var - star: array [0..num-1] of TStars; // Need To Keep Track Of 'num' Stars - zoom: double = -15.0; // Distance Away From Stars - tilt: double = 90.0; // Tilt The View - spin: double; // Spin Stars - - loop: integer; // General Loop Variable - texture: array [0..0] of integer; // Storage For One textures - - - -// Load PCX files And Convert To Textures -function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures -var - pcx: sImage; //////////////(NEW) and different from nehe. -begin - //load our texture - loadPCX(pu8(Star_pcx), @pcx); - - image8to16(@pcx); - - glGenTextures(1, @texture[0]); - glBindTexture(0, texture[0]); - glTexImage2D(0, 0, GL_RGBA, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); - - imageDestroy(@pcx); - - result := TRUE; -end; - -function DrawGLScene(): boolean; // Here's Where We Do All The Drawing -var - loop: integer; -begin - glBindTexture(GL_TEXTURE_2D, texture[0]); // Select Our Texture - - for loop := 0 to num - 1 do // Loop Through All The Stars - begin - glLoadIdentity(); // Reset The View Before We Draw Each Star - glTranslatef(0.0, 0.0, zoom); // Zoom Into The Screen (Using The Value In 'zoom') - glRotatef(tilt, 1.0, 0.0, 0.0); // Tilt The View (Using The Value In 'tilt') - glRotatef(star[loop].angle, 0.0, 1.0, 0.0); // Rotate To The Current Stars Angle - glTranslatef(star[loop].dist, 0.0, 0.0); // Move Forward On The X Plane - glRotatef(-star[loop].angle, 0.0, 1.0, 0.0); // Cancel The Current Stars Angle - glRotatef(-tilt, 1.0, 0.0, 0.0); // Cancel The Screen Tilt - - if (twinkle) then - begin - glColor3b(star[(num-loop)-1].r,star[(num-loop)-1].g,star[(num-loop)-1].b); ///different - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0,-1.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0,-1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 0.0); - glEnd(); - end; - - glRotatef(spin, 0.0, 0.0, 1.0); - glColor3b(star[loop].r,star[loop].g,star[loop].b); //different - glBegin(GL_QUADS); - glTexCoord2f(0.0, 0.0); glVertex3f(-1.0,-1.0, 0.0); - glTexCoord2f(1.0, 0.0); glVertex3f( 1.0,-1.0, 0.0); - glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 0.0); - glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 0.0); - glEnd(); - - spin := spin + 0.01; - star[loop].angle := star[loop].angle + (loop / num); - star[loop].dist := star[loop].dist - 0.01; - if (star[loop].dist < 0.0) then - begin - star[loop].dist := star[loop].dist + 5.0; - star[loop].r :=rand(256); - star[loop].g :=rand(256); - star[loop].b :=rand(256); - end; - end; - result := TRUE; // Keep Going - -end; - - -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - // initialize the geometry engine - glInit(); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - // enable textures - glEnable(GL_TEXTURE_2D); - - // enable alpha blending - glEnable(GL_BLEND); - - // Set our viewport to be the same size as the screen - glViewport(0,0,255,191); - - LoadGLTextures(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(70, 256.0 / 192.0, 0.1, 100); - glColor3f(1,1,1); - - //set up a directional ligth arguments are light number (0-3), light color, - //and an x,y,z vector that points in the direction of the light - glLight(0, RGB15(31,31,31) , 0, 0,floattov10(-1.0)); - - //need to set up some material properties since DS does not have them set by default - glMaterialf(GL_AMBIENT, RGB15(16,16,16)); - glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); - glMaterialf(GL_EMISSION, RGB15(16,16,16)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - glPolyFmt(POLY_ALPHA(15) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0); - - glMatrixMode(GL_MODELVIEW); - - while true do - begin - DrawGLScene(); - - // flush to screen - glFlush(0); - - // wait for the screen to refresh - swiWaitForVBlank(); - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o deleted file mode 100644 index f24743fd17..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/main.pp b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/main.pp deleted file mode 100644 index 5db0e790e9..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/main.pp +++ /dev/null @@ -1,195 +0,0 @@ -(**************************************** - * NDS NeHe Lesson 11 * - * Author: Dovoto * - ****************************************) -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - drunkenlogo_pcx_end: array [0..0] of u8; cvar; external; - drunkenlogo_pcx: array [0..0] of u8; cvar; external; - drunkenlogo_pcx_size: u32; cvar; external; - - points: array [0..63, 0..31, 0..2] of v16; // The Array For The Points On The Grid Of Our "Wave" - wiggle_count: integer = 0; // Counter Used To Control How Fast Flag Waves - - xrot: GLfloat; // X Rotation ( NEW ) - yrot: GLfloat; // Y Rotation ( NEW ) - zrot: GLfloat; // Z Rotation ( NEW ) - hold: v16; // Temporarily Holds A Floating Point Value - - texture: array [0..0] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) - -function DrawGLScene(): boolean; // Here's Where We Do All The Drawing -var - x, y: integer; - float_x, float_y, float_xb, float_yb: t16; -begin - - glColor3b(255,255,255); // set the vertex color - - glLoadIdentity(); // Reset The View - - glTranslatef(0.0,0.0,-12.0); - - glRotatef(xrot,1.0,0.0,0.0); - glRotatef(yrot,0.0,1.0,0.0); - glRotatef(zrot,0.0,0.0,1.0); - - glBindTexture(GL_TEXTURE_2D, texture[0]); - - glBegin(GL_QUADS); - for x := 0 to 30 do - begin - for y := 0 to 30 do - begin - float_x := inttot16(x) shl 2; - float_y := inttot16(y) shl 2; - float_xb := inttot16(x+1) shl 2; - float_yb := inttot16(y+1) shl 2; - - glTexCoord2t16( float_x, float_y); - glVertex3v16( points[x][y][0], points[x][y][1], points[x][y][2] ); - - glTexCoord2t16( float_x, float_yb ); - glVertex3v16( points[x][y+1][0], points[x][y+1][1], points[x][y+1][2] ); - - glTexCoord2t16( float_xb, float_yb ); - glVertex3v16( points[x+1][y+1][0], points[x+1][y+1][1], points[x+1][y+1][2] ); - - glTexCoord2t16( float_xb, float_y ); - glVertex3v16( points[x+1][y][0], points[x+1][y][1], points[x+1][y][2] ); - end; - end; - glEnd(); - - if ( wiggle_count = 2 ) then - begin - for y := 0 to 31 do - begin - hold := points[0][y][2]; - for x := 0 to 31 do - begin - points[x][y][2] := points[x+1][y][2]; - end; - points[31][y][2]:=hold; - end; - wiggle_count := 0; - end; - - inc(wiggle_count); - - xrot:=xrot+0.3; - yrot:=yrot+0.2; - zrot:=zrot+0.4; - - drawGLScene := TRUE; // Everything Went OK - -end; - - - -function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures -var - pcx: sImage; //////////////(NEW) and different from nehe. -begin - //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); - - image8to16(@pcx); - - glGenTextures(1, @texture[0]); - glBindTexture(0, texture[0]); - glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); - - //imageDestroy(@pcx); - result := TRUE; -end; - -procedure InitGL(); -var - x, y:integer; -begin - // Turn on everything - powerON(POWER_ALL); - - // Setup the Main screen for 3D - videoSetMode(MODE_0_3D); - vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures - - // IRQ basic setup - irqInit(); - irqSet(IRQ_VBLANK, nil); - - - // initialize the geometry engine - glInit(); - - // enable textures - glEnable(GL_TEXTURE_2D); - - // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); - - // enable antialiasing - glEnable(GL_ANTIALIAS); - - // setup the rear plane - glClearColor(0,0,0,31); // BG must be opaque for AA to work - glClearPolyID(63); // BG must have a unique polygon ID for AA to work - glClearDepth($7FFF); - - LoadGLTextures(); - - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); - - //need to set up some material properties since DS does not have them set by default - glMaterialf(GL_AMBIENT, RGB15(31,31,31)); - glMaterialf(GL_DIFFUSE, RGB15(31,31,31)); - glMaterialf(GL_SPECULAR, BIT(15) or RGB15(16,16,16)); - glMaterialf(GL_EMISSION, RGB15(31,31,31)); - - //ds uses a table for shinyness..this generates a half-ass one - glMaterialShinyness(); - - //ds specific, several attributes can be set here - glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE ); - - - for x:=0 to 31 do - begin - for y:=0 to 31 do - begin - points[x][y][0] := (inttov16(x) div 4); - points[x][y][1] := (inttov16(y) div 4); - points[x][y][2] := SIN_bin[ (x * 16) and LUT_MASK]; - end; - end; -end; - - -begin - InitGL(); - - glMatrixMode(GL_MODELVIEW); - - while true do - begin - DrawGLScene(); - - // flush to screen - glFlush(0); - - // wait for the screen to refresh - swiWaitForVBlank(); - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/debugging/exceptionTest/main.pp b/packages/libndsfpc/examples/devkitPro/debugging/exceptionTest/main.pp deleted file mode 100644 index 957e4f2dca..0000000000 --- a/packages/libndsfpc/examples/devkitPro/debugging/exceptionTest/main.pp +++ /dev/null @@ -1,29 +0,0 @@ -program main; -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -// The default exception handler displays the exception type - data abort or undefined instruction -// you can relate the exception to your code using arm-eabi-addr2line -e
-// assuming you built with debug info this will display a source file and a line number -// The address of the instruction is shown as pc, beside the address which faulted -// the rest of the screen is a dump of the registers. - -begin - // install the default exception handler - defaultExceptionHandler(); - - irqInit(); - irqEnable(IRQ_VBLANK); - - // generate an exception - pu32(250)^ := 100; - - while true do - swiWaitForVBlank(); - -end. diff --git a/packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o b/packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o deleted file mode 100644 index 50fc3aba31..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o b/packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o deleted file mode 100644 index 5a8f857c0f..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/input/TouchTest/main.pp b/packages/libndsfpc/examples/devkitPro/input/TouchTest/main.pp deleted file mode 100644 index bec3a00376..0000000000 --- a/packages/libndsfpc/examples/devkitPro/input/TouchTest/main.pp +++ /dev/null @@ -1,174 +0,0 @@ -program main; -{$L ballpalette.bin.o} -{$L balldata.bin.o} -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - -var - OAMCopy: array [0..127] of SpriteEntry; - ballpalette_bin_end: array [0..0] of u8; cvar; external; - ballpalette_bin: array [0..0] of u16; cvar; external; - ballpalette_bin_size: u32; cvar; external; - balldata_bin_end: array [0..0] of u8; cvar; external; - balldata_bin: array [0..0] of u16; cvar; external; - balldata_bin_size: u32; cvar; external; - - -procedure initOAM(); -var - i: integer; -begin - for i := 0 to 127 do - OAMCopy[i].st.attribute[0] := ATTR0_DISABLED; -end; - -//--------------------------------------------------------------------------------- -procedure updateOAM(); -begin - dmaCopy(@OAMCopy, OAM, sizeof(OAMCopy)); -end; - - -type - TTouchType = (ttContinuous, ttSingle); - -var - frame: integer; - TouchType: TTouchType = ttContinuous; - - -//--------------------------------------------------------------------------------- -function Vblank(): pointer; -begin -//--------------------------------------------------------------------------------- - inc(frame); -end; - - -var - min_x, min_y, max_x, max_y: integer; - min_px, min_py, max_px, max_py: integer; - touch: touchPosition; - i: integer; - pressed, held: integer; - -begin - min_x := 4096; - min_y := 4096; - max_x := 0; - max_y := 0; - min_px := 4096; - min_py := 4096; - max_px := 0; - max_py := 0; - - - powerON(POWER_ALL_2D); - - // put the main screen on the bottom lcd - lcdMainOnBottom(); - - // Initialise the interrupt system - irqInit(); - // install our simple vblank handler - irqSet(IRQ_VBLANK, @Vblank); - // enable the interrupt - irqEnable(IRQ_VBLANK); - initOAM(); - //enable vram and map it to the right places - vramSetMainBanks( VRAM_A_MAIN_SPRITE, //A and B maped consecutivly as sprite memory - VRAM_B_MAIN_SPRITE, //this gives us 256KB which is the max - VRAM_C_MAIN_BG_0x06000000, //map C to background memory - VRAM_D_LCD //not using D - ); - - //set the video mode - videoSetMode( MODE_0_2D or - DISPLAY_SPR_ACTIVE or //turn on sprites - DISPLAY_BG0_ACTIVE or //turn on background 0 - DISPLAY_SPR_1D //this is used when in tile mode - ); - - // Sprite initialisation - for i := 0 to 255 do - SPRITE_PALETTE[i] := u32(ballpalette_bin[i]); - - for i := 0 to 32*16 - 1 do - SPRITE_GFX[i] := u32(balldata_bin[i]); - - // black backdrop - BG_PALETTE[0] := (RGB15(0,0,0)); - - BG0_CR^ := BG_MAP_BASE(31);//use bg0 for the text - - BG_PALETTE[255] := (RGB15(31,31,31));//by default font rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK(31)), pu16(CHAR_BASE_BLOCK(0)), 16); - - - printf(#27 + '[4;8H' + 'Touch Screen Test'); - printf(#27 + '[15;4H' + 'Right Shoulder toggles'); - - while true do - begin - swiWaitForVBlank(); - updateOAM(); - - // read the button states - scanKeys(); - - // read the touchscreen coordinates - touch := touchReadXY(); - - pressed := keysDown(); // buttons pressed this loop - held := keysHeld(); // buttons currently held - - // Right Shoulder button toggles the mode - if ( pressed and KEY_R) <> 0 then Inc(TouchType); - - if TouchType = ttContinuous then - printf(#27 + '[14;4H' + 'Touch mode: CONTINUOUS ') - else - printf(#27 + '[14;4H' + 'Touch mode: SINGLE SHOT'); - - iprintf(#27 + '[6;5H' + 'Touch x = %04X, %04X' + #10, [touch.x, touch.px]); - iprintf(#27 + '[7;5H' + 'Touch x = %04X, %04X' + #10, [touch.x, touch.px]); - - - iprintf(#27 + '[0;18H' + 'keys: %08X' + #10, [keysHeld()]); - iprintf(#27 + '[9;10H' + 'Frame %d' + #10, [frame]); - - if (TouchType = ttSingle) and not ( (pressed and KEY_TOUCH) <> 0) then continue; - - if ((held and KEY_TOUCH)<0) or (touch.x = 0) or (touch.y = 0) then continue; - - iprintf(#27 + '[12;12H' + '(%d,%d) ', [touch.px,touch.py]); - - if ( touch.x > max_x) then max_x := touch.x; - if ( touch.y > max_y) then max_y := touch.y; - if ( touch.px > max_px) then max_px := touch.px; - if ( touch.py > max_py) then max_py := touch.py; - - if ( touch.x < min_x) then min_x := touch.x; - if ( touch.y < min_y) then min_y := touch.y; - if ( touch.px < min_px) then min_px := touch.px; - if ( touch.py < min_py) then min_py := touch.py; - - iprintf(#27 + '[0;0H' + '(%d,%d) ',[min_px,min_py]); - iprintf(#27 + '[1;0H' + '(%d,%d) ',[min_x,min_y]); - iprintf(#27 + '[22;21H' + '(%d,%d)',[max_x,max_y]); - iprintf(#27 + '[23;23H' + '(%d,%d)',[max_px,max_py]); - - OAMCopy[0].st.attribute[2] := 0; - OAMCopy[0].st.attribute[1] := ATTR1_SIZE_32 or ((touch.px - 16) and $01FF); - OAMCopy[0].st.attribute[0] := ATTR0_COLOR_256 or ATTR0_SQUARE or ((touch.py -16) and $00FF); - - end; - -end. diff --git a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/blaster.raw.o b/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/blaster.raw.o deleted file mode 100644 index edc8f9b82f..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/blaster.raw.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o b/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o deleted file mode 100644 index 656d0ba6fb..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o and /dev/null differ diff --git a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/main.pp b/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/main.pp deleted file mode 100644 index 1ac73f6c34..0000000000 --- a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/main.pp +++ /dev/null @@ -1,89 +0,0 @@ -program main; -{$L blaster.raw.o} -{$L saberoff.raw.o} -{$L ion.raw.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - ctypes, nds9; - - -var - blaster_raw_end: array [0..0] of u8; cvar; external; - blaster_raw: array [0..0] of u8; cvar; external; - blaster_raw_size: u32; cvar; external; - ion_raw_end: array [0..0] of u8; cvar; external; - ion_raw: array [0..0] of u8; cvar; external; - ion_raw_size: u32; cvar; external; - saberoff_raw_end: array [0..0] of u8; cvar; external; - saberoff_raw: array [0..0] of u8; cvar; external; - saberoff_raw_size: u32; cvar; external; - - blaster: TransferSoundData; - keys: u16; - -begin - - powerON( POWER_LCD or POWER_2D_B ); - - // initialise the irq dispatcher - irqInit(); - // a vblank interrupt is needed to use swiWaitForVBlank() - // since the dispatcher handles the flags no handler is required - irqSet(IRQ_VBLANK, nil); - irqEnable(IRQ_VBLANK); - - videoSetMode(0); //not using the main screen - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - vramSetBankC(VRAM_C_SUB_BG); - - SUB_BG0_CR^ := BG_MAP_BASE(31); - - BG_PALETTE_SUB[255] := (RGB15(31,31,31)); //by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pu16(SCREEN_BASE_BLOCK_SUB(31)), pu16(CHAR_BASE_BLOCK_SUB(0)), 16); - - printf(#10#10 + 'Simple Sound Demo' + #10 + - 'Press A for SaberOff' + #10 + - ' L for ion' + #10 + - ' R for blaster' + #10); - - // set the generic sound parameters - setGenericSound( 11025, (* sample rate *) - 127, (* volume *) - 64, (* panning *) - 1 ); (* sound format*) - - - with blaster do - begin - data := @blaster_raw; - len := blaster_raw_size; - rate := 11025; - vol := 127; - pan := 64; - format := 1; - PADDING := 0; - end; - - - while true do - begin - swiWaitForVBlank(); - scanKeys(); - - keys := keysDown(); - - if ( keys and KEY_L) <> 0 then playGenericSound(@ion_raw, ion_raw_size); - - if ( keys and KEY_A) <> 0 then playGenericSound(@saberoff_raw, saberoff_raw_size); - - if ( keys and KEY_R) <> 0 then playSound(@blaster); - - end; -end. diff --git a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/saberoff.raw.o b/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/saberoff.raw.o deleted file mode 100644 index 65ca2b4773..0000000000 Binary files a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/saberoff.raw.o and /dev/null differ diff --git a/packages/libndsfpc/examples/ds_motion/Makefile b/packages/libndsfpc/examples/ds_motion/Makefile new file mode 100644 index 0000000000..fd872b82c7 --- /dev/null +++ b/packages/libndsfpc/examples/ds_motion/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=dsMotion +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/ds_motion/Makefile.fpc b/packages/libndsfpc/examples/ds_motion/Makefile.fpc new file mode 100644 index 0000000000..9a24fccd3c --- /dev/null +++ b/packages/libndsfpc/examples/ds_motion/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=dsMotion + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/ds_motion/dsMotion.pp b/packages/libndsfpc/examples/ds_motion/dsMotion.pp new file mode 100644 index 0000000000..18f8baae05 --- /dev/null +++ b/packages/libndsfpc/examples/ds_motion/dsMotion.pp @@ -0,0 +1,59 @@ +program dsMotion; + + +uses + ctypes, nds9; + +//sets the offset of the x and y and gyro and the 1 G offset of z +//to callivrate other offsets you would have to instruct the user to orient +//the DS in various positions +procedure Calibrate(); +begin + scanKeys(); + + consoleClear(); + + iprintf('Set the DS on a flat table...'#10'Press A'#10); + + while ((not keysDown()) and KEY_A) <> 0 do + scanKeys(); + + //these set the zero points of the accelerometers and gryo + motion_set_offs_x(); + motion_set_offs_y(); + motion_set_offs_gyro(); + + //this should be set to the acceleration value at 1 z + motion_set_sens_z(motion_read_z()); + +end; + + +begin + consoleDemoInit(); + + motion_init(); + + while true do + begin + scanKeys(); + + if (keysDown() and KEY_A) <> 0 then + Calibrate(); + + consoleClear(); + if motion_init() <> 0 then + iprintf('Nds is inserted'#10) + else + iprintf('Nds is not inserted'#10); + + iprintf('X: raw %i miliG %i'#10, motion_read_x(), motion_acceleration_x()); + iprintf('Y: raw %i miliG %i'#10, motion_read_y(), motion_acceleration_y()); + iprintf('Z: raw %i miliG %i'#10, motion_read_z(), motion_acceleration_z()); + iprintf('R: raw %i deg/sec %i'#10, motion_read_gyro(), motion_rotation()); + iprintf('Press A to calibrate'#10); + swiWaitForVBlank(); + end; + +end. + diff --git a/packages/libndsfpc/examples/dswifi/Makefile b/packages/libndsfpc/examples/dswifi/Makefile new file mode 100644 index 0000000000..474db0cfcc --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/Makefile @@ -0,0 +1,1529 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=ap_search autoconnect httpget +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_AP_SEARCH=1 +TARGET_DIRS_AUTOCONNECT=1 +TARGET_DIRS_HTTPGET=1 +endif +ifdef TARGET_DIRS_AP_SEARCH +ap_search_all: + $(MAKE) -C ap_search all +ap_search_debug: + $(MAKE) -C ap_search debug +ap_search_smart: + $(MAKE) -C ap_search smart +ap_search_release: + $(MAKE) -C ap_search release +ap_search_units: + $(MAKE) -C ap_search units +ap_search_examples: + $(MAKE) -C ap_search examples +ap_search_shared: + $(MAKE) -C ap_search shared +ap_search_install: + $(MAKE) -C ap_search install +ap_search_sourceinstall: + $(MAKE) -C ap_search sourceinstall +ap_search_exampleinstall: + $(MAKE) -C ap_search exampleinstall +ap_search_distinstall: + $(MAKE) -C ap_search distinstall +ap_search_zipinstall: + $(MAKE) -C ap_search zipinstall +ap_search_zipsourceinstall: + $(MAKE) -C ap_search zipsourceinstall +ap_search_zipexampleinstall: + $(MAKE) -C ap_search zipexampleinstall +ap_search_zipdistinstall: + $(MAKE) -C ap_search zipdistinstall +ap_search_clean: + $(MAKE) -C ap_search clean +ap_search_distclean: + $(MAKE) -C ap_search distclean +ap_search_cleanall: + $(MAKE) -C ap_search cleanall +ap_search_info: + $(MAKE) -C ap_search info +ap_search_makefiles: + $(MAKE) -C ap_search makefiles +ap_search: + $(MAKE) -C ap_search all +.PHONY: ap_search_all ap_search_debug ap_search_smart ap_search_release ap_search_units ap_search_examples ap_search_shared ap_search_install ap_search_sourceinstall ap_search_exampleinstall ap_search_distinstall ap_search_zipinstall ap_search_zipsourceinstall ap_search_zipexampleinstall ap_search_zipdistinstall ap_search_clean ap_search_distclean ap_search_cleanall ap_search_info ap_search_makefiles ap_search +endif +ifdef TARGET_DIRS_AUTOCONNECT +autoconnect_all: + $(MAKE) -C autoconnect all +autoconnect_debug: + $(MAKE) -C autoconnect debug +autoconnect_smart: + $(MAKE) -C autoconnect smart +autoconnect_release: + $(MAKE) -C autoconnect release +autoconnect_units: + $(MAKE) -C autoconnect units +autoconnect_examples: + $(MAKE) -C autoconnect examples +autoconnect_shared: + $(MAKE) -C autoconnect shared +autoconnect_install: + $(MAKE) -C autoconnect install +autoconnect_sourceinstall: + $(MAKE) -C autoconnect sourceinstall +autoconnect_exampleinstall: + $(MAKE) -C autoconnect exampleinstall +autoconnect_distinstall: + $(MAKE) -C autoconnect distinstall +autoconnect_zipinstall: + $(MAKE) -C autoconnect zipinstall +autoconnect_zipsourceinstall: + $(MAKE) -C autoconnect zipsourceinstall +autoconnect_zipexampleinstall: + $(MAKE) -C autoconnect zipexampleinstall +autoconnect_zipdistinstall: + $(MAKE) -C autoconnect zipdistinstall +autoconnect_clean: + $(MAKE) -C autoconnect clean +autoconnect_distclean: + $(MAKE) -C autoconnect distclean +autoconnect_cleanall: + $(MAKE) -C autoconnect cleanall +autoconnect_info: + $(MAKE) -C autoconnect info +autoconnect_makefiles: + $(MAKE) -C autoconnect makefiles +autoconnect: + $(MAKE) -C autoconnect all +.PHONY: autoconnect_all autoconnect_debug autoconnect_smart autoconnect_release autoconnect_units autoconnect_examples autoconnect_shared autoconnect_install autoconnect_sourceinstall autoconnect_exampleinstall autoconnect_distinstall autoconnect_zipinstall autoconnect_zipsourceinstall autoconnect_zipexampleinstall autoconnect_zipdistinstall autoconnect_clean autoconnect_distclean autoconnect_cleanall autoconnect_info autoconnect_makefiles autoconnect +endif +ifdef TARGET_DIRS_HTTPGET +httpget_all: + $(MAKE) -C httpget all +httpget_debug: + $(MAKE) -C httpget debug +httpget_smart: + $(MAKE) -C httpget smart +httpget_release: + $(MAKE) -C httpget release +httpget_units: + $(MAKE) -C httpget units +httpget_examples: + $(MAKE) -C httpget examples +httpget_shared: + $(MAKE) -C httpget shared +httpget_install: + $(MAKE) -C httpget install +httpget_sourceinstall: + $(MAKE) -C httpget sourceinstall +httpget_exampleinstall: + $(MAKE) -C httpget exampleinstall +httpget_distinstall: + $(MAKE) -C httpget distinstall +httpget_zipinstall: + $(MAKE) -C httpget zipinstall +httpget_zipsourceinstall: + $(MAKE) -C httpget zipsourceinstall +httpget_zipexampleinstall: + $(MAKE) -C httpget zipexampleinstall +httpget_zipdistinstall: + $(MAKE) -C httpget zipdistinstall +httpget_clean: + $(MAKE) -C httpget clean +httpget_distclean: + $(MAKE) -C httpget distclean +httpget_cleanall: + $(MAKE) -C httpget cleanall +httpget_info: + $(MAKE) -C httpget info +httpget_makefiles: + $(MAKE) -C httpget makefiles +httpget: + $(MAKE) -C httpget all +.PHONY: httpget_all httpget_debug httpget_smart httpget_release httpget_units httpget_examples httpget_shared httpget_install httpget_sourceinstall httpget_exampleinstall httpget_distinstall httpget_zipinstall httpget_zipsourceinstall httpget_zipexampleinstall httpget_zipdistinstall httpget_clean httpget_distclean httpget_cleanall httpget_info httpget_makefiles httpget +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/dswifi/Makefile.fpc b/packages/libndsfpc/examples/dswifi/Makefile.fpc new file mode 100644 index 0000000000..00d69653bf --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=ap_search autoconnect httpget + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/dswifi/ap_search/Makefile b/packages/libndsfpc/examples/dswifi/ap_search/Makefile new file mode 100644 index 0000000000..14a182f982 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/ap_search/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=apSearch +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/dswifi/ap_search/Makefile.fpc b/packages/libndsfpc/examples/dswifi/ap_search/Makefile.fpc new file mode 100644 index 0000000000..bf1ba8ac7c --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/ap_search/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=apSearch + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/dswifi/ap_search/apSearch.pp b/packages/libndsfpc/examples/dswifi/ap_search/apSearch.pp new file mode 100644 index 0000000000..1d63d8b340 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/ap_search/apSearch.pp @@ -0,0 +1,127 @@ +program apSearch; + +{$apptype arm9} +{$define ARM9} + +{$mode objfpc} + + +uses + ctypes, nds9, dswifi9; + +procedure findAP(ap: pWifi_AccessPoint); +var + selected, i, count: integer; + ap2: Wifi_AccessPoint; +begin + selected := 0; + count := 0; + + Wifi_ScanMode(); //this allows us to search for APs + + while ((keysDown() and KEY_A) = 0) do + begin + scanKeys(); + + //find out how many APs there are in the area + count := Wifi_GetNumAP(); + consoleClear(); + + iprintf('Number of APs found: %d'#10, count); + + //display the APs to the user + for i := 0 to count - 1 do + begin + Wifi_GetAPData(i, @ap2); + // display the name of the AP + if i = selected then + iprintf('%s %s'#10, '*', pcchar(ap2.ssid)) + else + iprintf('%s %s'#10, ' ', pcchar(ap2.ssid)); + + end; + + //move the selection asterick + if ((keysDown() and KEY_UP) <> 0) and (selected > 0) then + dec(selected); + + if ((keysDown() and KEY_DOWN) <> 0) and (selected < (count-1)) then + inc(selected); + + swiWaitForVBlank(); + end; + + //user has made a choice so grab the ap and return it + Wifi_GetAPData(selected, ap); + +end; + +//--------------------------------------------------------------------------------- +function keyPressed(c: cint): pointer; +begin + if (c > 0) then + iprintf('%c', c); +end; + +var + ap3: pWifi_AccessPoint; + status: integer; + kb: pKeyboard; + oldStatus: integer; + url: array [0..255] of char; + host: phostent; + +begin + status := integer(ASSOCSTATUS_DISCONNECTED); + + consoleDemoInit(); + + new(kb); + kb := keyboardDemoInit(); + kb^.OnKeyPressed := @keyPressed; + + Wifi_InitDefault(false); + + findAP(ap3); + + iprintf('Connecting to %s'#10, pcchar(ap3^.ssid)); + + //this tells the wifi lib to use dhcp for everything + Wifi_SetIP(0,0,0,0,0); + + Wifi_ConnectAP(ap3, integer(WEPMODE_NONE), 0, nil); + + while (status <> integer(ASSOCSTATUS_ASSOCIATED)) and (status <> integer(ASSOCSTATUS_CANNOTCONNECT)) do + begin + oldStatus := status; + + status := Wifi_AssocStatus(); + if oldStatus <> status then + iprintf('%s', pchar(@ASSOCSTATUS_STRINGS[status])) + else + iprintf('%s', '.'); + + swiWaitForVBlank(); + end; + + consoleClear(); + consoleSetWindow(nil, 0,0,32,10); + + + while true do + begin + iprintf('Url? '); + + scanf('%s', url); + + host := gethostbyname(url); + + if (host) <> nil then + iprintf('IP (%s) : %s'#10, url, inet_ntoa(in_addr(host^.h_addr_list^))) + else + iprintf('Could not resolve'#10); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/dswifi/autoconnect/Makefile b/packages/libndsfpc/examples/dswifi/autoconnect/Makefile new file mode 100644 index 0000000000..09d2741e96 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/autoconnect/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=autoconnect +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/dswifi/autoconnect/Makefile.fpc b/packages/libndsfpc/examples/dswifi/autoconnect/Makefile.fpc new file mode 100644 index 0000000000..a55e429881 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/autoconnect/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=autoconnect + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/dswifi/autoconnect/autoconnect.pp b/packages/libndsfpc/examples/dswifi/autoconnect/autoconnect.pp new file mode 100644 index 0000000000..8cfef65e91 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/autoconnect/autoconnect.pp @@ -0,0 +1,41 @@ +program autoconnect; + +{$apptype arm9} +{$define ARM9} + +{$mode objfpc} + + +uses + ctypes, nds9, dswifi9; + + +var + ip, gateway, mask, dns1, dns2: in_addr; + +begin + + consoleDemoInit(); //setup the sub screen for printing + + iprintf(#10#10#9'Simple Wifi Connection Demo'#10#10); + iprintf('Connecting via WFC data ...'#10); + + if not Wifi_InitDefault(WFC_CONNECT) then + iprintf('Failed to connect!') + else + begin + iprintf('Connected'#10#10); + + ip := in_addr(Wifi_GetIPInfo(@gateway, @mask, @dns1, @dns2)); + + iprintf('ip : %s'#10, inet_ntoa(ip)); + iprintf('gateway: %s'#10, inet_ntoa(gateway)); + iprintf('mask : %s'#10, inet_ntoa(mask)); + iprintf('dns1 : %s'#10, inet_ntoa(dns1)); + iprintf('dns2 : %s'#10, inet_ntoa(dns2)); + end; + + while true do + swiWaitForVBlank(); +end. + diff --git a/packages/libndsfpc/examples/dswifi/httpget/Makefile b/packages/libndsfpc/examples/dswifi/httpget/Makefile new file mode 100644 index 0000000000..5e4d764a90 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/httpget/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=httpget +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/dswifi/httpget/Makefile.fpc b/packages/libndsfpc/examples/dswifi/httpget/Makefile.fpc new file mode 100644 index 0000000000..a2bad1406f --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/httpget/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=httpget + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/dswifi/httpget/httpget.pp b/packages/libndsfpc/examples/dswifi/httpget/httpget.pp new file mode 100644 index 0000000000..dcd5126936 --- /dev/null +++ b/packages/libndsfpc/examples/dswifi/httpget/httpget.pp @@ -0,0 +1,73 @@ +program httpget; + +{$mode objfpc} + +uses + ctypes, nds9, dswifi9; + +procedure getHttp(url: pchar); +const + // store the HTTP request for later + request_text = 'GET /dswifi/example1.php HTTP/1.1\r\n' + 'Host: www.akkit.org\r\n' + 'User-Agent: Nintendo DS\r\n\r\n'; +var + myhost: phostent; + my_socket: cint; + sain: sockaddr_in; + recvd_len: cint; + incoming_buffer: array [0..255] of char; +begin + // Let's send a simple HTTP request to a server and print the results! + + // Find the IP address of the server, with gethostbyname + myhost := gethostbyname(url); + iprintf('Found IP Address!'#10); + + // Create a TCP socket + my_socket := socket(AF_INET, SOCK_STREAM, 0); + iprintf('Created Socket!'#10); + + // Tell the socket to connect to the IP address we found, on port 80 (HTTP) + sain.sin_family := AF_INET; + sain.sin_port := htons(80); + sain.sin_addr.s_addr := culong(Pointer(myhost^.h_addr_list^)^); + connect(my_socket, psockaddr(@sain), sizeof(sain)); + iprintf('Connected to server!'#10); + + // send our request + send(my_socket, pchar(request_text), strlen(request_text), 0); + iprintf('Sent our request!'#10); + + // Print incoming data + iprintf('Printing incoming data:'#10); + + repeat + recvd_len := recv( my_socket, @incoming_buffer, 255, 0); + if (recvd_len > 0) then // data was received! + begin + incoming_buffer[recvd_len] := #0; // null-terminate + iprintf(incoming_buffer); + end; + until recvd_len <= 0; + + iprintf('Other side closed connection!' + #10); + shutdown(my_socket, 0); // good practice to shutdown the socket. + closesocket(my_socket); // remove the socket. +end; + +begin + consoleDemoInit(); //setup the sub screen for printing + + iprintf(#10#10#9'Simple Wifi Connection Demo'#10#10); + iprintf('Connecting via WFC data ...'#10); + + if not Wifi_InitDefault(WFC_CONNECT) then + iprintf('Failed to connect!') + else + begin + iprintf('Connected'#10#10); + getHttp('www.akkit.org'); + end; + + while true do + swiWaitForVBlank(); +end. diff --git a/packages/libndsfpc/examples/dswifi/main7.pp b/packages/libndsfpc/examples/dswifi/main7.pp deleted file mode 100644 index 342d24cf01..0000000000 --- a/packages/libndsfpc/examples/dswifi/main7.pp +++ /dev/null @@ -1,183 +0,0 @@ -program main7; - -{$apptype arm7} -{$define ARM7} - -{$mode objfpc} - -uses - ctypes, nds7, dswifi7; - -{ $include dswifi7.inc} - - -procedure startSound(sampleRate: cint; const data: pointer; bytes: cuint32; channel, vol, pan, format: cuint8); -var - snd_format: integer; -begin - if format = 1 then - snd_format := SOUND_8BIT - else - snd_format := SOUND_16BIT; - SCHANNEL_TIMER(channel)^ := SOUND_FREQ(sampleRate); - SCHANNEL_SOURCE(channel)^ := cuint32(data^); - SCHANNEL_LENGTH(channel)^ := bytes shr 2; - SCHANNEL_CR(channel)^ := SCHANNEL_ENABLE or SOUND_ONE_SHOT or SOUND_VOL(vol) or SOUND_PAN(pan) or (snd_format); -end; - -function getFreeSoundChannel(): csint; -var - i: integer; -begin - for i := 0 to 15 do - if ((SCHANNEL_CR(i)^ and SCHANNEL_ENABLE)) = 0 then - result := i; - result := -1; -end; - -var - vcount: integer; - first, tempPos: touchPosition; - lastbut: integer = -1; - -procedure VcountHandler(); -var - but: integer; - x, y, xpx, ypx, z1, z2: cuint16; -begin - but := REG_KEYXY^; - if (( (but xor lastbut) and (1 shl 6))) = 0 then - begin - tempPos := touchReadXY(); - x := tempPos.x; - y := tempPos.y; - xpx := tempPos.px; - ypx := tempPos.py; - z1 := tempPos.z1; - z2 := tempPos.z2; - end else - begin - lastbut := but; - but := but or (1 shl 6); - end; - - if ( vcount = 80 ) then - begin - first := tempPos; - end else - begin - if (abs(xpx - first.px) > 10) or (abs(ypx - first.py) > 10) or ((but and (1 shl 6)) <> 0) then - begin - but := but or (1 shl 6); - lastbut := but; - end else - begin - IPC.mailBusy := 1; - IPC.touchX := x; - IPC.touchY := y; - IPC.touchXpx := xpx; - IPC.touchYpx := ypx; - IPC.touchZ1 := z1; - IPC.touchZ2 := z2; - IPC.mailBusy := 0; - end; - end; - IPC.buttons := but; - vcount := vcount xor (80 xor 130); - SetYtrigger(vcount); -end; - -procedure VblankHandler(); -var - i: integer; - snd: PTransferSound; - chan: csint; -begin - //sound code :) - snd := IPC.soundData; - IPC.soundData := nil; - - if (snd <> nil) then - begin - for i := 0 to snd^.count - 1 do - begin - chan := getFreeSoundChannel(); - if (chan >= 0) then - begin - startSound(snd^.data[i].rate, snd^.data[i].data, snd^.data[i].len, chan, snd^.data[i].vol, snd^.data[i].pan, snd^.data[i].format); - end; - end; - end; - Wifi_Update(); -end; - -procedure arm7_synctoarm9(); -begin - // send fifo message - REG_IPC_FIFO_TX^ := $87654321; -end; - -procedure arm7_fifo(); -var - msg: cuint32; -begin - // check incoming fifo messages - msg := REG_IPC_FIFO_RX^; - if (msg = $87654321) then - Wifi_Sync(); -end; - -var - fifo_temp: cuint32; - -begin - REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_SEND_CLEAR; - - // Reset the clock if needed - rtcReset(); - - //enable sound - powerON(POWER_SOUND); - SOUND_CR^ := SOUND_ENABLE or SOUND_VOL($7F); - IPC.soundData := nil; - IPC.mailBusy := 0; - - irqInit(); - irqSet(IRQ_VBLANK, @VblankHandler); - SetYtrigger(80); - vcount := 80; - - irqSet(IRQ_VCOUNT, @VcountHandler); - irqEnable(IRQ_VBLANK or IRQ_VCOUNT); - - irqSet(IRQ_WIFI, @Wifi_Interrupt); - irqEnable(IRQ_WIFI); - - // trade some mail, to get a pointer from arm9 - while fifo_temp <> $12345678 do - begin - while (REG_IPC_FIFO_CR^ and IPC_FIFO_RECV_EMPTY) <> 0 do - swiWaitForVBlank(); - fifo_temp := REG_IPC_FIFO_RX^; - end; - - while (REG_IPC_FIFO_CR^ and IPC_FIFO_RECV_EMPTY) <> 0 do - swiWaitForVBlank(); - - fifo_temp := REG_IPC_FIFO_RX^; - - Wifi_Init(fifo_temp); - - irqSet(IRQ_FIFO_NOT_EMPTY, @arm7_fifo); - irqEnable(IRQ_FIFO_NOT_EMPTY); - REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_RECV_IRQ; - - Wifi_SetSyncHandler(@arm7_synctoarm9); - - - // Keep the ARM7 idle - while true do - swiWaitForVBlank(); -end. - - diff --git a/packages/libndsfpc/examples/dswifi/main9.pp b/packages/libndsfpc/examples/dswifi/main9.pp deleted file mode 100644 index fb11077416..0000000000 --- a/packages/libndsfpc/examples/dswifi/main9.pp +++ /dev/null @@ -1,202 +0,0 @@ -(*--------------------------------------------------------------------------------- - $Id: template.c,v 1.4 2005/09/17 23:15:13 wntrmute Exp $ - - Basic Hello World - - $Log: template.c,v $ - Revision 1.4 2005/09/17 23:15:13 wntrmute - corrected iprintAt in templates - - Revision 1.3 2005/09/05 00:32:20 wntrmute - removed references to IPC struct - replaced with API functions - - Revision 1.2 2005/08/31 01:24:21 wntrmute - updated for new stdio support - - Revision 1.1 2005/08/03 06:29:56 wntrmute - added templates - - ----------------------------------------------------------------------------------*) -program main9; - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - - -uses - ctypes, nds9, dswifi9; - -{ $include dswifi9.inc} -{ $include socket.inc} -{ $include in.inc} -{ $include netdb.inc} - -//--------------------------------------------------------------------------------- -// Dswifi helper functions - -// wifi timer function, to update internals of sgIP -procedure Timer_50ms(); -begin - Wifi_Timer(50); -end; - -// notification function to send fifo message to arm7 -procedure arm9_synctoarm7(); -begin -// send fifo message - REG_IPC_FIFO_TX^ := $87654321; -end; - -// interrupt handler to receive fifo messages from arm7 -procedure arm9_fifo(); -var - value: cuint32; -begin - // check incoming fifo messages - value := REG_IPC_FIFO_RX^; - if value = $87654321 then - Wifi_Sync(); -end; - -procedure vblank_irq_handler(); -begin - Wifi_Update(); -end; - -var - Wifi_pass: cuint32; - i: integer; - myhost: PHostent; - my_socket: cint; - sain: sockaddr_in; - recvd_len: cint; - incoming_buffer: array [0..255] of char; - -const - request_text = - 'GET /dswifi/example1.php HTTP/1.1'#13#10 + - 'Host: www.akkit.org'#13#10 + - 'User-Agent: Nintendo DS'#13#10 +#13#10; - - -begin - videoSetMode(0); //not using the main screen - videoSetModeSub(MODE_0_2D or DISPLAY_BG0_ACTIVE); //sub bg 0 will be used to print text - vramSetBankC(VRAM_C_SUB_BG); - - SUB_BG0_CR^ := BG_MAP_BASE(31); - BG_PALETTE_SUB[255] := RGB15(31,31,31); //by default font will be rendered with color 255 - - //consoleInit() is a lot more flexible but this gets you up and running quick - consoleInitDefault(pcuint16(SCREEN_BASE_BLOCK_SUB(31)), pcuint16(CHAR_BASE_BLOCK_SUB(0)), 16); - iprintf(#10+#10+#9+'Hello World!' + #10); - - // send fifo message to initialize the arm7 wifi - REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_SEND_CLEAR; // enable & clear FIFO - - Wifi_pass := Wifi_Init(WIFIINIT_OPTION_USELED); - REG_IPC_FIFO_TX^ := $12345678; - REG_IPC_FIFO_TX^ := Wifi_pass; - - TIMER3_CR^ := 0; // disable timer3 - - irqInit(); - irqSet(IRQ_VBLANK, @vblank_irq_handler); - irqSet(IRQ_TIMER3, @Timer_50ms); // setup timer IRQ - irqEnable(IRQ_VBLANK or IRQ_TIMER3); - - irqSet(IRQ_FIFO_NOT_EMPTY, @arm9_fifo); // setup fifo IRQ - irqEnable(IRQ_FIFO_NOT_EMPTY); - - REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_RECV_IRQ; // enable FIFO IRQ - - Wifi_SetSyncHandler(@arm9_synctoarm7); // tell wifi lib to use our handler to notify arm7 - - // set timer3 - //TIMER3_DATA^ := -6553; // 6553.1 * 256 cycles = ~50ms; - TIMER3_DATA^ := TIMER_FREQ_256(1000 div 50); - TIMER0_CR^ := TIMER_ENABLE or TIMER_DIV_256 or TIMER_IRQ_REQ; // enable, irq, 1/256 clock - - while (Wifi_CheckInit() = 0) do // wait for arm7 to be initted successfully - begin - // wait for vblank - swiWaitForVBlank(); - end; - // wifi init complete - wifi lib can now be used! - - iprintf('Connecting via WFC data' + #10); - - // simple WFC connect: - Wifi_AutoConnect(); // request connect - - while true do - begin - i := Wifi_AssocStatus(); // check status - if (i = cint(ASSOCSTATUS_ASSOCIATED)) then - begin - iprintf('Connected successfully!' + #10); - break; - end; - if (i = cint(ASSOCSTATUS_CANNOTCONNECT)) then - begin - iprintf('Could not connect!' +#10); - while true do; - break; - end; - end; - // if connected, you can now use the berkley sockets interface to connect to the internet! - - ////////////////////////////////////////////////////////////////////////// - // Let's send a simple HTTP request to a server and print the results! - // store the HTTP request for later - // Find the IP address of the server, with gethostbyname - myhost := gethostbyname('www.akkit.org'); - iprintf('Found IP Address!' + #10); - - // Create a TCP socket - my_socket := socket( AF_INET, SOCK_STREAM, 0 ); - iprintf('Created Socket!' + #10); - - // Tell the socket to connect to the IP address we found, on port 80 (HTTP) - sain.sin_family := AF_INET; - sain.sin_port := htons(80); - - sain.sin_addr.s_addr := culong(Pointer(myhost^.h_addr_list^)^); - - iprintf(#10 + 'Accepted %d.%d.%d.%d:%d' + #10, [sain.sin_addr.s_addr and $FF, - (sain.sin_addr.s_addr shr 8) and $FF, - (sain.sin_addr.s_addr shr 16) and $FF, - (sain.sin_addr.s_addr shr 24) and $FF, - ntohs(sain.sin_port)]); - - connect(my_socket, psockaddr(@sain), sizeof(sain)); - iprintf('Connected to server!' + #10); - - // send our request - send(my_socket, pchar(request_text), strlen(request_text), 0); - iprintf('Sent our request!' + #10); - - // Print incoming data - iprintf('Printing incoming data:' + #10); - - - repeat - recvd_len := recv( my_socket, @incoming_buffer, 255, 0 ) ; - // if recv returns 0, the socket has been closed. - if (recvd_len > 0) then // data was received! - begin - incoming_buffer[recvd_len] := #0; // null-terminate - iprintf(incoming_buffer); - end; - until recvd_len <= 0; - - iprintf('Other side closed connection!' + #10); - shutdown(my_socket, 0); // good practice to shutdown the socket. - closesocket(my_socket); // remove the socket. - - while true do; -end. diff --git a/packages/libndsfpc/examples/filesystem/Makefile b/packages/libndsfpc/examples/filesystem/Makefile new file mode 100644 index 0000000000..fc6c89ff06 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/Makefile @@ -0,0 +1,1483 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=embedded_gbfs libfat +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_EMBEDDED_GBFS=1 +TARGET_DIRS_LIBFAT=1 +endif +ifdef TARGET_DIRS_EMBEDDED_GBFS +embedded_gbfs_all: + $(MAKE) -C embedded_gbfs all +embedded_gbfs_debug: + $(MAKE) -C embedded_gbfs debug +embedded_gbfs_smart: + $(MAKE) -C embedded_gbfs smart +embedded_gbfs_release: + $(MAKE) -C embedded_gbfs release +embedded_gbfs_units: + $(MAKE) -C embedded_gbfs units +embedded_gbfs_examples: + $(MAKE) -C embedded_gbfs examples +embedded_gbfs_shared: + $(MAKE) -C embedded_gbfs shared +embedded_gbfs_install: + $(MAKE) -C embedded_gbfs install +embedded_gbfs_sourceinstall: + $(MAKE) -C embedded_gbfs sourceinstall +embedded_gbfs_exampleinstall: + $(MAKE) -C embedded_gbfs exampleinstall +embedded_gbfs_distinstall: + $(MAKE) -C embedded_gbfs distinstall +embedded_gbfs_zipinstall: + $(MAKE) -C embedded_gbfs zipinstall +embedded_gbfs_zipsourceinstall: + $(MAKE) -C embedded_gbfs zipsourceinstall +embedded_gbfs_zipexampleinstall: + $(MAKE) -C embedded_gbfs zipexampleinstall +embedded_gbfs_zipdistinstall: + $(MAKE) -C embedded_gbfs zipdistinstall +embedded_gbfs_clean: + $(MAKE) -C embedded_gbfs clean +embedded_gbfs_distclean: + $(MAKE) -C embedded_gbfs distclean +embedded_gbfs_cleanall: + $(MAKE) -C embedded_gbfs cleanall +embedded_gbfs_info: + $(MAKE) -C embedded_gbfs info +embedded_gbfs_makefiles: + $(MAKE) -C embedded_gbfs makefiles +embedded_gbfs: + $(MAKE) -C embedded_gbfs all +.PHONY: embedded_gbfs_all embedded_gbfs_debug embedded_gbfs_smart embedded_gbfs_release embedded_gbfs_units embedded_gbfs_examples embedded_gbfs_shared embedded_gbfs_install embedded_gbfs_sourceinstall embedded_gbfs_exampleinstall embedded_gbfs_distinstall embedded_gbfs_zipinstall embedded_gbfs_zipsourceinstall embedded_gbfs_zipexampleinstall embedded_gbfs_zipdistinstall embedded_gbfs_clean embedded_gbfs_distclean embedded_gbfs_cleanall embedded_gbfs_info embedded_gbfs_makefiles embedded_gbfs +endif +ifdef TARGET_DIRS_LIBFAT +libfat_all: + $(MAKE) -C libfat all +libfat_debug: + $(MAKE) -C libfat debug +libfat_smart: + $(MAKE) -C libfat smart +libfat_release: + $(MAKE) -C libfat release +libfat_units: + $(MAKE) -C libfat units +libfat_examples: + $(MAKE) -C libfat examples +libfat_shared: + $(MAKE) -C libfat shared +libfat_install: + $(MAKE) -C libfat install +libfat_sourceinstall: + $(MAKE) -C libfat sourceinstall +libfat_exampleinstall: + $(MAKE) -C libfat exampleinstall +libfat_distinstall: + $(MAKE) -C libfat distinstall +libfat_zipinstall: + $(MAKE) -C libfat zipinstall +libfat_zipsourceinstall: + $(MAKE) -C libfat zipsourceinstall +libfat_zipexampleinstall: + $(MAKE) -C libfat zipexampleinstall +libfat_zipdistinstall: + $(MAKE) -C libfat zipdistinstall +libfat_clean: + $(MAKE) -C libfat clean +libfat_distclean: + $(MAKE) -C libfat distclean +libfat_cleanall: + $(MAKE) -C libfat cleanall +libfat_info: + $(MAKE) -C libfat info +libfat_makefiles: + $(MAKE) -C libfat makefiles +libfat: + $(MAKE) -C libfat all +.PHONY: libfat_all libfat_debug libfat_smart libfat_release libfat_units libfat_examples libfat_shared libfat_install libfat_sourceinstall libfat_exampleinstall libfat_distinstall libfat_zipinstall libfat_zipsourceinstall libfat_zipexampleinstall libfat_zipdistinstall libfat_clean libfat_distclean libfat_cleanall libfat_info libfat_makefiles libfat +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/filesystem/Makefile.fpc b/packages/libndsfpc/examples/filesystem/Makefile.fpc new file mode 100644 index 0000000000..ed3b2b181e --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=embedded_gbfs libfat + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/Mud.pcx b/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/Mud.pcx new file mode 100644 index 0000000000..a12203ed4a Binary files /dev/null and b/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/Mud.pcx differ diff --git a/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/World.txt b/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/World.txt new file mode 100644 index 0000000000..68682807c3 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/World.txt @@ -0,0 +1,160 @@ + +NUMPOLYS 36 + +// Floor 1 +-3.0 0.0 -3.0 0.0 6.0 +-3.0 0.0 3.0 0.0 0.0 + 3.0 0.0 3.0 6.0 0.0 + +-3.0 0.0 -3.0 0.0 6.0 + 3.0 0.0 -3.0 6.0 6.0 + 3.0 0.0 3.0 6.0 0.0 + +// Ceiling 1 +-3.0 1.0 -3.0 0.0 6.0 +-3.0 1.0 3.0 0.0 0.0 + 3.0 1.0 3.0 6.0 0.0 +-3.0 1.0 -3.0 0.0 6.0 + 3.0 1.0 -3.0 6.0 6.0 + 3.0 1.0 3.0 6.0 0.0 + +// A1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-0.5 0.0 -2.0 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-0.5 1.0 -2.0 1.5 1.0 +-0.5 0.0 -2.0 1.5 0.0 + +// A2 + + 2.0 1.0 -2.0 2.0 1.0 + 2.0 0.0 -2.0 2.0 0.0 + 0.5 0.0 -2.0 0.5 0.0 + 2.0 1.0 -2.0 2.0 1.0 + 0.5 1.0 -2.0 0.5 1.0 + 0.5 0.0 -2.0 0.5 0.0 + +// B1 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-0.5 0.0 2.0 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-0.5 1.0 2.0 0.5 1.0 +-0.5 0.0 2.0 0.5 0.0 + +// B2 + + 2.0 1.0 2.0 2.0 1.0 + 2.0 0.0 2.0 2.0 0.0 + 0.5 0.0 2.0 0.5 0.0 + 2.0 1.0 2.0 2.0 1.0 + 0.5 1.0 2.0 0.5 1.0 + 0.5 0.0 2.0 0.5 0.0 + +// C1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-2.0 0.0 -0.5 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-2.0 1.0 -0.5 1.5 1.0 +-2.0 0.0 -0.5 1.5 0.0 + +// C2 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-2.0 0.0 0.5 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-2.0 1.0 0.5 0.5 1.0 +-2.0 0.0 0.5 0.5 0.0 + +// D1 + +2.0 1.0 -2.0 0.0 1.0 +2.0 0.0 -2.0 0.0 0.0 +2.0 0.0 -0.5 1.5 0.0 +2.0 1.0 -2.0 0.0 1.0 +2.0 1.0 -0.5 1.5 1.0 +2.0 0.0 -0.5 1.5 0.0 + +// D2 + +2.0 1.0 2.0 2.0 1.0 +2.0 0.0 2.0 2.0 0.0 +2.0 0.0 0.5 0.5 0.0 +2.0 1.0 2.0 2.0 1.0 +2.0 1.0 0.5 0.5 1.0 +2.0 0.0 0.5 0.5 0.0 + +// Upper hallway - L +-0.5 1.0 -3.0 0.0 1.0 +-0.5 0.0 -3.0 0.0 0.0 +-0.5 0.0 -2.0 1.0 0.0 +-0.5 1.0 -3.0 0.0 1.0 +-0.5 1.0 -2.0 1.0 1.0 +-0.5 0.0 -2.0 1.0 0.0 + +// Upper hallway - R +0.5 1.0 -3.0 0.0 1.0 +0.5 0.0 -3.0 0.0 0.0 +0.5 0.0 -2.0 1.0 0.0 +0.5 1.0 -3.0 0.0 1.0 +0.5 1.0 -2.0 1.0 1.0 +0.5 0.0 -2.0 1.0 0.0 + +// Lower hallway - L +-0.5 1.0 3.0 0.0 1.0 +-0.5 0.0 3.0 0.0 0.0 +-0.5 0.0 2.0 1.0 0.0 +-0.5 1.0 3.0 0.0 1.0 +-0.5 1.0 2.0 1.0 1.0 +-0.5 0.0 2.0 1.0 0.0 + +// Lower hallway - R +0.5 1.0 3.0 0.0 1.0 +0.5 0.0 3.0 0.0 0.0 +0.5 0.0 2.0 1.0 0.0 +0.5 1.0 3.0 0.0 1.0 +0.5 1.0 2.0 1.0 1.0 +0.5 0.0 2.0 1.0 0.0 + + +// Left hallway - Lw + +-3.0 1.0 0.5 1.0 1.0 +-3.0 0.0 0.5 1.0 0.0 +-2.0 0.0 0.5 0.0 0.0 +-3.0 1.0 0.5 1.0 1.0 +-2.0 1.0 0.5 0.0 1.0 +-2.0 0.0 0.5 0.0 0.0 + +// Left hallway - Hi + +-3.0 1.0 -0.5 1.0 1.0 +-3.0 0.0 -0.5 1.0 0.0 +-2.0 0.0 -0.5 0.0 0.0 +-3.0 1.0 -0.5 1.0 1.0 +-2.0 1.0 -0.5 0.0 1.0 +-2.0 0.0 -0.5 0.0 0.0 + +// Right hallway - Lw + +3.0 1.0 0.5 1.0 1.0 +3.0 0.0 0.5 1.0 0.0 +2.0 0.0 0.5 0.0 0.0 +3.0 1.0 0.5 1.0 1.0 +2.0 1.0 0.5 0.0 1.0 +2.0 0.0 0.5 0.0 0.0 + +// Right hallway - Hi + +3.0 1.0 -0.5 1.0 1.0 +3.0 0.0 -0.5 1.0 0.0 +2.0 0.0 -0.5 0.0 0.0 +3.0 1.0 -0.5 1.0 1.0 +2.0 1.0 -0.5 0.0 1.0 +2.0 0.0 -0.5 0.0 0.0 diff --git a/packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile b/packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile new file mode 100644 index 0000000000..c3ee49566d --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile @@ -0,0 +1,1668 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=embedded_gbfs +endif +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_LOADERS+=data.gbfs +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +.PHONY: fpc_loaders +ifneq ($(TARGET_LOADERS),) +override ALLTARGET+=fpc_loaders +override CLEANTARGET+=fpc_loaders_clean +override INSTALLTARGET+=fpc_loaders_install +override LOADEROFILES:=$(addsuffix $(OEXT),$(TARGET_LOADERS)) +endif +%$(OEXT): %$(LOADEREXT) +ifdef COMPILER_UNITTARGETDIR + $(AS) -o $(COMPILER_UNITTARGETDIR)/$*$(OEXT) $< +else + $(AS) -o $*$(OEXT) $< +endif +fpc_loaders: $(COMPILER_UNITTARGETDIR) $(LOADEROFILES) +fpc_loaders_clean: +ifdef COMPILER_UNITTARGETDIR + -$(DEL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) +else + -$(DEL) $(LOADEROFILES) +endif +fpc_loaders_install: + $(MKDIR) $(INSTALL_UNITDIR) +ifdef COMPILER_UNITTARGETDIR + $(INSTALL) $(addprefix $(COMPILER_UNITTARGETDIR)/,$(LOADEROFILES)) $(INSTALL_UNITDIR) +else + $(INSTALL) $(LOADEROFILES) $(INSTALL_UNITDIR) +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 diff --git a/packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile.fpc b/packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile.fpc new file mode 100644 index 0000000000..bb2a5213b4 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/embedded_gbfs/Makefile.fpc @@ -0,0 +1,103 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= data.gbfs +programs=embedded_gbfs + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) +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 + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 + diff --git a/packages/libndsfpc/examples/filesystem/embedded_gbfs/embedded_gbfs.pp b/packages/libndsfpc/examples/filesystem/embedded_gbfs/embedded_gbfs.pp new file mode 100644 index 0000000000..5c1d3461d9 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/embedded_gbfs/embedded_gbfs.pp @@ -0,0 +1,308 @@ +program embedded_gbfs; +{$L build/data.gbfs.o} +uses + ctypes, nds9, gbfs; + +var + data_gbfs: GBFS_FILE; cvar; external; + +const + piover180: cfloat = 0.0174532925; + +var + heading: cfloat; + xpos: cfloat; + zpos: cfloat; + yrot: cfloat; // Y Rotation + walkbias: cfloat = 0.0; + walkbiasangle: cfloat = 0.0; + lookupdown: cfloat = 0.0; + + texture: array [0..2] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) + +type + tagVERTEX = record + x, y, z: cfloat; + u, v: cfloat; + end; + VERTEX = tagVERTEX; + + tagTRIANGLE = record + vertex: array [0..2] of VERTEX; + end; + TRIANGLE = tagTRIANGLE; + TTriangle = TRIANGLE; + PTriangle = ^TRIANGLE; + + tagSECTOR = record + numtriangles: integer; + triangle: PTRIANGLE; + end; + SECTOR = tagSECTOR; + +var + sector1: SECTOR; // Our Model Goes Here: + + +function DrawGLScene(): boolean; +var + x_m, y_m, z_m: cfloat; + u_m, v_m: cfloat; + xtrans, ztrans, ytrans: cfloat; + sceneroty: cfloat; + numtriangles: integer; + loop_m: integer; +begin + // Reset The View + xtrans := -xpos; + ztrans := -zpos; + ytrans := -walkbias - 0.25; + sceneroty := 360.0 - yrot; + + glLoadIdentity(); + + glRotatef(lookupdown,1.0,0,0); + glRotatef(sceneroty,0,1.0,0); + + glTranslatef(xtrans, ytrans, ztrans); + glBindTexture(GL_TEXTURE_2D, texture[0]); + + numtriangles := sector1.numtriangles; + + + // Process Each Triangle + for loop_m := 0 to numtriangles - 1 do + begin + glBegin(GL_TRIANGLES); + glNormal3f( 0.0, 0.0, 1.0); + x_m := sector1.triangle[loop_m].vertex[0].x; + y_m := sector1.triangle[loop_m].vertex[0].y; + z_m := sector1.triangle[loop_m].vertex[0].z; + u_m := sector1.triangle[loop_m].vertex[0].u; + v_m := sector1.triangle[loop_m].vertex[0].v; + glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[1].x; + y_m := sector1.triangle[loop_m].vertex[1].y; + z_m := sector1.triangle[loop_m].vertex[1].z; + u_m := sector1.triangle[loop_m].vertex[1].u; + v_m := sector1.triangle[loop_m].vertex[1].v; + glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[2].x; + y_m := sector1.triangle[loop_m].vertex[2].y; + z_m := sector1.triangle[loop_m].vertex[2].z; + u_m := sector1.triangle[loop_m].vertex[2].u; + v_m := sector1.triangle[loop_m].vertex[2].v; + glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); + glEnd(); + end; + DrawGLScene := true; // Everything Went OK +end; + +function tsin(angle: cfloat): cfloat; +var + s: cint32; +begin + s := sinLerp(trunc((angle * DEGREES_IN_CIRCLE) / 360.0)); + + tsin := f32tofloat(s); +end; + +function tcos(angle: cfloat): cfloat; +var + c: cint32; +begin + c := cosLerp(trunc((angle * DEGREES_IN_CIRCLE) / 360.0)); + + tcos := f32tofloat(c); +end; + +var + Myfile: pchar; + + +procedure myGetStr(buff: pchar; size: integer); +begin + buff^ := Myfile^; + inc(MyFile); + + while (buff^ <> #10) and (buff^ <> #13) do + begin + inc(buff); + buff^ := Myfile^; + inc(MyFile); + end; + + buff[0] := #10; + buff[1] := #0; +end; + +procedure readstr(str: pchar); +begin + repeat + myGetStr(str, 255); + until ((str[0] <> '/') and (str[0] <> #10)); +end; + +//--------------------------------------------------------------------------------- +procedure SetupWorld(); +var + x, y, z, u, v: cfloat; + numtriangles: integer; + oneline: array [0..254] of char; + loop, vert: integer; +begin + Myfile := gbfs_get_obj(@data_gbfs, 'World.txt', nil); + + readstr(oneline); + sscanf(oneline, 'NUMPOLYS %d'#10, @numtriangles); + + GetMem(sector1.triangle, numtriangles * sizeof(TRIANGLE)); + sector1.numtriangles := numtriangles; + + for loop := 0 to numtriangles - 1 do + begin + for vert := 0 to 2 do + begin + readstr(oneline); + sscanf(oneline, '%f %f %f %f %f', @x, @y, @z, @u, @v); + sector1.triangle[loop].vertex[vert].x := x; + sector1.triangle[loop].vertex[vert].y := y; + sector1.triangle[loop].vertex[vert].z := z; + sector1.triangle[loop].vertex[vert].u := u; + sector1.triangle[loop].vertex[vert].v := v; + end; + end; +end; + +// Load PCX files And Convert To Textures +function LoadGLTextures(): boolean; +var + pcx: sImage; + pcx_file: pchar; +begin + //load our texture + pcx_file := gbfs_get_obj(@data_gbfs, 'Mud.pcx', nil); + loadPCX(pcuint8(pcx_file), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD or GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T, pcx.image.data8); + + imageDestroy(@pcx); + + LoadGLTextures := true; +end; + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // Reset the screen and setup the view + glInit(); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + + + // enable textures + glEnable(GL_TEXTURE_2D); + + //setup the projection matrix + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //setup a light + glLight(0, RGB15(31,31,31), 0, floattov10(-1.0), 0); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + // Specify the Clear Color and Depth + glClearColor(0,0,0,31); + glClearDepth($7FFF); + + // specify the color for vertices + glColor3f(1,1,1); + + LoadGLTextures(); + SetupWorld(); + + while true do + begin + //these little button functions are pretty handy + scanKeys(); + + if (keysHeld() and KEY_A) <> 0 then lookupdown := lookupdown - 1.0; + + if (keysHeld() and KEY_B) <> 0 then lookupdown := lookupdown + 1.0; + + if (keysHeld() and KEY_LEFT) <> 0 then + begin + heading := heading + 1.0; + yrot := heading; + end; + + if (keysHeld() and KEY_RIGHT) <> 0 then + begin + heading := heading - 1.0; + yrot := heading; + end; + + if (keysHeld() and KEY_DOWN) <> 0 then + begin + xpos := xpos + (tsin(heading)) * 0.05; + zpos := zpos + (tcos(heading)) * 0.05; + if (walkbiasangle >= 359.0) then + walkbiasangle := 0.0 + else + walkbiasangle:= walkbiasangle+10; + + walkbias := tsin(walkbiasangle) / 20.0; + end; + + if (keysHeld() and KEY_UP) <> 0 then + begin + xpos := xpos - (tsin(heading)) * 0.05; + zpos := zpos - (tcos(heading)) * 0.05; + + if (walkbiasangle <= 1.0) then + walkbiasangle := 359.0 + else + walkbiasangle := walkbiasangle- 10; + + walkbias := tsin(walkbiasangle) / 20.0; + end; + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + DrawGLScene(); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + // flush to screen + glFlush(0); + + end; + +end. diff --git a/packages/libndsfpc/examples/filesystem/libfat/Makefile b/packages/libndsfpc/examples/filesystem/libfat/Makefile new file mode 100644 index 0000000000..35a71e16f7 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/Makefile @@ -0,0 +1,1483 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=access_dir access_file +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_ACCESS_DIR=1 +TARGET_DIRS_ACCESS_FILE=1 +endif +ifdef TARGET_DIRS_ACCESS_DIR +access_dir_all: + $(MAKE) -C access_dir all +access_dir_debug: + $(MAKE) -C access_dir debug +access_dir_smart: + $(MAKE) -C access_dir smart +access_dir_release: + $(MAKE) -C access_dir release +access_dir_units: + $(MAKE) -C access_dir units +access_dir_examples: + $(MAKE) -C access_dir examples +access_dir_shared: + $(MAKE) -C access_dir shared +access_dir_install: + $(MAKE) -C access_dir install +access_dir_sourceinstall: + $(MAKE) -C access_dir sourceinstall +access_dir_exampleinstall: + $(MAKE) -C access_dir exampleinstall +access_dir_distinstall: + $(MAKE) -C access_dir distinstall +access_dir_zipinstall: + $(MAKE) -C access_dir zipinstall +access_dir_zipsourceinstall: + $(MAKE) -C access_dir zipsourceinstall +access_dir_zipexampleinstall: + $(MAKE) -C access_dir zipexampleinstall +access_dir_zipdistinstall: + $(MAKE) -C access_dir zipdistinstall +access_dir_clean: + $(MAKE) -C access_dir clean +access_dir_distclean: + $(MAKE) -C access_dir distclean +access_dir_cleanall: + $(MAKE) -C access_dir cleanall +access_dir_info: + $(MAKE) -C access_dir info +access_dir_makefiles: + $(MAKE) -C access_dir makefiles +access_dir: + $(MAKE) -C access_dir all +.PHONY: access_dir_all access_dir_debug access_dir_smart access_dir_release access_dir_units access_dir_examples access_dir_shared access_dir_install access_dir_sourceinstall access_dir_exampleinstall access_dir_distinstall access_dir_zipinstall access_dir_zipsourceinstall access_dir_zipexampleinstall access_dir_zipdistinstall access_dir_clean access_dir_distclean access_dir_cleanall access_dir_info access_dir_makefiles access_dir +endif +ifdef TARGET_DIRS_ACCESS_FILE +access_file_all: + $(MAKE) -C access_file all +access_file_debug: + $(MAKE) -C access_file debug +access_file_smart: + $(MAKE) -C access_file smart +access_file_release: + $(MAKE) -C access_file release +access_file_units: + $(MAKE) -C access_file units +access_file_examples: + $(MAKE) -C access_file examples +access_file_shared: + $(MAKE) -C access_file shared +access_file_install: + $(MAKE) -C access_file install +access_file_sourceinstall: + $(MAKE) -C access_file sourceinstall +access_file_exampleinstall: + $(MAKE) -C access_file exampleinstall +access_file_distinstall: + $(MAKE) -C access_file distinstall +access_file_zipinstall: + $(MAKE) -C access_file zipinstall +access_file_zipsourceinstall: + $(MAKE) -C access_file zipsourceinstall +access_file_zipexampleinstall: + $(MAKE) -C access_file zipexampleinstall +access_file_zipdistinstall: + $(MAKE) -C access_file zipdistinstall +access_file_clean: + $(MAKE) -C access_file clean +access_file_distclean: + $(MAKE) -C access_file distclean +access_file_cleanall: + $(MAKE) -C access_file cleanall +access_file_info: + $(MAKE) -C access_file info +access_file_makefiles: + $(MAKE) -C access_file makefiles +access_file: + $(MAKE) -C access_file all +.PHONY: access_file_all access_file_debug access_file_smart access_file_release access_file_units access_file_examples access_file_shared access_file_install access_file_sourceinstall access_file_exampleinstall access_file_distinstall access_file_zipinstall access_file_zipsourceinstall access_file_zipexampleinstall access_file_zipdistinstall access_file_clean access_file_distclean access_file_cleanall access_file_info access_file_makefiles access_file +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/filesystem/libfat/Makefile.fpc b/packages/libndsfpc/examples/filesystem/libfat/Makefile.fpc new file mode 100644 index 0000000000..d1ed04cba3 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=access_dir access_file + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile b/packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile new file mode 100644 index 0000000000..53a1973f38 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile @@ -0,0 +1,1638 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=access_dir +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile.fpc b/packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile.fpc new file mode 100644 index 0000000000..e1ec58de75 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_dir/Makefile.fpc @@ -0,0 +1,103 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=access_dir + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) +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 + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 + diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_dir/access_dir.pp b/packages/libndsfpc/examples/filesystem/libfat/access_dir/access_dir.pp new file mode 100644 index 0000000000..af65fd1cc4 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_dir/access_dir.pp @@ -0,0 +1,45 @@ +program access_dir; + +{$apptype arm9} +{$mode objfpc} + +uses + nds9, fat, ctypes; + +var + i: integer; + filename: string[255]; + handle: P_FILE; + st: stat; + dir: PDIR_ITER; + + +begin + consoleDemoInit(); + + printf('fatInit()...'); + if (fatInitDefault()) then + begin + printf(#9 + 'Success' + #10); + + dir := diropen('/'); + + if (dir = nil) then + iprintf ('Unable to open the directory.'#10) + else + begin + while dirnext(dir, pchar(@filename), @st) = 0 do + begin + // st.st_mode & _IFDIR indicates a directory + if (st.st_mode and $4000) <> 0 then + iprintf ('%s: %s'#10, ' DIR', pchar(@filename)) + else + iprintf ('%s: %s'#10, 'FILE', pchar(@filename)); + end; + end; + end else + printf(#9 + 'Failure' + #10); + + while true do; + +end. diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile b/packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile new file mode 100644 index 0000000000..dbe7f0eb22 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile @@ -0,0 +1,1638 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=access_file +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile.fpc b/packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile.fpc new file mode 100644 index 0000000000..0e151809e2 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_file/Makefile.fpc @@ -0,0 +1,103 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=access_file + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) +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 + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 + diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_file/access_file.pp b/packages/libndsfpc/examples/filesystem/libfat/access_file/access_file.pp new file mode 100644 index 0000000000..49832b2715 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_file/access_file.pp @@ -0,0 +1,41 @@ +program access_file; + +{$mode objfpc} + +uses + ctypes, nds9, fat; + +var + i: integer; + size: cuint32; + text: string; + handle: P_FILE; +begin + consoleDemoInit(); + + printf('fatInit()...'); + + if (fatInitDefault()) then + begin + printf(#9 + 'Success' + #10); + + handle := fopen('/test1.txt', 'r'); + if handle = nil then + begin + printf('Cannot open file' + #10); + end else + begin + fseek(handle, 0, SEEK_END); // Go to end of file + size := ftell(handle); // Get current position in file, because it is the end it will be the size + fseek(handle, 0, SEEK_SET); // Go to begining of file + fread(@text, size, 1, handle); // Read all of file into memory + printf(@text); + fclose(handle); // Close file + end; + end else + printf(#9 + 'Failure' + #10); + + while true do; + + +end. diff --git a/packages/libndsfpc/examples/filesystem/libfat/access_file/test1.txt b/packages/libndsfpc/examples/filesystem/libfat/access_file/test1.txt new file mode 100644 index 0000000000..845b08fe32 --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/access_file/test1.txt @@ -0,0 +1,2 @@ +Hello world from test1.txt. +More text! diff --git a/packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile b/packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile new file mode 100644 index 0000000000..e7f8e180cc --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile @@ -0,0 +1,1638 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/01] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +GBFS_FILES = $(foreach dir,GBFS,$(notdir $(wildcard $(dir)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=libfatdir +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 diff --git a/packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile.fpc b/packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile.fpc new file mode 100644 index 0000000000..cd058e8b3b --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/libfatdir/Makefile.fpc @@ -0,0 +1,103 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=libfatdir + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) +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 + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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 + diff --git a/packages/libndsfpc/examples/filesystem/libfat/libfatdir/libfatdir.pp b/packages/libndsfpc/examples/filesystem/libfat/libfatdir/libfatdir.pp new file mode 100644 index 0000000000..34b30e23fc --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/libfat/libfatdir/libfatdir.pp @@ -0,0 +1,48 @@ +program libfatdir; + +uses + ctypes, nds9, fat; + + +var + MyDir: PDir; + pent: pdirent; + statbuf: Tstat; + +begin + // Initialise the console, required for printf + consoleDemoInit(); + + if (fatInitDefault()) then + begin + + + MyDir := opendir('/'); + + if (MyDir) <> nil then + begin + repeat + pent := readdir(MyDir); + _stat(pent^.d_name, statbuf); + if (strcmp('.', pent^.d_name) = 0) or (strcmp('..', pent^.d_name) = 0) then + continue; + if (S_ISDIR(statbuf.st_mode)) then + iprintf('%s '#10, pent^.d_name); + if not (S_ISDIR(statbuf.st_mode)) then + iprintf('%s %ld'#10, pent^.d_name, statbuf.st_size); + until pent = nil; + closedir(MyDir); + end else + begin + iprintf ('opendir() failure; terminating'#10); + end; + + end else + begin + iprintf('fatInitDefault failure: terminating'#10); + end; + + while true do + swiWaitForVBlank(); + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/3DBothScreens.pp b/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/3DBothScreens.pp new file mode 100644 index 0000000000..49454d5cce --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/3DBothScreens.pp @@ -0,0 +1,195 @@ +program BothScreens3D; + +uses + ctypes, nds9; + +procedure renderCube(angle: cint); +begin + glPushMatrix(); + glTranslatef(0, 0, -4); + glRotatef32i(degreesToAngle(angle), inttof32(1), inttof32(1), inttof32(1)); + + glBegin(GL_QUADS); + glColor3b(255,0,0); glVertex3f(-1.0, 1.0, 1.0); + glColor3b(0,255,0); glVertex3f( 1.0, 1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, 1.0); + glColor3b(255,255,0); glVertex3f(-1.0, -1.0, 1.0); + + glColor3b(255,0,0); glVertex3f(-1.0, 1.0, -1.0); + glColor3b(0,255,0); glVertex3f( 1.0, 1.0, -1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, -1.0); + glColor3b(255,255,0); glVertex3f(-1.0, -1.0, -1.0); + + glColor3b(255,0,0); glVertex3f(-1.0, 1.0, 1.0); + glColor3b(0,255,0); glVertex3f( 1.0, 1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0, 1.0, -1.0); + glColor3b(255,255,0); glVertex3f(-1.0, 1.0, -1.0); + + glColor3b(255,0,0); glVertex3f(-1.0, -1.0, 1.0); + glColor3b(0,255,0); glVertex3f( 1.0, -1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, -1.0); + glColor3b(255,255,0); glVertex3f(-1.0, -1.0, -1.0); + + glColor3b(255,0,0); glVertex3f( 1.0, 1.0, -1.0); + glColor3b(0,255,0); glVertex3f( 1.0, 1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0,-1.0, 1.0); + glColor3b(255,255,0); glVertex3f( 1.0,-1.0, -1.0); + + glColor3b(255,0,0); glVertex3f(-1.0, 1.0, -1.0); + glColor3b(0,255,0); glVertex3f(-1.0, 1.0, 1.0); + glColor3b(0,0,255); glVertex3f(-1.0,-1.0, 1.0); + glColor3b(255,255,0); glVertex3f(-1.0,-1.0, -1.0); + + glEnd(); + + glPopMatrix(1); +end; + + +procedure renderPyramid(angle: cint); +begin + glPushMatrix(); + glTranslatef(0, 0, -4); + glRotatef32i(degreesToAngle(angle), inttof32(1),inttof32(1),inttof32(1)); + + glBegin(GL_QUADS); + glColor3b(255,0,0); glVertex3f(-1.0, -1.0, 1.0); + glColor3b(0,255,0); glVertex3f( 1.0, -1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, -1.0); + glColor3b(255,255,0); glVertex3f(-1.0, -1.0, -1.0); + glEnd(); + + glBegin(GL_TRIANGLES); + glColor3b(255,0,0); glVertex3f( 0.0, 1.0, 0.0); + glColor3b(0,255,0); glVertex3f(-1.0, -1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, 1.0); + + glColor3b(255,0,0); glVertex3f( 0.0, 1.0, 0.0); + glColor3b(0,255,0); glVertex3f(-1.0, -1.0, -1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, -1.0); + + glColor3b(255,0,0); glVertex3f( 0.0, 1.0, 0.0); + glColor3b(0,255,0); glVertex3f(-1.0, -1.0, 1.0); + glColor3b(0,0,255); glVertex3f(-1.0, -1.0, -1.0); + + glColor3b(255,0,0); glVertex3f( 0.0, 1.0, 0.0); + glColor3b(0,255,0); glVertex3f( 1.0, -1.0, 1.0); + glColor3b(0,0,255); glVertex3f( 1.0, -1.0, -1.0); + glEnd(); + + glPopMatrix(1); +end; + +var + angle: cshort = 0; + +procedure renderScene(top: boolean); +begin + if (top) then + renderCube(angle) + else + renderPyramid(angle); + + inc(angle); +end; + + +//------------------------------------------------------- +// set up a 2D layer construced of bitmap sprites +// this holds the image when rendering to the top screen +//------------------------------------------------------- +procedure initSubSprites(); +var + x: integer; + y: integer; + offset: pcuint16; +begin + oamInit(oamSub, SpriteMapping_Bmp_2D_256, false); + + x := 0; + y := 0; + + //set up a 4x3 grid of 64x64 sprites to cover the screen + for y := 0 to 2 do + for x := 0 to 3 do + begin + offset := pcuint16(@SPRITE_GFX_SUB[(x * 64) + (y * 64 * 256)]); + oamSet(oamSub, x + y * 4, x * 64, y * 64, 0, 15, SpriteSize_64x64, + SpriteColorFormat_Bmp, offset, -1, false,false,false,false,false); + end; + + swiWaitForVBlank(); + + oamUpdate(oamSub); +end; + +var + top: boolean = true; + +begin + videoSetMode(MODE_0_3D); + videoSetModeSub(MODE_5_2D); + + glInit(); + + // sub sprites hold the bottom image when 3D directed to top + initSubSprites(); + + // sub background holds the top image when 3D directed to bottom + bgInitSub(3, BgType_Bmp16, BgSize_B16_256x256, 0, 0); + +//------------------------------------------------------- +// Setup gl +//------------------------------------------------------- + glEnable(GL_ANTIALIAS); + + glClearColor(0,0,0,31); + glClearPolyID(63); + glClearDepth($7FFF); + + glViewport(0,0,255,191); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + +//------------------------------------------------------- +// main loop +//------------------------------------------------------- + + while true do + begin + // wait for capture unit to be ready + while (REG_DISPCAPCNT^ and DCAP_ENABLE) <> 0 do; + + //------------------------------------------------------- + // Switch render targets + //------------------------------------------------------- + top := not top; + + if (top) then + begin + lcdMainOnBottom(); + vramSetBankC(VRAM_C_LCD); + vramSetBankD(VRAM_D_SUB_SPRITE); + REG_DISPCAPCNT^ := DCAP_BANK(2) or DCAP_ENABLE or DCAP_SIZE(3); + end else + begin + lcdMainOnTop(); + vramSetBankD(VRAM_D_LCD); + vramSetBankC(VRAM_C_SUB_BG); + REG_DISPCAPCNT^ := DCAP_BANK(3) or DCAP_ENABLE or DCAP_SIZE(3); + end; + + //------------------------------------------------------- + // Render the scene + //------------------------------------------------------- + glMatrixMode(GL_MODELVIEW); + + renderScene(top); + + glFlush(0); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile b/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile new file mode 100644 index 0000000000..54e7539f18 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=3DBothScreens +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm #-d__THUMB__ +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile.fpc new file mode 100644 index 0000000000..041aecf2e2 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/3D_Both_Screens/Makefile.fpc @@ -0,0 +1,92 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=3DBothScreens + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm #-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/BoxTest/BoxTest.pp b/packages/libndsfpc/examples/graphics/3D/BoxTest/BoxTest.pp new file mode 100644 index 0000000000..c84dcb461c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/BoxTest/BoxTest.pp @@ -0,0 +1,232 @@ +program Box_Test; + +uses + ctypes, nds9; + + +function startTimer(timer: integer): cuint16; +begin + TIMER_CR(timer)^ := 0; + TIMER_DATA(0)^ := 0; + TIMER_CR(timer)^ := TIMER_DIV_1 or TIMER_ENABLE; + startTimer := TIMER_DATA(0)^; +end; + + +function getTimer(timer: integer): cuint16; inline; +begin + getTimer := TIMER_DATA(timer)^; +end; + +//--------------------------------------------------------------------------------- +//draws a box...same signature as boxTest +//--------------------------------------------------------------------------------- +procedure DrawBox(x, y, z, width, height, depth: cfloat); +begin + glBegin(GL_QUADS); + //z face + glColor3f(1,0,0); + glVertex3f(x , y , z ); + glVertex3f(x + width, y , z ); + glVertex3f(x + width, y + height, z ); + glVertex3f(x , y + height, z ); + + //z + depth face + glColor3f(1,0,1); + glVertex3f(x , y , z + depth); + glVertex3f(x , y + height, z + depth); + glVertex3f(x + width, y + height, z + depth); + glVertex3f(x + width, y , z + depth); + + + //x face + glColor3f(1,1,0); + glVertex3f(x , y , z ); + glVertex3f(x , y + height, z ); + glVertex3f(x , y + height, z + depth); + glVertex3f(x , y , z + depth); + + //x + width face + glColor3f(1,1,1); + glVertex3f(x + width, y , z ); + glVertex3f(x + width, y , z + depth); + glVertex3f(x + width, y + height, z + depth); + glVertex3f(x + width, y + height, z ); + + //y face + glColor3f(0,1,0); + glVertex3f(x , y , z ); + glVertex3f(x , y , z + depth); + glVertex3f(x + width, y , z + depth); + glVertex3f(x + width, y , z ); + + //y + height face + glColor3f(0,1,1); + glVertex3f(x , y + height, z ); + glVertex3f(x + width, y + height, z ); + glVertex3f(x + width, y + height, z + depth); + glVertex3f(x , y + height, z + depth); + + glEnd(); + +end; + +var + touchXY: touchPosition; + + rotX: cfloat = 0; + rotY: cfloat = 0; + translate: cfloat = -5; + + //some profiling code + time: cuint16; + + //keep track of vertex ram usage + polygon_count, vertex_count: cint; + + //object + rx: integer = 50; + ry: integer = 15; + oldx: integer = 0; + oldy: integer = 0; + + held, pressed: integer; + hit: integer; + + i: integer; + +begin + //put 3D on top + lcdMainOnTop(); + + //setup the sub screen for basic printing + consoleDemoInit(); + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our view port to be the same size as the screen + glViewport(0,0,255,191); + + printf(#$1b'[10;0HPress A to change culling'); + printf(#10#10'Press B to change Ortho vs Persp'); + printf(#10'Left/Right/Up/Down to rotate'); + printf(#10'Press L and R to zoom'); + printf(#10'Touch screen to rotate cube'); + + //main loop + while true do + begin + + //process input + scanKeys(); + + touchRead(touchXY); + + + held := keysHeld(); + pressed := keysDown(); + + if( held and KEY_LEFT) <> 0 then rotY := rotY + 1; + if( held and KEY_RIGHT) <> 0 then rotY := rotY - 1; + if( held and KEY_UP) <> 0 then rotX := rotX + 1; + if( held and KEY_DOWN) <> 0 then rotX := rotX - 1; + if( held and KEY_L) <> 0 then translate := translate + 0.1; + if( held and KEY_R) <> 0 then translate := translate - 0.1; + + //reset x and y when user touches screen + if (pressed and KEY_TOUCH) <> 0 then + begin + oldx := touchXY.px; + oldy := touchXY.py; + end; + + //if user drags then grab the delta + if (held and KEY_TOUCH) <> 0 then + begin + rx := rx + (touchXY.px - oldx); + ry := ry + (touchXY.py - oldy); + oldx := touchXY.px; + oldy := touchXY.py; + end; + + + //change ortho vs perspective + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + if (keysHeld() and KEY_B) <> 0 then + glOrtho(-4,4,-3,3,0.1,10) + else + gluPerspective(70, 256.0 / 192.0, 0.1, 10); + + //change cull mode + if (held and KEY_A) <> 0 then + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE ) + else + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_FRONT ); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + + //handle camera + glRotateY(rotY); + glRotateX(rotX); + glTranslatef(0,0,translate); + + //move the cube + glRotateX(ry); + glRotateY(rx); + + DrawBox(-1,-1,-1,2,2,2); + + swiWaitForVBlank(); + printf(#$1b'[0;0HBox test cycle count'); + + time := startTimer(0); + hit := BoxTestf(-1,-1,-1,2,2,2); + printf(#10'Single test (float): %i', 2*(getTimer(0) - time)); + + time := startTimer(0); + BoxTest(inttov16(-1),inttov16(-1),inttov16(-1),inttov16(2),inttov16(2),inttov16(2)); + printf(#10'Single test (fixed): %i', 2*(getTimer(0) - time)); + + time := startTimer(0); + for i := 0 to 63 do + BoxTest(inttov16(-1),inttov16(-1),inttov16(-1),inttov16(2),inttov16(2),inttov16(2)); + + printf(#10'64 tests avg. (fixed): %i', (getTimer(0) - time) / 32); + if hit <> 0 then + printf(#10'Box Test result: hit') + else + printf(#10'Box Test result: miss'); + + while (GFX_STATUS^ and (1 shl 27)) <> 0 do; // wait until the geometry engine is not busy + + glGetInt(GL_GET_VERTEX_RAM_COUNT, vertex_count); + glGetInt(GL_GET_POLYGON_RAM_COUNT, polygon_count); + + if (held and KEY_A)<> 0 then + printf(#10#10'Ram usage: Culling none') + else + printf(#10#10'Ram usage: Culling back faces'); + + printf(#10'Vertex ram: %i', vertex_count); + printf(#10'Polygon ram: %i', polygon_count); + + // flush to the screen + glFlush(0); + + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile b/packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile new file mode 100644 index 0000000000..5ab880cf15 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=BoxTest +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm #-d__THUMB__ +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile.fpc new file mode 100644 index 0000000000..4cbd0a7de5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/BoxTest/Makefile.fpc @@ -0,0 +1,92 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=BoxTest + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm #-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List/DisplayList.pp b/packages/libndsfpc/examples/graphics/3D/Display_List/DisplayList.pp new file mode 100644 index 0000000000..bdf3068f92 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Display_List/DisplayList.pp @@ -0,0 +1,92 @@ +program DisplayList; + +uses + ctypes, nds9; + +var + triangle: array [0..12] of cuint32; // Display List + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keys: cuint16; + +procedure SetDisplayList; +begin + triangle[0] := 12; + triangle[1] := FIFO_COMMAND_PACK(FIFO_BEGIN, FIFO_COLOR, FIFO_VERTEX16, FIFO_COLOR); + triangle[2] := GL_TRIANGLE; + triangle[3] := RGB15(31,0,0); + triangle[4] := VERTEX_PACK(inttov16(-1),inttov16(-1)); + triangle[5] := VERTEX_PACK(0,0); + triangle[6] := RGB15(0,31,0); + triangle[7] := FIFO_COMMAND_PACK(FIFO_VERTEX16, FIFO_COLOR, FIFO_VERTEX16, FIFO_END); + triangle[8] := VERTEX_PACK(inttov16(1),inttov16(-1)); + triangle[9] := VERTEX_PACK(0,0); + triangle[10] := RGB15(0,0,31); + triangle[11] := VERTEX_PACK(inttov16(0),inttov16(1)); + triangle[12] := VERTEX_PACK(0,0); +end; + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + SetDisplayList; + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 1.0, //camera position + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + glPushMatrix(); + + //move it away from the camera + glTranslate3f32(0, 0, floattof32(-1.0)); + + glRotateX(rotateX); + glRotateY(rotateY); + + glMatrixMode(GL_TEXTURE); + + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + scanKeys(); + + keys := keysHeld(); + + if ((keys and KEY_UP)) <> 0 then rotateX := rotateX + 3; + if ((keys and KEY_DOWN)) <> 0 then rotateX := rotateX - 3; + if ((keys and KEY_LEFT)) <> 0 then rotateY := rotateY + 3; + if ((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY - 3; + + glCallList(@triangle); + + glPopMatrix(1); + + glFlush(0); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List/Makefile b/packages/libndsfpc/examples/graphics/3D/Display_List/Makefile new file mode 100644 index 0000000000..c216a119ab --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Display_List/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=DisplayList +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Display_List/Makefile.fpc new file mode 100644 index 0000000000..8fcea2abc2 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Display_List/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=DisplayList + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List_2/DisplayList2.pp b/packages/libndsfpc/examples/graphics/3D/Display_List_2/DisplayList2.pp new file mode 100644 index 0000000000..9d9f13ed22 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Display_List_2/DisplayList2.pp @@ -0,0 +1,73 @@ +program DisplayList2; +{$L build/teapot.bin.o} +uses + ctypes, nds9; + +//teapot display list provided by Mike260, as well as the display list gl code. +{$include inc/teapot.bin.inc} + + +var + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keys: cuint16; + + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0, 0, 0, 31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0, 0, 255, 191); + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 3.5, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + glLight(0, RGB15(31, 31, 31), 0, floattov10(-1.0), 0); + glLight(1, RGB15(31, 0, 31), 0, floattov10(1) - 1, 0); + glLight(2, RGB15( 0, 31, 0), floattov10(-1.0), 0, 0); + glLight(3, RGB15( 0, 0, 31), floattov10(1.0) - 1, 0, 0); + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or + POLY_FORMAT_LIGHT2 or POLY_FORMAT_LIGHT3); + + while true do + begin + glPushMatrix(); + + glRotateX(rotateX); + glRotateY(rotateY); + + scanKeys(); + keys := keysHeld(); + if ((keys and KEY_UP)) = 0 then rotateX := rotateX + 3; + if ((keys and KEY_DOWN)) = 0 then rotateX := rotateX - 3; + if ((keys and KEY_LEFT)) = 0 then rotateY := rotateY + 3; + if ((keys and KEY_RIGHT)) = 0 then rotateY := rotateY - 3; + + glCallList(pcuint32(@teapot_bin)); + + glPopMatrix(1); + + glFlush(0); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile b/packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile new file mode 100644 index 0000000000..a66f02f48f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=DisplayList2 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile.fpc new file mode 100644 index 0000000000..a90f66ef63 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Display_List_2/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=DisplayList2 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Display_List_2/data/teapot.bin b/packages/libndsfpc/examples/graphics/3D/Display_List_2/data/teapot.bin new file mode 100644 index 0000000000..5fb08a6ac6 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Display_List_2/data/teapot.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Env_Mapping/EnvMapping.pp b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/EnvMapping.pp new file mode 100644 index 0000000000..14bddced35 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/EnvMapping.pp @@ -0,0 +1,126 @@ +program EnvMapping; +{$L build/teapot.bin.o} +{$L build/cafe.bin.o} + +uses + ctypes, nds9; + +{$include inc/teapot.bin.inc} +{$include inc/cafe.bin.inc} + + +var + prev_pen: array [0..1] of cint = ($7FFFFFFF, $7FFFFFFF); + +procedure get_pen_delta(dx, dy: pcint); +var + keys: u32; + touchXY: touchPosition; +begin + keys := keysHeld(); + + if (keys and KEY_TOUCH) <> 0 then + begin + touchRead(touchXY); + + if (prev_pen[0] <> $7FFFFFFF) then + begin + dx^ := (prev_pen[0] - touchXY.rawx); + dy^ := (prev_pen[1] - touchXY.rawy); + end; + + prev_pen[0] := touchXY.rawx; + prev_pen[1] := touchXY.rawy; + end else + begin + prev_pen[0] := $7FFFFFFF; + prev_pen[1] := $7FFFFFFF; + dx^ := 0; + dy^ := 0; + end; +end; + + +var + rotateX: integer = 0; + rotateY: integer = 0; + tex_scale: GLvector; + keys: u32; + cafe_texid: cint; + pen_delta: array [0..1] of cint; + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // intialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + vramSetBankA(VRAM_A_TEXTURE); + glEnable(GL_TEXTURE_2D); + + glGenTextures(1, @cafe_texid); + glBindTexture(0, cafe_texid); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T or TEXGEN_NORMAL, pcuint8(@cafe_bin)); + + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + + while true do + begin + //TEXGEN_NORMAL helpfully pops our normals into this matrix and uses the result as texcoords + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + tex_scale.x := (64 shl 16); + tex_scale.y := (-64 shl 16); + tex_scale.z := (1 shl 16); + glScalev( @tex_scale ); //scale normals up from (-1,1) range into texcoords + glRotateXi(rotateX); //rotate texture-matrix to match the camera + glRotateYi(rotateY); + + glMatrixMode(GL_POSITION); + glLoadIdentity(); + glTranslate3f32(0, 0, floattof32(-3)); + glRotateXi(rotateX); + glRotateYi(rotateY); + + glMaterialf(GL_EMISSION, RGB15(31,31,31)); + + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK ); + + scanKeys(); + keys := keysHeld(); + + if ( keys and KEY_UP ) <> 0 then rotateX := rotateX + (3 shl 3); + if ( keys and KEY_DOWN ) <> 0 then rotateX := rotateX - (3 shl 3); + if ( keys and KEY_LEFT ) <> 0 then rotateY := rotateY + (3 shl 3); + if ( keys and KEY_RIGHT ) <> 0 then rotateY := rotateY - (3 shl 3); + + + get_pen_delta( @pen_delta[0], @pen_delta[1] ); + rotateY := rotateY - pen_delta[0]; + rotateX := rotateX - pen_delta[1]; + + + glBindTexture( 0, cafe_texid ); + glCallList(@teapot_bin); + + glFlush(0); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile new file mode 100644 index 0000000000..96c1ecc02d --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=EnvMapping +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile.fpc new file mode 100644 index 0000000000..530acaa9a6 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=EnvMapping + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/cafe.bin b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/cafe.bin new file mode 100644 index 0000000000..3a3dc3975f Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/cafe.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/teapot.bin b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/teapot.bin new file mode 100644 index 0000000000..423968b900 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/teapot.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Makefile b/packages/libndsfpc/examples/graphics/3D/Makefile new file mode 100644 index 0000000000..1fe5f60530 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Makefile @@ -0,0 +1,2081 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=3D_Both_Screens BoxTest Display_List Display_List_2 Env_Mapping Mixed_Text_3D Ortho Paletted_Cube Picking Simple_Quad Simple_Tri Textured_Cube Textured_Quad Toon_Shading nehe +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_3D_BOTH_SCREENS=1 +TARGET_DIRS_BOXTEST=1 +TARGET_DIRS_DISPLAY_LIST=1 +TARGET_DIRS_DISPLAY_LIST_2=1 +TARGET_DIRS_ENV_MAPPING=1 +TARGET_DIRS_MIXED_TEXT_3D=1 +TARGET_DIRS_ORTHO=1 +TARGET_DIRS_PALETTED_CUBE=1 +TARGET_DIRS_PICKING=1 +TARGET_DIRS_SIMPLE_QUAD=1 +TARGET_DIRS_SIMPLE_TRI=1 +TARGET_DIRS_TEXTURED_CUBE=1 +TARGET_DIRS_TEXTURED_QUAD=1 +TARGET_DIRS_TOON_SHADING=1 +TARGET_DIRS_NEHE=1 +endif +ifdef TARGET_DIRS_3D_BOTH_SCREENS +3D_Both_Screens_all: + $(MAKE) -C 3D_Both_Screens all +3D_Both_Screens_debug: + $(MAKE) -C 3D_Both_Screens debug +3D_Both_Screens_smart: + $(MAKE) -C 3D_Both_Screens smart +3D_Both_Screens_release: + $(MAKE) -C 3D_Both_Screens release +3D_Both_Screens_units: + $(MAKE) -C 3D_Both_Screens units +3D_Both_Screens_examples: + $(MAKE) -C 3D_Both_Screens examples +3D_Both_Screens_shared: + $(MAKE) -C 3D_Both_Screens shared +3D_Both_Screens_install: + $(MAKE) -C 3D_Both_Screens install +3D_Both_Screens_sourceinstall: + $(MAKE) -C 3D_Both_Screens sourceinstall +3D_Both_Screens_exampleinstall: + $(MAKE) -C 3D_Both_Screens exampleinstall +3D_Both_Screens_distinstall: + $(MAKE) -C 3D_Both_Screens distinstall +3D_Both_Screens_zipinstall: + $(MAKE) -C 3D_Both_Screens zipinstall +3D_Both_Screens_zipsourceinstall: + $(MAKE) -C 3D_Both_Screens zipsourceinstall +3D_Both_Screens_zipexampleinstall: + $(MAKE) -C 3D_Both_Screens zipexampleinstall +3D_Both_Screens_zipdistinstall: + $(MAKE) -C 3D_Both_Screens zipdistinstall +3D_Both_Screens_clean: + $(MAKE) -C 3D_Both_Screens clean +3D_Both_Screens_distclean: + $(MAKE) -C 3D_Both_Screens distclean +3D_Both_Screens_cleanall: + $(MAKE) -C 3D_Both_Screens cleanall +3D_Both_Screens_info: + $(MAKE) -C 3D_Both_Screens info +3D_Both_Screens_makefiles: + $(MAKE) -C 3D_Both_Screens makefiles +3D_Both_Screens: + $(MAKE) -C 3D_Both_Screens all +.PHONY: 3D_Both_Screens_all 3D_Both_Screens_debug 3D_Both_Screens_smart 3D_Both_Screens_release 3D_Both_Screens_units 3D_Both_Screens_examples 3D_Both_Screens_shared 3D_Both_Screens_install 3D_Both_Screens_sourceinstall 3D_Both_Screens_exampleinstall 3D_Both_Screens_distinstall 3D_Both_Screens_zipinstall 3D_Both_Screens_zipsourceinstall 3D_Both_Screens_zipexampleinstall 3D_Both_Screens_zipdistinstall 3D_Both_Screens_clean 3D_Both_Screens_distclean 3D_Both_Screens_cleanall 3D_Both_Screens_info 3D_Both_Screens_makefiles 3D_Both_Screens +endif +ifdef TARGET_DIRS_BOXTEST +BoxTest_all: + $(MAKE) -C BoxTest all +BoxTest_debug: + $(MAKE) -C BoxTest debug +BoxTest_smart: + $(MAKE) -C BoxTest smart +BoxTest_release: + $(MAKE) -C BoxTest release +BoxTest_units: + $(MAKE) -C BoxTest units +BoxTest_examples: + $(MAKE) -C BoxTest examples +BoxTest_shared: + $(MAKE) -C BoxTest shared +BoxTest_install: + $(MAKE) -C BoxTest install +BoxTest_sourceinstall: + $(MAKE) -C BoxTest sourceinstall +BoxTest_exampleinstall: + $(MAKE) -C BoxTest exampleinstall +BoxTest_distinstall: + $(MAKE) -C BoxTest distinstall +BoxTest_zipinstall: + $(MAKE) -C BoxTest zipinstall +BoxTest_zipsourceinstall: + $(MAKE) -C BoxTest zipsourceinstall +BoxTest_zipexampleinstall: + $(MAKE) -C BoxTest zipexampleinstall +BoxTest_zipdistinstall: + $(MAKE) -C BoxTest zipdistinstall +BoxTest_clean: + $(MAKE) -C BoxTest clean +BoxTest_distclean: + $(MAKE) -C BoxTest distclean +BoxTest_cleanall: + $(MAKE) -C BoxTest cleanall +BoxTest_info: + $(MAKE) -C BoxTest info +BoxTest_makefiles: + $(MAKE) -C BoxTest makefiles +BoxTest: + $(MAKE) -C BoxTest all +.PHONY: BoxTest_all BoxTest_debug BoxTest_smart BoxTest_release BoxTest_units BoxTest_examples BoxTest_shared BoxTest_install BoxTest_sourceinstall BoxTest_exampleinstall BoxTest_distinstall BoxTest_zipinstall BoxTest_zipsourceinstall BoxTest_zipexampleinstall BoxTest_zipdistinstall BoxTest_clean BoxTest_distclean BoxTest_cleanall BoxTest_info BoxTest_makefiles BoxTest +endif +ifdef TARGET_DIRS_DISPLAY_LIST +Display_List_all: + $(MAKE) -C Display_List all +Display_List_debug: + $(MAKE) -C Display_List debug +Display_List_smart: + $(MAKE) -C Display_List smart +Display_List_release: + $(MAKE) -C Display_List release +Display_List_units: + $(MAKE) -C Display_List units +Display_List_examples: + $(MAKE) -C Display_List examples +Display_List_shared: + $(MAKE) -C Display_List shared +Display_List_install: + $(MAKE) -C Display_List install +Display_List_sourceinstall: + $(MAKE) -C Display_List sourceinstall +Display_List_exampleinstall: + $(MAKE) -C Display_List exampleinstall +Display_List_distinstall: + $(MAKE) -C Display_List distinstall +Display_List_zipinstall: + $(MAKE) -C Display_List zipinstall +Display_List_zipsourceinstall: + $(MAKE) -C Display_List zipsourceinstall +Display_List_zipexampleinstall: + $(MAKE) -C Display_List zipexampleinstall +Display_List_zipdistinstall: + $(MAKE) -C Display_List zipdistinstall +Display_List_clean: + $(MAKE) -C Display_List clean +Display_List_distclean: + $(MAKE) -C Display_List distclean +Display_List_cleanall: + $(MAKE) -C Display_List cleanall +Display_List_info: + $(MAKE) -C Display_List info +Display_List_makefiles: + $(MAKE) -C Display_List makefiles +Display_List: + $(MAKE) -C Display_List all +.PHONY: Display_List_all Display_List_debug Display_List_smart Display_List_release Display_List_units Display_List_examples Display_List_shared Display_List_install Display_List_sourceinstall Display_List_exampleinstall Display_List_distinstall Display_List_zipinstall Display_List_zipsourceinstall Display_List_zipexampleinstall Display_List_zipdistinstall Display_List_clean Display_List_distclean Display_List_cleanall Display_List_info Display_List_makefiles Display_List +endif +ifdef TARGET_DIRS_DISPLAY_LIST_2 +Display_List_2_all: + $(MAKE) -C Display_List_2 all +Display_List_2_debug: + $(MAKE) -C Display_List_2 debug +Display_List_2_smart: + $(MAKE) -C Display_List_2 smart +Display_List_2_release: + $(MAKE) -C Display_List_2 release +Display_List_2_units: + $(MAKE) -C Display_List_2 units +Display_List_2_examples: + $(MAKE) -C Display_List_2 examples +Display_List_2_shared: + $(MAKE) -C Display_List_2 shared +Display_List_2_install: + $(MAKE) -C Display_List_2 install +Display_List_2_sourceinstall: + $(MAKE) -C Display_List_2 sourceinstall +Display_List_2_exampleinstall: + $(MAKE) -C Display_List_2 exampleinstall +Display_List_2_distinstall: + $(MAKE) -C Display_List_2 distinstall +Display_List_2_zipinstall: + $(MAKE) -C Display_List_2 zipinstall +Display_List_2_zipsourceinstall: + $(MAKE) -C Display_List_2 zipsourceinstall +Display_List_2_zipexampleinstall: + $(MAKE) -C Display_List_2 zipexampleinstall +Display_List_2_zipdistinstall: + $(MAKE) -C Display_List_2 zipdistinstall +Display_List_2_clean: + $(MAKE) -C Display_List_2 clean +Display_List_2_distclean: + $(MAKE) -C Display_List_2 distclean +Display_List_2_cleanall: + $(MAKE) -C Display_List_2 cleanall +Display_List_2_info: + $(MAKE) -C Display_List_2 info +Display_List_2_makefiles: + $(MAKE) -C Display_List_2 makefiles +Display_List_2: + $(MAKE) -C Display_List_2 all +.PHONY: Display_List_2_all Display_List_2_debug Display_List_2_smart Display_List_2_release Display_List_2_units Display_List_2_examples Display_List_2_shared Display_List_2_install Display_List_2_sourceinstall Display_List_2_exampleinstall Display_List_2_distinstall Display_List_2_zipinstall Display_List_2_zipsourceinstall Display_List_2_zipexampleinstall Display_List_2_zipdistinstall Display_List_2_clean Display_List_2_distclean Display_List_2_cleanall Display_List_2_info Display_List_2_makefiles Display_List_2 +endif +ifdef TARGET_DIRS_ENV_MAPPING +Env_Mapping_all: + $(MAKE) -C Env_Mapping all +Env_Mapping_debug: + $(MAKE) -C Env_Mapping debug +Env_Mapping_smart: + $(MAKE) -C Env_Mapping smart +Env_Mapping_release: + $(MAKE) -C Env_Mapping release +Env_Mapping_units: + $(MAKE) -C Env_Mapping units +Env_Mapping_examples: + $(MAKE) -C Env_Mapping examples +Env_Mapping_shared: + $(MAKE) -C Env_Mapping shared +Env_Mapping_install: + $(MAKE) -C Env_Mapping install +Env_Mapping_sourceinstall: + $(MAKE) -C Env_Mapping sourceinstall +Env_Mapping_exampleinstall: + $(MAKE) -C Env_Mapping exampleinstall +Env_Mapping_distinstall: + $(MAKE) -C Env_Mapping distinstall +Env_Mapping_zipinstall: + $(MAKE) -C Env_Mapping zipinstall +Env_Mapping_zipsourceinstall: + $(MAKE) -C Env_Mapping zipsourceinstall +Env_Mapping_zipexampleinstall: + $(MAKE) -C Env_Mapping zipexampleinstall +Env_Mapping_zipdistinstall: + $(MAKE) -C Env_Mapping zipdistinstall +Env_Mapping_clean: + $(MAKE) -C Env_Mapping clean +Env_Mapping_distclean: + $(MAKE) -C Env_Mapping distclean +Env_Mapping_cleanall: + $(MAKE) -C Env_Mapping cleanall +Env_Mapping_info: + $(MAKE) -C Env_Mapping info +Env_Mapping_makefiles: + $(MAKE) -C Env_Mapping makefiles +Env_Mapping: + $(MAKE) -C Env_Mapping all +.PHONY: Env_Mapping_all Env_Mapping_debug Env_Mapping_smart Env_Mapping_release Env_Mapping_units Env_Mapping_examples Env_Mapping_shared Env_Mapping_install Env_Mapping_sourceinstall Env_Mapping_exampleinstall Env_Mapping_distinstall Env_Mapping_zipinstall Env_Mapping_zipsourceinstall Env_Mapping_zipexampleinstall Env_Mapping_zipdistinstall Env_Mapping_clean Env_Mapping_distclean Env_Mapping_cleanall Env_Mapping_info Env_Mapping_makefiles Env_Mapping +endif +ifdef TARGET_DIRS_MIXED_TEXT_3D +Mixed_Text_3D_all: + $(MAKE) -C Mixed_Text_3D all +Mixed_Text_3D_debug: + $(MAKE) -C Mixed_Text_3D debug +Mixed_Text_3D_smart: + $(MAKE) -C Mixed_Text_3D smart +Mixed_Text_3D_release: + $(MAKE) -C Mixed_Text_3D release +Mixed_Text_3D_units: + $(MAKE) -C Mixed_Text_3D units +Mixed_Text_3D_examples: + $(MAKE) -C Mixed_Text_3D examples +Mixed_Text_3D_shared: + $(MAKE) -C Mixed_Text_3D shared +Mixed_Text_3D_install: + $(MAKE) -C Mixed_Text_3D install +Mixed_Text_3D_sourceinstall: + $(MAKE) -C Mixed_Text_3D sourceinstall +Mixed_Text_3D_exampleinstall: + $(MAKE) -C Mixed_Text_3D exampleinstall +Mixed_Text_3D_distinstall: + $(MAKE) -C Mixed_Text_3D distinstall +Mixed_Text_3D_zipinstall: + $(MAKE) -C Mixed_Text_3D zipinstall +Mixed_Text_3D_zipsourceinstall: + $(MAKE) -C Mixed_Text_3D zipsourceinstall +Mixed_Text_3D_zipexampleinstall: + $(MAKE) -C Mixed_Text_3D zipexampleinstall +Mixed_Text_3D_zipdistinstall: + $(MAKE) -C Mixed_Text_3D zipdistinstall +Mixed_Text_3D_clean: + $(MAKE) -C Mixed_Text_3D clean +Mixed_Text_3D_distclean: + $(MAKE) -C Mixed_Text_3D distclean +Mixed_Text_3D_cleanall: + $(MAKE) -C Mixed_Text_3D cleanall +Mixed_Text_3D_info: + $(MAKE) -C Mixed_Text_3D info +Mixed_Text_3D_makefiles: + $(MAKE) -C Mixed_Text_3D makefiles +Mixed_Text_3D: + $(MAKE) -C Mixed_Text_3D all +.PHONY: Mixed_Text_3D_all Mixed_Text_3D_debug Mixed_Text_3D_smart Mixed_Text_3D_release Mixed_Text_3D_units Mixed_Text_3D_examples Mixed_Text_3D_shared Mixed_Text_3D_install Mixed_Text_3D_sourceinstall Mixed_Text_3D_exampleinstall Mixed_Text_3D_distinstall Mixed_Text_3D_zipinstall Mixed_Text_3D_zipsourceinstall Mixed_Text_3D_zipexampleinstall Mixed_Text_3D_zipdistinstall Mixed_Text_3D_clean Mixed_Text_3D_distclean Mixed_Text_3D_cleanall Mixed_Text_3D_info Mixed_Text_3D_makefiles Mixed_Text_3D +endif +ifdef TARGET_DIRS_ORTHO +Ortho_all: + $(MAKE) -C Ortho all +Ortho_debug: + $(MAKE) -C Ortho debug +Ortho_smart: + $(MAKE) -C Ortho smart +Ortho_release: + $(MAKE) -C Ortho release +Ortho_units: + $(MAKE) -C Ortho units +Ortho_examples: + $(MAKE) -C Ortho examples +Ortho_shared: + $(MAKE) -C Ortho shared +Ortho_install: + $(MAKE) -C Ortho install +Ortho_sourceinstall: + $(MAKE) -C Ortho sourceinstall +Ortho_exampleinstall: + $(MAKE) -C Ortho exampleinstall +Ortho_distinstall: + $(MAKE) -C Ortho distinstall +Ortho_zipinstall: + $(MAKE) -C Ortho zipinstall +Ortho_zipsourceinstall: + $(MAKE) -C Ortho zipsourceinstall +Ortho_zipexampleinstall: + $(MAKE) -C Ortho zipexampleinstall +Ortho_zipdistinstall: + $(MAKE) -C Ortho zipdistinstall +Ortho_clean: + $(MAKE) -C Ortho clean +Ortho_distclean: + $(MAKE) -C Ortho distclean +Ortho_cleanall: + $(MAKE) -C Ortho cleanall +Ortho_info: + $(MAKE) -C Ortho info +Ortho_makefiles: + $(MAKE) -C Ortho makefiles +Ortho: + $(MAKE) -C Ortho all +.PHONY: Ortho_all Ortho_debug Ortho_smart Ortho_release Ortho_units Ortho_examples Ortho_shared Ortho_install Ortho_sourceinstall Ortho_exampleinstall Ortho_distinstall Ortho_zipinstall Ortho_zipsourceinstall Ortho_zipexampleinstall Ortho_zipdistinstall Ortho_clean Ortho_distclean Ortho_cleanall Ortho_info Ortho_makefiles Ortho +endif +ifdef TARGET_DIRS_PALETTED_CUBE +Paletted_Cube_all: + $(MAKE) -C Paletted_Cube all +Paletted_Cube_debug: + $(MAKE) -C Paletted_Cube debug +Paletted_Cube_smart: + $(MAKE) -C Paletted_Cube smart +Paletted_Cube_release: + $(MAKE) -C Paletted_Cube release +Paletted_Cube_units: + $(MAKE) -C Paletted_Cube units +Paletted_Cube_examples: + $(MAKE) -C Paletted_Cube examples +Paletted_Cube_shared: + $(MAKE) -C Paletted_Cube shared +Paletted_Cube_install: + $(MAKE) -C Paletted_Cube install +Paletted_Cube_sourceinstall: + $(MAKE) -C Paletted_Cube sourceinstall +Paletted_Cube_exampleinstall: + $(MAKE) -C Paletted_Cube exampleinstall +Paletted_Cube_distinstall: + $(MAKE) -C Paletted_Cube distinstall +Paletted_Cube_zipinstall: + $(MAKE) -C Paletted_Cube zipinstall +Paletted_Cube_zipsourceinstall: + $(MAKE) -C Paletted_Cube zipsourceinstall +Paletted_Cube_zipexampleinstall: + $(MAKE) -C Paletted_Cube zipexampleinstall +Paletted_Cube_zipdistinstall: + $(MAKE) -C Paletted_Cube zipdistinstall +Paletted_Cube_clean: + $(MAKE) -C Paletted_Cube clean +Paletted_Cube_distclean: + $(MAKE) -C Paletted_Cube distclean +Paletted_Cube_cleanall: + $(MAKE) -C Paletted_Cube cleanall +Paletted_Cube_info: + $(MAKE) -C Paletted_Cube info +Paletted_Cube_makefiles: + $(MAKE) -C Paletted_Cube makefiles +Paletted_Cube: + $(MAKE) -C Paletted_Cube all +.PHONY: Paletted_Cube_all Paletted_Cube_debug Paletted_Cube_smart Paletted_Cube_release Paletted_Cube_units Paletted_Cube_examples Paletted_Cube_shared Paletted_Cube_install Paletted_Cube_sourceinstall Paletted_Cube_exampleinstall Paletted_Cube_distinstall Paletted_Cube_zipinstall Paletted_Cube_zipsourceinstall Paletted_Cube_zipexampleinstall Paletted_Cube_zipdistinstall Paletted_Cube_clean Paletted_Cube_distclean Paletted_Cube_cleanall Paletted_Cube_info Paletted_Cube_makefiles Paletted_Cube +endif +ifdef TARGET_DIRS_PICKING +Picking_all: + $(MAKE) -C Picking all +Picking_debug: + $(MAKE) -C Picking debug +Picking_smart: + $(MAKE) -C Picking smart +Picking_release: + $(MAKE) -C Picking release +Picking_units: + $(MAKE) -C Picking units +Picking_examples: + $(MAKE) -C Picking examples +Picking_shared: + $(MAKE) -C Picking shared +Picking_install: + $(MAKE) -C Picking install +Picking_sourceinstall: + $(MAKE) -C Picking sourceinstall +Picking_exampleinstall: + $(MAKE) -C Picking exampleinstall +Picking_distinstall: + $(MAKE) -C Picking distinstall +Picking_zipinstall: + $(MAKE) -C Picking zipinstall +Picking_zipsourceinstall: + $(MAKE) -C Picking zipsourceinstall +Picking_zipexampleinstall: + $(MAKE) -C Picking zipexampleinstall +Picking_zipdistinstall: + $(MAKE) -C Picking zipdistinstall +Picking_clean: + $(MAKE) -C Picking clean +Picking_distclean: + $(MAKE) -C Picking distclean +Picking_cleanall: + $(MAKE) -C Picking cleanall +Picking_info: + $(MAKE) -C Picking info +Picking_makefiles: + $(MAKE) -C Picking makefiles +Picking: + $(MAKE) -C Picking all +.PHONY: Picking_all Picking_debug Picking_smart Picking_release Picking_units Picking_examples Picking_shared Picking_install Picking_sourceinstall Picking_exampleinstall Picking_distinstall Picking_zipinstall Picking_zipsourceinstall Picking_zipexampleinstall Picking_zipdistinstall Picking_clean Picking_distclean Picking_cleanall Picking_info Picking_makefiles Picking +endif +ifdef TARGET_DIRS_SIMPLE_QUAD +Simple_Quad_all: + $(MAKE) -C Simple_Quad all +Simple_Quad_debug: + $(MAKE) -C Simple_Quad debug +Simple_Quad_smart: + $(MAKE) -C Simple_Quad smart +Simple_Quad_release: + $(MAKE) -C Simple_Quad release +Simple_Quad_units: + $(MAKE) -C Simple_Quad units +Simple_Quad_examples: + $(MAKE) -C Simple_Quad examples +Simple_Quad_shared: + $(MAKE) -C Simple_Quad shared +Simple_Quad_install: + $(MAKE) -C Simple_Quad install +Simple_Quad_sourceinstall: + $(MAKE) -C Simple_Quad sourceinstall +Simple_Quad_exampleinstall: + $(MAKE) -C Simple_Quad exampleinstall +Simple_Quad_distinstall: + $(MAKE) -C Simple_Quad distinstall +Simple_Quad_zipinstall: + $(MAKE) -C Simple_Quad zipinstall +Simple_Quad_zipsourceinstall: + $(MAKE) -C Simple_Quad zipsourceinstall +Simple_Quad_zipexampleinstall: + $(MAKE) -C Simple_Quad zipexampleinstall +Simple_Quad_zipdistinstall: + $(MAKE) -C Simple_Quad zipdistinstall +Simple_Quad_clean: + $(MAKE) -C Simple_Quad clean +Simple_Quad_distclean: + $(MAKE) -C Simple_Quad distclean +Simple_Quad_cleanall: + $(MAKE) -C Simple_Quad cleanall +Simple_Quad_info: + $(MAKE) -C Simple_Quad info +Simple_Quad_makefiles: + $(MAKE) -C Simple_Quad makefiles +Simple_Quad: + $(MAKE) -C Simple_Quad all +.PHONY: Simple_Quad_all Simple_Quad_debug Simple_Quad_smart Simple_Quad_release Simple_Quad_units Simple_Quad_examples Simple_Quad_shared Simple_Quad_install Simple_Quad_sourceinstall Simple_Quad_exampleinstall Simple_Quad_distinstall Simple_Quad_zipinstall Simple_Quad_zipsourceinstall Simple_Quad_zipexampleinstall Simple_Quad_zipdistinstall Simple_Quad_clean Simple_Quad_distclean Simple_Quad_cleanall Simple_Quad_info Simple_Quad_makefiles Simple_Quad +endif +ifdef TARGET_DIRS_SIMPLE_TRI +Simple_Tri_all: + $(MAKE) -C Simple_Tri all +Simple_Tri_debug: + $(MAKE) -C Simple_Tri debug +Simple_Tri_smart: + $(MAKE) -C Simple_Tri smart +Simple_Tri_release: + $(MAKE) -C Simple_Tri release +Simple_Tri_units: + $(MAKE) -C Simple_Tri units +Simple_Tri_examples: + $(MAKE) -C Simple_Tri examples +Simple_Tri_shared: + $(MAKE) -C Simple_Tri shared +Simple_Tri_install: + $(MAKE) -C Simple_Tri install +Simple_Tri_sourceinstall: + $(MAKE) -C Simple_Tri sourceinstall +Simple_Tri_exampleinstall: + $(MAKE) -C Simple_Tri exampleinstall +Simple_Tri_distinstall: + $(MAKE) -C Simple_Tri distinstall +Simple_Tri_zipinstall: + $(MAKE) -C Simple_Tri zipinstall +Simple_Tri_zipsourceinstall: + $(MAKE) -C Simple_Tri zipsourceinstall +Simple_Tri_zipexampleinstall: + $(MAKE) -C Simple_Tri zipexampleinstall +Simple_Tri_zipdistinstall: + $(MAKE) -C Simple_Tri zipdistinstall +Simple_Tri_clean: + $(MAKE) -C Simple_Tri clean +Simple_Tri_distclean: + $(MAKE) -C Simple_Tri distclean +Simple_Tri_cleanall: + $(MAKE) -C Simple_Tri cleanall +Simple_Tri_info: + $(MAKE) -C Simple_Tri info +Simple_Tri_makefiles: + $(MAKE) -C Simple_Tri makefiles +Simple_Tri: + $(MAKE) -C Simple_Tri all +.PHONY: Simple_Tri_all Simple_Tri_debug Simple_Tri_smart Simple_Tri_release Simple_Tri_units Simple_Tri_examples Simple_Tri_shared Simple_Tri_install Simple_Tri_sourceinstall Simple_Tri_exampleinstall Simple_Tri_distinstall Simple_Tri_zipinstall Simple_Tri_zipsourceinstall Simple_Tri_zipexampleinstall Simple_Tri_zipdistinstall Simple_Tri_clean Simple_Tri_distclean Simple_Tri_cleanall Simple_Tri_info Simple_Tri_makefiles Simple_Tri +endif +ifdef TARGET_DIRS_TEXTURED_CUBE +Textured_Cube_all: + $(MAKE) -C Textured_Cube all +Textured_Cube_debug: + $(MAKE) -C Textured_Cube debug +Textured_Cube_smart: + $(MAKE) -C Textured_Cube smart +Textured_Cube_release: + $(MAKE) -C Textured_Cube release +Textured_Cube_units: + $(MAKE) -C Textured_Cube units +Textured_Cube_examples: + $(MAKE) -C Textured_Cube examples +Textured_Cube_shared: + $(MAKE) -C Textured_Cube shared +Textured_Cube_install: + $(MAKE) -C Textured_Cube install +Textured_Cube_sourceinstall: + $(MAKE) -C Textured_Cube sourceinstall +Textured_Cube_exampleinstall: + $(MAKE) -C Textured_Cube exampleinstall +Textured_Cube_distinstall: + $(MAKE) -C Textured_Cube distinstall +Textured_Cube_zipinstall: + $(MAKE) -C Textured_Cube zipinstall +Textured_Cube_zipsourceinstall: + $(MAKE) -C Textured_Cube zipsourceinstall +Textured_Cube_zipexampleinstall: + $(MAKE) -C Textured_Cube zipexampleinstall +Textured_Cube_zipdistinstall: + $(MAKE) -C Textured_Cube zipdistinstall +Textured_Cube_clean: + $(MAKE) -C Textured_Cube clean +Textured_Cube_distclean: + $(MAKE) -C Textured_Cube distclean +Textured_Cube_cleanall: + $(MAKE) -C Textured_Cube cleanall +Textured_Cube_info: + $(MAKE) -C Textured_Cube info +Textured_Cube_makefiles: + $(MAKE) -C Textured_Cube makefiles +Textured_Cube: + $(MAKE) -C Textured_Cube all +.PHONY: Textured_Cube_all Textured_Cube_debug Textured_Cube_smart Textured_Cube_release Textured_Cube_units Textured_Cube_examples Textured_Cube_shared Textured_Cube_install Textured_Cube_sourceinstall Textured_Cube_exampleinstall Textured_Cube_distinstall Textured_Cube_zipinstall Textured_Cube_zipsourceinstall Textured_Cube_zipexampleinstall Textured_Cube_zipdistinstall Textured_Cube_clean Textured_Cube_distclean Textured_Cube_cleanall Textured_Cube_info Textured_Cube_makefiles Textured_Cube +endif +ifdef TARGET_DIRS_TEXTURED_QUAD +Textured_Quad_all: + $(MAKE) -C Textured_Quad all +Textured_Quad_debug: + $(MAKE) -C Textured_Quad debug +Textured_Quad_smart: + $(MAKE) -C Textured_Quad smart +Textured_Quad_release: + $(MAKE) -C Textured_Quad release +Textured_Quad_units: + $(MAKE) -C Textured_Quad units +Textured_Quad_examples: + $(MAKE) -C Textured_Quad examples +Textured_Quad_shared: + $(MAKE) -C Textured_Quad shared +Textured_Quad_install: + $(MAKE) -C Textured_Quad install +Textured_Quad_sourceinstall: + $(MAKE) -C Textured_Quad sourceinstall +Textured_Quad_exampleinstall: + $(MAKE) -C Textured_Quad exampleinstall +Textured_Quad_distinstall: + $(MAKE) -C Textured_Quad distinstall +Textured_Quad_zipinstall: + $(MAKE) -C Textured_Quad zipinstall +Textured_Quad_zipsourceinstall: + $(MAKE) -C Textured_Quad zipsourceinstall +Textured_Quad_zipexampleinstall: + $(MAKE) -C Textured_Quad zipexampleinstall +Textured_Quad_zipdistinstall: + $(MAKE) -C Textured_Quad zipdistinstall +Textured_Quad_clean: + $(MAKE) -C Textured_Quad clean +Textured_Quad_distclean: + $(MAKE) -C Textured_Quad distclean +Textured_Quad_cleanall: + $(MAKE) -C Textured_Quad cleanall +Textured_Quad_info: + $(MAKE) -C Textured_Quad info +Textured_Quad_makefiles: + $(MAKE) -C Textured_Quad makefiles +Textured_Quad: + $(MAKE) -C Textured_Quad all +.PHONY: Textured_Quad_all Textured_Quad_debug Textured_Quad_smart Textured_Quad_release Textured_Quad_units Textured_Quad_examples Textured_Quad_shared Textured_Quad_install Textured_Quad_sourceinstall Textured_Quad_exampleinstall Textured_Quad_distinstall Textured_Quad_zipinstall Textured_Quad_zipsourceinstall Textured_Quad_zipexampleinstall Textured_Quad_zipdistinstall Textured_Quad_clean Textured_Quad_distclean Textured_Quad_cleanall Textured_Quad_info Textured_Quad_makefiles Textured_Quad +endif +ifdef TARGET_DIRS_TOON_SHADING +Toon_Shading_all: + $(MAKE) -C Toon_Shading all +Toon_Shading_debug: + $(MAKE) -C Toon_Shading debug +Toon_Shading_smart: + $(MAKE) -C Toon_Shading smart +Toon_Shading_release: + $(MAKE) -C Toon_Shading release +Toon_Shading_units: + $(MAKE) -C Toon_Shading units +Toon_Shading_examples: + $(MAKE) -C Toon_Shading examples +Toon_Shading_shared: + $(MAKE) -C Toon_Shading shared +Toon_Shading_install: + $(MAKE) -C Toon_Shading install +Toon_Shading_sourceinstall: + $(MAKE) -C Toon_Shading sourceinstall +Toon_Shading_exampleinstall: + $(MAKE) -C Toon_Shading exampleinstall +Toon_Shading_distinstall: + $(MAKE) -C Toon_Shading distinstall +Toon_Shading_zipinstall: + $(MAKE) -C Toon_Shading zipinstall +Toon_Shading_zipsourceinstall: + $(MAKE) -C Toon_Shading zipsourceinstall +Toon_Shading_zipexampleinstall: + $(MAKE) -C Toon_Shading zipexampleinstall +Toon_Shading_zipdistinstall: + $(MAKE) -C Toon_Shading zipdistinstall +Toon_Shading_clean: + $(MAKE) -C Toon_Shading clean +Toon_Shading_distclean: + $(MAKE) -C Toon_Shading distclean +Toon_Shading_cleanall: + $(MAKE) -C Toon_Shading cleanall +Toon_Shading_info: + $(MAKE) -C Toon_Shading info +Toon_Shading_makefiles: + $(MAKE) -C Toon_Shading makefiles +Toon_Shading: + $(MAKE) -C Toon_Shading all +.PHONY: Toon_Shading_all Toon_Shading_debug Toon_Shading_smart Toon_Shading_release Toon_Shading_units Toon_Shading_examples Toon_Shading_shared Toon_Shading_install Toon_Shading_sourceinstall Toon_Shading_exampleinstall Toon_Shading_distinstall Toon_Shading_zipinstall Toon_Shading_zipsourceinstall Toon_Shading_zipexampleinstall Toon_Shading_zipdistinstall Toon_Shading_clean Toon_Shading_distclean Toon_Shading_cleanall Toon_Shading_info Toon_Shading_makefiles Toon_Shading +endif +ifdef TARGET_DIRS_NEHE +nehe_all: + $(MAKE) -C nehe all +nehe_debug: + $(MAKE) -C nehe debug +nehe_smart: + $(MAKE) -C nehe smart +nehe_release: + $(MAKE) -C nehe release +nehe_units: + $(MAKE) -C nehe units +nehe_examples: + $(MAKE) -C nehe examples +nehe_shared: + $(MAKE) -C nehe shared +nehe_install: + $(MAKE) -C nehe install +nehe_sourceinstall: + $(MAKE) -C nehe sourceinstall +nehe_exampleinstall: + $(MAKE) -C nehe exampleinstall +nehe_distinstall: + $(MAKE) -C nehe distinstall +nehe_zipinstall: + $(MAKE) -C nehe zipinstall +nehe_zipsourceinstall: + $(MAKE) -C nehe zipsourceinstall +nehe_zipexampleinstall: + $(MAKE) -C nehe zipexampleinstall +nehe_zipdistinstall: + $(MAKE) -C nehe zipdistinstall +nehe_clean: + $(MAKE) -C nehe clean +nehe_distclean: + $(MAKE) -C nehe distclean +nehe_cleanall: + $(MAKE) -C nehe cleanall +nehe_info: + $(MAKE) -C nehe info +nehe_makefiles: + $(MAKE) -C nehe makefiles +nehe: + $(MAKE) -C nehe all +.PHONY: nehe_all nehe_debug nehe_smart nehe_release nehe_units nehe_examples nehe_shared nehe_install nehe_sourceinstall nehe_exampleinstall nehe_distinstall nehe_zipinstall nehe_zipsourceinstall nehe_zipexampleinstall nehe_zipdistinstall nehe_clean nehe_distclean nehe_cleanall nehe_info nehe_makefiles nehe +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/3D/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Makefile.fpc new file mode 100644 index 0000000000..3cf052c949 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Makefile.fpc @@ -0,0 +1,19 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=3D_Both_Screens BoxTest Display_List Display_List_2 Env_Mapping Mixed_Text_3D Ortho \ + Paletted_Cube Picking Simple_Quad Simple_Tri Textured_Cube Textured_Quad Toon_Shading nehe + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile b/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile new file mode 100644 index 0000000000..459a470572 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=MixedText3D +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile.fpc new file mode 100644 index 0000000000..811bc2f963 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=MixedText3D + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/MixedText3D.pp b/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/MixedText3D.pp new file mode 100644 index 0000000000..a3668624c5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Mixed_Text_3D/MixedText3D.pp @@ -0,0 +1,110 @@ +program MixedText3D; + +uses + ctypes, nds9, math; + + +var + rtri: cfloat; // Angle For The Triangle ( NEW ) + rquad: cfloat; // Angle For The Quad ( NEW ) + + console: PrintConsole; + +function fmodf(a,b:cfloat):cfloat; +begin + fmodf := b*Frac(a/b); +end; + +procedure DrawGLScene(); +begin + //ds does this automagically*open>///glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer + + glLoadIdentity(); // Reset The Current Modelview Matrix + glTranslatef(-1.5, 0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 + glRotatef(rtri, 0.0, 1.0, 0.0); // Rotate The Triangle On The Y axis ( NEW ) + glColor3f(1, 1, 1); // set the vertex color + glBegin(GL_TRIANGLES); // Start Drawing A Triangle + glColor3f( 1.0, 0.0, 0.0); // Set Top Point Of Triangle To Red + glVertex3f( 0.0, 1.0, 0.0); // First Point Of The Triangle + glColor3f( 0.0, 1.0, 0.0); // Set Left Point Of Triangle To Green + glVertex3f(-1.0,-1.0, 0.0); // Second Point Of The Triangle + glColor3f( 0.0, 0.0, 1.0); // Set Right Point Of Triangle To Blue + glVertex3f( 1.0,-1.0, 0.0); // Third Point Of The Triangle + glEnd(); // Done Drawing The Triangle + glLoadIdentity(); // Reset The Current Modelview Matrix + + + glTranslatef( 1.5, 0.0,-6.0); // Move Right 1.5 Units And Into The Screen 6.0 + glRotatef(rquad, 1.0, 0.0, 0.0); // Rotate The Quad On The X axis ( NEW ) + glColor3f( 0.5, 0.5, 1.0); // Set The Color To Blue One Time Only + glBegin(GL_QUADS); // Draw A Quad + glVertex3f(-1.0, 1.0, 0.0); // Top Left + glVertex3f( 1.0, 1.0, 0.0); // Top Right + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glEnd(); // Done Drawing The Quad +end; + +begin + // initialize the geometry engine + glInit(); + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + //map some vram to background for printing + vramSetBankC(VRAM_C_MAIN_BG_0x06000000); + + consoleInit(nil, 1, BgType_Text4bpp, BgSize_T_256x256, 31,0, true, true); + + //put bg 0 at a lower priority than the text background + bgSetPriority(0, 1); + + + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + iprintf(' Hello DS World'#10); + iprintf(' www.devkitpro.org'#10); + iprintf(' www.drunkencoders.com'#10); + + while true do + begin + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + + printf(#$1b'[15;5H rtri = %f '#10, rtri); + printf(#$1b'[16;5H rquad = %f '#10, rquad); + rtri := rtri + 0.9; // Increase The Rotation Variable For The Triangle ( NEW ) + rquad := rquad - 0.75; // Decrease The Rotation Variable For The Quad ( NEW ) + + rtri := fmodf( rtri , 360 ); + rquad := fmodf( rquad, 360 ); + + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Ortho/Makefile b/packages/libndsfpc/examples/graphics/3D/Ortho/Makefile new file mode 100644 index 0000000000..c239a28f95 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Ortho/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=Ortho +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Ortho/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Ortho/Makefile.fpc new file mode 100644 index 0000000000..b1d330dea1 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Ortho/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=Ortho + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Ortho/Ortho.pp b/packages/libndsfpc/examples/graphics/3D/Ortho/Ortho.pp new file mode 100644 index 0000000000..be1a67493e --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Ortho/Ortho.pp @@ -0,0 +1,167 @@ +program Ortho; +{$L build/drunkenlogo.pcx.o} + +{$mode objfpc} + +uses + ctypes, nds9; + +{$include inc/drunkenlogo.pcx.inc} + +var + xrot: cfloat; // X Rotation + yrot: cfloat; // Y Rotation + zrot: cfloat; // Z Rotation + + texture: array [0..0] of cint; // Storage For One Texture + +// Load PCX files And Convert To Textures +function LoadGLTextures(): boolean; +var + pcx: sImage; +begin + //load our texture + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + + +function DrawGLScene(): boolean; // Here's Where We Do All The Drawing +begin + glTranslatef(0.0,0.0,-5.0); + + glRotatef(xrot,1.0,0.0,0.0); + glRotatef(yrot,0.0,1.0,0.0); + glRotatef(zrot,0.0,0.0,1.0); + + glBindTexture(GL_TEXTURE_2D, texture[0]); + + glBegin(GL_QUADS); + // Front Face + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + // Back Face + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + // Top Face + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + // Bottom Face + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + // Right face + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + // Left Face + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glEnd(); + + xrot := xrot + 0.3; + yrot := yrot + 0.2; + zrot := zrot + 0.4; + result := true; +end; + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); // reserve some memory for textures + + // initialize gl + glInit(); + + //enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + glLight(1, RGB15(31,31,31) , 0, 0, floattov10(-1.0)); + glLight(2, RGB15(31,31,31) , 0, 0, floattov10( 1.0)); + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + LoadGLTextures(); + + // set the vertex color to white + glColor3f(1,1,1); + + while true do + begin + scanKeys(); + + //reset the projection matrix + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + // set the projection matrix as either ortho or perspective + if (keysHeld() and KEY_R) = 0 then + gluPerspective(70, 256.0 / 192.0, 0.1, 100) + else + glOrtho(-3, 3,-2, 2, 0.1, 100); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + //ds specific, several attributes can be set here + if (keysHeld() and KEY_L) <> 0 then + glPolyFmt(POLY_ALPHA(0) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_FORMAT_LIGHT2) + else + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_FORMAT_LIGHT2); + + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + DrawGLScene(); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + // flush to screen + glFlush(0); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Ortho/data/drunkenlogo.pcx b/packages/libndsfpc/examples/graphics/3D/Ortho/data/drunkenlogo.pcx new file mode 100644 index 0000000000..610722bec6 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Ortho/data/drunkenlogo.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile new file mode 100644 index 0000000000..2cb9c861c5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=PalettedCube +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile.fpc new file mode 100644 index 0000000000..f48ed360e7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=PalettedCube + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/PalettedCube.pp b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/PalettedCube.pp new file mode 100644 index 0000000000..55c1296b71 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/PalettedCube.pp @@ -0,0 +1,307 @@ +program PalettedCube; +{$L build/texture.bin.o} +{$L build/texture1_RGB16_pal.bin.o} +{$L build/texture1_RGB16_tex.bin.o} +{$L build/texture2_RGB16_pal.bin.o} +{$L build/texture2_RGB16_tex.bin.o} +{$L build/texture3_RGB16_pal.bin.o} +{$L build/texture3_RGB16_tex.bin.o} +{$L build/texture4_RGB16_pal.bin.o} +{$L build/texture4_RGB16_tex.bin.o} +{$L build/texture5_RGB16_pal.bin.o} +{$L build/texture5_RGB16_tex.bin.o} +{$L build/texture6_RGB4_pal.bin.o} +{$L build/texture6_RGB4_tex.bin.o} +{$L build/texture7_RGB4_pal.bin.o} +{$L build/texture7_RGB4_tex.bin.o} +{$L build/texture8_RGB32_A3_pal.bin.o} +{$L build/texture8_RGB32_A3_tex.bin.o} +{$L build/texture9_RGB32_A3_pal.bin.o} +{$L build/texture9_RGB32_A3_tex.bin.o} + +uses + ctypes, nds9; + +// most of the following textures were generated from online samples available at +// http://www.marlinstudios.com/samples/sampvtf.htm and http://www.3dtotal.com/textures_v15/ + +{$include inc/texture.bin.inc} +{$include inc/texture1_RGB16_pal.bin.inc} +{$include inc/texture1_RGB16_tex.bin.inc} +{$include inc/texture2_RGB16_pal.bin.inc} +{$include inc/texture2_RGB16_tex.bin.inc} +{$include inc/texture3_RGB16_pal.bin.inc} +{$include inc/texture3_RGB16_tex.bin.inc} +{$include inc/texture4_RGB16_pal.bin.inc} +{$include inc/texture4_RGB16_tex.bin.inc} +{$include inc/texture5_RGB16_pal.bin.inc} +{$include inc/texture5_RGB16_tex.bin.inc} +{$include inc/texture6_RGB4_pal.bin.inc} +{$include inc/texture6_RGB4_tex.bin.inc} +{$include inc/texture7_RGB4_pal.bin.inc} +{$include inc/texture7_RGB4_tex.bin.inc} +{$include inc/texture8_RGB32_A3_pal.bin.inc} +{$include inc/texture8_RGB32_A3_tex.bin.inc} +{$include inc/texture9_RGB32_A3_pal.bin.inc} +{$include inc/texture9_RGB32_A3_tex.bin.inc} + +var + //verticies for the cube + CubeVectors: array [0..23] of v16; + + //polys + CubeFaces: array [0..23] of cuint8; + + //texture coordinates + uv: array [0..3] of cuint32; + normals: array [0..5] of cuint32; + +procedure Initialize(); +begin +//verticies for the cube + CubeVectors[0] := floattov16(-0.5); CubeVectors[1] := floattov16(-0.5); CubeVectors[2] := floattov16(0.5); + CubeVectors[3] := floattov16(0.5); CubeVectors[4] := floattov16(-0.5); CubeVectors[5] := floattov16(0.5); + CubeVectors[6] := floattov16(0.5); CubeVectors[7] := floattov16(-0.5); CubeVectors[8] := floattov16(-0.5); + CubeVectors[9] := floattov16(-0.5); CubeVectors[10] := floattov16(-0.5); CubeVectors[11] := floattov16(-0.5); + CubeVectors[12] := floattov16(-0.5); CubeVectors[13] := floattov16(0.5); CubeVectors[14] := floattov16(0.5); + CubeVectors[15] := floattov16(0.5); CubeVectors[16] := floattov16(0.5); CubeVectors[17] := floattov16(0.5); + CubeVectors[18] := floattov16(0.5); CubeVectors[19] := floattov16(0.5); CubeVectors[20] := floattov16(-0.5); + CubeVectors[21] := floattov16(-0.5); CubeVectors[22] := floattov16(0.5); CubeVectors[23] := floattov16(-0.5); + +//polys + CubeFaces[0] := 3; CubeFaces[1] := 2; CubeFaces[2] := 1; CubeFaces[3] := 0; + CubeFaces[4] := 0; CubeFaces[5] := 1; CubeFaces[6] := 5; CubeFaces[7] := 4; + CubeFaces[8] := 1; CubeFaces[9] := 2; CubeFaces[10] := 6; CubeFaces[11] := 5; + CubeFaces[12] := 2; CubeFaces[13] := 3; CubeFaces[14] := 7; CubeFaces[15] := 6; + CubeFaces[16] := 3; CubeFaces[17] := 0; CubeFaces[18] := 4; CubeFaces[19] := 7; + CubeFaces[20] := 5; CubeFaces[21] := 6; CubeFaces[22] := 7; CubeFaces[23] := 4; + + //texture coordinates + uv[0] := TEXTURE_PACK(inttot16(128), 0); + uv[1] := TEXTURE_PACK(inttot16(128), inttot16(128)); + uv[2] := TEXTURE_PACK(0, inttot16(128)); + uv[3] := TEXTURE_PACK(0, 0); + + normals[0] := NORMAL_PACK(0, floattov10(-0.97), 0); + normals[1] := NORMAL_PACK(0, 0, floattov10(0.97)); + normals[2] := NORMAL_PACK(floattov10(0.97), 0, 0); + normals[3] := NORMAL_PACK(0, 0, floattov10(-0.97)); + normals[4] := NORMAL_PACK(floattov10(-0.97), 0, 0); + normals[5] := NORMAL_PACK(0, floattov10(0.97), 0); +end; + +//draw a cube face at the specified color +//draw a cube face at the specified color +procedure drawQuad(poly: integer); +var + f1, f2, f3, f4: cuint32; +begin + f1 := CubeFaces[poly * 4] ; + f2 := CubeFaces[poly * 4 + 1] ; + f3 := CubeFaces[poly * 4 + 2] ; + f4 := CubeFaces[poly * 4 + 3] ; + + glNormal(normals[poly]); + + + GFX_TEX_COORD^ := (uv[0]); + glVertex3v16(CubeVectors[f1*3], CubeVectors[f1*3 + 1], CubeVectors[f1*3 + 2]); + + GFX_TEX_COORD^ := (uv[1]); + glVertex3v16(CubeVectors[f2*3], CubeVectors[f2*3 + 1], CubeVectors[f2*3 + 2]); + + GFX_TEX_COORD^ := (uv[2]); + glVertex3v16(CubeVectors[f3*3], CubeVectors[f3*3 + 1], CubeVectors[f3*3 + 2]); + + GFX_TEX_COORD^ := (uv[3]); + glVertex3v16(CubeVectors[f4*3], CubeVectors[f4*3 + 1], CubeVectors[f4*3 + 2]); +end; + + +type + TTextures = record + format, pal_addr: cint; + size: cuint32; + end; + +var + textureIDS: array [0..9] of cint; + textures: array [0..9] of TTextures; + i: integer; + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keyspressed: cuint16; + keys: cuint16; + nTexture: integer; + +begin + Initialize(); + lcdMainOnTop(); + + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + consoleDemoInit(); + + + // initialize gl + glInit(); + + //enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + // setup other material properties + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(20,20,20)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(5,5,5)); + + // setup the lighting + glLight(0, RGB15(31,31,31) , 0, floattov10(-0.5), floattov10(-0.85)); + + vramSetBankA(VRAM_A_TEXTURE); + + glGenTextures(10, textureIDS); + + // inital full 16 bit colour texture + glBindTexture(0, textureIDS[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture_bin)); + textures[0].format := GL_RGB; + textures[0].pal_addr := 0; + textures[0].size := texture_bin_size; // size field just recorded for on-screen info + + + // Load some 16 colour textures + glBindTexture(0, textureIDS[1]); + glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture1_RGB16_tex_bin)); + textures[1].format := GL_RGB16; + textures[1].pal_addr := gluTexLoadPal( pcuint16(@texture1_RGB16_pal_bin), 16, GL_RGB16 ); + textures[1].size := texture1_RGB16_tex_bin_size+texture1_RGB16_pal_bin_size; + + glBindTexture(0, textureIDS[2]); + glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture2_RGB16_tex_bin)); + textures[2].format := GL_RGB16; + textures[2].pal_addr := gluTexLoadPal( pcuint16(@texture2_RGB16_pal_bin), 16, GL_RGB16 ); + textures[2].size := texture2_RGB16_tex_bin_size+texture2_RGB16_pal_bin_size; + + glBindTexture(0, textureIDS[3]); + glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture3_RGB16_tex_bin)); + textures[3].format := GL_RGB16; + textures[3].pal_addr := gluTexLoadPal( pcuint16(@texture3_RGB16_pal_bin), 16, GL_RGB16 ); + textures[3].size := texture3_RGB16_tex_bin_size+texture3_RGB16_pal_bin_size; + + glBindTexture(0, textureIDS[4]); + glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture4_RGB16_tex_bin)); + textures[4].format := GL_RGB16; + textures[4].pal_addr := gluTexLoadPal( pcuint16(@texture4_RGB16_pal_bin), 16, GL_RGB16 ); + textures[4].size := texture4_RGB16_tex_bin_size+texture4_RGB16_pal_bin_size; + + glBindTexture(0, textureIDS[5]); + glTexImage2D(0, 0, GL_RGB16, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture5_RGB16_tex_bin)); + textures[5].format := GL_RGB16; + textures[5].pal_addr := gluTexLoadPal( pcuint16(@texture5_RGB16_pal_bin), 16, GL_RGB16 ); + textures[5].size := texture5_RGB16_tex_bin_size+texture5_RGB16_pal_bin_size; + + // Load some 4 colour textures + glBindTexture(0, textureIDS[6]); + glTexImage2D(0, 0, GL_RGB4, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture6_RGB4_tex_bin)); + textures[6].format := GL_RGB4; + textures[6].pal_addr := gluTexLoadPal( pcuint16(@texture6_RGB4_pal_bin), 4, GL_RGB4 ); + textures[6].size := texture6_RGB4_tex_bin_size+texture6_RGB4_pal_bin_size; + + glBindTexture(0, textureIDS[7]); + glTexImage2D(0, 0, GL_RGB4, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture7_RGB4_tex_bin)); + textures[7].format := GL_RGB4; + textures[7].pal_addr := gluTexLoadPal( pcuint16(@texture7_RGB4_pal_bin), 4, GL_RGB4 ); + textures[7].size := texture7_RGB4_tex_bin_size+texture7_RGB4_pal_bin_size; + + + // Load some 32 colour textures, 8 levels of alpha + glBindTexture(0, textureIDS[8]); + glTexImage2D(0, 0, GL_RGB32_A3, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture8_RGB32_A3_tex_bin)); + textures[8].format := GL_RGB32_A3; + textures[8].pal_addr := gluTexLoadPal( pcuint16(@texture8_RGB32_A3_pal_bin), 32, GL_RGB32_A3 ); + textures[8].size := texture8_RGB32_A3_tex_bin_size+texture8_RGB32_A3_pal_bin_size; + + glBindTexture(0, textureIDS[9]); + glTexImage2D(0, 0, GL_RGB32_A3, TEXTURE_SIZE_128, TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture9_RGB32_A3_tex_bin)); + textures[9].format := GL_RGB32_A3; + textures[9].pal_addr := gluTexLoadPal( pcuint16(@texture9_RGB32_A3_pal_bin), 32, GL_RGB32_A3 ); + textures[9].size := texture9_RGB32_A3_tex_bin_size+texture9_RGB32_A3_pal_bin_size; + + iprintf(#$1b'[4;8HPaletted Cube'); + iprintf(#$1b'[6;2HRight/Left shoulder to switch'); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 2.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_ID(1) ) ; + + glColor3f(1,1,1); + + glMatrixMode(GL_MODELVIEW); + + nTexture := 0; + while true do + begin + glPushMatrix(); + + glRotateX(rotateX); + glRotateY(rotateY); + + scanKeys(); + keys := keysHeld(); + if((keys and KEY_UP)) <> 0 then rotateX := rotateX +3; + if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX -3; + if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY +3; + if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY -3; + + keysPressed := keysDown(); + if (keysPressed and KEY_R) = 0 then + begin + inc(nTexture); + if( nTexture = 10 ) then + nTexture := 0; + end; + if (keysPressed and KEY_L) = 0 then + begin + dec(nTexture); + if( nTexture = -1 ) then + nTexture := 9; + end; + + glBindTexture(nTexture, textureIDS[nTexture]); + if( textures[nTexture].format <> GL_RGB ) then + glColorTable(textures[nTexture].format, textures[nTexture].pal_addr); + + //draw the obj + glBegin(GL_QUAD); + for i := 0 to 5 do + drawQuad(i); + glEnd(); + + glPopMatrix(1); + + glFlush(0); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture.bin new file mode 100644 index 0000000000..423699d1f7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture.bin @@ -0,0 +1 @@ +­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µÎ¹RÊrÎrέµ¬±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÂ1Æï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½RÊsÎ1Æî½­µ­µ­µ0Â÷ÞœóÝûÝûÝû¼óXç1Æ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½“ΛïœïÖÚ´Ö”ÒQÊï½Î¹­µ­µ­µµִÒã¼÷½÷½÷œóãνRÊ›ï½÷ÞûþûþÿþÿþÿþÿöÞ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÍ¹1Æã½ó½ï½óÞ÷þûþÿÞûœórÎ͵RÊã½ó½÷½ó½ó½óÞ÷ÞûÞûÝû“Ò9çÿûÞûÞûÞûÞûÞûþÿþÿÞûÞûZëÖÚß”ÒÂιï½Î¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹RÊzëÞ÷½ï½ïÞ÷½÷Þ÷ÿûÿÿÿÿ½÷´Ò8ß|çœç½ïÞ÷Þûþûþÿÿÿÿÿÿû½÷¾ó¾ïÞó½óÝóÞ÷Ý÷Þ÷Þ÷Þ÷ÞóÞóÞóÞ÷Þ÷½÷›ï½÷´Öî½­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÌµ ¾pÊ-¾í¹¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹”ÒÞ÷Þ÷¾ó½ó½ó½óÞ÷ÿûÿûþûÿûÞ÷ëœçÞ÷ÿÿÿÿÿÿÿÿÿûÿûß÷½ïœï÷Úß{ëÞ÷Þ÷Þ÷Þ÷ÞóÞóÞó¾ï¾ó½ï½ë½óÞ÷þûÿûÝûrÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ«±¬±¬µ¬µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µìµôÖÛÒÒí¹¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µrʾ÷Þ÷›ïÖÖßÞ÷ÞûÞûÞ÷Þ÷Þ÷ÿû¾óÞóÞ÷Þ÷Þ÷ß÷ÿûÿûß÷ß÷¾÷0Ƭ¹Í¹Í¹RÊ{ë½ïœëœçëëëœç|ãœç½ïÝ÷Þ÷Þû¼÷QÊ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ.¾ÊÊ ºìµí¹í¹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½ ¶6Û7ÛÓÎ-¾­µ±­µ­µ­µ­µ­µ­µ­µ­µ­µÍµµÒ¾÷œó1ÆÎ¹9ã¾ó½ó¾ó¾óÞ÷Þ÷Þ÷¾ó½ïë½ïÞ÷ÿûÿÿÿÿÿÿÿÿÿÿÞûÝûÝ÷YëÂ0ÂsÎ9ãë½ë½ë½ë½ï½ï½ïÝóÞ÷Þ÷Ý÷Þûã­µ­µ­µ­µ­µ­µ­µ­µ­µ«±M¾òÒÒβʲÊoÆ-¾í¹î½Íµ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µí¹ ºôÎöÒôÒN¬µ­±­µ­µ­µ­µ¬±¬µ¬µ­µ­µï½:ã¾ózë͹Ûëëë¾óÞó¾óëëëë½ïÞ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿû½÷zë÷ÞsΜï½ï½ï½ïÝóÝóÞóÝó½ó½óÝ÷Zë0Æ­µ­µ­µ­µ­µ­µ­µ­µµ¬µ-¾ÒαÊÓÊÓÊÓÎóÒ±ÎOÆ.¾͵¬µ¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ ºÔÎõÎÓÊí¹¬±­µ­µ­µÍµ¾Ìµ¬µ¬±­µî¹ZçëZç­µ:ßç¾ï¾ï½ïïëë½ï¾óÞûÿûÿÿÿÿßûÿûÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿÿÿÿÞû½÷Þ÷Þ÷½ó½ï½ó½ó½ï½ëÞóÞ÷ÞûÕÚι­µµ­µ­µ­µ­µ­µ­µ­µ¬µ-ºÒÊÓÎÓÊÔÊÔÊÔÊôÒóÖóÖpÆ-¾ìµÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ¬µ­µ­µ­µ¬µ­µ­µ¬µ­µ¬µ¬±¬µ¬µ­µ­µ­µ­µ¬µ­µ­µÍ¹í¹ëµôÒõÒ×±Îí¹¬±¬µ­µÍµ‘ÊÓβÎí¹­µ¬µÍµrʼï»ó›óÞ÷Þó½ïë|çë¾óÞ÷Þ÷Þ÷þûÝûÝûÝ÷¾óßûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÞ÷Þ÷Þ÷Þ÷ÿ÷þûÿÿþÿ’Ò1Æî¹­µ­µ­µ­µ­µ­µ­µ­µÌµoÂÒÊÓÊÓÎôÎôÎôÎôÎôÒÓ×óÒNÂì¹í¹­µ­µ¬µ­µŒ±¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ¬±Œ±¬±¬µ­µ­µ­µ­µ¬µ«±¬±¬±¬µÌµÌ±¬±µ­µ­µ­µ­µÍµË±-¾N ºËµ×Ó×ÒÒí¹¬±¬µ¬µ.¾ÓÎÓÎÓÎì¹í¹ ¾ì¹í¹³Ò ¾ ºqÊyç½ïëï¾óÞ÷Þ÷½ï›ë’ÎqÊpÆ/¾{ëÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿûÿûþûÿÿÿÿÿ÷ß÷ÞûÝ÷8ãrέµµ­µ­µ­µ­µµÌµNÂÒÎÒÊÓÊôÎ××ôÒ×õÒôÎ××ÑÎN¾¬µ­µ¬µí¹í¹í¹ÍµÌµÍµ¬µÍµ¬µ­µ¬µNÂÎ ¾Œ±­µ­±­µ¬µËµNÂÒÒì¹ëµ,¾ÒÒOƬµ¬µ­µ­µµÍ¹ì¹6ÛÓÎôÒO²Î××ÓÒí¹­µ¬µ ¾ÓÎôÎ×pÆpÂôÒÔÒôÖôÖNÂpÆבÊ.¾YçÞ÷ÿûÞ÷¾ó¾ó½ó’γÊöÒõÎ º7ãÿÿÿÿÿûÿ÷ÿûÿÿÿÿÿûÿûÿûÿÿÿÿÿÿÿÿÞû¼óÿûÿûþûþûþÿÿûÞó¾ïßóÿ÷ÿû›ï´Ö­µ­±­µ­µ­µµÌµNÂÓÎÓÎóÎôÎ×ß7ãxçÛ×ôÒôÒÛóÖoÆ.¬µî¹.¾ÛÛNÂì¹N²ÎÒÒpÊ ¾Ë±±ÊôÖÊ˵­µ­±­µ¬µì¹óÖÔÎpÆËµ±ÊÛóÖî½­µ­µ­µ­µÍµ-º6ÛôÎôÒÓÒOÂ7Û×ôÖ ¾Í¹ìµ²ÎÓÎôÒ±ÎNÂôÒ³ÊÓÎôÖÓÒÒÎ.ºõÎײξYëÿÿÿû¾ó¾ó½óOƳÎÓÕÎ º³Òÿÿÿÿÿ÷ÿ÷ÿ÷ÿ÷ß÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿ÷âî½ÕÖÞûÿûÿûÿûÞ÷ß÷ß÷¾ï¾ïÿûÿÿœ÷­±­µ­µ­µ­µí¹OÂÒÎÓÎÓÎÒαÊpÆ.Â.¾O¾²ÊôÒôÒ×ÛÛoÆ.¾ ¾OÂõÖõÒÓÒ ºÓÎôÒõÒÛÓÒNÂOÂõÖôÒ-¾Íµ­±­µ¬µ ºôÖÔÊôÒì¹ÒÎÛ6߲άµ­µ­µ­µÍ¹-ºxç×ÓÎÒÒ.¾õÖÛÛ ¾í¹O¾ôÒôҲΠºÊÓÒ²ÊÓÒÓҲΑÊ/¾õÎõÒ×pÊqÊÞûÿÿÞ÷Þ÷½ïpÊ‘Ê×ôξ²Îÿÿÿÿÿ÷ß÷ß÷¿ïß÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿßû{ëQÆ÷Úß÷ß÷ß÷ßó¾ï¾ëßïß÷ÿûÿû{ïî½­±­µ­µ­µ­µ¾OÂÒÎóÒÒÎÒÎNÂNÂíµí½ ¾ ºº³ÊôÒôÒÛÛnÆËµ ºôÖÓ×ôÎôÒ×õÒôÒÓÎóÒ‘ÊpÊÛPÆÍµ­µ­µ¬µ ºÆõÎ6ß ¾ÓÒÛ5ÛóÖ ¾±¬µ­µ¬µ ºÛôÒôÒóÒ º×6Û6ß.¾õÒõÒóÒ ºì¹M¾ôÖ‘Æ ºí¹ì¹O¾öÒõÒõÒ×6ß¾ßÿÿÞûÞ÷œëqʲÎÛ×.¾NÂÝ÷ÿÿÿûÿûÿ÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿûßó¾ïµÒµÒÞóßóßóß÷ÿûßóßóÿûÿûÿûYçι­µ­µ­µ­µµ¾NÂóÒóÒÒÎÓÒÓÒ ¾º¬µ­µÍµ-¾ º×ôÒ×ÛóÖNÂ˱ÒÎÓôÎÛ6ßÓÒpƑʲʑƱÎNÂבÊí¹­µ­µ¬µ º‘ÊõÎ7ã ¾óÖÛôÖ5ÛÊ̵µµ¬µí¹5ßôÒÓóÖìµôÒ6Û6ßÓÒõÖ7Û×oÆì¹ËµoÆ×ÒÎ̵¬µÌµ‘Ê×ôÒõÖÛ6Û’ÎO¼óÿÿÿû½ïrÊôÚÛôÒpÆO¼÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ÷ß÷ß÷zïsÎÞûÿûÿûÿ÷ß÷ÿûÿûÿûÿ÷ÿû›ïι­µ­µ­µ­µµî¹OÂóÒÓÎôÎôÒÛÊ ¾¬±¬±±Íµì¹ÓÒ6ÛÓôÖ5ßÒÖN²Î7ÛõÒ×ó־͵í¹o±ÊÊOÂבÊ̵­µ­µ­µ ¾±ÊôÒWã ºÛÛóÒ6Û×O¬µ¬µ¬µì¹±ÎÒÎ×Û ¾6ß7ß6ß7ß7Û7ßÛ ºÍµËµÆÛÒÒ«±µÍ¹pÊôÖôÒ×ÛÛÛ.ÂÔÖ½÷ÿÿÞ÷’ÎóÒôÎÒÊpÆ ºzëÞûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûßûß÷ß÷9çÖÖÿûÿûÿÿÿÿÿûßóßóßóßóÞûrέµ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎôÎôÎÛÓÖ ºÍµ­µ¬µ¬µËµoÆÓôÒ×6ß6ßÊPÆõÖÓÊÔÎPÂí¹¬µÍµìµ º ºÓÎבÊ̵­µ­µ­µ.¾ÒÎôÒ6ß-¾ÓÖÒÒÒÎ××ÒÒ º­µ¬µì¹ÒÒÒÎÓÎÛ-¾6ß6ß6ß6Û7Û7ß±Îìµ­µËµÆôÖÒÎí¹Ìµí¹.¾qÊÛôÖ×ÛóÖ²Îìµ7ãþûÞû²Ò³ÎõÖôÒoÆëµ/­µãÿÿÿÿÿûÿ÷ÿ÷ÿûÿÿÿÿÿûÿûß÷ßóÞó½ï¾óß÷ß÷ÿ÷ßûßûß÷¿ïßóÿûœï­µ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎÓÊôÎ×óÖ͹­µ­µµ­µ«±²ÎôÒóÒóÒÛxç±ÎOÂÒγÊÔÎoÆÍµ¬±µ¬µËµ.¾×ôÒ‘Î̹­µ­µ­µ/ÂÒÎôÒÛ.ÂÛÛ±ÊóÒ6Û5ßoÆì¹¬µí¹ÓÒóÒÓÎÛ.ÂÛÛ×7ß7ÛÛoÆÌµ­µëµ±ÊôÖôÖóÖÓÒÓÒÊOÂ6ßÛôÖÛÛÛ.Â/½óÞ÷³ÖõÖ×ôÒ‘ÆëµôÚrÎ͹”Ò¾óÞïÿûÿûÿÿÿÿÿÿÿûÿûÿûÿûÿûÿûÿûÿûÿûÿÿÿûÿûÿ÷ßóß÷ÿÿãî½­µ­±­µ­µ­µ­µÍµ.ÂôÖôÒÓÊÔÊ×Ûí¹­µ­µ¬µí¹ º×ÒÎÒÎóÒ×yçÒÒNÂÓÒÓÊõÒpÆŒµ­µ­µ­µÌµ-¾×בÎ̱­µ­µ­µ.¾ÓÒôÒÛ.ÂßÛ±ÊóÖ6ã6ßÒÒ º¾ì¹oÆôÒôÒôÖ-¾óÖÓÎ×7Û7ÛWãÛ º.Â˵±ÊÓÒóұʱÊÒαÊ.¾×6ÛÛôÖÛ7ßÛ ºöÚþû²ÒÛÓôΑÊëµßÞÿ{ïî½sʾïÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûßûÿûÿûÿûß÷ÿûß÷¿ï¾ë¾óßöÞι­µ­µ­µ­µ­µÍµ-¾ôÖ×ÔÊÔÊôÒÛ ¾ÍµÍµ ¾ì¹ôÖ5ßóÒÒÎôÒÓ6ß±Î-¾ôÒôÎõÒpÆŒµ­µ­µ­µì¹N¾××óÖ«±­µ­µ­µ ¾ÓÒôÒ×-¾Û󮮱ÊóÖ5ßNÆ ºí¹N¾Ó×óÖ ºÓÒõÒ××6ßWãôÖ±Îëµ ºôÖÒÎÆÆ±Ê±Î±Î ¾ôÖóÒÛôÖõÖÓÕÎÓÒ ¾›óÓÖÔÎÓ×oÆìµôÖÿÿÿÿ9닱ßß÷ßóÞïßóßó¾ï¿ï¿ï¾ïßóßóÞóß÷ß÷ßóßóßóßó¾ëžã¾ëß÷½÷­µ­µ­µ­µ­µ­µ-¾ÓÒ×ÔÎôÎôÖÛÊ ¾ º ºõÖ7ÛôÒÓÊÓÎÓÎ×5߯.¾×ÓÎôÖpʵ­µ­µ­µÌµ‘ÊôÒÛ5ß̵­µ­µ­µì¹±Î×6Û.ÂÓÒÛÒÎÒÎÒÎÒÒ۱Πº.Â-ºÓÎ6ÛÛ¾Û7ÛÛ6ßÛÊÛ6ß/Â/ÂÛÆÆ±Ê‘ÊpÆOÆ.¾±ÊóÒÓÒoƲÎÓõÎ6Û.¾pƲΒÊõÒÛ±Îëµ’ÎÞûÞ÷½óÂÛžçžããããžã¾ëßïßóß÷ßóßó¿ï¾ë¾ë¾ë:ß÷Öžçãßóÿûþÿ­µ­µ­µ­µµ­µN±Ê×ôÎõÒ×ÛÛ‘Ê’Ê×ÓÔβʲÊÓÎÒÎóÒÒÒ-¾pÆÓÒóÒôÒʬ±­µ­µ­µÌµ²ÎÛÛÛ̵­µ­µ­µí¹±Ê×6ã.±ÊôÖ6ßÛÊÒÒÛôÖìµëµ.¾ôÎ×ôÖ¾7ß××xç¾NÂÆ6ßóÖì¹ôÚóÖÒÎÊì¹ì¹ ºÓÒóÒ²ÎÊ/ÂpÊOÂÓõÎÓÎO º‘ÊÓÊõÒ’Îìµ8ãÿû¾ïç[ß|ß\ß\ß}ß}ãžç¾ëßïß÷Þ÷{çœë¾ï¿ï¾ë¾ï¾ïrÊRÆžç¾ëÿ÷ÿÿ¼÷͹­µ­µ­µ­µ­µ­µ-¾/Â6ß×Û7ß7ß×õÒõÒôÒôÒôÎÓÊÓÎôÒ×ÒÒoÆìµpÆóÒÓÊÓΑʬ±­µ­µ­µÌµÓÖWã×6ß-¾Ìµ¬±¬µ.ÂÒÒÛxëNÂÓÎ×5Û.Âʱ ºÛ6Û‘Ê.¾±ÊÓÎײΠºÛôÒ6Û6ßì¹pÆ º×ôÖpÆìµôÖóÖ-¾¬±î¹ ºÛôÖôÖ‘Î’Ê8ß ºôÖõÒ6Û×ôÖõÒõÎôÎ’Ê ºõÚœïë:ßÖÒ:ß}ã¾ëÞóßóßó¾ï¾óÞóßQÆ÷Úß÷ßóß÷ÿ÷œï1Æ:ß¾ë¿ïßûÝû”Ö¬µ­µ­µ­µ­µ­µ¬µ ¾-¾6ãWç6Û7Û7Û7Û×óÎôÒôÎôÒôÒôÒ×5ÛoÆ.¾.¾-¾ÒÊÒÊÓβά±­µ­µ­µÌ¹ôÚ6ß×6ßÓÖëµÌµí¹²Î6ß6Û6ßNÂÓÎÓ6ß-¾-¾ËµôÖóұʱÊÒÊóÎ×ÒÒ º²ÎôÒôÖôÖìµ¾ ºÓÒôÖÓÒ ºpÆÒÒ ºÍ¹Í¹¾ÓÖÒÎÒÒ²Ò¾Xã.¾qÊVßôÖÛ6ßôÒÔÊ×²Ò ºÌµ­µï½Í¹‹±Íµ”ξ÷ÿû¾ï¾ï¾óœïÖÚî½Â8ãÞ÷ÿûÿûÿûÞ÷çžë¿ó½ó÷Þ0ÆÍ¹­µ­µ­µ­µ­µ­µ­µ ¾ ºßxë6ß6Û×××ÓõÎõÎõÎõÒÓóÒÊ ºëµ.¾oÆÒαÆÓÊÒÒ͵­µ­µ­µí¹ôÚ5ß××ÛÛôÖÛ7ß7ß6߲ΠºÔÎõÒÛ.Âí¹ì¹ÒÒÒÒ±ÆÓÊóÒ×±ÎëµÓÎôÒ×Û¾¾ ¾±ÊôÖóҲΠ¾ÓÒOÂì¹OÆ.Â5ßÓÎÓαΠºXã³ÎOÂWã×Û×ôÖôÒ5Û‘Î ºÔÒÖҔΔÎ÷ޔξrÊ8ã9ããÕÖ0Æ0ÆÂÖÚßûÿûÿûÿûß÷ßóßóÞ÷÷Þî½­µ­µ¬µ­±­µ­µ­µ­µ­µ­µÍ¹ º²Îšï6ß×××7Û8×Ó8×7ÛôÖÊ.¾.ÂôÖôÖ¾OÂóґƒƲʾ­µ­µ­µí¹ÓÒWã××ÛWßXã7ß7ß7Û6ÛoÆìµõÖÔÎôÒNÂ͵ì¹OÆôÖ²ÆÓÎôÎôÒ6ÛÊ˱ôÖ××ôÒ.¾í¹OÂpÆÛôÒÓÎOÂpÆóÒPÂpÆPÆOÂÓÎ×ôÖ.¾Zã8ßì¹ôÖ5Û××××ÛÒÒëµÛ|ã[ã9ß9ã¾ï[ã”Ò0Â0ÂQÆsεҔÎrÊÞ÷ÿûÿûß÷ßó¿ïß÷ÿû8笱­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºoÆwçxç6Û7Û6ßÛõÖÓұΑÊoÆpÆÓÒôÖ×6ßóÖ.¾óÒÒÎÒÎÊì¹­µ­µ­µî¹-¾Wã6ßÛXãXßWß7ßXß7ßÓÎ ºËµÓÎÒÎ×oÆí¹Í¹ ¾×õÎõÎôÎ×ôÖ,¾Ë±²ÎôÖÓÊÔÎ.¾Íµ/ÂìµÓÎ7ßÓÒÓÖ ºóÒÂÓÎôÖPƲÊõÎöÒ.¾zçœëpÆpÆ6ß×××ôÒôÒóÖì¹×}ã[ã9ß\ã~ß}ã[ã}çëœë[ç:ãQÆãÿÿÿûß÷ßó¿ïßóÿûßû’Ò¬µÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ ºO‘ÎÊpÊpÆ.Â.¾qʲÎôÖ6ßXãWß6ß×5ß6ß.¾NÂN ºÌµ­µ­±­µ­µ­µÌµ ¾±ÎôÖXãXãWã6ßôÚÊ ºí¹ìµÊÒÒÓÖì¹Ìµ­µÌµpÆôÒôÖÒÎÆNÂ˵칱ÎßÛʾ­±Í¹ ¾oÆ7ß×ôÖ.¾ÛÆ‘ÆÓÒpʳÎÛôÒºZßZçÔÖ º6ßÛ×õÒÓ×ÒÎìµÛ|ãZç:ßÓ<×|ççžçç|ë{çµÒrʽóÿûÿûÿûÿ÷ß÷ÿûß÷ë0¬µÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ¬µÍ¹¬µ¬µ­µí¹±ÎWã7ßXãzçÛÓÒõÖ6ß6ã6ßÛ.Â̵­µ¬µ­µ­µ­µ¬µ­µ¬µ¬µ¬µí¹ìµìµ ¾ì¹Ìµ¬±­µ¬µÌ¹Ë±ëµìµÌµ­µ±¬µËµìµì¹ëµËµÌµ­µÍµì¹-¾-¾ º/Â͹¬µí¹ ¾-¾ ¾ ºOÂÛôÒ²ÎpÊ º-¾oÂ.¾PÂzç9ãYç’Î.¾²ÎÓÒÓÒ²ÊpÆìµ0º[ßZçZã;Û<×|ã|ç¾ë}ã}ç{ë|ëQÊãÿûÿûß÷ÿûÿûÿûÞ÷9ãSÆtÊrÊ͹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ­µ­µì¹ôÖ7ß7ÛYãÛ ¾ ¾.¾7ßXç5ß6ãÎ͵µ¬µ¬µ­±­±±­µ­µµ¬µ¬µ­µ¬µ­µ­µ­µ­µ¬µµ­µ¬µÍ¹í¹í¹í¹ÍµÍ¹ÍµÌµì¹.¾.¾í¹Î¹­µÍ¹.¾ º ¾ ¾ ¾/¾­µÍ¹Í¹î¹0¾qÆqÆqʳÒÛµÎÕÒ÷ÖZßZã:ã[ßZß÷ִγγғÎÕÒÖÒ[Û|ç{ç\ß]Û}ã|ëçç|ã|ç|çÖÒsξ÷ÿûÿûÿûÿûÿûÞ÷µÒ¾¶Æ;×øÚ͹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ ¾6ßXã8ßYßqÆÌµ­±¾qÊ™ïxë6ãOƬ±Íµî½¾N¾µ¬µ¬µ«±Ëµì¹ì¹«±¬µ¬µ­±µ­µ¬µí¹ì¹.¾OÂʲÎÊìµ ºoƱÎÓÒpÆ ¾ º.¾N¾²Ê²Ê‘ÊÆNÂ.Âî¹­µÎ¹RÆøÎ[ß{çZë8ß\ß|ßçç{ë9ç{ã|ãçç{ç9ßç}ãã}ã|ã[ã\ã<Û}ß|ë|çã}ã}ç{çZã0Â:ã¾ïßóß÷ßóßóß÷œï¾–ÆùÎ\ß{ç­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ º×ÛXßYãºÍ¹µ¬µî½/ÂPÆí¹¬µ¬µ.¾pÆÓÒôÖÊ ¾ì¹¾Ìµ ºôÒ×6ßÒÒ ¾ÌµÌµ­µ­µ­µìµôÖ×ôÎôÒÛÛO‘ÎôÒ‘ÆpÆÓÒ±Ê º.¾ÓβÊÓÒõÒÔαÊNÂ͹͹0Â×Ê:×{ã{ëYç{ã|ß}ã}ãëZë{ëœçžëççZç[ã}ß}ß}ß\Û\ã[ã\ß]ßçœëë¾ëžëë|ã”ÎQÆ}ç¾ë¾ë|ë|ëÞ÷ÞûãsÆ×\ßç¾ïrέ¹µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ º×7ÛXßXã-¾í¹­µ­µ¬µ­µ¬µ¬µ¬µí¹ÓÒ6ÛXß7ßWã6ßÓÒ ¾.ÂOÂYã×ôÒôÒ5ßÛoÆì¹Íµ¬µËµ³ÎõÒõÒÛ6ã6ãNÂÓÒ ºÌµÍ¹¾²ÎNÂOÂ²Ê‘Ê º º³ÎÛoÆÎ¹ï½tÆÏ|ã{ã{çZç|ã}ã}ß\Û{çZëëëžë½ë{ç[ç}ç}ß}ß]Û\ß;Û\Û]ßçœëë¾ë¾ï¾ï\çøÖï½ÕÖ½ïë[ç1Æ1ƵÖsÎÊ}ãžçžëžë÷Úι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ/ÂÛ6ÛXãWç ºÍµ¬µ­µ­µµ­µ¬µ¬µOÂÛÛyçXãWãyëXçÛ ºpÊšëXßôÒ³ÎôÒõÒôÖ²ÎìµÍµËµOÂ×õÖoÆ ¾ º ºÓ¬µOÂpÆÊº²Ê.¾¾.Â.±Ê¾î½¾×Ê[Û|ç{çZç{ççžç\Û|ãZëœïëç}ãœëzë|ç}ß}ß]ß}ß|ã;Û\Û}ãë|ë¾ï¾ë¾ï|ë:Û1Âî½Î¹0¾͹ι͵ιι¾•Êçžçžë}ãZãï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßXãšïšï ºÍ¹­µ­µ­µ­µ­µ¬µÍ¹ÓÒ7Û6ÛÓÒoÆpÆÛXãÛÊ-¾yë7ßõÖôÖÓÒ×Û6Û±Î칩­pÆõÒ‘ÆÊ±í¹ì¹oÂôÒ‘Æìµí¹OÂÒÒnÆ.ºÓÎ-¾¾­µî¹Ì¹î¹î½RÂÓ\ß|ç{ç{ç|çã}ß}ãœë{ï½ïççœç{ëZç}ã}ß}ß]ß}ç:ß;×<×ç|ç¾ï¾ëžç½ó|ç۾ι­µ­µ­µ­µ­µ­µ­µ­µQÆ×Ö¾ë¾ï¾ï}ã{ç¾­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßYãyç7ç.Â͹­µ­µ­µ­µ­µÍµí¹õÚ6ß²Ê ºî½OÆ-¾ôÖ6ÛóÖêµôÖXãÛ ¾OÆOƲÎ×6ßÎʱ³ÎõÒ²Îëµî½í¹ÊÓÎÒÎÓÎÓÒÓÒ,º ºpÆÓÒO ºOÂ/Âî½î¹ºÖÊ:×|ã{ëZç[ã|ã}ß<×}ç{ïœëëç}çœë{ë|ç}ã}ã\Û}ã|ç;ß<×[Û:ßçžë}ãžëœï{çsÊï½µµ­µ­µ­µ¬µ­µ­µ­µ0Âß¾óßó¾ïçZç͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ‹±¾Xãyç™ëxëÂ͹­µ­µ­µ­µ­µÍ¹ìµ7ãxë.¾¾­±­µOƲÎXãÛ뵑ÊXã7ß.Âî¹î¹.¾²ÎWãßNÂ.¾õÖÓÖoÆ.¾.¾ ºÓÒÓÎÓÎôÖ-¾ëµÊ±ÓÒôÖÓβÊpÂOÆ º¾ÕÒ:ÛלëZçZã|ã\ß\Û\ß|ëœïëç}ãë{ë{ççžç}ß}ßë[ã;Û\Û{çZãçžçç¾ó{çÛï½Î¹¬µ­µ­µ­µ­µ­µ­µ­µÍ¹0Â\çßóß÷¾ëžë8ãî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ«±ìµ7ßxçxçyëÂ͵­µ­µ­µµ­µí¹ëµôÖyç‘ʾ¬µ­µ.ÂPÆXçWã,¾oÆ7ß7ßPÆÍ¹­µ¾PÆÛßoÆí¹××õÒ×ÛOÆpÂôÒôÒoÆNÂ-¾ìµ-¾‘ÊÓÒÛõÖÛõÖ.¾º9ß{ãœëZç|ç|ß]Û<×çœëœë}ã|ß}ãœë|ëç}ã}ß\Û|ç[ã;Û\Û|ç{ç|çžçžç¾óï{çrÊïÁ­±­µ­µ­µ­µ­µ­µ­µ­µÎ¹1Â\ã¾ï¿ïžç¾ïÕÚî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµëµßšëyë»óOÆÍµ­µ­µµ¬µÌµì¹ º ¾‘Ê7ÛÔÖ͵­µ/ÂpÆXçWçnÆ º6ÛÛOÆ­µµ­µ.¾²ÎÛ±Îì¹ôÒ7ßÛ6ßWã²Î‘Ê×õÒ×ÛôÖO ºí¹.¾¾OÆõÖõÒóÖ-¾“ÎzçZç{ç|ã\ß<×}ß{çœëç|ß\ßœçœïëžç}ã\Û}ã[ç:ß|ß¾ç|ë|ë}çç¾ï½ó[ç÷Ú­µ­µ­µ­µ­µ­µ­µ­µ­µÎµ¾¶Îžç¾ëžç}ãï0ÆÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ëµÓÒXãyëÜ÷ÓÖ͵­µ­±­µÍ¹.ÂÒÒß6ã.³ÎX㾬µ¾.¾ÛÛ. ¾7ß6ßpÆÍµ¬µ­µ/‘ÊóÒÒÒìµÓÎ6ãôÚNÂʵ˱6ßÛÛÛöÖ6ÛÓÒí¹­µ­µÍµ.Â.¾õÒÔÒMÂ/¾Yã9ã{ç}ã\Û<×|ã{ëœï}ã}ã|ãœëœï¾ëžç\ß|ß|ç9ß;Ûç½ëœïœëçë¾ó|ë[ãQÆï½­±­µ­µ­µ­µ­µ­µ­µ­µ¾¾מçžçžç}ãøÚ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµ³Ò™ëyë¼óßî½­±­±­µí¹ÒÎ6ÛÛ6ßOƲÎ7ß.­±Â.¾6ÛÛ.‘ÎXã7ßPÆî¹¬µ.Â.²ÎôÖÓÖ ºÓÎÛ.Âí¹Ìµ.¾šïßÒÒìµ/¾ÓÎôÒ¾¾Íµ¬±/Â-¾õÒôÒoƾ8ã9ã}ç}ß<Û\ß|çœï½ï}ã}ã|ë›ë½ëžç}ß\Û|çZãÛ\ßžë½ï¾ó¾ïç¾ï½÷{ãÖÖî½­µ­µ­µ­µ­µ­µ­µ­µ­±ÎµRÆØÒ\ß}ßžç~ã\ßQÆÍ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.™ïšëyë7ãOÆí¹î½í¹qÆôÒôÎôÖÛNÂÓÎÛOÆPÆpÊOÆ7ßôÖ ¾õÚzçÛOÆ/Â.ÂNÂqÆ7ßWãÓÖì¹ôÖóÖ ºí¹Ì¹oÆxëߑΠ¾ì¹pÂõÖ‘ÎOÂì¹ìµìµÓÒ8ßWãoÆqÆYç{ç}ã]ß]ß|çœï½óë\ß|çœïœï¾ë}ã<Û\ã|ç9ß;×ã¾ï½óÞóëë½óœë[ã1Âï½­µ­µ­µ­µ­µ­µ­µ­µ­µRÆ•Ê<Û\Û~ã}ã\Û×Ö͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµõÚšë™ë»ó6ßOÂOƲÎÛ××6ßÒÒ-¾ôÖõÒÓÎpÆ‘ÎÛVã‘Î º7ãyç×OÆ.¾N³Ò7ß7ßÛÊ/ÂÛ6ßOÆÊ±Ë±Ê±ÓÒXãßí¹¬µpÆ6ßõÚOÂÔÖ³ÊÔÒXãyçôÚ ºöÖzçç}ã]ß}ã|ç¼ó¾ï}ã}ßœë{ëïë\Û]ß}çZã×;מë¾ïÞó¾ë}ãçœë[ãßï½Î¹­µ­µ­µ­µ­µ­µ­±­µ1ÂsÆ;Û}ß}ãžç~ç:ßÂ͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.Â7ãšëšïšëXçXã7Û6Û7Û6ÛÛpÊ.¾ÛÛõÎÓ7Û6ßÛ ¾ì¹ôÖ7ß6ßÛôÖÛ6ß6ßÛóÖì¹³ÒÛ×ÒÒNÂN¾oÆ ºöÖ7Û¾­µ ºôÖXçN²ÎôÖõÖ7ã5ßpÆ“ÎZç|ç|ß}ã]ßçï½óë<Û\ßœïœï¾ï}ß;×|ã[ç:ß;×]ß¾ï¾ó¿ï}ã}ãë{ç:ã1Æï½±­µ­µ­µ­µ­µ­µ­µ0ÂRÆ×}ãžçžçç|ç´Ò͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µî¹PÆWãyçXãXß7Û7Û6Û6ßôÖ‘Êí¹Í¹pÊxç×ÕÊ×ôÖOÆî½ ºpÆ6ÛÓÒôÖÛÛÛ±ÎNÂìµÌµÛ7ß×7ÛÛ6ÛÛ ¾ß7ã ¾­µí¹±Î7ãÊ˱-¾‘ΑÊpƳÒ8ã{ç}ã}ß]Û]ßëœï½ï\ß<Ûëœï½ïžë\Û;Û|ç:ß:×\Ûçï¾ëžç}ãçœë[ãÖÖι­µ­µ­µ­µ­µ­±­µÎ¹¾”Ê;Ûžç¿ë¾ë¾ë¾ï÷Úι­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¾²ÎÛ6Û6Û×ÒÎÊ.¾Íµ¬µ­µ.¾pÆõÖ³Îqʾ͵¬µí¹-¾±ÊÒÒÓÒÊOÆ.¾Ìµ¬µ­µ«±³ÒXã×YßXãÛÒÒì¹. ºÌµ¬±Íµ-¾Û²Ò¾’ΓÊõÖYçzë8ã|ç}ß]ß]ßçœï½ïë]ßç{ëœïï}ã\Û|ãZã:Û;×\ßëëã~ãçë{ã[ã1ÆÎ¹­±¬µ±­µ­µÎ¹ï¹¾¶Î\ãžë¾ï¾ï¿ïÞóZçî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±í¹í¹¾í¹Ìµ¬µ¬µµ­µ­µÍµí¹í¹¾î¹­µŒ±­µ¬±¬±¬µÌµÌµ¬µ­µ­µ¬±¬µµÌµì¹.¾ ¾¾í¹ì¹ËµÌµ«±¬µ¬±±­µ ºôÚ7ãOÂrÂ×{ãZç9ã[ç|ã}ß\ß}ãëïžë}ß|ß½ï{ïœïç}ãç{ë:ß;Û<×}ãë}ç}ß}ãë|ç[ß÷Öî½­µ­µ­µÍ¹î¹ï¹¾–Ê<Û}ã¿ë¿ï¿ï¿óßóYçµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­µµµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µµµ±­µ­µ­µ­µ­µ­µ­±¬µÌµ‘ÊXã²Î º×ZßYã9ã|ã}ß|ß}ßçœë½ï}ç\Ûžë½óœïë}ãçœëZã:Û<×\ßëç\ß\Ûçœï[ã[ß1Æï½Î¹Î¹ï½1Æ•ÊùÖ<Û~ãžãžçžç¾ë¿ïÞ÷ãµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºõÖ7ÛpÆOÂ8ßYç{ç|ß\ß\ß|ãœëœëë\Û}ã½ó½ó½ëç}çë[ç:ß;×<×|ãë}ã}ß}çë{ç[ßÖÒ”Î:ßß:ãœï¾ïžëžçžçžã~ã}ßžã¾ï½ó´Öî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÌµpÆ7ÛõÒOÂpÆ8ã|ç|ã\ß}ßë{ëë}ã\ßïœïëç}ãç|ëZã[ß<×\Û}ë}ç}ãžç¾ïœë[ã:Û1¾<Ûžç¾ëžë¿ë¿ëžë¿ë¾ëžã~ç\ß:ßÖÖ0Â͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹’Ê ºÓÎÓôÎOÂ.¾Ûzã[ß\ãœë|ëç\Û|ãœóœïëççëZã[ß\ß\ß}çëã}ãžëï{ç;Û”ÊuÆžë¿ó¾ï¾ï¿ï¿ïžç~ã}ã;ß×ÒRÆï½­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Æ9߯ ºôÒÔÎ×pʾ8ß[ß|ç{ëœç|ß\Û|ë›ïëç}ã|ç{ë[ã\ß|ß|çïžë}ãžç¾ï|ë;Û×RÂ;Û~ççžçžçç[ãÛµÎRÂï¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹ÖÒ\ãyç.Â-ºôÎÓ6Û‘ÊrÆ[ß|ç|ç}ç;Û|ã{ëœëç}ã|ã{ë[ç\ã}ßç½ïëžã~ãžë¾ï[ãÓ•ÎsÆÛøÖ¶Î”ÊRÆÂï¹Í¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Â×\Û{ã8Û.¾NÂôÒÛ±ÎqÂ[ã{ç|ç|ã[Û{ç{ëœë}ç\ß|çZã[ã|ß|ãëëžç}ã}ãžëœë×øÎî¹ï½Î¹Î¹­µ­µ­µ­µ¬µ­µ­µ­µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÎ¹ØÒ<×}ã|ßZßßOÂ.ºoÆqÆ×{ã{çë|ã{ã{ëœëç\ß[ßZçZã|ã}ãœë½ëç}ß]ßçœë[ç:×R­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï¹Ó;×\ß[ßZã9ßZß××[ß|ã[ß{ã|ã[ß{ã{ç|ç|ã[ß[ç:ã[ß|ß|çïç}ß\Û}ßë{ç[ß÷Ö͵­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±ºÓ\Û\ã[ß9Û:Û;Û[Û|ß}ã[ß[ß|ã[Û:Û:ß[ß[ß\ß|ãYãZã\ß|çïë}ã\Û\Û}ã|ç:Û9×1­µ­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬±ð¹ùÎÓ|ãç{ç:ß[Û\Û|ß|ã[ß{ã}ã|ã[ã[ã[ß;Û;Û:ß:ß|ç|ãœëœï}ã}ß<Û}ß|ç[ãϵÎ͵­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹sÂØÊ;Û[ß{ãZã[ã[ß[ã[ã{ã|ß|ãç{ã[ã\ß;Û:Û×:Û|ã{ãœëœë|ã\Û\ß|ã|ç×øÎï¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹1¾×Ò:Û;Ûëë}ç|ã|ß\ß\Û|ß|ç{ã[ß:Û:×9Û:ß|ã[ß[ã|çë}ã\ß|ã|ã[ß:×sÊ͵¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½1µÎ[ã|ãç¾ëžç}ã\Û\ß\ß\ß[ß:Û:Û;ß[ß[ã|ã[ã|ã|ã|ß}ß|ã[ã;×øÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½sÊøÖ\ã}ççççç}ã\ß;Û;Û[Û\ß[ß[ß\ß\Û\Û\ß}ã[ã[ß:ÛrÊι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ¬µ­µ¬µÍµ0ƵÒZãëë|çç|ç|ã|ß|ã\ß\ß;Û;Û\Û\ß|ã[ã[ß;Û÷Öï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹RÆß{ç{ç|ç|ã|ãç|ã|ã[ß:Û[ß[ßZß[ã[ß;ßRÊ͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µÎ¹QÆÖÖöÚ{ç|ç|ã|ß}ã|ã:ß:ßZãZã|ç;ÛÖÒî½­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±­µ­¹î¹1ƵÖß[ã|ã|ß\Û|ß|çë\ßøÒ0Âι­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½î¹tÊøÖ×\ßžç}ã[ßµÎι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹î½ÂRʵÒ×ÒÖÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ±­µ­µ­µÍ¹Î¹ï½î½­µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_pal.bin new file mode 100644 index 0000000000..e9b04b72bf --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_pal.bin @@ -0,0 +1 @@ +¸6x&w.V*6&6"5"&Ò%c C¾ov2V&¹.Ô \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_tex.bin new file mode 100644 index 0000000000..03068e687d Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_pal.bin new file mode 100644 index 0000000000..9b1d466d21 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_pal.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_tex.bin new file mode 100644 index 0000000000..1e4cd1c853 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_pal.bin new file mode 100644 index 0000000000..174ed18640 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_pal.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_tex.bin new file mode 100644 index 0000000000..5254cb965d Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_pal.bin new file mode 100644 index 0000000000..0d7b385707 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_pal.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_tex.bin new file mode 100644 index 0000000000..ade6231da9 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_pal.bin new file mode 100644 index 0000000000..0ee8f0fa71 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_pal.bin @@ -0,0 +1 @@ +>ò9Ñ5°1¯--Ž-Ž)n)m)m%L%œsvJÓ1Ç \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_tex.bin new file mode 100644 index 0000000000..036f1a1bec Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_pal.bin new file mode 100644 index 0000000000..18a6bc0b4f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_pal.bin @@ -0,0 +1 @@ +Bï=1F* \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_tex.bin new file mode 100644 index 0000000000..0acb3a4efd Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_pal.bin new file mode 100644 index 0000000000..2664fc4571 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_pal.bin @@ -0,0 +1 @@ +}[Ž!–B§ \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_tex.bin new file mode 100644 index 0000000000..b6d1e38795 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_pal.bin new file mode 100644 index 0000000000..d770464540 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_pal.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_tex.bin new file mode 100644 index 0000000000..7084002f86 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_pal.bin new file mode 100644 index 0000000000..f855ce6411 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_pal.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_tex.bin new file mode 100644 index 0000000000..8ca2cfe3b0 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_tex.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Picking/Makefile b/packages/libndsfpc/examples/graphics/3D/Picking/Makefile new file mode 100644 index 0000000000..e98c5d919d --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Picking/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=Picking +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Picking/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Picking/Makefile.fpc new file mode 100644 index 0000000000..0ad7e948c0 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Picking/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=Picking + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Picking/Picking.pp b/packages/libndsfpc/examples/graphics/3D/Picking/Picking.pp new file mode 100644 index 0000000000..419d30712c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Picking/Picking.pp @@ -0,0 +1,174 @@ +program picking; +{$L build/cone.bin.o} +{$L build/cylinder.bin.o} +{$L build/sphere.bin.o} + +uses + ctypes, nds9; + +{$include inc/cone.bin.inc} +{$include inc/cylinder.bin.inc} +{$include inc/sphere.bin.inc} + +type + TClickable = ( clNothing, clCone, clCylinder, clSphere); + +var + clicked: TClickable; // what is being clicked + closeW: integer; // closest distace to camera + polyCount: integer; // keeps track of the number of polygons drawn + +// run before starting to draw an object while picking +procedure startCheck(); +begin + while PosTestBusy() do; // wait for the position test to finish + while GFX_BUSY do; // wait for all the polygons from the last object to be drawn + PosTest_Asynch(0,0,0); // start a position test at the current translated position + polyCount := GFX_POLYGON_RAM_USAGE^; // save the polygon count +end; + +// run afer drawing an object while picking +procedure endCheck(obj: TClickable); +begin + while GFX_BUSY do; // wait for all the polygons to get drawn + while PosTestBusy() do; // wait for the position test to finish + if (GFX_POLYGON_RAM_USAGE^ > polyCount) then // if a polygon was drawn + begin + if PosTestWresult() <= closeW then + begin + // this is currently the closest object under the cursor! + closeW := PosTestWresult(); + clicked := obj; + end; + end; +end; + + +var + rotateX: cuint32 = 0; + rotateY: cuint32 = 0; + touchXY: touchPosition; + viewport: array [0..3] of cint32 = (0,0,255,191); // used later for gluPickMatrix() + keys: u16; + +begin + // initialize gl + glInit(); + + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + lcdMainOnBottom(); // we are going to be touching the 3D display + + // enable edge outlining, this will be used to show which object is selected + glEnable(GL_OUTLINE); + + //set the first outline color to white + glSetOutlineColor(0,RGB15(31,31,31)); + + // setup the rear plane + glClearColor(0,0,0,0); // set BG to black and clear + glClearPolyID(0); // the BG and polygons will have the same ID unless a polygon is highlighted + glClearDepth($7FFF); + + // setup the camera + gluLookAt( 0.0, 0.0, 1.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); // setup the light + + while true do + begin + // handle key input + scanKeys(); + keys := keysHeld(); + if ((keys and KEY_UP)) = 0 then rotateX := rotateX +3; + if((keys and KEY_DOWN)) = 0 then rotateX := rotateX -3; + if((keys and KEY_LEFT)) = 0 then rotateY := rotateY +3; + if((keys and KEY_RIGHT)) = 0 then rotateY := rotateY -3; + + // get touchscreen position + touchXY := touchReadXY(); + + glViewPort(0,0,255,191); // set the viewport to fullscreen + + // setup the projection matrix for regular drawing + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(60, 256.0 / 192.0, 0.1, 20); + + glMatrixMode(GL_MODELVIEW); // use the modelview matrix while drawing + + glPushMatrix(); // save the state of the current matrix(the modelview matrix) + glTranslate3f32(0,0,floattof32(-6)); + glRotateXi(rotateX); // add X rotation to the modelview matrix + glRotateYi(rotateY); // add Y rotation to the modelview matrix + + glPushMatrix(); // save the state of the modelview matrix while making the first pass + // draw the scene for displaying + + glTranslate3f32(floattof32(2.9),floattof32(0),floattof32(0)); // translate the modelview matrix to the drawing location + if (clicked = clCone) then + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(1)) // set a poly ID for outlining + else + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(0)); // set a poly ID for no outlining (same as BG) + + glCallList((@cone_bin)); // draw a green cone from a predefined packed command list + + + glTranslate3f32(floattof32(-3),floattof32(1.8),floattof32(2)); // translate the modelview matrix to the drawing location + if (clicked = clCylinder) then + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(1)) // set a poly ID for outlining + else + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(0)); // set a poly ID for no outlining (same as BG) + + glCallList((@cylinder_bin)); // draw a blue cylinder from a predefined packed command list + + + glTranslate3f32(floattof32(0.5),floattof32(-2.6),floattof32(-4)); // translate the modelview matrix to the drawing location + if(clicked = clSphere) then + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(1)) // set a poly ID for outlining + else + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_ID(0)); // set a poly ID for no outlining (same as BG) + + glCallList((@sphere_bin)); // draw a red sphere from a predefined packed command list + + glPopMatrix(1); // restores the modelview matrix to where it was just rotated + + // draw the scene again for picking + clicked := clNothing; //reset what was clicked on + closeW := $7FFFFFFF; //reset the distance + + //set the viewport to just off-screen, this hides all rendering that will be done during picking + glViewport(0,192,0,192); + + // setup the projection matrix for picking + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPickMatrix((touchXY.px),(191-touchXY.py),4,4,viewport); // render only what is below the cursor + gluPerspective(60, 256.0 / 192.0, 0.1, 20); // this must be the same as the original perspective matrix + + glMatrixMode(GL_MODELVIEW); // switch back to modifying the modelview matrix for drawing + + glTranslate3f32(floattof32(2.9),floattof32(0),floattof32(0)); // translate the modelview matrix to the drawing location + startCheck(); + glCallList((@cone_bin)); // draw a cone from a predefined packed command list + endCheck(clCone); + + glTranslate3f32(floattof32(-3),floattof32(1.8),floattof32(2)); // translate the modelview matrix to the drawing location + startCheck(); + glCallList((@cylinder_bin)); // draw a cylinder from a predefined packed command list + endCheck(clCylinder); + + glTranslate3f32(floattof32(0.5),floattof32(-2.6),floattof32(-4)); // translate the modelview matrix to the drawing location + startCheck(); + glCallList((@sphere_bin)); // draw a sphere from a predefined packed command list + endCheck(clSphere); + + glPopMatrix(1); // restores the modelview matrix to its original state + + glFlush(0); // wait for everything to be drawn before starting on the next frame + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Picking/data/cone.bin b/packages/libndsfpc/examples/graphics/3D/Picking/data/cone.bin new file mode 100644 index 0000000000..577dd5649b Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Picking/data/cone.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Picking/data/cylinder.bin b/packages/libndsfpc/examples/graphics/3D/Picking/data/cylinder.bin new file mode 100644 index 0000000000..8f38f8f02c Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Picking/data/cylinder.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Picking/data/sphere.bin b/packages/libndsfpc/examples/graphics/3D/Picking/data/sphere.bin new file mode 100644 index 0000000000..008e7fec60 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Picking/data/sphere.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile b/packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile new file mode 100644 index 0000000000..0b2500a8c3 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=SimpleQuad +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile.fpc new file mode 100644 index 0000000000..1469fc9a11 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Simple_Quad/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=SimpleQuad + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Simple_Quad/SimpleQuad.pp b/packages/libndsfpc/examples/graphics/3D/Simple_Quad/SimpleQuad.pp new file mode 100644 index 0000000000..956db8516c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Simple_Quad/SimpleQuad.pp @@ -0,0 +1,90 @@ +program SimpleQuad; + +uses + ctypes, nds9; + + +var + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keys: cuint16; + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 1.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + glPushMatrix(); + + //move it away from the camera + glTranslate3f32(0, 0, floattof32(-1)); + + glRotateX(rotateX); + glRotateY(rotateY); + + + glMatrixMode(GL_MODELVIEW); + + + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + scanKeys(); + + keys := keysHeld(); + + if ((keys and KEY_UP)) <> 0 then rotateX := rotateX + 3; + if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX - 3; + if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY + 3; + if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY - 3; + + //draw the obj + glBegin(GL_QUAD); + + glColor3b(255,0,0); + glVertex3v16(inttov16(-1),inttov16(-1),0); + + glColor3b(0,255,0); + glVertex3v16(inttov16(1), inttov16(-1), 0); + + glColor3b(0,0,255); + glVertex3v16(inttov16(1), inttov16(1), 0); + + glColor3b(255,0,255); + glVertex3v16(inttov16(-1), inttov16(1), 0); + + glEnd(); + + glPopMatrix(1); + + glFlush(0); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile b/packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile new file mode 100644 index 0000000000..e2b219ddc5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=SimpleTri +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile.fpc new file mode 100644 index 0000000000..ba3f5eed6a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Simple_Tri/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=SimpleTri + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Simple_Tri/SimpleTri.pp b/packages/libndsfpc/examples/graphics/3D/Simple_Tri/SimpleTri.pp new file mode 100644 index 0000000000..0217adfbab --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Simple_Tri/SimpleTri.pp @@ -0,0 +1,88 @@ +program SimpleTri; + +uses + ctypes, nds9; + + +var + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keys: cuint16; + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 1.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + glPushMatrix(); + + //move it away from the camera + glTranslate3f32(0, 0, floattof32(-1)); + + glRotateX(rotateX); + glRotateY(rotateY); + + + glMatrixMode(GL_MODELVIEW); + + + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + scanKeys(); + + keys := keysHeld(); + + if ((keys and KEY_UP)) <> 0 then rotateX := rotateX + 3; + if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX - 3; + if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY + 3; + if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY - 3; + + + //draw the obj + glBegin(GL_TRIANGLE); + + glColor3b(255,0,0); + glVertex3v16(inttov16(-1),inttov16(-1),0); + + glColor3b(0,255,0); + glVertex3v16(inttov16(1), inttov16(-1), 0); + + glColor3b(0,0,255); + glVertex3v16(inttov16(0), inttov16(1), 0); + + glEnd(); + + glPopMatrix(1); + + glFlush(0); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile new file mode 100644 index 0000000000..36a380d474 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=TexturedCube +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile.fpc new file mode 100644 index 0000000000..b3acfc895f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=TexturedCube + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Cube/TexturedCube.pp b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/TexturedCube.pp new file mode 100644 index 0000000000..d12c2707e3 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/TexturedCube.pp @@ -0,0 +1,185 @@ +program TexturedCube; + +{$L build/texture.bin.o} + +{$apptype arm9} + +{$mode objfpc} + +uses + ctypes, nds9; + +//texture_bin.h is created automagicaly from the texture.bin placed in arm9/resources +//texture.bin is a raw 128x128 16 bit image. I will release a tool for texture conversion +//later +{$include inc/texture.bin.inc} + +var + CubeVectors: array [0..23] of v16; + CubeFaces: array [0..23] of u8; + uv: array [0..3] of u32; + normals: array [0..5] of u32; + +procedure Initialize(); +begin +//verticies for the cube + CubeVectors[0] := floattov16(-0.5); CubeVectors[1] := floattov16(-0.5); CubeVectors[2] := floattov16(0.5); + CubeVectors[3] := floattov16(0.5); CubeVectors[4] := floattov16(-0.5); CubeVectors[5] := floattov16(0.5); + CubeVectors[6] := floattov16(0.5); CubeVectors[7] := floattov16(-0.5); CubeVectors[8] := floattov16(-0.5); + CubeVectors[9] := floattov16(-0.5); CubeVectors[10] := floattov16(-0.5); CubeVectors[11] := floattov16(-0.5); + CubeVectors[12] := floattov16(-0.5); CubeVectors[13] := floattov16(0.5); CubeVectors[14] := floattov16(0.5); + CubeVectors[15] := floattov16(0.5); CubeVectors[16] := floattov16(0.5); CubeVectors[17] := floattov16(0.5); + CubeVectors[18] := floattov16(0.5); CubeVectors[19] := floattov16(0.5); CubeVectors[20] := floattov16(-0.5); + CubeVectors[21] := floattov16(-0.5); CubeVectors[22] := floattov16(0.5); CubeVectors[23] := floattov16(-0.5); + +//polys + CubeFaces[0] := 3; CubeFaces[1] := 2; CubeFaces[2] := 1; CubeFaces[3] := 0; + CubeFaces[4] := 0; CubeFaces[5] := 1; CubeFaces[6] := 5; CubeFaces[7] := 4; + CubeFaces[8] := 1; CubeFaces[9] := 2; CubeFaces[10] := 6; CubeFaces[11] := 5; + CubeFaces[12] := 2; CubeFaces[13] := 3; CubeFaces[14] := 7; CubeFaces[15] := 6; + CubeFaces[16] := 3; CubeFaces[17] := 0; CubeFaces[18] := 4; CubeFaces[19] := 7; + CubeFaces[20] := 5; CubeFaces[21] := 6; CubeFaces[22] := 7; CubeFaces[23] := 4; + + //texture coordinates + uv[0] := TEXTURE_PACK(inttot16(128), 0); + uv[1] := TEXTURE_PACK(inttot16(128),inttot16(128)); + uv[2] := TEXTURE_PACK(0, inttot16(128)); + uv[3] := TEXTURE_PACK(0,0); + + normals[0] := NORMAL_PACK(0,floattov10(-0.97),0); + normals[1] := NORMAL_PACK(0,0,floattov10(0.97)); + normals[2] := NORMAL_PACK(floattov10(0.97),0,0); + normals[3] := NORMAL_PACK(0,0,floattov10(-0.97)); + normals[4] := NORMAL_PACK(floattov10(-0.97),0,0); + normals[5] := NORMAL_PACK(0,floattov10(0.97),0); + +end; + +//draw a cube face at the specified color +procedure drawQuad(poly: integer); +var + f1, f2, f3, f4: u32; +begin + f1 := CubeFaces[poly * 4] ; + f2 := CubeFaces[poly * 4 + 1] ; + f3 := CubeFaces[poly * 4 + 2] ; + f4 := CubeFaces[poly * 4 + 3] ; + + + glNormal(normals[poly]); + + GFX_TEX_COORD^ := (uv[0]); + glVertex3v16(CubeVectors[f1*3], CubeVectors[f1*3 + 1], CubeVectors[f1*3 + 2] ); + + GFX_TEX_COORD^ := (uv[1]); + glVertex3v16(CubeVectors[f2*3], CubeVectors[f2*3 + 1], CubeVectors[f2*3 + 2] ); + + GFX_TEX_COORD^ := (uv[2]); + glVertex3v16(CubeVectors[f3*3], CubeVectors[f3*3 + 1], CubeVectors[f3*3 + 2] ); + + GFX_TEX_COORD^ := (uv[3]); + glVertex3v16(CubeVectors[f4*3], CubeVectors[f4*3 + 1], CubeVectors[f4*3 + 2] ); +end; + + +var + textureID: integer; + i: integer; + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keys: cuint16; + +begin + Initialize(); + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + //enable textures + glEnable(GL_TEXTURE_2D); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + vramSetBankA(VRAM_A_TEXTURE); + + glGenTextures(1, @textureID); + glBindTexture(0, textureID); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture_bin)); + + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 1.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + glLight(1, RGB15(31,0,31), 0, floattov10(1) - 1, 0); + glLight(2, RGB15(0,31,0) , floattov10(-1.0), 0, 0); + glLight(3, RGB15(0,0,31) , floattov10(1.0) - 1, 0, 0); + + glPushMatrix(); + + //move it away from the camera + glTranslate3f32(0, 0, floattof32(-1)); + + glRotateX(rotateX); + glRotateY(rotateY); + + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + + glMatrixMode(GL_MODELVIEW); + + glMaterialf(GL_AMBIENT, RGB15(8,8,8)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(5,5,5)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or + POLY_FORMAT_LIGHT2 or POLY_FORMAT_LIGHT3 ) ; + + scanKeys(); + + keys := keysHeld(); + + if((keys and KEY_UP)) <> 0 then rotateX := rotateX +3; + if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX -3; + if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY +3; + if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY -3; + + glBindTexture(0, textureID); + + //draw the obj + glBegin(GL_QUAD); + for i := 0 to 5 do + drawQuad(i); + glEnd(); + + glPopMatrix(1); + + glFlush(0); + + swiWaitForVBlank(); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Cube/data/texture.bin b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/data/texture.bin new file mode 100644 index 0000000000..423699d1f7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/data/texture.bin @@ -0,0 +1 @@ +­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µÎ¹RÊrÎrέµ¬±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÂ1Æï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½RÊsÎ1Æî½­µ­µ­µ0Â÷ÞœóÝûÝûÝû¼óXç1Æ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½“ΛïœïÖÚ´Ö”ÒQÊï½Î¹­µ­µ­µµִÒã¼÷½÷½÷œóãνRÊ›ï½÷ÞûþûþÿþÿþÿþÿöÞ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÍ¹1Æã½ó½ï½óÞ÷þûþÿÞûœórÎ͵RÊã½ó½÷½ó½ó½óÞ÷ÞûÞûÝû“Ò9çÿûÞûÞûÞûÞûÞûþÿþÿÞûÞûZëÖÚß”ÒÂιï½Î¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹RÊzëÞ÷½ï½ïÞ÷½÷Þ÷ÿûÿÿÿÿ½÷´Ò8ß|çœç½ïÞ÷Þûþûþÿÿÿÿÿÿû½÷¾ó¾ïÞó½óÝóÞ÷Ý÷Þ÷Þ÷Þ÷ÞóÞóÞóÞ÷Þ÷½÷›ï½÷´Öî½­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÌµ ¾pÊ-¾í¹¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹”ÒÞ÷Þ÷¾ó½ó½ó½óÞ÷ÿûÿûþûÿûÞ÷ëœçÞ÷ÿÿÿÿÿÿÿÿÿûÿûß÷½ïœï÷Úß{ëÞ÷Þ÷Þ÷Þ÷ÞóÞóÞó¾ï¾ó½ï½ë½óÞ÷þûÿûÝûrÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ«±¬±¬µ¬µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µìµôÖÛÒÒí¹¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µrʾ÷Þ÷›ïÖÖßÞ÷ÞûÞûÞ÷Þ÷Þ÷ÿû¾óÞóÞ÷Þ÷Þ÷ß÷ÿûÿûß÷ß÷¾÷0Ƭ¹Í¹Í¹RÊ{ë½ïœëœçëëëœç|ãœç½ïÝ÷Þ÷Þû¼÷QÊ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ.¾ÊÊ ºìµí¹í¹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½ ¶6Û7ÛÓÎ-¾­µ±­µ­µ­µ­µ­µ­µ­µ­µ­µÍµµÒ¾÷œó1ÆÎ¹9ã¾ó½ó¾ó¾óÞ÷Þ÷Þ÷¾ó½ïë½ïÞ÷ÿûÿÿÿÿÿÿÿÿÿÿÞûÝûÝ÷YëÂ0ÂsÎ9ãë½ë½ë½ë½ï½ï½ïÝóÞ÷Þ÷Ý÷Þûã­µ­µ­µ­µ­µ­µ­µ­µ­µ«±M¾òÒÒβʲÊoÆ-¾í¹î½Íµ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µí¹ ºôÎöÒôÒN¬µ­±­µ­µ­µ­µ¬±¬µ¬µ­µ­µï½:ã¾ózë͹Ûëëë¾óÞó¾óëëëë½ïÞ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿû½÷zë÷ÞsΜï½ï½ï½ïÝóÝóÞóÝó½ó½óÝ÷Zë0Æ­µ­µ­µ­µ­µ­µ­µ­µµ¬µ-¾ÒαÊÓÊÓÊÓÎóÒ±ÎOÆ.¾͵¬µ¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ ºÔÎõÎÓÊí¹¬±­µ­µ­µÍµ¾Ìµ¬µ¬±­µî¹ZçëZç­µ:ßç¾ï¾ï½ïïëë½ï¾óÞûÿûÿÿÿÿßûÿûÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿÿÿÿÞû½÷Þ÷Þ÷½ó½ï½ó½ó½ï½ëÞóÞ÷ÞûÕÚι­µµ­µ­µ­µ­µ­µ­µ­µ¬µ-ºÒÊÓÎÓÊÔÊÔÊÔÊôÒóÖóÖpÆ-¾ìµÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ¬µ­µ­µ­µ¬µ­µ­µ¬µ­µ¬µ¬±¬µ¬µ­µ­µ­µ­µ¬µ­µ­µÍ¹í¹ëµôÒõÒ×±Îí¹¬±¬µ­µÍµ‘ÊÓβÎí¹­µ¬µÍµrʼï»ó›óÞ÷Þó½ïë|çë¾óÞ÷Þ÷Þ÷þûÝûÝûÝ÷¾óßûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÞ÷Þ÷Þ÷Þ÷ÿ÷þûÿÿþÿ’Ò1Æî¹­µ­µ­µ­µ­µ­µ­µ­µÌµoÂÒÊÓÊÓÎôÎôÎôÎôÎôÒÓ×óÒNÂì¹í¹­µ­µ¬µ­µŒ±¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ¬±Œ±¬±¬µ­µ­µ­µ­µ¬µ«±¬±¬±¬µÌµÌ±¬±µ­µ­µ­µ­µÍµË±-¾N ºËµ×Ó×ÒÒí¹¬±¬µ¬µ.¾ÓÎÓÎÓÎì¹í¹ ¾ì¹í¹³Ò ¾ ºqÊyç½ïëï¾óÞ÷Þ÷½ï›ë’ÎqÊpÆ/¾{ëÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿûÿûþûÿÿÿÿÿ÷ß÷ÞûÝ÷8ãrέµµ­µ­µ­µ­µµÌµNÂÒÎÒÊÓÊôÎ××ôÒ×õÒôÎ××ÑÎN¾¬µ­µ¬µí¹í¹í¹ÍµÌµÍµ¬µÍµ¬µ­µ¬µNÂÎ ¾Œ±­µ­±­µ¬µËµNÂÒÒì¹ëµ,¾ÒÒOƬµ¬µ­µ­µµÍ¹ì¹6ÛÓÎôÒO²Î××ÓÒí¹­µ¬µ ¾ÓÎôÎ×pÆpÂôÒÔÒôÖôÖNÂpÆבÊ.¾YçÞ÷ÿûÞ÷¾ó¾ó½ó’γÊöÒõÎ º7ãÿÿÿÿÿûÿ÷ÿûÿÿÿÿÿûÿûÿûÿÿÿÿÿÿÿÿÞû¼óÿûÿûþûþûþÿÿûÞó¾ïßóÿ÷ÿû›ï´Ö­µ­±­µ­µ­µµÌµNÂÓÎÓÎóÎôÎ×ß7ãxçÛ×ôÒôÒÛóÖoÆ.¬µî¹.¾ÛÛNÂì¹N²ÎÒÒpÊ ¾Ë±±ÊôÖÊ˵­µ­±­µ¬µì¹óÖÔÎpÆËµ±ÊÛóÖî½­µ­µ­µ­µÍµ-º6ÛôÎôÒÓÒOÂ7Û×ôÖ ¾Í¹ìµ²ÎÓÎôÒ±ÎNÂôÒ³ÊÓÎôÖÓÒÒÎ.ºõÎײξYëÿÿÿû¾ó¾ó½óOƳÎÓÕÎ º³Òÿÿÿÿÿ÷ÿ÷ÿ÷ÿ÷ß÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿ÷âî½ÕÖÞûÿûÿûÿûÞ÷ß÷ß÷¾ï¾ïÿûÿÿœ÷­±­µ­µ­µ­µí¹OÂÒÎÓÎÓÎÒαÊpÆ.Â.¾O¾²ÊôÒôÒ×ÛÛoÆ.¾ ¾OÂõÖõÒÓÒ ºÓÎôÒõÒÛÓÒNÂOÂõÖôÒ-¾Íµ­±­µ¬µ ºôÖÔÊôÒì¹ÒÎÛ6߲άµ­µ­µ­µÍ¹-ºxç×ÓÎÒÒ.¾õÖÛÛ ¾í¹O¾ôÒôҲΠºÊÓÒ²ÊÓÒÓҲΑÊ/¾õÎõÒ×pÊqÊÞûÿÿÞ÷Þ÷½ïpÊ‘Ê×ôξ²Îÿÿÿÿÿ÷ß÷ß÷¿ïß÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿßû{ëQÆ÷Úß÷ß÷ß÷ßó¾ï¾ëßïß÷ÿûÿû{ïî½­±­µ­µ­µ­µ¾OÂÒÎóÒÒÎÒÎNÂNÂíµí½ ¾ ºº³ÊôÒôÒÛÛnÆËµ ºôÖÓ×ôÎôÒ×õÒôÒÓÎóÒ‘ÊpÊÛPÆÍµ­µ­µ¬µ ºÆõÎ6ß ¾ÓÒÛ5ÛóÖ ¾±¬µ­µ¬µ ºÛôÒôÒóÒ º×6Û6ß.¾õÒõÒóÒ ºì¹M¾ôÖ‘Æ ºí¹ì¹O¾öÒõÒõÒ×6ß¾ßÿÿÞûÞ÷œëqʲÎÛ×.¾NÂÝ÷ÿÿÿûÿûÿ÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿûßó¾ïµÒµÒÞóßóßóß÷ÿûßóßóÿûÿûÿûYçι­µ­µ­µ­µµ¾NÂóÒóÒÒÎÓÒÓÒ ¾º¬µ­µÍµ-¾ º×ôÒ×ÛóÖNÂ˱ÒÎÓôÎÛ6ßÓÒpƑʲʑƱÎNÂבÊí¹­µ­µ¬µ º‘ÊõÎ7ã ¾óÖÛôÖ5ÛÊ̵µµ¬µí¹5ßôÒÓóÖìµôÒ6Û6ßÓÒõÖ7Û×oÆì¹ËµoÆ×ÒÎ̵¬µÌµ‘Ê×ôÒõÖÛ6Û’ÎO¼óÿÿÿû½ïrÊôÚÛôÒpÆO¼÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ÷ß÷ß÷zïsÎÞûÿûÿûÿ÷ß÷ÿûÿûÿûÿ÷ÿû›ïι­µ­µ­µ­µµî¹OÂóÒÓÎôÎôÒÛÊ ¾¬±¬±±Íµì¹ÓÒ6ÛÓôÖ5ßÒÖN²Î7ÛõÒ×ó־͵í¹o±ÊÊOÂבÊ̵­µ­µ­µ ¾±ÊôÒWã ºÛÛóÒ6Û×O¬µ¬µ¬µì¹±ÎÒÎ×Û ¾6ß7ß6ß7ß7Û7ßÛ ºÍµËµÆÛÒÒ«±µÍ¹pÊôÖôÒ×ÛÛÛ.ÂÔÖ½÷ÿÿÞ÷’ÎóÒôÎÒÊpÆ ºzëÞûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûßûß÷ß÷9çÖÖÿûÿûÿÿÿÿÿûßóßóßóßóÞûrέµ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎôÎôÎÛÓÖ ºÍµ­µ¬µ¬µËµoÆÓôÒ×6ß6ßÊPÆõÖÓÊÔÎPÂí¹¬µÍµìµ º ºÓÎבÊ̵­µ­µ­µ.¾ÒÎôÒ6ß-¾ÓÖÒÒÒÎ××ÒÒ º­µ¬µì¹ÒÒÒÎÓÎÛ-¾6ß6ß6ß6Û7Û7ß±Îìµ­µËµÆôÖÒÎí¹Ìµí¹.¾qÊÛôÖ×ÛóÖ²Îìµ7ãþûÞû²Ò³ÎõÖôÒoÆëµ/­µãÿÿÿÿÿûÿ÷ÿ÷ÿûÿÿÿÿÿûÿûß÷ßóÞó½ï¾óß÷ß÷ÿ÷ßûßûß÷¿ïßóÿûœï­µ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎÓÊôÎ×óÖ͹­µ­µµ­µ«±²ÎôÒóÒóÒÛxç±ÎOÂÒγÊÔÎoÆÍµ¬±µ¬µËµ.¾×ôÒ‘Î̹­µ­µ­µ/ÂÒÎôÒÛ.ÂÛÛ±ÊóÒ6Û5ßoÆì¹¬µí¹ÓÒóÒÓÎÛ.ÂÛÛ×7ß7ÛÛoÆÌµ­µëµ±ÊôÖôÖóÖÓÒÓÒÊOÂ6ßÛôÖÛÛÛ.Â/½óÞ÷³ÖõÖ×ôÒ‘ÆëµôÚrÎ͹”Ò¾óÞïÿûÿûÿÿÿÿÿÿÿûÿûÿûÿûÿûÿûÿûÿûÿûÿÿÿûÿûÿ÷ßóß÷ÿÿãî½­µ­±­µ­µ­µ­µÍµ.ÂôÖôÒÓÊÔÊ×Ûí¹­µ­µ¬µí¹ º×ÒÎÒÎóÒ×yçÒÒNÂÓÒÓÊõÒpÆŒµ­µ­µ­µÌµ-¾×בÎ̱­µ­µ­µ.¾ÓÒôÒÛ.ÂßÛ±ÊóÖ6ã6ßÒÒ º¾ì¹oÆôÒôÒôÖ-¾óÖÓÎ×7Û7ÛWãÛ º.Â˵±ÊÓÒóұʱÊÒαÊ.¾×6ÛÛôÖÛ7ßÛ ºöÚþû²ÒÛÓôΑÊëµßÞÿ{ïî½sʾïÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûßûÿûÿûÿûß÷ÿûß÷¿ï¾ë¾óßöÞι­µ­µ­µ­µ­µÍµ-¾ôÖ×ÔÊÔÊôÒÛ ¾ÍµÍµ ¾ì¹ôÖ5ßóÒÒÎôÒÓ6ß±Î-¾ôÒôÎõÒpÆŒµ­µ­µ­µì¹N¾××óÖ«±­µ­µ­µ ¾ÓÒôÒ×-¾Û󮮱ÊóÖ5ßNÆ ºí¹N¾Ó×óÖ ºÓÒõÒ××6ßWãôÖ±Îëµ ºôÖÒÎÆÆ±Ê±Î±Î ¾ôÖóÒÛôÖõÖÓÕÎÓÒ ¾›óÓÖÔÎÓ×oÆìµôÖÿÿÿÿ9닱ßß÷ßóÞïßóßó¾ï¿ï¿ï¾ïßóßóÞóß÷ß÷ßóßóßóßó¾ëžã¾ëß÷½÷­µ­µ­µ­µ­µ­µ-¾ÓÒ×ÔÎôÎôÖÛÊ ¾ º ºõÖ7ÛôÒÓÊÓÎÓÎ×5߯.¾×ÓÎôÖpʵ­µ­µ­µÌµ‘ÊôÒÛ5ß̵­µ­µ­µì¹±Î×6Û.ÂÓÒÛÒÎÒÎÒÎÒÒ۱Πº.Â-ºÓÎ6ÛÛ¾Û7ÛÛ6ßÛÊÛ6ß/Â/ÂÛÆÆ±Ê‘ÊpÆOÆ.¾±ÊóÒÓÒoƲÎÓõÎ6Û.¾pƲΒÊõÒÛ±Îëµ’ÎÞûÞ÷½óÂÛžçžããããžã¾ëßïßóß÷ßóßó¿ï¾ë¾ë¾ë:ß÷Öžçãßóÿûþÿ­µ­µ­µ­µµ­µN±Ê×ôÎõÒ×ÛÛ‘Ê’Ê×ÓÔβʲÊÓÎÒÎóÒÒÒ-¾pÆÓÒóÒôÒʬ±­µ­µ­µÌµ²ÎÛÛÛ̵­µ­µ­µí¹±Ê×6ã.±ÊôÖ6ßÛÊÒÒÛôÖìµëµ.¾ôÎ×ôÖ¾7ß××xç¾NÂÆ6ßóÖì¹ôÚóÖÒÎÊì¹ì¹ ºÓÒóÒ²ÎÊ/ÂpÊOÂÓõÎÓÎO º‘ÊÓÊõÒ’Îìµ8ãÿû¾ïç[ß|ß\ß\ß}ß}ãžç¾ëßïß÷Þ÷{çœë¾ï¿ï¾ë¾ï¾ïrÊRÆžç¾ëÿ÷ÿÿ¼÷͹­µ­µ­µ­µ­µ­µ-¾/Â6ß×Û7ß7ß×õÒõÒôÒôÒôÎÓÊÓÎôÒ×ÒÒoÆìµpÆóÒÓÊÓΑʬ±­µ­µ­µÌµÓÖWã×6ß-¾Ìµ¬±¬µ.ÂÒÒÛxëNÂÓÎ×5Û.Âʱ ºÛ6Û‘Ê.¾±ÊÓÎײΠºÛôÒ6Û6ßì¹pÆ º×ôÖpÆìµôÖóÖ-¾¬±î¹ ºÛôÖôÖ‘Î’Ê8ß ºôÖõÒ6Û×ôÖõÒõÎôÎ’Ê ºõÚœïë:ßÖÒ:ß}ã¾ëÞóßóßó¾ï¾óÞóßQÆ÷Úß÷ßóß÷ÿ÷œï1Æ:ß¾ë¿ïßûÝû”Ö¬µ­µ­µ­µ­µ­µ¬µ ¾-¾6ãWç6Û7Û7Û7Û×óÎôÒôÎôÒôÒôÒ×5ÛoÆ.¾.¾-¾ÒÊÒÊÓβά±­µ­µ­µÌ¹ôÚ6ß×6ßÓÖëµÌµí¹²Î6ß6Û6ßNÂÓÎÓ6ß-¾-¾ËµôÖóұʱÊÒÊóÎ×ÒÒ º²ÎôÒôÖôÖìµ¾ ºÓÒôÖÓÒ ºpÆÒÒ ºÍ¹Í¹¾ÓÖÒÎÒÒ²Ò¾Xã.¾qÊVßôÖÛ6ßôÒÔÊ×²Ò ºÌµ­µï½Í¹‹±Íµ”ξ÷ÿû¾ï¾ï¾óœïÖÚî½Â8ãÞ÷ÿûÿûÿûÞ÷çžë¿ó½ó÷Þ0ÆÍ¹­µ­µ­µ­µ­µ­µ­µ ¾ ºßxë6ß6Û×××ÓõÎõÎõÎõÒÓóÒÊ ºëµ.¾oÆÒαÆÓÊÒÒ͵­µ­µ­µí¹ôÚ5ß××ÛÛôÖÛ7ß7ß6߲ΠºÔÎõÒÛ.Âí¹ì¹ÒÒÒÒ±ÆÓÊóÒ×±ÎëµÓÎôÒ×Û¾¾ ¾±ÊôÖóҲΠ¾ÓÒOÂì¹OÆ.Â5ßÓÎÓαΠºXã³ÎOÂWã×Û×ôÖôÒ5Û‘Î ºÔÒÖҔΔÎ÷ޔξrÊ8ã9ããÕÖ0Æ0ÆÂÖÚßûÿûÿûÿûß÷ßóßóÞ÷÷Þî½­µ­µ¬µ­±­µ­µ­µ­µ­µ­µÍ¹ º²Îšï6ß×××7Û8×Ó8×7ÛôÖÊ.¾.ÂôÖôÖ¾OÂóґƒƲʾ­µ­µ­µí¹ÓÒWã××ÛWßXã7ß7ß7Û6ÛoÆìµõÖÔÎôÒNÂ͵ì¹OÆôÖ²ÆÓÎôÎôÒ6ÛÊ˱ôÖ××ôÒ.¾í¹OÂpÆÛôÒÓÎOÂpÆóÒPÂpÆPÆOÂÓÎ×ôÖ.¾Zã8ßì¹ôÖ5Û××××ÛÒÒëµÛ|ã[ã9ß9ã¾ï[ã”Ò0Â0ÂQÆsεҔÎrÊÞ÷ÿûÿûß÷ßó¿ïß÷ÿû8笱­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºoÆwçxç6Û7Û6ßÛõÖÓұΑÊoÆpÆÓÒôÖ×6ßóÖ.¾óÒÒÎÒÎÊì¹­µ­µ­µî¹-¾Wã6ßÛXãXßWß7ßXß7ßÓÎ ºËµÓÎÒÎ×oÆí¹Í¹ ¾×õÎõÎôÎ×ôÖ,¾Ë±²ÎôÖÓÊÔÎ.¾Íµ/ÂìµÓÎ7ßÓÒÓÖ ºóÒÂÓÎôÖPƲÊõÎöÒ.¾zçœëpÆpÆ6ß×××ôÒôÒóÖì¹×}ã[ã9ß\ã~ß}ã[ã}çëœë[ç:ãQÆãÿÿÿûß÷ßó¿ïßóÿûßû’Ò¬µÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ ºO‘ÎÊpÊpÆ.Â.¾qʲÎôÖ6ßXãWß6ß×5ß6ß.¾NÂN ºÌµ­µ­±­µ­µ­µÌµ ¾±ÎôÖXãXãWã6ßôÚÊ ºí¹ìµÊÒÒÓÖì¹Ìµ­µÌµpÆôÒôÖÒÎÆNÂ˵칱ÎßÛʾ­±Í¹ ¾oÆ7ß×ôÖ.¾ÛÆ‘ÆÓÒpʳÎÛôÒºZßZçÔÖ º6ßÛ×õÒÓ×ÒÎìµÛ|ãZç:ßÓ<×|ççžçç|ë{çµÒrʽóÿûÿûÿûÿ÷ß÷ÿûß÷ë0¬µÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ¬µÍ¹¬µ¬µ­µí¹±ÎWã7ßXãzçÛÓÒõÖ6ß6ã6ßÛ.Â̵­µ¬µ­µ­µ­µ¬µ­µ¬µ¬µ¬µí¹ìµìµ ¾ì¹Ìµ¬±­µ¬µÌ¹Ë±ëµìµÌµ­µ±¬µËµìµì¹ëµËµÌµ­µÍµì¹-¾-¾ º/Â͹¬µí¹ ¾-¾ ¾ ºOÂÛôÒ²ÎpÊ º-¾oÂ.¾PÂzç9ãYç’Î.¾²ÎÓÒÓÒ²ÊpÆìµ0º[ßZçZã;Û<×|ã|ç¾ë}ã}ç{ë|ëQÊãÿûÿûß÷ÿûÿûÿûÞ÷9ãSÆtÊrÊ͹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ­µ­µì¹ôÖ7ß7ÛYãÛ ¾ ¾.¾7ßXç5ß6ãÎ͵µ¬µ¬µ­±­±±­µ­µµ¬µ¬µ­µ¬µ­µ­µ­µ­µ¬µµ­µ¬µÍ¹í¹í¹í¹ÍµÍ¹ÍµÌµì¹.¾.¾í¹Î¹­µÍ¹.¾ º ¾ ¾ ¾/¾­µÍ¹Í¹î¹0¾qÆqÆqʳÒÛµÎÕÒ÷ÖZßZã:ã[ßZß÷ִγγғÎÕÒÖÒ[Û|ç{ç\ß]Û}ã|ëçç|ã|ç|çÖÒsξ÷ÿûÿûÿûÿûÿûÞ÷µÒ¾¶Æ;×øÚ͹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ ¾6ßXã8ßYßqÆÌµ­±¾qÊ™ïxë6ãOƬ±Íµî½¾N¾µ¬µ¬µ«±Ëµì¹ì¹«±¬µ¬µ­±µ­µ¬µí¹ì¹.¾OÂʲÎÊìµ ºoƱÎÓÒpÆ ¾ º.¾N¾²Ê²Ê‘ÊÆNÂ.Âî¹­µÎ¹RÆøÎ[ß{çZë8ß\ß|ßçç{ë9ç{ã|ãçç{ç9ßç}ãã}ã|ã[ã\ã<Û}ß|ë|çã}ã}ç{çZã0Â:ã¾ïßóß÷ßóßóß÷œï¾–ÆùÎ\ß{ç­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ º×ÛXßYãºÍ¹µ¬µî½/ÂPÆí¹¬µ¬µ.¾pÆÓÒôÖÊ ¾ì¹¾Ìµ ºôÒ×6ßÒÒ ¾ÌµÌµ­µ­µ­µìµôÖ×ôÎôÒÛÛO‘ÎôÒ‘ÆpÆÓÒ±Ê º.¾ÓβÊÓÒõÒÔαÊNÂ͹͹0Â×Ê:×{ã{ëYç{ã|ß}ã}ãëZë{ëœçžëççZç[ã}ß}ß}ß\Û\ã[ã\ß]ßçœëë¾ëžëë|ã”ÎQÆ}ç¾ë¾ë|ë|ëÞ÷ÞûãsÆ×\ßç¾ïrέ¹µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ º×7ÛXßXã-¾í¹­µ­µ¬µ­µ¬µ¬µ¬µí¹ÓÒ6ÛXß7ßWã6ßÓÒ ¾.ÂOÂYã×ôÒôÒ5ßÛoÆì¹Íµ¬µËµ³ÎõÒõÒÛ6ã6ãNÂÓÒ ºÌµÍ¹¾²ÎNÂOÂ²Ê‘Ê º º³ÎÛoÆÎ¹ï½tÆÏ|ã{ã{çZç|ã}ã}ß\Û{çZëëëžë½ë{ç[ç}ç}ß}ß]Û\ß;Û\Û]ßçœëë¾ë¾ï¾ï\çøÖï½ÕÖ½ïë[ç1Æ1ƵÖsÎÊ}ãžçžëžë÷Úι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ/ÂÛ6ÛXãWç ºÍµ¬µ­µ­µµ­µ¬µ¬µOÂÛÛyçXãWãyëXçÛ ºpÊšëXßôÒ³ÎôÒõÒôÖ²ÎìµÍµËµOÂ×õÖoÆ ¾ º ºÓ¬µOÂpÆÊº²Ê.¾¾.Â.±Ê¾î½¾×Ê[Û|ç{çZç{ççžç\Û|ãZëœïëç}ãœëzë|ç}ß}ß]ß}ß|ã;Û\Û}ãë|ë¾ï¾ë¾ï|ë:Û1Âî½Î¹0¾͹ι͵ιι¾•Êçžçžë}ãZãï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßXãšïšï ºÍ¹­µ­µ­µ­µ­µ¬µÍ¹ÓÒ7Û6ÛÓÒoÆpÆÛXãÛÊ-¾yë7ßõÖôÖÓÒ×Û6Û±Î칩­pÆõÒ‘ÆÊ±í¹ì¹oÂôÒ‘Æìµí¹OÂÒÒnÆ.ºÓÎ-¾¾­µî¹Ì¹î¹î½RÂÓ\ß|ç{ç{ç|çã}ß}ãœë{ï½ïççœç{ëZç}ã}ß}ß]ß}ç:ß;×<×ç|ç¾ï¾ëžç½ó|ç۾ι­µ­µ­µ­µ­µ­µ­µ­µQÆ×Ö¾ë¾ï¾ï}ã{ç¾­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßYãyç7ç.Â͹­µ­µ­µ­µ­µÍµí¹õÚ6ß²Ê ºî½OÆ-¾ôÖ6ÛóÖêµôÖXãÛ ¾OÆOƲÎ×6ßÎʱ³ÎõÒ²Îëµî½í¹ÊÓÎÒÎÓÎÓÒÓÒ,º ºpÆÓÒO ºOÂ/Âî½î¹ºÖÊ:×|ã{ëZç[ã|ã}ß<×}ç{ïœëëç}çœë{ë|ç}ã}ã\Û}ã|ç;ß<×[Û:ßçžë}ãžëœï{çsÊï½µµ­µ­µ­µ¬µ­µ­µ­µ0Âß¾óßó¾ïçZç͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ‹±¾Xãyç™ëxëÂ͹­µ­µ­µ­µ­µÍ¹ìµ7ãxë.¾¾­±­µOƲÎXãÛ뵑ÊXã7ß.Âî¹î¹.¾²ÎWãßNÂ.¾õÖÓÖoÆ.¾.¾ ºÓÒÓÎÓÎôÖ-¾ëµÊ±ÓÒôÖÓβÊpÂOÆ º¾ÕÒ:ÛלëZçZã|ã\ß\Û\ß|ëœïëç}ãë{ë{ççžç}ß}ßë[ã;Û\Û{çZãçžçç¾ó{çÛï½Î¹¬µ­µ­µ­µ­µ­µ­µ­µÍ¹0Â\çßóß÷¾ëžë8ãî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ«±ìµ7ßxçxçyëÂ͵­µ­µ­µµ­µí¹ëµôÖyç‘ʾ¬µ­µ.ÂPÆXçWã,¾oÆ7ß7ßPÆÍ¹­µ¾PÆÛßoÆí¹××õÒ×ÛOÆpÂôÒôÒoÆNÂ-¾ìµ-¾‘ÊÓÒÛõÖÛõÖ.¾º9ß{ãœëZç|ç|ß]Û<×çœëœë}ã|ß}ãœë|ëç}ã}ß\Û|ç[ã;Û\Û|ç{ç|çžçžç¾óï{çrÊïÁ­±­µ­µ­µ­µ­µ­µ­µ­µÎ¹1Â\ã¾ï¿ïžç¾ïÕÚî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµëµßšëyë»óOÆÍµ­µ­µµ¬µÌµì¹ º ¾‘Ê7ÛÔÖ͵­µ/ÂpÆXçWçnÆ º6ÛÛOÆ­µµ­µ.¾²ÎÛ±Îì¹ôÒ7ßÛ6ßWã²Î‘Ê×õÒ×ÛôÖO ºí¹.¾¾OÆõÖõÒóÖ-¾“ÎzçZç{ç|ã\ß<×}ß{çœëç|ß\ßœçœïëžç}ã\Û}ã[ç:ß|ß¾ç|ë|ë}çç¾ï½ó[ç÷Ú­µ­µ­µ­µ­µ­µ­µ­µ­µÎµ¾¶Îžç¾ëžç}ãï0ÆÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ëµÓÒXãyëÜ÷ÓÖ͵­µ­±­µÍ¹.ÂÒÒß6ã.³ÎX㾬µ¾.¾ÛÛ. ¾7ß6ßpÆÍµ¬µ­µ/‘ÊóÒÒÒìµÓÎ6ãôÚNÂʵ˱6ßÛÛÛöÖ6ÛÓÒí¹­µ­µÍµ.Â.¾õÒÔÒMÂ/¾Yã9ã{ç}ã\Û<×|ã{ëœï}ã}ã|ãœëœï¾ëžç\ß|ß|ç9ß;Ûç½ëœïœëçë¾ó|ë[ãQÆï½­±­µ­µ­µ­µ­µ­µ­µ­µ¾¾מçžçžç}ãøÚ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµ³Ò™ëyë¼óßî½­±­±­µí¹ÒÎ6ÛÛ6ßOƲÎ7ß.­±Â.¾6ÛÛ.‘ÎXã7ßPÆî¹¬µ.Â.²ÎôÖÓÖ ºÓÎÛ.Âí¹Ìµ.¾šïßÒÒìµ/¾ÓÎôÒ¾¾Íµ¬±/Â-¾õÒôÒoƾ8ã9ã}ç}ß<Û\ß|çœï½ï}ã}ã|ë›ë½ëžç}ß\Û|çZãÛ\ßžë½ï¾ó¾ïç¾ï½÷{ãÖÖî½­µ­µ­µ­µ­µ­µ­µ­µ­±ÎµRÆØÒ\ß}ßžç~ã\ßQÆÍ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.™ïšëyë7ãOÆí¹î½í¹qÆôÒôÎôÖÛNÂÓÎÛOÆPÆpÊOÆ7ßôÖ ¾õÚzçÛOÆ/Â.ÂNÂqÆ7ßWãÓÖì¹ôÖóÖ ºí¹Ì¹oÆxëߑΠ¾ì¹pÂõÖ‘ÎOÂì¹ìµìµÓÒ8ßWãoÆqÆYç{ç}ã]ß]ß|çœï½óë\ß|çœïœï¾ë}ã<Û\ã|ç9ß;×ã¾ï½óÞóëë½óœë[ã1Âï½­µ­µ­µ­µ­µ­µ­µ­µ­µRÆ•Ê<Û\Û~ã}ã\Û×Ö͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµõÚšë™ë»ó6ßOÂOƲÎÛ××6ßÒÒ-¾ôÖõÒÓÎpÆ‘ÎÛVã‘Î º7ãyç×OÆ.¾N³Ò7ß7ßÛÊ/ÂÛ6ßOÆÊ±Ë±Ê±ÓÒXãßí¹¬µpÆ6ßõÚOÂÔÖ³ÊÔÒXãyçôÚ ºöÖzçç}ã]ß}ã|ç¼ó¾ï}ã}ßœë{ëïë\Û]ß}çZã×;מë¾ïÞó¾ë}ãçœë[ãßï½Î¹­µ­µ­µ­µ­µ­µ­±­µ1ÂsÆ;Û}ß}ãžç~ç:ßÂ͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.Â7ãšëšïšëXçXã7Û6Û7Û6ÛÛpÊ.¾ÛÛõÎÓ7Û6ßÛ ¾ì¹ôÖ7ß6ßÛôÖÛ6ß6ßÛóÖì¹³ÒÛ×ÒÒNÂN¾oÆ ºöÖ7Û¾­µ ºôÖXçN²ÎôÖõÖ7ã5ßpÆ“ÎZç|ç|ß}ã]ßçï½óë<Û\ßœïœï¾ï}ß;×|ã[ç:ß;×]ß¾ï¾ó¿ï}ã}ãë{ç:ã1Æï½±­µ­µ­µ­µ­µ­µ­µ0ÂRÆ×}ãžçžçç|ç´Ò͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µî¹PÆWãyçXãXß7Û7Û6Û6ßôÖ‘Êí¹Í¹pÊxç×ÕÊ×ôÖOÆî½ ºpÆ6ÛÓÒôÖÛÛÛ±ÎNÂìµÌµÛ7ß×7ÛÛ6ÛÛ ¾ß7ã ¾­µí¹±Î7ãÊ˱-¾‘ΑÊpƳÒ8ã{ç}ã}ß]Û]ßëœï½ï\ß<Ûëœï½ïžë\Û;Û|ç:ß:×\Ûçï¾ëžç}ãçœë[ãÖÖι­µ­µ­µ­µ­µ­±­µÎ¹¾”Ê;Ûžç¿ë¾ë¾ë¾ï÷Úι­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¾²ÎÛ6Û6Û×ÒÎÊ.¾Íµ¬µ­µ.¾pÆõÖ³Îqʾ͵¬µí¹-¾±ÊÒÒÓÒÊOÆ.¾Ìµ¬µ­µ«±³ÒXã×YßXãÛÒÒì¹. ºÌµ¬±Íµ-¾Û²Ò¾’ΓÊõÖYçzë8ã|ç}ß]ß]ßçœï½ïë]ßç{ëœïï}ã\Û|ãZã:Û;×\ßëëã~ãçë{ã[ã1ÆÎ¹­±¬µ±­µ­µÎ¹ï¹¾¶Î\ãžë¾ï¾ï¿ïÞóZçî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±í¹í¹¾í¹Ìµ¬µ¬µµ­µ­µÍµí¹í¹¾î¹­µŒ±­µ¬±¬±¬µÌµÌµ¬µ­µ­µ¬±¬µµÌµì¹.¾ ¾¾í¹ì¹ËµÌµ«±¬µ¬±±­µ ºôÚ7ãOÂrÂ×{ãZç9ã[ç|ã}ß\ß}ãëïžë}ß|ß½ï{ïœïç}ãç{ë:ß;Û<×}ãë}ç}ß}ãë|ç[ß÷Öî½­µ­µ­µÍ¹î¹ï¹¾–Ê<Û}ã¿ë¿ï¿ï¿óßóYçµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­µµµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µµµ±­µ­µ­µ­µ­µ­µ­±¬µÌµ‘ÊXã²Î º×ZßYã9ã|ã}ß|ß}ßçœë½ï}ç\Ûžë½óœïë}ãçœëZã:Û<×\ßëç\ß\Ûçœï[ã[ß1Æï½Î¹Î¹ï½1Æ•ÊùÖ<Û~ãžãžçžç¾ë¿ïÞ÷ãµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºõÖ7ÛpÆOÂ8ßYç{ç|ß\ß\ß|ãœëœëë\Û}ã½ó½ó½ëç}çë[ç:ß;×<×|ãë}ã}ß}çë{ç[ßÖÒ”Î:ßß:ãœï¾ïžëžçžçžã~ã}ßžã¾ï½ó´Öî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÌµpÆ7ÛõÒOÂpÆ8ã|ç|ã\ß}ßë{ëë}ã\ßïœïëç}ãç|ëZã[ß<×\Û}ë}ç}ãžç¾ïœë[ã:Û1¾<Ûžç¾ëžë¿ë¿ëžë¿ë¾ëžã~ç\ß:ßÖÖ0Â͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹’Ê ºÓÎÓôÎOÂ.¾Ûzã[ß\ãœë|ëç\Û|ãœóœïëççëZã[ß\ß\ß}çëã}ãžëï{ç;Û”ÊuÆžë¿ó¾ï¾ï¿ï¿ïžç~ã}ã;ß×ÒRÆï½­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Æ9߯ ºôÒÔÎ×pʾ8ß[ß|ç{ëœç|ß\Û|ë›ïëç}ã|ç{ë[ã\ß|ß|çïžë}ãžç¾ï|ë;Û×RÂ;Û~ççžçžçç[ãÛµÎRÂï¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹ÖÒ\ãyç.Â-ºôÎÓ6Û‘ÊrÆ[ß|ç|ç}ç;Û|ã{ëœëç}ã|ã{ë[ç\ã}ßç½ïëžã~ãžë¾ï[ãÓ•ÎsÆÛøÖ¶Î”ÊRÆÂï¹Í¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Â×\Û{ã8Û.¾NÂôÒÛ±ÎqÂ[ã{ç|ç|ã[Û{ç{ëœë}ç\ß|çZã[ã|ß|ãëëžç}ã}ãžëœë×øÎî¹ï½Î¹Î¹­µ­µ­µ­µ¬µ­µ­µ­µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÎ¹ØÒ<×}ã|ßZßßOÂ.ºoÆqÆ×{ã{çë|ã{ã{ëœëç\ß[ßZçZã|ã}ãœë½ëç}ß]ßçœë[ç:×R­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï¹Ó;×\ß[ßZã9ßZß××[ß|ã[ß{ã|ã[ß{ã{ç|ç|ã[ß[ç:ã[ß|ß|çïç}ß\Û}ßë{ç[ß÷Ö͵­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±ºÓ\Û\ã[ß9Û:Û;Û[Û|ß}ã[ß[ß|ã[Û:Û:ß[ß[ß\ß|ãYãZã\ß|çïë}ã\Û\Û}ã|ç:Û9×1­µ­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬±ð¹ùÎÓ|ãç{ç:ß[Û\Û|ß|ã[ß{ã}ã|ã[ã[ã[ß;Û;Û:ß:ß|ç|ãœëœï}ã}ß<Û}ß|ç[ãϵÎ͵­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹sÂØÊ;Û[ß{ãZã[ã[ß[ã[ã{ã|ß|ãç{ã[ã\ß;Û:Û×:Û|ã{ãœëœë|ã\Û\ß|ã|ç×øÎï¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹1¾×Ò:Û;Ûëë}ç|ã|ß\ß\Û|ß|ç{ã[ß:Û:×9Û:ß|ã[ß[ã|çë}ã\ß|ã|ã[ß:×sÊ͵¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½1µÎ[ã|ãç¾ëžç}ã\Û\ß\ß\ß[ß:Û:Û;ß[ß[ã|ã[ã|ã|ã|ß}ß|ã[ã;×øÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½sÊøÖ\ã}ççççç}ã\ß;Û;Û[Û\ß[ß[ß\ß\Û\Û\ß}ã[ã[ß:ÛrÊι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ¬µ­µ¬µÍµ0ƵÒZãëë|çç|ç|ã|ß|ã\ß\ß;Û;Û\Û\ß|ã[ã[ß;Û÷Öï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹RÆß{ç{ç|ç|ã|ãç|ã|ã[ß:Û[ß[ßZß[ã[ß;ßRÊ͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µÎ¹QÆÖÖöÚ{ç|ç|ã|ß}ã|ã:ß:ßZãZã|ç;ÛÖÒî½­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±­µ­¹î¹1ƵÖß[ã|ã|ß\Û|ß|çë\ßøÒ0Âι­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½î¹tÊøÖ×\ßžç}ã[ßµÎι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹î½ÂRʵÒ×ÒÖÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ±­µ­µ­µÍ¹Î¹ï½î½­µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile new file mode 100644 index 0000000000..bac467ec30 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=TexturedQuad +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile.fpc new file mode 100644 index 0000000000..37b018a517 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=TexturedQuad + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Quad/TexturedQuad.pp b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/TexturedQuad.pp new file mode 100644 index 0000000000..c8c63e7959 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/TexturedQuad.pp @@ -0,0 +1,115 @@ +program TextureQuad; +{$L build/texture.bin.o} + +uses + ctypes, nds9; + +//texture_bin.h is created automagicaly from the texture.bin placed in arm9/resources +//texture.bin is a raw 128x128 16 bit image. I will release a tool for texture conversion +//later +{$include inc/texture.bin.inc} + +var + textureID: integer; + rotateX: cfloat = 0.0; + rotateY: cfloat = 0.0; + keys: cuint16; + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + //enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + vramSetBankA(VRAM_A_TEXTURE); + + glGenTextures(1, @textureID); + glBindTexture(0, textureID); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcuint8(@texture_bin)); + + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + gluLookAt( 0.0, 0.0, 1.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + + //move it away from the camera + glTranslate3f32(0, 0, floattof32(-1)); + + glRotateX(rotateX); + glRotateY(rotateY); + + + + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //not a real gl function and will likely change + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK); + + scanKeys(); + + keys := keysHeld(); + + if((keys and KEY_UP)) <> 0 then rotateX := rotateX +3; + if((keys and KEY_DOWN)) <> 0 then rotateX := rotateX -3; + if((keys and KEY_LEFT)) <> 0 then rotateY := rotateY +3; + if((keys and KEY_RIGHT)) <> 0 then rotateY := rotateY -3; + + glBindTexture(0, textureID); + + //draw the obj + glBegin(GL_QUAD); + glNormal(NORMAL_PACK(0,inttov10(-1),0)); + + GFX_TEX_COORD^ := (TEXTURE_PACK(0, inttot16(128))); + glVertex3v16(floattov16(-0.5), floattov16(-0.5), 0 ); + + GFX_TEX_COORD^ := (TEXTURE_PACK(inttot16(128),inttot16(128))); + glVertex3v16(floattov16(0.5), floattov16(-0.5), 0 ); + + GFX_TEX_COORD^ := (TEXTURE_PACK(inttot16(128), 0)); + glVertex3v16(floattov16(0.5), floattov16(0.5), 0 ); + + GFX_TEX_COORD^ := (TEXTURE_PACK(0,0)); + glVertex3v16(floattov16(-0.5), floattov16(0.5), 0 ); + + glEnd(); + + glPopMatrix(1); + + glFlush(0); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Textured_Quad/data/texture.bin b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/data/texture.bin new file mode 100644 index 0000000000..423699d1f7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/data/texture.bin @@ -0,0 +1 @@ +­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µÎ¹RÊrÎrέµ¬±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÂ1Æï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½RÊsÎ1Æî½­µ­µ­µ0Â÷ÞœóÝûÝûÝû¼óXç1Æ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½“ΛïœïÖÚ´Ö”ÒQÊï½Î¹­µ­µ­µµִÒã¼÷½÷½÷œóãνRÊ›ï½÷ÞûþûþÿþÿþÿþÿöÞ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÍ¹1Æã½ó½ï½óÞ÷þûþÿÞûœórÎ͵RÊã½ó½÷½ó½ó½óÞ÷ÞûÞûÝû“Ò9çÿûÞûÞûÞûÞûÞûþÿþÿÞûÞûZëÖÚß”ÒÂιï½Î¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹RÊzëÞ÷½ï½ïÞ÷½÷Þ÷ÿûÿÿÿÿ½÷´Ò8ß|çœç½ïÞ÷Þûþûþÿÿÿÿÿÿû½÷¾ó¾ïÞó½óÝóÞ÷Ý÷Þ÷Þ÷Þ÷ÞóÞóÞóÞ÷Þ÷½÷›ï½÷´Öî½­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µÌµ ¾pÊ-¾í¹¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹”ÒÞ÷Þ÷¾ó½ó½ó½óÞ÷ÿûÿûþûÿûÞ÷ëœçÞ÷ÿÿÿÿÿÿÿÿÿûÿûß÷½ïœï÷Úß{ëÞ÷Þ÷Þ÷Þ÷ÞóÞóÞó¾ï¾ó½ï½ë½óÞ÷þûÿûÝûrÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ«±¬±¬µ¬µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µìµôÖÛÒÒí¹¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µrʾ÷Þ÷›ïÖÖßÞ÷ÞûÞûÞ÷Þ÷Þ÷ÿû¾óÞóÞ÷Þ÷Þ÷ß÷ÿûÿûß÷ß÷¾÷0Ƭ¹Í¹Í¹RÊ{ë½ïœëœçëëëœç|ãœç½ïÝ÷Þ÷Þû¼÷QÊ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ.¾ÊÊ ºìµí¹í¹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî½ ¶6Û7ÛÓÎ-¾­µ±­µ­µ­µ­µ­µ­µ­µ­µ­µÍµµÒ¾÷œó1ÆÎ¹9ã¾ó½ó¾ó¾óÞ÷Þ÷Þ÷¾ó½ïë½ïÞ÷ÿûÿÿÿÿÿÿÿÿÿÿÞûÝûÝ÷YëÂ0ÂsÎ9ãë½ë½ë½ë½ï½ï½ïÝóÞ÷Þ÷Ý÷Þûã­µ­µ­µ­µ­µ­µ­µ­µ­µ«±M¾òÒÒβʲÊoÆ-¾í¹î½Íµ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µí¹ ºôÎöÒôÒN¬µ­±­µ­µ­µ­µ¬±¬µ¬µ­µ­µï½:ã¾ózë͹Ûëëë¾óÞó¾óëëëë½ïÞ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿû½÷zë÷ÞsΜï½ï½ï½ïÝóÝóÞóÝó½ó½óÝ÷Zë0Æ­µ­µ­µ­µ­µ­µ­µ­µµ¬µ-¾ÒαÊÓÊÓÊÓÎóÒ±ÎOÆ.¾͵¬µ¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ ºÔÎõÎÓÊí¹¬±­µ­µ­µÍµ¾Ìµ¬µ¬±­µî¹ZçëZç­µ:ßç¾ï¾ï½ïïëë½ï¾óÞûÿûÿÿÿÿßûÿûÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿÿÿÿÞû½÷Þ÷Þ÷½ó½ï½ó½ó½ï½ëÞóÞ÷ÞûÕÚι­µµ­µ­µ­µ­µ­µ­µ­µ¬µ-ºÒÊÓÎÓÊÔÊÔÊÔÊôÒóÖóÖpÆ-¾ìµÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ¬µ­µ­µ­µ¬µ­µ­µ¬µ­µ¬µ¬±¬µ¬µ­µ­µ­µ­µ¬µ­µ­µÍ¹í¹ëµôÒõÒ×±Îí¹¬±¬µ­µÍµ‘ÊÓβÎí¹­µ¬µÍµrʼï»ó›óÞ÷Þó½ïë|çë¾óÞ÷Þ÷Þ÷þûÝûÝûÝ÷¾óßûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÞ÷Þ÷Þ÷Þ÷ÿ÷þûÿÿþÿ’Ò1Æî¹­µ­µ­µ­µ­µ­µ­µ­µÌµoÂÒÊÓÊÓÎôÎôÎôÎôÎôÒÓ×óÒNÂì¹í¹­µ­µ¬µ­µŒ±¬µ¬µ¬µ­µ­µ­µ­µ­µ­µ­µ¬±Œ±¬±¬µ­µ­µ­µ­µ¬µ«±¬±¬±¬µÌµÌ±¬±µ­µ­µ­µ­µÍµË±-¾N ºËµ×Ó×ÒÒí¹¬±¬µ¬µ.¾ÓÎÓÎÓÎì¹í¹ ¾ì¹í¹³Ò ¾ ºqÊyç½ïëï¾óÞ÷Þ÷½ï›ë’ÎqÊpÆ/¾{ëÿÿÿûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûÿûÿûÿûþûÿÿÿÿÿ÷ß÷ÞûÝ÷8ãrέµµ­µ­µ­µ­µµÌµNÂÒÎÒÊÓÊôÎ××ôÒ×õÒôÎ××ÑÎN¾¬µ­µ¬µí¹í¹í¹ÍµÌµÍµ¬µÍµ¬µ­µ¬µNÂÎ ¾Œ±­µ­±­µ¬µËµNÂÒÒì¹ëµ,¾ÒÒOƬµ¬µ­µ­µµÍ¹ì¹6ÛÓÎôÒO²Î××ÓÒí¹­µ¬µ ¾ÓÎôÎ×pÆpÂôÒÔÒôÖôÖNÂpÆבÊ.¾YçÞ÷ÿûÞ÷¾ó¾ó½ó’γÊöÒõÎ º7ãÿÿÿÿÿûÿ÷ÿûÿÿÿÿÿûÿûÿûÿÿÿÿÿÿÿÿÞû¼óÿûÿûþûþûþÿÿûÞó¾ïßóÿ÷ÿû›ï´Ö­µ­±­µ­µ­µµÌµNÂÓÎÓÎóÎôÎ×ß7ãxçÛ×ôÒôÒÛóÖoÆ.¬µî¹.¾ÛÛNÂì¹N²ÎÒÒpÊ ¾Ë±±ÊôÖÊ˵­µ­±­µ¬µì¹óÖÔÎpÆËµ±ÊÛóÖî½­µ­µ­µ­µÍµ-º6ÛôÎôÒÓÒOÂ7Û×ôÖ ¾Í¹ìµ²ÎÓÎôÒ±ÎNÂôÒ³ÊÓÎôÖÓÒÒÎ.ºõÎײξYëÿÿÿû¾ó¾ó½óOƳÎÓÕÎ º³Òÿÿÿÿÿ÷ÿ÷ÿ÷ÿ÷ß÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿ÷âî½ÕÖÞûÿûÿûÿûÞ÷ß÷ß÷¾ï¾ïÿûÿÿœ÷­±­µ­µ­µ­µí¹OÂÒÎÓÎÓÎÒαÊpÆ.Â.¾O¾²ÊôÒôÒ×ÛÛoÆ.¾ ¾OÂõÖõÒÓÒ ºÓÎôÒõÒÛÓÒNÂOÂõÖôÒ-¾Íµ­±­µ¬µ ºôÖÔÊôÒì¹ÒÎÛ6߲άµ­µ­µ­µÍ¹-ºxç×ÓÎÒÒ.¾õÖÛÛ ¾í¹O¾ôÒôҲΠºÊÓÒ²ÊÓÒÓҲΑÊ/¾õÎõÒ×pÊqÊÞûÿÿÞ÷Þ÷½ïpÊ‘Ê×ôξ²Îÿÿÿÿÿ÷ß÷ß÷¿ïß÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿßû{ëQÆ÷Úß÷ß÷ß÷ßó¾ï¾ëßïß÷ÿûÿû{ïî½­±­µ­µ­µ­µ¾OÂÒÎóÒÒÎÒÎNÂNÂíµí½ ¾ ºº³ÊôÒôÒÛÛnÆËµ ºôÖÓ×ôÎôÒ×õÒôÒÓÎóÒ‘ÊpÊÛPÆÍµ­µ­µ¬µ ºÆõÎ6ß ¾ÓÒÛ5ÛóÖ ¾±¬µ­µ¬µ ºÛôÒôÒóÒ º×6Û6ß.¾õÒõÒóÒ ºì¹M¾ôÖ‘Æ ºí¹ì¹O¾öÒõÒõÒ×6ß¾ßÿÿÞûÞ÷œëqʲÎÛ×.¾NÂÝ÷ÿÿÿûÿûÿ÷ÿ÷ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿûßó¾ïµÒµÒÞóßóßóß÷ÿûßóßóÿûÿûÿûYçι­µ­µ­µ­µµ¾NÂóÒóÒÒÎÓÒÓÒ ¾º¬µ­µÍµ-¾ º×ôÒ×ÛóÖNÂ˱ÒÎÓôÎÛ6ßÓÒpƑʲʑƱÎNÂבÊí¹­µ­µ¬µ º‘ÊõÎ7ã ¾óÖÛôÖ5ÛÊ̵µµ¬µí¹5ßôÒÓóÖìµôÒ6Û6ßÓÒõÖ7Û×oÆì¹ËµoÆ×ÒÎ̵¬µÌµ‘Ê×ôÒõÖÛ6Û’ÎO¼óÿÿÿû½ïrÊôÚÛôÒpÆO¼÷ÿÿÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ÷ß÷ß÷zïsÎÞûÿûÿûÿ÷ß÷ÿûÿûÿûÿ÷ÿû›ïι­µ­µ­µ­µµî¹OÂóÒÓÎôÎôÒÛÊ ¾¬±¬±±Íµì¹ÓÒ6ÛÓôÖ5ßÒÖN²Î7ÛõÒ×ó־͵í¹o±ÊÊOÂבÊ̵­µ­µ­µ ¾±ÊôÒWã ºÛÛóÒ6Û×O¬µ¬µ¬µì¹±ÎÒÎ×Û ¾6ß7ß6ß7ß7Û7ßÛ ºÍµËµÆÛÒÒ«±µÍ¹pÊôÖôÒ×ÛÛÛ.ÂÔÖ½÷ÿÿÞ÷’ÎóÒôÎÒÊpÆ ºzëÞûÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿûßûß÷ß÷9çÖÖÿûÿûÿÿÿÿÿûßóßóßóßóÞûrέµ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎôÎôÎÛÓÖ ºÍµ­µ¬µ¬µËµoÆÓôÒ×6ß6ßÊPÆõÖÓÊÔÎPÂí¹¬µÍµìµ º ºÓÎבÊ̵­µ­µ­µ.¾ÒÎôÒ6ß-¾ÓÖÒÒÒÎ××ÒÒ º­µ¬µì¹ÒÒÒÎÓÎÛ-¾6ß6ß6ß6Û7Û7ß±Îìµ­µËµÆôÖÒÎí¹Ìµí¹.¾qÊÛôÖ×ÛóÖ²Îìµ7ãþûÞû²Ò³ÎõÖôÒoÆëµ/­µãÿÿÿÿÿûÿ÷ÿ÷ÿûÿÿÿÿÿûÿûß÷ßóÞó½ï¾óß÷ß÷ÿ÷ßûßûß÷¿ïßóÿûœï­µ­µ­µ­µ­µ­µÍ¹.¾ôÒôÎÓÊôÎ×óÖ͹­µ­µµ­µ«±²ÎôÒóÒóÒÛxç±ÎOÂÒγÊÔÎoÆÍµ¬±µ¬µËµ.¾×ôÒ‘Î̹­µ­µ­µ/ÂÒÎôÒÛ.ÂÛÛ±ÊóÒ6Û5ßoÆì¹¬µí¹ÓÒóÒÓÎÛ.ÂÛÛ×7ß7ÛÛoÆÌµ­µëµ±ÊôÖôÖóÖÓÒÓÒÊOÂ6ßÛôÖÛÛÛ.Â/½óÞ÷³ÖõÖ×ôÒ‘ÆëµôÚrÎ͹”Ò¾óÞïÿûÿûÿÿÿÿÿÿÿûÿûÿûÿûÿûÿûÿûÿûÿûÿÿÿûÿûÿ÷ßóß÷ÿÿãî½­µ­±­µ­µ­µ­µÍµ.ÂôÖôÒÓÊÔÊ×Ûí¹­µ­µ¬µí¹ º×ÒÎÒÎóÒ×yçÒÒNÂÓÒÓÊõÒpÆŒµ­µ­µ­µÌµ-¾×בÎ̱­µ­µ­µ.¾ÓÒôÒÛ.ÂßÛ±ÊóÖ6ã6ßÒÒ º¾ì¹oÆôÒôÒôÖ-¾óÖÓÎ×7Û7ÛWãÛ º.Â˵±ÊÓÒóұʱÊÒαÊ.¾×6ÛÛôÖÛ7ßÛ ºöÚþû²ÒÛÓôΑÊëµßÞÿ{ïî½sʾïÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûßûÿûÿûÿûß÷ÿûß÷¿ï¾ë¾óßöÞι­µ­µ­µ­µ­µÍµ-¾ôÖ×ÔÊÔÊôÒÛ ¾ÍµÍµ ¾ì¹ôÖ5ßóÒÒÎôÒÓ6ß±Î-¾ôÒôÎõÒpÆŒµ­µ­µ­µì¹N¾××óÖ«±­µ­µ­µ ¾ÓÒôÒ×-¾Û󮮱ÊóÖ5ßNÆ ºí¹N¾Ó×óÖ ºÓÒõÒ××6ßWãôÖ±Îëµ ºôÖÒÎÆÆ±Ê±Î±Î ¾ôÖóÒÛôÖõÖÓÕÎÓÒ ¾›óÓÖÔÎÓ×oÆìµôÖÿÿÿÿ9닱ßß÷ßóÞïßóßó¾ï¿ï¿ï¾ïßóßóÞóß÷ß÷ßóßóßóßó¾ëžã¾ëß÷½÷­µ­µ­µ­µ­µ­µ-¾ÓÒ×ÔÎôÎôÖÛÊ ¾ º ºõÖ7ÛôÒÓÊÓÎÓÎ×5߯.¾×ÓÎôÖpʵ­µ­µ­µÌµ‘ÊôÒÛ5ß̵­µ­µ­µì¹±Î×6Û.ÂÓÒÛÒÎÒÎÒÎÒÒ۱Πº.Â-ºÓÎ6ÛÛ¾Û7ÛÛ6ßÛÊÛ6ß/Â/ÂÛÆÆ±Ê‘ÊpÆOÆ.¾±ÊóÒÓÒoƲÎÓõÎ6Û.¾pƲΒÊõÒÛ±Îëµ’ÎÞûÞ÷½óÂÛžçžããããžã¾ëßïßóß÷ßóßó¿ï¾ë¾ë¾ë:ß÷Öžçãßóÿûþÿ­µ­µ­µ­µµ­µN±Ê×ôÎõÒ×ÛÛ‘Ê’Ê×ÓÔβʲÊÓÎÒÎóÒÒÒ-¾pÆÓÒóÒôÒʬ±­µ­µ­µÌµ²ÎÛÛÛ̵­µ­µ­µí¹±Ê×6ã.±ÊôÖ6ßÛÊÒÒÛôÖìµëµ.¾ôÎ×ôÖ¾7ß××xç¾NÂÆ6ßóÖì¹ôÚóÖÒÎÊì¹ì¹ ºÓÒóÒ²ÎÊ/ÂpÊOÂÓõÎÓÎO º‘ÊÓÊõÒ’Îìµ8ãÿû¾ïç[ß|ß\ß\ß}ß}ãžç¾ëßïß÷Þ÷{çœë¾ï¿ï¾ë¾ï¾ïrÊRÆžç¾ëÿ÷ÿÿ¼÷͹­µ­µ­µ­µ­µ­µ-¾/Â6ß×Û7ß7ß×õÒõÒôÒôÒôÎÓÊÓÎôÒ×ÒÒoÆìµpÆóÒÓÊÓΑʬ±­µ­µ­µÌµÓÖWã×6ß-¾Ìµ¬±¬µ.ÂÒÒÛxëNÂÓÎ×5Û.Âʱ ºÛ6Û‘Ê.¾±ÊÓÎײΠºÛôÒ6Û6ßì¹pÆ º×ôÖpÆìµôÖóÖ-¾¬±î¹ ºÛôÖôÖ‘Î’Ê8ß ºôÖõÒ6Û×ôÖõÒõÎôÎ’Ê ºõÚœïë:ßÖÒ:ß}ã¾ëÞóßóßó¾ï¾óÞóßQÆ÷Úß÷ßóß÷ÿ÷œï1Æ:ß¾ë¿ïßûÝû”Ö¬µ­µ­µ­µ­µ­µ¬µ ¾-¾6ãWç6Û7Û7Û7Û×óÎôÒôÎôÒôÒôÒ×5ÛoÆ.¾.¾-¾ÒÊÒÊÓβά±­µ­µ­µÌ¹ôÚ6ß×6ßÓÖëµÌµí¹²Î6ß6Û6ßNÂÓÎÓ6ß-¾-¾ËµôÖóұʱÊÒÊóÎ×ÒÒ º²ÎôÒôÖôÖìµ¾ ºÓÒôÖÓÒ ºpÆÒÒ ºÍ¹Í¹¾ÓÖÒÎÒÒ²Ò¾Xã.¾qÊVßôÖÛ6ßôÒÔÊ×²Ò ºÌµ­µï½Í¹‹±Íµ”ξ÷ÿû¾ï¾ï¾óœïÖÚî½Â8ãÞ÷ÿûÿûÿûÞ÷çžë¿ó½ó÷Þ0ÆÍ¹­µ­µ­µ­µ­µ­µ­µ ¾ ºßxë6ß6Û×××ÓõÎõÎõÎõÒÓóÒÊ ºëµ.¾oÆÒαÆÓÊÒÒ͵­µ­µ­µí¹ôÚ5ß××ÛÛôÖÛ7ß7ß6߲ΠºÔÎõÒÛ.Âí¹ì¹ÒÒÒÒ±ÆÓÊóÒ×±ÎëµÓÎôÒ×Û¾¾ ¾±ÊôÖóҲΠ¾ÓÒOÂì¹OÆ.Â5ßÓÎÓαΠºXã³ÎOÂWã×Û×ôÖôÒ5Û‘Î ºÔÒÖҔΔÎ÷ޔξrÊ8ã9ããÕÖ0Æ0ÆÂÖÚßûÿûÿûÿûß÷ßóßóÞ÷÷Þî½­µ­µ¬µ­±­µ­µ­µ­µ­µ­µÍ¹ º²Îšï6ß×××7Û8×Ó8×7ÛôÖÊ.¾.ÂôÖôÖ¾OÂóґƒƲʾ­µ­µ­µí¹ÓÒWã××ÛWßXã7ß7ß7Û6ÛoÆìµõÖÔÎôÒNÂ͵ì¹OÆôÖ²ÆÓÎôÎôÒ6ÛÊ˱ôÖ××ôÒ.¾í¹OÂpÆÛôÒÓÎOÂpÆóÒPÂpÆPÆOÂÓÎ×ôÖ.¾Zã8ßì¹ôÖ5Û××××ÛÒÒëµÛ|ã[ã9ß9ã¾ï[ã”Ò0Â0ÂQÆsεҔÎrÊÞ÷ÿûÿûß÷ßó¿ïß÷ÿû8笱­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºoÆwçxç6Û7Û6ßÛõÖÓұΑÊoÆpÆÓÒôÖ×6ßóÖ.¾óÒÒÎÒÎÊì¹­µ­µ­µî¹-¾Wã6ßÛXãXßWß7ßXß7ßÓÎ ºËµÓÎÒÎ×oÆí¹Í¹ ¾×õÎõÎôÎ×ôÖ,¾Ë±²ÎôÖÓÊÔÎ.¾Íµ/ÂìµÓÎ7ßÓÒÓÖ ºóÒÂÓÎôÖPƲÊõÎöÒ.¾zçœëpÆpÆ6ß×××ôÒôÒóÖì¹×}ã[ã9ß\ã~ß}ã[ã}çëœë[ç:ãQÆãÿÿÿûß÷ßó¿ïßóÿûßû’Ò¬µÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ ºO‘ÎÊpÊpÆ.Â.¾qʲÎôÖ6ßXãWß6ß×5ß6ß.¾NÂN ºÌµ­µ­±­µ­µ­µÌµ ¾±ÎôÖXãXãWã6ßôÚÊ ºí¹ìµÊÒÒÓÖì¹Ìµ­µÌµpÆôÒôÖÒÎÆNÂ˵칱ÎßÛʾ­±Í¹ ¾oÆ7ß×ôÖ.¾ÛÆ‘ÆÓÒpʳÎÛôÒºZßZçÔÖ º6ßÛ×õÒÓ×ÒÎìµÛ|ãZç:ßÓ<×|ççžçç|ë{çµÒrʽóÿûÿûÿûÿ÷ß÷ÿûß÷ë0¬µÍµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ¬µÍ¹¬µ¬µ­µí¹±ÎWã7ßXãzçÛÓÒõÖ6ß6ã6ßÛ.Â̵­µ¬µ­µ­µ­µ¬µ­µ¬µ¬µ¬µí¹ìµìµ ¾ì¹Ìµ¬±­µ¬µÌ¹Ë±ëµìµÌµ­µ±¬µËµìµì¹ëµËµÌµ­µÍµì¹-¾-¾ º/Â͹¬µí¹ ¾-¾ ¾ ºOÂÛôÒ²ÎpÊ º-¾oÂ.¾PÂzç9ãYç’Î.¾²ÎÓÒÓÒ²ÊpÆìµ0º[ßZçZã;Û<×|ã|ç¾ë}ã}ç{ë|ëQÊãÿûÿûß÷ÿûÿûÿûÞ÷9ãSÆtÊrÊ͹­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µ­µ­µ­µì¹ôÖ7ß7ÛYãÛ ¾ ¾.¾7ßXç5ß6ãÎ͵µ¬µ¬µ­±­±±­µ­µµ¬µ¬µ­µ¬µ­µ­µ­µ­µ¬µµ­µ¬µÍ¹í¹í¹í¹ÍµÍ¹ÍµÌµì¹.¾.¾í¹Î¹­µÍ¹.¾ º ¾ ¾ ¾/¾­µÍ¹Í¹î¹0¾qÆqÆqʳÒÛµÎÕÒ÷ÖZßZã:ã[ßZß÷ִγγғÎÕÒÖÒ[Û|ç{ç\ß]Û}ã|ëçç|ã|ç|çÖÒsξ÷ÿûÿûÿûÿûÿûÞ÷µÒ¾¶Æ;×øÚ͹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ ¾6ßXã8ßYßqÆÌµ­±¾qÊ™ïxë6ãOƬ±Íµî½¾N¾µ¬µ¬µ«±Ëµì¹ì¹«±¬µ¬µ­±µ­µ¬µí¹ì¹.¾OÂʲÎÊìµ ºoƱÎÓÒpÆ ¾ º.¾N¾²Ê²Ê‘ÊÆNÂ.Âî¹­µÎ¹RÆøÎ[ß{çZë8ß\ß|ßçç{ë9ç{ã|ãçç{ç9ßç}ãã}ã|ã[ã\ã<Û}ß|ë|çã}ã}ç{çZã0Â:ã¾ïßóß÷ßóßóß÷œï¾–ÆùÎ\ß{ç­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ º×ÛXßYãºÍ¹µ¬µî½/ÂPÆí¹¬µ¬µ.¾pÆÓÒôÖÊ ¾ì¹¾Ìµ ºôÒ×6ßÒÒ ¾ÌµÌµ­µ­µ­µìµôÖ×ôÎôÒÛÛO‘ÎôÒ‘ÆpÆÓÒ±Ê º.¾ÓβÊÓÒõÒÔαÊNÂ͹͹0Â×Ê:×{ã{ëYç{ã|ß}ã}ãëZë{ëœçžëççZç[ã}ß}ß}ß\Û\ã[ã\ß]ßçœëë¾ëžëë|ã”ÎQÆ}ç¾ë¾ë|ë|ëÞ÷ÞûãsÆ×\ßç¾ïrέ¹µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ º×7ÛXßXã-¾í¹­µ­µ¬µ­µ¬µ¬µ¬µí¹ÓÒ6ÛXß7ßWã6ßÓÒ ¾.ÂOÂYã×ôÒôÒ5ßÛoÆì¹Íµ¬µËµ³ÎõÒõÒÛ6ã6ãNÂÓÒ ºÌµÍ¹¾²ÎNÂOÂ²Ê‘Ê º º³ÎÛoÆÎ¹ï½tÆÏ|ã{ã{çZç|ã}ã}ß\Û{çZëëëžë½ë{ç[ç}ç}ß}ß]Û\ß;Û\Û]ßçœëë¾ë¾ï¾ï\çøÖï½ÕÖ½ïë[ç1Æ1ƵÖsÎÊ}ãžçžëžë÷Úι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ/ÂÛ6ÛXãWç ºÍµ¬µ­µ­µµ­µ¬µ¬µOÂÛÛyçXãWãyëXçÛ ºpÊšëXßôÒ³ÎôÒõÒôÖ²ÎìµÍµËµOÂ×õÖoÆ ¾ º ºÓ¬µOÂpÆÊº²Ê.¾¾.Â.±Ê¾î½¾×Ê[Û|ç{çZç{ççžç\Û|ãZëœïëç}ãœëzë|ç}ß}ß]ß}ß|ã;Û\Û}ãë|ë¾ï¾ë¾ï|ë:Û1Âî½Î¹0¾͹ι͵ιι¾•Êçžçžë}ãZãï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßXãšïšï ºÍ¹­µ­µ­µ­µ­µ¬µÍ¹ÓÒ7Û6ÛÓÒoÆpÆÛXãÛÊ-¾yë7ßõÖôÖÓÒ×Û6Û±Î칩­pÆõÒ‘ÆÊ±í¹ì¹oÂôÒ‘Æìµí¹OÂÒÒnÆ.ºÓÎ-¾¾­µî¹Ì¹î¹î½RÂÓ\ß|ç{ç{ç|çã}ß}ãœë{ï½ïççœç{ëZç}ã}ß}ß]ß}ç:ß;×<×ç|ç¾ï¾ëžç½ó|ç۾ι­µ­µ­µ­µ­µ­µ­µ­µQÆ×Ö¾ë¾ï¾ï}ã{ç¾­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±pÆXßYãyç7ç.Â͹­µ­µ­µ­µ­µÍµí¹õÚ6ß²Ê ºî½OÆ-¾ôÖ6ÛóÖêµôÖXãÛ ¾OÆOƲÎ×6ßÎʱ³ÎõÒ²Îëµî½í¹ÊÓÎÒÎÓÎÓÒÓÒ,º ºpÆÓÒO ºOÂ/Âî½î¹ºÖÊ:×|ã{ëZç[ã|ã}ß<×}ç{ïœëëç}çœë{ë|ç}ã}ã\Û}ã|ç;ß<×[Û:ßçžë}ãžëœï{çsÊï½µµ­µ­µ­µ¬µ­µ­µ­µ0Âß¾óßó¾ïçZç͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ‹±¾Xãyç™ëxëÂ͹­µ­µ­µ­µ­µÍ¹ìµ7ãxë.¾¾­±­µOƲÎXãÛ뵑ÊXã7ß.Âî¹î¹.¾²ÎWãßNÂ.¾õÖÓÖoÆ.¾.¾ ºÓÒÓÎÓÎôÖ-¾ëµÊ±ÓÒôÖÓβÊpÂOÆ º¾ÕÒ:ÛלëZçZã|ã\ß\Û\ß|ëœïëç}ãë{ë{ççžç}ß}ßë[ã;Û\Û{çZãçžçç¾ó{çÛï½Î¹¬µ­µ­µ­µ­µ­µ­µ­µÍ¹0Â\çßóß÷¾ëžë8ãî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ«±ìµ7ßxçxçyëÂ͵­µ­µ­µµ­µí¹ëµôÖyç‘ʾ¬µ­µ.ÂPÆXçWã,¾oÆ7ß7ßPÆÍ¹­µ¾PÆÛßoÆí¹××õÒ×ÛOÆpÂôÒôÒoÆNÂ-¾ìµ-¾‘ÊÓÒÛõÖÛõÖ.¾º9ß{ãœëZç|ç|ß]Û<×çœëœë}ã|ß}ãœë|ëç}ã}ß\Û|ç[ã;Û\Û|ç{ç|çžçžç¾óï{çrÊïÁ­±­µ­µ­µ­µ­µ­µ­µ­µÎ¹1Â\ã¾ï¿ïžç¾ïÕÚî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµëµßšëyë»óOÆÍµ­µ­µµ¬µÌµì¹ º ¾‘Ê7ÛÔÖ͵­µ/ÂpÆXçWçnÆ º6ÛÛOÆ­µµ­µ.¾²ÎÛ±Îì¹ôÒ7ßÛ6ßWã²Î‘Ê×õÒ×ÛôÖO ºí¹.¾¾OÆõÖõÒóÖ-¾“ÎzçZç{ç|ã\ß<×}ß{çœëç|ß\ßœçœïëžç}ã\Û}ã[ç:ß|ß¾ç|ë|ë}çç¾ï½ó[ç÷Ú­µ­µ­µ­µ­µ­µ­µ­µ­µÎµ¾¶Îžç¾ëžç}ãï0ÆÎ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹ëµÓÒXãyëÜ÷ÓÖ͵­µ­±­µÍ¹.ÂÒÒß6ã.³ÎX㾬µ¾.¾ÛÛ. ¾7ß6ßpÆÍµ¬µ­µ/‘ÊóÒÒÒìµÓÎ6ãôÚNÂʵ˱6ßÛÛÛöÖ6ÛÓÒí¹­µ­µÍµ.Â.¾õÒÔÒMÂ/¾Yã9ã{ç}ã\Û<×|ã{ëœï}ã}ã|ãœëœï¾ëžç\ß|ß|ç9ß;Ûç½ëœïœëçë¾ó|ë[ãQÆï½­±­µ­µ­µ­µ­µ­µ­µ­µ¾¾מçžçžç}ãøÚ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµ³Ò™ëyë¼óßî½­±­±­µí¹ÒÎ6ÛÛ6ßOƲÎ7ß.­±Â.¾6ÛÛ.‘ÎXã7ßPÆî¹¬µ.Â.²ÎôÖÓÖ ºÓÎÛ.Âí¹Ìµ.¾šïßÒÒìµ/¾ÓÎôÒ¾¾Íµ¬±/Â-¾õÒôÒoƾ8ã9ã}ç}ß<Û\ß|çœï½ï}ã}ã|ë›ë½ëžç}ß\Û|çZãÛ\ßžë½ï¾ó¾ïç¾ï½÷{ãÖÖî½­µ­µ­µ­µ­µ­µ­µ­µ­±ÎµRÆØÒ\ß}ßžç~ã\ßQÆÍ¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.™ïšëyë7ãOÆí¹î½í¹qÆôÒôÎôÖÛNÂÓÎÛOÆPÆpÊOÆ7ßôÖ ¾õÚzçÛOÆ/Â.ÂNÂqÆ7ßWãÓÖì¹ôÖóÖ ºí¹Ì¹oÆxëߑΠ¾ì¹pÂõÖ‘ÎOÂì¹ìµìµÓÒ8ßWãoÆqÆYç{ç}ã]ß]ß|çœï½óë\ß|çœïœï¾ë}ã<Û\ã|ç9ß;×ã¾ï½óÞóëë½óœë[ã1Âï½­µ­µ­µ­µ­µ­µ­µ­µ­µRÆ•Ê<Û\Û~ã}ã\Û×Ö͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÌµõÚšë™ë»ó6ßOÂOƲÎÛ××6ßÒÒ-¾ôÖõÒÓÎpÆ‘ÎÛVã‘Î º7ãyç×OÆ.¾N³Ò7ß7ßÛÊ/ÂÛ6ßOÆÊ±Ë±Ê±ÓÒXãßí¹¬µpÆ6ßõÚOÂÔÖ³ÊÔÒXãyçôÚ ºöÖzçç}ã]ß}ã|ç¼ó¾ï}ã}ßœë{ëïë\Û]ß}çZã×;מë¾ïÞó¾ë}ãçœë[ãßï½Î¹­µ­µ­µ­µ­µ­µ­±­µ1ÂsÆ;Û}ß}ãžç~ç:ßÂ͹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ.Â7ãšëšïšëXçXã7Û6Û7Û6ÛÛpÊ.¾ÛÛõÎÓ7Û6ßÛ ¾ì¹ôÖ7ß6ßÛôÖÛ6ß6ßÛóÖì¹³ÒÛ×ÒÒNÂN¾oÆ ºöÖ7Û¾­µ ºôÖXçN²ÎôÖõÖ7ã5ßpÆ“ÎZç|ç|ß}ã]ßçï½óë<Û\ßœïœï¾ï}ß;×|ã[ç:ß;×]ß¾ï¾ó¿ï}ã}ãë{ç:ã1Æï½±­µ­µ­µ­µ­µ­µ­µ0ÂRÆ×}ãžçžçç|ç´Ò͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µî¹PÆWãyçXãXß7Û7Û6Û6ßôÖ‘Êí¹Í¹pÊxç×ÕÊ×ôÖOÆî½ ºpÆ6ÛÓÒôÖÛÛÛ±ÎNÂìµÌµÛ7ß×7ÛÛ6ÛÛ ¾ß7ã ¾­µí¹±Î7ãÊ˱-¾‘ΑÊpƳÒ8ã{ç}ã}ß]Û]ßëœï½ï\ß<Ûëœï½ïžë\Û;Û|ç:ß:×\Ûçï¾ëžç}ãçœë[ãÖÖι­µ­µ­µ­µ­µ­±­µÎ¹¾”Ê;Ûžç¿ë¾ë¾ë¾ï÷Úι­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¾²ÎÛ6Û6Û×ÒÎÊ.¾Íµ¬µ­µ.¾pÆõÖ³Îqʾ͵¬µí¹-¾±ÊÒÒÓÒÊOÆ.¾Ìµ¬µ­µ«±³ÒXã×YßXãÛÒÒì¹. ºÌµ¬±Íµ-¾Û²Ò¾’ΓÊõÖYçzë8ã|ç}ß]ß]ßçœï½ïë]ßç{ëœïï}ã\Û|ãZã:Û;×\ßëëã~ãçë{ã[ã1ÆÎ¹­±¬µ±­µ­µÎ¹ï¹¾¶Î\ãžë¾ï¾ï¿ïÞóZçî½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±í¹í¹¾í¹Ìµ¬µ¬µµ­µ­µÍµí¹í¹¾î¹­µŒ±­µ¬±¬±¬µÌµÌµ¬µ­µ­µ¬±¬µµÌµì¹.¾ ¾¾í¹ì¹ËµÌµ«±¬µ¬±±­µ ºôÚ7ãOÂrÂ×{ãZç9ã[ç|ã}ß\ß}ãëïžë}ß|ß½ï{ïœïç}ãç{ë:ß;Û<×}ãë}ç}ß}ãë|ç[ß÷Öî½­µ­µ­µÍ¹î¹ï¹¾–Ê<Û}ã¿ë¿ï¿ï¿óßóYçµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­µµµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µ­µ­µ­µµµ±­µ­µ­µ­µ­µ­µ­±¬µÌµ‘ÊXã²Î º×ZßYã9ã|ã}ß|ß}ßçœë½ï}ç\Ûžë½óœïë}ãçœëZã:Û<×\ßëç\ß\Ûçœï[ã[ß1Æï½Î¹Î¹ï½1Æ•ÊùÖ<Û~ãžãžçžç¾ë¿ïÞ÷ãµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µÍµ ºõÖ7ÛpÆOÂ8ßYç{ç|ß\ß\ß|ãœëœëë\Û}ã½ó½ó½ëç}çë[ç:ß;×<×|ãë}ã}ß}çë{ç[ßÖÒ”Î:ßß:ãœï¾ïžëžçžçžã~ã}ßžã¾ï½ó´Öî¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÌµpÆ7ÛõÒOÂpÆ8ã|ç|ã\ß}ßë{ëë}ã\ßïœïëç}ãç|ëZã[ß<×\Û}ë}ç}ãžç¾ïœë[ã:Û1¾<Ûžç¾ëžë¿ë¿ëžë¿ë¾ëžã~ç\ß:ßÖÖ0Â͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹’Ê ºÓÎÓôÎOÂ.¾Ûzã[ß\ãœë|ëç\Û|ãœóœïëççëZã[ß\ß\ß}çëã}ãžëï{ç;Û”ÊuÆžë¿ó¾ï¾ï¿ï¿ïžç~ã}ã;ß×ÒRÆï½­µ­µ­µ¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Æ9߯ ºôÒÔÎ×pʾ8ß[ß|ç{ëœç|ß\Û|ë›ïëç}ã|ç{ë[ã\ß|ß|çïžë}ãžç¾ï|ë;Û×RÂ;Û~ççžçžçç[ãÛµÎRÂï¹­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹ÖÒ\ãyç.Â-ºôÎÓ6Û‘ÊrÆ[ß|ç|ç}ç;Û|ã{ëœëç}ã|ã{ë[ç\ã}ßç½ïëžã~ãžë¾ï[ãÓ•ÎsÆÛøÖ¶Î”ÊRÆÂï¹Í¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ1Â×\Û{ã8Û.¾NÂôÒÛ±ÎqÂ[ã{ç|ç|ã[Û{ç{ëœë}ç\ß|çZã[ã|ß|ãëëžç}ã}ãžëœë×øÎî¹ï½Î¹Î¹­µ­µ­µ­µ¬µ­µ­µ­µ­±­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µµ­µÎ¹ØÒ<×}ã|ßZßßOÂ.ºoÆqÆ×{ã{çë|ã{ã{ëœëç\ß[ßZçZã|ã}ãœë½ëç}ß]ßçœë[ç:×R­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï¹Ó;×\ß[ßZã9ßZß××[ß|ã[ß{ã|ã[ß{ã{ç|ç|ã[ß[ç:ã[ß|ß|çïç}ß\Û}ßë{ç[ß÷Ö͵­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬±ºÓ\Û\ã[ß9Û:Û;Û[Û|ß}ã[ß[ß|ã[Û:Û:ß[ß[ß\ß|ãYãZã\ß|çïë}ã\Û\Û}ã|ç:Û9×1­µ­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬±ð¹ùÎÓ|ãç{ç:ß[Û\Û|ß|ã[ß{ã}ã|ã[ã[ã[ß;Û;Û:ß:ß|ç|ãœëœï}ã}ß<Û}ß|ç[ãϵÎ͵­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µî¹sÂØÊ;Û[ß{ãZã[ã[ß[ã[ã{ã|ß|ãç{ã[ã\ß;Û:Û×:Û|ã{ãœëœë|ã\Û\ß|ã|ç×øÎï¹­µ­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹1¾×Ò:Û;Ûëë}ç|ã|ß\ß\Û|ß|ç{ã[ß:Û:×9Û:ß|ã[ß[ã|çë}ã\ß|ã|ã[ß:×sÊ͵¬µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µï½1µÎ[ã|ãç¾ëžç}ã\Û\ß\ß\ß[ß:Û:Û;ß[ß[ã|ã[ã|ã|ã|ß}ß|ã[ã;×øÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½sÊøÖ\ã}ççççç}ã\ß;Û;Û[Û\ß[ß[ß\ß\Û\Û\ß}ã[ã[ß:ÛrÊι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ¬µ­µ¬µÍµ0ƵÒZãëë|çç|ç|ã|ß|ã\ß\ß;Û;Û\Û\ß|ã[ã[ß;Û÷Öï½­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹RÆß{ç{ç|ç|ã|ãç|ã|ã[ß:Û[ß[ßZß[ã[ß;ßRÊ͵­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ¬µ­µ­µÎ¹QÆÖÖöÚ{ç|ç|ã|ß}ã|ã:ß:ßZãZã|ç;ÛÖÒî½­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­±­±­µ­¹î¹1ƵÖß[ã|ã|ß\Û|ß|çë\ßøÒ0Âι­±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÎ¹ï½î¹tÊøÖ×\ßžç}ã[ßµÎι­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µÍ¹î½ÂRʵÒ×ÒÖÒ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ¬µ­µ±­µ­µ­µÍ¹Î¹ï½î½­µµ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µŒ±­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ­µ \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile new file mode 100644 index 0000000000..9577a775d8 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=ToonShading +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile.fpc new file mode 100644 index 0000000000..70be68d4b0 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=ToonShading + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/Toon_Shading/ToonShading.pp b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/ToonShading.pp new file mode 100644 index 0000000000..4588ba003e --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/ToonShading.pp @@ -0,0 +1,124 @@ +program ToonShading; +//NB: This would look better if the object had a bit of texturing too (eyes, nose etc) + +{$L build/statue.bin.o} + +uses + ctypes, nds9; + + +{$include inc/statue.bin.inc} + +var + prev_pen: array [0..1] of cint = ( $7FFFFFFF, $7FFFFFFF ); + + +procedure get_pen_delta(var dx, dy: cint); +var + keys: cuint32; + touchXY: touchPosition; +begin + keys := keysHeld(); + + if( keys and KEY_TOUCH ) <> 0 then + begin + touchXY := touchReadXY(); + + if ( prev_pen[0] <> $7FFFFFFF ) then + begin + dx := (prev_pen[0] - touchXY.rawx); + dy := (prev_pen[1] - touchXY.rawy); + end; + + prev_pen[0] := touchXY.rawx; + prev_pen[1] := touchXY.rawy; + end else + begin + prev_pen[0] := $7FFFFFFF; + prev_pen[1] := $7FFFFFFF; + dx := 0; + dy := 0; + end; +end; + +var + rotateX: integer = 0; + rotateY: integer = 0; + keys: cuint32; + pen_delta: array [0..1] of cint; + +begin + //set mode 0, enable BG0 and set it to 3D + videoSetMode(MODE_0_3D); + + // initialize gl + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + //this should work the same as the normal gl call + glViewport(0,0,255,191); + + //toon-table entry 0 is for completely unlit pixels, going up to entry 31 for completely lit + //We block-fill it in two halves, we get cartoony 2-tone lighting + glSetToonTableRange( 0, 15, RGB15(8,8,8) ); + glSetToonTableRange( 16, 31, RGB15(24,24,24) ); + + //any floating point gl call is being converted to fixed prior to being implemented + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 40); + + //NB: When toon-shading, the hw ignores lights 2 and 3 + //Also note that the hw uses the RED component of the lit vertex to index the toon-table + glLight(0, RGB15(16,16,16) , 0, floattov10(-1.0), 0); + glLight(1, RGB15(16,16,16), floattov10(-1.0), 0, 0); + + gluLookAt( 0.0, 0.0, -3.0, //camera possition + 0.0, 0.0, 0.0, //look at + 0.0, 1.0, 0.0); //up + + while true do + begin + + glMatrixMode(GL_MODELVIEW); + glPushMatrix(); + glRotateXi(rotateX); + glRotateYi(rotateY); + + + glMaterialf(GL_AMBIENT, RGB15(8,8,8)); + glMaterialf(GL_DIFFUSE, RGB15(24,24,24)); + glMaterialf(GL_SPECULAR, RGB15(0,0,0)); + glMaterialf(GL_EMISSION, RGB15(0,0,0)); + + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_TOON_HIGHLIGHT); + + + scanKeys(); + keys := keysHeld(); + + if( keys and KEY_UP ) <> 0 then rotateX := rotateX +1; + if( keys and KEY_DOWN ) <> 0 then rotateX := rotateX -1; + if( keys and KEY_LEFT ) <> 0 then rotateY := rotateY +1; + if( keys and KEY_RIGHT ) <> 0 then rotateY := rotateY -1; + + get_pen_delta( pen_delta[0], pen_delta[1] ); + rotateY := rotateY - pen_delta[0]; + rotateX := rotateY - pen_delta[1]; + + + glCallList(@statue_bin); + glPopMatrix(1); + + glFlush(0); + + swiWaitForVBlank(); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/Toon_Shading/data/statue.bin b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/data/statue.bin new file mode 100644 index 0000000000..3c5bba2c5e Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/data/statue.bin differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/Makefile new file mode 100644 index 0000000000..b94ed3cdd0 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/Makefile @@ -0,0 +1,1943 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=lesson01 lesson02 lesson03 lesson04 lesson05 lesson06 lesson07 lesson08 lesson09 lesson10 lesson10b lesson11 +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_LESSON01=1 +TARGET_DIRS_LESSON02=1 +TARGET_DIRS_LESSON03=1 +TARGET_DIRS_LESSON04=1 +TARGET_DIRS_LESSON05=1 +TARGET_DIRS_LESSON06=1 +TARGET_DIRS_LESSON07=1 +TARGET_DIRS_LESSON08=1 +TARGET_DIRS_LESSON09=1 +TARGET_DIRS_LESSON10=1 +TARGET_DIRS_LESSON10B=1 +TARGET_DIRS_LESSON11=1 +endif +ifdef TARGET_DIRS_LESSON01 +lesson01_all: + $(MAKE) -C lesson01 all +lesson01_debug: + $(MAKE) -C lesson01 debug +lesson01_smart: + $(MAKE) -C lesson01 smart +lesson01_release: + $(MAKE) -C lesson01 release +lesson01_units: + $(MAKE) -C lesson01 units +lesson01_examples: + $(MAKE) -C lesson01 examples +lesson01_shared: + $(MAKE) -C lesson01 shared +lesson01_install: + $(MAKE) -C lesson01 install +lesson01_sourceinstall: + $(MAKE) -C lesson01 sourceinstall +lesson01_exampleinstall: + $(MAKE) -C lesson01 exampleinstall +lesson01_distinstall: + $(MAKE) -C lesson01 distinstall +lesson01_zipinstall: + $(MAKE) -C lesson01 zipinstall +lesson01_zipsourceinstall: + $(MAKE) -C lesson01 zipsourceinstall +lesson01_zipexampleinstall: + $(MAKE) -C lesson01 zipexampleinstall +lesson01_zipdistinstall: + $(MAKE) -C lesson01 zipdistinstall +lesson01_clean: + $(MAKE) -C lesson01 clean +lesson01_distclean: + $(MAKE) -C lesson01 distclean +lesson01_cleanall: + $(MAKE) -C lesson01 cleanall +lesson01_info: + $(MAKE) -C lesson01 info +lesson01_makefiles: + $(MAKE) -C lesson01 makefiles +lesson01: + $(MAKE) -C lesson01 all +.PHONY: lesson01_all lesson01_debug lesson01_smart lesson01_release lesson01_units lesson01_examples lesson01_shared lesson01_install lesson01_sourceinstall lesson01_exampleinstall lesson01_distinstall lesson01_zipinstall lesson01_zipsourceinstall lesson01_zipexampleinstall lesson01_zipdistinstall lesson01_clean lesson01_distclean lesson01_cleanall lesson01_info lesson01_makefiles lesson01 +endif +ifdef TARGET_DIRS_LESSON02 +lesson02_all: + $(MAKE) -C lesson02 all +lesson02_debug: + $(MAKE) -C lesson02 debug +lesson02_smart: + $(MAKE) -C lesson02 smart +lesson02_release: + $(MAKE) -C lesson02 release +lesson02_units: + $(MAKE) -C lesson02 units +lesson02_examples: + $(MAKE) -C lesson02 examples +lesson02_shared: + $(MAKE) -C lesson02 shared +lesson02_install: + $(MAKE) -C lesson02 install +lesson02_sourceinstall: + $(MAKE) -C lesson02 sourceinstall +lesson02_exampleinstall: + $(MAKE) -C lesson02 exampleinstall +lesson02_distinstall: + $(MAKE) -C lesson02 distinstall +lesson02_zipinstall: + $(MAKE) -C lesson02 zipinstall +lesson02_zipsourceinstall: + $(MAKE) -C lesson02 zipsourceinstall +lesson02_zipexampleinstall: + $(MAKE) -C lesson02 zipexampleinstall +lesson02_zipdistinstall: + $(MAKE) -C lesson02 zipdistinstall +lesson02_clean: + $(MAKE) -C lesson02 clean +lesson02_distclean: + $(MAKE) -C lesson02 distclean +lesson02_cleanall: + $(MAKE) -C lesson02 cleanall +lesson02_info: + $(MAKE) -C lesson02 info +lesson02_makefiles: + $(MAKE) -C lesson02 makefiles +lesson02: + $(MAKE) -C lesson02 all +.PHONY: lesson02_all lesson02_debug lesson02_smart lesson02_release lesson02_units lesson02_examples lesson02_shared lesson02_install lesson02_sourceinstall lesson02_exampleinstall lesson02_distinstall lesson02_zipinstall lesson02_zipsourceinstall lesson02_zipexampleinstall lesson02_zipdistinstall lesson02_clean lesson02_distclean lesson02_cleanall lesson02_info lesson02_makefiles lesson02 +endif +ifdef TARGET_DIRS_LESSON03 +lesson03_all: + $(MAKE) -C lesson03 all +lesson03_debug: + $(MAKE) -C lesson03 debug +lesson03_smart: + $(MAKE) -C lesson03 smart +lesson03_release: + $(MAKE) -C lesson03 release +lesson03_units: + $(MAKE) -C lesson03 units +lesson03_examples: + $(MAKE) -C lesson03 examples +lesson03_shared: + $(MAKE) -C lesson03 shared +lesson03_install: + $(MAKE) -C lesson03 install +lesson03_sourceinstall: + $(MAKE) -C lesson03 sourceinstall +lesson03_exampleinstall: + $(MAKE) -C lesson03 exampleinstall +lesson03_distinstall: + $(MAKE) -C lesson03 distinstall +lesson03_zipinstall: + $(MAKE) -C lesson03 zipinstall +lesson03_zipsourceinstall: + $(MAKE) -C lesson03 zipsourceinstall +lesson03_zipexampleinstall: + $(MAKE) -C lesson03 zipexampleinstall +lesson03_zipdistinstall: + $(MAKE) -C lesson03 zipdistinstall +lesson03_clean: + $(MAKE) -C lesson03 clean +lesson03_distclean: + $(MAKE) -C lesson03 distclean +lesson03_cleanall: + $(MAKE) -C lesson03 cleanall +lesson03_info: + $(MAKE) -C lesson03 info +lesson03_makefiles: + $(MAKE) -C lesson03 makefiles +lesson03: + $(MAKE) -C lesson03 all +.PHONY: lesson03_all lesson03_debug lesson03_smart lesson03_release lesson03_units lesson03_examples lesson03_shared lesson03_install lesson03_sourceinstall lesson03_exampleinstall lesson03_distinstall lesson03_zipinstall lesson03_zipsourceinstall lesson03_zipexampleinstall lesson03_zipdistinstall lesson03_clean lesson03_distclean lesson03_cleanall lesson03_info lesson03_makefiles lesson03 +endif +ifdef TARGET_DIRS_LESSON04 +lesson04_all: + $(MAKE) -C lesson04 all +lesson04_debug: + $(MAKE) -C lesson04 debug +lesson04_smart: + $(MAKE) -C lesson04 smart +lesson04_release: + $(MAKE) -C lesson04 release +lesson04_units: + $(MAKE) -C lesson04 units +lesson04_examples: + $(MAKE) -C lesson04 examples +lesson04_shared: + $(MAKE) -C lesson04 shared +lesson04_install: + $(MAKE) -C lesson04 install +lesson04_sourceinstall: + $(MAKE) -C lesson04 sourceinstall +lesson04_exampleinstall: + $(MAKE) -C lesson04 exampleinstall +lesson04_distinstall: + $(MAKE) -C lesson04 distinstall +lesson04_zipinstall: + $(MAKE) -C lesson04 zipinstall +lesson04_zipsourceinstall: + $(MAKE) -C lesson04 zipsourceinstall +lesson04_zipexampleinstall: + $(MAKE) -C lesson04 zipexampleinstall +lesson04_zipdistinstall: + $(MAKE) -C lesson04 zipdistinstall +lesson04_clean: + $(MAKE) -C lesson04 clean +lesson04_distclean: + $(MAKE) -C lesson04 distclean +lesson04_cleanall: + $(MAKE) -C lesson04 cleanall +lesson04_info: + $(MAKE) -C lesson04 info +lesson04_makefiles: + $(MAKE) -C lesson04 makefiles +lesson04: + $(MAKE) -C lesson04 all +.PHONY: lesson04_all lesson04_debug lesson04_smart lesson04_release lesson04_units lesson04_examples lesson04_shared lesson04_install lesson04_sourceinstall lesson04_exampleinstall lesson04_distinstall lesson04_zipinstall lesson04_zipsourceinstall lesson04_zipexampleinstall lesson04_zipdistinstall lesson04_clean lesson04_distclean lesson04_cleanall lesson04_info lesson04_makefiles lesson04 +endif +ifdef TARGET_DIRS_LESSON05 +lesson05_all: + $(MAKE) -C lesson05 all +lesson05_debug: + $(MAKE) -C lesson05 debug +lesson05_smart: + $(MAKE) -C lesson05 smart +lesson05_release: + $(MAKE) -C lesson05 release +lesson05_units: + $(MAKE) -C lesson05 units +lesson05_examples: + $(MAKE) -C lesson05 examples +lesson05_shared: + $(MAKE) -C lesson05 shared +lesson05_install: + $(MAKE) -C lesson05 install +lesson05_sourceinstall: + $(MAKE) -C lesson05 sourceinstall +lesson05_exampleinstall: + $(MAKE) -C lesson05 exampleinstall +lesson05_distinstall: + $(MAKE) -C lesson05 distinstall +lesson05_zipinstall: + $(MAKE) -C lesson05 zipinstall +lesson05_zipsourceinstall: + $(MAKE) -C lesson05 zipsourceinstall +lesson05_zipexampleinstall: + $(MAKE) -C lesson05 zipexampleinstall +lesson05_zipdistinstall: + $(MAKE) -C lesson05 zipdistinstall +lesson05_clean: + $(MAKE) -C lesson05 clean +lesson05_distclean: + $(MAKE) -C lesson05 distclean +lesson05_cleanall: + $(MAKE) -C lesson05 cleanall +lesson05_info: + $(MAKE) -C lesson05 info +lesson05_makefiles: + $(MAKE) -C lesson05 makefiles +lesson05: + $(MAKE) -C lesson05 all +.PHONY: lesson05_all lesson05_debug lesson05_smart lesson05_release lesson05_units lesson05_examples lesson05_shared lesson05_install lesson05_sourceinstall lesson05_exampleinstall lesson05_distinstall lesson05_zipinstall lesson05_zipsourceinstall lesson05_zipexampleinstall lesson05_zipdistinstall lesson05_clean lesson05_distclean lesson05_cleanall lesson05_info lesson05_makefiles lesson05 +endif +ifdef TARGET_DIRS_LESSON06 +lesson06_all: + $(MAKE) -C lesson06 all +lesson06_debug: + $(MAKE) -C lesson06 debug +lesson06_smart: + $(MAKE) -C lesson06 smart +lesson06_release: + $(MAKE) -C lesson06 release +lesson06_units: + $(MAKE) -C lesson06 units +lesson06_examples: + $(MAKE) -C lesson06 examples +lesson06_shared: + $(MAKE) -C lesson06 shared +lesson06_install: + $(MAKE) -C lesson06 install +lesson06_sourceinstall: + $(MAKE) -C lesson06 sourceinstall +lesson06_exampleinstall: + $(MAKE) -C lesson06 exampleinstall +lesson06_distinstall: + $(MAKE) -C lesson06 distinstall +lesson06_zipinstall: + $(MAKE) -C lesson06 zipinstall +lesson06_zipsourceinstall: + $(MAKE) -C lesson06 zipsourceinstall +lesson06_zipexampleinstall: + $(MAKE) -C lesson06 zipexampleinstall +lesson06_zipdistinstall: + $(MAKE) -C lesson06 zipdistinstall +lesson06_clean: + $(MAKE) -C lesson06 clean +lesson06_distclean: + $(MAKE) -C lesson06 distclean +lesson06_cleanall: + $(MAKE) -C lesson06 cleanall +lesson06_info: + $(MAKE) -C lesson06 info +lesson06_makefiles: + $(MAKE) -C lesson06 makefiles +lesson06: + $(MAKE) -C lesson06 all +.PHONY: lesson06_all lesson06_debug lesson06_smart lesson06_release lesson06_units lesson06_examples lesson06_shared lesson06_install lesson06_sourceinstall lesson06_exampleinstall lesson06_distinstall lesson06_zipinstall lesson06_zipsourceinstall lesson06_zipexampleinstall lesson06_zipdistinstall lesson06_clean lesson06_distclean lesson06_cleanall lesson06_info lesson06_makefiles lesson06 +endif +ifdef TARGET_DIRS_LESSON07 +lesson07_all: + $(MAKE) -C lesson07 all +lesson07_debug: + $(MAKE) -C lesson07 debug +lesson07_smart: + $(MAKE) -C lesson07 smart +lesson07_release: + $(MAKE) -C lesson07 release +lesson07_units: + $(MAKE) -C lesson07 units +lesson07_examples: + $(MAKE) -C lesson07 examples +lesson07_shared: + $(MAKE) -C lesson07 shared +lesson07_install: + $(MAKE) -C lesson07 install +lesson07_sourceinstall: + $(MAKE) -C lesson07 sourceinstall +lesson07_exampleinstall: + $(MAKE) -C lesson07 exampleinstall +lesson07_distinstall: + $(MAKE) -C lesson07 distinstall +lesson07_zipinstall: + $(MAKE) -C lesson07 zipinstall +lesson07_zipsourceinstall: + $(MAKE) -C lesson07 zipsourceinstall +lesson07_zipexampleinstall: + $(MAKE) -C lesson07 zipexampleinstall +lesson07_zipdistinstall: + $(MAKE) -C lesson07 zipdistinstall +lesson07_clean: + $(MAKE) -C lesson07 clean +lesson07_distclean: + $(MAKE) -C lesson07 distclean +lesson07_cleanall: + $(MAKE) -C lesson07 cleanall +lesson07_info: + $(MAKE) -C lesson07 info +lesson07_makefiles: + $(MAKE) -C lesson07 makefiles +lesson07: + $(MAKE) -C lesson07 all +.PHONY: lesson07_all lesson07_debug lesson07_smart lesson07_release lesson07_units lesson07_examples lesson07_shared lesson07_install lesson07_sourceinstall lesson07_exampleinstall lesson07_distinstall lesson07_zipinstall lesson07_zipsourceinstall lesson07_zipexampleinstall lesson07_zipdistinstall lesson07_clean lesson07_distclean lesson07_cleanall lesson07_info lesson07_makefiles lesson07 +endif +ifdef TARGET_DIRS_LESSON08 +lesson08_all: + $(MAKE) -C lesson08 all +lesson08_debug: + $(MAKE) -C lesson08 debug +lesson08_smart: + $(MAKE) -C lesson08 smart +lesson08_release: + $(MAKE) -C lesson08 release +lesson08_units: + $(MAKE) -C lesson08 units +lesson08_examples: + $(MAKE) -C lesson08 examples +lesson08_shared: + $(MAKE) -C lesson08 shared +lesson08_install: + $(MAKE) -C lesson08 install +lesson08_sourceinstall: + $(MAKE) -C lesson08 sourceinstall +lesson08_exampleinstall: + $(MAKE) -C lesson08 exampleinstall +lesson08_distinstall: + $(MAKE) -C lesson08 distinstall +lesson08_zipinstall: + $(MAKE) -C lesson08 zipinstall +lesson08_zipsourceinstall: + $(MAKE) -C lesson08 zipsourceinstall +lesson08_zipexampleinstall: + $(MAKE) -C lesson08 zipexampleinstall +lesson08_zipdistinstall: + $(MAKE) -C lesson08 zipdistinstall +lesson08_clean: + $(MAKE) -C lesson08 clean +lesson08_distclean: + $(MAKE) -C lesson08 distclean +lesson08_cleanall: + $(MAKE) -C lesson08 cleanall +lesson08_info: + $(MAKE) -C lesson08 info +lesson08_makefiles: + $(MAKE) -C lesson08 makefiles +lesson08: + $(MAKE) -C lesson08 all +.PHONY: lesson08_all lesson08_debug lesson08_smart lesson08_release lesson08_units lesson08_examples lesson08_shared lesson08_install lesson08_sourceinstall lesson08_exampleinstall lesson08_distinstall lesson08_zipinstall lesson08_zipsourceinstall lesson08_zipexampleinstall lesson08_zipdistinstall lesson08_clean lesson08_distclean lesson08_cleanall lesson08_info lesson08_makefiles lesson08 +endif +ifdef TARGET_DIRS_LESSON09 +lesson09_all: + $(MAKE) -C lesson09 all +lesson09_debug: + $(MAKE) -C lesson09 debug +lesson09_smart: + $(MAKE) -C lesson09 smart +lesson09_release: + $(MAKE) -C lesson09 release +lesson09_units: + $(MAKE) -C lesson09 units +lesson09_examples: + $(MAKE) -C lesson09 examples +lesson09_shared: + $(MAKE) -C lesson09 shared +lesson09_install: + $(MAKE) -C lesson09 install +lesson09_sourceinstall: + $(MAKE) -C lesson09 sourceinstall +lesson09_exampleinstall: + $(MAKE) -C lesson09 exampleinstall +lesson09_distinstall: + $(MAKE) -C lesson09 distinstall +lesson09_zipinstall: + $(MAKE) -C lesson09 zipinstall +lesson09_zipsourceinstall: + $(MAKE) -C lesson09 zipsourceinstall +lesson09_zipexampleinstall: + $(MAKE) -C lesson09 zipexampleinstall +lesson09_zipdistinstall: + $(MAKE) -C lesson09 zipdistinstall +lesson09_clean: + $(MAKE) -C lesson09 clean +lesson09_distclean: + $(MAKE) -C lesson09 distclean +lesson09_cleanall: + $(MAKE) -C lesson09 cleanall +lesson09_info: + $(MAKE) -C lesson09 info +lesson09_makefiles: + $(MAKE) -C lesson09 makefiles +lesson09: + $(MAKE) -C lesson09 all +.PHONY: lesson09_all lesson09_debug lesson09_smart lesson09_release lesson09_units lesson09_examples lesson09_shared lesson09_install lesson09_sourceinstall lesson09_exampleinstall lesson09_distinstall lesson09_zipinstall lesson09_zipsourceinstall lesson09_zipexampleinstall lesson09_zipdistinstall lesson09_clean lesson09_distclean lesson09_cleanall lesson09_info lesson09_makefiles lesson09 +endif +ifdef TARGET_DIRS_LESSON10 +lesson10_all: + $(MAKE) -C lesson10 all +lesson10_debug: + $(MAKE) -C lesson10 debug +lesson10_smart: + $(MAKE) -C lesson10 smart +lesson10_release: + $(MAKE) -C lesson10 release +lesson10_units: + $(MAKE) -C lesson10 units +lesson10_examples: + $(MAKE) -C lesson10 examples +lesson10_shared: + $(MAKE) -C lesson10 shared +lesson10_install: + $(MAKE) -C lesson10 install +lesson10_sourceinstall: + $(MAKE) -C lesson10 sourceinstall +lesson10_exampleinstall: + $(MAKE) -C lesson10 exampleinstall +lesson10_distinstall: + $(MAKE) -C lesson10 distinstall +lesson10_zipinstall: + $(MAKE) -C lesson10 zipinstall +lesson10_zipsourceinstall: + $(MAKE) -C lesson10 zipsourceinstall +lesson10_zipexampleinstall: + $(MAKE) -C lesson10 zipexampleinstall +lesson10_zipdistinstall: + $(MAKE) -C lesson10 zipdistinstall +lesson10_clean: + $(MAKE) -C lesson10 clean +lesson10_distclean: + $(MAKE) -C lesson10 distclean +lesson10_cleanall: + $(MAKE) -C lesson10 cleanall +lesson10_info: + $(MAKE) -C lesson10 info +lesson10_makefiles: + $(MAKE) -C lesson10 makefiles +lesson10: + $(MAKE) -C lesson10 all +.PHONY: lesson10_all lesson10_debug lesson10_smart lesson10_release lesson10_units lesson10_examples lesson10_shared lesson10_install lesson10_sourceinstall lesson10_exampleinstall lesson10_distinstall lesson10_zipinstall lesson10_zipsourceinstall lesson10_zipexampleinstall lesson10_zipdistinstall lesson10_clean lesson10_distclean lesson10_cleanall lesson10_info lesson10_makefiles lesson10 +endif +ifdef TARGET_DIRS_LESSON10B +lesson10b_all: + $(MAKE) -C lesson10b all +lesson10b_debug: + $(MAKE) -C lesson10b debug +lesson10b_smart: + $(MAKE) -C lesson10b smart +lesson10b_release: + $(MAKE) -C lesson10b release +lesson10b_units: + $(MAKE) -C lesson10b units +lesson10b_examples: + $(MAKE) -C lesson10b examples +lesson10b_shared: + $(MAKE) -C lesson10b shared +lesson10b_install: + $(MAKE) -C lesson10b install +lesson10b_sourceinstall: + $(MAKE) -C lesson10b sourceinstall +lesson10b_exampleinstall: + $(MAKE) -C lesson10b exampleinstall +lesson10b_distinstall: + $(MAKE) -C lesson10b distinstall +lesson10b_zipinstall: + $(MAKE) -C lesson10b zipinstall +lesson10b_zipsourceinstall: + $(MAKE) -C lesson10b zipsourceinstall +lesson10b_zipexampleinstall: + $(MAKE) -C lesson10b zipexampleinstall +lesson10b_zipdistinstall: + $(MAKE) -C lesson10b zipdistinstall +lesson10b_clean: + $(MAKE) -C lesson10b clean +lesson10b_distclean: + $(MAKE) -C lesson10b distclean +lesson10b_cleanall: + $(MAKE) -C lesson10b cleanall +lesson10b_info: + $(MAKE) -C lesson10b info +lesson10b_makefiles: + $(MAKE) -C lesson10b makefiles +lesson10b: + $(MAKE) -C lesson10b all +.PHONY: lesson10b_all lesson10b_debug lesson10b_smart lesson10b_release lesson10b_units lesson10b_examples lesson10b_shared lesson10b_install lesson10b_sourceinstall lesson10b_exampleinstall lesson10b_distinstall lesson10b_zipinstall lesson10b_zipsourceinstall lesson10b_zipexampleinstall lesson10b_zipdistinstall lesson10b_clean lesson10b_distclean lesson10b_cleanall lesson10b_info lesson10b_makefiles lesson10b +endif +ifdef TARGET_DIRS_LESSON11 +lesson11_all: + $(MAKE) -C lesson11 all +lesson11_debug: + $(MAKE) -C lesson11 debug +lesson11_smart: + $(MAKE) -C lesson11 smart +lesson11_release: + $(MAKE) -C lesson11 release +lesson11_units: + $(MAKE) -C lesson11 units +lesson11_examples: + $(MAKE) -C lesson11 examples +lesson11_shared: + $(MAKE) -C lesson11 shared +lesson11_install: + $(MAKE) -C lesson11 install +lesson11_sourceinstall: + $(MAKE) -C lesson11 sourceinstall +lesson11_exampleinstall: + $(MAKE) -C lesson11 exampleinstall +lesson11_distinstall: + $(MAKE) -C lesson11 distinstall +lesson11_zipinstall: + $(MAKE) -C lesson11 zipinstall +lesson11_zipsourceinstall: + $(MAKE) -C lesson11 zipsourceinstall +lesson11_zipexampleinstall: + $(MAKE) -C lesson11 zipexampleinstall +lesson11_zipdistinstall: + $(MAKE) -C lesson11 zipdistinstall +lesson11_clean: + $(MAKE) -C lesson11 clean +lesson11_distclean: + $(MAKE) -C lesson11 distclean +lesson11_cleanall: + $(MAKE) -C lesson11 cleanall +lesson11_info: + $(MAKE) -C lesson11 info +lesson11_makefiles: + $(MAKE) -C lesson11 makefiles +lesson11: + $(MAKE) -C lesson11 all +.PHONY: lesson11_all lesson11_debug lesson11_smart lesson11_release lesson11_units lesson11_examples lesson11_shared lesson11_install lesson11_sourceinstall lesson11_exampleinstall lesson11_distinstall lesson11_zipinstall lesson11_zipsourceinstall lesson11_zipexampleinstall lesson11_zipdistinstall lesson11_clean lesson11_distclean lesson11_cleanall lesson11_info lesson11_makefiles lesson11 +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/Makefile.fpc new file mode 100644 index 0000000000..14bee5ba97 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=lesson01 lesson02 lesson03 lesson04 lesson05 lesson06 lesson07 lesson08 lesson09 lesson10 lesson10b lesson11 + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile new file mode 100644 index 0000000000..3873d54b3c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson01 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile.fpc new file mode 100644 index 0000000000..524b775966 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson01 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/lesson01.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/lesson01.pp new file mode 100644 index 0000000000..1be7294919 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/lesson01.pp @@ -0,0 +1,71 @@ +(**************************************** + * NDS NeHe Lesson 01 * + * Author: Dovoto * + ****************************************) + +program Lesson01; + +{$mode objfpc} + +uses + ctypes, nds9; + +function DrawGLScene(): boolean; +begin + //we are going to use floating point for the tutorial...keep in mind the DS has no + //floating point hardware. For real life use the built in fixed point types. + //this is where the magic happens + glLoadIdentity(); + result := true; +end; + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + // initialize the geometry engine + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0, 0, 0, 31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewport(0, 0, 255, 191); + + // setup the view + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + + while true do + begin + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + glColor3f(1, 1, 1); // Set the color..not in nehe source...ds gl default will be black + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + DrawGLScene(); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + //a handy little built in function to wait for a screen refresh + swiWaitForVBlank(); + + // flush to screen + glFlush(0); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile new file mode 100644 index 0000000000..640a3870ec --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson02 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile.fpc new file mode 100644 index 0000000000..66362fb783 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson02 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/lesson02.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/lesson02.pp new file mode 100644 index 0000000000..a4b6219fc2 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/lesson02.pp @@ -0,0 +1,83 @@ +(**************************************** + * NDS NeHe Lesson 02 * + * Author: Dovoto * + ****************************************) + +program Lesson02; + +{$mode objfpc} + +uses + ctypes, nds9; + +function DrawGLScene(): boolean; +begin + glLoadIdentity(); // Reset The Current Modelview Matrix + + glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 + glBegin(GL_TRIANGLES); // Drawing Using Triangles + glVertex3f( 0.0, 1.0, 0.0); // Top + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glEnd(); // Finished Drawing The Triangle + + glTranslatef(3.0,0.0,0.0); // Move Right 3 Units + glBegin(GL_QUADS); // Draw A Quad + glVertex3f(-1.0, 1.0, 0.0); // Top Left + glVertex3f( 1.0, 1.0, 0.0); // Top Right + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glEnd(); // Done Drawing The Quad + + result := true; // Keep Going +end; + +begin + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + // initialize the geometry engine + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + // Set the color of the vertices + glColor3f(1, 1, 1); + + while true do + begin + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + DrawGLScene(); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + //a handy little built in function to wait for a screen refresh + swiWaitForVBlank(); + + // flush to screen + glFlush(0); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile new file mode 100644 index 0000000000..bc5fba23dd --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson03 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile.fpc new file mode 100644 index 0000000000..98d323ad57 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson03 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/lesson03.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/lesson03.pp new file mode 100644 index 0000000000..0f3cc63fb9 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/lesson03.pp @@ -0,0 +1,80 @@ +(**************************************** + * NDS NeHe Lesson 03 * + * Author: Dovoto * + ****************************************) + +program Lesson03; + +{$mode objfpc} + +uses + ctypes, nds9; + +function DrawGLScene(): boolean; +begin + glLoadIdentity(); // Reset The Current Modelview Matrix + glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 + glBegin(GL_TRIANGLES); // Drawing Using Triangles + glColor3f(1.0,0.0,0.0); // Set The Color To Red + glVertex3f( 0.0, 1.0, 0.0); // Top + glColor3f(0.0,1.0,0.0); // Set The Color To Green + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glColor3f(0.0,0.0,1.0); // Set The Color To Blue + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glEnd(); // Finished Drawing The Triangle + glTranslatef(3.0,0.0,0.0); // Move Right 3 Units + glColor3f(0.5,0.5,1.0); // Set The Color To Blue One Time Only + glBegin(GL_QUADS); // Draw A Quad + glVertex3f(-1.0, 1.0, 0.0); // Top Left + glVertex3f( 1.0, 1.0, 0.0); // Top Right + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glEnd(); // Done Drawing The Quad + result := true; // Keep Going +end; + + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + glColor3f(1, 1, 1); // Set the color..not in nehe source...ds gl default will be black + + while true do + begin + + DrawGLScene(); + + // flush to screen + glFlush(0); + + //a handy little built in function to wait for a screen refresh + swiWaitForVBlank(); + + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile new file mode 100644 index 0000000000..7f7e09ff7c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson04 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile.fpc new file mode 100644 index 0000000000..4c7930fa0f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson04 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/lesson04.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/lesson04.pp new file mode 100644 index 0000000000..b10c115908 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/lesson04.pp @@ -0,0 +1,91 @@ +(**************************************** + * NDS NeHe Lesson 04 * + * Author: Dovoto * + ****************************************) + +program Lesson04; + +{$mode objfpc} + +uses + ctypes, nds9; + +var + rtri: cfloat = 0.0; // Angle For The Triangle ( NEW ) + rquad: cfloat = 0.0; // Angle For The Quad ( NEW ) + + +function DrawGLScene(): boolean; +begin + glLoadIdentity(); // Reset The Current Modelview Matrix + glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 + glRotatef(rtri,0.0,1.0,0.0); // Rotate The Triangle On The Y axis ( NEW ) + glColor3f(1, 1, 1); // set the vertex color + glBegin(GL_TRIANGLES); // Drawing Using Triangles + glColor3f(1.0,0.0,0.0); // Set The Color To Red + glVertex3f( 0.0, 1.0, 0.0); // Top + glColor3f(0.0,1.0,0.0); // Set The Color To Green + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glColor3f(0.0,0.0,1.0); // Set The Color To Blue + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glEnd(); // Finished Drawing The Triangle + glLoadIdentity(); // Reset The Current Modelview Matrix + glTranslatef(1.5,0.0,-6.0); // Move Right 3 Units + glRotatef(rquad,1.0,0.0,0.0); // Rotate The Quad On The X axis ( NEW ) + glColor3f(0.5,0.5,1.0); // Set The Color To Blue One Time Only + glBegin(GL_QUADS); // Draw A Quad + glVertex3f(-1.0, 1.0, 0.0); // Top Left + glVertex3f( 1.0, 1.0, 0.0); // Top Right + glVertex3f( 1.0,-1.0, 0.0); // Bottom Right + glVertex3f(-1.0,-1.0, 0.0); // Bottom Left + glEnd(); // Done Drawing The Quad + rtri := rtri + 0.9; // Increase The Rotation Variable For The Triangle ( NEW ) + rquad := rquad - 0.75; // Decrease The Rotation Variable For The Quad ( NEW ) + result := true; // Keep Going +end; + + + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + // initialize the geometry engine + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + while true do + begin + // draw the scene + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile new file mode 100644 index 0000000000..1381885ae5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson05 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile.fpc new file mode 100644 index 0000000000..2d0b79ec7b --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson05 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/lesson05.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/lesson05.pp new file mode 100644 index 0000000000..d8e770ef15 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/lesson05.pp @@ -0,0 +1,135 @@ +(**************************************** + * NDS NeHe Lesson 05 * + * Author: Dovoto * + ****************************************) + +program Lesson05; + +{$mode objfpc} + +uses + ctypes, nds9; + +var + rtri: cfloat = 0.0; + rquad: cfloat = 0.0; + + +function DrawGLScene(): boolean; +begin + glLoadIdentity(); // Reset The Current Modelview Matrix + glTranslatef(-1.5,0.0,-6.0); // Move Left 1.5 Units And Into The Screen 6.0 + glRotatef(rtri,0.0,1.0,0.0); // Rotate The Triangle On The Y axis ( NEW ) + glBegin(GL_TRIANGLES); // Start Drawing A Triangle + glColor3f(1.0,0.0,0.0); // Red + glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Front) + glColor3f(0.0,1.0,0.0); // Green + glVertex3f(-1.0,-1.0, 1.0); // Left Of Triangle (Front) + glColor3f(0.0,0.0,1.0); // Blue + glVertex3f( 1.0,-1.0, 1.0); // Right Of Triangle (Front) + glColor3f(1.0,0.0,0.0); // Red + glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Right) + glColor3f(0.0,0.0,1.0); // Blue + glVertex3f( 1.0,-1.0, 1.0); // Left Of Triangle (Right) + glColor3f(0.0,1.0,0.0); // Green + glVertex3f( 1.0,-1.0, -1.0); // Right Of Triangle (Right) + glColor3f(1.0,0.0,0.0); // Red + glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Back) + glColor3f(0.0,1.0,0.0); // Green + glVertex3f( 1.0,-1.0, -1.0); // Left Of Triangle (Back) + glColor3f(0.0,0.0,1.0); // Blue + glVertex3f(-1.0,-1.0, -1.0); // Right Of Triangle (Back) + glColor3f(1.0,0.0,0.0); // Red + glVertex3f( 0.0, 1.0, 0.0); // Top Of Triangle (Left) + glColor3f(0.0,0.0,1.0); // Blue + glVertex3f(-1.0,-1.0,-1.0); // Left Of Triangle (Left) + glColor3f(0.0,1.0,0.0); // Green + glVertex3f(-1.0,-1.0, 1.0); // Right Of Triangle (Left) + glEnd(); // Done Drawing The Pyramid + + glLoadIdentity(); // Reset The Current Modelview Matrix + glTranslatef(1.5,0.0,-7.0); // Move Right 1.5 Units And Into The Screen 7.0 + glRotatef(rquad,1.0,1.0,1.0); // Rotate The Quad On The X axis ( NEW ) + glBegin(GL_QUADS); // Draw A Quad + glColor3f(0.0,1.0,0.0); // Set The Color To Green + glVertex3f( 1.0, 1.0,-1.0); // Top Right Of The Quad (Top) + glVertex3f(-1.0, 1.0,-1.0); // Top Left Of The Quad (Top) + glVertex3f(-1.0, 1.0, 1.0); // Bottom Left Of The Quad (Top) + glVertex3f( 1.0, 1.0, 1.0); // Bottom Right Of The Quad (Top) + glColor3f(1.0,0.5,0.0); // Set The Color To Orange + glVertex3f( 1.0,-1.0, 1.0); // Top Right Of The Quad (Bottom) + glVertex3f(-1.0,-1.0, 1.0); // Top Left Of The Quad (Bottom) + glVertex3f(-1.0,-1.0,-1.0); // Bottom Left Of The Quad (Bottom) + glVertex3f( 1.0,-1.0,-1.0); // Bottom Right Of The Quad (Bottom) + glColor3f(1.0,0.0,0.0); // Set The Color To Red + glVertex3f( 1.0, 1.0, 1.0); // Top Right Of The Quad (Front) + glVertex3f(-1.0, 1.0, 1.0); // Top Left Of The Quad (Front) + glVertex3f(-1.0,-1.0, 1.0); // Bottom Left Of The Quad (Front) + glVertex3f( 1.0,-1.0, 1.0); // Bottom Right Of The Quad (Front) + glColor3f(1.0,1.0,0.0); // Set The Color To Yellow + glVertex3f( 1.0,-1.0,-1.0); // Top Right Of The Quad (Back) + glVertex3f(-1.0,-1.0,-1.0); // Top Left Of The Quad (Back) + glVertex3f(-1.0, 1.0,-1.0); // Bottom Left Of The Quad (Back) + glVertex3f( 1.0, 1.0,-1.0); // Bottom Right Of The Quad (Back) + glColor3f(0.0,0.0,1.0); // Set The Color To Blue + glVertex3f(-1.0, 1.0, 1.0); // Top Right Of The Quad (Left) + glVertex3f(-1.0, 1.0,-1.0); // Top Left Of The Quad (Left) + glVertex3f(-1.0,-1.0,-1.0); // Bottom Left Of The Quad (Left) + glVertex3f(-1.0,-1.0, 1.0); // Bottom Right Of The Quad (Left) + glColor3f(1.0,0.0,1.0); // Set The Color To Violet + glVertex3f( 1.0, 1.0,-1.0); // Top Right Of The Quad (Right) + glVertex3f( 1.0, 1.0, 1.0); // Top Left Of The Quad (Right) + glVertex3f( 1.0,-1.0, 1.0); // Bottom Left Of The Quad (Right) + glVertex3f( 1.0,-1.0,-1.0); // Bottom Right Of The Quad (Right) + glEnd(); // Done Drawing The Quad + + rtri:=rtri+0.2; // Increase The Rotation Variable For The Triangle ( NEW ) + rquad:=rquad-0.15; // Decrease The Rotation Variable For The Quad ( NEW ) + result := true; // Keep Going +end; + + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + + // initialize the geometry engine + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // Specify the Clear Color and Depth + glClearColor(0,0,0,31); + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE); + + while true do + begin + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + DrawGLScene(); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + // flush to screen + glFlush(0); + + swiWaitForVBlank(); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile new file mode 100644 index 0000000000..07cdb3d184 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson06 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile.fpc new file mode 100644 index 0000000000..b570af6081 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson06 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/data/drunkenlogo.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/data/drunkenlogo.pcx new file mode 100644 index 0000000000..610722bec6 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/data/drunkenlogo.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/lesson06.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/lesson06.pp new file mode 100644 index 0000000000..3d508f759f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/lesson06.pp @@ -0,0 +1,153 @@ +(**************************************** + * NDS NeHe Lesson 06 * + * Author: Dovoto * + ****************************************) +program Lesson06; +{$L build/drunkenlogo.pcx.o} + +{$mode objfpc} + +uses + ctypes, nds9; + +{$include inc/drunkenlogo.pcx.inc} + +var + xrot: cfloat; // X Rotation ( NEW ) + yrot: cfloat; // Y Rotation ( NEW ) + zrot: cfloat; // Z Rotation ( NEW ) + + texture: array [0..0] of integer; // Storage For One Texture ( NEW ) + + + +function DrawGLScene(): boolean; // Here's Where We Do All The Drawing +begin + glLoadIdentity(); // Reset The View + glTranslatef(0.0,0.0,-5.0); + + glRotatef(xrot,1.0,0.0,0.0); + glRotatef(yrot,0.0,1.0,0.0); + glRotatef(zrot,0.0,0.0,1.0); + + glBindTexture(GL_TEXTURE_2D, texture[0]); + + glBegin(GL_QUADS); + // Front Face + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + // Back Face + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + // Top Face + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + // Bottom Face + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + // Right face + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + // Left Face + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glEnd(); + + xrot:=xrot+0.3; + yrot:=yrot+0.2; + zrot:=zrot+0.4; + result := true; +end; + + +function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures +var + pcx: sImage; //////////////(NEW) and different from nehe. +begin + //load our texture + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + +begin + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the geometry engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + LoadGLTextures(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_FORMAT_LIGHT2); + + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + glLight(1, RGB15(31,31,31) , 0, 0, floattov10(-1.0)); + glLight(2, RGB15(31,31,31) , 0, 0, floattov10(1.0)); + + while true do + begin + + glColor3f(1,1,1); + + DrawGLScene(); + + // flush to screen + glFlush(0); + + swiWaitForVBlank(); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile new file mode 100644 index 0000000000..34e7e0ec28 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson07 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile.fpc new file mode 100644 index 0000000000..956bfd897b --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson07 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/data/drunkenlogo.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/data/drunkenlogo.pcx new file mode 100644 index 0000000000..610722bec6 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/data/drunkenlogo.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/lesson07.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/lesson07.pp new file mode 100644 index 0000000000..6e348e43f7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/lesson07.pp @@ -0,0 +1,195 @@ +(**************************************** + * NDS NeHe Lesson 07 * + * Author: Ethos * + ****************************************) + +program Lesson07; +{$L build/drunkenlogo.pcx.o} + +{$mode objfpc} + +uses + ctypes, nds9; + +{$include inc/drunkenlogo.pcx.inc} + +var + light: boolean; // Lighting ON/OFF ( NEW ) + lp: boolean; // L Pressed? ( NEW ) + + xrot: cfloat; // X Rotation + yrot: cfloat; // Y Rotation + xspeed: cfloat; // X Rotation Speed + yspeed: cfloat; // Y Rotation Speed + z: cfloat = -5.0; // Depth Into The Screen + + texture: array [0..2] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) + +const + LightAmbient: array [0..3] of cfloat = ( 0.5, 0.5, 0.5, 1.0 ); + LightDiffuse: array [0..3] of cfloat = ( 1.0, 1.0, 1.0, 1.0 ); + LightPosition: array [0..3] of cfloat = ( 0.0, 0.0, 2.0, 1.0 ); + + + +function DrawGLScene(): boolean; // Here's Where We Do All The Drawing +begin + glLoadIdentity(); // Reset The View + glTranslatef(0.0,0.0,z); + + glRotatef(xrot,1.0,0.0,0.0); + glRotatef(yrot,0.0,1.0,0.0); + + glBindTexture(GL_TEXTURE_2D, texture[0]); //no filters to swtich between + + glBegin(GL_QUADS); + // Front Face + glNormal3f( 0.0, 0.0, 1.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + // Back Face + glNormal3f( 0.0, 0.0,-1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + // Top Face + glNormal3f( 0.0, 1.0, 0.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + // Bottom Face + glNormal3f( 0.0,-1.0, 0.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + // Right face + glNormal3f( 1.0, 0.0, 0.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + // Left Face + glNormal3f(-1.0, 0.0, 0.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glEnd(); + + xrot:=xrot+xspeed; + yrot:=yrot+yspeed; + + + result := true; +end; + + +function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures +var + pcx: sImage; //////////////(NEW) and different from nehe. +begin + //load our texture + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the geometry engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + LoadGLTextures(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //set up a directional light arguments are light number (0-3), light color, + //and an x,y,z vector that points in the direction of the light, the direction must be normalized + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(8,8,8)); + glMaterialf(GL_DIFFUSE, RGB15(8,8,8)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + while true do + begin + //these little button functions are pretty handy + scanKeys(); + + + if ((keysDown() and KEY_A)) <> 0 then + light := not light; + + if (keysHeld() and KEY_R) <> 0 then + z := z -0.02; + if (keysHeld() and KEY_L) <> 0 then + z := z+0.02; + if (keysHeld() and KEY_LEFT) <> 0 then + xspeed := xspeed-0.01; + if (keysHeld() and KEY_RIGHT) <> 0 then + xspeed := xspeed+0.01; + if (keysHeld() and KEY_UP) <> 0 then + yspeed := yspeed+0.01; + if (keysHeld() and KEY_DOWN) <> 0 then + yspeed := yspeed-0.01; + + + glColor3f(1,1,1); + + if (not light) then + //ds specific, several attributes can be set here including turning on our light + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK) + else + //ds specific, several attributes can be set here including turning on our light + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0); + + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile new file mode 100644 index 0000000000..cea0cc5154 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson08 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile.fpc new file mode 100644 index 0000000000..852f41618f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson08 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/data/drunkenlogo.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/data/drunkenlogo.pcx new file mode 100644 index 0000000000..610722bec6 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/data/drunkenlogo.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/lesson08.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/lesson08.pp new file mode 100644 index 0000000000..e422d2bad5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/lesson08.pp @@ -0,0 +1,196 @@ +(**************************************** + * NDS NeHe Lesson 08 * + * Author: Ethos * + ****************************************) + +program Lesson08; +{$L build/drunkenlogo.pcx.o} + +{$mode objfpc} + +uses + ctypes, nds9; + +{$include inc/drunkenlogo.pcx.inc} + +var + light: boolean; // Lighting ON/OFF ( NEW ) + lp: boolean; // L Pressed? ( NEW ) + + xrot: cfloat; // X Rotation + yrot: cfloat; // Y Rotation + xspeed: cfloat; // X Rotation Speed + yspeed: cfloat; // Y Rotation Speed + z: cfloat = -5.0; // Depth Into The Screen + + texture: array [0..2] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) + +const + LightAmbient: array [0..3] of cfloat = ( 0.5, 0.5, 0.5, 1.0 ); + LightDiffuse: array [0..3] of cfloat = ( 1.0, 1.0, 1.0, 1.0 ); + LightPosition: array [0..3] of cfloat = ( 0.0, 0.0, 2.0, 1.0 ); + +function DrawGLScene(): boolean; // Here's Where We Do All The Drawing +begin + glLoadIdentity(); // Reset The View + glTranslatef(0.0,0.0,z); + + glRotatef(xrot,1.0,0.0,0.0); + glRotatef(yrot,0.0,1.0,0.0); + + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0); + + glBindTexture(GL_TEXTURE_2D, texture[0]); //no filters to swtich between + + glBegin(GL_QUADS); + // Front Face + glNormal3f( 0.0, 0.0, 1.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + // Back Face + glNormal3f( 0.0, 0.0,-1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + // Top Face + glNormal3f( 0.0, 1.0, 0.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + // Bottom Face + glNormal3f( 0.0,-1.0, 0.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + // Right face + glNormal3f( 1.0, 0.0, 0.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, -1.0); + glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, 1.0, 1.0); + glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, 1.0); + glEnd(); + + glPolyFmt(POLY_ALPHA(15) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0); + + glBegin(GL_QUADS); + + // Left Face + glNormal3f(-1.0, 0.0, 0.0); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0); + glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, 1.0); + glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, 1.0, 1.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, -1.0); + glEnd(); + + xrot := xrot+xspeed; + yrot := yrot+yspeed; + + result := true; +end; + + +function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures +var + pcx: sImage; //////////////(NEW) and different from nehe. +begin + //load our texture + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + + +begin + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the geometry engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + glEnable(GL_BLEND); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + LoadGLTextures(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //set up a directional ligth arguments are light number (0-3), light color, + //and an x,y,z vector that points in the direction of the light + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + + + glColor3f(1,1,1); + + glMatrixMode(GL_MODELVIEW); + + //need to set up some material properties since DS does not have them set by default + + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + while true do + begin + //these little button functions are pretty handy + scanKeys(); + + if (keysHeld() and KEY_R) <> 0 then + z := z -0.02; + if (keysHeld() and KEY_L) <> 0 then + z := z+0.02; + if (keysHeld() and KEY_LEFT) <> 0 then + xspeed := xspeed-0.01; + if (keysHeld() and KEY_RIGHT) <> 0 then + xspeed := xspeed+0.01; + if (keysHeld() and KEY_UP) <> 0 then + yspeed := yspeed+0.01; + if (keysHeld() and KEY_DOWN) <> 0 then + yspeed := yspeed-0.01; + + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile new file mode 100644 index 0000000000..b7014d78b8 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson09 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile.fpc new file mode 100644 index 0000000000..a020bcd89a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson09 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/data/Star.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/data/Star.pcx new file mode 100644 index 0000000000..fe6196808d Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/data/Star.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/lesson09.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/lesson09.pp new file mode 100644 index 0000000000..1daa9817a9 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/lesson09.pp @@ -0,0 +1,178 @@ +(**************************************** + * NDS NeHe Lesson 09 * + * Author: dovoto + * DS does not appear to support + the features needed for this demo + ****************************************) + +program Lesson09; +{$L build/star.pcx.o} + +{$mode objfpc} + +uses + ctypes, nds9; + +type + TStars = record // Create A Structure For Star + r, g, b: cint; // Stars Color + dist: cfloat; // Stars Distance From Center + angle: cfloat; // Stars Current Angle + end; + + +{$include inc/star.pcx.inc} + + +var + twinkle: boolean; // Twinkling Stars + tp: boolean; // 'T' Key Pressed? + +const + num = 50; // Number Of Stars To Draw + + +var + star: array [0..num-1] of TStars; // Need To Keep Track Of 'num' Stars + zoom: cfloat = -15.0; // Distance Away From Stars + tilt: cfloat = 90.0; // Tilt The View + spin: cfloat; // Spin Stars + + loop: integer; // General Loop Variable + texture: array [0..0] of integer; // Storage For One textures + + + +// Load PCX files And Convert To Textures +function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures +var + pcx: sImage; //////////////(NEW) and different from nehe. +begin + //load our texture + loadPCX(pcuint8(Star_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGBA, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + +function DrawGLScene(): boolean; // Here's Where We Do All The Drawing +var + loop: integer; +begin + glBindTexture(GL_TEXTURE_2D, texture[0]); // Select Our Texture + + for loop := 0 to num - 1 do // Loop Through All The Stars + begin + glLoadIdentity(); // Reset The View Before We Draw Each Star + glTranslatef(0.0, 0.0, zoom); // Zoom Into The Screen (Using The Value In 'zoom') + glRotatef(tilt, 1.0, 0.0, 0.0); // Tilt The View (Using The Value In 'tilt') + glRotatef(star[loop].angle, 0.0, 1.0, 0.0); // Rotate To The Current Stars Angle + glTranslatef(star[loop].dist, 0.0, 0.0); // Move Forward On The X Plane + glRotatef(-star[loop].angle, 0.0, 1.0, 0.0); // Cancel The Current Stars Angle + glRotatef(-tilt, 1.0, 0.0, 0.0); // Cancel The Screen Tilt + + if (twinkle) then + begin + glColor3b(star[(num-loop)-1].r,star[(num-loop)-1].g,star[(num-loop)-1].b); ///different + glBegin(GL_QUADS); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0,-1.0, 0.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0,-1.0, 0.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 0.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 0.0); + glEnd(); + end; + + glRotatef(spin, 0.0, 0.0, 1.0); + glColor3b(star[loop].r,star[loop].g,star[loop].b); //different + glBegin(GL_QUADS); + glTexCoord2f(0.0, 0.0); glVertex3f(-1.0,-1.0, 0.0); + glTexCoord2f(1.0, 0.0); glVertex3f( 1.0,-1.0, 0.0); + glTexCoord2f(1.0, 1.0); glVertex3f( 1.0, 1.0, 0.0); + glTexCoord2f(0.0, 1.0); glVertex3f(-1.0, 1.0, 0.0); + glEnd(); + + spin := spin + 0.01; + star[loop].angle := star[loop].angle + cfloat(loop) / num; + star[loop].dist := star[loop].dist - 0.01; + if (star[loop].dist < 0.0) then + begin + star[loop].dist := star[loop].dist + 5.0; + star[loop].r := random(256); + star[loop].g := random(256); + star[loop].b := random(256); + end; + end; + result := true; // Keep Going + +end; + + +begin + Randomize; + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the geometry engine + glInit(); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // enable alpha blending + glEnable(GL_BLEND); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + LoadGLTextures(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + glColor3f(1,1,1); + + //set up a directional ligth arguments are light number (0-3), light color, + //and an x,y,z vector that points in the direction of the light + glLight(0, RGB15(31,31,31), 0, 0, floattov10(-1.0)); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + glPolyFmt(POLY_ALPHA(15) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0); + + glMatrixMode(GL_MODELVIEW); + + while true do + begin + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile new file mode 100644 index 0000000000..a04b4b6faf --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson10 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile.fpc new file mode 100644 index 0000000000..ea75b0ae3d --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson10 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/Mud.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/Mud.pcx new file mode 100644 index 0000000000..a12203ed4a Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/Mud.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/World.txt b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/World.txt new file mode 100644 index 0000000000..8f645ace69 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/World.txt @@ -0,0 +1,160 @@ + +NUMPOLLIES 36 + +// Floor 1 +-3.0 0.0 -3.0 0.0 6.0 +-3.0 0.0 3.0 0.0 0.0 + 3.0 0.0 3.0 6.0 0.0 + +-3.0 0.0 -3.0 0.0 6.0 + 3.0 0.0 -3.0 6.0 6.0 + 3.0 0.0 3.0 6.0 0.0 + +// Ceiling 1 +-3.0 1.0 -3.0 0.0 6.0 +-3.0 1.0 3.0 0.0 0.0 + 3.0 1.0 3.0 6.0 0.0 +-3.0 1.0 -3.0 0.0 6.0 + 3.0 1.0 -3.0 6.0 6.0 + 3.0 1.0 3.0 6.0 0.0 + +// A1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-0.5 0.0 -2.0 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-0.5 1.0 -2.0 1.5 1.0 +-0.5 0.0 -2.0 1.5 0.0 + +// A2 + + 2.0 1.0 -2.0 2.0 1.0 + 2.0 0.0 -2.0 2.0 0.0 + 0.5 0.0 -2.0 0.5 0.0 + 2.0 1.0 -2.0 2.0 1.0 + 0.5 1.0 -2.0 0.5 1.0 + 0.5 0.0 -2.0 0.5 0.0 + +// B1 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-0.5 0.0 2.0 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-0.5 1.0 2.0 0.5 1.0 +-0.5 0.0 2.0 0.5 0.0 + +// B2 + + 2.0 1.0 2.0 2.0 1.0 + 2.0 0.0 2.0 2.0 0.0 + 0.5 0.0 2.0 0.5 0.0 + 2.0 1.0 2.0 2.0 1.0 + 0.5 1.0 2.0 0.5 1.0 + 0.5 0.0 2.0 0.5 0.0 + +// C1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-2.0 0.0 -0.5 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-2.0 1.0 -0.5 1.5 1.0 +-2.0 0.0 -0.5 1.5 0.0 + +// C2 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-2.0 0.0 0.5 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-2.0 1.0 0.5 0.5 1.0 +-2.0 0.0 0.5 0.5 0.0 + +// D1 + +2.0 1.0 -2.0 0.0 1.0 +2.0 0.0 -2.0 0.0 0.0 +2.0 0.0 -0.5 1.5 0.0 +2.0 1.0 -2.0 0.0 1.0 +2.0 1.0 -0.5 1.5 1.0 +2.0 0.0 -0.5 1.5 0.0 + +// D2 + +2.0 1.0 2.0 2.0 1.0 +2.0 0.0 2.0 2.0 0.0 +2.0 0.0 0.5 0.5 0.0 +2.0 1.0 2.0 2.0 1.0 +2.0 1.0 0.5 0.5 1.0 +2.0 0.0 0.5 0.5 0.0 + +// Upper hallway - L +-0.5 1.0 -3.0 0.0 1.0 +-0.5 0.0 -3.0 0.0 0.0 +-0.5 0.0 -2.0 1.0 0.0 +-0.5 1.0 -3.0 0.0 1.0 +-0.5 1.0 -2.0 1.0 1.0 +-0.5 0.0 -2.0 1.0 0.0 + +// Upper hallway - R +0.5 1.0 -3.0 0.0 1.0 +0.5 0.0 -3.0 0.0 0.0 +0.5 0.0 -2.0 1.0 0.0 +0.5 1.0 -3.0 0.0 1.0 +0.5 1.0 -2.0 1.0 1.0 +0.5 0.0 -2.0 1.0 0.0 + +// Lower hallway - L +-0.5 1.0 3.0 0.0 1.0 +-0.5 0.0 3.0 0.0 0.0 +-0.5 0.0 2.0 1.0 0.0 +-0.5 1.0 3.0 0.0 1.0 +-0.5 1.0 2.0 1.0 1.0 +-0.5 0.0 2.0 1.0 0.0 + +// Lower hallway - R +0.5 1.0 3.0 0.0 1.0 +0.5 0.0 3.0 0.0 0.0 +0.5 0.0 2.0 1.0 0.0 +0.5 1.0 3.0 0.0 1.0 +0.5 1.0 2.0 1.0 1.0 +0.5 0.0 2.0 1.0 0.0 + + +// Left hallway - Lw + +-3.0 1.0 0.5 1.0 1.0 +-3.0 0.0 0.5 1.0 0.0 +-2.0 0.0 0.5 0.0 0.0 +-3.0 1.0 0.5 1.0 1.0 +-2.0 1.0 0.5 0.0 1.0 +-2.0 0.0 0.5 0.0 0.0 + +// Left hallway - Hi + +-3.0 1.0 -0.5 1.0 1.0 +-3.0 0.0 -0.5 1.0 0.0 +-2.0 0.0 -0.5 0.0 0.0 +-3.0 1.0 -0.5 1.0 1.0 +-2.0 1.0 -0.5 0.0 1.0 +-2.0 0.0 -0.5 0.0 0.0 + +// Right hallway - Lw + +3.0 1.0 0.5 1.0 1.0 +3.0 0.0 0.5 1.0 0.0 +2.0 0.0 0.5 0.0 0.0 +3.0 1.0 0.5 1.0 1.0 +2.0 1.0 0.5 0.0 1.0 +2.0 0.0 0.5 0.0 0.0 + +// Right hallway - Hi + +3.0 1.0 -0.5 1.0 1.0 +3.0 0.0 -0.5 1.0 0.0 +2.0 0.0 -0.5 0.0 0.0 +3.0 1.0 -0.5 1.0 1.0 +2.0 1.0 -0.5 0.0 1.0 +2.0 0.0 -0.5 0.0 0.0 diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/lesson10.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/lesson10.pp new file mode 100644 index 0000000000..f858b6738e --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/lesson10.pp @@ -0,0 +1,314 @@ +(**************************************** + * NDS NeHe Lesson 10 * + * Author: Dovoto * + ****************************************) +program Lesson10; +{$mode objfpc} + +{$L build/Mud.pcx.o} +{$L build/World.txt.o} + +uses + ctypes, nds9; + +{$include inc/Mud.pcx.inc} +{$include inc/World.txt.inc} + +const + piover180: cfloat = 0.0174532925; +var + heading: cfloat = 0.0; + xpos: cfloat = 0.0; + zpos: cfloat = 0.0; + yrot: cfloat = 0.0; // Y Rotation + walkbias: cfloat = 0.0; + walkbiasangle: cfloat = 0.0; + lookupdown: cfloat = 0.0; + + texture: array [0..2] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) + +type + tagVERTEX = record + x, y, z: cfloat; + u, v: cfloat; + end; + VERTEX = tagVERTEX; + + tagTRIANGLE = record + vertex: array [0..2] of VERTEX; + end; + TRIANGLE = tagTRIANGLE; + TTriangle = TRIANGLE; + PTriangle = ^TRIANGLE; + + tagSECTOR = record + numtriangles: integer; + triangle: PTRIANGLE; + end; + SECTOR = tagSECTOR; + +var + sector1: SECTOR; // Our Model Goes Here: + Myfile: pchar; + +function DrawGLScene(): boolean; +var + x_m, y_m, z_m: cfloat; + u_m, v_m: cfloat; + xtrans, ztrans, ytrans: cfloat; + sceneroty: cfloat; + numtriangles: integer; + loop_m: integer; +begin + // Reset The View + xtrans := -xpos; + ztrans := -zpos; + ytrans := -walkbias - 0.25; + sceneroty := 360.0 - yrot; + + glLoadIdentity(); + + glRotatef(lookupdown,1.0,0,0); + glRotatef(sceneroty,0,1.0,0); + + glTranslatef(xtrans, ytrans, ztrans); + glBindTexture(GL_TEXTURE_2D, texture[0]); + + numtriangles := sector1.numtriangles; + + + // Process Each Triangle + for loop_m := 0 to numtriangles - 1 do + begin + glBegin(GL_TRIANGLES); + glNormal3f( 0.0, 0.0, 1.0); + x_m := sector1.triangle[loop_m].vertex[0].x; + y_m := sector1.triangle[loop_m].vertex[0].y; + z_m := sector1.triangle[loop_m].vertex[0].z; + u_m := sector1.triangle[loop_m].vertex[0].u; + v_m := sector1.triangle[loop_m].vertex[0].v; + glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[1].x; + y_m := sector1.triangle[loop_m].vertex[1].y; + z_m := sector1.triangle[loop_m].vertex[1].z; + u_m := sector1.triangle[loop_m].vertex[1].u; + v_m := sector1.triangle[loop_m].vertex[1].v; + glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[2].x; + y_m := sector1.triangle[loop_m].vertex[2].y; + z_m := sector1.triangle[loop_m].vertex[2].z; + u_m := sector1.triangle[loop_m].vertex[2].u; + v_m := sector1.triangle[loop_m].vertex[2].v; + glTexCoord2f(u_m,v_m); glVertex3f(x_m,y_m,z_m); + glEnd(); + end; + DrawGLScene := true; // Everything Went OK +end; + +function tsin(angle: cfloat): cfloat; +var + s: cint32; +begin + s := sinLerp(trunc((angle * DEGREES_IN_CIRCLE) / 360.0)); + + tsin := f32tofloat(s); +end; + +function tcos(angle: cfloat): cfloat; +var + c: cint32; +begin + c := cosLerp(trunc((angle * DEGREES_IN_CIRCLE) / 360.0)); + + tcos := f32tofloat(c); +end; + +procedure myGetStr(buff: pchar; size: integer); +begin + buff^ := Myfile^; + inc(MyFile); + + while (buff^ <> #10) and (buff^ <> #13) do + begin + inc(buff); + buff^ := Myfile^; + inc(MyFile); + end; + + buff[0] := #10; + buff[1] := #0; +end; + +procedure readstr(str: pchar); +begin + repeat + myGetStr(str, 255); + until ((str[0] <> '/') and (str[0] <> #10)); +end; + + +procedure SetupWorld(); +var + x, y, z: cfloat; + u, v: cfloat; + numtriangles: integer; + oneline: array [0..254] of char; + loop, vert: integer; +begin + readstr(oneline); + sscanf(oneline, 'NUMPOLLIES %d'#10, @numtriangles); + + GetMem(sector1.triangle, numtriangles * sizeof(TTRIANGLE)); + + sector1.numtriangles := numtriangles; + + for loop := 0 to numtriangles - 1 do + begin + for vert := 0 to 2 do + begin + readstr(oneline); + sscanf(oneline, '%f %f %f %f %f', @x, @y, @z, @u, @v); + sector1.triangle[loop].vertex[vert].x := x; + sector1.triangle[loop].vertex[vert].y := y; + sector1.triangle[loop].vertex[vert].z := z; + sector1.triangle[loop].vertex[vert].u := u; + sector1.triangle[loop].vertex[vert].v := v; + end; + end; +end; + +// Load PCX files And Convert To Textures +function LoadGLTextures(): boolean; +var + pcx: sImage; +begin + //load our texture + loadPCX(pcuint8(Mud_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD or GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + +var + thisXY: touchPosition; + lastXY: touchPosition; + dx, dy: cint16; + +begin + MyFile := pchar(@World_txt); + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + consoleDemoInit(); + + // initialize the geometry engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + LoadGLTextures(); + SetupWorld(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + + while true do + begin + //these little button functions are pretty handy + scanKeys(); + + if (keysHeld() and KEY_A) <> 0 then lookupdown := lookupdown - 1.0; + + if (keysHeld() and KEY_B) <> 0 then lookupdown := lookupdown + 1.0; + + if (keysHeld() and KEY_LEFT) <> 0 then + begin + heading := heading + 1.0; + yrot := heading; + end; + + if (keysHeld() and KEY_RIGHT) <> 0 then + begin + heading := heading - 1.0; + yrot := heading; + end; + + if (keysHeld() and KEY_DOWN) <> 0 then + begin + xpos := xpos + (tsin(heading)) * 0.05; + zpos := zpos + (tcos(heading)) * 0.05; + if (walkbiasangle >= 359.0) then + walkbiasangle := 0.0 + else + walkbiasangle:= walkbiasangle+10; + + walkbias := tsin(walkbiasangle) / 20.0; + end; + + if (keysHeld() and KEY_UP) <> 0 then + begin + xpos := xpos - (tsin(heading)) * 0.05; + zpos := zpos - (tcos(heading)) * 0.05; + + if (walkbiasangle <= 1.0) then + walkbiasangle := 359.0 + else + walkbiasangle := walkbiasangle- 10; + + walkbias := tsin(walkbiasangle) / 20.0; + end; + + + glColor3f(1,1,1); + + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile new file mode 100644 index 0000000000..f076c86fca --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson10b +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile.fpc new file mode 100644 index 0000000000..82fc189de5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson10b + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/Mud.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/Mud.pcx new file mode 100644 index 0000000000..a12203ed4a Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/Mud.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/World.txt b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/World.txt new file mode 100644 index 0000000000..8f645ace69 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/World.txt @@ -0,0 +1,160 @@ + +NUMPOLLIES 36 + +// Floor 1 +-3.0 0.0 -3.0 0.0 6.0 +-3.0 0.0 3.0 0.0 0.0 + 3.0 0.0 3.0 6.0 0.0 + +-3.0 0.0 -3.0 0.0 6.0 + 3.0 0.0 -3.0 6.0 6.0 + 3.0 0.0 3.0 6.0 0.0 + +// Ceiling 1 +-3.0 1.0 -3.0 0.0 6.0 +-3.0 1.0 3.0 0.0 0.0 + 3.0 1.0 3.0 6.0 0.0 +-3.0 1.0 -3.0 0.0 6.0 + 3.0 1.0 -3.0 6.0 6.0 + 3.0 1.0 3.0 6.0 0.0 + +// A1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-0.5 0.0 -2.0 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-0.5 1.0 -2.0 1.5 1.0 +-0.5 0.0 -2.0 1.5 0.0 + +// A2 + + 2.0 1.0 -2.0 2.0 1.0 + 2.0 0.0 -2.0 2.0 0.0 + 0.5 0.0 -2.0 0.5 0.0 + 2.0 1.0 -2.0 2.0 1.0 + 0.5 1.0 -2.0 0.5 1.0 + 0.5 0.0 -2.0 0.5 0.0 + +// B1 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-0.5 0.0 2.0 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-0.5 1.0 2.0 0.5 1.0 +-0.5 0.0 2.0 0.5 0.0 + +// B2 + + 2.0 1.0 2.0 2.0 1.0 + 2.0 0.0 2.0 2.0 0.0 + 0.5 0.0 2.0 0.5 0.0 + 2.0 1.0 2.0 2.0 1.0 + 0.5 1.0 2.0 0.5 1.0 + 0.5 0.0 2.0 0.5 0.0 + +// C1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-2.0 0.0 -0.5 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-2.0 1.0 -0.5 1.5 1.0 +-2.0 0.0 -0.5 1.5 0.0 + +// C2 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-2.0 0.0 0.5 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-2.0 1.0 0.5 0.5 1.0 +-2.0 0.0 0.5 0.5 0.0 + +// D1 + +2.0 1.0 -2.0 0.0 1.0 +2.0 0.0 -2.0 0.0 0.0 +2.0 0.0 -0.5 1.5 0.0 +2.0 1.0 -2.0 0.0 1.0 +2.0 1.0 -0.5 1.5 1.0 +2.0 0.0 -0.5 1.5 0.0 + +// D2 + +2.0 1.0 2.0 2.0 1.0 +2.0 0.0 2.0 2.0 0.0 +2.0 0.0 0.5 0.5 0.0 +2.0 1.0 2.0 2.0 1.0 +2.0 1.0 0.5 0.5 1.0 +2.0 0.0 0.5 0.5 0.0 + +// Upper hallway - L +-0.5 1.0 -3.0 0.0 1.0 +-0.5 0.0 -3.0 0.0 0.0 +-0.5 0.0 -2.0 1.0 0.0 +-0.5 1.0 -3.0 0.0 1.0 +-0.5 1.0 -2.0 1.0 1.0 +-0.5 0.0 -2.0 1.0 0.0 + +// Upper hallway - R +0.5 1.0 -3.0 0.0 1.0 +0.5 0.0 -3.0 0.0 0.0 +0.5 0.0 -2.0 1.0 0.0 +0.5 1.0 -3.0 0.0 1.0 +0.5 1.0 -2.0 1.0 1.0 +0.5 0.0 -2.0 1.0 0.0 + +// Lower hallway - L +-0.5 1.0 3.0 0.0 1.0 +-0.5 0.0 3.0 0.0 0.0 +-0.5 0.0 2.0 1.0 0.0 +-0.5 1.0 3.0 0.0 1.0 +-0.5 1.0 2.0 1.0 1.0 +-0.5 0.0 2.0 1.0 0.0 + +// Lower hallway - R +0.5 1.0 3.0 0.0 1.0 +0.5 0.0 3.0 0.0 0.0 +0.5 0.0 2.0 1.0 0.0 +0.5 1.0 3.0 0.0 1.0 +0.5 1.0 2.0 1.0 1.0 +0.5 0.0 2.0 1.0 0.0 + + +// Left hallway - Lw + +-3.0 1.0 0.5 1.0 1.0 +-3.0 0.0 0.5 1.0 0.0 +-2.0 0.0 0.5 0.0 0.0 +-3.0 1.0 0.5 1.0 1.0 +-2.0 1.0 0.5 0.0 1.0 +-2.0 0.0 0.5 0.0 0.0 + +// Left hallway - Hi + +-3.0 1.0 -0.5 1.0 1.0 +-3.0 0.0 -0.5 1.0 0.0 +-2.0 0.0 -0.5 0.0 0.0 +-3.0 1.0 -0.5 1.0 1.0 +-2.0 1.0 -0.5 0.0 1.0 +-2.0 0.0 -0.5 0.0 0.0 + +// Right hallway - Lw + +3.0 1.0 0.5 1.0 1.0 +3.0 0.0 0.5 1.0 0.0 +2.0 0.0 0.5 0.0 0.0 +3.0 1.0 0.5 1.0 1.0 +2.0 1.0 0.5 0.0 1.0 +2.0 0.0 0.5 0.0 0.0 + +// Right hallway - Hi + +3.0 1.0 -0.5 1.0 1.0 +3.0 0.0 -0.5 1.0 0.0 +2.0 0.0 -0.5 0.0 0.0 +3.0 1.0 -0.5 1.0 1.0 +2.0 1.0 -0.5 0.0 1.0 +2.0 0.0 -0.5 0.0 0.0 diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/lesson10b.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/lesson10b.pp new file mode 100644 index 0000000000..9e46052ffd --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/lesson10b.pp @@ -0,0 +1,287 @@ +(**************************************** + * NDS NeHe Lesson 10b * + * Author: Dovoto * + ****************************************) +program Lesson10; +{$mode objfpc} + +{$L build/Mud.pcx.o} +{$L build/World.txt.o} + +uses + ctypes, nds9; + +{$include inc/Mud.pcx.inc} +{$include inc/World.txt.inc} + +var + heading: integer; + xpos: cint32; + zpos: cint32; + yrot: cint; // Y Rotation + walkbias: cint32 = 0; + walkbiasangle: cint = 0; + lookupdown: cint = 0; + texture: array [0..0] of integer; // Storage For 1 Textures (only going to use 1 on the DS for this demo) + + +type + tagVERTEX = record + x, y, z: v16; + u, v: t16; + end; + TVERTEX = tagVERTEX; + + tagTRIANGLE = record + vertex: array [0..2] of TVERTEX; + end; + TTRIANGLE = tagTRIANGLE; + PTRIANGLE = ^tagTRIANGLE; + + tagSECTOR = record + numtriangles: integer; + triangle: PTRIANGLE; + end; + SECTOR = tagSECTOR; + TSECTOR = SECTOR; + +var + sector1: TSECTOR; // Our Model Goes Here: + + MyFile: pchar; + + + +function DrawGLScene(): boolean; +var + x_m, y_m, z_m: v16; + u_m, v_m: t16; + xtrans, ztrans, ytrans: cint32; + sceneroty: cint; + numtriangles: integer; + loop_m: integer; +begin + // Reset The View + xtrans := -xpos; + ztrans := -zpos; + ytrans := -walkbias - (1 shl 10); + sceneroty := LUT_SIZE - yrot; + + glLoadIdentity(); + + glRotatef32i(lookupdown, (1 shl 12), 0, 0); + glRotatef32i( sceneroty, 0, (1 shl 12), 0); + + glTranslate3f32(xtrans, ytrans, ztrans); + glBindTexture(GL_TEXTURE_2D, texture[0]); + + numtriangles := sector1.numtriangles; + + + // Process Each Triangle + for loop_m := 0 to numtriangles - 1 do + begin + glBegin(GL_TRIANGLES); + glNormal(NORMAL_PACK( 0, 0, 1 shl 10)); + x_m := sector1.triangle[loop_m].vertex[0].x; + y_m := sector1.triangle[loop_m].vertex[0].y; + z_m := sector1.triangle[loop_m].vertex[0].z; + u_m := sector1.triangle[loop_m].vertex[0].u; + v_m := sector1.triangle[loop_m].vertex[0].v; + glTexCoord2t16(u_m,v_m); glVertex3v16(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[1].x; + y_m := sector1.triangle[loop_m].vertex[1].y; + z_m := sector1.triangle[loop_m].vertex[1].z; + u_m := sector1.triangle[loop_m].vertex[1].u; + v_m := sector1.triangle[loop_m].vertex[1].v; + glTexCoord2t16(u_m,v_m); glVertex3v16(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[2].x; + y_m := sector1.triangle[loop_m].vertex[2].y; + z_m := sector1.triangle[loop_m].vertex[2].z; + u_m := sector1.triangle[loop_m].vertex[2].u; + v_m := sector1.triangle[loop_m].vertex[2].v; + glTexCoord2t16(u_m,v_m); glVertex3v16(x_m,y_m,z_m); + glEnd(); + end; + result := true; // Everything Went OK +end; + + +procedure myGetStr(buff: pchar; size: integer); +begin + buff^ := Myfile^; + inc(MyFile); + + while (buff^ <> #10) and (buff^ <> #13) do + begin + inc(buff); + buff^ := Myfile^; + inc(MyFile); + end; + + buff[0] := #10; + buff[1] := #0; +end; + + +procedure readstr(str: pchar); +begin + repeat + myGetStr(str, 255); + until ((str[0] <> '/') and (str[0] <> #10)); +end; + +procedure SetupWorld(); +var + x, y, z: cfloat; + u, v: cfloat; + numtriangles: integer; + oneline: array [0..254] of char; + loop, vert: integer; +begin + readstr(oneline); + sscanf(oneline, 'NUMPOLLIES %d'#10, @numtriangles); + + GetMem(sector1.triangle, numtriangles * sizeof(TTRIANGLE)); + + sector1.numtriangles := numtriangles; + + for loop := 0 to numtriangles - 1 do + begin + for vert := 0 to 2 do + begin + readstr(oneline); + sscanf(oneline, '%f %f %f %f %f', @x, @y, @z, @u, @v); + sector1.triangle[loop].vertex[vert].x := floattov16(x); + sector1.triangle[loop].vertex[vert].y := floattov16(y); + sector1.triangle[loop].vertex[vert].z := floattov16(z); + sector1.triangle[loop].vertex[vert].u := floattot16(u*128); + sector1.triangle[loop].vertex[vert].v := floattot16(v*128); + end; + end; +end; + +// Load PCX files And Convert To Textures +function LoadGLTextures(): boolean; +var + pcx: sImage; +begin + //load our texture + loadPCX(pcuint8(Mud_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD or GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + +begin + MyFile := pchar(@World_txt); + + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the geometry engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + LoadGLTextures(); + SetupWorld(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + glColor3f(1,1,1); + + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + while true do + begin + //these little button functions are pretty handy + scanKeys(); + + + if (keysHeld() and KEY_A) <> 0 then lookupdown := lookupdown - 1; + + if (keysHeld() and KEY_B) <> 0 then lookupdown := lookupdown + 1; + + if (keysHeld() and KEY_LEFT) <> 0 then + begin + heading := heading + 64; + yrot := heading; + end; + + if (keysHeld() and KEY_RIGHT) <> 0 then + begin + heading := heading - 64; + yrot := heading; + end; + + if (keysHeld() and KEY_DOWN) <> 0 then + begin + + xpos := xpos + sinLerp(heading) div 20; + zpos := zpos + cosLerp(heading) div 20; + + walkbiasangle := walkbiasangle + 640; + + walkbias := sinLerp(walkbiasangle) div 20; + end; + + if (keysHeld() and KEY_UP) <> 0 then + begin + xpos := xpos - sinLerp(heading) div 20; + zpos := zpos - cosLerp(heading) div 20; + + walkbiasangle := walkbiasangle - 640; + + walkbias := sinLerp(walkbiasangle) div 20; + end; + + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile new file mode 100644 index 0000000000..fd9f6f7981 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=lesson11 +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile.fpc b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile.fpc new file mode 100644 index 0000000000..15b7a8a469 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=lesson11 + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/data/drunkenlogo.pcx b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/data/drunkenlogo.pcx new file mode 100644 index 0000000000..610722bec6 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/data/drunkenlogo.pcx differ diff --git a/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/lesson11.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/lesson11.pp new file mode 100644 index 0000000000..c19eb28427 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/lesson11.pp @@ -0,0 +1,194 @@ +program Lesson11; +{$L build/drunkenlogo.pcx.o} + +{$mode objfpc} + +uses + ctypes, nds9; + +{$include inc/drunkenlogo.pcx.inc} + +var + points: array [0..63, 0..31, 0..2] of v16; // The Array For The Points On The Grid Of Our "Wave" + wiggle_count: integer = 0; // Counter Used To Control How Fast Flag Waves + + xrot: cfloat; // X Rotation ( NEW ) + yrot: cfloat; // Y Rotation ( NEW ) + zrot: cfloat; // Z Rotation ( NEW ) + hold: v16; // Temporarily Holds A Floating Point Value + + texture: array [0..0] of integer; // Storage For 3 Textures (only going to use 1 on the DS for this demo) + +function sin(angle: cfloat): cfloat; +var + s: cint32; +begin + s := sinLerp(cint((angle * DEGREES_IN_CIRCLE) / 360.0)); + result := f32tofloat(s); +end; + +function cos(angle: cfloat): cfloat; +var + c: int32; +begin + c := cosLerp(cint((angle * DEGREES_IN_CIRCLE) / 360.0)); + result := f32tofloat(c); +end; + +function DrawGLScene(): boolean; // Here's Where We Do All The Drawing +var + x, y: integer; + float_x, float_y, float_xb, float_yb: t16; +begin + + glColor3b(255,255,255); // set the vertex color + + glLoadIdentity(); // Reset The View + + glTranslatef(0.0,0.0,-12.0); + + glRotatef(xrot,1.0,0.0,0.0); + glRotatef(yrot,0.0,1.0,0.0); + glRotatef(zrot,0.0,0.0,1.0); + + glBindTexture(GL_TEXTURE_2D, texture[0]); + + glBegin(GL_QUADS); + for x := 0 to 30 do + begin + for y := 0 to 30 do + begin + float_x := inttot16(x) shl 2; + float_y := inttot16(y) shl 2; + float_xb := inttot16(x+1) shl 2; + float_yb := inttot16(y+1) shl 2; + + glTexCoord2t16( float_x, float_y); + glVertex3v16( points[x][y][0], points[x][y][1], points[x][y][2] ); + + glTexCoord2t16( float_x, float_yb ); + glVertex3v16( points[x][y+1][0], points[x][y+1][1], points[x][y+1][2] ); + + glTexCoord2t16( float_xb, float_yb ); + glVertex3v16( points[x+1][y+1][0], points[x+1][y+1][1], points[x+1][y+1][2] ); + + glTexCoord2t16( float_xb, float_y ); + glVertex3v16( points[x+1][y][0], points[x+1][y][1], points[x+1][y][2] ); + end; + end; + glEnd(); + + if ( wiggle_count = 2 ) then + begin + for y := 0 to 31 do + begin + hold := points[0][y][2]; + for x := 0 to 31 do + begin + points[x][y][2] := points[x+1][y][2]; + end; + points[31][y][2]:=hold; + end; + wiggle_count := 0; + end; + + inc(wiggle_count); + + xrot:=xrot+0.3; + yrot:=yrot+0.2; + zrot:=zrot+0.4; + + result := true; // Everything Went OK + +end; + + + +function LoadGLTextures(): boolean; // Load PCX files And Convert To Textures +var + pcx: sImage; //////////////(NEW) and different from nehe. +begin + //load our texture + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD, pcx.image.data8); + + result := true; +end; + +procedure InitGL(); +var + x, y:integer; +begin + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the geometry engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // Set our viewport to be the same size as the screen + glViewPort(0,0,255,191); + + // enable antialiasing + glEnable(GL_ANTIALIAS); + + // setup the rear plane + glClearColor(0,0,0,31); // BG must be opaque for AA to work + glClearPolyID(63); // BG must have a unique polygon ID for AA to work + glClearDepth($7FFF); + + LoadGLTextures(); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(31,31,31)); + glMaterialf(GL_DIFFUSE, RGB15(31,31,31)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(16,16,16)); + glMaterialf(GL_EMISSION, RGB15(31,31,31)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE ); + + + for x:=0 to 31 do + begin + for y:=0 to 31 do + begin + points[x][y][0] := (inttov16(x) div 4); + points[x][y][1] := (inttov16(y) div 4); + points[x][y][2] := sinLerp(x * (DEGREES_IN_CIRCLE div 32)); + end; + end; +end; + + +begin + InitGL(); + + glMatrixMode(GL_MODELVIEW); + + while true do + begin + DrawGLScene(); + + // flush to screen + glFlush(0); + + // wait for the screen to refresh + swiWaitForVBlank(); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/16bitColorBmp.pp b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/16bitColorBmp.pp new file mode 100644 index 0000000000..daea693512 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/16bitColorBmp.pp @@ -0,0 +1,37 @@ +program bmp_16bit_color; +{$L build/drunkenlogo.o} + +uses + ctypes, nds9; + +const + drunkenlogoBitmapLen = 26988; + +var + drunkenlogoBitmap: array [0..6746] of cuint; cvar; external; + +begin + // set the mode for 2 text layers and two extended background layers + videoSetMode(MODE_5_2D); + + // set the sub background up for text display (we could just print to one + // of the main display text backgrounds just as easily + videoSetModeSub(MODE_0_2D); //sub bg 0 will be used to print text + + vramSetBankA(VRAM_A_MAIN_BG); + + consoleDemoInit(); + + iprintf(#10#10#9'Hello DS devers'#10); + iprintf(#9'www.drunkencoders.com'#10); + iprintf(#9'16 bit bitmap demo'); + + // set up our bitmap background + bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0,0); + + decompress(@drunkenlogoBitmap, BG_GFX, LZ77Vram); + + while true do + swiWaitForVBlank(); + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile new file mode 100644 index 0000000000..845b1b244f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=16bitColorBmp +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile.fpc b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile.fpc new file mode 100644 index 0000000000..2b8cba07f1 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=16bitColorBmp + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.grit b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.grit new file mode 100644 index 0000000000..1f3eee344a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.grit @@ -0,0 +1,9 @@ +-W3 +# disable alpha and set opaque bit for all pixels +-gT! + +# use lz77 compression +-gzl + +# 16 bit bitmap +-gB16 diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.png b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.png new file mode 100644 index 0000000000..a99f433e87 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.png differ diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/256ColorBmp.pp b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/256ColorBmp.pp new file mode 100644 index 0000000000..6c1c5232e3 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/256ColorBmp.pp @@ -0,0 +1,40 @@ +program bmp_256_color; +{$L build/drunkenlogo.o} + +{$apptype arm9} + +{$mode objfpc} + +uses + ctypes, nds9; + +const + drunkenlogoPalLen = 512; + drunkenlogoBitmapLen = 65536; + +var + drunkenlogoPal: array [0..255] of cushort; cvar; external; + drunkenlogoBitmap: array [0..16383] of cuint; cvar; external; + bg3: integer; + +begin + // set the mode for 2 text layers and two extended background layers + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG_0x06000000); + + consoleDemoInit(); + + iprintf(#10#10#9 + 'Hello DS devers' + #10); + iprintf(#9 + 'www.drunkencoders.com' + #10); + iprintf(#9 + '256 color bitmap demo'); + + bg3 := bgInit(3, BgType_Bmp8, BgSize_B8_256x256, 0,0); + + dmaCopy(@drunkenlogoBitmap, bgGetGfxPtr(bg3), 256*256); + dmaCopy(@drunkenlogoPal, BG_PALETTE, 256*2); + + + while true do + swiWaitForVBlank(); + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile new file mode 100644 index 0000000000..085474b41c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=256ColorBmp +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile.fpc b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile.fpc new file mode 100644 index 0000000000..1dc5231887 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=256ColorBmp + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.grit b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.grit new file mode 100644 index 0000000000..f3358514b8 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.grit @@ -0,0 +1,5 @@ +# 8 bit bitmap +-gB8 + +# bitmap format +-gb diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.png b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.png new file mode 100644 index 0000000000..ea66c9e42f Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.png differ diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/DoubleBuffer.pp b/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/DoubleBuffer.pp new file mode 100644 index 0000000000..91585ea6ec --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/DoubleBuffer.pp @@ -0,0 +1,59 @@ +program DoubleBuffer; + +uses + ctypes, nds9; + +var + backBuffer: pcuint16; + colorMask: cuint16; + iy, ix: integer; + bg: cuint16; + +begin + randomize; + //set the mode for 2 text layers and two extended background layers + videoSetMode(MODE_5_2D); + + //set the first two banks as background memory and the third as sub background memory + //D is not used..if you need a bigger background then you will need to map + //more vram banks consecutivly (VRAM A-D are all 0x20000 bytes in size) + vramSetMainBanks( VRAM_A_MAIN_BG_0x06000000, VRAM_B_MAIN_BG_0x06020000, + VRAM_C_SUB_BG, VRAM_D_LCD); + + consoleDemoInit(); + + iprintf(#10#10#9 + 'Hello DS devers' + #10); + iprintf(#9 + 'www.drunkencoders.com' + #10); + iprintf(#9 + 'double buffer demo'); + + + bg := bgInit(3, BgType_Bmp16, BgSize_B16_256x256, 0,0); + + colorMask := $1F; + + backBuffer := pcuint16(bgGetGfxPtr(bg)) + 256*256; + + while true do + begin + //draw a box (60,60,196,136) + for iy := 60 to 196 - 60 - 1 do + for ix := 60 to 256 - 60 - 1 do + backBuffer[iy * 256 + ix] := random(colorMask) or BIT(15); + + swiWaitForVBlank(); + + //swap the back buffer to the current buffer + backBuffer := pcuint16(bgGetGfxPtr(bg)); + + //swap the current buffer by changing the base. Each base + //represents 16KB of offset and each screen is 256x256x2 (128KB) + //this requires a map base seperation of 8 (could get away with smaller + //as the screen is really only showing 256x192 (96KB or map base 6) + if (bgGetMapBase(bg) = 8) then + bgSetMapBase(bg, 0) + else + bgSetMapBase(bg, 8); + + colorMask := colorMask xor $3FF; + end; +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile b/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile new file mode 100644 index 0000000000..9ef3bee334 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=DoubleBuffer +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile.fpc b/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile.fpc new file mode 100644 index 0000000000..93381d50f5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/Double_Buffer/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=DoubleBuffer + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/Makefile b/packages/libndsfpc/examples/graphics/Backgrounds/Makefile new file mode 100644 index 0000000000..911c8dd115 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/Makefile @@ -0,0 +1,1621 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=16bit_color_bmp 256_color_bmp all_in_one Double_Buffer rotation +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_16BIT_COLOR_BMP=1 +TARGET_DIRS_256_COLOR_BMP=1 +TARGET_DIRS_ALL_IN_ONE=1 +TARGET_DIRS_DOUBLE_BUFFER=1 +TARGET_DIRS_ROTATION=1 +endif +ifdef TARGET_DIRS_16BIT_COLOR_BMP +16bit_color_bmp_all: + $(MAKE) -C 16bit_color_bmp all +16bit_color_bmp_debug: + $(MAKE) -C 16bit_color_bmp debug +16bit_color_bmp_smart: + $(MAKE) -C 16bit_color_bmp smart +16bit_color_bmp_release: + $(MAKE) -C 16bit_color_bmp release +16bit_color_bmp_units: + $(MAKE) -C 16bit_color_bmp units +16bit_color_bmp_examples: + $(MAKE) -C 16bit_color_bmp examples +16bit_color_bmp_shared: + $(MAKE) -C 16bit_color_bmp shared +16bit_color_bmp_install: + $(MAKE) -C 16bit_color_bmp install +16bit_color_bmp_sourceinstall: + $(MAKE) -C 16bit_color_bmp sourceinstall +16bit_color_bmp_exampleinstall: + $(MAKE) -C 16bit_color_bmp exampleinstall +16bit_color_bmp_distinstall: + $(MAKE) -C 16bit_color_bmp distinstall +16bit_color_bmp_zipinstall: + $(MAKE) -C 16bit_color_bmp zipinstall +16bit_color_bmp_zipsourceinstall: + $(MAKE) -C 16bit_color_bmp zipsourceinstall +16bit_color_bmp_zipexampleinstall: + $(MAKE) -C 16bit_color_bmp zipexampleinstall +16bit_color_bmp_zipdistinstall: + $(MAKE) -C 16bit_color_bmp zipdistinstall +16bit_color_bmp_clean: + $(MAKE) -C 16bit_color_bmp clean +16bit_color_bmp_distclean: + $(MAKE) -C 16bit_color_bmp distclean +16bit_color_bmp_cleanall: + $(MAKE) -C 16bit_color_bmp cleanall +16bit_color_bmp_info: + $(MAKE) -C 16bit_color_bmp info +16bit_color_bmp_makefiles: + $(MAKE) -C 16bit_color_bmp makefiles +16bit_color_bmp: + $(MAKE) -C 16bit_color_bmp all +.PHONY: 16bit_color_bmp_all 16bit_color_bmp_debug 16bit_color_bmp_smart 16bit_color_bmp_release 16bit_color_bmp_units 16bit_color_bmp_examples 16bit_color_bmp_shared 16bit_color_bmp_install 16bit_color_bmp_sourceinstall 16bit_color_bmp_exampleinstall 16bit_color_bmp_distinstall 16bit_color_bmp_zipinstall 16bit_color_bmp_zipsourceinstall 16bit_color_bmp_zipexampleinstall 16bit_color_bmp_zipdistinstall 16bit_color_bmp_clean 16bit_color_bmp_distclean 16bit_color_bmp_cleanall 16bit_color_bmp_info 16bit_color_bmp_makefiles 16bit_color_bmp +endif +ifdef TARGET_DIRS_256_COLOR_BMP +256_color_bmp_all: + $(MAKE) -C 256_color_bmp all +256_color_bmp_debug: + $(MAKE) -C 256_color_bmp debug +256_color_bmp_smart: + $(MAKE) -C 256_color_bmp smart +256_color_bmp_release: + $(MAKE) -C 256_color_bmp release +256_color_bmp_units: + $(MAKE) -C 256_color_bmp units +256_color_bmp_examples: + $(MAKE) -C 256_color_bmp examples +256_color_bmp_shared: + $(MAKE) -C 256_color_bmp shared +256_color_bmp_install: + $(MAKE) -C 256_color_bmp install +256_color_bmp_sourceinstall: + $(MAKE) -C 256_color_bmp sourceinstall +256_color_bmp_exampleinstall: + $(MAKE) -C 256_color_bmp exampleinstall +256_color_bmp_distinstall: + $(MAKE) -C 256_color_bmp distinstall +256_color_bmp_zipinstall: + $(MAKE) -C 256_color_bmp zipinstall +256_color_bmp_zipsourceinstall: + $(MAKE) -C 256_color_bmp zipsourceinstall +256_color_bmp_zipexampleinstall: + $(MAKE) -C 256_color_bmp zipexampleinstall +256_color_bmp_zipdistinstall: + $(MAKE) -C 256_color_bmp zipdistinstall +256_color_bmp_clean: + $(MAKE) -C 256_color_bmp clean +256_color_bmp_distclean: + $(MAKE) -C 256_color_bmp distclean +256_color_bmp_cleanall: + $(MAKE) -C 256_color_bmp cleanall +256_color_bmp_info: + $(MAKE) -C 256_color_bmp info +256_color_bmp_makefiles: + $(MAKE) -C 256_color_bmp makefiles +256_color_bmp: + $(MAKE) -C 256_color_bmp all +.PHONY: 256_color_bmp_all 256_color_bmp_debug 256_color_bmp_smart 256_color_bmp_release 256_color_bmp_units 256_color_bmp_examples 256_color_bmp_shared 256_color_bmp_install 256_color_bmp_sourceinstall 256_color_bmp_exampleinstall 256_color_bmp_distinstall 256_color_bmp_zipinstall 256_color_bmp_zipsourceinstall 256_color_bmp_zipexampleinstall 256_color_bmp_zipdistinstall 256_color_bmp_clean 256_color_bmp_distclean 256_color_bmp_cleanall 256_color_bmp_info 256_color_bmp_makefiles 256_color_bmp +endif +ifdef TARGET_DIRS_ALL_IN_ONE +all_in_one_all: + $(MAKE) -C all_in_one all +all_in_one_debug: + $(MAKE) -C all_in_one debug +all_in_one_smart: + $(MAKE) -C all_in_one smart +all_in_one_release: + $(MAKE) -C all_in_one release +all_in_one_units: + $(MAKE) -C all_in_one units +all_in_one_examples: + $(MAKE) -C all_in_one examples +all_in_one_shared: + $(MAKE) -C all_in_one shared +all_in_one_install: + $(MAKE) -C all_in_one install +all_in_one_sourceinstall: + $(MAKE) -C all_in_one sourceinstall +all_in_one_exampleinstall: + $(MAKE) -C all_in_one exampleinstall +all_in_one_distinstall: + $(MAKE) -C all_in_one distinstall +all_in_one_zipinstall: + $(MAKE) -C all_in_one zipinstall +all_in_one_zipsourceinstall: + $(MAKE) -C all_in_one zipsourceinstall +all_in_one_zipexampleinstall: + $(MAKE) -C all_in_one zipexampleinstall +all_in_one_zipdistinstall: + $(MAKE) -C all_in_one zipdistinstall +all_in_one_clean: + $(MAKE) -C all_in_one clean +all_in_one_distclean: + $(MAKE) -C all_in_one distclean +all_in_one_cleanall: + $(MAKE) -C all_in_one cleanall +all_in_one_info: + $(MAKE) -C all_in_one info +all_in_one_makefiles: + $(MAKE) -C all_in_one makefiles +all_in_one: + $(MAKE) -C all_in_one all +.PHONY: all_in_one_all all_in_one_debug all_in_one_smart all_in_one_release all_in_one_units all_in_one_examples all_in_one_shared all_in_one_install all_in_one_sourceinstall all_in_one_exampleinstall all_in_one_distinstall all_in_one_zipinstall all_in_one_zipsourceinstall all_in_one_zipexampleinstall all_in_one_zipdistinstall all_in_one_clean all_in_one_distclean all_in_one_cleanall all_in_one_info all_in_one_makefiles all_in_one +endif +ifdef TARGET_DIRS_DOUBLE_BUFFER +Double_Buffer_all: + $(MAKE) -C Double_Buffer all +Double_Buffer_debug: + $(MAKE) -C Double_Buffer debug +Double_Buffer_smart: + $(MAKE) -C Double_Buffer smart +Double_Buffer_release: + $(MAKE) -C Double_Buffer release +Double_Buffer_units: + $(MAKE) -C Double_Buffer units +Double_Buffer_examples: + $(MAKE) -C Double_Buffer examples +Double_Buffer_shared: + $(MAKE) -C Double_Buffer shared +Double_Buffer_install: + $(MAKE) -C Double_Buffer install +Double_Buffer_sourceinstall: + $(MAKE) -C Double_Buffer sourceinstall +Double_Buffer_exampleinstall: + $(MAKE) -C Double_Buffer exampleinstall +Double_Buffer_distinstall: + $(MAKE) -C Double_Buffer distinstall +Double_Buffer_zipinstall: + $(MAKE) -C Double_Buffer zipinstall +Double_Buffer_zipsourceinstall: + $(MAKE) -C Double_Buffer zipsourceinstall +Double_Buffer_zipexampleinstall: + $(MAKE) -C Double_Buffer zipexampleinstall +Double_Buffer_zipdistinstall: + $(MAKE) -C Double_Buffer zipdistinstall +Double_Buffer_clean: + $(MAKE) -C Double_Buffer clean +Double_Buffer_distclean: + $(MAKE) -C Double_Buffer distclean +Double_Buffer_cleanall: + $(MAKE) -C Double_Buffer cleanall +Double_Buffer_info: + $(MAKE) -C Double_Buffer info +Double_Buffer_makefiles: + $(MAKE) -C Double_Buffer makefiles +Double_Buffer: + $(MAKE) -C Double_Buffer all +.PHONY: Double_Buffer_all Double_Buffer_debug Double_Buffer_smart Double_Buffer_release Double_Buffer_units Double_Buffer_examples Double_Buffer_shared Double_Buffer_install Double_Buffer_sourceinstall Double_Buffer_exampleinstall Double_Buffer_distinstall Double_Buffer_zipinstall Double_Buffer_zipsourceinstall Double_Buffer_zipexampleinstall Double_Buffer_zipdistinstall Double_Buffer_clean Double_Buffer_distclean Double_Buffer_cleanall Double_Buffer_info Double_Buffer_makefiles Double_Buffer +endif +ifdef TARGET_DIRS_ROTATION +rotation_all: + $(MAKE) -C rotation all +rotation_debug: + $(MAKE) -C rotation debug +rotation_smart: + $(MAKE) -C rotation smart +rotation_release: + $(MAKE) -C rotation release +rotation_units: + $(MAKE) -C rotation units +rotation_examples: + $(MAKE) -C rotation examples +rotation_shared: + $(MAKE) -C rotation shared +rotation_install: + $(MAKE) -C rotation install +rotation_sourceinstall: + $(MAKE) -C rotation sourceinstall +rotation_exampleinstall: + $(MAKE) -C rotation exampleinstall +rotation_distinstall: + $(MAKE) -C rotation distinstall +rotation_zipinstall: + $(MAKE) -C rotation zipinstall +rotation_zipsourceinstall: + $(MAKE) -C rotation zipsourceinstall +rotation_zipexampleinstall: + $(MAKE) -C rotation zipexampleinstall +rotation_zipdistinstall: + $(MAKE) -C rotation zipdistinstall +rotation_clean: + $(MAKE) -C rotation clean +rotation_distclean: + $(MAKE) -C rotation distclean +rotation_cleanall: + $(MAKE) -C rotation cleanall +rotation_info: + $(MAKE) -C rotation info +rotation_makefiles: + $(MAKE) -C rotation makefiles +rotation: + $(MAKE) -C rotation all +.PHONY: rotation_all rotation_debug rotation_smart rotation_release rotation_units rotation_examples rotation_shared rotation_install rotation_sourceinstall rotation_exampleinstall rotation_distinstall rotation_zipinstall rotation_zipsourceinstall rotation_zipexampleinstall rotation_zipdistinstall rotation_clean rotation_distclean rotation_cleanall rotation_info rotation_makefiles rotation +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/Makefile.fpc b/packages/libndsfpc/examples/graphics/Backgrounds/Makefile.fpc new file mode 100644 index 0000000000..414f546ccc --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=16bit_color_bmp 256_color_bmp all_in_one Double_Buffer rotation + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Advanced.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Advanced.pp new file mode 100644 index 0000000000..5d37c7d1a1 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Advanced.pp @@ -0,0 +1,240 @@ +unit advanced; + +interface + +uses + ctypes, nds9, scrolling, RotBackgrounds, TextBackgrounds, Multilayer; + +procedure advMosaic(); +procedure advRotating(); +procedure advScaling(); +procedure advExtendedPalette(); +procedure advMultipleLayers(); + + +implementation + +procedure advMosaic(); +var + bg: cint; + keys: integer; + mosaic_x: integer; + mosaic_y: integer; +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + bgMosaicEnable(bg); + + + while ((keys and KEY_B) = 0) do + begin + scanKeys(); + keys := keysDown(); + + if (keys and KEY_UP) <> 0 then mosaic_y := mosaic_y - 1; + if (keys and KEY_DOWN) <> 0 then mosaic_y := mosaic_y + 1; + + if (keys and KEY_LEFT) <> 0 then mosaic_x := mosaic_x - 1; + if (keys and KEY_RIGHT) <> 0 then mosaic_x := mosaic_x + 1; + + if (mosaic_x > 15) then mosaic_x := 15; + if (mosaic_x < 0) then mosaic_x := 0; + + if (mosaic_y > 15) then mosaic_y := 15; + if (mosaic_y < 0) then mosaic_y := 0; + + + swiWaitForVBlank(); + + bgSetMosaic(mosaic_x, mosaic_y); + + consoleClear(); + iprintf('Press B to exit'#10); + iprintf('DX: %d DY: %d', mosaic_x, mosaic_y); + + end; +end; + +procedure advRotating(); +var + bg: cint; + keys: integer; + angle: integer; + mosaic_x: integer; + mosaic_y: integer; + center_x: integer; + center_y: integer; +begin + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_256x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen); + + bgMosaicEnable(bg); + + while ((keys and KEY_B) = 0) do + begin + scanKeys(); + keys := keysHeld(); + + if (keys and KEY_UP) <> 0 then center_y := center_y - 1; + if (keys and KEY_DOWN) <> 0 then center_y := center_y + 1; + + if (keys and KEY_LEFT) <> 0 then center_x := center_x - 1; + if (keys and KEY_RIGHT) <> 0 then center_x := center_x + 1; + + if (keys and KEY_L) <> 0 then angle := angle - 1; + if (keys and KEY_R) <> 0 then angle := angle + 1; + + if (center_x > 256) then center_x := 256; + if (center_x < 0) then center_x := 0; + + if (center_y > 192) then center_y := 192; + if (center_y < 0) then center_y := 0; + + + swiWaitForVBlank(); + + bgSetRotate(bg, angle); + bgSetScroll(bg, center_x, center_y); + bgSetCenter(bg, center_x, center_y); + bgUpdate(); + + consoleClear(); + iprintf('Press B to exit.'#10); + iprintf('Angle: %d '#10'center X: %d center Y: %d', angle, center_x, center_y); + + end; +end; + +procedure advScaling(); +var + bg: cint; + keys, scale_x, scale_y: integer; + +begin + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_256x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen); + + bgMosaicEnable(bg); + + scale_x := 1 shl 8; + scale_y := 1 shl 8; + + while ((keys and KEY_B) = 0) do + begin + scanKeys(); + keys := keysHeld(); + + if (keys and KEY_UP) <> 0 then scale_y := scale_y - 1; + if (keys and KEY_DOWN) <> 0 then scale_y := scale_y + 1; + + if (keys and KEY_LEFT) <> 0 then scale_x := scale_x + 1; + if (keys and KEY_RIGHT) <> 0 then scale_x := scale_x - 1; + + swiWaitForVBlank(); + + bgSetScale(bg, scale_x , scale_y ); + + bgUpdate(); + + consoleClear(); + iprintf('Press B to exit.'#10); + iprintf('scale X: %d scale Y: %d', scale_x, scale_y); + + end; +end; + +procedure advExtendedPalette(); +begin + +end; + +procedure advMultipleLayers(); +var + bg1, bg2, bg3: cint; + keys: integer; + bg1_hidden, bg2_hidden, bg3_hidden: boolean; + +begin + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + //initialize the backgrounds + bg1 := bgInit(0, BgType_Text8bpp, BgSize_ER_256x256, 0,1); + bg2 := bgInit(1, BgType_Text8bpp, BgSize_ER_256x256, 1,1); + bg3 := bgInit(2, BgType_ExRotation, BgSize_ER_256x256, 2,1); + + //make sure the floor is on the bottom (by default hardware layer 0 will be rendered last) + bgSetPriority(bg1, 3); + bgSetPriority(bg2, 2); + bgSetPriority(bg3, 1); + + //they all share tiles and a palette + dmaCopy(@MultilayerTiles, bgGetGfxPtr(bg1), sizeof(MultilayerTiles)); + dmaCopy(@MultilayerPal, BG_PALETTE, sizeof(MultilayerPal)); + + //all we need to do is copy in the maps + dmaCopy(@Layer_1Map, bgGetMapPtr(bg1), Layer_1MapLen); + dmaCopy(@Layer_2Map, bgGetMapPtr(bg2), Layer_2MapLen); + dmaCopy(@Layer_3Map, bgGetMapPtr(bg3), Layer_3MapLen); + + keys := 0; + bg1_hidden := false; + bg2_hidden := false; + bg3_hidden := false; + + while ((keys and KEY_B) = 0) do + begin + scanKeys(); + + keys := keysDown(); + + if (keys and KEY_UP) <> 0 then bg1_hidden := not bg1_hidden; + if (keys and KEY_DOWN) <> 0 then bg2_hidden := not bg2_hidden; + if (keys and KEY_LEFT) <> 0 then bg3_hidden := not bg3_hidden; + + swiWaitForVBlank(); + + if bg1_hidden then bgHide(bg1) else bgShow(bg1); + if bg2_hidden then bgHide(bg2) else bgShow(bg2); + if bg3_hidden then bgHide(bg3) else bgShow(bg3); + + consoleClear(); + + iprintf('Press UP DOWN LEFT to toggle the layers'#10#10); + if bg1_hidden then + iprintf('Floor (UP): %s'#10, 'hidden') + else + iprintf('Floor (UP): %s'#10, 'displayed'); + + if bg2_hidden then + iprintf('Walls (DOWN): %s'#10, 'hidden') + else + iprintf('Walls (DOWN): %s'#10, 'displayed'); + + if bg3_hidden then + iprintf('Decorations (LEFT): %s'#10, 'hidden') + else + iprintf('Decorations (LEFT): %s'#10, 'displayed'); + end; +end; + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/BackgroundAllInOne.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/BackgroundAllInOne.pp new file mode 100644 index 0000000000..58e6311279 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/BackgroundAllInOne.pp @@ -0,0 +1,164 @@ +program AllInOne; +{$L build/RotBackgrounds.o} +{$L build/TextBackgrounds.o} +{$L build/Multilayer.o} + +uses + ctypes, nds9, basic, advanced, handmade, scrolling; + +type + Demo = record + go: fp; + name: pchar; + description: pchar; + end; + PDemo = ^Demo; + + Category = record + name: pchar; + demos: PDemo; + count: integer; + end; + PCategory = ^Category; + +var + basicExamples: array [0..12] of Demo = ( + (go: @HandMadeTiles; name: 'Handmade Text 256x256'; description: 'Displays a handmade 256 x 256 Text background';), + (go: @Text256x256; name: 'Text 256x256'; description: 'Displays a 256 x 256 Text background';), + (go: @Text256x512; name: 'Text 256x512'; description: 'Displays a 256 x 512 Text background';), + (go: @Text512x256; name: 'Text 512x256'; description: 'Displays a 512 x 256 Text background';), + (go: @Text512x512; name: 'Text 512x512'; description: 'Displays a 512 x 512 Text background';), + (go: @ExRot128x128; name: 'Extended Rotation 128x128'; description: 'Displays a 128 x 128 Extended Rotation background';), + (go: @ExRot256x256; name: 'Extended Rotation 256x256'; description: 'Displays a 256 x 256 Extended Rotation background';), + (go: @ExRot512x512; name: 'Extended Rotation 512x512'; description: 'Displays a 512 x 512 Extended Rotation background';), + (go: @ExRot1024x1024; name: 'Extended Rotation 1024x1024'; description: 'Displays a 1024 x 1024 Extended Rotation background';), + (go: @Rot128x128; name: 'Rotation 128x128'; description: 'Displays a 256 x 256 Rotation background';), + (go: @Rot256x256; name: 'Rotation 256x256'; description: 'Displays a 256 x 256 Rotation background';), + (go: @Rot512x512; name: 'Rotation 512x512'; description: 'Displays a 512 x 512 Rotation background';), + (go: @Rot1024x1024; name: 'Rotation 1024x1024'; description: 'Displays a 1024 x 1024 Rotation background';) + ); + + bitmapExamples: array [0..9] of Demo = ( + (go: @Bmp8_128x128; name: '256 color 128x128'; description: 'Displays a 128 x 128 Bitmap background';), + (go: @Bmp8_256x256; name: '256 color 256x256'; description: 'Displays a 256 x 256 Bitmap background';), + (go: @Bmp8_512x256; name: '256 color 512x256'; description: 'Displays a 512 x 256 Bitmap background';), + (go: @Bmp8_512x512; name: '256 color 512x512'; description: 'Displays a 512 x 512 Bitmap background';), + (go: @Bmp8_512x1024; name: '256 color 512x1024'; description: 'Displays a 512 x 1024 Bitmap background';), + (go: @Bmp8_1024x512; name: '256 color 1024x512'; description: 'Displays a 1024 x 512 Bitmap background';), + + (go: @Bmp16_128x128; name: '16-bit color 128x128'; description: 'Displays a 128 x 128 Bitmap background';), + (go: @Bmp16_256x256; name: '16-bit color 256x256'; description: 'Displays a 256 x 256 Bitmap background';), + (go: @Bmp16_512x256; name: '16-bit color 512x256'; description: 'Displays a 512 x 256 Bitmap background';), + (go: @Bmp16_512x512; name: '16-bit color 512x512'; description: 'Displays a 512 x 512 Bitmap background';) + ); + + scrollingExamples: array [0..6] of Demo = ( + (go: @scrollText; name: 'Text Backgrounds'; description: 'Hardware Scrolling of a Text background';), + (go: @scrollRotation; name: 'Rot Backgrounds'; description: 'Hardware Scrolling of a Rotation background';), + (go: @scrollVertical; name: 'Vertical Scrolling'; description: 'Scrolling a large map vertically';), + (go: @scrollHorizontalText; name: 'Horizontal Scrolling (Text)'; description: 'Scrolling a large map horzontally on a text background';), + (go: @scrollHorizontalExRotation; name: 'Horizontal Scrolling (ExRot)'; description: 'Scrolling a large map horzontally on an extended rotation background';), + (go: @scroll4wayText; name: '4 Way Scrolling (Text)'; description: 'Scrolling a large map 4 ways on a text background';), + (go: @scroll4wayExRotation; name: '4 Way Scrolling (Rotation)'; description: 'Scrolling a large map 4 ways on a ex rotation background';) + ); + + advancedExamples: array [0..4] of Demo = ( + (go: @advMosaic; name: 'Mosaic'; description: 'A demo of the Mosaic scaling';), + (go: @advRotating; name: 'Rotation'; description: '';), + (go: @advScaling; name: 'Scaling'; description: '';), + (go: @advExtendedPalette; name: 'Extended Palette'; description: '';), + (go: @advMultipleLayers; name: 'Multiple Text Layers'; description: '';) + ); + + categories: array [0..3] of Category = ( + (name: 'Basic'; demos: @basicExamples; count: sizeof(basicExamples) div sizeof(Demo);), + (name: 'Bitmap'; demos: @bitmapExamples; count: sizeof(bitmapExamples) div sizeof(Demo);), + (name: 'Scrolling'; demos: @scrollingExamples; count: sizeof(scrollingExamples) div sizeof(Demo);), + (name: 'Advanced'; demos: @advancedExamples; count: sizeof(advancedExamples) div sizeof(Demo);) + ); + + +var + keys: integer; + selectedCategory: integer = 0; + selectedDemo: integer = 0; + selected: boolean = false; + catCount: integer; + demoCount: integer = 0; + ci: integer; + di: integer; + +begin + + while true do + begin + catCount := sizeof(categories) div sizeof(Category); + demoCount := 0; + + videoSetModeSub(MODE_0_2D); + consoleDemoInit(); + + while not selected do + begin + scanKeys(); + + keys := keysDown(); + + if (keys and KEY_UP) <> 0 then dec(selectedCategory); + if (keys and KEY_DOWN) <> 0 then inc(selectedCategory); + if (keys and KEY_A) <> 0 then selected := true; + + if (selectedCategory < 0) then selectedCategory := catCount - 1; + if (selectedCategory >= catCount) then selectedCategory := 0; + + swiWaitForVBlank(); + consoleClear(); + for ci := 0 to catCount - 1 do + begin + if ci = selectedCategory then + iprintf('%c%d: %s'#10, '*', ci + 1, categories[ci].name) + else + iprintf('%c%d: %s'#10, ' ', ci + 1, categories[ci].name); + end; + end; + + selected := false; + + demoCount := categories[selectedCategory].count; + + while not (selected) do + begin + scanKeys(); + + keys := keysDown(); + + if (keys and KEY_UP) <> 0 then dec(selectedDemo); + if (keys and KEY_DOWN) <> 0 then inc(selectedDemo); + if (keys and KEY_A) <> 0 then selected := true; + if (keys and KEY_B) <> 0 then break; + + if (selectedDemo < 0) then selectedDemo := demoCount - 1; + if (selectedDemo >= demoCount) then selectedDemo := 0; + + swiWaitForVBlank(); + consoleClear(); + + for di := 0 to demoCount - 1 do + begin + if di = selectedDemo then + iprintf('%c%d: %s'#10, '*', di + 1, categories[selectedCategory].demos[di].name) + else + iprintf('%c%d: %s'#10, ' ', di + 1, categories[selectedCategory].demos[di].name); + end; + end; + + if (selected) then + begin + consoleClear(); + iprintf('Use arrow keys to scroll'#10'Press ''B'' to exit'); + categories[selectedCategory].demos[selectedDemo].go(); + end; + end; + +end. + diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Basic.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Basic.pp new file mode 100644 index 0000000000..50cf5cbd3c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Basic.pp @@ -0,0 +1,527 @@ +unit basic; + +interface + +uses + ctypes, nds9, scrolling, TextBackgrounds, RotBackgrounds, Multilayer; + + +procedure Text256x256(); +procedure Text256x512(); +procedure Text512x256(); +procedure Text512x512(); +procedure ExRot128x128(); +procedure ExRot256x256(); +procedure ExRot512x512(); +procedure ExRot1024x1024(); +procedure Rot128x128(); +procedure Rot256x256(); +procedure Rot512x512(); +procedure Rot1024x1024(); +procedure Bmp8_128x128(); +procedure Bmp8_256x256(); +procedure Bmp8_512x256(); +procedure Bmp8_512x512(); +procedure Bmp8_512x1024(); +procedure Bmp8_1024x512(); +procedure Bmp16_128x128(); +procedure Bmp16_512x256(); +procedure Bmp16_256x256(); +procedure Bmp16_512x512(); + + + +implementation + +procedure Text256x256(); +var + bg: cint; +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + scroll(bg, 256, 256); +end; + +procedure Text256x512(); +var + bg: cint; +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@Layer256x512Map, bgGetMapPtr(bg), Layer256x512MapLen); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + scroll(bg, 256, 512); +end; + +procedure Text512x256(); +var + bg: cint; + map: pcuint16; + iy, ix: integer; +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_512x256, 0, 1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + map := pcuint16(bgGetMapPtr(bg)); + + for iy := 0 to 31 do + begin + //first the left half + dmaCopy(@Layer512x256Map + iy * 64 * 2, @map[iy * 32], 32 * 2); + + //then the right half + dmaCopy(@Layer512x256Map + iy * 64 * 2 + 64, @map[(32 * 32) + (iy * 32)], 32 * 2); + end; + + scroll(bg, 512, 256); +end; + +procedure Text512x512(); +var + bg: cint; + map: pcuint16; + iy, ix: integer; +begin + + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_512x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + map := pcuint16(bgGetMapPtr(bg)); + + //draw top half + for iy := 0 to 31 do + begin + //first the left half + dmaCopy(@Layer512x512Map + iy * 64 * 2, map + iy * 32, 32 * 2); + + //then the right half + dmaCopy(@Layer512x512Map + iy * 64 * 2 + 64, map + (32 * 32) + iy * 32, 32 * 2); + end; + + map := map + (32 * 32 * 2); + + //draw bottom half + for iy := 0 to 31 do + begin + //copy one line at a time + //first the left half + dmaCopy(@Layer512x512Map + (iy + 32) * 64 * 2, map + iy * 32, 32 * 2); + + //then the right half + dmaCopy(@Layer512x512Map + (iy + 32) * 64 * 2 + 64, map + (32 * 32) + iy * 32, 32 * 2); + end; + + scroll(bg, 512, 512); +end; + +procedure ExRot128x128(); +var + bg: cint; +begin + + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_128x128, 0, 1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@Layer128x128Map, bgGetMapPtr(bg), Layer128x128MapLen); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + scroll(bg, 128, 128); +end; + +procedure ExRot256x256(); +var + bg: cint; +begin + + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_256x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@Layer256x256Map, bgGetMapPtr(bg), Layer256x256MapLen); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + scroll(bg, 256, 256); +end; + + +procedure ExRot512x512(); +var + bg: cint; +begin + + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_512x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + dmaCopy(@Layer512x512Map, bgGetMapPtr(bg), Layer512x512MapLen); + + scroll(bg, 512, 512); +end; + +procedure ExRot1024x1024(); +var + bg: cint; +begin + + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_1024x1024, 0,2); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + dmaCopy(@Layer1024x1024Map, bgGetMapPtr(bg), Layer1024x1024MapLen); + + scroll(bg, 1024, 1024); +end; + +procedure Rot128x128(); +var + bg: cint; +begin + + videoSetMode(MODE_2_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Rotation, BgSize_R_128x128, 0, 1); + + dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles)); + dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal)); + dmaCopy(@Layer128x128rMap, bgGetMapPtr(bg), Layer128x128rMapLen); + + scroll(bg, 128, 128); +end; + +procedure Rot256x256(); +var + bg: cint; +begin + + videoSetMode(MODE_2_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Rotation, BgSize_R_256x256, 0,2); + + dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles)); + dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal)); + dmaCopy(@Layer256x256rMap, bgGetMapPtr(bg), Layer256x256rMapLen); + + scroll(bg, 256, 256); +end; + + +procedure Rot512x512(); +var + bg: cint; +begin + + videoSetMode(MODE_2_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Rotation, BgSize_R_512x512, 0,2); + + dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles)); + dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal)); + dmaCopy(@Layer512x512rMap, bgGetMapPtr(bg), Layer512x512rMapLen); + + scroll(bg, 512, 512); +end; + +procedure Rot1024x1024(); +var + bg: cint; +begin + + videoSetMode(MODE_2_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Rotation, BgSize_R_1024x1024, 0,3); + + dmaCopy(@RotBackgroundsTiles, bgGetGfxPtr(bg), sizeof(RotBackgroundsTiles)); + dmaCopy(@RotBackgroundsPal, BG_PALETTE, sizeof(RotBackgroundsPal)); + dmaCopy(@Layer1024x1024rMap, bgGetMapPtr(bg), Layer1024x1024rMapLen); + + scroll(bg, 1024, 1024); +end; + + + +procedure Bmp8_128x128(); +var + bg: cint; + buffer: pcuint16; + i, iy, ix: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Bmp8, BgSize_B8_128x128,0,0); + + for i := 0 to 255 do + BG_PALETTE[i] := random(high(cuint16)); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 127 do + for ix := 0 to (128 div 2) - 1 do + buffer[ix + iy * 64] := random(high(cuint16)); + + scroll(bg, 128, 128); +end; + +procedure Bmp8_256x256(); +var + bg: cint; + buffer: pcuint16; + i, iy, ix: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Bmp8, BgSize_B8_256x256,0,0); + + for i := 0 to 255 do + BG_PALETTE[i] := random(high(cuint16)); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 255 do + for ix := 0 to (256 div 2) - 1 do + buffer[ix + iy * 128] := random(high(cuint16)); + + scroll(bg, 256, 256); + +end; + +procedure Bmp8_512x256(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; + i: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Bmp8, BgSize_B8_512x256,0,0); + + for i := 0 to 255 do + BG_PALETTE[i] := random(high(cuint16)); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 255 do + for ix := 0 to (512 div 2) - 1 do + buffer[ix + iy * 256] := random(high(cuint16)); + + scroll(bg, 512, 256); +end; + +procedure Bmp8_512x512(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; + i: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankB(VRAM_B_MAIN_BG); + + bg := bgInit(3, BgType_Bmp8, BgSize_B8_512x512,0,0); + + for i := 0 to 255 do + BG_PALETTE[i] := random(high(cuint16)); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 511 do + for ix := 0 to (512 div 2) -1 do + buffer[ix + iy * 256] := random(high(cuint16)); + + scroll(bg, 512, 512); +end; + +procedure Bmp8_512x1024(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; + i: integer; +begin + randomize; + videoSetMode(MODE_6_2D); + vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankB(VRAM_B_MAIN_BG); + vramSetBankC(VRAM_C_MAIN_BG); + vramSetBankD(VRAM_D_MAIN_BG); + + bg := bgInit(2, BgType_Bmp8, BgSize_B8_512x1024,0,0); + + for i := 0 to 255 do + BG_PALETTE[i] := random(high(cuint16)); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 1023 do + for ix := 0 to (512 div 2) -1 do + buffer[ix + iy * 256] := random(high(cuint16)); + + scroll(bg, 512, 1024); +end; + +procedure Bmp8_1024x512(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; + i: integer; +begin + randomize; + videoSetMode(MODE_6_2D); + vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankB(VRAM_B_MAIN_BG); + vramSetBankC(VRAM_C_MAIN_BG); + vramSetBankD(VRAM_D_MAIN_BG); + + bg := bgInit(2, BgType_Bmp8, BgSize_B8_1024x512,0,0); + + for i := 0 to 255 do + BG_PALETTE[i] := random(high(cuint16)); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 511 do + for ix := 0 to (1024 div 2) -1 do + buffer[ix + iy * 512] := random(high(cuint16)); + + scroll(bg, 1024, 512); +end; + +procedure Bmp16_128x128(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(2, BgType_Bmp16, BgSize_B16_128x128,0,0); + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 127 do + for ix := 0 to 127 do + buffer[ix + iy * 128] := random(high(cuint16)); + + scroll(bg, 128, 128); +end; + +procedure Bmp16_256x256(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(2, BgType_Bmp16, BgSize_B16_256x256,0,0); + + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 255 do + for ix := 0 to 255 do + buffer[ix + iy * 256] := random(high(cuint16)); + + scroll(bg, 256, 256); +end; + +procedure Bmp16_512x256(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankB(VRAM_B_MAIN_BG); + + bg := bgInit(2, BgType_Bmp16, BgSize_B16_512x256,0,0); + + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 255 do + for ix := 0 to 512 do + buffer[ix + iy * 512] := random(high(cuint16)); + + scroll(bg, 512, 256); +end; + +procedure Bmp16_512x512(); +var + bg: cint; + buffer: pcuint16; + iy, ix: integer; +begin + randomize; + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankB(VRAM_B_MAIN_BG); + vramSetBankC(VRAM_C_MAIN_BG); + vramSetBankD(VRAM_D_MAIN_BG); + + bg := bgInit(2, BgType_Bmp16, BgSize_B16_512x512,0,0); + + + buffer := pcuint16(bgGetGfxPtr(bg)); + + for iy := 0 to 511 do + for ix := 0 to 511 do + buffer[ix + iy * 512] := random(high(cuint16)); + + scroll(bg, 512, 512); +end; + + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Handmade.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Handmade.pp new file mode 100644 index 0000000000..643fe17961 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Handmade.pp @@ -0,0 +1,119 @@ +unit handmade; + +interface + +uses + ctypes, nds9, scrolling; + + +procedure HandMadeTiles(); + +var + tiles: array [0..(64*4)-1] of cuint8 = +( +//Tile 0: transparent tile + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, + 0,0,0,0,0,0,0,0, +//Tile 1: solid tile using color index 1 + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, +//Tile 2: solid tile using color index 2 + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, + 2,2,2,2,2,2,2,2, +//Tile 3: smily face tile + 0,0,1,1,1,1,0,0, + 0,1,1,1,1,1,1,0, + 1,1,2,1,1,2,1,1, + 1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1, + 1,2,1,1,1,1,2,1, + 0,1,2,2,2,2,1,0, + 0,0,1,1,1,1,0,0 +); + + +map32x32: array [0..(32*32)-1] of cuint16 = +( + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1, + 1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1, + 1,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,3,3,1,1,1,1,1,1,3,3,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,3,1,1,1,1,1,1,3,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,3,3,3,3,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1, + 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 +); + + palette: array [0..2] of cuint16; +// = ( +// RGB15(0,0,0), +// RGB15(31,31,0), +// RGB15(0,31,0) +//); + +implementation + +procedure HandMadeTiles(); +var + bg: cint; +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0,1); + + dmaCopy(@tiles, bgGetGfxPtr(bg), sizeof(tiles)); + dmaCopy(@map32x32, bgGetMapPtr(bg), sizeof(map32x32)); + dmaCopy(@palette, BG_PALETTE, sizeof(palette)); + + scroll(bg, 256, 256); +end; + +initialization + palette[0] := RGB15(0,0,0); + palette[1] := RGB15(31,31,0); + palette[2] := RGB15(0,31,0); + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile new file mode 100644 index 0000000000..efe245e336 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile @@ -0,0 +1,1638 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=BackgroundAllInOne +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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) $(ASM_FILES) fpc_all +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' +$(ASM_FILES): $(wildcard %.*) + @echo 'Assembling $(@) file...' + @$(AS) -o $(BUILD)/$(*F).o asm/$(@) + @echo 'Done!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile.fpc b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile.fpc new file mode 100644 index 0000000000..542a044b12 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Makefile.fpc @@ -0,0 +1,103 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=BackgroundAllInOne + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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))) + +[rules] +.NOTPARALLEL: +clean: dir_delete fpc_clean fpc_cleanall +all: dir_make $(BIN_FILES) $(GFX_FILES) $(ASM_FILES) fpc_all + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' + + +# +# ASM files processing rule +# +$(ASM_FILES): $(wildcard %.*) + @echo 'Assembling $(@) file...' + @$(AS) -o $(BUILD)/$(*F).o asm/$(@) + @echo 'Done!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Multilayer.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Multilayer.pp new file mode 100644 index 0000000000..4d172bfa57 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Multilayer.pp @@ -0,0 +1,76 @@ +unit Multilayer; + +interface + +uses + ctypes; + +//====================================================================== +// +// Layer_1, 256x256@8, +// + regular map (flat), not compressed, 32x32 +// Total size: 2048 = 2048 +// +// Time-stamp: 2007-12-07, 18:17:34 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer_1MapLen = 2048; +var + Layer_1Map: array [0..1023] of cushort; cvar; external; + +//====================================================================== +// +// Layer_2, 256x256@8, +// + regular map (flat), not compressed, 32x32 +// Total size: 2048 = 2048 +// +// Time-stamp: 2007-12-07, 18:17:34 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer_2MapLen = 2048; +var + Layer_2Map: array [0..1023] of cushort; cvar; external; + +//====================================================================== +// +// Layer_3, 256x256@8, +// + regular map (flat), not compressed, 32x32 +// Total size: 2048 = 2048 +// +// Time-stamp: 2007-12-07, 18:17:34 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer_3MapLen = 2048; +var + Layer_3Map: array [0..1023] of cushort; cvar; external; + +//====================================================================== +// +// Multilayer, 8x2504@8, +// + palette 256 entries, not compressed +// + 313 tiles not compressed +// Total size: 512 + 20032 = 20544 +// +// Time-stamp: 2007-12-07, 18:17:35 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + MultilayerPalLen = 512; + MultilayerTilesLen = 20032; +var + MultilayerPal: array [0..255] of cushort; cvar; external; + MultilayerTiles: array [0..5007] of cuint; cvar; external; + +implementation +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/RotBackgrounds.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/RotBackgrounds.pp new file mode 100644 index 0000000000..d5042cd218 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/RotBackgrounds.pp @@ -0,0 +1,97 @@ +unit RotBackgrounds; + +interface + +uses + ctypes; +//====================================================================== +// +// Layer128x128r, 128x128@8, +// + affine map, not compressed, 16x16 +// External tile file: (null). +// Total size: 256 = 256 +// +// Time-stamp: 2008-12-03, 18:15:41 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com/projects/#grit ) +// +//====================================================================== +const + Layer128x128rMapLen = 256; +var + Layer128x128rMap: array [0..255] of cuchar; cvar; external; + +//====================================================================== +// +// Layer256x256r, 256x256@8, +// + affine map, not compressed, 32x32 +// External tile file: (null). +// Total size: 1024 = 1024 +// +// Time-stamp: 2008-12-03, 18:15:41 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com/projects/#grit ) +// +//====================================================================== +const + Layer256x256rMapLen = 1024; +var + Layer256x256rMap: array [0..1023] of cuchar; cvar; external; + +//====================================================================== +// +// Layer512x512r, 512x512@8, +// + affine map, not compressed, 64x64 +// External tile file: (null). +// Total size: 4096 = 4096 +// +// Time-stamp: 2008-12-03, 18:15:41 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com/projects/#grit ) +// +//====================================================================== +const + Layer512x512rMapLen = 4096; +var + Layer512x512rMap: array [0..4095] of cuchar; cvar; external; + +//====================================================================== +// +// Layer1024x1024r, 1024x1024@8, +// + affine map, not compressed, 128x128 +// External tile file: (null). +// Total size: 16384 = 16384 +// +// Time-stamp: 2008-12-03, 18:15:42 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com/projects/#grit ) +// +//====================================================================== +const + Layer1024x1024rMapLen = 16384; +var + Layer1024x1024rMap: array [0..16383] of cuchar; cvar; external; + +//====================================================================== +// +// RotBackgrounds, 8x872@8, +// + palette 256 entries, not compressed +// + 109 tiles not compressed +// Total size: 512 + 6976 = 7488 +// +// Time-stamp: 2008-12-03, 18:15:42 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com/projects/#grit ) +// +//====================================================================== +const + RotBackgroundsTilesLen = 6976; + RotBackgroundsPalLen = 512; +var + RotBackgroundsTiles: array [0..1743] of cuint; cvar; external; + RotBackgroundsPal: array [0..255] of cushort; cvar; external; + + +implementation + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Scrolling.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Scrolling.pp new file mode 100644 index 0000000000..3054db5b20 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/Scrolling.pp @@ -0,0 +1,581 @@ +unit scrolling; + +interface + +uses + ctypes, nds9, RotBackgrounds, TextBackgrounds, Multilayer; + +procedure scroll(id, width, height: cint); +procedure scrollText(); +procedure scrollRotation(); +procedure scrollVertical(); +procedure scrollHorizontalText(); +procedure scrollHorizontalExRotation(); +procedure scroll4wayText(); +procedure scroll4wayExRotation(); + + +implementation + +//reusable scroll function to allow the user to explore +//the maps somewhat +procedure scroll(id, width, height: cint); +var + keys, sx, sy: integer; +begin + keys := 0; + sx := 0; + sy := 0; + + while (keys and KEY_B) = 0 do + begin + scanKeys(); + + keys := keysHeld(); + + if (keys and KEY_UP) <> 0 then dec(sy); + if (keys and KEY_DOWN) <> 0 then inc(sy); + if (keys and KEY_LEFT) <> 0 then dec(sx); + if (keys and KEY_RIGHT) <> 0 then inc(sx); + + if (sx < 0) then sx := 0; + if (sx >= width - 256) then sx := width - 1 - 256; + if (sy < 0) then sy := 0; + if (sy >= height - 192) then sy := height - 1 - 192; + + swiWaitForVBlank(); + + bgSetScroll(id, sx, sy); + + bgUpdate(); + + consoleClear(); + iprintf('Scroll x: %d Scroll y: %d'#10, sx, sy); + iprintf('Press ''B'' to exit'); + end; +end; + + +procedure scrollText(); +var + keys, sx, sy, width, height: integer; + bg: cint; +begin + keys := 0; + sx := 0; + sy := 0; + width := 256; + height := 512; + + //set up a simple text background + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@Layer256x512Map, bgGetMapPtr(bg), Layer256x512MapLen); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + while (keys and KEY_B) = 0 do + begin + scanKeys(); + + keys := keysHeld(); + + if (keys and KEY_UP) <> 0 then dec(sy); + if (keys and KEY_DOWN) <> 0 then inc(sy); + if (keys and KEY_LEFT) <> 0 then dec(sx); + if (keys and KEY_RIGHT) <> 0 then inc(sx); + + //clamp the scroll value to the map width and height + if (sx < 0) then sx := 0; + if (sx >= width - 256) then sx := width - 1 - 256; + if (sy < 0) then sy := 0; + if (sy >= height - 192) then sy := height - 1 - 192; + + swiWaitForVBlank(); + + //normally would call bgSetScroll(id, sx, sy) here + //but to demonstrate the hardware difference between + //scrolling rotation and text backgrounds we will use + //direct register access + + REG_BG0HOFS^ := sx; + REG_BG0VOFS^ := sy; + + consoleClear(); + iprintf('Scroll x: %d Scroll y: %d'#10, sx, sy); + iprintf('Press ''B'' to exit'); + end; +end; + +procedure scrollRotation(); +var + keys, sx, sy, width, height: integer; + bg: cint; +begin + keys := 0; + sx := 0; + sy := 0; + width := 512; + height := 512; + + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_512x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + dmaCopy(@Layer512x512Map, bgGetMapPtr(bg), Layer512x512MapLen); + + while (keys and KEY_B)=0 do + begin + scanKeys(); + + keys := keysHeld(); + + if (keys and KEY_UP) <> 0 then dec(sy); + if (keys and KEY_DOWN) <> 0 then inc(sy); + if (keys and KEY_LEFT) <> 0 then dec(sx); + if (keys and KEY_RIGHT) <> 0 then inc(sx); + + //clamp the scroll value to the map width and height + if (sx < 0) then sx := 0; + if (sx >= width - 256) then sx := width - 1 - 256; + if (sy < 0) then sy := 0; + if (sy >= height - 192) then sy := height - 1 - 192; + + swiWaitForVBlank(); + + //normally would call bgSetScroll(id, sx, sy) here + //but to demonstrate the hardware difference between + //scrolling rotation and text backgrounds we will use + //direct register access + + REG_BG3X^ := sx shl 8; + REG_BG3Y^ := sy shl 8; + + consoleClear(); + iprintf('Scroll x: %d Scroll y: %d'#10, sx, sy); + iprintf('Press ''B'' to exit'); + end; +end; + + + +procedure scrollVertical(); +var + scroll_y: integer = 0; + map: pcuint16; + bg: cint; + keys: integer = 0; + offset: integer = 0; +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + scroll_y := 0; + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_256x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + map := pcuint16(bgGetMapPtr(bg)); + + dmaCopy(@Layer256x512Map, map, 32*32*2); + + keys := 0; + offset := 0; + + while (keys and KEY_B)= 0 do + begin + scanKeys(); + + keys := keysHeld(); + + swiWaitForVBlank(); + + + if (keys and KEY_UP) <> 0 then + begin + offset := scroll_y div 8 - 1; + + dmaCopy(@Layer256x512Map[(offset and 63) * 32], @map[(offset and 31) * 32], 32 * 2); + + dec(scroll_y); + end; + + if (keys and KEY_DOWN) <> 0 then + begin + offset := scroll_y div 8 + 24; + + dmaCopy(@Layer256x512Map[(offset and 63) * 32], @map[(offset and 31) * 32], 32 * 2); + + inc(scroll_y); + end; + + bgSetScroll(bg, 0, scroll_y); + bgUpdate(); + end; + +end; + + +procedure scrollHorizontalText(); +var + scroll_x: integer = 0; + bg: cint; + map: pcuint16; + iy: integer; + keys: integer = 0; + layerOffset: integer = 0; + mapOffset: integer = 0; +begin + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(0, BgType_Text8bpp, BgSize_T_512x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + map := pcuint16(bgGetMapPtr(bg)); + + + for iy := 0 to 23 do + dmaCopy(@Layer512x256Map[iy * 64], @map[iy * 32], 32*2); + + while (keys and KEY_B) = 0 do + begin + scanKeys(); + + keys := keysHeld(); + + swiWaitForVBlank(); + + if (keys and KEY_LEFT) <> 0 then + begin + mapOffset := scroll_x div 8 - 1; + layerOffset := (mapOffset and 63); + + if(layerOffset >= 32) then layerOffset := layerOffset + (32 * 32 - 32); + + for iy := 0 to 23 do + map[layerOffset + (iy * 32)] := Layer512x256Map[(mapOffset and 63) + (iy * 64)] ; + + dec(scroll_x); + end; + + if (keys and KEY_RIGHT) <> 0 then + begin + mapOffset := scroll_x div 8 + 32; + layerOffset := (mapOffset and 63); + + if(layerOffset >= 32) then layerOffset := layerOffset + (32 * 32 - 32); + + for iy := 0 to 23 do + map[layerOffset + (iy * 32)] := Layer512x256Map[(mapOffset and 63) + (iy * 64)] ; + + inc(scroll_x); + end; + + + bgSetScroll(bg, scroll_x, 0); + bgUpdate(); + end; + +end; + +procedure scrollHorizontalExRotation(); +var + scroll_x: integer = 0; + bg: cint; + map: pcuint16; + iy: integer; + keys: integer = 0; + offset: integer = 0; +begin + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_512x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + map := pcuint16(bgGetMapPtr(bg)); + + bgSetControlBits(bg, BG_WRAP_ON); + + for iy := 0 to 23 do + dmaCopy(@Layer512x256Map[iy * 64], @map[iy * 64], 32*2); + + while (keys and KEY_B) = 0 do + begin + scanKeys(); + + keys := keysHeld(); + + swiWaitForVBlank(); + + if (keys and KEY_LEFT) <> 0 then + begin + offset := scroll_x div 8 - 1; + + for iy := 0 to 23 do + map[(offset and 63) + (iy * 64)] := Layer512x256Map[(offset and 63) + (iy * 64)] ; + + dec(scroll_x); + end; + + if (keys and KEY_RIGHT) <> 0 then + begin + offset := scroll_x div 8 + 32; + + for iy := 0 to 23 do + map[(offset and 63) + (iy * 64)] := Layer512x256Map[(offset and 63) + (iy * 64)] ; + + inc(scroll_x); + end; + + bgSetScroll(bg, scroll_x, 0); + bgUpdate(); + end; + +end; + + +//scrolls a 1024 by 1024 map on a 512x512 layer +procedure scroll4wayText(); +var + scroll_x: integer = 0; + scroll_y: integer = 0; + bg: cint; + bgTileMap, bgLeftHalf, bgRightHalf: pcuint16; + ix, iy: integer; + keys: integer = 0; + offset_x: integer = 0; + offset_y: integer = 0; + movingHorizontal: boolean = false; + movingVertical: boolean = false; + bgTemp: pcuint16; +const + tileWidth : integer = 8; //width of a tile in pixels + mapWidth : integer = 1024 div 8; //width of the big map in tiles + mapHeight : integer = 1024 div 8; //heigh of the big map in tiles + bgWidth : integer = 256 div 8; //width of the hardware map in tiles + bgHeight : integer = 256 div 8; //height of the hardware map in tiles + screenWidth : integer = 256 div 8; //screen width in tiles + screenHeight: integer = 192 div 8; //screen height in tiles +begin + videoSetMode(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_Text8bpp, BgSize_T_512x256, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + bgTileMap := pcuint16(bgGetMapPtr(bg)); + bgLeftHalf := bgTileMap; + bgRightHalf := bgTileMap + 32 * 32; + + for iy := 0 to screenHeight - 1 do + dmaCopy(@Layer1024x1024Map[iy * mapWidth], @bgTileMap[iy * bgWidth], screenWidth * 2); + + while (keys and KEY_B) = 0 do + begin + movingHorizontal := false; + movingVertical := false; + + scanKeys(); + + keys := keysHeld(); + + swiWaitForVBlank(); + + if (keys and KEY_LEFT) <> 0 then + begin + offset_x := scroll_x div 8 - 1; + dec(scroll_x); + + if(scroll_x < 0) then + scroll_x := 0 + else + movingHorizontal := true; + end else + if (keys and KEY_RIGHT) <> 0 then + begin + offset_x := scroll_x div 8 + screenWidth; + inc(scroll_x); + + if (scroll_x >= (mapWidth - screenWidth) * tileWidth) then + scroll_x := (mapWidth - screenWidth) * tileWidth - 1 + else + movingHorizontal := true; + end; + + if (keys and KEY_UP) <> 0 then + begin + offset_y := scroll_y div 8 - 1; + dec(scroll_y); + + if(scroll_y < 0) then + scroll_y := 0 + else + movingVertical := true; + + end else + if (keys and KEY_DOWN) <> 0 then + begin + offset_y := scroll_y div 8 + screenHeight; + inc(scroll_y); + + if(scroll_y >= (mapHeight - screenHeight) * tileWidth) then + scroll_y := (mapHeight - screenHeight) * tileWidth - 1 + else + movingVertical := true; + end; + + if (movingHorizontal) then + begin + if (offset_x and 63) >= bgWidth then + bgTemp := bgRightHalf + else + bgTemp := bgLeftHalf; + + for iy := scroll_y div 8 - 1 to scroll_y div 8 + screenHeight do + bgTemp[(offset_x and (bgWidth - 1)) + (iy and (bgHeight - 1)) * 32] := Layer1024x1024Map[offset_x + iy * mapWidth]; + + end; + + if (movingVertical) then + begin + for ix := scroll_x div 8 - 1 to scroll_x div 8 + screenWidth do + begin + if ((ix and 63) >= bgWidth) then + bgTemp := bgRightHalf + else + bgTemp := bgLeftHalf; + + bgTemp[(ix and (bgWidth - 1)) + (offset_y and (bgHeight - 1))* 32] := Layer1024x1024Map[ix + offset_y * mapWidth]; + end; + end; + + bgSetScroll(bg, scroll_x, scroll_y); + bgUpdate(); + end; +end; + +procedure scroll4wayExRotation(); +var + scroll_x: integer = 0; + scroll_y: integer = 0; + bgTileMap: pcuint16; + iy, ix: integer; + keys: integer = 0; + offset_x: integer = 0; + offset_y: integer = 0; + movingHorizontal: boolean = false; + movingVertical: boolean = false; + bg: cint; +const + tileWidth : integer = 8; + mapWidth : integer = 1024 div 8; + mapHeight : integer = 1024 div 8; + bgWidth : integer = 512 div 8; + bgHeight : integer = 512 div 8; + screenWidth : integer = 256 div 8; + screenHeight: integer = 192 div 8; +begin + videoSetMode(MODE_5_2D); + vramSetBankA(VRAM_A_MAIN_BG); + + bg := bgInit(3, BgType_ExRotation, BgSize_ER_512x512, 0,1); + + dmaCopy(@TextBackgroundsTiles, bgGetGfxPtr(bg), sizeof(TextBackgroundsTiles)); + dmaCopy(@TextBackgroundsPal, BG_PALETTE, sizeof(TextBackgroundsPal)); + + bgTileMap := pcuint16(bgGetMapPtr(bg)); + + bgSetControlBits(bg, BG_WRAP_ON); + + for iy := 0 to screenHeight - 1 do + dmaCopy(@Layer1024x1024Map[iy * mapWidth], @bgTileMap[iy * bgWidth], screenWidth * 2); + + + while (keys and KEY_B) = 0 do + begin + movingHorizontal := false; + movingVertical := false; + + scanKeys(); + + keys := keysHeld(); + + swiWaitForVBlank(); + + if (keys and KEY_LEFT) <> 0 then + begin + offset_x := scroll_x div 8 - 1; + dec(scroll_x); + + if(scroll_x < 0) then + scroll_x := 0 + else + movingHorizontal := true; + end else + if (keys and KEY_RIGHT) <> 0 then + begin + offset_x := scroll_x div 8 + screenWidth; + inc(scroll_x); + + if (scroll_x >= (mapWidth - screenWidth) * tileWidth) then + scroll_x := (mapWidth - screenWidth) * tileWidth - 1 + else + movingHorizontal := true; + end; + + if (keys and KEY_UP) <> 0 then + begin + offset_y := scroll_y div 8 - 1; + dec(scroll_y); + + if(scroll_y < 0) then + scroll_y := 0 + else + movingVertical := true; + + end else + if(keys and KEY_DOWN) <> 0 then + begin + offset_y := scroll_y div 8 + screenHeight; + inc(scroll_y); + + if(scroll_y >= (mapHeight - screenHeight) * tileWidth) then + scroll_y := (mapHeight - screenHeight) * tileWidth - 1 + else + movingVertical := true; + end; + + if (movingHorizontal) then + begin + for iy := scroll_y div 8 - 1 to scroll_y div 8 + screenHeight do + bgTileMap[(offset_x and (bgWidth - 1)) + (iy and (bgHeight - 1)) * bgWidth] := Layer1024x1024Map[offset_x + iy * mapWidth]; + end; + if (movingVertical) then + begin + for ix := scroll_x div 8 - 1 to scroll_x div 8 + screenWidth do + bgTileMap[(ix and (bgWidth - 1)) + (offset_y and (bgHeight - 1))* bgWidth] := Layer1024x1024Map[ix + offset_y * mapWidth]; + end; + + bgSetScroll(bg, scroll_x, scroll_y); + bgUpdate(); + end; +end; + + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/TextBackgrounds.pp b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/TextBackgrounds.pp new file mode 100644 index 0000000000..c2b6fae568 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/TextBackgrounds.pp @@ -0,0 +1,129 @@ +unit TextBackgrounds; + +interface + +uses + ctypes; + +//====================================================================== +// +// Layer128x128, 128x128@8, +// + regular map (flat), not compressed, 16x16 +// Total size: 512 = 512 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer128x128MapLen = 512; +var + Layer128x128Map: array [0..255] of cushort; cvar; external; + + +//====================================================================== +// +// Layer256x256, 256x256@8, +// + regular map (flat), not compressed, 32x32 +// Total size: 2048 = 2048 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer256x256MapLen = 2048; +var + Layer256x256Map: array [0..1023] of cushort; cvar; external; + + +//====================================================================== +// +// Layer_512x512, 512x512@8, +// + regular map (flat), not compressed, 64x64 +// Total size: 8192 = 8192 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer512x512MapLen = 8192; +var + Layer512x512Map: array [0..4095] of cushort; cvar; external; + + +//====================================================================== +// +// Layer1024x1024, 1024x1024@8, +// + regular map (flat), not compressed, 128x128 +// Total size: 32768 = 32768 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer1024x1024MapLen = 32768; +var + Layer1024x1024Map: array [0..16383] of cushort; cvar; external; + +//====================================================================== +// +// Layer256x512, 256x512@8, +// + regular map (flat), not compressed, 32x64 +// Total size: 4096 = 4096 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer256x512MapLen = 4096; +var + Layer256x512Map: array [0..2047] of cushort; cvar; external; + + +//====================================================================== +// +// Layer512x256, 512x256@8, +// + regular map (flat), not compressed, 64x32 +// Total size: 4096 = 4096 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + Layer512x256MapLen = 4096; +var + Layer512x256Map: array [0..2047] of cushort; cvar; external; + +//====================================================================== +// +// TextBackgrounds, 8x6512@8, +// + palette 256 entries, not compressed +// + 814 tiles not compressed +// Total size: 512 + 52096 = 52608 +// +// Time-stamp: 2007-12-05, 16:39:14 +// Exported by Cearn's GBA Image Transmogrifier +// ( http://www.coranac.com ) +// +//====================================================================== +const + TextBackgroundsPalLen = 512; + TextBackgroundsTilesLen = 52096; +var + TextBackgroundsPal: array [0..255] of cushort; cvar; external; + TextBackgroundsTiles: array [0..13023] of cuint; cvar; external; + +implementation + +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/Multilayer.s b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/Multilayer.s new file mode 100644 index 0000000000..e4a4760dff --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/Multilayer.s @@ -0,0 +1,1258 @@ + +@{{BLOCK(Layer_1) + +@======================================================================= +@ +@ Layer_1, 256x256@8, +@ + regular map (flat), not compressed, 32x32 +@ Total size: 2048 = 2048 +@ +@ Time-stamp: 2007-12-07, 18:17:34 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer_1Map @ 2048 bytes +Layer_1Map: + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + .hword 0x0005,0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0008 + + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + .hword 0x000D,0x000E,0x000F,0x0010,0x000D,0x000E,0x000F,0x0010 + +@}}BLOCK(Layer_1) + +@{{BLOCK(Layer_2) + +@======================================================================= +@ +@ Layer_2, 256x256@8, +@ + regular map (flat), not compressed, 32x32 +@ Total size: 2048 = 2048 +@ +@ Time-stamp: 2007-12-07, 18:17:34 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer_2Map @ 2048 bytes +Layer_2Map: + .hword 0x0000,0x0000,0x0000,0x0011,0x0012,0x0013,0x0014,0x0015 + .hword 0x0016,0x0014,0x0015,0x0016,0x0013,0x0014,0x0015,0x0016 + .hword 0x0013,0x0014,0x0015,0x0016,0x0013,0x0014,0x0015,0x0016 + .hword 0x0013,0x0414,0x0413,0x0412,0x0411,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0017,0x0018,0x0019,0x001A,0x001B,0x001C + .hword 0x001D,0x001B,0x001C,0x001D,0x001A,0x001B,0x001C,0x001D + .hword 0x001A,0x001B,0x001C,0x001D,0x001A,0x001B,0x001C,0x001D + .hword 0x001A,0x041B,0x041A,0x0419,0x0418,0x0417,0x0000,0x0000 + + .hword 0x001E,0x001F,0x0020,0x0021,0x0022,0x0023,0x0024,0x0025 + .hword 0x0026,0x0024,0x0025,0x0026,0x0027,0x0028,0x0029,0x002A + .hword 0x0027,0x0028,0x0029,0x002A,0x0023,0x0024,0x0025,0x0026 + .hword 0x0023,0x0424,0x0423,0x0422,0x0421,0x0420,0x041F,0x041E + .hword 0x002B,0x002C,0x002D,0x002E,0x002F,0x0030,0x0031,0x0032 + .hword 0x0033,0x0031,0x0032,0x0033,0x0034,0x0035,0x0036,0x0037 + .hword 0x0034,0x0035,0x0036,0x0037,0x0030,0x0031,0x0032,0x0033 + .hword 0x0030,0x0431,0x0430,0x042F,0x042E,0x042D,0x042C,0x042B + + .hword 0x0038,0x0039,0x003A,0x003B,0x003C,0x003D,0x003E,0x003F + .hword 0x0040,0x003E,0x003F,0x0040,0x0041,0x0042,0x0043,0x0044 + .hword 0x0041,0x0042,0x0043,0x0044,0x003D,0x003E,0x003F,0x0040 + .hword 0x003D,0x043E,0x043D,0x043C,0x043B,0x043A,0x0439,0x0438 + .hword 0x0045,0x0046,0x0047,0x0048,0x0049,0x004A,0x004B,0x004C + .hword 0x004D,0x004B,0x004C,0x004D,0x004E,0x004F,0x0050,0x0051 + .hword 0x0052,0x0053,0x0054,0x0055,0x004A,0x004B,0x004C,0x004D + .hword 0x004A,0x044B,0x044A,0x0449,0x0448,0x0447,0x0446,0x0445 + + .hword 0x0056,0x0057,0x0058,0x0059,0x005A,0x005B,0x005C,0x005D + .hword 0x005E,0x005C,0x005D,0x005E,0x005F,0x0060,0x0061,0x0062 + .hword 0x0063,0x0064,0x0065,0x0066,0x005B,0x005C,0x005D,0x005E + .hword 0x005B,0x045C,0x045B,0x045A,0x0459,0x0458,0x0457,0x0456 + .hword 0x0067,0x0068,0x0069,0x006A,0x006B,0x006C,0x006D,0x006E + .hword 0x006F,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0000 + .hword 0x0000,0x0073,0x0074,0x0075,0x006C,0x006D,0x006E,0x006F + .hword 0x006C,0x046D,0x046C,0x046B,0x046A,0x0469,0x0468,0x0467 + + .hword 0x0038,0x0039,0x0076,0x0077,0x0078,0x0079,0x007A,0x007B + .hword 0x007C,0x007A,0x007B,0x007C,0x007D,0x007E,0x007F,0x0000 + .hword 0x0000,0x0080,0x0081,0x0082,0x0079,0x007A,0x007B,0x007C + .hword 0x0079,0x047A,0x0479,0x0478,0x0477,0x0476,0x0439,0x0438 + .hword 0x0045,0x0046,0x0083,0x0084,0x0085,0x0086,0x0087,0x0088 + .hword 0x0089,0x0087,0x0088,0x0089,0x008A,0x008B,0x008C,0x0000 + .hword 0x0000,0x008D,0x008E,0x008F,0x0086,0x0087,0x0088,0x0089 + .hword 0x0086,0x0487,0x0486,0x0485,0x0484,0x0483,0x0446,0x0445 + + .hword 0x0056,0x0057,0x0090,0x0091,0x0092,0x0093,0x0094,0x0095 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0092 + .hword 0x0093,0x0094,0x0095,0x0096,0x0491,0x0490,0x0457,0x0456 + .hword 0x0067,0x0068,0x0097,0x0098,0x0099,0x009A,0x009B,0x009C + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0099 + .hword 0x009A,0x009B,0x009C,0x0000,0x0498,0x0497,0x0468,0x0467 + + .hword 0x0056,0x009D,0x009E,0x0000,0x009F,0x00A0,0x00A1,0x00A2 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00A3 + .hword 0x00A4,0x00A5,0x00A6,0x00A7,0x04A7,0x04A6,0x04A5,0x009F + .hword 0x00A0,0x00A1,0x00A2,0x0000,0x0000,0x049E,0x049D,0x0456 + .hword 0x0067,0x00A8,0x0000,0x0000,0x00A9,0x00AA,0x00AB,0x00AC + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00AD,0x00AE + .hword 0x00AF,0x00B0,0x00B1,0x00B2,0x04B2,0x04B1,0x04B0,0x00A9 + .hword 0x00AA,0x00AB,0x00AC,0x0000,0x0000,0x0000,0x04A8,0x0467 + + .hword 0x0038,0x00B3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00B4,0x00B5 + .hword 0x00B6,0x00B7,0x00B8,0x00B9,0x04B9,0x04B8,0x04B7,0x04B6 + .hword 0x04B5,0x04B4,0x0000,0x0000,0x0000,0x0000,0x04B3,0x0438 + .hword 0x0045,0x00BA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00BB,0x00BC + .hword 0x00BD,0x00BE,0x00BF,0x00C0,0x04C0,0x04BF,0x04BE,0x04BD + .hword 0x04BC,0x04BB,0x00C1,0x0000,0x0000,0x0000,0x04BA,0x0445 + + .hword 0x0067,0x0068,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x00C2,0x00C3 + .hword 0x00C4,0x00C5,0x00C6,0x00C7,0x04C7,0x04C6,0x04C5,0x04C4 + .hword 0x04C3,0x04C2,0x00C8,0x0000,0x0000,0x0000,0x0468,0x0467 + .hword 0x0056,0x009D,0x0000,0x0000,0x0000,0x0000,0x00C9,0x00CA + .hword 0x00CB,0x00CC,0x00CD,0x00CE,0x0000,0x0000,0x00CF,0x00D0 + .hword 0x00D1,0x00D2,0x0000,0x0000,0x0000,0x0000,0x04D2,0x04D1 + .hword 0x04D0,0x04CF,0x00D3,0x0000,0x0000,0x0000,0x049D,0x0456 + + .hword 0x0067,0x00A8,0x0000,0x0000,0x0000,0x0000,0x00D4,0x00D5 + .hword 0x00D6,0x00D7,0x00D8,0x00D9,0x0000,0x0092,0x0093,0x0094 + .hword 0x0095,0x0000,0x0000,0x0000,0x0000,0x0000,0x00DA,0x00DB + .hword 0x00DC,0x00DD,0x00DE,0x0000,0x0000,0x0000,0x04A8,0x0467 + .hword 0x0038,0x00B3,0x0000,0x0000,0x0000,0x0000,0x00DF,0x00E0 + .hword 0x00E1,0x00E2,0x00E3,0x00E4,0x0000,0x0099,0x009A,0x009B + .hword 0x009C,0x0000,0x0000,0x00E5,0x00E6,0x00E7,0x00E8,0x0092 + .hword 0x0093,0x0094,0x0095,0x0000,0x0000,0x0000,0x04B3,0x0438 + + .hword 0x0045,0x00BA,0x0000,0x0000,0x0000,0x0000,0x00E9,0x00EA + .hword 0x00EB,0x00EC,0x00ED,0x00EE,0x0000,0x009F,0x00A0,0x00A1 + .hword 0x00A2,0x0000,0x0000,0x00EF,0x00F0,0x00F1,0x00F2,0x0099 + .hword 0x009A,0x009B,0x009C,0x0000,0x0000,0x0000,0x04BA,0x0445 + .hword 0x0067,0x0068,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x00A9,0x00AA,0x00AB + .hword 0x00AC,0x0000,0x0000,0x00F3,0x00F4,0x00F5,0x00F6,0x009F + .hword 0x00A0,0x00A1,0x00A2,0x0000,0x0000,0x0000,0x0468,0x0467 + + .hword 0x0056,0x009D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x08DA,0x08DB,0x08DC,0x08DD + .hword 0x08DE,0x0000,0x0000,0x00F7,0x00F8,0x00F9,0x00FA,0x00A9 + .hword 0x00AA,0x00AB,0x00AC,0x0000,0x0000,0x0000,0x049D,0x0456 + .hword 0x0067,0x00A8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0CD2,0x0CD1,0x0CD0,0x0CCF + .hword 0x08D3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x04A8,0x0467 + + .hword 0x0038,0x00B3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x00FB,0x0CC7,0x0CC6,0x0CC5,0x0CC4,0x0CC3,0x0CC2 + .hword 0x08C8,0x0000,0x0000,0x0000,0x0000,0x00C9,0x00CA,0x00CB + .hword 0x00CC,0x00CD,0x00CE,0x0000,0x0000,0x0000,0x04B3,0x0438 + .hword 0x0045,0x00BA,0x0000,0x0000,0x0000,0x0092,0x0093,0x0094 + .hword 0x0095,0x00FC,0x0CC0,0x0CBF,0x0CBE,0x0CBD,0x0CBC,0x0CBB + .hword 0x08C1,0x0000,0x0000,0x0000,0x0000,0x00D4,0x00D5,0x00D6 + .hword 0x00D7,0x00D8,0x00D9,0x0000,0x0000,0x0000,0x04BA,0x0445 + + .hword 0x0067,0x0068,0x0000,0x0000,0x0000,0x0099,0x009A,0x009B + .hword 0x009C,0x00FD,0x0CB9,0x0CB8,0x0CB7,0x0CB6,0x0CB5,0x0CB4 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x00DF,0x00E0,0x00E1 + .hword 0x00E2,0x00E3,0x00E4,0x0000,0x0000,0x0000,0x0468,0x0467 + .hword 0x0045,0x00BA,0x0000,0x0000,0x0000,0x009F,0x00A0,0x00A1 + .hword 0x00A2,0x00FE,0x0CB2,0x0CB1,0x0CB0,0x0CAF,0x0CAE,0x0CAD + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x00E9,0x00EA,0x00EB + .hword 0x00EC,0x00ED,0x00EE,0x0000,0x0000,0x0000,0x049D,0x0456 + + .hword 0x00FF,0x0100,0x0101,0x0000,0x0000,0x00A9,0x00AA,0x00AB + .hword 0x00AC,0x0102,0x0CA7,0x0CA6,0x0CA5,0x0CA4,0x0CA3,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0501,0x0500,0x04FF + .hword 0x0000,0x0103,0x0104,0x0105,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0505,0x0504,0x0503,0x0000 + + .hword 0x0000,0x0000,0x0106,0x0107,0x0108,0x0109,0x010A,0x0109 + .hword 0x010A,0x010B,0x0109,0x010A,0x010B,0x0109,0x010A,0x010B + .hword 0x0109,0x010A,0x010B,0x0109,0x010A,0x010B,0x0109,0x010A + .hword 0x010B,0x0109,0x010A,0x0508,0x0507,0x0506,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x010C,0x010D,0x010E,0x010F,0x010E + .hword 0x010F,0x0110,0x010E,0x010F,0x0110,0x010E,0x010F,0x0110 + .hword 0x010E,0x010F,0x0110,0x010E,0x010F,0x0110,0x010E,0x010F + .hword 0x0110,0x010E,0x010F,0x050D,0x050C,0x0000,0x0000,0x0000 + +@}}BLOCK(Layer_2) + +@{{BLOCK(Layer_3) + +@======================================================================= +@ +@ Layer_3, 256x256@8, +@ + regular map (flat), not compressed, 32x32 +@ Total size: 2048 = 2048 +@ +@ Time-stamp: 2007-12-07, 18:17:34 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer_3Map @ 2048 bytes +Layer_3Map: + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0111,0x0112,0x0113 + .hword 0x0114,0x0115,0x0116,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0113,0x0114,0x0115,0x0116 + .hword 0x0111,0x0112,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0117,0x0118,0x0119 + .hword 0x011A,0x011B,0x011C,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0119,0x011A,0x011B,0x011C + .hword 0x0117,0x0118,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x011D,0x011E,0x011F + .hword 0x0120,0x0121,0x0122,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x011F,0x0120,0x0121,0x0122 + .hword 0x011D,0x011E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0123,0x0124,0x0000 + .hword 0x0125,0x0126,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0125,0x0126,0x0000 + .hword 0x0123,0x0124,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0127,0x0128,0x0000 + .hword 0x0129,0x012A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0129,0x012A,0x0000 + .hword 0x0127,0x0128,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x012B,0x012C,0x0000 + .hword 0x012D,0x012E,0x012F,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x012D,0x012E,0x012F + .hword 0x012B,0x012C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0130,0x0131,0x0000 + .hword 0x0132,0x0133,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0132,0x0133,0x0000 + .hword 0x0130,0x0131,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0134,0x0135,0x0000 + .hword 0x0136,0x0137,0x0138,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0136,0x0137,0x0138 + .hword 0x0134,0x0135,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 + +@}}BLOCK(Layer_3) + +@{{BLOCK(Multilayer) + +@======================================================================= +@ +@ Multilayer, 8x2504@8, +@ + palette 256 entries, not compressed +@ + 313 tiles not compressed +@ Total size: 512 + 20032 = 20544 +@ +@ Time-stamp: 2007-12-07, 18:17:35 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global MultilayerPal @ 512 bytes +MultilayerPal: + .hword 0x0000,0x0000,0x0000,0x0000,0x0001,0x0001,0x0002,0x0002 + .hword 0x0022,0x0023,0x0442,0x0C42,0x1063,0x1083,0x0024,0x0005 + .hword 0x0045,0x0C64,0x0006,0x0007,0x0446,0x0467,0x0847,0x1066 + .hword 0x0887,0x1484,0x14A5,0x1CC5,0x14A6,0x1CC6,0x18C7,0x20E5 + .hword 0x20E6,0x2507,0x2927,0x0008,0x0428,0x0068,0x0869,0x0C69 + .hword 0x000A,0x042A,0x044A,0x086A,0x0C6B,0x0488,0x04AA,0x0C8A + .hword 0x088B,0x0CAB,0x04CA,0x1CE8,0x14AA,0x000D,0x0C6D,0x082E + .hword 0x088C,0x08AC,0x04CD,0x08AE,0x10AC,0x14CC,0x18CC,0x108E + + .hword 0x14AF,0x14CF,0x18EE,0x20E9,0x1D0B,0x050E,0x190D,0x152E + .hword 0x190E,0x190F,0x2108,0x2928,0x2D49,0x252A,0x296A,0x316A + .hword 0x2D8B,0x358B,0x39AB,0x252D,0x316D,0x258E,0x2DAE,0x318C + .hword 0x35AD,0x35EF,0x39EE,0x39EF,0x41EE,0x420F,0x0832,0x0C33 + .hword 0x0C92,0x0CB2,0x08F2,0x1091,0x14B1,0x14D1,0x18D2,0x0C55 + .hword 0x0C75,0x0C56,0x04F5,0x14B4,0x10B5,0x18D4,0x10B6,0x14B6 + .hword 0x14D6,0x10F7,0x20D5,0x0932,0x1932,0x1552,0x0955,0x1536 + .hword 0x09B6,0x11B4,0x2130,0x2550,0x2171,0x2D51,0x2172,0x21B2 + + .hword 0x31D0,0x3192,0x35D2,0x31F2,0x2574,0x25B5,0x29D4,0x35F4 + .hword 0x0C58,0x1058,0x1459,0x105A,0x10B9,0x14B9,0x10F9,0x14DA + .hword 0x145D,0x145E,0x187F,0x08BC,0x093A,0x1139,0x1D19,0x09BA + .hword 0x0DBA,0x09FC,0x255E,0x3A10,0x3E10,0x3E31,0x2636,0x3214 + .hword 0x3635,0x3E54,0x3216,0x3E57,0x0A3D,0x167D,0x0A9E,0x2A39 + .hword 0x325A,0x2A9E,0x4252,0x4653,0x4A73,0x4E93,0x4275,0x4A74 + .hword 0x4E94,0x4A96,0x52B5,0x52B5,0x52B6,0x56D6,0x5AF8,0x52FA + .hword 0x52FD,0x5F19,0x5F3B,0x6339,0x633A,0x675B,0x6B7B,0x6B9C + + .hword 0x6FBD,0x4CD9,0x64D9,0x7CD9,0x0199,0x1999,0x3199,0x4D99 + .hword 0x6599,0x7D99,0x0279,0x1A79,0x3279,0x4E79,0x6679,0x7E79 + .hword 0x0339,0x1B39,0x3339,0x4F39,0x6739,0x7F39,0x03F9,0x1BF9 + .hword 0x33F9,0x4FF9,0x67F9,0x7FF9,0x001F,0x181F,0x301F,0x4C1F + .hword 0x641F,0x7C1F,0x00DF,0x18DF,0x30DF,0x4CDF,0x64DF,0x7CDF + .hword 0x019F,0x199F,0x319F,0x4D9F,0x659F,0x7D9F,0x027F,0x1A7F + .hword 0x327F,0x4E7F,0x667F,0x7E7F,0x033F,0x1B3F,0x333F,0x4F3F + .hword 0x673F,0x7F3F,0x03FF,0x1BFF,0x33FF,0x4FFF,0x67FF,0x7FFF + + .section .rodata + .align 2 + .global MultilayerTiles @ 20032 bytes +MultilayerTiles: + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x201A1A1B,0x1D4B1A1B,0x4A52514F,0x1F4F0C19,0x5752524B,0x1B201919,0x21514C20,0x0B0D1D0B + .word 0x204B4B4C,0x190D0D0B,0x0A0B191B,0x0D1B4C0B,0x1B200C0A,0x0B192121,0x4C51221D,0x0D0C224B + .word 0x204F4B19,0x210B1A1F,0x0A0B1A1B,0x220C0D1A,0x1B22200D,0x1B0B1920,0x4C4B1B1A,0x0B054B58 + .word 0x201F1F1F,0x4A525D52,0x1B1F2222,0x5A4B2120,0x1F201F1B,0x22202020,0x4C1B0D22,0x221F2020 + .word 0x1D504F4C,0x0D1A574F,0x0D4A4C4C,0x1B1B1F1D,0x20191A1A,0x190B1B21,0x22201A0C,0x1B0B191F + .word 0x0D0D050C,0x1A0B0D19,0x1B0C4F5D,0x200C1D0B,0x1B21524C,0x0D1D1D0B,0x1D4F4F4B,0x1B1D0B0C + + .word 0x221A1B0B,0x51210C1A,0x2222220D,0x511B191F,0x1B514F4C,0x191A0C0D,0x0C4C4F1F,0x4A0C191D + .word 0x0D51210C,0x201A4B1B,0x1D0B1B0C,0x19524C4C,0x4F0C0D1A,0x1D4F4F5C,0x4C190C0D,0x4B515252 + .word 0x4C1B1B4C,0x0B0C1D4B,0x221B1A4C,0x1C210C0D,0x20190B20,0x514C190A,0x211B0C0D,0x0B0B1B0B + .word 0x0C0D4B57,0x1B22211D,0x1D1B5A5D,0x4C5C5D4C,0x0C0D1D4C,0x515C5121,0x0B01505A,0x5122201B + .word 0x211F4B4B,0x1F1F2121,0x201F1B0C,0x2122201B,0x210C0B19,0x22212120,0x0B0D1D0B,0x2120201A + .word 0x0A1A2120,0x2021201A,0x0C1B514C,0x4F221F1F,0x0C1B0D21,0x4C212021,0x0C1B0B1C,0x221B201F + .word 0x1A1B4C22,0x0B1A4C21,0x4C222221,0x225D5251,0x1F212122,0x0B1F211F,0x1B1B1F21,0x0D0C4C1B + .word 0x0B19201F,0x0D0A0D19,0x19222121,0x21221A0C,0x1A212122,0x5A52200C,0x1A1B1F4E,0x521B0B0B + + .word 0x1B0B1A4B,0x20514C4C,0x1B0C0B22,0x201F2220,0x4C220D0A,0x0A0D211F,0x204C4C1A,0x1F0A0B0B + .word 0x1D222022,0x1F0A1D20,0x0D19204B,0x210B1D21,0x0C1A2158,0x4C191A4A,0x221A1A51,0x20201920 + .word 0x0B1B5C4F,0x201A190C,0x0B525121,0x0C4F511B,0x0D521B05,0x4F4F4B0B,0x1D0D0C1D,0x4B1F1B0B + .word 0x520B1D1D,0x0D0B191A,0x1B0B1A4C,0x190C0B0C,0x1A0B4C5C,0x1B1B0D19,0x0C1D4C22,0x5C512121 + .word 0x0B194C5C,0x0C0C1A19,0x191D5222,0x1D51200B,0x210B1D0D,0x5C521951,0x210C0B4C,0x4A0B50AC + .word 0x0B0B0B0C,0x515C5D20,0x0B0D0D0A,0x21190B05,0x1B514C0C,0x1A190B0C,0x5C5A4C4E,0x1D0A0C4F + .word 0x20192020,0x190A0D4B,0x0C0C190B,0x0A0B0A0D,0x1B0C051B,0x4C222119,0x190C1B20,0x0D190C0B + .word 0x4C4C524F,0x5A4C4B4F,0x20204C4C,0x514B4C22,0x0B0A0B0C,0x0D190C0B,0x1D214C4E,0x0B0C0B0D + + .word 0x580C5051,0x1A192051,0x0C0B4C0B,0x51200B1B,0x0B201D20,0x5D4C200C,0x191D1A0D,0x4B0D0B0B + .word 0x52524B4C,0x0B0B0C4B,0x4F4F4F52,0x0B051A4F,0x0D1A4C1B,0x0B21201A,0x4B0B1B0C,0x4C5D5252 + .word 0x0D1D1B21,0x4C202219,0x4B1D220D,0x221F204C,0x191D4F4F,0x201F4B5A,0x200C224C,0x2119194F + .word 0x200C204B,0x0B0C0C0C,0x1B191B22,0x0D0C4F22,0x5222190D,0x0B1F4C51,0x514F1A0D,0x19214C4B + .word 0x4B1F204C,0x0B215A5A,0x1F20224F,0x585C5121,0x224F5152,0x21191B21,0x4C4F4F51,0x190B4A5A + .word 0x214C2222,0x0D205D22,0x2122211F,0x191A4B20,0x1B1B4C21,0x4C0D0D0B,0x2121210C,0x5D1D0D19 + .word 0x5C4F0C0A,0x21201D4C,0x4C1D214B,0x1B515D5C,0x214F1B21,0x0C224F4C,0x21210A19,0x0B0D4C22 + .word 0x21200D1F,0x0C0A0C20,0x0B0B0C1B,0x0B1A2120,0x511D0C4C,0x0D194F52,0x52AD4F51,0x4A0B0C4C + + .word 0x0C0A0C0C,0x51212121,0x010C0C19,0x4B0D201A,0x0B191B1A,0x4C1B1B0B,0x1A0B0C1B,0x1B0B0A1B + .word 0x22201B1B,0x1A1A0D21,0x4C4C4F4C,0x1F21224C,0x4C4C1F19,0x21222122,0x4B524F1F,0x4F4F1F1F + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x07000000,0x09030300,0x07030700 + .word 0x00000000,0x10070000,0x00000000,0x14100000,0x00000000,0x14140700,0x07000000,0x070E0707 + .word 0x10070700,0x07070709,0x2B141403,0x07071014,0x382B1407,0x07071014,0x2A2A0707,0x07070E14 + .word 0x070F0F0F,0x03030007,0x1328130F,0x0000070F,0x28282813,0x00070713,0x130F1313,0x0707070F + .word 0x07070707,0x0709090E,0x07070707,0x09090907,0x07070707,0x140E1410,0x07070707,0x14141414 + + .word 0x00000300,0x07070303,0x07000000,0x07070707,0x070A0000,0x07070909,0x07070700,0x07070E13 + .word 0x07070607,0x0F14352A,0x0707070E,0x0F0F130F,0x070F1314,0x07070707,0x0E352B14,0x09070707 + .word 0x00030307,0x00000000,0x09070707,0x00000000,0x09070707,0x07030707,0x070F0707,0x07070707 + .word 0x070F0707,0x07070707,0x09090707,0x07090909,0x2A2A0E07,0x090E1010,0x2B38140E,0x0E141414 + .word 0x00000000,0x10100700,0x07070703,0x14140707,0x10141407,0x140E0709,0x2B2B1407,0x07070714 + .word 0x382A0707,0x07071014,0x2A280707,0x07071014,0x280E0707,0x07070E14,0x14070707,0x07090E2A + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000007,0x070F0000,0x0007070F + + .word 0x09070707,0x07070707,0x07070707,0x07070707,0x070F0707,0x09090907,0x090F0707,0x0E0E1009 + .word 0x2A090707,0x14141410,0x2B2A0E07,0x2A2A1414,0x2A381407,0x132A2A14,0x3838380E,0x070E0F2B + .word 0x28280707,0x07090E14,0x140E0707,0x07070E2A,0x0F070707,0x0A07142A,0x07070707,0x0A070728 + .word 0x06070707,0x28090711,0x07070A0E,0x352A3513,0x0F07070E,0x35353B3B,0x11070707,0x3A351324 + .word 0x14070707,0x2B2A1414,0x14090707,0x142B382A,0x2B130707,0x070F3835,0x2A070712,0x07070F28 + .word 0x07070F13,0x3A320707,0x07071213,0x79751407,0x78090F12,0x98653B76,0x76977833,0x63373737 + .word 0x0E282A2B,0x140E0707,0x0707070F,0x0E090707,0x07070707,0x07070907,0x0F070907,0x07111113 + .word 0x2828280F,0x35132828,0x29282975,0x35282828,0xA7736579,0x6A7E383B,0x98A9A598,0xA5A7A5A5 + + .word 0x2A383814,0x142A1414,0x383B3B28,0x2A2A2A2B,0x14281417,0x130E0F0F,0x09070709,0x07070707 + .word 0x1214070F,0x07070713,0x282A7345,0x2A291228,0x352A2A97,0x28293737,0x35281214,0x37283535 + .word 0x0F070707,0x07070E2A,0x0707070E,0x07071428,0x06070A0E,0x0A070711,0x07070707,0x0A090713 + .word 0x0F070707,0x282A353B,0x1115753D,0x35353B24,0x3C9E8562,0x35351309,0x74794135,0x3A281026 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000 + .word 0x00000000,0x04030300,0x01000000,0x07070704,0x04030000,0x07070704,0x07070100,0x0F0F0707 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x07070704,0x09070707 + .word 0x07070707,0x07070707,0x09090707,0x06070909,0x100E0907,0x0E141414,0x14100E09,0x0F242A14 + + .word 0x13280000,0x07070713,0x2828130F,0x0709070F,0x130F280F,0x0909090E,0x07071313,0x140E0907 + .word 0x07070713,0x14141410,0x07070707,0x2B2A1414,0x07070707,0x142B1414,0x14070707,0x070F382A + .word 0x143B3B14,0x0707070F,0x09281428,0x2A070707,0x12070717,0x28291213,0x28140709,0x37293728 + .word 0x352A730F,0x37283537,0x352A2A45,0x37373735,0x37281297,0x675E5E37,0x37373714,0x68698837 + .word 0x3C157507,0xA5281009,0x749E853D,0x98A59826,0x28794162,0x07987C41,0x13283735,0x240A112B + .word 0x0E123737,0x37242909,0x24123B37,0x3737370A,0x12123B5E,0x37373729,0x130F3860,0x5E373729 + .word 0x97A59898,0x370F0F23,0x072E7898,0x37373707,0x07102B2B,0x675E370F,0x383B0707,0x8A695F5E + .word 0x69130712,0x8A8C8E89,0x12092A38,0x8C8C9799,0x0E293660,0x7694992D,0x14366060,0xA5763924 + + .word 0x37373737,0x2A073A24,0x37375E5E,0x23071237,0x605E5F89,0x37290F13,0x6060678A,0x685E1212 + .word 0x3B6B8C8C,0x62291224,0x416E8F6E,0x14072631,0x3B6D9895,0x0E071031,0x98989797,0x09070F0E + .word 0x37373723,0x37373737,0x37373737,0x375E5E37,0x5F373737,0x67698888,0x695F6737,0x686E8C88 + .word 0x69698894,0x6A718969,0x97959799,0x98959595,0xA4981410,0xA4A498A4,0x98090907,0x2938A5A4 + .word 0x28283737,0xA5A59841,0x13123737,0x98987C2B,0x0E123B5E,0x070A1109,0x24123B60,0x2424290A + .word 0x120F3873,0x37373729,0x130F24A4,0x37373729,0x240E1229,0x37373737,0x290E3724,0x5E5E3737 + .word 0xA5989896,0x0F0F2397,0x2E789874,0x37370004,0x102B2B09,0x5E370F03,0x3B000024,0x695F5E38 + .word 0x13081229,0x8C8E8969,0x092A3837,0x8C979912,0x29366037,0x94992D0E,0x36606060,0x76392414 + + .word 0x37373737,0x083A2437,0x375E5E37,0x07123737,0x5E5F8967,0x290F1360,0x60678A8A,0x5E121260 + .word 0x6B8C8C8A,0x2912243B,0x6E8F6E8C,0x00263141,0x6D989576,0x0510313B,0x989797A5,0x0F0F0E98 + .word 0x3737232A,0x37373737,0x37373723,0x5E5E3737,0x37373737,0x6988885F,0x5F673768,0x6E8C8869 + .word 0x69889462,0x71896969,0x95979914,0x95959597,0x9814100E,0xA498A4A4,0x09090907,0x38A5A498 + .word 0x28373737,0xA5984128,0x12373737,0x987C2B13,0x123B5E67,0x0300090E,0x123B6068,0x24290724 + .word 0x0F38736A,0x37372912,0x0F24A498,0x37372913,0x0E1229A4,0x37373724,0x0E372429,0x5E373729 + .word 0x07070400,0x07070707,0x07070401,0x07070707,0x09090704,0x07070F0F,0x13090704,0x07071213 + .word 0x130F0803,0x07070F13,0x07070703,0x0607070F,0x07070503,0x07070707,0x00070704,0x07090000 + + .word 0x1425250E,0x090E2414,0x2A2B2A10,0x0707122A,0x3838260E,0x0F070E2A,0x2B38150E,0x13120F13 + .word 0x142A140E,0x28130E09,0x090E0E0E,0x232A1507,0x12070707,0x283A3A13,0x23100907,0x12626235 + .word 0x14090707,0x07073835,0x2B130707,0x3A320F28,0x2A070707,0x79750707,0x07070707,0x98651407 + .word 0x07070F12,0x63373B76,0x78091213,0x370F3737,0x76970F13,0x37370F23,0x97A57812,0x675E3707 + .word 0x5F373723,0x6A6E8C88,0x69373737,0x98718988,0x695F6737,0xA4959569,0x97698837,0x29A49895 + .word 0xA4959794,0x0938A5A4,0x98981499,0x090732A4,0x3A090910,0x07071445,0x360E2907,0x0713292B + .word 0x240F2473,0x885E3737,0x290E12A4,0x88886737,0x160E3729,0x8C888937,0x67262524,0x8E8C8C88 + .word 0x94736207,0x998E958E,0x99A47325,0x78999799,0x45941409,0x2E782E73,0x102E0909,0x142E1415 + + .word 0x63606C68,0x1E0E263B,0x6B6E8C88,0x07143B3B,0x94958A88,0x11109899,0x9794948C,0x072995A4 + .word 0x98979794,0x140F3B98,0x2E3962A4,0x3B38102D,0x1414372A,0x37120E10,0x28282A25,0x37373737 + .word 0x14A5A579,0x3738370F,0x1307090B,0x5E375E37,0x13090709,0x676B6C37,0xA72A0909,0x6969676C + .word 0x782A1010,0x8C696EA5,0x2B251438,0x98A4A498,0x0E10262B,0x989E3909,0x10382626,0x14090707 + .word 0x3A0E2929,0x09073245,0x365F8969,0x0907142B,0x376E6767,0x07132929,0x77696969,0x07121212 + .word 0x98A49895,0x07623737,0x4573A498,0x10397862,0x10142679,0x37240E10,0x10100E16,0x5E5E2913 + .word 0x16262507,0x88886737,0x67736225,0x88888988,0x94A47309,0x8C8C8C8E,0x99941409,0x8E8E9599 + .word 0x452E0909,0x99999773,0x100E0E14,0x78782E15,0x0E09375E,0x2E2E1409,0x09675F5E,0x14140909 + + .word 0x606C6868,0x0E263B63,0x6E8C8888,0x143B3B6B,0x958A888C,0x10989994,0x94948C8C,0x2995A497 + .word 0x97979494,0x0F3B9898,0x3962A4A4,0x38102D2E,0x14372A2D,0x120E1014,0x282A2514,0x37373728 + .word 0xA5A57908,0x38370F14,0x0905000F,0x375E3713,0x05080808,0x6B6C3713,0x2A090908,0x69676CA7 + .word 0x2A101014,0x696EA578,0x2514383B,0xA4A4982B,0x10262B37,0x9E39090E,0x38262637,0x09050810 + .word 0x0E292937,0x0632453A,0x5F89695E,0x03142B36,0x6E676767,0x13292937,0x69696969,0x12121277 + .word 0xA498958C,0x62373798,0x73A49898,0x39786245,0x14267998,0x240E1010,0x100E1614,0x5E291310 + .word 0x26250309,0x88673716,0x73622509,0x88898867,0xA4730908,0x8C8C8E94,0x94140908,0x8E959999 + .word 0x2E090905,0x99977345,0x0E0E1410,0x782E1510,0x09375E37,0x2E14090E,0x675F5E5E,0x14090909 + + .word 0x07141410,0x07070707,0x070E1410,0x09070707,0x07070707,0x0E0E1010,0x14090700,0x2A141414 + .word 0x2B100700,0x14282A38,0x2B140700,0x070E282A,0x14140700,0x07070707,0x07070300,0x07070707 + .word 0x0A0A0707,0x3A353528,0x09070707,0x2835352A,0x0707140E,0x10133B35,0x1311282A,0x2609243B + .word 0x0706070F,0x743C110F,0x07070707,0x799E1507,0x070A0707,0x41857507,0x070E0E07,0x35623D07 + .word 0x072E9833,0x8A69370F,0x07107898,0x8A8C5F5E,0x383B2B98,0x8C8C8E89,0x6913072B,0x76949799 + .word 0x12090707,0xA576992D,0x0E292A12,0x1E0E3924,0x14363638,0x0714263B,0x63606060,0x11103B3B + .word 0x375F8929,0x07121229,0x776E6769,0x10623712,0x98696967,0x37397837,0x45A49869,0x5E240E62 + .word 0x1073A495,0x3B5E2910,0x10142698,0x38622D13,0x25100E79,0x102E2A24,0x450E0E16,0x0E113862 + + .word 0x0E0E0E09,0x14140909,0x09093714,0x14140909,0x5E675F5E,0x2A140709,0x60675E5E,0x372A0960 + .word 0x955F5E5E,0x5E370E07,0x07616060,0x3B5E0F09,0x09989860,0x3F3B2B0F,0x0798A598,0x3B3F3B0F + .word 0x28282537,0x38373737,0x5E37282A,0x6E605E5E,0x69675E37,0x95716867,0x89898988,0x988E6E8C + .word 0x8C8C8C8C,0x99958E8E,0x94959594,0x73779894,0x9798A473,0x14A4A5A4,0xA4A52E45,0x073BA499 + .word 0x13613B38,0x16100707,0x29956A71,0x0E141007,0x1362A5A5,0x10090907,0x0F0707A5,0x252A130F + .word 0x29230710,0x60603735,0x5E60370F,0x6E6C605E,0x5F983B14,0x958E6E68,0xA5602509,0xA4A49898 + .word 0x250E0E09,0x3B622D24,0x45301410,0x382E2A62,0x6C302638,0x1011386C,0x8C6E4038,0x0E25608D + .word 0x8C6E6E6E,0x09257698,0x9895958E,0x240725A5,0x79989595,0x29370938,0x9EA499A4,0x3737370F + + .word 0x5E675E5E,0x14140909,0x605F5E60,0x14140760,0x95616060,0x2A2A0907,0x07989898,0x37370E09 + .word 0x0998A53B,0x5E5E0F0F,0x0707072A,0x3B3B2B0F,0x0909382A,0x3F3F3B09,0x0E2A383B,0x3B3B2B09 + .word 0x2825372A,0x37373728,0x37282A26,0x605E5E5E,0x675E372B,0x71686769,0x89898860,0x8E6E8C89 + .word 0x8C8C8C6C,0x958E8E8C,0x95959471,0x77989494,0x98A47362,0xA4A5A497,0xA52E4545,0x3BA499A4 + .word 0x613B3838,0x10080513,0x956A716E,0x14100529,0x62A5A595,0x09090613,0x0800A598,0x2A130F0F + .word 0x23001099,0x60373529,0x60370F73,0x6C605E5E,0x983B1414,0x8E6E685F,0x60250906,0xA49898A5 + .word 0x0E0E0916,0x622D2425,0x3014100E,0x2E2A6245,0x30263810,0x05386C6C,0x6E403825,0x25608D8C + .word 0x6E6E6E60,0x2576988C,0x95958E6E,0x0325A598,0x98959595,0x37073879,0xA499A4A4,0x3737139E + + .word 0x675E5E3B,0x1409095E,0x5F5E6038,0x14066060,0x61606010,0x2A090595,0x9898980E,0x370E0908 + .word 0x98A53B09,0x5E0F0F09,0x05052A24,0x3B2B0F06,0x09382A29,0x3F3B0909,0x2A383B37,0x3B2B090E + .word 0x07070000,0x0E090707,0x07030000,0x140E0907,0x07070000,0x14100907,0x07070000,0x14100907 + .word 0x07090900,0x2B2A0907,0x0F070703,0x382A090F,0x07070703,0x140E0707,0x07070707,0x0E070707 + .word 0x07132A14,0x37282A07,0x070E2A2A,0x28292907,0x070F2A14,0x35371207,0x070F2B14,0x35372813 + .word 0x0914382A,0x35352812,0x07283B38,0x282A2A14,0x07143B38,0x122A7307,0x09172814,0x1497450F + .word 0x6B6E6C60,0x07299899,0x94958C68,0x140F95A4,0x97948A88,0x3B383B98,0x98979488,0x3712102D + .word 0x2E39978C,0x37370E10,0x14146294,0x38373737,0x282837A4,0x6E603737,0x28282A2A,0x95715E5E + + .word 0x6C301409,0x0925606C,0x8C302610,0x2425768D,0x8C6E4038,0x29072598,0x986E6E38,0x373709A5 + .word 0x7995956E,0x5E373738,0x9E98958E,0x685E370F,0x09A49995,0x71686712,0x379898A4,0x76716B37 + .word 0x0907073B,0x0E3B2B09,0x0E09382A,0x0E0E0909,0x092A382A,0x380E0711,0x1438613B,0x37380E07 + .word 0x62736B60,0x26371207,0x0778986E,0x2B263707,0x07759994,0x602B370F,0x0F339997,0x6B605E23 + .word 0x0F0E0F14,0x07131213,0x2B3B3B3B,0x11072938,0x16263030,0x0F123726,0x36363636,0x07123737 + .word 0x5E5F6060,0x07115F5E,0x67696971,0x07115E60,0x69696969,0x1207606C,0x6C686C6E,0x290F0F76 + .word 0x63301707,0xA5A4A498,0x24290F07,0x12291224,0x5E673707,0x3537375E,0x6C713711,0x355E6767 + .word 0x71A5600A,0x375F696E,0x967E140F,0x69676768,0xA2142C24,0x6A6E6B98,0x24292929,0x6A7376A7 + + .word 0x09989898,0x5E5E3712,0x37373712,0x68686737,0x370F0F0F,0x71716B6B,0x0F0F0F23,0x76717878 + .word 0x1212375E,0x99997138,0x0F136E67,0x0F2B120F,0x0F3B3B78,0x0F0F0707,0x0F0E2962,0x29290F0F + .word 0x09386160,0x0E0E0911,0x14736B6E,0x0E0E0707,0x62789894,0x38380E07,0x07759997,0x37371207 + .word 0x073399A5,0x2626370F,0x0F090F13,0x2B2B3723,0x230F0F37,0x60605E37,0x230F2929,0x6B6B643B + .word 0x0E0F1415,0x1312130F,0x3B3B3B2B,0x0029382B,0x26303026,0x37372616,0x2C2C362C,0x3737372C + .word 0x60603B36,0x075E5E5E,0x67676C37,0x005E5E67,0x6767675E,0x055E6167,0x60616060,0x0F297661 + .word 0x30050907,0xA4A49863,0x29290700,0x29122424,0x67371223,0x37375E5E,0x7137040F,0x5E69696E + .word 0xA53B0004,0x698A8C8E,0x7E140F0F,0x89898C9A,0x252C2429,0x6C6EA4A8,0x37373729,0x9798A92A + + .word 0x989898A6,0x5E371203,0x37371212,0x68693737,0x0F780F35,0x76976037,0x730F2335,0x76979978 + .word 0x4578A637,0x98A4A478,0xA4737397,0xA4A4A445,0xA4997673,0xA6A64573,0xA4A6A678,0xA67845A6 + .word 0x3861605E,0x0E090808,0x736C8C97,0x10000514,0xA4979978,0x380EA462,0x78979978,0x73457345 + .word 0x9899A4A4,0x98A43A2D,0xA6A6A6A6,0xA4A445A4,0xA6A6A6A6,0xA6A632A6,0x97A6A6A6,0xA6A61697 + .word 0x0E0F1415,0x1312130F,0x3B3B3B2B,0x0129382B,0x78767373,0x37972678,0x99737345,0x9745A473 + .word 0x99787399,0xA4A44573,0xA6A4A4A6,0xA4A44573,0xA6A6A6A6,0xA6A49773,0xA6A4A6A6,0xA6A6A438 + .word 0x30050907,0xA4A49863,0x29290700,0x29122424,0x69371223,0x37375E5E,0x95374597,0x5E69696E + .word 0x9878A497,0x698A8C8E,0x453AA4A4,0x89898C45,0x733A97A4,0x8F6E7878,0xA4A632A6,0x78787873 + + .word 0x989898A5,0x5E371203,0x37371212,0x5F5F3737,0x0F0F0F35,0x71606437,0x0F0F2335,0x7178730F + .word 0x12375F37,0x9861380F,0x138F898A,0x2B120F0F,0x3B629794,0x0F00010F,0x09376A94,0x290F0F0F + .word 0x3860605E,0x0E090808,0x45606E5F,0x0E000514,0x73786A71,0x380E003B,0x7598976A,0x37120504 + .word 0x00989898,0x26370F07,0x070F120F,0x38372324,0x0F0F290F,0x5E5E3712,0x0F292929,0x6B403812 + .word 0x07070707,0x09070F0F,0x07070707,0x07070F14,0x0E090703,0x07071335,0x13090703,0x07070F2A + .word 0x07070700,0x0E070707,0x070A0000,0x350F0707,0x07000003,0x2B130706,0x00000000,0x14140E07 + .word 0x07070E14,0xA56A3535,0x1107090E,0xA77E2813,0x11090707,0xA5382828,0x13070707,0xA53B2828 + .word 0x0F07070E,0x98A72928,0x07070728,0xA9732828,0x0907072A,0xA5652928,0x07070F2B,0x9879750F + + .word 0x5E372525,0x988E6867,0x69672837,0x99956E8C,0x89895E2A,0x73778E8E,0x8C8C8937,0x14A49894 + .word 0x94958C88,0x073BA5A4,0x9798958C,0x0713A499,0xA4A5A494,0x11071213,0x0F0E2E73,0x0F122938 + .word 0x37373798,0x9971786B,0x0F0F0F12,0x0F997178,0x120F0F0F,0x0F2B1238,0x0F123723,0x290F070F + .word 0x0F136E5E,0x29290F07,0x0F3B3B67,0x2929290F,0x290E2978,0x5E373729,0x29292962,0x5E5E5E29 + .word 0x23090FA5,0x986B6437,0x230F0F13,0x7698763B,0x230F2937,0x0776473C,0x12232929,0x12070726 + .word 0x090F2929,0x29122411,0x120F3829,0x37292917,0x0F0F3037,0x37373724,0x120F2638,0x37373713 + .word 0x76987676,0x290F0F12,0x072D7376,0x29292907,0x070E2626,0x5E37290F,0x26300707,0x5F5E3737 + .word 0x5E12070F,0x675F605F,0x0F071526,0x5F5F7378,0x10132738,0x45627814,0x10273B3B,0x98452612 + + .word 0x29292929,0x24072E13,0x29293737,0x12070F29,0x3637375E,0x29240F12,0x38385E5F,0x5E370F0F + .word 0x303F5F5F,0x38240F12,0x2F606C60,0x0E071616,0x2B40736C,0x07070916,0x73737373,0x070F0F09 + .word 0x29292912,0x29292929,0x29292929,0x29373729,0x37292929,0x5E5E5E5E,0x5E375E29,0x5E605F5F + .word 0x5E5E5F62,0x62605F5E,0x736C7378,0x736C6C6C,0x78731409,0x78787378,0x73070707,0x13269878 + .word 0x23232929,0x9898763C,0x120F2929,0x76764726,0x090F3837,0x07070711,0x120F3038,0x12122417 + .word 0x0F0F263A,0x29292924,0x120F1278,0x37373713,0x12070F13,0x37373737,0x13093707,0x37373737 + .word 0x79737364,0x0F0F1273,0x143A733D,0x29290003,0x09141406,0x29240701,0x15000012,0x37292916 + .word 0x0F050F13,0x363B3737,0x06101424,0x3645620F,0x0F162624,0x3B620E05,0x16262626,0x38160F08 + + .word 0x37373729,0xA4977878,0x37373729,0x78A4A437,0x5E375E37,0x734578A6,0x60375E5E,0x45A4A497 + .word 0x9760635E,0x78A49797,0x646C3B3B,0xA4A4A478,0x63453B32,0x05102773,0x78734573,0x97454578 + .word 0xA6A6A698,0x3A7397A4,0xA6A6A697,0x0097A6A6,0xA6A6A4A4,0x0097A6A6,0xA6A6A639,0x000097A4 + .word 0xA4733978,0x00000073,0x0E45A497,0x00000001,0x0000100E,0x00000000,0x00737878,0x00000000 + .word 0x73737878,0x9797413A,0x00453A00,0x73000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x739797A4,0xA6A6783A,0x39267373,0xA6A44500,0x00000000,0x73450000,0x00000000,0x3A000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0xA6A67845,0x789798A6,0xA6A6A43A,0x3A39A4A6,0xA6A6A678,0x737839A6,0xA673A476,0x97A44539 + .word 0x30784539,0xA4A6A497,0xA4000000,0xA6A6A6A6,0x78730000,0xA6A6A6A6,0x97000000,0x76A4A697 + .word 0x2937232A,0x24242429,0x29373723,0x29292429,0x29373778,0x37373729,0x37673778,0x3B3B3737 + .word 0x378897A4,0x3B373737,0x609778A4,0x60606045,0x73A473A6,0x73627676,0x09789797,0x26767673 + .word 0x12242424,0x98762F12,0x0F242424,0x7846160F,0x0F262929,0x03000608,0x0F262C29,0x1213070F + .word 0x0F162D38,0x3729120F,0x0F0F4545,0x3713120F,0x080F1273,0x37131312,0x08241213,0x37242413 + .word 0x07000003,0x14140907,0x07070003,0x140E0909,0x07070700,0x14140909,0x0F130F07,0x1410070E + .word 0x13281307,0x07070707,0x0F28280F,0x07070707,0x1328130F,0x07070707,0x13130F0F,0x07070707 + + .word 0x0707142B,0x6398793A,0x070F2B2A,0x37657532,0x0F383814,0x373B1407,0x28352A14,0x37760707 + .word 0x2A2B1414,0x76780707,0x07130907,0x97090707,0x07070707,0x780F120F,0x12070707,0x33121313 + .word 0x2B3B0F45,0x07123726,0x16263B14,0x07113737,0x3636303B,0x07115F5E,0x5E5F3630,0x12075E60 + .word 0x67696036,0x290F606C,0x69696960,0x290F0F76,0x6C686971,0x29290F12,0x76986C69,0x5E372907 + .word 0x37292912,0x62605F5E,0x5E292929,0x73605F5F,0x5E375E29,0x786C6C5E,0x735E5F29,0x1378736C + .word 0x786C7362,0x07269878,0x73731478,0x07072D78,0x26070709,0x07071030,0x2C092407,0x070F2416 + .word 0x120F123A,0x5E373737,0x13070F78,0x375E3737,0x16093713,0x63373729,0x37161407,0x37636337 + .word 0x62453B0A,0x73636063,0x73763207,0x3A737373,0x30621017,0x103A142E,0x09140909,0x07140910 + + .word 0x3C3B3B37,0x0709162B,0x63636337,0x0F102626,0x62615E37,0x07097373,0x73626260,0x07136076 + .word 0x7373733B,0x100F2673,0x14162B73,0x26160910,0x09091312,0x130F0707,0x0F0F120E,0x13131313 + .word 0x10989847,0x2926290F,0x0F070707,0x37293729,0x0F070707,0x37363629,0x7C240707,0x37373736 + .word 0x32140909,0x37373B73,0x16100916,0x45737345,0x07071616,0x45471607,0x07161616,0x09101107 + .word 0x26092424,0x07072D30,0x2C373737,0x07071016,0x29363737,0x070F2424,0x48373737,0x070F0F0F + .word 0x73737360,0x112B2929,0x302E7345,0x09163A2B,0x07091646,0x130F0707,0x07070716,0x3737120F + .word 0x1616140A,0x5E5E3729,0x37453B07,0x37373737,0x62763217,0x63636363,0x73621009,0x37636073 + .word 0x30140909,0x7373732E,0x09070909,0x3A3A1410,0x07071337,0x10140907,0x07373737,0x07090707 + + .word 0x262C3737,0x060E1426,0x36363737,0x0E161626,0x36372936,0x0845623B,0x38382937,0x123B6245 + .word 0x3A3A383B,0x0F263B3B,0x14264545,0x26061414,0x0E24120E,0x0F08080E,0x0F0E0E0E,0x2424240F + .word 0xA5454605,0xA4787878,0xA6A6000F,0xA6A6A6A6,0xA6A60505,0xA6A6A6A6,0xA62A0805,0xA6A6A4A4 + .word 0x990E0909,0xA6A497A4,0x14142626,0x45453A3A,0x73732637,0x733A4545,0x73162637,0x14266239 + .word 0x14979797,0x00000000,0x0097A4A4,0x00000000,0x00A4A6A6,0x00000000,0x00A4A6A6,0x00000000 + .word 0x00737378,0x00000000,0x00004545,0x00000000,0x00007876,0x00000000,0x0000733B,0x00000000 + .word 0x78000000,0x45453A45,0x00000000,0x45784500,0x00000000,0xA4A49778,0x00000000,0xA6A6A645 + .word 0x00000000,0xA6A6A497,0x00000000,0x97A43A00,0x00000000,0x73780000,0x00000000,0x73787800 + + .word 0x45783939,0x05152D26,0x73737873,0x000E1616,0x3AA6A697,0x0F121237,0x39A4A6A6,0x0F0F0F46 + .word 0x7878A6A6,0x30242473,0x3945A497,0x163B3830,0x143A453A,0x0F060808,0x73784545,0x24120F08 + .word 0x10100006,0x5E37240E,0x2D260E05,0x37373729,0x732D0505,0x3B3B3B3B,0x620E0605,0x60606262 + .word 0x15060605,0x73732E15,0x08080E08,0x45140E08,0x05242424,0x140E0506,0x37372424,0x14050505 + .word 0x072D766E,0x5F5E290F,0x070E7376,0x675F3737,0x26302676,0x5F5F605F,0x5E120726,0x45627378 + .word 0x0F070707,0x98457814,0x1E13150F,0x07092612,0x10272726,0x0F10162B,0x3C3B3B38,0x07092626 + .word 0x29373724,0x110F0F24,0x48363737,0x092B290F,0x73373737,0x13163A29,0x30737337,0x370F072B + .word 0x072E7360,0x26371207,0x07091645,0x2630140F,0x0E070746,0x09141212,0x14070716,0x0717262B + + .word 0x07070909,0x07090707,0x07071309,0x070E0707,0x24373737,0x0F0E0707,0x26372437,0x13120726 + .word 0x62292924,0x24130707,0x07303026,0x26240F07,0x07626230,0x1626160F,0x07457362,0x1616260F + .word 0x12120E13,0x26131313,0x29241212,0x30262929,0x37372924,0x62303737,0x37373737,0x62602C37 + .word 0x37373737,0x73603B3B,0x3B3B3B3B,0x3246453B,0x45457330,0x09737673,0x73731026,0x07167373 + .word 0x0F302626,0x16070A07,0x12623030,0x0A0E0707,0x0F307373,0x09090707,0x0F070773,0x0E070F0F + .word 0x120F0707,0x2B2B2413,0x242B240F,0x3B382B24,0x29452609,0x3B3B3629,0x732B1007,0x73734545 + .word 0x0E070707,0x26301412,0x14160E09,0x2614122B,0x36161626,0x09172636,0x372C2726,0x07073060 + .word 0x373F3F3F,0x070E3A45,0x453B3B3B,0x0F070E73,0x3D453B3B,0x12290716,0x42737373,0x2929290F + + .word 0x24372424,0x070E0707,0x26292926,0x070E0726,0x62303030,0x0F120707,0x07626262,0x13130707 + .word 0x07457326,0x24240F0F,0x07070710,0x2626160F,0x07071614,0x16162607,0x07141616,0x16161607 + .word 0x0F092410,0x2424240F,0x120F0F0E,0x2B242424,0x24241314,0x38372437,0x37373726,0x38363637 + .word 0x3636362C,0x3B3B3B36,0x3B363838,0x3D453B3B,0x3B452D26,0x7373733B,0x45141515,0x26733B45 + .word 0x392B2616,0x7899A6A4,0x78303B3B,0xA6A6A6A6,0x98453660,0xA4A6A4A4,0x78363645,0xA6A6A6A4 + .word 0x45003673,0x453A7373,0x73370F32,0x97789773,0x78381410,0xA4A47873,0x97150906,0xA6A6A678 + .word 0x00789998,0x00000000,0x0097A6A6,0x00000000,0x009797A4,0x00000000,0x000076A4,0x00000000 + .word 0x0000733A,0x00000000,0x00979773,0x00000000,0x00A4A4A4,0x00000000,0x00A4A6A6,0x00000000 + + .word 0x08000000,0x62737673,0x15000000,0x989898A4,0x32000000,0xA6A6A697,0x00000000,0xA4A6A6A4 + .word 0x00000000,0x73984500,0x00000000,0x98789700,0x05000000,0xA6A699A4,0x08000000,0xA6A6A698 + .word 0xA4A67673,0x2B141214,0xA6A6A6A4,0x15133845,0x45A6A6A6,0x05163838,0x3B99A4A6,0x0E2B3B3B + .word 0x60737373,0x0E3A453B,0x6095A478,0x000E7645,0x76A4A6A4,0x24072646,0x78A6A6A6,0x24240F7A + .word 0x29292926,0x14060629,0x29292C26,0x1405382C,0x2C2C2C08,0x1406053B,0x45454506,0x37060505 + .word 0x45451605,0x370F0F05,0x0303120F,0x26160F05,0x06261313,0x27260606,0x13162624,0x26160608 + .word 0x63633B3B,0x07137373,0x62616337,0x100F6076,0x73625E37,0x26162673,0x73736237,0x130F0910 + .word 0x14167360,0x13130707,0x09092B3B,0x26131313,0x0F0F1373,0x30261313,0x12121212,0x62302929 + + .word 0x36160E07,0x07073036,0x37161609,0x0F0E3A60,0x372C2726,0x12070E45,0x453F3F26,0x29290773 + .word 0x3D3B3B3F,0x29292916,0x42453B3B,0x2929290F,0x0773733B,0x2629290F,0x29323273,0x2B263029 + .word 0x07070726,0x07161607,0x07071610,0x09090707,0x07141614,0x16090707,0x0E163616,0x29160707 + .word 0x30262736,0x27290F07,0x07154536,0x0F161207,0x07272B2D,0x0F160F0F,0x0F07262B,0x160F0F0F + .word 0x0F090F10,0x070F0F0F,0x16161616,0x07071316,0x16161616,0x12292916,0x16161616,0x0F292929 + .word 0x12262616,0x07071212,0x37373716,0x0F070F16,0x37373737,0x0F070F16,0x160F1616,0x0F0F0F16 + .word 0x27160707,0x98737332,0x12131307,0x0F130F12,0x2929290F,0x23292929,0x2B362907,0x0F292929 + .word 0x16261607,0x12123737,0x1616070F,0x37373716,0x1607160F,0x16161614,0x0F0F0F0F,0x16091616 + + .word 0x07323232,0x2929290F,0x2929290F,0x29292929,0x290F0F0F,0x26263030,0x0F0F0F0F,0x2B362B14 + .word 0x0F0F1212,0x26261616,0x0F0F1637,0x0F160F0F,0x0F161610,0x0F0F0707,0x0F070F16,0x0F0F0F0F + .word 0x07163636,0x07090707,0x0E262736,0x09090707,0x3015452D,0x16160707,0x07272B2B,0x29290F07 + .word 0x07072626,0x2716120F,0x0F070F0F,0x0F160F0F,0x0F0F0F0F,0x0F0F0F0F,0x0F0F0F0F,0x16161616 + .word 0x080F0E0E,0x0F0F0F0F,0x1414140E,0x0012140E,0x0E161610,0x3724160E,0x16161616,0x13131316 + .word 0x372C2626,0x07372424,0x5E5E3829,0x00373737,0x37373737,0x05373B37,0x3B3B3B37,0x0F24623B + .word 0x73050907,0xA4A4A678,0x29290700,0xA4A49797,0x78371212,0x45457339,0x8E37040F,0x78784578 + .word 0xA5600004,0x9797A499,0x8514120F,0xA4A4A497,0x25362437,0xA6A6A698,0x78373737,0x99999997 + + .word 0x0097A6A6,0x00000000,0x00789797,0x00000000,0x00007373,0x00000000,0x0000A678,0x00000000 + .word 0x00A49797,0x00000000,0x00A4A6A6,0x00000000,0x0097A6A6,0x00000000,0x000099A4,0x00000000 + .word 0x10000000,0xA6A6A6A6,0x00000000,0xA4A4A408,0x00000000,0x45457300,0x00000000,0x7873A6A4 + .word 0x09000000,0xA6A6A4A4,0x3A000000,0xA6A6A697,0x45000000,0xA6A6A6A4,0x00000000,0xA6A6A4A4 + .word 0x7399A6A6,0x24240F03,0x37999797,0x2C371337,0x3945393A,0x38363637,0x39979778,0x38624526 + .word 0x9797A4A6,0x733B3B60,0xA6A6A6A6,0x160F0F39,0x14A4A6A6,0x0F000326,0x4599A4A6,0x130F0F0F + .word 0x162C2624,0x06050505,0x2D2C372C,0x08000509,0x39626238,0x2608002B,0x45736262,0x370F0504 + .word 0x00737373,0x16240F07,0x07070F0F,0x16240F12,0x0F07130F,0x3837130F,0x0F131313,0x403C3012 + + .word 0x29240E0E,0x62603737,0x37371213,0x73602C37,0x37372912,0x32463B3B,0x37373724,0x0973453B + .word 0x3B3B3737,0x07167673,0x45453B37,0x070F7373,0x7373733B,0x07070F0F,0x0F091030,0x12291316 + .word 0x29292932,0x26362B30,0x0F0F0F0F,0x0F261614,0x0F0F0F0F,0x0F160F16,0x0F0F120F,0x0F0F070F + .word 0x0F0F1612,0x000F0F07,0x0F161637,0x0000000F,0x00070F10,0x00000000,0x00000016,0x00000000 + .word 0x271D210D,0x1B5A5D42,0x191A4A2F,0x0D654C4C,0x20191F6B,0x2A505C20,0x1C207979,0x3E5C4F1C + .word 0x3E3C7894,0x7B512150,0x4E713C11,0x5240165D,0x79971719,0x17633E4D,0x973F4D52,0x63656578 + .word 0x5C5D5371,0x7579534C,0x5C51212C,0x65342151,0x22202F0B,0x470B3451,0x1A19170B,0x194C8120 + .word 0x4F50340B,0x1D56660C,0x4F4B0C3C,0x2C6F6B4F,0x1F1B0B3E,0x3F63534B,0x161C1A7A,0x36170C27 + + .word 0x5121420C,0x4C224F52,0x22789978,0x4C4F4C51,0x1B6C650C,0x4F7B5C56,0x6C6C6B0B,0x6B747A6C + .word 0x6D6C6C19,0x656C6C6C,0x7B636621,0x3C6C6B7D,0x2C547743,0x6B6D4242,0x5C5D6D63,0x8D584F51 + .word 0x1A6B0C19,0x6C6C4D47,0x4C3E0C1B,0x6C6B5253,0x3E2C0C4F,0x6C405257,0x0A6B6D6D,0x8C7B5119 + .word 0x160A6340,0x6C4D0B11,0x4A6D346B,0x431D204E,0x19779471,0x1D1A0D0D,0x4C4D728F,0x524B4C5A + .word 0x0F161600,0x260F070F,0x16000000,0x0F0F0F0F,0x00000000,0x0F0F0F00,0x00000000,0x0F000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x16160F26,0x0F292916,0x16161610,0x07072929,0x16161616,0x0F071212,0x12261616,0x0F070F16 + .word 0x37372616,0x0F0F0F16,0x37373716,0x00000F16,0x160F3716,0x00000000,0x00001637,0x00000000 + + .word 0x16161607,0x16091614,0x1607070F,0x00001616,0x0F0F160F,0x00000000,0x00000F0F,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x2C1E4F4F,0x6B34996B,0x43201A0D,0x63665C45,0x5D52514B,0x1D4C4B4C,0x2121210C,0x1D1B2151 + .word 0x0D201A3B,0x1D22194B,0x33342B73,0x6C4F224B,0x3C273E1A,0x6B6C211B,0x40403E20,0x666C6C3E + .word 0x6E633F70,0x63170A6E,0x656C9571,0x544E0C40,0x51448E6C,0x834C4F5B,0x2022406C,0x994A224C + .word 0x1F206C6C,0x98794B21,0x1F656C6C,0x507F2220,0x6C6C6C6C,0x7A49654A,0x71636574,0x4C786C62 + .word 0x192C760B,0x334C4C21,0x19117947,0x17191B1A,0x0A0C55A5,0x271C1B1B,0x4A5A5A98,0x3C1E1711 + .word 0x817D2143,0x4064667D,0x1C332122,0x6B6B6643,0x0B4A5A4C,0x6C634019,0x205D2221,0x656B420D + + .word 0x4B4C2220,0x4F4F5251,0x191D201A,0x1A4C1B0D,0x27343434,0x111D163C,0x6B3F3F3E,0x2B276C6C + .word 0x6D666365,0x796A406C,0x6B716D65,0x7977656C,0x6371656B,0x0B647938,0x6C636542,0x20409598 + .word 0x07070E14,0x006A3535,0x1107090E,0x007E2813,0x11090707,0xA5382828,0x13070707,0xA53B2828 + .word 0x0F07070E,0x00A72928,0x07070728,0x00732828,0x0907072A,0x00652928,0x07070F2B,0x0000750F + .word 0x00000016,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x653E4B22,0x53666C6C,0x3320214C,0x4B786465,0x421E2021,0x53986465,0x6B2F1E1F,0x95946C6C + .word 0x6B6C1D20,0x6C6C667B,0x3D640D1B,0x52514B19,0x2F631E17,0x744C2042,0x1C6B1E3C,0x49444642 + + .word 0x644E5355,0x6B946576,0x1F4C514F,0x6C6B9597,0x214C224E,0x6C949998,0x7F406565,0x6C6C9498 + .word 0x7999A494,0x666C6CA4,0x946C9474,0x4C416C94,0x95946B6B,0x4F4D4095,0x793F956D,0x224C4299 + .word 0x1C4B2021,0x95A49964,0x6C2F166C,0x330D7B77,0x6D3C1A42,0x5C4F529E,0x611E1F65,0x5A4F4C4D + .word 0x363F3440,0x504C4C22,0x7334434D,0x1C1C1A33,0x3B4B584F,0x6D654126,0x575C4C21,0x6B6E3F4D + .word 0x77426560,0x4C545338,0x344F5251,0x4C1F1917,0x19204E52,0x514C204A,0x1A514F4C,0x4B4C0B0D + .word 0x3E1F1D1D,0x21221A1B,0x2C3E3E3E,0x514C4B19,0x63406565,0x4C4F1F34,0x6C3C3C6B,0x50212F6E + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0B0C0C00,0x00000000,0x1B0B0D4B + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x57651900 + .word 0x51000000,0x193F0D1D,0x51514F1D,0x40400D1B,0x204B4C1B,0x400D1D1B,0x1C1D1A20,0x4B1B4C21 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x004C4A00,0x00000000,0x21214C51,0x21214F4B + .word 0x214F5A4C,0x21214C20,0x5A511B0B,0x201F4C4F,0x210D3F6E,0x1F220D4B,0x646C6E65,0x214C0B0C + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x1A1F2020,0x4B21201B,0x21202121,0x41190D1A,0x19202220,0x3F191921,0x201F1F20,0x3F1B1A22 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1F4F0000 + .word 0x0C22654B,0x1B1B1F19,0x0B1B1940,0x0C21200D,0x0C1A190D,0x40224C21,0x1B190D0B,0x21515A51 + + .word 0x0707142B,0x0000793A,0x070F2B2A,0x00007532,0x73383814,0x00000E07,0x28352A14,0x00009898 + .word 0x2A2B1414,0x00737807,0x07130907,0x00459807,0x07070707,0x0078990F,0x12070707,0x00781313 + .word 0x7A949833,0x94416566,0x6D6D9895,0x6D6E6C65,0x6D6B6C6B,0x7B4A3D6B,0x514E476B,0x1B3E4920 + .word 0x1D4B4442,0x1B634933,0x3F431F49,0x3C2C3E36,0x6E36273E,0x1B0C1966,0x60334333,0x0D4B5765 + .word 0x3E4B636A,0x22526B95,0x1C21431E,0x4F516594,0x0C22224C,0x524E4995,0x171D4B4C,0x4C4F4C6B + .word 0x66361922,0x21202065,0x536C3B20,0x0C0B1A7A,0x2C6BA444,0x0D1D0B2C,0x224A7776,0x1A21201B + .word 0x4B1F1B1D,0x406D825A,0x201D1B1B,0x66844E22,0x4A4B221F,0x7E554333,0x21214B21,0x444D204B + .word 0x4C4C2222,0x4D20214E,0x204C4C21,0x4D331D1B,0x214F1B0B,0x1F333320,0x4C4C1A0A,0x19431D21 + + .word 0x401D0B65,0x2C343F66,0x3E1D0B64,0x6C6B6463,0x1D0B0D6C,0x6D636B1E,0x1A4C216D,0x75464D11 + .word 0x5D525695,0x73985522,0x1F43799E,0x6B769817,0x1970854D,0x6B7A9873,0x0B773C0B,0x6C657473 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x1B000000,0x00000000,0x21000000,0x00000000,0x0B000000 + .word 0x5C000000,0x1B194F51,0x204F4F00,0x214C210D,0x191B1F19,0x584B1B0D,0x2121200D,0x274B1A0D + .word 0x4B224C21,0x6C331D1B,0x21515A51,0x6C272220,0x51522221,0x71420B1B,0x1D190C0C,0x8E604D22 + .word 0x1919191A,0x60224F4B,0x20191A4C,0x6E6E0922,0x4319334E,0x8E8E6C2A,0x60386C6C,0x958E8E6E + .word 0x6E6C6E6E,0x8E8E6E6E,0x6E6E8E8E,0x95716E6E,0x6E8E8E95,0x9898716B,0x6B6E8E8E,0x7171646B + + .word 0x6E6E6E6E,0x4F501B6C,0x8E6E6E6E,0x6E6E6E8E,0x958E8E8E,0x6E8E8E8E,0x95959595,0x8E8E8E8E + .word 0x95959595,0x6B716D6D,0x97989898,0x646B7198,0x71717195,0x646B6B71,0x6B6E6E6E,0x6B6B6B64 + .word 0x211F214C,0x7421204F,0x246B6C6E,0x6E7A5A53,0x6E6E6E6E,0x6C24636E,0x6E6E6E6E,0x958E6E6E + .word 0x6E6E6E6E,0x958E716E,0x6E6E6E6B,0x8E8E6E6E,0x6E6E6B6B,0x716E6E6E,0x6E6B646B,0x6B6B6B6E + .word 0x211B0D40,0x74203422,0x36633419,0x63366E36,0x8E8E8E61,0x8E8E6E6E,0x95959595,0x8E8E8E8E + .word 0x8E959595,0x718E8E8E,0x8E8E8E8E,0x6E6E7171,0x71717171,0x6E6B6B6B,0x6464646B,0x6B646464 + .word 0x0A0A0707,0x00983528,0x09070707,0x0000992A,0x0707140E,0x00077635,0x7311282A,0x00011079 + .word 0x0706070F,0x00060E73,0x07070707,0x00487307,0x070A0707,0x00A77507,0x070E0E07,0x00983D07 + + .word 0x00000000,0x1B000000,0x00000000,0x52000000,0x00000000,0x4B200000,0x00000000,0x211B0000 + .word 0x00000000,0x3F192100,0x00000000,0x0D4F4B00,0x00000000,0x0C1A1B00,0x00000000,0x1C1B1919 + .word 0x0D0D191A,0x8E8E3C19,0x214B4C4B,0x8E8E744C,0x20201D20,0x8E8E6C4D,0x40191A20,0x8E8E6E36 + .word 0x6E6E0C0D,0x718E8E6E,0x6C6B6E6C,0x718E8E6E,0x6C534B19,0x718E8E6E,0x6C531F19,0x6E6E6E6E + .word 0x646B6E8E,0x6B64646B,0x6B6B6E71,0x8E716B64,0x6B6B6B71,0x958E8E6B,0x6E6B6471,0x8E8E6E6E + .word 0x6E6E6B64,0x6E6E6E6E,0x6E6E6B64,0x6E6E6E6E,0x6E6E6B6B,0x8E6E6E6E,0x6E6E6E6B,0x958E6E6E + .word 0x6E6E6E8E,0x6B6C6B6B,0x6E6E8E8E,0x71717171,0x6E6E6E8E,0x95978E71,0x6E6E6E6E,0x8E8E8E6E + .word 0x6E6E6E6E,0x6E6E6E6E,0x8E8E8E8E,0x8E6B6E6E,0x8E957195,0x24013671,0x6E6C718E,0x1A212036 + + .word 0x6B646B6B,0x64646B6B,0x716D6D71,0x6B6B6B6E,0x97979595,0x6E6E6E8E,0x8E959595,0x6E6E6E6E + .word 0x7195958E,0x6E6C6E6B,0x8E979797,0x6E6E6E6E,0x6E8E6239,0x6E6E6E6E,0x6E361D1D,0x8E8E6E6E + .word 0x6464716B,0x6B646464,0x7195978E,0x71717171,0x95958E71,0x95979795,0x718E716E,0x95957171 + .word 0x6B6E6E6C,0x71716C6C,0x6C6C6C6E,0x71716C6B,0x6E6E6E6E,0x95958E71,0x8E716E8E,0x99949595 + .word 0x07132A14,0x00739807,0x070E2A2A,0x00007307,0x070F2A14,0x00000007,0x070F2B14,0x00000013 + .word 0x0914382A,0x00002812,0x07283B38,0x00002A14,0x07143B38,0x002A7307,0x09172814,0x0097450F + .word 0x00000000,0x190D1B0D,0x4C000000,0x190C1A1B,0x4F000000,0x1B0C1922,0x4B220000,0x1F1B1B1B + .word 0x404B1F00,0x4F1D193F,0x584F4B1A,0x1A1B2066,0x1B1B2220,0x0D1A6B99,0x0D201D1B,0x171D970C + + .word 0x6C3E1919,0x6E6E6E6E,0x6E271D1B,0x6E6E6E6E,0x6E2A1B21,0x6E6E6E6E,0x6E60331B,0x6E6E6E6E + .word 0x6C664D21,0x6E6E6E6E,0x6E70744B,0x6E6E6E6E,0x6E706D3E,0x6E6E6E6E,0x6E706D65,0x8E6E6E6E + .word 0x6E6E6E6E,0x8E8E8E6E,0x6E6E6E6E,0x6E8E716E,0x6E71956E,0x636E8E6C,0x6E8E9795,0x246E6E6C + .word 0x71959995,0x246E6E6E,0x71959995,0x536E6E6E,0x71949995,0x3E6E6E6E,0x71949994,0x656E6E6E + .word 0x1D1B196C,0x4B4F0C6B,0x1B211B24,0x19216E1A,0x1D1B1F1B,0x211B6522,0x4B214F1D,0x201A664F + .word 0x224C210C,0x0C1D1B4B,0x515A511B,0x0D222021,0x52222121,0x0C0B1B51,0x190C0C0B,0x194B221D + .word 0x36204F52,0x95958E6E,0x1A1A1B1B,0x958E6E6C,0x1B190D1D,0x8E6E6E2F,0x1F1B0C20,0x8E36241A + .word 0x204B2019,0x24014B1B,0x4F4B2219,0x0D0C1B22,0x1B1B211B,0x19190B19,0x190C1B1B,0x1B4B201B + + .word 0x958E8E95,0x94999794,0x94949595,0x6E959499,0x97979495,0x636E8E97,0x61959797,0x226E6061 + .word 0x01243939,0x4F6B6E00,0x211A191D,0x4C193F1B,0x1D191B1D,0x0C193F1A,0x0B1B210D,0x0B1B0C6B + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x0000004B,0x00000000,0x00202019,0x00000000 + .word 0x1D4B4B1A,0x6B6B980C,0x1B51200D,0x6D779965,0x1B211A19,0x70959971,0x771D191B,0x708E9499 + .word 0x942C1B21,0x6E719497,0xA4944F4B,0x6C6E9597,0x9999771A,0x6E6E9597,0x97998E3E,0x6E6E7195 + .word 0x6E706D6D,0x8E6E6E6E,0x6B6B6D6D,0x95716E6E,0x6E6B6B6B,0x958E6E6E,0x6E6E6B6B,0x958E6E6E + .word 0x6E6E6E6B,0x958E7171,0x716E6E6E,0x94948E71,0x6E6E6E6E,0x94979795,0x958E716E,0x95979797 + + .word 0x71949997,0x366E6E6E,0x71959794,0x636E8E71,0x718E9595,0x6E95978E,0x71718E95,0x8E99948E + .word 0x71718E95,0x6E99958E,0x71718E95,0x8E979595,0x8E6E8E8E,0x8E97958E,0x958E6E71,0x8E978E8E + .word 0x3F191A1B,0x0000190D,0x654C4B52,0x00000021,0x586E3634,0x00000020,0x4F206B6E,0x00000033 + .word 0x5B4E3C6E,0x00001B0D,0x4A1B246E,0x0000190C,0x1B0C246E,0x00000D0B,0x221A366E,0x0000210C + .word 0x4B1A1900,0x4B4F4B4C,0x51000000,0x191B2251,0x00000000,0x21204F51,0x00000000,0x5C4F0000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x41744B0D,0x1B1F1B1B,0x4F521A0C,0x524F1D19,0x514F1D4B,0x510D1B51,0x4B4C4F51,0x001D1B20 + .word 0x1B51210D,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x584C201B,0x00000000,0x1B190D1A,0x00000000,0x0D0C0D1D,0x00000000,0x1D19191D,0x00000000 + .word 0x4C4B1B0D,0x0000001B,0x1B4F4B0D,0x00000000,0x1D1B190C,0x00000000,0x4F4C584C,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x05010A0B,0x0C000000,0x43B4B4A1,0xAE000000,0xB6B5B1B5 + .word 0x00000000,0x00000000,0x00000000,0x0A050000,0x00000000,0x9B440000,0x0B050100,0xA1A15756 + .word 0x9C0D0A05,0xABAE9D9C,0xAA592019,0xABABAEAB,0xAB9B5850,0xACABAEAB,0xAB9DAA9D,0xAAABABAE + .word 0x00000000,0x00000000,0x00000A0A,0x00000000,0x5B5A4E59,0x0000000C,0xB9B0AAAF,0x000520B6 + .word 0xAFACACAC,0x0821B5B0,0xAEAEAEAB,0x1EB5B0AE,0xAFAFAFAF,0xB4B5AAAE,0xB0B0AFAA,0xB5B2AAAB + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000005,0x00000000,0x0000001A,0x00000000,0x000000AC,0x00000000 + .word 0x00000000,0x00000000,0xAA4D0200,0x00000002,0xB0AD4D00,0x000000AA,0xB0B04D00,0x000002AA + .word 0xB0AD5900,0x00004DAA,0x59590200,0x0000024D,0x00000000,0x02000000,0x00000000,0x4D000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x0002594D,0x00000000,0x0059AAAA,0x00000000 + .word 0x94A4952F,0x6E6E6E8E,0x9599952F,0x6E6E6E71,0x95999534,0x6E6E6E71,0x8E97953E,0x6E6E6E6E + .word 0x6E949774,0x6E6E6E6E,0x8E959534,0x6C6E6E6E,0x8E8E8E2F,0x656C6E6E,0x8E958E3E,0x6C6C6E6E + + .word 0x978E716E,0x71959797,0x71717171,0x6E717171,0x6D71716E,0x6E6C716E,0x6D6D6C6C,0x6E6E6C70 + .word 0x716D6C6C,0x6E6E6E71,0x71716C6C,0x6E6E6E71,0x7171716D,0x6E6E6E8E,0x8E957171,0x6C6E6E6E + .word 0x956E6E71,0x8E97958E,0x97958E6E,0x36959797,0x9597978E,0x246E8E8E,0x29718E71,0x403E2436 + .word 0x22386E6E,0x19190C4B,0x0B193B6C,0x191B191B,0x0C0D276E,0x0D22200C,0x1B1A4360,0x1A21201F + .word 0x4B1B2063,0x005A511B,0x1B224F01,0x00222121,0x0B191B1B,0x000C0C0B,0x1A5A193F,0x00211B0D + .word 0x19214B40,0x00001A19,0x20195120,0x0000004C,0x1D194F1D,0x00000050,0x191B1D1D,0x00000000 + .word 0x4B0D1B19,0x00000000,0x0C0B0D0C,0x00000000,0x0B1B1D19,0x0000000D,0x191B4C4B,0x00000019 + .word 0x4C211B4F,0x0000001A,0x4B581D1B,0x0000000D,0x514C1A1B,0x00004C5A,0x441B1D4B,0x004F0C44 + + .word 0x540B0000,0xB0B2AFAE,0x59800C00,0xB3AFAB9D,0x9CB05B00,0xB2AFAA9C,0x9DB59D00,0xB2B0AA9B + .word 0xACB5B000,0xAFB0AB9B,0xB4B5B000,0xACAFB2B0,0xB5B5AA00,0xACACB3B5,0xB6B05900,0xABABB2B4 + .word 0xAEAB9BB0,0x9DABABAB,0xAEAB9CB0,0x9C9DACAF,0xAEAB9DAC,0x5B9BABAF,0xAEAE9DAB,0x5980ABAE + .word 0xAEAEAAAB,0x5B9BABAE,0xAEABABAB,0x569CABAC,0xABB5B4AC,0x56AAACAB,0xABB6B3AA,0x9BABAFAF + .word 0xB3B2ACAB,0xB5B3B1B3,0xB4B5B5B0,0xB5B4B4B4,0xB4B6B5B0,0xB5B4B4B4,0xB4B6B5AF,0xB5B4B4B4 + .word 0xB5B6B4AA,0xB4B4B3B5,0xB6B6AB9C,0xB4B2B4B5,0xB9B6AA9D,0xB4B3B6B9,0xB9B9AC5B,0xB4B4B9B6 + .word 0x000000B4,0x00000000,0x0000AAB5,0x00000000,0x0005B5B4,0x00000000,0x0019ABB5,0x00000000 + .word 0x0019B0B4,0x00000000,0x004BB2B1,0x00000000,0x009DB0B1,0x00000000,0x4EAFACB1,0x00000000 + + .word 0x00000000,0x02000000,0x00000000,0x024D0200,0x00000000,0x4D595902,0x00000000,0x59ACAC4D + .word 0x00000000,0x59ADAC59,0x00000000,0x4D4D5902,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x0002594D,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x02000002,0x0002594D + .word 0x4D00004D,0x0059AAAC,0x4D000002,0x0002AA59,0x02000000,0x0000024D,0x00000000,0x00000200 + .word 0x00000000,0x501D5751,0x00000000,0x1B19194C,0x00000000,0x19201B00,0x00000000,0x1B200000 + .word 0x00000000,0x1A000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x4C1B1A22,0x6D11504F,0x524F2120,0x71981A4A,0x20222241,0x6E6B993F,0x6E6E6E1A,0x6E6B6B6E + .word 0x1B1D224B,0x6E7B206B,0x19211F19,0x6E65203F,0x3F1A2019,0x6E3E211A,0x1B4B4B00,0x6E3E2120 + + .word 0x6E6E6E8E,0x8E8E716E,0x6E6E8E8E,0x8E8E6E6E,0x6E6E958E,0x716E6E6E,0x6E6E958E,0x6B6E6E6E + .word 0x6E8E958E,0x956E6E6E,0x6E8E958E,0x978E6E6E,0x6E8E958E,0x978E6E6E,0x6E8E958E,0x9995716E + .word 0x6E6E6E8E,0x988E8E8E,0x6E6E6E71,0x95958E6E,0x6E6E6C6C,0x95958E6E,0x6E6E6D71,0x8E8E8E6E + .word 0x6C6B7071,0x6E8E6E6E,0x6B6B7077,0x6E6E6E6C,0x6B6C7095,0x6E8E6E6C,0x6B6C7195,0x8E8E6E6C + .word 0x474F514F,0x00510B32,0x95758599,0x0B0D1B18,0x1E999995,0x1A0B5220,0x6B6E6E65,0x584B5120 + .word 0x22501D6C,0x4C4F406E,0x211B1A6E,0x1B1A6B4C,0x581D1B6E,0x1A0C0D4B,0x4F4C586D,0x0B1B515A + .word 0xB54E0B00,0xACAAAFB4,0x5A0D0300,0xACAAAB5B,0x500C0500,0xAB9D9D58,0x4E0B0600,0xAA5B5850 + .word 0x4A0A0300,0xAA585057,0x0A000100,0xAA585857,0x0A010100,0x9C575021,0x06080100,0x584E4E20 + + .word 0xB6B2AFAA,0x9CACB0B9,0xB4AB9DAB,0xAAACAFB6,0xACAA9DAC,0xACAFAFB0,0xAFAFAFAC,0xAFAFAFAF + .word 0xB0B0B0AF,0xB0ACACAF,0xB0B0B0AF,0xB0ABABAF,0xB0B0B0AB,0xB2AFABAA,0xB0AFAB9D,0xB0AAAAAF + .word 0xB9B6AB5B,0xB4B5B6B9,0xB2AA8059,0xB5B5B5B6,0xAA9B809D,0xB5B5B3B4,0x9D809CAB,0xB5B5ACAF + .word 0xB0AFABB0,0xB4B3B3AF,0xB2B0B2B2,0xB3B0B0B0,0xB0B0B2B2,0xB2B0AFB0,0xACACB0B0,0xB0B0AFAF + .word 0xA1AEAFB4,0x00000000,0xA1AEB0B4,0x00000000,0x9DAEB0B4,0x00000A03,0xA1ABB0B4,0x00000B1E + .word 0xB4AFB0B4,0x00001A5B,0xB6B0B0B4,0x0000009C,0xB6AFAFB4,0x0000009D,0xB5B0AFB2,0x0000005B + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x02000000,0x00000000,0x4D000000,0x00000000,0x59020000,0x00000000,0x59590200 + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x024D4D4D,0x00000000,0x4DAAACAA,0x00000000,0x4DAAB0AC,0x00000000,0x02ACB0B0,0x00000000 + .word 0x776C2F16,0x51330D7B,0x9E6D3C1A,0x525C4F52,0x4D611E1F,0x4C5A4F4C,0x22363F34,0x1D504C4C + .word 0x33733443,0x3E1C1C1A,0x263B4B58,0x656D6541,0x4D575C4C,0x27646E3F,0x5A4B1F1B,0x1B2F6D82 + .word 0x17344F52,0x4C4C1F19,0x4A19204E,0x4B514C20,0x0D1A514F,0x224B4C0B,0x1B3E1F1D,0x2221221A + .word 0x192C3E3E,0x1B514C4B,0x3463343E,0x174C4F1F,0x6E6B0D19,0x3C50212F,0x662F1D0B,0x332C343F + .word 0x1F201F21,0x524A4734,0x214B1F20,0x514E7534,0x2243271A,0x224C441B,0x513E3C1D,0x4A4E4E4F + .word 0x191E3F0D,0x5752514B,0x4A2F1C1E,0x4A514C20,0x431C4B1E,0x6D4D4B4C,0x64544C4C,0x6A947165 + + .word 0x361F4C51,0x1B1B4C42,0x19214C22,0x2121210B,0x1D4B343E,0x204F4B1C,0x1D4E6171,0x36363C41 + .word 0x1B3E403F,0x444C4327,0x273F6636,0x4F511D3C,0x34172763,0x21224C20,0x633E4B2C,0x1D225221 + .word 0x01030101,0x574E1E0A,0x050A3305,0x504D0A01,0x019DAB11,0x4D0D0B01,0x59B9B64A,0x0A080A01 + .word 0xB2B9B605,0x03010800,0x59B55900,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0xABAA9C58,0xAAACAFAC,0x9B585757,0x9DAAAA9D,0x504E4E4E,0x58575757,0x4E4E4E1E,0x504E4E4E + .word 0x4E4A0D0A,0x20214E4E,0x1B0B0501,0x05111A58,0xB6010300,0x0157B0B2,0xB2580000,0x000000B2 + .word 0xAF9D9D9D,0xB4B3B2B0,0xACAA9C9C,0xB3B5B0AF,0xAB5B5858,0xB2ADAFAF,0xA19B5857,0x575A9DA1 + .word 0x5656504E,0x1E1D4E56,0x0A0C0B0A,0x0001050A,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0xB4B4B2AF,0x00000001,0x00B55BAF,0x00000000,0x03055758,0x00000000,0x0A0D031A,0x0000580A + .word 0xAB9C0B00,0x000000AF,0xB6AB1101,0x000000B3,0xAF504A03,0x00000059,0x00010500,0x00000000 + .word 0x00000000,0xB0594D00,0x00000000,0xAAB0AC02,0x02000000,0xADB0B0AD,0xAA020000,0xAAB0B0AC + .word 0xAA4D0000,0xAAB0B0B0,0xAC4D0000,0xAAAAB0AC,0x4D020000,0x4D594DAA,0x00000000,0x00024D02 + .word 0x59ACB0B0,0x00000002,0x59AAADB0,0x0000004D,0xAA59AA59,0x0000004D,0xAA59AAAA,0x0000004D + .word 0x59595959,0x0000004D,0x5959AAAA,0x00000002,0x024D4D4D,0x00000000,0x00000000,0x00000000 + .word 0x22201D1B,0x1E66844E,0x334A4B22,0x657E5543,0x4B21214B,0x75444D20,0x4E4C4C22,0x984D2021 + .word 0x1B204C4C,0x9E4D331D,0x20214F1B,0x4D1F3333,0x214C4C1A,0x0B19431D,0x52512133,0x194C224F + + .word 0x171D1D0B,0x4F646340,0x1E1D0B0D,0x75751164,0x111A4C21,0x7575464D,0x225D5256,0x33739855 + .word 0x171F4379,0x4C227898,0x73197085,0x3E4E4E98,0x730B773C,0x334B2053,0x471A6B0C,0x0D19204D + .word 0x334F4F5C,0x1E668F8C,0x4B515250,0x4C514A1E,0x20514E47,0x4C1B1B4C,0x331D4B44,0x221B1A4D + .word 0x363F431F,0x20190B3E,0x666E3627,0x441B0C19,0x65603343,0x780D4B57,0x42271D21,0x771B5A5D + .word 0x601C2143,0x1B4F511B,0x3C0C2222,0x1F524E4D,0x36171D4B,0x214C4F4C,0x3E663619,0x22212020 + .word 0x54536C3B,0x210C0B1A,0x0B0B6DA4,0x0B0D1D0B,0x1B224A77,0x0A1A2120,0x4C5C5D53,0x0C347B53 + .word 0x51222042,0x1B4C4F4C,0x561B2020,0x4F4F525C,0x3F0D1A19,0x4C51524E,0x3350430B,0x0C214B34 + .word 0x5C583C50,0x1B0D0A1E,0x4A0B5487,0x713F6643,0x515C5D6D,0x8F8D584F,0x21192C76,0x20334C4C + + .word 0x534C3E0C,0x0C1A2152,0x57200B0C,0x22404052,0x190A0D4C,0x568C7B51,0x11160A0D,0x6B6C4D0B + .word 0x4E4A6D34,0x11431D20,0x0D197794,0x191D1A0D,0x5A4C4D72,0x52524B4C,0x514B4C22,0x4F4F4F52 + .word 0x4C191A4A,0x110D1D4C,0x2020191F,0x0B01505C,0x1C1C2051,0x0B1B5C4F,0x503E1734,0x0B525121 + .word 0x5D4E773C,0x0D523416,0x4D1E7617,0x1D17363E,0x2C2C3F4D,0x54363E42,0x632C1E4F,0x706B3453 + .word 0x515C5121,0x27653421,0x5122202F,0x0C1B0B34,0x201A1917,0x0B194C81,0x0C4F5034,0x191D5666 + .word 0x4F4F4B0C,0x212C6F6B,0x4B1F1B0B,0x433F6353,0x27161C1A,0x6336170C,0x6E6E633F,0x0B63170A + .word 0x1A191179,0x0B0A0B0C,0x1D0A0C55,0x1D3E7A4E,0x114A5A5A,0x5C666416,0x7D817D21,0x4C346D66 + .word 0x431C3321,0x214F3E66,0x190B4A5A,0x21211640,0x0D205D22,0x21200D33,0x641C4B20,0x32A4A499 + + .word 0x0D190C0B,0x0D1A4C1B,0x3C270B0C,0x4B111D16,0x3E201D4C,0x0C2B2763,0x1B519C5C,0x3B797634 + .word 0x0C22984C,0x73797744,0x180D774B,0x1A0B6479,0x98611120,0x22204095,0x38772120,0x4C4C5453 + .word 0x1143201A,0x772C4E5C,0x4C5D5251,0x6B1D4C4B,0x51212121,0x2F1D1B21,0x4B0D201A,0x4B1D2219 + .word 0x4B33342B,0x191D4F22,0x1B3C271B,0x430C2121,0x1B341921,0x44172020,0x1B201F4C,0x1B3C1B20 + .word 0x40656C95,0x47544E0C,0x5B51448E,0xA5834C4F,0x4C202234,0x98994A22,0x211F204C,0x4398794B + .word 0x201F4B5A,0x22507F22,0x4A753453,0x4C4F4D22,0x45793C27,0x214C2122,0x78314E22,0x21222133 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x1B000000,0x4C4C4C1A,0x191D504C + + .word 0x2222200C,0x19204C21,0x1F22210C,0x2119191A,0x21221919,0x5A1A0D1B,0x0B0C2121,0x20211A0B + .word 0x0D191B51,0x1A1B0B0B,0x191A0C21,0x01190D0D,0x191B0B0D,0x6401201B,0x36363624,0x71716C61 + .word 0x8E71716E,0x948E8E8E,0x95958E71,0x958E718E,0x8E71716E,0x716E718E,0x6C6B6B6B,0x716C6E71 + .word 0x6E6E6E6E,0x958E8E8E,0x958E716E,0x94949495,0x99949571,0x94999497,0x99979495,0x6B719494 + .word 0x95989794,0x64646B6B,0x64656677,0x6B646464,0x64646466,0x6C6B6464,0x64646B64,0x6E6C6B6B + .word 0x6B64646C,0x8E6E6E6C,0x6C6B6B6C,0x8E6E6E6E,0x6C6C6C6E,0x6C6E6E6E,0x6E60606E,0x6E6C636E + .word 0x07070707,0x0F070707,0x07070700,0x07070707,0x03070000,0x0E090707,0x03000000,0x09070703 + .word 0x00000000,0x07070003,0x00000000,0x00000000,0x00000000,0x03000000,0x00000000,0x03000000 + + .word 0x1409070F,0x6A35070E,0x07070F14,0x1311090E,0x0713350E,0x13070707,0x0F2A1313,0x070E0E07 + .word 0x07070707,0x28350F07,0x06070A00,0x14130706,0x07000000,0x140E0707,0x00000000,0x09070707 + .word 0x00000000,0x00000000,0x0000007E,0x00000000,0x00009873,0x00000000,0x0098730F,0x00000000 + .word 0x00980907,0x00000000,0x7978072B,0x00000000,0x45782B14,0x00000000,0x4573140E,0x00739809 + .word 0x63242F3E,0x6D662124,0x0C1D2158,0x4121201B,0x200C0C1B,0x3F1B204B,0x22200D0D,0x3F191B22 + .word 0x20221D1B,0x3F201D1B,0x2050574C,0x191D1B19,0x1A4F511B,0x0000211D,0x21204C4B,0x00000000 + .word 0x00000300,0x09090700,0x00030300,0x09070707,0x00030000,0x0F130707,0x00000000,0x28280F07 + .word 0x00000000,0x28130707,0x00000000,0x280F0700,0x00000000,0x130F0000,0x00000000,0x0F000000 + + .word 0x2E141409,0x0098072B,0x24070707,0x98450709,0x07070707,0x98070707,0x07070713,0x07070707 + .word 0x07071328,0x14070707,0x07132828,0x0E090707,0x07131313,0x2A0E0707,0x0E140F0F,0x14141007 + .word 0x00000000,0x00000000,0x00000045,0x00000000,0x000000A4,0x00000000,0x00000845,0x00000000 + .word 0x00060804,0x00000000,0x75987828,0x00000000,0x4545040F,0x00000099,0x0E070714,0x00000045 + .word 0x0E141410,0x2A140707,0x07141010,0x382B1407,0x07071000,0x2B2B0907,0x00070000,0x2B140707 + .word 0x00000000,0x14070700,0x00000000,0x07070000,0x00000000,0x07000000,0x00000000,0x00000000 + .word 0x2A07070E,0x00000773,0x14070728,0x7312072A,0x45090707,0x4578413A,0x25070714,0x073B2B30 + .word 0x15070707,0x3B383010,0x07070707,0x3838302B,0x07070703,0x0E2A0907,0x07030000,0x07090707 + + .word 0x00000000,0x00000000,0xA5A50000,0x00000000,0x3B387E6A,0x006573A7,0x28282835,0x75292829 + .word 0x28281335,0x0F282828,0x13111107,0x0709070F,0x07090707,0x07070707,0x0707090E,0x0F070707 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x78784573,0x980E7579,0x13999878 + .word 0x9807323A,0x130F0707,0x28730707,0x1207072A,0x35380F07,0x0707132B,0x2A382B14,0x07070914 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x01070098,0x98A74806,0x10769935,0x3D75730E + .word 0x79352A28,0x07070773,0x7307090A,0x07070707,0x1107070A,0x0E0A0706,0x28140707,0x0E070707 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000073,0x972A0000,0x00007398,0x45732A28 + .word 0x13070707,0x0F071412,0x07070707,0x09070709,0x0F0F0E13,0x17142814,0x2B2A2A2A,0x283B3B38 + + .word 0x07000000,0x07070707,0x07000000,0x07070F09,0x00000000,0x07070709,0x00000000,0x07070709 + .word 0x00000000,0x07070700,0x00000000,0x07070300,0x00000000,0x07030300,0x00000000,0x07030000 + .word 0x07070E14,0x2B2A280E,0x07070709,0x142B350E,0x07070707,0x14130F07,0x0F130F0F,0x0E070707 + .word 0x2A35140F,0x07060707,0x130E0707,0x00070707,0x09090707,0x00000A07,0x07070707,0x00000007 + .word 0x14142A2B,0x07070714,0x14141414,0x07070707,0x10140E14,0x07070707,0x07090909,0x07070707 + .word 0x0E090907,0x07070707,0x0F070707,0x13130F13,0x13070700,0x13282828,0x0F070000,0x0F132813 + .word 0x2A0E0707,0x0707070F,0x2A0E0907,0x07070714,0x140E0707,0x07070E28,0x14100707,0x0707282A + .word 0x14100707,0x07072A38,0x14070707,0x07142B2B,0x09070E14,0x07141410,0x07071414,0x03070707 + + .word 0x14142A14,0x1438382A,0x1414140E,0x0E14382B,0x10100E09,0x070E2A2A,0x09090907,0x07070909 + .word 0x07070707,0x07070F07,0x07070707,0x07070F07,0x07070307,0x07070709,0x00000000,0x07070709 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x9B000000,0x000000B5,0xBDB45B00,0x00000000,0x00BBB357,0x00000000,0x00B5BF5B,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0xB5000000,0x0000009B,0x00000000,0x005B9CBD,0x00000000,0x57B3BB00,0x00000000,0x5BBFB500 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x86000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0xAA000000,0x00000000,0xAF000000 + + .word 0x00BB0000,0x00000000,0xAFAF0000,0x00000000,0xAFBBA09E,0x00000000,0xBB9E9F9E,0x000000AF + .word 0xBB9E9EBB,0x0000AF00,0x004700BB,0x000000AF,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x009DAF00 + .word 0x00000000,0x00AFAF00,0xAF000000,0x9FA000BB,0xBE000000,0x9F9F4700,0xAF000000,0xBB9E9E00 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x0000009E,0x00000000,0x00000047,0x00000000,0x00000000,0x00000000,0x000000AF,0x00000000 + .word 0x00BBBF5B,0x00000000,0x00BBBD9C,0x00000000,0x00BDBF5A,0x00000000,0x59B5C05B,0x00000000 + .word 0xB5BBBD5B,0x001E4343,0x4A4AB25B,0x1E595D5A,0x9D574A00,0x9B5DB9B5,0xB5B35000,0x9BB6BBBD + + .word 0x00000000,0x5BBFBB00,0x00000000,0x9CBDBB00,0x00000000,0x50BFBD00,0x00000000,0x5BC0B559 + .word 0x4E1A1E1A,0x5BB0BBBF,0x4AAA9B33,0x5BB2B59D,0xB5B5AC5D,0x004A9D4E,0xB9BDBD5D,0x004E50B5 + .word 0x00000000,0x00AF0000,0x00000000,0x00BBAF00,0x00000000,0x0000B000,0x00000000,0x0000AFB0 + .word 0x58000000,0x000000BF,0xBB000000,0x000000BE,0x00000000,0x0000BEBC,0x00000000,0x00AFAF00 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x9D9D0000,0x00000000,0xB9AB9B00,0x00000000,0xBDB8AE00,0x00000000,0xBE9BBD00 + .word 0x00000000,0xAF008686,0x00000000,0x00000047,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x000000AB,0x00000000,0x0000ACBD,0x00000000,0x0000BDBE,0x00000000,0x0000BD9C,0x00000000 + + .word 0x000000AF,0x00000000,0x000000AF,0x00000000,0x0000AF00,0x00000000,0x00AFAF00,0x00000000 + .word 0x00AFAF00,0x00000000,0xAABB0000,0x00000000,0xAFAF0000,0x00000000,0x00AFAF00,0x00000000 + .word 0x59B05700,0xB5BB5857,0x58AA4E00,0xB958334A,0xB35A0000,0xAA331A59,0xAC4A0000,0xAC59ACAC + .word 0xAA500000,0xB4B4B4B4,0x58000000,0x9CACB4AA,0x59000000,0x59B4ABAB,0x00000000,0x4AB4B057 + .word 0x5759BDB6,0x0000B2AC,0x4A3358BB,0x00009D9D,0x591A33AB,0x0000AAB4,0xB5AF59AC,0x00009D9D + .word 0xBDB6B5B4,0x000000BD,0xBDBDB59B,0x00000059,0x5BB6B458,0x00000000,0x9CB6B357,0x00000000 + .word 0x00000000,0x00AF0000,0x00000000,0xAFAF0000,0x00000000,0xBE000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x00000000,0xBDBA9D00,0x00000000,0xB9B8A200,0x000000AF,0xB9A31400,0x0050BCAF,0xBD000000 + .word 0x9DAABE00,0x9CBB9DAA,0xB0BE0000,0xBD9CBD9F,0xB7BE0000,0x5D000333,0xBC000000,0xB2BBACBF + .word 0x0000AFBE,0xAF000000,0x000000BE,0xAF000000,0x000000AC,0xAFAF0000,0x00000000,0xAF50AF00 + .word 0x00009DAC,0x00AFBBAF,0xB9B69DAC,0x0000BBAF,0xABBE0A33,0x00000059,0xB900BEBF,0x0000009D + .word 0x000050BB,0x00000000,0x000050BB,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0xB3B9B559,0x00000000,0x4A4AAA57,0x00000000,0x6993675B,0x00000000,0x895E5E4E + .word 0x00000000,0x89605B00,0x00000000,0x5E600400,0x00000000,0x5E5F0400,0x00000000,0x37670400 + + .word 0x9CB9BFB6,0x00000000,0xAAAC4E4E,0x00000000,0x50928969,0x00000000,0x58929290,0x00000000 + .word 0x005B9267,0x00000000,0x00048B69,0x00000000,0x00048869,0x00000000,0x0004695F,0x00000000 + .word 0xBF000000,0xBEBD1A9D,0xB0000000,0x9C00BFBF,0x00000000,0xBDBE1A9D,0x00000000,0x9C00BEBD + .word 0x00000000,0xBFB94400,0x00000000,0x9C00BE00,0x00000000,0x4BB9BA00,0x00000000,0xBFB40000 + .word 0x00B90ABD,0x000000B9,0xACBD3300,0x00000000,0x3333BDBD,0x00000000,0xACACBD00,0x00000000 + .word 0x004B0BBE,0x00000000,0x00BE0000,0x00000000,0x004E33B9,0x00000000,0x0000BEBF,0x00000000 + .word 0x00000000,0x37670400,0x00000000,0x5E670400,0x00000000,0x5E280400,0x00000000,0x5F670400 + .word 0x00000000,0x5E880400,0x00000000,0x5E8B0400,0x00000000,0x5E880400,0x00000000,0x5E670000 + + .word 0x0004675F,0x00000000,0x0004675E,0x00000000,0x0004695E,0x00000000,0x00048B69,0x00000000 + .word 0x00048B5E,0x00000000,0x00005F5E,0x00000000,0x00002869,0x00000000,0x00002888,0x00000000 + .word 0x0A000000,0xACB9B7A3,0x1E000000,0xBBACBFBE,0xBB000000,0xB9030BBF,0xBE000000,0xB403BDB9 + .word 0x00000000,0x0ABFACBB,0x00000000,0xACBEBFBB,0x00000000,0x58BFB000,0x00000000,0x00BCB09C + .word 0xAF14AC00,0x0000001E,0xBDB4ACBE,0x000000B9,0xBD0A0BBE,0x0000009D,0xB7BF00BF,0x000000B4 + .word 0xB6BDB60B,0x00000000,0xBFBE58AC,0x00000500,0xBE00ABAB,0x000000BF,0x00000000,0x0000B9AF + .word 0x00000000,0x5E5F0000,0x00000000,0x5E5E0400,0x00000000,0x5E5F0400,0x00000000,0x5F670400 + .word 0x00000000,0x88690400,0x00000000,0x898B0400,0x00000000,0x5E880400,0x00000000,0x6C280000 + + .word 0x0000288A,0x00000000,0x00002867,0x00000000,0x0004885E,0x00000000,0x0004885F,0x00000000 + .word 0x00046967,0x00000000,0x00046767,0x00000000,0x00046767,0x00000000,0x00045F89,0x00000000 + .word 0x00000000,0x000CBBAB,0x00000000,0x000CBEB6,0x00000000,0x0000BFB9,0x00000000,0x0000BFBB + .word 0x00000000,0x0000BBBC,0x0A000000,0x000000BB,0x0B000000,0x000000BF,0x1A000000,0x0000BBB9 + .word 0x00000000,0x0019BBAF,0x00000000,0x1ABDAF00,0x00000000,0xBFAF0000,0x00000000,0xAF000000 + .word 0x00000000,0x1A000000,0x00000000,0xB0000000,0x00000000,0xAA000000,0x00000000,0xBF9D0000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x0000000A,0x00000000,0x000000B9,0x00000000 + .word 0x0000B6AA,0x00000000,0x000000B9,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x00000000,0x5E280000,0x00000000,0x5F280000,0x00000000,0x5E8B0400,0x00000000,0x5E920400 + .word 0x00000000,0x5E8B0400,0x00000000,0x69910400,0x00000000,0x5F8A0400,0x00000000,0x5E900400 + .word 0x00045F89,0x00000000,0x00046967,0x00000000,0x00008868,0x00000000,0x00000F6C,0x00000000 + .word 0x00001369,0x00000000,0x00002888,0x00000000,0x00002888,0x00000000,0x00046789,0x00000000 + .word 0x00000000,0x0000BBB9,0x00000000,0x00BBAF00,0x00000000,0x00BF0000,0x00000000,0xAFAF0000 + .word 0x00000000,0xBEAF0000,0x00000000,0xBE000000,0x00000000,0xAF000000,0x00000000,0x00000000 + .word 0x00000000,0xBBAF0000,0x00000000,0x00BF9C00,0x00000000,0x00BBB000,0x00000000,0x0000BE9B + .word 0x00000000,0x0000AFAA,0x00000000,0x0000AFBB,0x000000BB,0x0000009D,0xBB0000BF,0x00AABBBB + + .word 0x00000000,0x5E880400,0x00000000,0x5E690400,0x00000000,0x5E690400,0x00000000,0x5F690400 + .word 0x00000000,0x5E880400,0x00000000,0x5F880400,0x00000000,0x5E690400,0x00000000,0x5E880000 + .word 0x00045F69,0x00000000,0x00048B69,0x00000000,0x00048B67,0x00000000,0x00048867,0x00000000 + .word 0x00046767,0x00000000,0x00045F5E,0x00000000,0x00045F5E,0x00000000,0x0000676C,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x9C000000 + .word 0x00000000,0xBB9C0000,0x00000000,0x00B60000,0x00000000,0x009C0000,0x00000000,0x00000000 + .word 0x0000B9BB,0xBBBEAF00,0x0000AF00,0x00000000,0x0000BBAA,0x0A000000,0x000000BE,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x00000000,0x00000000,0x000000BB,0x00000000,0x000000AF,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + +@}}BLOCK(Multilayer) diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/RotBackgrounds.s b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/RotBackgrounds.s new file mode 100644 index 0000000000..98c140a2d2 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/RotBackgrounds.s @@ -0,0 +1,1921 @@ + +@{{BLOCK(Layer128x128r) + +@======================================================================= +@ +@ Layer128x128r, 128x128@8, +@ + affine map, not compressed, 16x16 +@ External tile file: (null). +@ Total size: 256 = 256 +@ +@ Time-stamp: 2008-12-03, 18:15:41 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com/projects/#grit ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer128x128rMap @ 256 unsigned chars +Layer128x128rMap: + .byte 0x01,0x02,0x03,0x04,0x01,0x02,0x01,0x02,0x03,0x04,0x01,0x02,0x01,0x02,0x03,0x04 + .byte 0x04,0x01,0x02,0x05,0x06,0x07,0x06,0x07,0x08,0x05,0x06,0x07,0x06,0x07,0x08,0x05 + .byte 0x05,0x06,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x01,0x02 + .byte 0x04,0x01,0x0D,0x0E,0x0F,0x10,0x11,0x12,0x0F,0x10,0x11,0x12,0x0E,0x13,0x06,0x07 + .byte 0x05,0x06,0x14,0x15,0x16,0x17,0x18,0x19,0x16,0x17,0x18,0x19,0x15,0x1A,0x01,0x02 + .byte 0x04,0x01,0x1B,0x1C,0x1D,0x1E,0x1F,0x20,0x1D,0x1E,0x1F,0x20,0x1C,0x21,0x06,0x07 + .byte 0x05,0x06,0x09,0x0A,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x0A,0x0B,0x01,0x02 + .byte 0x04,0x01,0x0D,0x0E,0x0F,0x10,0x2A,0x2B,0x2C,0x2D,0x11,0x12,0x0E,0x13,0x06,0x07 + + .byte 0x05,0x06,0x14,0x15,0x16,0x17,0x2E,0x2F,0x30,0x31,0x18,0x19,0x15,0x1A,0x01,0x02 + .byte 0x04,0x01,0x1B,0x1C,0x0F,0x10,0x32,0x33,0x24,0x25,0x26,0x27,0x1C,0x21,0x06,0x07 + .byte 0x05,0x06,0x09,0x0A,0x16,0x17,0x18,0x19,0x2A,0x2B,0x2C,0x2D,0x0A,0x0B,0x01,0x02 + .byte 0x04,0x01,0x0D,0x0E,0x1D,0x1E,0x1F,0x20,0x2E,0x2F,0x30,0x31,0x0E,0x13,0x06,0x07 + .byte 0x05,0x06,0x14,0x15,0x22,0x23,0x28,0x29,0x32,0x33,0x34,0x35,0x15,0x1A,0x01,0x02 + .byte 0x04,0x01,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x06,0x07 + .byte 0x05,0x06,0x07,0x04,0x01,0x02,0x01,0x02,0x03,0x04,0x01,0x02,0x01,0x02,0x01,0x02 + .byte 0x06,0x07,0x08,0x05,0x06,0x07,0x06,0x07,0x08,0x05,0x06,0x07,0x06,0x07,0x06,0x07 + +@}}BLOCK(Layer128x128r) + +@{{BLOCK(Layer256x256r) + +@======================================================================= +@ +@ Layer256x256r, 256x256@8, +@ + affine map, not compressed, 32x32 +@ External tile file: (null). +@ Total size: 1024 = 1024 +@ +@ Time-stamp: 2008-12-03, 18:15:41 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com/projects/#grit ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer256x256rMap @ 1024 unsigned chars +Layer256x256rMap: + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x4D,0x4E,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + +@}}BLOCK(Layer256x256r) + +@{{BLOCK(Layer512x512r) + +@======================================================================= +@ +@ Layer512x512r, 512x512@8, +@ + affine map, not compressed, 64x64 +@ External tile file: (null). +@ Total size: 4096 = 4096 +@ +@ Time-stamp: 2008-12-03, 18:15:41 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com/projects/#grit ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer512x512rMap @ 4096 unsigned chars +Layer512x512rMap: + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x4D,0x4E,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x27,0x24,0x25 + .byte 0x26,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B + .byte 0x2C,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x31,0x2E,0x2F + .byte 0x30,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x35,0x32,0x33 + .byte 0x34,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + + .byte 0x5B,0x5C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x27,0x24,0x25,0x26,0x0C,0x09,0x0A,0x0B,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x09,0x0A,0x27,0x24,0x25,0x26,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x62,0x63 + .byte 0x64,0x65,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x2D,0x2A,0x2B,0x2C,0x4F,0x0D,0x0E,0x13,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x0D,0x0E,0x2D,0x2A,0x2B,0x2C,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x6B,0x6C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x31,0x2E,0x2F,0x30,0x54,0x14,0x15,0x1A,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x14,0x15,0x31,0x2E,0x2F,0x30,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x35,0x32,0x33,0x34,0x0C,0x09,0x0A,0x0B,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x09,0x0A,0x35,0x32,0x33,0x34,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x27,0x24,0x25,0x26,0x0D,0x0E + .byte 0x13,0x4F,0x27,0x24,0x25,0x26,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B,0x2C,0x14,0x15 + .byte 0x1A,0x54,0x2D,0x2A,0x2B,0x2C,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x31,0x2E,0x2F,0x30,0x1B,0x1C + .byte 0x21,0x36,0x31,0x2E,0x2F,0x30,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x35,0x32,0x33,0x34,0x09,0x0A + .byte 0x0B,0x0C,0x35,0x32,0x33,0x34,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + +@}}BLOCK(Layer512x512r) + +@{{BLOCK(Layer1024x1024r) + +@======================================================================= +@ +@ Layer1024x1024r, 1024x1024@8, +@ + affine map, not compressed, 128x128 +@ External tile file: (null). +@ Total size: 16384 = 16384 +@ +@ Time-stamp: 2008-12-03, 18:15:42 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com/projects/#grit ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer1024x1024rMap @ 16384 unsigned chars +Layer1024x1024rMap: + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + + .byte 0x4D,0x4E,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + .byte 0x4D,0x4E,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x27,0x24,0x25 + .byte 0x26,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x27,0x24,0x25 + .byte 0x26,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B + .byte 0x2C,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B + .byte 0x2C,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x31,0x2E,0x2F + .byte 0x30,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x31,0x2E,0x2F + .byte 0x30,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x35,0x32,0x33 + .byte 0x34,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x35,0x32,0x33 + .byte 0x34,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + + .byte 0x5B,0x5C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x27,0x24,0x25,0x26,0x0C,0x09,0x0A,0x0B,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x09,0x0A,0x27,0x24,0x25,0x26,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x62,0x63 + .byte 0x5B,0x5C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x27,0x24,0x25,0x26,0x0C,0x09,0x0A,0x0B,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x09,0x0A,0x27,0x24,0x25,0x26,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x62,0x63 + + .byte 0x64,0x65,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x2D,0x2A,0x2B,0x2C,0x4F,0x0D,0x0E,0x13,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x0D,0x0E,0x2D,0x2A,0x2B,0x2C,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x6B,0x6C + .byte 0x64,0x65,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x2D,0x2A,0x2B,0x2C,0x4F,0x0D,0x0E,0x13,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x0D,0x0E,0x2D,0x2A,0x2B,0x2C,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x6B,0x6C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x31,0x2E,0x2F,0x30,0x54,0x14,0x15,0x1A,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x14,0x15,0x31,0x2E,0x2F,0x30,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x31,0x2E,0x2F,0x30,0x54,0x14,0x15,0x1A,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x14,0x15,0x31,0x2E,0x2F,0x30,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x35,0x32,0x33,0x34,0x0C,0x09,0x0A,0x0B,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x09,0x0A,0x35,0x32,0x33,0x34,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x35,0x32,0x33,0x34,0x0C,0x09,0x0A,0x0B,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x09,0x0A,0x35,0x32,0x33,0x34,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x27,0x24,0x25,0x26,0x0D,0x0E + .byte 0x13,0x4F,0x27,0x24,0x25,0x26,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x27,0x24,0x25,0x26,0x0D,0x0E + .byte 0x13,0x4F,0x27,0x24,0x25,0x26,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B,0x2C,0x14,0x15 + .byte 0x1A,0x54,0x2D,0x2A,0x2B,0x2C,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B,0x2C,0x14,0x15 + .byte 0x1A,0x54,0x2D,0x2A,0x2B,0x2C,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x31,0x2E,0x2F,0x30,0x1B,0x1C + .byte 0x21,0x36,0x31,0x2E,0x2F,0x30,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x31,0x2E,0x2F,0x30,0x1B,0x1C + .byte 0x21,0x36,0x31,0x2E,0x2F,0x30,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x35,0x32,0x33,0x34,0x09,0x0A + .byte 0x0B,0x0C,0x35,0x32,0x33,0x34,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x35,0x32,0x33,0x34,0x09,0x0A + .byte 0x0B,0x0C,0x35,0x32,0x33,0x34,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + .byte 0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C + .byte 0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3C,0x3D,0x39,0x3A,0x3B,0x3E,0x3F + + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + .byte 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45 + .byte 0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x45,0x46,0x42,0x43,0x44,0x47,0x48 + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + + .byte 0x4D,0x4E,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + .byte 0x4D,0x4E,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x27,0x24,0x25 + .byte 0x26,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x27,0x24,0x25 + .byte 0x26,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B + .byte 0x2C,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B + .byte 0x2C,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x31,0x2E,0x2F + .byte 0x30,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x31,0x2E,0x2F + .byte 0x30,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x35,0x32,0x33 + .byte 0x34,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x35,0x32,0x33 + .byte 0x34,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + + .byte 0x5B,0x5C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x27,0x24,0x25,0x26,0x0C,0x09,0x0A,0x0B,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x09,0x0A,0x27,0x24,0x25,0x26,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x62,0x63 + .byte 0x5B,0x5C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x27,0x24,0x25,0x26,0x0C,0x09,0x0A,0x0B,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x09,0x0A,0x27,0x24,0x25,0x26,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x62,0x63 + + .byte 0x64,0x65,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x2D,0x2A,0x2B,0x2C,0x4F,0x0D,0x0E,0x13,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x0D,0x0E,0x2D,0x2A,0x2B,0x2C,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x6B,0x6C + .byte 0x64,0x65,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x2D,0x2A,0x2B,0x2C,0x4F,0x0D,0x0E,0x13,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x0D,0x0E,0x2D,0x2A,0x2B,0x2C,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x6B,0x6C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x31,0x2E,0x2F,0x30,0x54,0x14,0x15,0x1A,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x14,0x15,0x31,0x2E,0x2F,0x30,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x31,0x2E,0x2F,0x30,0x54,0x14,0x15,0x1A,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x14,0x15,0x31,0x2E,0x2F,0x30,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x35,0x32,0x33,0x34,0x0C,0x09,0x0A,0x0B,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x09,0x0A,0x35,0x32,0x33,0x34,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x35,0x32,0x33,0x34,0x0C,0x09,0x0A,0x0B,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x09,0x0A,0x35,0x32,0x33,0x34,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x27,0x24,0x25,0x26,0x0D,0x0E + .byte 0x13,0x4F,0x27,0x24,0x25,0x26,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x27,0x24,0x25,0x26,0x0D,0x0E + .byte 0x13,0x4F,0x27,0x24,0x25,0x26,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x50,0x51 + + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B,0x2C,0x14,0x15 + .byte 0x1A,0x54,0x2D,0x2A,0x2B,0x2C,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + .byte 0x52,0x53,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x2D,0x2A,0x2B,0x2C,0x14,0x15 + .byte 0x1A,0x54,0x2D,0x2A,0x2B,0x2C,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x55,0x56 + + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x31,0x2E,0x2F,0x30,0x1B,0x1C + .byte 0x21,0x36,0x31,0x2E,0x2F,0x30,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + .byte 0x57,0x58,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x4F,0x0D,0x0E,0x13,0x31,0x2E,0x2F,0x30,0x1B,0x1C + .byte 0x21,0x36,0x31,0x2E,0x2F,0x30,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x59,0x5A + + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x35,0x32,0x33,0x34,0x09,0x0A + .byte 0x0B,0x0C,0x35,0x32,0x33,0x34,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + .byte 0x49,0x4A,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x54,0x14,0x15,0x1A,0x35,0x32,0x33,0x34,0x09,0x0A + .byte 0x0B,0x0C,0x35,0x32,0x33,0x34,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x4B,0x4C + + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + .byte 0x37,0x38,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x1C,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x3E,0x3F + + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + .byte 0x40,0x41,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0A,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x47,0x48 + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x0E,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + .byte 0x4D,0x4E,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x15,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x50,0x51 + + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + .byte 0x52,0x53,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x55,0x56 + + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + .byte 0x57,0x58,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x59,0x5A + + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + .byte 0x49,0x4A,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x4B,0x4C + + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + .byte 0x37,0x38,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x3E,0x3F + + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + .byte 0x40,0x41,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x47,0x48 + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + .byte 0x4D,0x4E,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x50,0x51 + + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + .byte 0x52,0x53,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x55,0x56 + + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + .byte 0x57,0x58,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x2E,0x2F,0x30,0x31,0x2E,0x2F + .byte 0x30,0x31,0x2E,0x2F,0x30,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x59,0x5A + + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + .byte 0x49,0x4A,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x32,0x33,0x34,0x35,0x32,0x33 + .byte 0x34,0x35,0x32,0x33,0x34,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x4B,0x4C + + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + .byte 0x37,0x38,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x24,0x25,0x26,0x27,0x24,0x25 + .byte 0x26,0x27,0x24,0x25,0x26,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x3E,0x3F + + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + .byte 0x40,0x41,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x2A,0x2B,0x2C,0x2D,0x2A,0x2B + .byte 0x2C,0x2D,0x2A,0x2B,0x2C,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x47,0x48 + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + .byte 0x4D,0x4E,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x50,0x51 + + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + .byte 0x52,0x53,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x55,0x56 + + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + .byte 0x57,0x58,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x0C,0x09,0x0A,0x0B,0x0C,0x0C,0x09,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A + .byte 0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x09,0x0A,0x0B,0x0C,0x59,0x5A + + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + .byte 0x49,0x4A,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x4F,0x0D,0x0E,0x13,0x4F,0x4F,0x0D,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E + .byte 0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x0D,0x0E,0x13,0x4F,0x4B,0x4C + + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + .byte 0x37,0x38,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x54,0x14,0x15,0x1A,0x54,0x54,0x14,0x54,0x14,0x15,0x1A,0x54,0x14,0x15 + .byte 0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x14,0x15,0x1A,0x54,0x3E,0x3F + + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + .byte 0x40,0x41,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x36,0x1B,0x1C,0x21,0x36,0x36,0x1B,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C + .byte 0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x1B,0x1C,0x21,0x36,0x47,0x48 + + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + .byte 0x5B,0x5C,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60 + .byte 0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x60,0x61,0x5D,0x5E,0x5F,0x62,0x63 + + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + .byte 0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69 + .byte 0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x69,0x6A,0x66,0x67,0x68,0x6B,0x6C + +@}}BLOCK(Layer1024x1024r) + +@{{BLOCK(RotBackgrounds) + +@======================================================================= +@ +@ RotBackgrounds, 8x872@8, +@ + palette 256 entries, not compressed +@ + 109 tiles not compressed +@ Total size: 512 + 6976 = 7488 +@ +@ Time-stamp: 2008-12-03, 18:15:42 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com/projects/#grit ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global RotBackgroundsTiles @ 6976 unsigned chars +RotBackgroundsTiles: + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x31312128,0x31313131,0x31313121,0x55553131,0x31313131,0x607C7C56,0x565E315F,0x657F7C60 + .word 0x607C8359,0x687D6060,0x84868813,0x84848486,0x87130F0D,0x8A878A8A,0x08080806,0x328B8A87 + .word 0x26313131,0x8B873A26,0x11313131,0x87732912,0x1134555E,0x0200080D,0x1134575F,0x22270622 + .word 0x0E326A61,0x31312711,0x0E228A87,0x31312712,0x0D11278A,0x31313122,0x0D312227,0x55313127 + .word 0x8B878785,0x0E0E2186,0x2C6F876B,0x31310003,0x0F292908,0x55310E02,0x34000022,0x60565532 + .word 0x12071127,0x7F817D60,0x08283231,0x7F868811,0x27305731,0x8388230D,0x30575757,0x6D322213 + + .word 0x31313131,0x07332231,0x31555531,0x06113131,0x55567D5E,0x270E1257,0x575E7E7E,0x55111157 + .word 0x627F7F7E,0x27112234,0x6582657F,0x00242B3A,0x6487846D,0x040F2B34,0x8786868B,0x0E0E0D87 + .word 0x8B8B7007,0x32310E13,0x0804000E,0x31553112,0x04070707,0x62633112,0x28080807,0x605E638C + .word 0x280F0F13,0x60658B6F,0x23133234,0x8A8A8729,0x0F242931,0x8932080D,0x32242431,0x0804070F + .word 0x0D272731,0x052C3E33,0x567D6055,0x02132930,0x655E5E5E,0x12272731,0x60606060,0x1111116E + .word 0x8A87847F,0x59313187,0x6A8A8787,0x326F593E,0x13247087,0x220D0F0F,0x0F0D1513,0x5527120F + .word 0x24230208,0x7C5E3115,0x6A592308,0x7C7D7C5E,0x8A6A0807,0x7F7F8183,0x83130807,0x81848888 + .word 0x2C080804,0x88866A3E,0x0D0D130F,0x6F2C140F,0x08315531,0x2C13080D,0x5E565555,0x13080808 + + .word 0x57635F5F,0x0D24345A,0x657F7C7C,0x13343462,0x847E7C7F,0x0F878883,0x83837F7F,0x27848A86 + .word 0x86868383,0x0E348787,0x32598A8A,0x320F232C,0x13312823,0x110D0F13,0x26282313,0x31313126 + .word 0x1E181819,0x1B431819,0x424A4947,0x1D470B17,0x4F4A4A43,0x191E1717,0x1F49441E,0x0A0C1B0A + .word 0x1E434344,0x170C0C0A,0x090A1719,0x0C19440A,0x191E0B09,0x0A171F1F,0x4449201B,0x0C0B2043 + .word 0x1E474317,0x1F0A181D,0x090A1819,0x200B0C18,0x19201E0C,0x190A171E,0x44431918,0x0A044350 + .word 0x1E1D1D1D,0x424A544A,0x191D2020,0x51431F1E,0x1D1E1D19,0x201E1E1E,0x44190C20,0x201D1E1E + .word 0x1B484744,0x0C184F47,0x0C424444,0x19191D1B,0x1E171818,0x170A191F,0x201E180B,0x190A171D + .word 0x0C0C040B,0x180A0C17,0x190B4754,0x1E0B1B0A,0x191F4A44,0x0C1B1B0A,0x1B474743,0x191B0A0B + + .word 0x2018190A,0x491F0B18,0x2020200C,0x4919171D,0x19494744,0x17180B0C,0x0B44471D,0x420B171B + .word 0x0C491F0B,0x1E184319,0x1B0A190B,0x174A4444,0x470B0C18,0x1B474753,0x44170B0C,0x43494A4A + .word 0x44191944,0x0A0B1B43,0x20191844,0x1A1F0B0C,0x1E170A1E,0x49441709,0x1F190B0C,0x0A0A190A + .word 0x0B0C434F,0x19201F1B,0x1B195154,0x44535444,0x0B0C1B44,0x4953491F,0x0A014851,0x49201E19 + .word 0x1F1D4343,0x1D1D1F1F,0x1E1D190B,0x1F201E19,0x1F0B0A17,0x201F1F1E,0x0A0C1B0A,0x1F1E1E18 + .word 0x09181F1E,0x1E1F1E18,0x0B194944,0x47201D1D,0x0B190C1F,0x441F1E1F,0x0B190A1A,0x20191E1D + .word 0x6E632B15,0x492D0C72,0x89643518,0x4A53474A,0x45581C1D,0x44514744,0x2030382E,0x1B484444 + .word 0x2D6A2E3C,0x371A1A18,0x24344350,0x5C645C3A,0x454F5344,0x255B6538,0x51431D19,0x192B6478 + + .word 0x162E474A,0x44441D17,0x42171E46,0x4349441E,0x0C184947,0x2043440A,0x19371D1B,0x201F2018 + .word 0x172A3737,0x19494443,0x2E5A2E37,0x1644471D,0x65620C17,0x35481F2B,0x5D2B1B0A,0x2D2A2E38 + .word 0x1D1E1D1F,0x4A42402E,0x1F431D1E,0x49466C2E,0x203C2518,0x20443D19,0x4937351B,0x42464647 + .word 0x171C380C,0x4F4A4943,0x422B1A1C,0x4249441E,0x3C1A431C,0x64454344,0x5B4C4444,0x6183685C + .word 0x301D4449,0x1919443B,0x171F4420,0x1F1F1F0A,0x1B432E37,0x1E47431A,0x1B465868,0x3030353A + .word 0x19373938,0x3D443C25,0x25385D30,0x47491B35,0x2E16255A,0x1F20441E,0x5A37432A,0x1B204A1F + .word 0x18194420,0x0A18441F,0x4420201F,0x20544A49,0x1D1F1F20,0x0A1D1F1D,0x19191D1F,0x0C0B4419 + .word 0x0A171E1D,0x0C090C17,0x17201F1F,0x1F20180B,0x181F1F20,0x514A1E0B,0x18191D46,0x4A190A0A + + .word 0x0A195347,0x1E18170B,0x0A4A491F,0x0B474919,0x0C4A1904,0x4747430A,0x1B0C0B1B,0x431D190A + .word 0x4A0A1B1B,0x0C0A1718,0x190A1844,0x170B0A0B,0x180A4453,0x19190C17,0x0B1B4420,0x53491F1F + .word 0x0A174453,0x0B0B1817,0x171B4A20,0x1B491E0A,0x1F0A1B0C,0x534A1749,0x1F0B0A44,0x420A488E + .word 0x0A0A0A0B,0x4953541E,0x0A0C0C09,0x1F170A04,0x1949440B,0x18170A0B,0x53514446,0x1B090B47 + .word 0x201E1B19,0x1C5D7A46,0x2D424320,0x5C754D3C,0x431F1F43,0x6C3D451E,0x46444420,0x87451E1F + .word 0x191E4444,0x89452D1B,0x1E1F4719,0x451D2D2D,0x1F444418,0x0A173C1B,0x4A491F2D,0x17442047 + .word 0x161B1B0A,0x475B5A39,0x1C1B0A0C,0x6C6C105B,0x1018441F,0x6C6C3F45,0x20544A4E,0x2D6A874D + .word 0x161D3C70,0x44206F87,0x6A17677B,0x37464687,0x6A0A6E35,0x2D431E4B,0x4018620B,0x0C171E45 + + .word 0x2D474753,0x1C5D827F,0x43494A48,0x4449421C,0x1E494640,0x44191944,0x2D1B433D,0x20191845 + .word 0x30383C1D,0x1E170A37,0x5D653025,0x3D190B17,0x5C572D3C,0x6F0C434F,0x3B251B1F,0x6E195154 + .word 0x571A1F3C,0x19474919,0x350B2020,0x1D4A4645,0x30161B43,0x1F444744,0x375D3017,0x201F1E1E + .word 0x4C4B6334,0x1F0B0A18,0x0A0A648A,0x0A0C1B0A,0x1920426E,0x09181F1E,0x4453544B,0x0B2E724B + .word 0x1E171E1E,0x17090C43,0x0B0B170A,0x090A090C,0x190B0419,0x44201F17,0x170B191E,0x0C170B0A + .word 0x44444A47,0x51444347,0x1E1E4444,0x49434420,0x0A090A0B,0x0C170B0A,0x1B1F4446,0x0A0B0A0C + .word 0x0C1B191F,0x441E2017,0x431B200C,0x201D1E44,0x171B4747,0x1E1D4351,0x1E0B2044,0x1F171747 + .word 0x1E0B1E43,0x0A0B0B0B,0x19171920,0x0C0B4720,0x4A20170C,0x0A1D4449,0x4947180C,0x171F4443 + + .word 0x431D1E44,0x0A1F5151,0x1D1E2047,0x5053491F,0x2047494A,0x1F17191F,0x44474749,0x170A4251 + .word 0x1F442020,0x0C1E5420,0x1F201F1D,0x1718431E,0x1919441F,0x440C0C0A,0x1F1F1F0B,0x541B0C17 + .word 0x49201E3B,0x19444744,0x4E191E1E,0x47474A53,0x380C1817,0x44494A46,0x2D483C0A,0x0B1F432E + .word 0x53503548,0x190C091C,0x420A4C79,0x68385D3C,0x49535464,0x82805047,0x1F172A6D,0x1E2D4444 + .word 0x4B44370B,0x0B181F4A,0x4F1E0A0B,0x2039394A,0x17090C44,0x4E7F7249,0x1015090C,0x6263450A + .word 0x4642642E,0x103C1B1E,0x0C176E83,0x171B180C,0x51444569,0x4A4A4344,0x49434420,0x4747474A + .word 0x44171842,0x100C1B44,0x1E1E171D,0x0A014853,0x1A1A1E49,0x0A195347,0x4837162E,0x0A4A491F + .word 0x54466E35,0x0C4A2E15,0x451C6D16,0x1B163037,0x2A2A3845,0x4C30373B,0x5A2A1C47,0x67622E4B + + .word 0x4953491F,0x255C2E1F,0x49201E2B,0x0B190A2E,0x1E181716,0x0A174477,0x0B47482E,0x171B4E5D + .word 0x4747430B,0x1F2A6662,0x431D190A,0x3C385A4B,0x25151A18,0x5A30160B,0x65655A38,0x0A5A1609 + .word 0x53470B09,0x1F1E1B44,0x441B1F43,0x19495453,0x1F47191F,0x0B204744,0x1F1F0917,0x0A0C4420 + .word 0x1F1E0C1D,0x0B090B1E,0x0A0A0B19,0x0A181F1E,0x491B0B44,0x0C17474A,0x4A8F4749,0x420A0B44 + .word 0x18171070,0x0A090A0B,0x1B090B4D,0x1B377146,0x10425151,0x535D5B15,0x7477741F,0x442E645D + .word 0x3C1A2D1F,0x1F47375D,0x170A4251,0x1F1F1539,0x0C1E5420,0x1F1E0C2D,0x5B1A431E,0x2C8A8A88 + .word 0x0C170B0A,0x0C184419,0x35250A0B,0x43101B15,0x371E1B44,0x0B29255A,0x19495453,0x34706D2E + .word 0x0B208744,0x6A706E3D,0x140C6E43,0x180A5B70,0x8758101E,0x201E3984,0x326E1F1E,0x44444C4B + + .word 0x251B1F0C,0x1951543B,0x1718422B,0x0C5C4444,0x1E171D62,0x2848531E,0x1A1E7070,0x3753471A + .word 0x37356F83,0x72491F48,0x46683510,0x4A391554,0x70861617,0x165A3745,0x8638454A,0x5A5C5C6F + .word 0x53544B68,0x6C704B44,0x53491F2A,0x5C2E1F49,0x201E2B0A,0x400A2E49,0x1817160A,0x1744771E + .word 0x47482E0A,0x1B4E5D0B,0x47430B35,0x2A666247,0x1D190A37,0x385A4B43,0x151A1871,0x30160B25 + .word 0x491F3B0B,0x4420474A,0x206F886F,0x44474449,0x19635C0B,0x4772534E,0x6363620A,0x626B7163 + .word 0x64636317,0x5C636363,0x725A5D1F,0x35636274,0x2A4C6E3C,0x62643B3B,0x5354645A,0x80504749 + .word 0x18620B17,0x63634540,0x44370B19,0x63624A4B,0x372A0B47,0x63394A4F,0x09626464,0x7F724917 + .word 0x15095A39,0x63450A10,0x42642E62,0x3C1B1E46,0x176E8368,0x1B180C0C,0x44456982,0x4A434451 + + .word 0x103C1E18,0x6E2A4653,0x44544A49,0x621B4443,0x491F1F1F,0x2B1B191F,0x430C1E18,0x431B2017 + .word 0x432D2E29,0x171B4720,0x19352519,0x3C0B1F1F,0x192E171F,0x3D161E1E,0x191E1D44,0x1935191E + .word 0x395C6384,0x404C460B,0x52493D81,0x8B794447,0x441E202E,0x87884220,0x1F1D1E44,0x3C877043 + .word 0x1E1D4351,0x20487620,0x426C2E4B,0x44474520,0x3E703525,0x1F441F20,0x6F2B4620,0x1F201F2D + .word 0x2A1C4747,0x622E8862,0x3C1E180C,0x5A5D533E,0x544A4943,0x1B444344,0x1F1F1F0B,0x1B191F49 + .word 0x0C1E1834,0x1B201743,0x2D2E296A,0x63472043,0x35253718,0x62631F19,0x3939371E,0x5D636337 + .word 0x655A3867,0x5A160965,0x5C638468,0x4C460B39,0x493D8163,0x79444752,0x1E203963,0x88422044 + .word 0x1D1E6363,0x8770431F,0x1D5C6363,0x4876201E,0x63636363,0x71415C42,0x685A5C6B,0x446F6359 + + .word 0x172A6D0A,0x2D44441F,0x17107040,0x16171918,0x090B4D8B,0x251A1919,0x42515187,0x351C1610 + .word 0x77741F3C,0x395B5D74,0x1A2D1F20,0x62625D3C,0x0A425144,0x635A3917,0x1E54201F,0x5C623B0C + .word 0x4344201E,0x47474A49,0x171B1E18,0x1844190C,0x252E2E2E,0x101B1535,0x62383837,0x29256363 + .word 0x645D5A5C,0x70613963,0x6268645C,0x706E5C63,0x5A685C62,0x0A5B7032,0x635A5C3B,0x1E398487 + .word 0x5C374320,0x4B5D6363,0x2D1E1F44,0x436F5B5C,0x3B1C1E1F,0x4B875B5C,0x622B1C1D,0x84836363 + .word 0x62631B1E,0x63635D72,0x365B0C19,0x4A494317,0x2B5A1C16,0x6B441E3B,0x1A621C35,0x413D3F3B + .word 0x5B464B4D,0x62835C6D,0x1D444947,0x63628486,0x1F442046,0x63838887,0x76395C5C,0x63638387 + .word 0x70888A83,0x5D63638A,0x8363836B,0x443A6383,0x84836262,0x47453984,0x70388464,0x20443B88 + + .word 0x1A431E1F,0x848A885B,0x632B1563,0x2D0C726E,0x6435183B,0x53474A89,0x581C1D5C,0x51474445 + .word 0x30382E39,0x48444420,0x6A2E3C45,0x1A1A182D,0x34435047,0x645C3A24,0x4F53441F,0x62653845 + .word 0x6E3B5C57,0x444C4B32,0x2E474A49,0x441D1716,0x171E464A,0x49441E42,0x18494744,0x43440A0C + .word 0x371D1B1B,0x1F201819,0x2A373737,0x49444317,0x5A395C5C,0x44471D2E,0x63353562,0x481F2B65 + .word 0x7183872D,0x833A5C5D,0x64648784,0x6465635C,0x64626362,0x72423662,0x49464062,0x1937411E + .word 0x1B433D3B,0x195A412D,0x383C1D41,0x352A3730,0x65302537,0x190B175D,0x572D3C2D,0x0C434F5C + .word 0x37435A61,0x204A6284,0x1A1F3C1C,0x47495C83,0x0B202044,0x4A464184,0x161B4344,0x44474462 + .word 0x5D301720,0x1F1E1E5C,0x4B63341E,0x0B0A1871,0x2A628A3D,0x0C1B0A2A,0x20426E6D,0x181F1E19 + + .word 0x431D191B,0x39647851,0x1E1B1919,0x5D7A4620,0x4243201D,0x754D3C2D,0x1F1F431F,0x3D451E43 + .word 0x44442020,0x451E1F46,0x1E44441F,0x452D1B19,0x1F47190A,0x1D2D2D1E,0x44441809,0x173C1B1F + .word 0x391B0A5C,0x2A2E385D,0x371B0A5B,0x63625B5A,0x1B0A0C63,0x645A621C,0x18441F64,0x6C3F4510 + .word 0x544A4E84,0x6A874D20,0x1D3C7089,0x626D8716,0x17677B45,0x6271876A,0x0A6E350A,0x635C6B6A + .word 0x0B090B0B,0x491F1F1F,0x010B0B17,0x430C1E18,0x0A171918,0x4419190A,0x180A0B19,0x190A0919 + .word 0x201E1919,0x18180C1F,0x44444744,0x1D1F2044,0x44441D17,0x1F201F20,0x434A471D,0x47471D1D + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x01000000 + .word 0x00000000,0x03020200,0x01000000,0x06060603,0x03020000,0x06060603,0x06060100,0x0E0E0606 + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x06060603,0x08060606 + .word 0x06060606,0x06060606,0x08080606,0x05060808,0x0F0D0806,0x0D131313,0x130F0D08,0x0E222813 + .word 0x00000200,0x06060202,0x06000000,0x06060606,0x06090000,0x06060808,0x06060600,0x06060D12 + .word 0x06060506,0x0E132F28,0x0606060D,0x0E0E120E,0x060E1213,0x06060606,0x0D2F2913,0x08060606 + .word 0x00020206,0x00000000,0x08060606,0x00000000,0x08060606,0x06020606,0x060E0606,0x06060606 + .word 0x060E0606,0x06060606,0x08080606,0x06080808,0x28280D06,0x080D0F0F,0x2932130D,0x0D131313 + .word 0x00000000,0x0F0F0600,0x06060602,0x13130606,0x0F131306,0x130D0608,0x29291306,0x06060613 + .word 0x32280606,0x06060F13,0x28260606,0x06060F13,0x260D0606,0x06060D13,0x13060606,0x06080D28 + + .word 0x00000000,0x0F060000,0x00000000,0x130F0000,0x00000000,0x13130600,0x06000000,0x060D0606 + .word 0x0F060600,0x06060608,0x29131302,0x06060F13,0x32291306,0x06060F13,0x28280606,0x06060D13 + .word 0x060E0E0E,0x02020006,0x1226120E,0x0000060E,0x26262612,0x00060612,0x120E1212,0x0606060E + .word 0x06060606,0x0608080D,0x06060606,0x08080806,0x06060606,0x130D130F,0x06060606,0x13131313 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x06060608,0x03060606 + .word 0x06060606,0x06060606,0x08080605,0x06060808,0x1313130D,0x06080D0F,0x1328220E,0x080D0F13 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000001,0x00000000 + .word 0x00020203,0x00000000,0x03060606,0x00000001,0x03060606,0x00000203,0x06060E0E,0x00010606 + + .word 0x06060300,0x06060606,0x06060301,0x06060606,0x08080603,0x06060E0E,0x12080603,0x06061112 + .word 0x120E0702,0x06060E12,0x06060602,0x0506060E,0x06060402,0x06060606,0x00060603,0x06080000 + .word 0x1323230D,0x080D2213,0x2829280F,0x06061128,0x3232240D,0x0E060D28,0x2932140D,0x12110E12 + .word 0x1328130D,0x26120D08,0x080D0D0D,0x21281406,0x11060606,0x26333312,0x210F0806,0x1159592F + .word 0x0D262829,0x130D0606,0x0606060E,0x0D080606,0x06060606,0x06060806,0x0E060806,0x06101012 + .word 0x2626260E,0x2F122626,0x2726276C,0x2F262626,0x8C6A5C70,0x61753234,0x878D8B87,0x8B8C8B8B + .word 0x28323213,0x13281313,0x32343426,0x28282829,0x13261316,0x120D0E0E,0x08060608,0x06060606 + .word 0x1113060E,0x06060612,0x26286A3E,0x28271126,0x2F282886,0x26273131,0x2F261113,0x31262F2F + + .word 0x0E060606,0x06060D28,0x0606060D,0x06061326,0x0506090D,0x09060610,0x06060606,0x09080612 + .word 0x0E060606,0x26282F34,0x10146C36,0x2F2F3422,0x35897B59,0x2F2F1208,0x6B703A2F,0x33260F24 + .word 0x26260606,0x06080D13,0x130D0606,0x06060D28,0x0E060606,0x09061328,0x06060606,0x09060626 + .word 0x05060606,0x26080610,0x0606090D,0x2F282F12,0x0E06060D,0x2F2F3434,0x10060606,0x332F1222 + .word 0x13060606,0x29281313,0x13080606,0x13293228,0x29120606,0x060E322F,0x28060611,0x06060E26 + .word 0x06060E12,0x332C0606,0x06061112,0x706C1306,0x6F080E11,0x875C346D,0x6D866F2D,0x5A313131 + .word 0x13220D08,0x0D232313,0x28110606,0x0F282928,0x280D060E,0x0D243232,0x120E1112,0x0D143229 + .word 0x080D1226,0x0D132813,0x06142821,0x0D0D0D08,0x12333326,0x06060611,0x2F595911,0x06080F21 + + .word 0x06060606,0x00030606,0x06060606,0x01030606,0x0E0E0606,0x03060808,0x12110606,0x03060812 + .word 0x120E0606,0x02070E12,0x0E060605,0x02060606,0x06060606,0x02040606,0x00000806,0x03060600 + .word 0x0613130F,0x06060606,0x060D130F,0x08060606,0x06060606,0x0D0D0F0F,0x13080600,0x28131313 + .word 0x290F0600,0x13262832,0x29130600,0x060D2628,0x13130600,0x06060606,0x06060200,0x06060606 + .word 0x09090606,0x332F2F26,0x08060606,0x262F2F28,0x0606130D,0x0F12342F,0x12102628,0x24082234 + .word 0x0605060E,0x6B35100E,0x06060606,0x70891406,0x06090606,0x3A7B6C06,0x060D0D06,0x2F593606 + .word 0x262F2F33,0x06060909,0x282F2F26,0x06060608,0x2F34120F,0x0D130606,0x34220824,0x28261012 + .word 0x0E10356B,0x0E060506,0x06148970,0x06060606,0x066C7B3A,0x06060906,0x0636592F,0x060D0D06 + + .word 0x06060606,0x0F131306,0x06060608,0x0F130D06,0x0F0F0D0D,0x06060606,0x13131328,0x00060813 + .word 0x32282613,0x00060F29,0x28260D06,0x00061329,0x06060606,0x00061313,0x06060606,0x00020606 + .word 0x06060000,0x0D080606,0x06020000,0x130D0806,0x06060000,0x130F0806,0x06060000,0x130F0806 + .word 0x06080800,0x29280806,0x0E060602,0x3228080E,0x06060602,0x130D0606,0x06060606,0x0D060606 + .word 0x06122813,0x31262806,0x060D2828,0x26272706,0x060E2813,0x2F311106,0x060E2913,0x2F312612 + .word 0x08133228,0x2F2F2611,0x06263432,0x26282813,0x06133432,0x11286A06,0x08162613,0x13863E0E + .word 0x190A1843,0x1E494444,0x190B0A20,0x1E1D201E,0x44200C09,0x090C1F1D,0x1E444418,0x1D090A0A + .word 0x1B201E20,0x1D091B1E,0x0C171E43,0x1F0A1B1F,0x0B181F50,0x44171842,0x20181849,0x1E1E171E + + .word 0x06282631,0x13281206,0x06272726,0x28280D06,0x0611312F,0x13280E06,0x1226312F,0x13290E06 + .word 0x11262F2F,0x28321308,0x13282826,0x32342606,0x066A2811,0x32341306,0x0E3E8613,0x13261608 + .word 0x0606080D,0x00000606,0x06080D13,0x00000206,0x06080F13,0x00000606,0x06080F13,0x00000606 + .word 0x06082829,0x00080806,0x0E082832,0x0206060E,0x06060D13,0x02060606,0x0606060D,0x06060606 + .word 0x06060606,0x08060E0E,0x06060606,0x06060E13,0x0D080602,0x0606122F,0x12080602,0x06060E28 + .word 0x06060600,0x0D060606,0x06090000,0x2F0E0606,0x06000002,0x29120605,0x00000000,0x13130D06 + .word 0x06060D13,0x8B612F2F,0x1006080D,0x8C752612,0x10080606,0x8B322626,0x12060606,0x8B342626 + .word 0x0E06060D,0x878C2726,0x06060626,0x8D6A2626,0x08060628,0x8B5C2726,0x06060E29,0x87706C0E + + .word 0x500B4849,0x18171E49,0x0B0A440A,0x491E0A19,0x0A1E1B1E,0x54441E0B,0x171B180C,0x430C0A0A + .word 0x4A4A4344,0x0A0A0B43,0x4747474A,0x0A041847,0x0C184419,0x0A1F1E18,0x430A190B,0x44544A4A + .word 0x2F2F618B,0x130D0606,0x1226758C,0x0D080610,0x2626328B,0x06060810,0x2626348B,0x06060612 + .word 0x26278C87,0x0D06060E,0x26266A8D,0x26060606,0x26275C8B,0x28060608,0x0E6C7087,0x290E0606 + .word 0x0E0E0608,0x06060606,0x130E0606,0x06060606,0x2F120606,0x0206080D,0x280E0606,0x02060812 + .word 0x0606060D,0x00060606,0x06060E2F,0x00000906,0x05061229,0x02000006,0x060D1313,0x00000000 + .word 0x06000002,0x13130806,0x06060002,0x130D0808,0x06060600,0x13130808,0x0E120E06,0x130F060D + .word 0x12261206,0x06060606,0x0E26260E,0x06060606,0x1226120E,0x06060606,0x12120E0E,0x06060606 + + .word 0x06061329,0x5A877033,0x060E2928,0x315C6C2C,0x0E323213,0x31341306,0x262F2813,0x316D0606 + .word 0x28291313,0x6D6F0606,0x06120806,0x86080606,0x06060606,0x6F0E110E,0x11060606,0x2D111212 + .word 0x3370875A,0x29130606,0x2C6C5C31,0x28290E06,0x06133431,0x1332320E,0x06066D31,0x13282F26 + .word 0x06066F6D,0x13132928,0x06060886,0x06081206,0x0E110E6F,0x06060606,0x1212112D,0x06060611 + .word 0x06081313,0x02000006,0x08080D13,0x02000606,0x08081313,0x00060606,0x0D060F13,0x060E120E + .word 0x06060606,0x06122612,0x06060606,0x0E26260E,0x06060606,0x0E122612,0x06060606,0x0E0E1212 + .word 0x00060603,0x06080000,0x06060402,0x06060606,0x06060602,0x0506060E,0x120E0702,0x06060E12 + .word 0x12080603,0x06061112,0x08080603,0x06060E0E,0x06060301,0x06060606,0x06060300,0x06060606 + + .word 0x210F0806,0x1159592F,0x11060606,0x26333312,0x080D0D0D,0x21281406,0x1328130D,0x26120D08 + .word 0x2932140D,0x12110E12,0x3232240D,0x0E060D28,0x2829280F,0x06061128,0x1323230D,0x080D2213 + .word 0x878D8B87,0x8B8C8B8B,0x8C6A5C70,0x61753234,0x2726276C,0x2F262626,0x2626260E,0x2F122626 + .word 0x0E060806,0x06101012,0x06060606,0x06060806,0x0606060E,0x0D080606,0x0D262829,0x130D0606 + .word 0x2F261113,0x31262F2F,0x2F282886,0x26273131,0x26286A3E,0x28271126,0x1113060E,0x06060612 + .word 0x08060608,0x06060606,0x13261316,0x120D0E0E,0x32343426,0x28282829,0x28323213,0x13281313 + .word 0x6B703A2F,0x33260F24,0x35897B59,0x2F2F1208,0x10146C36,0x2F2F3422,0x0E060606,0x26282F34 + .word 0x06060606,0x09080612,0x0506090D,0x09060610,0x0606060D,0x06061326,0x0E060606,0x06060D28 + + .word 0x10060606,0x332F1222,0x0E06060D,0x2F2F3434,0x0606090D,0x2F282F12,0x05060606,0x26080610 + .word 0x06060606,0x09060626,0x0E060606,0x09061328,0x130D0606,0x06060D28,0x26260606,0x06080D13 + .word 0x6D866F2D,0x5A313131,0x6F080E11,0x875C346D,0x06061112,0x706C1306,0x06060E12,0x332C0606 + .word 0x28060611,0x06060E26,0x29120606,0x060E322F,0x13080606,0x13293228,0x13060606,0x29281313 + .word 0x2F595911,0x06080F21,0x12333326,0x06060611,0x06142821,0x0D0D0D08,0x080D1226,0x0D132813 + .word 0x120E1112,0x0D143229,0x280D060E,0x0D243232,0x28110606,0x0F282928,0x13220D08,0x0D232313 + .word 0x00000806,0x03060600,0x06060606,0x02040606,0x0E060605,0x02060606,0x120E0606,0x02070E12 + .word 0x12110606,0x03060812,0x0E0E0606,0x03060808,0x06060606,0x01030606,0x06060606,0x00030606 + + .word 0x06060100,0x0E0E0606,0x03020000,0x06060603,0x01000000,0x06060603,0x00000000,0x03020200 + .word 0x00000000,0x01000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x130F0D08,0x0E222813,0x0F0D0806,0x0D131313,0x08080606,0x05060808,0x06060606,0x06060606 + .word 0x06060603,0x08060606,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x0D2F2913,0x08060606,0x060E1213,0x06060606,0x0606060D,0x0E0E120E,0x06060506,0x0E132F28 + .word 0x06060600,0x06060D12,0x06090000,0x06060808,0x06000000,0x06060606,0x00000200,0x06060202 + .word 0x2932130D,0x0D131313,0x28280D06,0x080D0F0F,0x08080606,0x06080808,0x060E0606,0x06060606 + .word 0x060E0606,0x06060606,0x08060606,0x06020606,0x08060606,0x00000000,0x00020206,0x00000000 + + .word 0x13060606,0x06080D28,0x260D0606,0x06060D13,0x28260606,0x06060F13,0x32280606,0x06060F13 + .word 0x29291306,0x06060613,0x0F131306,0x130D0608,0x06060602,0x13130606,0x00000000,0x0F0F0600 + .word 0x28280606,0x06060D13,0x32291306,0x06060F13,0x29131302,0x06060F13,0x0F060600,0x06060608 + .word 0x06000000,0x060D0606,0x00000000,0x13130600,0x00000000,0x130F0000,0x00000000,0x0F060000 + .word 0x06060606,0x13131313,0x06060606,0x130D130F,0x06060606,0x08080806,0x06060606,0x0608080D + .word 0x120E1212,0x0606060E,0x26262612,0x00060612,0x1226120E,0x0000060E,0x060E0E0E,0x02020006 + .word 0x1328220E,0x080D0F13,0x1313130D,0x06080D0F,0x08080605,0x06060808,0x06060606,0x06060606 + .word 0x06060608,0x03060606,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x06060E0E,0x00010606,0x03060606,0x00000203,0x03060606,0x00000001,0x00020203,0x00000000 + .word 0x00000001,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .section .rodata + .align 2 + .global RotBackgroundsPal @ 512 unsigned chars +RotBackgroundsPal: + .hword 0x0000,0x0000,0x0000,0x0001,0x0001,0x0002,0x0002,0x0022 + .hword 0x0023,0x0442,0x0C42,0x1063,0x1083,0x0024,0x0005,0x0045 + .hword 0x0C64,0x0006,0x0007,0x0446,0x0467,0x0847,0x1066,0x1484 + .hword 0x14A5,0x1CC5,0x14A6,0x1CC6,0x18C7,0x20E5,0x20E6,0x2507 + .hword 0x2927,0x0008,0x0428,0x0068,0x0869,0x0C69,0x000A,0x042A + .hword 0x044A,0x086A,0x0C6B,0x0C8A,0x04CA,0x1CE8,0x14AA,0x000D + .hword 0x0C6D,0x082E,0x088C,0x04CD,0x08AE,0x10AC,0x14CC,0x18CC + .hword 0x108E,0x14AF,0x14CF,0x18EE,0x20E9,0x1D0B,0x050E,0x190D + + .hword 0x152E,0x190F,0x2108,0x2928,0x2D49,0x252A,0x296A,0x316A + .hword 0x2D8B,0x358B,0x39AB,0x252D,0x316D,0x258E,0x2DAE,0x318C + .hword 0x35AD,0x39EE,0x39EF,0x41EE,0x420F,0x0832,0x0C33,0x0C92 + .hword 0x0CB2,0x08F2,0x1091,0x14B1,0x14D1,0x18D2,0x0C55,0x0C75 + .hword 0x0C56,0x04F5,0x14B4,0x10B5,0x18D4,0x10B6,0x14B6,0x14D6 + .hword 0x10F7,0x20D5,0x0932,0x1932,0x1552,0x0955,0x1536,0x09B6 + .hword 0x11B4,0x2130,0x2550,0x2171,0x2D51,0x2172,0x21B2,0x3192 + .hword 0x35D2,0x31F2,0x2574,0x25B5,0x0C58,0x1058,0x1459,0x10B9 + + .hword 0x14B9,0x10F9,0x14DA,0x093A,0x1139,0x1D19,0x09BA,0x0DBA + .hword 0x09FC,0x2636,0x0A3D,0x167D,0x2A39,0x2A9E,0x4A73,0x4E93 + .hword 0x33EC,0x4FEC,0x67EC,0x7FEC,0x0013,0x1813,0x3013,0x4C13 + .hword 0x6413,0x7C13,0x00D3,0x18D3,0x30D3,0x4CD3,0x64D3,0x7CD3 + .hword 0x0193,0x1993,0x3193,0x4D93,0x6593,0x7D93,0x0273,0x1A73 + .hword 0x3273,0x4E73,0x6673,0x7E73,0x0333,0x1B33,0x3333,0x4F33 + .hword 0x6733,0x7F33,0x03F3,0x1BF3,0x33F3,0x4FF3,0x67F3,0x7FF3 + .hword 0x0019,0x1819,0x3019,0x4C19,0x6419,0x7C19,0x00D9,0x18D9 + + .hword 0x30D9,0x4CD9,0x64D9,0x7CD9,0x0199,0x1999,0x3199,0x4D99 + .hword 0x6599,0x7D99,0x0279,0x1A79,0x3279,0x4E79,0x6679,0x7E79 + .hword 0x0339,0x1B39,0x3339,0x4F39,0x6739,0x7F39,0x03F9,0x1BF9 + .hword 0x33F9,0x4FF9,0x67F9,0x7FF9,0x001F,0x181F,0x301F,0x4C1F + .hword 0x641F,0x7C1F,0x00DF,0x18DF,0x30DF,0x4CDF,0x64DF,0x7CDF + .hword 0x019F,0x199F,0x319F,0x4D9F,0x659F,0x7D9F,0x027F,0x1A7F + .hword 0x327F,0x4E7F,0x667F,0x7E7F,0x033F,0x1B3F,0x333F,0x4F3F + .hword 0x673F,0x7F3F,0x03FF,0x1BFF,0x33FF,0x4FFF,0x67FF,0x7FFF + +@}}BLOCK(RotBackgrounds) diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/TextBackgrounds.s b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/TextBackgrounds.s new file mode 100644 index 0000000000..e38d3f53b8 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/asm/TextBackgrounds.s @@ -0,0 +1,5649 @@ + +@{{BLOCK(Layer128x128) + +@======================================================================= +@ +@ Layer128x128, 128x128@8, +@ + regular map (flat), not compressed, 16x16 +@ Total size: 512 = 512 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer128x128Map @ 512 bytes +Layer128x128Map: + .hword 0x0001,0x0002,0x0003,0x0004,0x0001,0x0002,0x0001,0x0002 + .hword 0x0003,0x0004,0x0001,0x0002,0x0001,0x0002,0x0003,0x0004 + .hword 0x0004,0x0001,0x0002,0x0005,0x0006,0x0007,0x0006,0x0007 + .hword 0x0008,0x0005,0x0006,0x0007,0x0006,0x0007,0x0008,0x0005 + .hword 0x0005,0x0006,0x0009,0x000A,0x000B,0x000C,0x000C,0x0009 + .hword 0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x0001,0x0002 + .hword 0x0004,0x0001,0x000D,0x000E,0x000F,0x0010,0x0011,0x0012 + .hword 0x000F,0x0010,0x0011,0x0012,0x000E,0x0013,0x0006,0x0007 + + .hword 0x0005,0x0006,0x0014,0x0015,0x0016,0x0017,0x0018,0x0019 + .hword 0x0016,0x0017,0x0018,0x0019,0x0015,0x001A,0x0001,0x0002 + .hword 0x0004,0x0001,0x001B,0x001C,0x001D,0x001E,0x001F,0x0020 + .hword 0x001D,0x001E,0x001F,0x0020,0x001C,0x0021,0x0006,0x0007 + .hword 0x0005,0x0006,0x0009,0x000A,0x0022,0x0023,0x0024,0x0025 + .hword 0x0026,0x0027,0x0028,0x0029,0x000A,0x000B,0x0001,0x0002 + .hword 0x0004,0x0001,0x000D,0x000E,0x000F,0x0010,0x002A,0x002B + .hword 0x002C,0x002D,0x0011,0x0012,0x000E,0x0013,0x0006,0x0007 + + .hword 0x0005,0x0006,0x0014,0x0015,0x0016,0x0017,0x002E,0x002F + .hword 0x0030,0x0031,0x0018,0x0019,0x0015,0x001A,0x0001,0x0002 + .hword 0x0004,0x0001,0x001B,0x001C,0x000F,0x0010,0x0032,0x0033 + .hword 0x0024,0x0025,0x0026,0x0027,0x001C,0x0021,0x0006,0x0007 + .hword 0x0005,0x0006,0x0009,0x000A,0x0016,0x0017,0x0018,0x0019 + .hword 0x002A,0x002B,0x002C,0x002D,0x000A,0x000B,0x0001,0x0002 + .hword 0x0004,0x0001,0x000D,0x000E,0x001D,0x001E,0x001F,0x0020 + .hword 0x002E,0x002F,0x0030,0x0031,0x000E,0x0013,0x0006,0x0007 + + .hword 0x0005,0x0006,0x0014,0x0015,0x0022,0x0023,0x0028,0x0029 + .hword 0x0032,0x0033,0x0034,0x0035,0x0015,0x001A,0x0001,0x0002 + .hword 0x0004,0x0001,0x001B,0x001C,0x0021,0x0036,0x0036,0x001B + .hword 0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0006,0x0007 + .hword 0x0005,0x0006,0x0007,0x0004,0x0001,0x0002,0x0001,0x0002 + .hword 0x0003,0x0004,0x0001,0x0002,0x0001,0x0002,0x0001,0x0002 + .hword 0x0006,0x0007,0x0008,0x0005,0x0006,0x0007,0x0006,0x0007 + .hword 0x0008,0x0005,0x0006,0x0007,0x0006,0x0007,0x0006,0x0007 + +@}}BLOCK(Layer128x128) + +@{{BLOCK(Layer256x256) + +@======================================================================= +@ +@ Layer256x256, 256x256@8, +@ + regular map (flat), not compressed, 32x32 +@ Total size: 2048 = 2048 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer256x256Map @ 2048 bytes +Layer256x256Map: + .hword 0x0013,0x0037,0x000D,0x0000,0x0038,0x0039,0x003A,0x003B + .hword 0x003C,0x0039,0x003A,0x003B,0x003C,0x0039,0x003A,0x003B + .hword 0x003C,0x0039,0x003A,0x003B,0x003C,0x0039,0x003A,0x003B + .hword 0x003C,0x0039,0x003A,0x0438,0x0013,0x0037,0x000D,0x000D + .hword 0x0037,0x000D,0x003D,0x003E,0x003F,0x0040,0x0041,0x0042 + .hword 0x0043,0x0040,0x0041,0x0042,0x0043,0x0040,0x0041,0x0042 + .hword 0x0043,0x0040,0x0041,0x0042,0x0043,0x0040,0x0041,0x0042 + .hword 0x0043,0x0040,0x0041,0x043F,0x043E,0x0013,0x0037,0x0014 + + .hword 0x000D,0x0044,0x0045,0x0046,0x0047,0x0048,0x0049,0x004A + .hword 0x004B,0x0048,0x0049,0x004A,0x004B,0x0048,0x0049,0x004A + .hword 0x004B,0x0048,0x0049,0x004A,0x004B,0x0048,0x0049,0x004A + .hword 0x004B,0x0048,0x0049,0x0447,0x0446,0x0445,0x0444,0x001B + .hword 0x004C,0x004D,0x004E,0x004F,0x0050,0x0051,0x0052,0x0053 + .hword 0x0054,0x0051,0x0052,0x0053,0x0054,0x0051,0x0052,0x0053 + .hword 0x0054,0x0051,0x0052,0x0053,0x0054,0x0051,0x0052,0x0053 + .hword 0x0054,0x0051,0x0052,0x0450,0x044F,0x044E,0x044D,0x044C + + .hword 0x0055,0x0056,0x0057,0x0058,0x0059,0x005A,0x005B,0x005C + .hword 0x005D,0x005A,0x005B,0x005C,0x005D,0x005A,0x005B,0x005C + .hword 0x005D,0x005A,0x005B,0x005C,0x005D,0x005A,0x005B,0x005C + .hword 0x005D,0x005A,0x005B,0x0459,0x0458,0x0457,0x0456,0x0455 + .hword 0x005E,0x005F,0x0060,0x0061,0x0062,0x0063,0x0037,0x000D + .hword 0x000E,0x0013,0x0037,0x000D,0x0037,0x000D,0x000E,0x0013 + .hword 0x0037,0x000D,0x001B,0x001C,0x001B,0x001C,0x0021,0x0036 + .hword 0x000E,0x0013,0x0037,0x0462,0x0461,0x0460,0x045F,0x045E + + .hword 0x0064,0x0065,0x0066,0x0067,0x0037,0x000D,0x000E,0x0013 + .hword 0x0037,0x000D,0x001B,0x0037,0x000D,0x0037,0x000D,0x000E + .hword 0x0013,0x0037,0x000D,0x001B,0x001C,0x001B,0x001C,0x0021 + .hword 0x0036,0x000E,0x0013,0x0037,0x0467,0x0466,0x0465,0x0464 + .hword 0x0068,0x0069,0x0014,0x0015,0x001A,0x006A,0x000A,0x006B + .hword 0x006C,0x006D,0x006E,0x006F,0x0070,0x0071,0x0072,0x0073 + .hword 0x0074,0x0075,0x0471,0x0470,0x046F,0x046E,0x046D,0x046C + .hword 0x046B,0x000B,0x000C,0x0009,0x000A,0x000B,0x0469,0x0468 + + .hword 0x0055,0x0056,0x001B,0x001C,0x0021,0x0036,0x000E,0x0076 + .hword 0x0077,0x0078,0x0079,0x007A,0x007B,0x007C,0x007D,0x007E + .hword 0x007F,0x0080,0x047C,0x047B,0x047A,0x0479,0x0478,0x0477 + .hword 0x0476,0x0013,0x0037,0x000D,0x000E,0x0013,0x0456,0x0455 + .hword 0x005E,0x005F,0x0014,0x0015,0x001A,0x006A,0x000A,0x0081 + .hword 0x0082,0x0083,0x0084,0x0085,0x0086,0x0087,0x0480,0x0073 + .hword 0x047E,0x0088,0x0487,0x0486,0x0485,0x0484,0x0483,0x0482 + .hword 0x0481,0x000B,0x000C,0x0009,0x000A,0x000B,0x045F,0x045E + + .hword 0x0064,0x0065,0x001B,0x001C,0x0021,0x0036,0x000E,0x0089 + .hword 0x008A,0x008B,0x008C,0x008D,0x008E,0x008F,0x0090,0x007E + .hword 0x0091,0x0092,0x048F,0x048E,0x048D,0x048C,0x048B,0x048A + .hword 0x0489,0x0013,0x0037,0x000D,0x000E,0x0013,0x0465,0x0464 + .hword 0x0055,0x0056,0x0014,0x0015,0x001A,0x006A,0x000A,0x0093 + .hword 0x0094,0x0095,0x0096,0x0097,0x0098,0x0099,0x009A,0x009B + .hword 0x009C,0x009D,0x0499,0x0498,0x0497,0x0496,0x0495,0x0494 + .hword 0x0493,0x000B,0x000C,0x0009,0x000A,0x000B,0x045F,0x045E + + .hword 0x005E,0x005F,0x001B,0x001C,0x0021,0x0036,0x000E,0x0076 + .hword 0x009E,0x009F,0x00A0,0x00A1,0x00A2,0x00A3,0x00A4,0x00A5 + .hword 0x00A6,0x00A7,0x04A3,0x04A2,0x04A1,0x04A0,0x049F,0x049E + .hword 0x0476,0x001A,0x006A,0x000A,0x000B,0x000C,0x0465,0x0464 + .hword 0x0064,0x0065,0x000D,0x000E,0x0013,0x0021,0x0036,0x0081 + .hword 0x00A8,0x00A9,0x00AA,0x00AB,0x00AC,0x00AD,0x00AE,0x080C + .hword 0x00AF,0x00B0,0x04AD,0x04AC,0x04AB,0x04AA,0x04A9,0x04A8 + .hword 0x0481,0x0021,0x0036,0x000E,0x0013,0x0037,0x0469,0x0468 + + .hword 0x005E,0x005F,0x0014,0x0015,0x001A,0x0021,0x0036,0x0076 + .hword 0x00B1,0x00B2,0x00B3,0x00B4,0x00B5,0x00B6,0x081B,0x081C + .hword 0x00B7,0x00B8,0x00B9,0x04B5,0x04B4,0x04B3,0x04B2,0x04B1 + .hword 0x0476,0x0021,0x0036,0x0015,0x001A,0x006A,0x045F,0x045E + .hword 0x0055,0x0056,0x001B,0x001C,0x0021,0x000B,0x000C,0x00BA + .hword 0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,0x00C0,0x00C1,0x0076 + .hword 0x00C2,0x00C3,0x04C0,0x04BF,0x04BE,0x04BD,0x04BC,0x00C4 + .hword 0x04BA,0x000B,0x000C,0x001C,0x0021,0x0036,0x0465,0x0464 + + .hword 0x005E,0x005F,0x0009,0x000A,0x000B,0x000C,0x0009,0x081C + .hword 0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0x00CB,0x0081 + .hword 0x00AE,0x080C,0x04CA,0x04C9,0x04C8,0x00CC,0x04C6,0x04BB + .hword 0x0C1C,0x000C,0x0009,0x000A,0x000B,0x000C,0x0469,0x0468 + .hword 0x0064,0x0065,0x000D,0x000E,0x0013,0x0037,0x00CD,0x006B + .hword 0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,0x00C0,0x00C1,0x0076 + .hword 0x00C2,0x00C3,0x04C0,0x04BF,0x04BE,0x04BD,0x04BC,0x04C5 + .hword 0x046B,0x0414,0x000D,0x000E,0x0013,0x0037,0x045F,0x045E + + .hword 0x005E,0x005F,0x0014,0x0015,0x001A,0x006A,0x001B,0x080A + .hword 0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0x00CB,0x0081 + .hword 0x00AE,0x080C,0x04CA,0x04C9,0x04C8,0x00CC,0x04C6,0x080A + .hword 0x080B,0x00CE,0x0014,0x0015,0x001A,0x006A,0x0465,0x0464 + .hword 0x0055,0x0056,0x001B,0x001C,0x0021,0x0036,0x00CF,0x08BA + .hword 0x00BB,0x00BC,0x00BD,0x00BE,0x00BF,0x00C0,0x00C1,0x0076 + .hword 0x00C2,0x00C3,0x04C0,0x04BF,0x04BE,0x04BD,0x04BC,0x08C4 + .hword 0x0CBA,0x0CCB,0x001B,0x001C,0x0021,0x0036,0x0469,0x0468 + + .hword 0x005E,0x005F,0x0009,0x000A,0x000B,0x000C,0x00D0,0x0876 + .hword 0x00C5,0x00C6,0x00C7,0x00C8,0x00C9,0x00CA,0x00CB,0x0081 + .hword 0x00AE,0x080C,0x04CA,0x04C9,0x04C8,0x00CC,0x04C6,0x0CB1 + .hword 0x0C76,0x0CC1,0x0009,0x000A,0x000B,0x000C,0x045F,0x045E + .hword 0x0064,0x0065,0x000D,0x000E,0x0013,0x0037,0x0009,0x0881 + .hword 0x08A8,0x08A9,0x08AA,0x08AB,0x08AC,0x08AD,0x08AE,0x000C + .hword 0x08AF,0x08B0,0x0CAD,0x0CAC,0x0CAB,0x0CAA,0x0CA9,0x0CA8 + .hword 0x0C81,0x0CCB,0x000D,0x000E,0x0013,0x0037,0x0465,0x0464 + + .hword 0x005E,0x005F,0x0014,0x0015,0x001A,0x006A,0x000D,0x0876 + .hword 0x089E,0x089F,0x08A0,0x08A1,0x08A2,0x08A3,0x08A4,0x08A5 + .hword 0x08A6,0x08A7,0x0CA3,0x0CA2,0x0CA1,0x0CA0,0x0C9F,0x0C9E + .hword 0x0C76,0x0CC1,0x0014,0x0015,0x001A,0x006A,0x0469,0x0468 + .hword 0x0055,0x0056,0x001B,0x000B,0x000C,0x0009,0x0014,0x0893 + .hword 0x0894,0x0895,0x0896,0x0897,0x0898,0x0899,0x089A,0x089B + .hword 0x089C,0x089D,0x0C99,0x0C98,0x0C97,0x0C96,0x0C95,0x0C94 + .hword 0x0C93,0x04CD,0x000A,0x000B,0x000C,0x0036,0x045F,0x045E + + .hword 0x005E,0x005F,0x001B,0x0013,0x000B,0x000C,0x001B,0x0889 + .hword 0x088A,0x088B,0x088C,0x088D,0x088E,0x088F,0x0890,0x087E + .hword 0x0891,0x0892,0x0C8F,0x0C8E,0x0C8D,0x0C8C,0x0C8B,0x0C8A + .hword 0x0C89,0x00D1,0x000B,0x000C,0x0037,0x0036,0x0465,0x0464 + .hword 0x0064,0x0065,0x0009,0x001A,0x0013,0x0037,0x08CB,0x0881 + .hword 0x0882,0x0883,0x0884,0x0885,0x0886,0x0887,0x0C80,0x0873 + .hword 0x0C7E,0x0888,0x0C87,0x0C86,0x0C85,0x0C84,0x0C83,0x0C82 + .hword 0x0C81,0x0CCB,0x0013,0x0037,0x006A,0x000C,0x0469,0x0468 + + .hword 0x005E,0x005F,0x000D,0x0021,0x001A,0x006A,0x08C1,0x0876 + .hword 0x0877,0x0878,0x0879,0x087A,0x087B,0x087C,0x087D,0x087E + .hword 0x087F,0x0880,0x0C7C,0x0C7B,0x0C7A,0x0C79,0x0C78,0x0C77 + .hword 0x0C76,0x0CC1,0x001A,0x006A,0x0036,0x0037,0x045F,0x045E + .hword 0x005E,0x00D2,0x0014,0x0021,0x0021,0x0036,0x00CD,0x086B + .hword 0x086C,0x086D,0x086E,0x086F,0x0870,0x0871,0x0872,0x0873 + .hword 0x0874,0x0875,0x0C71,0x0C70,0x0C6F,0x0C6E,0x0C6D,0x0C6C + .hword 0x0C6B,0x04CD,0x0021,0x0036,0x0036,0x006A,0x00D3,0x045E + + .hword 0x00D4,0x00D5,0x00D6,0x000B,0x0021,0x0036,0x001B,0x001C + .hword 0x08B7,0x08B8,0x00D7,0x001C,0x00D8,0x00D9,0x00DA,0x00DB + .hword 0x00DC,0x00DD,0x04D9,0x04D8,0x041C,0x04D7,0x0CB8,0x0CB7 + .hword 0x041C,0x041B,0x0021,0x0036,0x000C,0x00DE,0x00DF,0x00E0 + .hword 0x000D,0x00E1,0x00E2,0x00E3,0x000B,0x000C,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x000B,0x000C,0x0009,0x000A + .hword 0x000B,0x000C,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x00E4,0x00E5,0x00E6,0x0013 + + .hword 0x0037,0x000D,0x00E7,0x00E8,0x00E9,0x00EA,0x00EB,0x00EC + .hword 0x00E9,0x00EA,0x00EA,0x00EB,0x00EC,0x00E9,0x00EA,0x00EB + .hword 0x00EA,0x00EB,0x00EC,0x00E9,0x00EA,0x00EB,0x00EA,0x00EB + .hword 0x00E9,0x00EA,0x00EB,0x00EC,0x00ED,0x00EE,0x0013,0x0037 + .hword 0x0013,0x0037,0x000D,0x00EF,0x00F0,0x00F1,0x00F2,0x00F3 + .hword 0x00F0,0x00F1,0x00F1,0x00F2,0x00F3,0x00F0,0x00F1,0x00F2 + .hword 0x00F1,0x00F2,0x00F3,0x00F0,0x00F1,0x00F2,0x00F1,0x00F2 + .hword 0x00F0,0x00F1,0x00F2,0x00F3,0x00F4,0x0013,0x0037,0x000D + +@}}BLOCK(Layer256x256) + +@{{BLOCK(Layer_512x512) + +@======================================================================= +@ +@ Layer_512x512, 512x512@8, +@ + regular map (flat), not compressed, 64x64 +@ Total size: 8192 = 8192 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer512x512Map @ 8192 bytes +Layer512x512Map: + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6 + .hword 0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5 + .hword 0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6 + .hword 0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5 + .hword 0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC + .hword 0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB + .hword 0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC + .hword 0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB + .hword 0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x04FA,0x04F9,0x04F8,0x0000,0x0000 + + .hword 0x0000,0x00FE,0x00FF,0x0100,0x0101,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103 + .hword 0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102 + .hword 0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103 + .hword 0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102 + .hword 0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0501,0x0500,0x04FF,0x04FE,0x0000 + + .hword 0x0105,0x0106,0x0107,0x0108,0x0109,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B + .hword 0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A + .hword 0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B + .hword 0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A + .hword 0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x0509,0x0508,0x0507,0x0506,0x0505 + + .hword 0x010D,0x010E,0x010F,0x0110,0x0111,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113 + .hword 0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112 + .hword 0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113 + .hword 0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112 + .hword 0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0511,0x0510,0x050F,0x050E,0x050D + + .hword 0x0115,0x0116,0x0117,0x0118,0x0119,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B + .hword 0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A + .hword 0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B + .hword 0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A + .hword 0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x0519,0x0518,0x0517,0x0516,0x0515 + + .hword 0x011D,0x011E,0x011F,0x0120,0x0121,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123 + .hword 0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122 + .hword 0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123 + .hword 0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122 + .hword 0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0521,0x0520,0x051F,0x051E,0x051D + + .hword 0x0125,0x0126,0x0127,0x0128,0x0129,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B + .hword 0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012D + .hword 0x012E,0x012F,0x0130,0x012B,0x012C,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B + .hword 0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A + .hword 0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x0529,0x0528,0x0527,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0132,0x0133,0x0134,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136 + .hword 0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0138 + .hword 0x0139,0x013A,0x013B,0x0136,0x0137,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136 + .hword 0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135 + .hword 0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0534,0x0533,0x0532,0x0531,0x050D + + .hword 0x0115,0x013C,0x013D,0x013E,0x013F,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141 + .hword 0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0143 + .hword 0x0144,0x0145,0x0146,0x0141,0x0142,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141 + .hword 0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140 + .hword 0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x053F,0x053E,0x053D,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0148,0x0149,0x014A,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C + .hword 0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014E + .hword 0x014F,0x0150,0x0151,0x014C,0x014D,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C + .hword 0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B + .hword 0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x054A,0x0549,0x0548,0x0547,0x051D + + .hword 0x0125,0x0152,0x0153,0x0154,0x0155,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157 + .hword 0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x012D + .hword 0x012E,0x012F,0x0130,0x0157,0x0158,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157 + .hword 0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156 + .hword 0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0555,0x0554,0x0553,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015A,0x015B,0x015C,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0162,0x0163,0x0138 + .hword 0x0139,0x013A,0x013B,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0165,0x0166 + .hword 0x0167,0x0168,0x015E,0x055C,0x055B,0x055A,0x0559,0x050D + + .hword 0x0125,0x0126,0x012D,0x012E,0x012F,0x0130,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x016E,0x016F,0x0143 + .hword 0x0144,0x0145,0x0146,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0169,0x0169,0x0171,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0138,0x0139,0x013A,0x013B,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0165,0x0166,0x0176,0x0177,0x0178,0x0166,0x0167,0x014E + .hword 0x014F,0x0150,0x0151,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0143,0x0144,0x0145,0x0146,0x012F,0x0130 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x015E,0x015F,0x0160,0x017B,0x017C,0x012D + .hword 0x012E,0x012F,0x0130,0x0178,0x017A,0x017B,0x017C,0x015F + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x014E,0x014F,0x0150,0x0151,0x013A,0x013B + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0161,0x0162,0x0169,0x016A,0x016B,0x0176,0x0177,0x0138 + .hword 0x0139,0x013A,0x013B,0x0164,0x0161,0x0162,0x0163,0x0164 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x0143,0x012D,0x012E,0x012F + .hword 0x0130,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016D,0x016E,0x0172,0x0173,0x0174,0x015E,0x015F,0x0143 + .hword 0x0144,0x0145,0x0146,0x0177,0x0178,0x016E,0x016F,0x0170 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x014E,0x0138,0x0139,0x013A + .hword 0x013B,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0165,0x0166,0x0176,0x0177,0x0178,0x0169,0x016A,0x014E + .hword 0x014F,0x0150,0x0151,0x015F,0x0160,0x0166,0x0167,0x0168 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x017D,0x017E + .hword 0x017F,0x0180,0x0172,0x0173,0x0174,0x017A,0x017B,0x017C + .hword 0x015F,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0143,0x0144,0x0145 + .hword 0x0146,0x012F,0x0130,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x017C,0x015F,0x017A,0x0172,0x0173,0x012D + .hword 0x012E,0x012F,0x0130,0x016A,0x016B,0x017B,0x017C,0x015F + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0181,0x0182 + .hword 0x0183,0x0184,0x0176,0x0177,0x0178,0x0161,0x0162,0x0163 + .hword 0x0164,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x014E,0x014F,0x0150 + .hword 0x0151,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x0138 + .hword 0x0139,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x0143 + .hword 0x0144,0x0145,0x0146,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x014E + .hword 0x014F,0x0150,0x0151,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x012D + .hword 0x012E,0x012F,0x0130,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x012D,0x012E + .hword 0x012F,0x0130,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0138 + .hword 0x0139,0x013A,0x013B,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x017A,0x017B,0x017C,0x015F,0x015D,0x015E,0x015F + .hword 0x0161,0x015E,0x015F,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0169,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x0143 + .hword 0x0144,0x0145,0x012D,0x012E,0x012F,0x0130,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0161,0x0162,0x0163,0x0164,0x016C,0x0169,0x016A + .hword 0x016D,0x0169,0x016A,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x0172,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x014E + .hword 0x014F,0x0150,0x0138,0x0139,0x013A,0x013B,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x016D,0x016E,0x016F,0x0170,0x0175,0x0172,0x0173 + .hword 0x0165,0x0172,0x0173,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0165,0x0166,0x0167,0x0168,0x0165,0x0176,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0143,0x0144,0x0145,0x0146,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0165,0x0166,0x0167,0x0168,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x014E,0x014F,0x0150,0x0151,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0185,0x0186,0x0586,0x0187,0x0188,0x0189,0x018A + .hword 0x018B,0x018C,0x018D,0x018E,0x018F,0x0190,0x0186,0x0586 + .hword 0x0585,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197 + .hword 0x0198,0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592 + .hword 0x019E,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5 + .hword 0x01A6,0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0 + .hword 0x01AD,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4 + .hword 0x01B5,0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC + .hword 0x05AE,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3 + .hword 0x01C4,0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB + .hword 0x05BD,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2 + .hword 0x01D3,0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD + .hword 0x01DA,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1 + .hword 0x01E2,0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC + .hword 0x05DB,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF + .hword 0x01F0,0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA + .hword 0x05E9,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586 + .hword 0x0585,0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203 + .hword 0x0204,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974 + .hword 0x0591,0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211 + .hword 0x0212,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x0213 + .hword 0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A + .hword 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222 + .hword 0x0223,0x0224,0x0A0C,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x0225 + .hword 0x0226,0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D + .hword 0x022E,0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234 + .hword 0x0235,0x0236,0x0237,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0E0C + .hword 0x0624,0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174 + .hword 0x0D91,0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11 + .hword 0x0A12,0x0238,0x0239,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0DFE + .hword 0x023A,0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03 + .hword 0x0A04,0x023B,0x0A1D,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x0213 + .hword 0x023C,0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF + .hword 0x09F0,0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA + .hword 0x0DE9,0x023D,0x023E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x023F + .hword 0x0240,0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1 + .hword 0x09E2,0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC + .hword 0x0DDB,0x0241,0x0242,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0243 + .hword 0x0244,0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2 + .hword 0x09D3,0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD + .hword 0x09DA,0x0644,0x0245,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0246 + .hword 0x0247,0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3 + .hword 0x09C4,0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB + .hword 0x0DBD,0x0248,0x0249,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x024A + .hword 0x024B,0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4 + .hword 0x09B5,0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC + .hword 0x0DAE,0x024C,0x064A,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x024D + .hword 0x0E1C,0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5 + .hword 0x09A6,0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0 + .hword 0x09AD,0x024E,0x0A1D,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x024F + .hword 0x0E0B,0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997 + .hword 0x0998,0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92 + .hword 0x099E,0x0A0B,0x0A0C,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x017E,0x017F,0x0180,0x0175,0x0172,0x0173 + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0250 + .hword 0x0DFD,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A + .hword 0x098B,0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0182,0x0183,0x0184,0x0179,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x0251,0x0252,0x0253,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0254,0x0255,0x0256,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x017D,0x017E,0x017F,0x0180 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0181,0x0182,0x0183,0x0184 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x017A,0x017B,0x017C,0x015F,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x0257,0x0251,0x0252,0x0253 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x014E,0x014F + .hword 0x0150,0x0151,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0161,0x0162,0x0163,0x0164,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0258,0x0254,0x0255,0x0256 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x016D,0x016E,0x016F,0x0170,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0172,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0165,0x0166,0x0167,0x0168,0x0177 + .hword 0x0178,0x0179,0x0176,0x0577,0x0576,0x0179,0x0259,0x0525 + + .hword 0x0659,0x025A,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0172,0x0172,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0577,0x0576,0x065A,0x0259,0x0179 + + .hword 0x025B,0x025C,0x025D,0x0176,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x014E,0x014F + .hword 0x0150,0x0151,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0576,0x065D,0x065C,0x065B,0x0179 + + .hword 0x0179,0x0179,0x025E,0x025F,0x0260,0x0261,0x0262,0x0263 + .hword 0x0260,0x0261,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x012D,0x012E + .hword 0x012F,0x0130,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x065F,0x065E,0x0264,0x0179,0x0179 + + .hword 0x0179,0x0179,0x0265,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7 + .hword 0x0CF6,0x0266,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0138,0x0139 + .hword 0x013A,0x013B,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x08F7,0x0665,0x0179,0x0179,0x0179 + +@}}BLOCK(Layer_512x512) + +@{{BLOCK(Layer1024x1024) + +@======================================================================= +@ +@ Layer1024x1024, 1024x1024@8, +@ + regular map (flat), not compressed, 128x128 +@ Total size: 32768 = 32768 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer1024x1024Map @ 32768 bytes +Layer1024x1024Map: + .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6 + .hword 0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5 + .hword 0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6 + .hword 0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5 + .hword 0x00F6,0x00F7,0x00F5,0x00F7,0x00F5,0x00F6,0x00F7,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F7,0x00F5,0x00F6,0x00F7,0x00F7 + + .hword 0x00F5,0x00F6,0x00F7,0x00F7,0x00F5,0x00F6,0x00F7,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F7,0x00F6,0x00F7,0x00F5,0x00F6 + .hword 0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5 + .hword 0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6 + .hword 0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5 + .hword 0x00F6,0x00F7,0x00F5,0x00F6,0x00F7,0x00F5,0x00F6,0x00F7 + .hword 0x00F5,0x00F6,0x00F7,0x0000,0x0000,0x0000,0x0000,0x0000 + + .hword 0x0000,0x0000,0x00F8,0x00F9,0x00FA,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC + .hword 0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB + .hword 0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC + .hword 0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB + .hword 0x00FC,0x00FD,0x00FB,0x00FD,0x00FB,0x00FC,0x00FD,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FD,0x00FB,0x00FC,0x00FD,0x00FD + + .hword 0x00FB,0x00FC,0x00FD,0x00FD,0x00FB,0x00FC,0x00FD,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FD,0x00FC,0x00FD,0x00FB,0x00FC + .hword 0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB + .hword 0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC + .hword 0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB + .hword 0x00FC,0x00FD,0x00FB,0x00FC,0x00FD,0x00FB,0x00FC,0x00FD + .hword 0x00FB,0x00FC,0x00FD,0x04FA,0x04F9,0x04F8,0x0000,0x0000 + + .hword 0x0000,0x00FE,0x00FF,0x0100,0x0101,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103 + .hword 0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102 + .hword 0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103 + .hword 0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102 + .hword 0x0103,0x0104,0x0102,0x0104,0x0102,0x0103,0x0104,0x0104 + .hword 0x0102,0x0103,0x0104,0x0104,0x0102,0x0103,0x0104,0x0104 + + .hword 0x0102,0x0103,0x0104,0x0104,0x0102,0x0103,0x0104,0x0104 + .hword 0x0102,0x0103,0x0104,0x0104,0x0103,0x0104,0x0102,0x0103 + .hword 0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102 + .hword 0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103 + .hword 0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104,0x0102 + .hword 0x0103,0x0104,0x0102,0x0103,0x0104,0x0102,0x0103,0x0104 + .hword 0x0102,0x0103,0x0104,0x0501,0x0500,0x04FF,0x04FE,0x0000 + + .hword 0x0105,0x0106,0x0107,0x0108,0x0109,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B + .hword 0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A + .hword 0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B + .hword 0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A + .hword 0x010B,0x010C,0x010A,0x010C,0x010A,0x010B,0x010C,0x010C + .hword 0x010A,0x010B,0x010C,0x010C,0x010A,0x010B,0x010C,0x010C + + .hword 0x010A,0x010B,0x010C,0x010C,0x010A,0x010B,0x010C,0x010C + .hword 0x010A,0x010B,0x010C,0x010C,0x010B,0x010C,0x010A,0x010B + .hword 0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A + .hword 0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B + .hword 0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C,0x010A + .hword 0x010B,0x010C,0x010A,0x010B,0x010C,0x010A,0x010B,0x010C + .hword 0x010A,0x010B,0x010C,0x0509,0x0508,0x0507,0x0506,0x0505 + + .hword 0x010D,0x010E,0x010F,0x0110,0x0111,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113 + .hword 0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112 + .hword 0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113 + .hword 0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112 + .hword 0x0113,0x0114,0x0112,0x0114,0x0112,0x0113,0x0114,0x0114 + .hword 0x0112,0x0113,0x0114,0x0114,0x0112,0x0113,0x0114,0x0114 + + .hword 0x0112,0x0113,0x0114,0x0114,0x0112,0x0113,0x0114,0x0114 + .hword 0x0112,0x0113,0x0114,0x0114,0x0113,0x0114,0x0112,0x0113 + .hword 0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112 + .hword 0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113 + .hword 0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114,0x0112 + .hword 0x0113,0x0114,0x0112,0x0113,0x0114,0x0112,0x0113,0x0114 + .hword 0x0112,0x0113,0x0114,0x0511,0x0510,0x050F,0x050E,0x050D + + .hword 0x0115,0x0116,0x0117,0x0118,0x0119,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B + .hword 0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A + .hword 0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B + .hword 0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A + .hword 0x011B,0x011C,0x011A,0x011C,0x011A,0x011B,0x011C,0x011C + .hword 0x011A,0x011B,0x011C,0x011C,0x011A,0x011B,0x011C,0x011C + + .hword 0x011A,0x011B,0x011C,0x011C,0x011A,0x011B,0x011C,0x011C + .hword 0x011A,0x011B,0x011C,0x011C,0x011B,0x011C,0x011A,0x011B + .hword 0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A + .hword 0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B + .hword 0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C,0x011A + .hword 0x011B,0x011C,0x011A,0x011B,0x011C,0x011A,0x011B,0x011C + .hword 0x011A,0x011B,0x011C,0x0519,0x0518,0x0517,0x0516,0x0515 + + .hword 0x011D,0x011E,0x011F,0x0120,0x0121,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123 + .hword 0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122 + .hword 0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123 + .hword 0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122 + .hword 0x0123,0x0124,0x0122,0x0124,0x0122,0x0123,0x0124,0x0124 + .hword 0x0122,0x0123,0x0124,0x0124,0x0122,0x0123,0x0124,0x0124 + + .hword 0x0122,0x0123,0x0124,0x0124,0x0122,0x0123,0x0124,0x0124 + .hword 0x0122,0x0123,0x0124,0x0124,0x0123,0x0124,0x0122,0x0123 + .hword 0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122 + .hword 0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123 + .hword 0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124,0x0122 + .hword 0x0123,0x0124,0x0122,0x0123,0x0124,0x0122,0x0123,0x0124 + .hword 0x0122,0x0123,0x0124,0x0521,0x0520,0x051F,0x051E,0x051D + + .hword 0x0125,0x0126,0x0127,0x0128,0x0129,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B + .hword 0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012D + .hword 0x012E,0x012F,0x0130,0x012B,0x012C,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B + .hword 0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A + .hword 0x012B,0x012C,0x012A,0x012C,0x012A,0x012B,0x012C,0x012C + .hword 0x012A,0x012B,0x012C,0x012C,0x012A,0x012B,0x012C,0x012C + + .hword 0x012A,0x012B,0x012C,0x012C,0x012A,0x012B,0x012C,0x012C + .hword 0x012A,0x012B,0x012C,0x012C,0x012B,0x012C,0x012A,0x012B + .hword 0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012D + .hword 0x012E,0x012F,0x0130,0x012B,0x012C,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B + .hword 0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C,0x012A + .hword 0x012B,0x012C,0x012A,0x012B,0x012C,0x012A,0x012B,0x012C + .hword 0x012A,0x012B,0x012C,0x0529,0x0528,0x0527,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0132,0x0133,0x0134,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136 + .hword 0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0138 + .hword 0x0139,0x013A,0x013B,0x0136,0x0137,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136 + .hword 0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135 + .hword 0x0136,0x0137,0x0135,0x0137,0x0135,0x0136,0x0137,0x0137 + .hword 0x0135,0x0136,0x0137,0x0137,0x0135,0x0136,0x0137,0x0137 + + .hword 0x0135,0x0136,0x0137,0x0137,0x0135,0x0136,0x0137,0x0137 + .hword 0x0135,0x0136,0x0137,0x0137,0x0136,0x0137,0x0135,0x0136 + .hword 0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0138 + .hword 0x0139,0x013A,0x013B,0x0136,0x0137,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136 + .hword 0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137,0x0135 + .hword 0x0136,0x0137,0x0135,0x0136,0x0137,0x0135,0x0136,0x0137 + .hword 0x0135,0x0136,0x0137,0x0534,0x0533,0x0532,0x0531,0x050D + + .hword 0x0115,0x013C,0x013D,0x013E,0x013F,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141 + .hword 0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0143 + .hword 0x0144,0x0145,0x0146,0x0141,0x0142,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141 + .hword 0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140 + .hword 0x0141,0x0142,0x0140,0x0142,0x0140,0x0141,0x0142,0x0142 + .hword 0x0140,0x0141,0x0142,0x0142,0x0140,0x0141,0x0142,0x0142 + + .hword 0x0140,0x0141,0x0142,0x0142,0x0140,0x0141,0x0142,0x0142 + .hword 0x0140,0x0141,0x0142,0x0142,0x0141,0x0142,0x0140,0x0141 + .hword 0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0143 + .hword 0x0144,0x0145,0x0146,0x0141,0x0142,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141 + .hword 0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142,0x0140 + .hword 0x0141,0x0142,0x0140,0x0141,0x0142,0x0140,0x0141,0x0142 + .hword 0x0140,0x0141,0x0142,0x053F,0x053E,0x053D,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0148,0x0149,0x014A,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C + .hword 0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014E + .hword 0x014F,0x0150,0x0151,0x014C,0x014D,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C + .hword 0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B + .hword 0x014C,0x014D,0x014B,0x014D,0x014B,0x014C,0x014D,0x014D + .hword 0x014B,0x014C,0x014D,0x014D,0x014B,0x014C,0x014D,0x014D + + .hword 0x014B,0x014C,0x014D,0x014D,0x014B,0x014C,0x014D,0x014D + .hword 0x014B,0x014C,0x014D,0x014D,0x014C,0x014D,0x014B,0x014C + .hword 0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014E + .hword 0x014F,0x0150,0x0151,0x014C,0x014D,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C + .hword 0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D,0x014B + .hword 0x014C,0x014D,0x014B,0x014C,0x014D,0x014B,0x014C,0x014D + .hword 0x014B,0x014C,0x014D,0x054A,0x0549,0x0548,0x0547,0x051D + + .hword 0x0125,0x0152,0x0153,0x0154,0x0155,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157 + .hword 0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x012D + .hword 0x012E,0x012F,0x0130,0x0157,0x0158,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157 + .hword 0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156 + .hword 0x0157,0x0158,0x0156,0x0158,0x0156,0x0157,0x0158,0x0158 + .hword 0x0156,0x0157,0x0158,0x0158,0x0156,0x0157,0x0158,0x0158 + + .hword 0x0156,0x0157,0x0158,0x0158,0x0156,0x0157,0x0158,0x0158 + .hword 0x0156,0x0157,0x0158,0x0158,0x0157,0x0158,0x0156,0x0157 + .hword 0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x012D + .hword 0x012E,0x012F,0x0130,0x0157,0x0158,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157 + .hword 0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158,0x0156 + .hword 0x0157,0x0158,0x0156,0x0157,0x0158,0x0156,0x0157,0x0158 + .hword 0x0156,0x0157,0x0158,0x0555,0x0554,0x0553,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015A,0x015B,0x015C,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0162,0x0163,0x0138 + .hword 0x0139,0x013A,0x013B,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0165,0x0166 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0162,0x0163,0x0138 + .hword 0x0139,0x013A,0x013B,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0165,0x0166 + .hword 0x0167,0x0168,0x015E,0x055C,0x055B,0x055A,0x0559,0x050D + + .hword 0x0125,0x0126,0x012D,0x012E,0x012F,0x0130,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x016E,0x016F,0x0143 + .hword 0x0144,0x0145,0x0146,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x016E,0x016F,0x0143 + .hword 0x0144,0x0145,0x0146,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0169,0x0169,0x0171,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0138,0x0139,0x013A,0x013B,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0165,0x0166,0x0176,0x0177,0x0178,0x0166,0x0167,0x014E + .hword 0x014F,0x0150,0x0151,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0165,0x0166,0x0176,0x0177,0x0178,0x0166,0x0167,0x014E + .hword 0x014F,0x0150,0x0151,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0143,0x0144,0x0145,0x0146,0x012F,0x0130 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x015E,0x015F,0x0160,0x017B,0x017C,0x012D + .hword 0x012E,0x012F,0x0130,0x0178,0x017A,0x017B,0x017C,0x015F + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x015E,0x015F,0x0160,0x017B,0x017C,0x012D + .hword 0x012E,0x012F,0x0130,0x0178,0x017A,0x017B,0x017C,0x015F + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x014E,0x014F,0x0150,0x0151,0x013A,0x013B + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0161,0x0162,0x0169,0x016A,0x016B,0x0176,0x0177,0x0138 + .hword 0x0139,0x013A,0x013B,0x0164,0x0161,0x0162,0x0163,0x0164 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0161,0x0162,0x0169,0x016A,0x016B,0x0176,0x0177,0x0138 + .hword 0x0139,0x013A,0x013B,0x0164,0x0161,0x0162,0x0163,0x0164 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x0143,0x012D,0x012E,0x012F + .hword 0x0130,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016D,0x016E,0x0172,0x0173,0x0174,0x015E,0x015F,0x0143 + .hword 0x0144,0x0145,0x0146,0x0177,0x0178,0x016E,0x016F,0x0170 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0130,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016D,0x016E,0x0172,0x0173,0x0174,0x015E,0x015F,0x0143 + .hword 0x0144,0x0145,0x0146,0x0177,0x0178,0x016E,0x016F,0x0170 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x014E,0x0138,0x0139,0x013A + .hword 0x013B,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0165,0x0166,0x0176,0x0177,0x0178,0x0169,0x016A,0x014E + .hword 0x014F,0x0150,0x0151,0x015F,0x0160,0x0166,0x0167,0x0168 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x017D,0x017E + .hword 0x017F,0x0180,0x0172,0x0173,0x0174,0x017A,0x017B,0x017C + .hword 0x015F,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x013B,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0165,0x0166,0x0176,0x0177,0x0178,0x0169,0x016A,0x014E + .hword 0x014F,0x0150,0x0151,0x015F,0x0160,0x0166,0x0167,0x0168 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x017D,0x017E + .hword 0x017F,0x0180,0x0172,0x0173,0x0174,0x017A,0x017B,0x017C + .hword 0x015F,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0143,0x0144,0x0145 + .hword 0x0146,0x012F,0x0130,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x017C,0x015F,0x017A,0x0172,0x0173,0x012D + .hword 0x012E,0x012F,0x0130,0x016A,0x016B,0x017B,0x017C,0x015F + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0181,0x0182 + .hword 0x0183,0x0184,0x0176,0x0177,0x0178,0x0161,0x0162,0x0163 + .hword 0x0164,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x0146,0x012F,0x0130,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x017C,0x015F,0x017A,0x0172,0x0173,0x012D + .hword 0x012E,0x012F,0x0130,0x016A,0x016B,0x017B,0x017C,0x015F + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0181,0x0182 + .hword 0x0183,0x0184,0x0176,0x0177,0x0178,0x0161,0x0162,0x0163 + .hword 0x0164,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x014E,0x014F,0x0150 + .hword 0x0151,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x0138 + .hword 0x0139,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x015F + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x0151,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x0138 + .hword 0x0139,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x0143 + .hword 0x0144,0x0145,0x0146,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x016A + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0144,0x0145,0x0146,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x014E + .hword 0x014F,0x0150,0x0151,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x012D + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x014F,0x0150,0x0151,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x012D + .hword 0x012E,0x012F,0x0130,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x012D,0x012E + .hword 0x012F,0x0130,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0138 + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0178,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x012D,0x012E + .hword 0x012F,0x0130,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0138 + .hword 0x0139,0x013A,0x013B,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x017A,0x017B,0x017C,0x015F,0x015D,0x015E,0x015F + .hword 0x0161,0x015E,0x015F,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0169,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x0143 + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x0160,0x017A,0x017B,0x017C,0x015F,0x015D,0x015E,0x015F + .hword 0x0161,0x015E,0x015F,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0169,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x0143 + .hword 0x0144,0x0145,0x012D,0x012E,0x012F,0x0130,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0161,0x0162,0x0163,0x0164,0x016C,0x0169,0x016A + .hword 0x016D,0x0169,0x016A,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x0172,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x014E + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x016B,0x0161,0x0162,0x0163,0x0164,0x016C,0x0169,0x016A + .hword 0x016D,0x0169,0x016A,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x0172,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x014E + .hword 0x014F,0x0150,0x0138,0x0139,0x013A,0x013B,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x016D,0x016E,0x016F,0x0170,0x0175,0x0172,0x0173 + .hword 0x0165,0x0172,0x0173,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0165,0x0166,0x0167,0x0168,0x0165,0x0176,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x0174,0x016D,0x016E,0x016F,0x0170,0x0175,0x0172,0x0173 + .hword 0x0165,0x0172,0x0173,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0165,0x0166,0x0167,0x0168,0x0165,0x0176,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0143,0x0144,0x0145,0x0146,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0165,0x0166,0x0167,0x0168,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0178,0x0165,0x0166,0x0167,0x0168,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x014E,0x014F,0x0150,0x0151,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0185,0x0186,0x0586,0x0187,0x0188,0x0189,0x018A + .hword 0x018B,0x018C,0x018D,0x018E,0x018F,0x0190,0x0186,0x0586 + .hword 0x0585,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0174,0x0185,0x0186,0x0586,0x0187,0x0188,0x0189,0x018A + .hword 0x018B,0x018C,0x018D,0x018E,0x018F,0x0190,0x0186,0x0586 + .hword 0x0585,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197 + .hword 0x0198,0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592 + .hword 0x019E,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0178,0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197 + .hword 0x0198,0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592 + .hword 0x019E,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5 + .hword 0x01A6,0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0 + .hword 0x01AD,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x0160,0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5 + .hword 0x01A6,0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0 + .hword 0x01AD,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4 + .hword 0x01B5,0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC + .hword 0x05AE,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x016B,0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4 + .hword 0x01B5,0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC + .hword 0x05AE,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3 + .hword 0x01C4,0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB + .hword 0x05BD,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0174,0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3 + .hword 0x01C4,0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB + .hword 0x05BD,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2 + .hword 0x01D3,0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD + .hword 0x01DA,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0178,0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2 + .hword 0x01D3,0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD + .hword 0x01DA,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1 + .hword 0x01E2,0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC + .hword 0x05DB,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0160,0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1 + .hword 0x01E2,0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC + .hword 0x05DB,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF + .hword 0x01F0,0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA + .hword 0x05E9,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x016B,0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF + .hword 0x01F0,0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA + .hword 0x05E9,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586 + .hword 0x0585,0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203 + .hword 0x0204,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x0174,0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586 + .hword 0x0585,0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203 + .hword 0x0204,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974 + .hword 0x0591,0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211 + .hword 0x0212,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0178,0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974 + .hword 0x0591,0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211 + .hword 0x0212,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x0213 + .hword 0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A + .hword 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222 + .hword 0x0223,0x0224,0x0A0C,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A + .hword 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222 + .hword 0x0223,0x0224,0x0A0C,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x0225 + .hword 0x0226,0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D + .hword 0x022E,0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234 + .hword 0x0235,0x0236,0x0237,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0226,0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D + .hword 0x022E,0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234 + .hword 0x0235,0x0236,0x0237,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0E0C + .hword 0x0624,0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174 + .hword 0x0D91,0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11 + .hword 0x0A12,0x0238,0x0239,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0624,0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174 + .hword 0x0D91,0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11 + .hword 0x0A12,0x0238,0x0239,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0DFE + .hword 0x023A,0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03 + .hword 0x0A04,0x023B,0x0A1D,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x023A,0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03 + .hword 0x0A04,0x023B,0x0A1D,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x0213 + .hword 0x023C,0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF + .hword 0x09F0,0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA + .hword 0x0DE9,0x023D,0x023E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x023C,0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF + .hword 0x09F0,0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA + .hword 0x0DE9,0x023D,0x023E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x023F + .hword 0x0240,0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1 + .hword 0x09E2,0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC + .hword 0x0DDB,0x0241,0x0242,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0240,0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1 + .hword 0x09E2,0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC + .hword 0x0DDB,0x0241,0x0242,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0243 + .hword 0x0244,0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2 + .hword 0x09D3,0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD + .hword 0x09DA,0x0644,0x0245,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x0244,0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2 + .hword 0x09D3,0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD + .hword 0x09DA,0x0644,0x0245,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0246 + .hword 0x0247,0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3 + .hword 0x09C4,0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB + .hword 0x0DBD,0x0248,0x0249,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0247,0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3 + .hword 0x09C4,0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB + .hword 0x0DBD,0x0248,0x0249,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x024A + .hword 0x024B,0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4 + .hword 0x09B5,0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC + .hword 0x0DAE,0x024C,0x064A,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x024B,0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4 + .hword 0x09B5,0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC + .hword 0x0DAE,0x024C,0x064A,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x024D + .hword 0x0E1C,0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5 + .hword 0x09A6,0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0 + .hword 0x09AD,0x024E,0x0A1D,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x0E1C,0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5 + .hword 0x09A6,0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0 + .hword 0x09AD,0x024E,0x0A1D,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x024F + .hword 0x0E0B,0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997 + .hword 0x0998,0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92 + .hword 0x099E,0x0A0B,0x0A0C,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x017E,0x017F,0x0180,0x0175,0x0172,0x0173 + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x0E0B,0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997 + .hword 0x0998,0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92 + .hword 0x099E,0x0A0B,0x0A0C,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x017E,0x017F,0x0180,0x0175,0x0172,0x0173 + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0250 + .hword 0x0DFD,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A + .hword 0x098B,0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0182,0x0183,0x0184,0x0179,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0DFD,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A + .hword 0x098B,0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0182,0x0183,0x0184,0x0179,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x0251,0x0252,0x0253,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x0251,0x0252,0x0253,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0254,0x0255,0x0256,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0254,0x0255,0x0256,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x017D,0x017E,0x017F,0x0180 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0178,0x0179,0x0176,0x0177,0x017D,0x017E,0x017F,0x0180 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0181,0x0182,0x0183,0x0184 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x017A,0x017B,0x017C,0x015F,0x015F + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x0160,0x015D,0x015E,0x015F,0x0181,0x0182,0x0183,0x0184 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x017A,0x017B,0x017C,0x015F,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x011D,0x011E,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x0257,0x0251,0x0252,0x0253 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x014E,0x014F + .hword 0x0150,0x0151,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0161,0x0162,0x0163,0x0164,0x016A + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x016B,0x016C,0x0169,0x016A,0x0257,0x0251,0x0252,0x0253 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x014E,0x014F + .hword 0x0150,0x0151,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0161,0x0162,0x0163,0x0164,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x0125,0x0126,0x016B,0x016C,0x0169,0x016A,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0258,0x0254,0x0255,0x0256 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x016D,0x016E,0x016F,0x0170,0x0173 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0174,0x0175,0x0172,0x0173,0x0258,0x0254,0x0255,0x0256 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x016D,0x016E,0x016F,0x0170,0x0173 + .hword 0x0174,0x0174,0x0175,0x0172,0x0574,0x0573,0x0547,0x051D + + .hword 0x010D,0x0131,0x0174,0x0175,0x0172,0x0173,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0172,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0165,0x0166,0x0167,0x0168,0x0177 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0174,0x0175,0x0172,0x0172,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x014E,0x014F + .hword 0x0150,0x0151,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0165,0x0166,0x0167,0x0168,0x0177 + .hword 0x0178,0x0178,0x0179,0x0176,0x0577,0x0576,0x0552,0x0525 + + .hword 0x0115,0x013C,0x0174,0x0175,0x0172,0x0173,0x0986,0x0D86 + .hword 0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987 + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0138,0x0139 + .hword 0x013A,0x013B,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176 + .hword 0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x012D,0x012E + .hword 0x012F,0x0130,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86 + .hword 0x0987,0x0987,0x0988,0x0176,0x0177,0x0985,0x0559,0x050D + + .hword 0x011D,0x0147,0x0177,0x0985,0x0986,0x0D86,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0143,0x0144 + .hword 0x0145,0x0146,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x015F,0x0160,0x015E,0x015F,0x0160,0x0526,0x0525 + + .hword 0x0125,0x0152,0x015F,0x0160,0x015D,0x015E,0x016C,0x0169 + .hword 0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x014E,0x014F + .hword 0x0150,0x0151,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0169 + .hword 0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169 + .hword 0x016A,0x016A,0x016B,0x0169,0x016A,0x016B,0x0531,0x050D + + .hword 0x010D,0x0159,0x016A,0x016B,0x016C,0x0169,0x0175,0x0172 + .hword 0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x012D,0x012E + .hword 0x012F,0x0130,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x0172 + .hword 0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172 + .hword 0x0173,0x0173,0x0174,0x0172,0x0173,0x0174,0x0547,0x051D + + .hword 0x0125,0x0126,0x0173,0x0174,0x0175,0x0172,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0138,0x0139 + .hword 0x013A,0x013B,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x0176 + .hword 0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x0177,0x0178,0x0176,0x0177,0x0178,0x0552,0x0525 + + .hword 0x010D,0x0131,0x0177,0x0178,0x0179,0x0176,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0143,0x0144 + .hword 0x0145,0x0146,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x015F,0x0160,0x015E,0x015F,0x0160,0x0559,0x050D + + .hword 0x011D,0x011E,0x015F,0x0160,0x015D,0x015E,0x0986,0x0D86 + .hword 0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987 + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x012D,0x012E + .hword 0x012F,0x0130,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176 + .hword 0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0143,0x0144 + .hword 0x0145,0x0146,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86 + .hword 0x0987,0x0174,0x0175,0x0172,0x0574,0x0573,0x0526,0x0525 + + .hword 0x0125,0x0126,0x016B,0x016C,0x0169,0x016A,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0138,0x0139 + .hword 0x013A,0x013B,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x012D,0x012E + .hword 0x012F,0x0130,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x0178,0x0179,0x0176,0x0577,0x0576,0x0531,0x050D + + .hword 0x010D,0x0131,0x0174,0x0175,0x0172,0x0173,0x016C,0x0169 + .hword 0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x0143,0x0144 + .hword 0x0145,0x0146,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0169 + .hword 0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0138,0x0139 + .hword 0x013A,0x013B,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169 + .hword 0x016A,0x0987,0x0988,0x0176,0x0177,0x0985,0x0547,0x051D + + .hword 0x0115,0x013C,0x0174,0x0175,0x0172,0x0173,0x0175,0x0172 + .hword 0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x014E,0x014F + .hword 0x0150,0x0151,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x0172 + .hword 0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x0143,0x0144 + .hword 0x0145,0x0146,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172 + .hword 0x0173,0x015F,0x0160,0x015E,0x015F,0x0160,0x0552,0x0525 + + .hword 0x011D,0x0147,0x0177,0x0985,0x0986,0x0D86,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x012D,0x012E + .hword 0x012F,0x0130,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x0176 + .hword 0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x014E,0x014F + .hword 0x0150,0x0151,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x016A,0x016B,0x0169,0x016A,0x016B,0x0559,0x050D + + .hword 0x0125,0x0152,0x015F,0x0160,0x015D,0x015E,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0138,0x0139 + .hword 0x013A,0x013B,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x012D,0x012E + .hword 0x012F,0x0130,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x0173,0x0174,0x0172,0x0173,0x0174,0x0526,0x0525 + + .hword 0x010D,0x0131,0x016A,0x016B,0x016C,0x0169,0x0986,0x0D86 + .hword 0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987 + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x014E,0x014F + .hword 0x0150,0x0151,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176 + .hword 0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0138,0x0139 + .hword 0x013A,0x013B,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86 + .hword 0x0987,0x0177,0x0178,0x0176,0x0177,0x0178,0x0531,0x050D + + .hword 0x0115,0x013C,0x0173,0x0174,0x0175,0x0172,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x012D,0x012E + .hword 0x012F,0x0130,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x014E,0x014F + .hword 0x0150,0x0151,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x015F,0x0160,0x015E,0x015F,0x0160,0x0547,0x051D + + .hword 0x011D,0x0147,0x0177,0x0178,0x0179,0x0176,0x016C,0x0169 + .hword 0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x0138,0x0139 + .hword 0x013A,0x013B,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0169 + .hword 0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x012D,0x012E + .hword 0x012F,0x0130,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169 + .hword 0x016A,0x0174,0x0175,0x0172,0x0574,0x0573,0x0552,0x0525 + + .hword 0x0125,0x0152,0x015F,0x0160,0x015D,0x015E,0x0175,0x0172 + .hword 0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0143,0x0144 + .hword 0x0145,0x0146,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x0172 + .hword 0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x0138,0x0139 + .hword 0x013A,0x013B,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172 + .hword 0x0173,0x0178,0x0179,0x0176,0x0577,0x0576,0x0559,0x050D + + .hword 0x010D,0x0159,0x016B,0x016C,0x0169,0x016A,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x014E,0x014F + .hword 0x0150,0x0151,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x0176 + .hword 0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x0143,0x0144 + .hword 0x0145,0x0146,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x0987,0x0988,0x0176,0x0177,0x0985,0x0526,0x0525 + + .hword 0x0125,0x0126,0x0174,0x0175,0x0172,0x0173,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x012D,0x012E + .hword 0x012F,0x0130,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x014E,0x014F + .hword 0x0150,0x0151,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x015F,0x0160,0x015E,0x015F,0x0160,0x0531,0x050D + + .hword 0x010D,0x0131,0x0174,0x0175,0x0172,0x0173,0x0986,0x0D86 + .hword 0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987 + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0138,0x0139 + .hword 0x013A,0x013B,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988 + .hword 0x0176,0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0176 + .hword 0x0177,0x0985,0x0986,0x0D86,0x0987,0x0988,0x012D,0x012E + .hword 0x012F,0x0130,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985 + .hword 0x0986,0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986 + .hword 0x0D86,0x0987,0x0988,0x0176,0x0177,0x0985,0x0986,0x0D86 + .hword 0x0987,0x016A,0x016B,0x0169,0x016A,0x016B,0x0531,0x050D + + .hword 0x0115,0x013C,0x0177,0x0985,0x0986,0x0D86,0x015D,0x015E + .hword 0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0143,0x0144 + .hword 0x0145,0x0146,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0160,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160 + .hword 0x015E,0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x015E + .hword 0x015F,0x0160,0x015D,0x015E,0x015F,0x0160,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160 + .hword 0x015D,0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D + .hword 0x015E,0x015F,0x0160,0x015E,0x015F,0x0160,0x015D,0x015E + .hword 0x015F,0x0173,0x0174,0x0172,0x0173,0x0174,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015F,0x0160,0x015D,0x015E,0x016C,0x0169 + .hword 0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x012D,0x012E + .hword 0x012F,0x0130,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x016B,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B + .hword 0x0169,0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0169 + .hword 0x016A,0x016B,0x016C,0x0169,0x016A,0x016B,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B + .hword 0x016C,0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C + .hword 0x0169,0x016A,0x016B,0x0169,0x016A,0x016B,0x016C,0x0169 + .hword 0x016A,0x016B,0x0169,0x016A,0x016B,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x016A,0x016B,0x016C,0x0169,0x0175,0x0172 + .hword 0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0138,0x0139 + .hword 0x013A,0x013B,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x0174,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174 + .hword 0x0172,0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x0172 + .hword 0x0173,0x0174,0x0175,0x0172,0x0173,0x0174,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174 + .hword 0x0175,0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175 + .hword 0x0172,0x0173,0x0174,0x0172,0x0173,0x0174,0x0175,0x0172 + .hword 0x0173,0x0174,0x0172,0x0173,0x0174,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0173,0x0174,0x0175,0x0172,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0143,0x0144 + .hword 0x0145,0x0146,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178 + .hword 0x0176,0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x0176 + .hword 0x0177,0x0178,0x0179,0x0176,0x0177,0x0178,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178 + .hword 0x0179,0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179 + .hword 0x0176,0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0143,0x0144,0x0145 + .hword 0x0146,0x012F,0x0130,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x017C,0x015F,0x017A,0x0172,0x0173,0x012D + .hword 0x012E,0x012F,0x0130,0x016A,0x016B,0x017B,0x014E,0x014F + .hword 0x0150,0x0151,0x0176,0x0177,0x0178,0x0179,0x0181,0x0182 + .hword 0x0183,0x0184,0x0176,0x0177,0x0178,0x0161,0x0162,0x0163 + .hword 0x0164,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0146,0x012F,0x0130,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x017A,0x017B,0x017C,0x015F,0x017A,0x0172,0x0173,0x012D + .hword 0x012E,0x012F,0x0130,0x016A,0x016B,0x017B,0x0143,0x0144 + .hword 0x0145,0x0146,0x0176,0x0177,0x0178,0x0179,0x0181,0x0182 + .hword 0x0183,0x0184,0x0176,0x0177,0x0178,0x0161,0x0162,0x0163 + .hword 0x0164,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x014E,0x014F,0x0150 + .hword 0x0151,0x013A,0x013B,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x0138 + .hword 0x0139,0x013A,0x013B,0x012F,0x0130,0x012D,0x012D,0x012E + .hword 0x012F,0x0130,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x012F,0x0130,0x012D,0x012E + .hword 0x012F,0x0130,0x012D,0x012F,0x0130,0x012D,0x012E,0x012F + + .hword 0x0130,0x012D,0x012F,0x0130,0x012D,0x012E,0x012F,0x0130 + .hword 0x012D,0x012F,0x0130,0x012D,0x012E,0x012F,0x0130,0x012D + .hword 0x012F,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x0138 + .hword 0x0139,0x013A,0x013B,0x012F,0x0130,0x012D,0x014E,0x014F + .hword 0x0150,0x0151,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x012F + .hword 0x0130,0x012D,0x012E,0x012F,0x0130,0x012D,0x012E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x0143 + .hword 0x0144,0x0145,0x0146,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0138,0x0139 + .hword 0x013A,0x013B,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013A,0x013B,0x0138,0x0139 + .hword 0x013A,0x013B,0x0138,0x013A,0x013B,0x0138,0x0139,0x013A + + .hword 0x013B,0x0138,0x013A,0x013B,0x0138,0x0139,0x013A,0x013B + .hword 0x0138,0x013A,0x013B,0x0138,0x0139,0x013A,0x013B,0x0138 + .hword 0x013A,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x012D,0x012E + .hword 0x012F,0x0130,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x013A + .hword 0x013B,0x0138,0x0139,0x013A,0x013B,0x0138,0x0139,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x014E + .hword 0x014F,0x0150,0x0151,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x014E,0x014F + .hword 0x0150,0x0151,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0145,0x0146,0x0143,0x0144 + .hword 0x0145,0x0146,0x0143,0x0145,0x0146,0x0143,0x0144,0x0145 + + .hword 0x0146,0x0143,0x0145,0x0146,0x0143,0x0144,0x0145,0x0146 + .hword 0x0143,0x0145,0x0146,0x0143,0x0144,0x0145,0x0146,0x0143 + .hword 0x0145,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0138,0x0139 + .hword 0x013A,0x013B,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x0145 + .hword 0x0146,0x0143,0x0144,0x0145,0x0146,0x0143,0x0144,0x012D + .hword 0x012E,0x012F,0x0130,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x012D,0x012E + .hword 0x012F,0x0130,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0150,0x0151,0x014E,0x014F + .hword 0x0150,0x0151,0x014E,0x0150,0x0151,0x014E,0x014F,0x0150 + + .hword 0x0151,0x014E,0x0150,0x0151,0x014E,0x014F,0x0150,0x0151 + .hword 0x014E,0x0150,0x0151,0x014E,0x014F,0x0150,0x0151,0x014E + .hword 0x0150,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014E,0x014F + .hword 0x0150,0x0151,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0150 + .hword 0x0151,0x014E,0x014F,0x0150,0x0151,0x014E,0x014F,0x0138 + .hword 0x0139,0x013A,0x013B,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x017A,0x017B,0x017C,0x015F,0x015D,0x015E,0x015F + .hword 0x0161,0x015E,0x015F,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0169,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x0143 + .hword 0x0144,0x0145,0x012D,0x015E,0x015F,0x0160,0x015D,0x015E + + .hword 0x0143,0x0144,0x015E,0x015F,0x0160,0x015D,0x015E,0x0143 + .hword 0x0144,0x015E,0x015F,0x017C,0x015F,0x015D,0x015E,0x015F + .hword 0x0161,0x015E,0x015F,0x0160,0x0161,0x0162,0x0163,0x0164 + .hword 0x0161,0x0162,0x0163,0x0164,0x0161,0x0169,0x012D,0x012E + .hword 0x012F,0x0130,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x0143 + .hword 0x0144,0x0145,0x012D,0x012E,0x012F,0x0130,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x0161,0x0162,0x0163,0x0164,0x016C,0x0169,0x016A + .hword 0x016D,0x0169,0x016A,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x0172,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x014E + .hword 0x014F,0x0150,0x0577,0x0576,0x0176,0x0578,0x0577,0x0176 + + .hword 0x0578,0x0577,0x0169,0x016A,0x016B,0x016C,0x0169,0x014E + .hword 0x014F,0x0169,0x016A,0x0163,0x0164,0x016C,0x0169,0x016A + .hword 0x016D,0x0169,0x016A,0x016B,0x016D,0x016E,0x016F,0x0170 + .hword 0x016D,0x016E,0x016F,0x0170,0x016D,0x0172,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x014E + .hword 0x014F,0x0150,0x0138,0x0139,0x013A,0x013B,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x016D,0x016E,0x016F,0x0170,0x0175,0x0172,0x0173 + .hword 0x0165,0x0172,0x0173,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0165,0x0166,0x0167,0x0168,0x0165,0x0176,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x055F,0x055E,0x015E,0x0560,0x055F,0x015E + + .hword 0x0560,0x055F,0x012E,0x012F,0x0130,0x012D,0x012E,0x015F + .hword 0x016B,0x012E,0x012F,0x016F,0x0170,0x0175,0x0172,0x0173 + .hword 0x0165,0x0172,0x0173,0x0174,0x0165,0x0166,0x0167,0x0168 + .hword 0x0165,0x0166,0x0167,0x0168,0x0165,0x0176,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0143,0x0144,0x0145,0x0146,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0165,0x0166,0x0167,0x0168,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x056A,0x0569,0x0169,0x056B,0x056A,0x0169 + + .hword 0x056B,0x056A,0x0578,0x0577,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0165,0x0166,0x0167,0x0168,0x0179,0x0176,0x0177 + .hword 0x0178,0x0176,0x0177,0x0178,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x014E,0x014F,0x0150,0x0151,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x0573,0x0572,0x0172,0x0574,0x0573,0x0172 + + .hword 0x0574,0x0573,0x0560,0x055F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0577,0x0576,0x0176,0x0578,0x0577,0x0176 + + .hword 0x0578,0x0577,0x056B,0x056A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0185,0x0186,0x0586,0x0187,0x0188,0x0189,0x018A + .hword 0x018B,0x018C,0x018D,0x018E,0x018F,0x0190,0x0186,0x0586 + .hword 0x0585,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0185,0x0186,0x0586,0x0187,0x0188,0x0189,0x018A + .hword 0x018B,0x018C,0x018D,0x018E,0x018F,0x0190,0x0186,0x0586 + .hword 0x0585,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197 + .hword 0x0198,0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592 + .hword 0x019E,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197 + .hword 0x0198,0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592 + .hword 0x019E,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0191,0x0192,0x0193,0x0194,0x0195,0x0196,0x0197,0x0198 + .hword 0x0199,0x019A,0x019B,0x019C,0x019D,0x0593,0x0592,0x019E + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5 + .hword 0x01A6,0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0 + .hword 0x01AD,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5 + .hword 0x01A6,0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0 + .hword 0x01AD,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x019F,0x01A0,0x01A1,0x01A2,0x01A3,0x01A4,0x01A5,0x01A6 + .hword 0x01A7,0x01A8,0x01A9,0x01AA,0x01AB,0x01AC,0x05A0,0x01AD + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4 + .hword 0x01B5,0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC + .hword 0x05AE,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4 + .hword 0x01B5,0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC + .hword 0x05AE,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01AE,0x01AF,0x01B0,0x01B1,0x01B2,0x01B3,0x01B4,0x01B5 + .hword 0x01B6,0x01B7,0x01B8,0x01B9,0x01BA,0x01BB,0x01BC,0x05AE + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3 + .hword 0x01C4,0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB + .hword 0x05BD,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3 + .hword 0x01C4,0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB + .hword 0x05BD,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01BD,0x01BE,0x01BF,0x01C0,0x01C1,0x01C2,0x01C3,0x01C4 + .hword 0x01C5,0x01C6,0x01C7,0x01C8,0x01C9,0x01CA,0x01CB,0x05BD + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2 + .hword 0x01D3,0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD + .hword 0x01DA,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2 + .hword 0x01D3,0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD + .hword 0x01DA,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x01CC,0x01CD,0x01CE,0x01CF,0x01D0,0x01D1,0x01D2,0x01D3 + .hword 0x01D4,0x01D5,0x01D6,0x01D7,0x01D8,0x01D9,0x05CD,0x01DA + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1 + .hword 0x01E2,0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC + .hword 0x05DB,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1 + .hword 0x01E2,0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC + .hword 0x05DB,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x01DB,0x01DC,0x01DD,0x01DE,0x01DF,0x01E0,0x01E1,0x01E2 + .hword 0x01E3,0x01E4,0x01E5,0x01E6,0x01E7,0x01E8,0x05DC,0x05DB + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF + .hword 0x01F0,0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA + .hword 0x05E9,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF + .hword 0x01F0,0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA + .hword 0x05E9,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x01E9,0x01EA,0x01EB,0x01EC,0x01ED,0x01EE,0x01EF,0x01F0 + .hword 0x01F1,0x01F2,0x01F3,0x01F4,0x01F5,0x01F6,0x05EA,0x05E9 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586 + .hword 0x0585,0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203 + .hword 0x0204,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586 + .hword 0x0585,0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203 + .hword 0x0204,0x0175,0x0172,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x01F7,0x01F8,0x01F9,0x01FA,0x01FB,0x01FC,0x0586,0x0585 + .hword 0x01FD,0x01FE,0x01FF,0x0200,0x0201,0x0202,0x0203,0x0204 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974 + .hword 0x0591,0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211 + .hword 0x0212,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974 + .hword 0x0591,0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211 + .hword 0x0212,0x0179,0x0176,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0205,0x0206,0x0207,0x0208,0x0209,0x020A,0x0974,0x0591 + .hword 0x020B,0x020C,0x020D,0x020E,0x020F,0x0210,0x0211,0x0212 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x0213 + .hword 0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A + .hword 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222 + .hword 0x0223,0x0224,0x0A0C,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x0213 + .hword 0x0214,0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A + .hword 0x021B,0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222 + .hword 0x0223,0x0224,0x0A0C,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0215,0x0216,0x0217,0x0218,0x0219,0x05FF,0x021A,0x021B + .hword 0x021C,0x021D,0x021E,0x021F,0x0220,0x0221,0x0222,0x0223 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x0225 + .hword 0x0226,0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D + .hword 0x022E,0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234 + .hword 0x0235,0x0236,0x0237,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x0225 + .hword 0x0226,0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D + .hword 0x022E,0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234 + .hword 0x0235,0x0236,0x0237,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x0227,0x0228,0x0229,0x022A,0x022B,0x022C,0x022D,0x022E + .hword 0x022F,0x0230,0x0231,0x0232,0x0608,0x0233,0x0234,0x0235 + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0E0C + .hword 0x0624,0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174 + .hword 0x0D91,0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11 + .hword 0x0A12,0x0238,0x0239,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0E0C + .hword 0x0624,0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174 + .hword 0x0D91,0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11 + .hword 0x0A12,0x0238,0x0239,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0A05,0x0A06,0x0A07,0x0A08,0x0A09,0x0A0A,0x0174,0x0D91 + .hword 0x0A0B,0x0A0C,0x0A0D,0x0A0E,0x0A0F,0x0A10,0x0A11,0x0A12 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0DFE + .hword 0x023A,0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03 + .hword 0x0A04,0x023B,0x0A1D,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0DFE + .hword 0x023A,0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03 + .hword 0x0A04,0x023B,0x0A1D,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09F7,0x09F8,0x09F9,0x09FA,0x09FB,0x09FC,0x0D86,0x0D85 + .hword 0x09FD,0x09FE,0x09FF,0x0A00,0x0A01,0x0A02,0x0A03,0x0A04 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x0213 + .hword 0x023C,0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF + .hword 0x09F0,0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA + .hword 0x0DE9,0x023D,0x023E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x0213 + .hword 0x023C,0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF + .hword 0x09F0,0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA + .hword 0x0DE9,0x023D,0x023E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09E9,0x09EA,0x09EB,0x09EC,0x09ED,0x09EE,0x09EF,0x09F0 + .hword 0x09F1,0x09F2,0x09F3,0x09F4,0x09F5,0x09F6,0x0DEA,0x0DE9 + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x023F + .hword 0x0240,0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1 + .hword 0x09E2,0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC + .hword 0x0DDB,0x0241,0x0242,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x023F + .hword 0x0240,0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1 + .hword 0x09E2,0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC + .hword 0x0DDB,0x0241,0x0242,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x09DB,0x09DC,0x09DD,0x09DE,0x09DF,0x09E0,0x09E1,0x09E2 + .hword 0x09E3,0x09E4,0x09E5,0x09E6,0x09E7,0x09E8,0x0DDC,0x0DDB + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0243 + .hword 0x0244,0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2 + .hword 0x09D3,0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD + .hword 0x09DA,0x0644,0x0245,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0243 + .hword 0x0244,0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2 + .hword 0x09D3,0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD + .hword 0x09DA,0x0644,0x0245,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x09CC,0x09CD,0x09CE,0x09CF,0x09D0,0x09D1,0x09D2,0x09D3 + .hword 0x09D4,0x09D5,0x09D6,0x09D7,0x09D8,0x09D9,0x0DCD,0x09DA + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0176,0x0177,0x0178,0x0179,0x0176,0x0246 + .hword 0x0247,0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3 + .hword 0x09C4,0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB + .hword 0x0DBD,0x0248,0x0249,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0246 + .hword 0x0247,0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3 + .hword 0x09C4,0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB + .hword 0x0DBD,0x0248,0x0249,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x09BD,0x09BE,0x09BF,0x09C0,0x09C1,0x09C2,0x09C3,0x09C4 + .hword 0x09C5,0x09C6,0x09C7,0x09C8,0x09C9,0x09CA,0x09CB,0x0DBD + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0552,0x0525 + + .hword 0x010D,0x0159,0x015E,0x015F,0x0160,0x015D,0x015E,0x024A + .hword 0x024B,0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4 + .hword 0x09B5,0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC + .hword 0x0DAE,0x024C,0x064A,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x024A + .hword 0x024B,0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4 + .hword 0x09B5,0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC + .hword 0x0DAE,0x024C,0x064A,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x09AE,0x09AF,0x09B0,0x09B1,0x09B2,0x09B3,0x09B4,0x09B5 + .hword 0x09B6,0x09B7,0x09B8,0x09B9,0x09BA,0x09BB,0x09BC,0x0DAE + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0559,0x050D + + .hword 0x0125,0x0126,0x0169,0x016A,0x016B,0x016C,0x0169,0x024D + .hword 0x0E1C,0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5 + .hword 0x09A6,0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0 + .hword 0x09AD,0x024E,0x0A1D,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x024D + .hword 0x0E1C,0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5 + .hword 0x09A6,0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0 + .hword 0x09AD,0x024E,0x0A1D,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x099F,0x09A0,0x09A1,0x09A2,0x09A3,0x09A4,0x09A5,0x09A6 + .hword 0x09A7,0x09A8,0x09A9,0x09AA,0x09AB,0x09AC,0x0DA0,0x09AD + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0526,0x0525 + + .hword 0x010D,0x0131,0x0172,0x0173,0x0174,0x0175,0x0172,0x024F + .hword 0x0E0B,0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997 + .hword 0x0998,0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92 + .hword 0x099E,0x0A0B,0x0A0C,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x017E,0x017F,0x0180,0x0175,0x0172,0x0173 + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x024F + .hword 0x0E0B,0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997 + .hword 0x0998,0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92 + .hword 0x099E,0x0A0B,0x0A0C,0x0173,0x0174,0x0175,0x014E,0x014F + .hword 0x0150,0x0151,0x017E,0x017F,0x0180,0x0175,0x0172,0x0173 + .hword 0x0991,0x0992,0x0993,0x0994,0x0995,0x0996,0x0997,0x0998 + .hword 0x0999,0x099A,0x099B,0x099C,0x099D,0x0D93,0x0D92,0x099E + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0531,0x050D + + .hword 0x0115,0x013C,0x0176,0x0177,0x0178,0x0179,0x0176,0x0250 + .hword 0x0DFD,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A + .hword 0x098B,0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0182,0x0183,0x0184,0x0179,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0178,0x0179,0x0176,0x0169,0x056B,0x056A,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0250 + .hword 0x0DFD,0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A + .hword 0x098B,0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86 + .hword 0x0D85,0x09FD,0x09FE,0x0177,0x0178,0x0179,0x012D,0x012E + .hword 0x012F,0x0130,0x0182,0x0183,0x0184,0x0179,0x0176,0x0177 + .hword 0x0985,0x0986,0x0D86,0x0987,0x0988,0x0989,0x098A,0x098B + .hword 0x098C,0x098D,0x098E,0x098F,0x0990,0x0986,0x0D86,0x0D85 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x053C,0x0515 + + .hword 0x011D,0x0147,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x0251,0x0252,0x0253,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0172,0x0574,0x0573,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0138,0x0139 + .hword 0x013A,0x013B,0x0251,0x0252,0x0253,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0547,0x051D + + .hword 0x0125,0x0152,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0254,0x0255,0x0256,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0176,0x0578,0x0577,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0143,0x0144 + .hword 0x0145,0x0146,0x0254,0x0255,0x0256,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x0552,0x0525 + + .hword 0x010D,0x0159,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x015E,0x0560,0x055F,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0559,0x050D + + .hword 0x0125,0x0126,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x017D,0x017E,0x017F,0x0180 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0169,0x056B,0x056A,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x017D,0x017E,0x017F,0x0180 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0578,0x0577,0x0576,0x0526,0x0525 + + .hword 0x010D,0x0131,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0181,0x0182,0x0183,0x0184 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x017A,0x017B,0x017C,0x015F,0x015F + .hword 0x0160,0x015D,0x015E,0x0172,0x0574,0x0573,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0181,0x0182,0x0183,0x0184 + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x017A,0x017B,0x017C,0x015F,0x015F + .hword 0x0160,0x015D,0x015E,0x0560,0x055F,0x055E,0x0531,0x050D + + .hword 0x0115,0x013C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x0257,0x0251,0x0252,0x0253 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x014E,0x014F + .hword 0x0150,0x0151,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0161,0x0162,0x0163,0x0164,0x016A + .hword 0x016B,0x016C,0x0169,0x0176,0x0578,0x0577,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x0257,0x0251,0x0252,0x0253 + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x014E,0x014F + .hword 0x0150,0x0151,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x016A,0x016B,0x016C,0x0169,0x016A + .hword 0x016B,0x016C,0x0169,0x0161,0x0162,0x0163,0x0164,0x016A + .hword 0x016B,0x016C,0x0169,0x056B,0x056A,0x0569,0x053C,0x0515 + + .hword 0x011D,0x0147,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0258,0x0254,0x0255,0x0256 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x016D,0x016E,0x016F,0x0170,0x0173 + .hword 0x0174,0x0175,0x0172,0x015E,0x0560,0x055F,0x0172,0x0574 + + .hword 0x0573,0x0172,0x0574,0x0573,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0258,0x0254,0x0255,0x0256 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x012D,0x012E + .hword 0x012F,0x0130,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x016D,0x016E,0x016F,0x0170,0x0173 + .hword 0x0174,0x0175,0x0172,0x0574,0x0573,0x0572,0x0547,0x051D + + .hword 0x0125,0x0152,0x0172,0x0173,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0172,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0165,0x0166,0x0167,0x0168,0x0177 + .hword 0x0178,0x0179,0x0176,0x0169,0x056B,0x056A,0x0176,0x0578 + + .hword 0x0577,0x0176,0x0578,0x0577,0x0174,0x0175,0x0172,0x0173 + .hword 0x0174,0x0175,0x0172,0x0172,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0138,0x0139 + .hword 0x013A,0x013B,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0165,0x0166,0x0167,0x0168,0x0177 + .hword 0x0178,0x0179,0x0176,0x0577,0x0576,0x0179,0x0259,0x0525 + + .hword 0x0659,0x025A,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0172,0x0172,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0172,0x0574,0x0573,0x015E,0x0560 + + .hword 0x055F,0x015E,0x0560,0x055F,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0172,0x0172,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x0143,0x0144 + .hword 0x0145,0x0146,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x015F,0x0160,0x015D,0x015E,0x015F + .hword 0x0160,0x015D,0x015E,0x0577,0x0576,0x065A,0x0259,0x0179 + + .hword 0x025B,0x025C,0x025D,0x0176,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x014E,0x014F + .hword 0x0150,0x0151,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0176,0x0578,0x0577,0x0169,0x056B + + .hword 0x056A,0x0169,0x056B,0x056A,0x0177,0x0178,0x0179,0x0176 + .hword 0x0177,0x0178,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x014E,0x014F + .hword 0x0150,0x0151,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0177,0x0178,0x0179,0x0176,0x0177 + .hword 0x0178,0x0179,0x0176,0x0576,0x065D,0x065C,0x065B,0x0179 + + .hword 0x0179,0x0179,0x025E,0x025F,0x0260,0x0261,0x0262,0x0263 + .hword 0x0260,0x0261,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x012D,0x012E + .hword 0x012F,0x0130,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x0263,0x0260,0x0261,0x0262,0x0263,0x0260 + + .hword 0x0261,0x0262,0x0263,0x0260,0x0261,0x0262,0x0262,0x0263 + .hword 0x0260,0x0261,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x012D,0x012E + .hword 0x012F,0x0130,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x0260,0x0261,0x0262,0x0263,0x0260 + .hword 0x0261,0x0262,0x025F,0x065F,0x065E,0x0264,0x0179,0x0179 + + .hword 0x0179,0x0179,0x0265,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7 + .hword 0x0CF6,0x0266,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0138,0x0139 + .hword 0x013A,0x013B,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF5,0x0CF7 + .hword 0x0CF6,0x0266,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0138,0x0139 + .hword 0x013A,0x013B,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x0CF6,0x0266,0x0CF5,0x0CF7,0x0CF6 + .hword 0x0266,0x0CF5,0x0CF7,0x08F7,0x0665,0x0179,0x0179,0x0179 + +@}}BLOCK(Layer1024x1024) + +@{{BLOCK(Layer256x512) + +@======================================================================= +@ +@ Layer256x512, 256x512@8, +@ + regular map (flat), not compressed, 32x64 +@ Total size: 4096 = 4096 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer256x512Map @ 4096 bytes +Layer256x512Map: + .hword 0x0267,0x0268,0x0269,0x026A,0x026B,0x026C,0x026D,0x026E + .hword 0x026F,0x0270,0x0271,0x0272,0x026F,0x0270,0x0271,0x0272 + .hword 0x026F,0x0270,0x0271,0x0272,0x026F,0x0270,0x0271,0x0272 + .hword 0x026F,0x0273,0x0274,0x066B,0x066A,0x0669,0x0668,0x0667 + .hword 0x0275,0x0276,0x0277,0x0278,0x0279,0x027A,0x027B,0x027C + .hword 0x027D,0x027E,0x0277,0x027F,0x027D,0x027E,0x0277,0x027F + .hword 0x027D,0x027E,0x0277,0x027F,0x027D,0x027E,0x0277,0x027F + .hword 0x027D,0x067B,0x0280,0x0679,0x0678,0x0677,0x0676,0x0675 + + .hword 0x0281,0x0E7B,0x0A80,0x0E79,0x0E78,0x0E77,0x0E7E,0x0E7D + .hword 0x0282,0x0E7B,0x0A80,0x0E79,0x0282,0x0E7B,0x0A80,0x0E79 + .hword 0x0282,0x0E7B,0x0A80,0x0E79,0x0282,0x0E7B,0x0A80,0x0E79 + .hword 0x0282,0x0A7E,0x0A77,0x0A7F,0x0A79,0x0A7A,0x0A7B,0x0681 + .hword 0x0283,0x0284,0x0285,0x0286,0x0E72,0x0E71,0x0E70,0x0287 + .hword 0x0E6E,0x0A73,0x0A74,0x0E6B,0x0E6E,0x0A73,0x0A74,0x0E6B + .hword 0x0E6E,0x0A73,0x0A74,0x0E6B,0x0E6E,0x0A73,0x0A74,0x0E6B + .hword 0x0E6E,0x0A70,0x0A71,0x0A72,0x0686,0x0288,0x0289,0x0683 + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x068D,0x028E,0x068B,0x068A + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x0293,0x0691,0x0690,0x068F + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x0014,0x0015 + .hword 0x001A,0x006A,0x0014,0x0015,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x0014,0x0015,0x001A,0x006A,0x0014,0x0015 + .hword 0x0014,0x000A,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x001B,0x001C + .hword 0x0021,0x0036,0x001B,0x001C,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x001B,0x001C,0x0021,0x0036,0x001B,0x001C + .hword 0x001B,0x000E,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x0009,0x000A + .hword 0x000B,0x000C,0x0009,0x000A,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x0009,0x000A,0x000B,0x000C,0x0009,0x000A + .hword 0x0009,0x0015,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x000D,0x000E + .hword 0x0013,0x0037,0x000D,0x0009,0x000A,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x000D,0x000E,0x0013,0x0037,0x000D,0x000E + .hword 0x000D,0x001C,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x0014,0x0009 + .hword 0x000A,0x0009,0x000A,0x0009,0x000A,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x0009,0x000A,0x0009,0x000A,0x0009,0x000A + .hword 0x0014,0x000A,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x001B,0x000D + .hword 0x000E,0x000D,0x000E,0x000D,0x000E,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x000D,0x000E,0x000D,0x000E,0x000D,0x000E + .hword 0x001B,0x000E,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x0009,0x0014 + .hword 0x0015,0x0014,0x0015,0x0014,0x0015,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x0014,0x0015,0x0014,0x0015,0x0014,0x0015 + .hword 0x0009,0x0015,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x000D,0x001B + .hword 0x001C,0x001B,0x001C,0x001B,0x001C,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x001B,0x001C,0x001B,0x001C,0x001B,0x001C + .hword 0x0009,0x000A,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x0009,0x000A,0x0009 + .hword 0x000A,0x0009,0x000A,0x0009,0x000A,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x0009,0x000A,0x0009,0x000A,0x0009,0x000A + .hword 0x000D,0x000E,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000D,0x000E,0x000D + .hword 0x000E,0x000D,0x000E,0x000D,0x000E,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x000D,0x000E,0x000D,0x000E,0x000D,0x000E + .hword 0x0014,0x0015,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0014,0x0015,0x0014 + .hword 0x0015,0x0014,0x0015,0x0014,0x0015,0x029C,0x029D,0x029E + .hword 0x029F,0x02A0,0x0014,0x0015,0x0014,0x0015,0x0014,0x0015 + .hword 0x001B,0x001C,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001B,0x001C,0x000E + .hword 0x02A1,0x02A2,0x02A3,0x02A4,0x02A5,0x02A6,0x02A7,0x02A8 + .hword 0x02A9,0x02AA,0x06A6,0x06A5,0x06A4,0x06A3,0x06A2,0x06A1 + .hword 0x0009,0x000A,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x0009,0x000A,0x0015 + .hword 0x02AB,0x02AC,0x02AD,0x02AE,0x02AF,0x02B0,0x02B1,0x02B2 + .hword 0x02B3,0x02B4,0x06B0,0x06AF,0x06AE,0x06AD,0x06AC,0x06AB + .hword 0x000D,0x000E,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000D,0x000E,0x02B5 + .hword 0x02B6,0x02B7,0x02B8,0x02B9,0x02BA,0x02BB,0x02BC,0x02BD + .hword 0x02BE,0x02BF,0x06BB,0x06BA,0x06B9,0x06B8,0x06B7,0x06B6 + .hword 0x0014,0x0009,0x000A,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0014,0x0015,0x02C0 + .hword 0x02C1,0x02C2,0x02C3,0x0014,0x0015,0x001A,0x006A,0x0014 + .hword 0x0015,0x001A,0x006A,0x0014,0x0015,0x06C3,0x06C2,0x06C1 + .hword 0x06C0,0x000D,0x000E,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x02C4,0x02C5 + .hword 0x02C6,0x02C7,0x02C8,0x001B,0x001C,0x0021,0x0036,0x001B + .hword 0x001C,0x0021,0x0036,0x001B,0x001C,0x06C8,0x06C7,0x06C6 + .hword 0x06C5,0x0014,0x0015,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x02C9,0x02CA + .hword 0x02CB,0x02CC,0x0009,0x000A,0x000A,0x000B,0x000C,0x0009 + .hword 0x000A,0x000B,0x000C,0x0009,0x0009,0x000A,0x06CC,0x06CB + .hword 0x06CA,0x001B,0x001C,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x02CD,0x02CE + .hword 0x02CF,0x02D0,0x000D,0x000E,0x000E,0x0013,0x0037,0x000D + .hword 0x000E,0x0013,0x0037,0x000D,0x000D,0x000E,0x06D0,0x06CF + .hword 0x06CE,0x0009,0x000A,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x02D1,0x02D2 + .hword 0x02D3,0x02D4,0x0014,0x0015,0x0015,0x001A,0x006A,0x0014 + .hword 0x0015,0x001A,0x006A,0x0014,0x0014,0x0015,0x06D4,0x06D3 + .hword 0x06D2,0x000D,0x000E,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x02D5,0x02D6 + .hword 0x02D7,0x02D8,0x001B,0x001C,0x001C,0x0021,0x0036,0x001B + .hword 0x001C,0x0021,0x0036,0x001B,0x001B,0x001C,0x06D8,0x06D7 + .hword 0x06D6,0x0014,0x0015,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x02D9,0x02DA + .hword 0x02DB,0x02DC,0x0009,0x000A,0x001A,0x006A,0x0014,0x0015 + .hword 0x0015,0x001A,0x006A,0x0014,0x0009,0x000A,0x06DC,0x06DB + .hword 0x06DA,0x06D9,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x02DD,0x02DE + .hword 0x02DF,0x02E0,0x000D,0x000E,0x0021,0x0036,0x001B,0x001C + .hword 0x001C,0x0021,0x0036,0x001B,0x0009,0x000A,0x06E0,0x06DF + .hword 0x06DE,0x06DD,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x02E1,0x02E2 + .hword 0x02E3,0x0AE0,0x0014,0x0015,0x000B,0x000C,0x0009,0x000A + .hword 0x000A,0x000B,0x000C,0x0009,0x000D,0x000E,0x0EE0,0x06E3 + .hword 0x06E2,0x06E1,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x0AD9,0x02E4 + .hword 0x0ADB,0x0ADC,0x000D,0x000E,0x0013,0x0037,0x000D,0x000E + .hword 0x000E,0x0013,0x0037,0x000D,0x0014,0x0015,0x0EDC,0x0EDB + .hword 0x06E4,0x0ED9,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x0AD5,0x02E5 + .hword 0x02E6,0x0AD8,0x0014,0x0015,0x001A,0x006A,0x0014,0x0015 + .hword 0x0015,0x001A,0x006A,0x0014,0x001B,0x001C,0x0ED8,0x06E6 + .hword 0x06E5,0x0ED5,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x02E7,0x02E8 + .hword 0x02E9,0x0AD4,0x001B,0x001C,0x0021,0x0036,0x001B,0x001C + .hword 0x001C,0x0021,0x0036,0x001B,0x0009,0x000A,0x0ED4,0x06E9 + .hword 0x06E8,0x06E7,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x02EA,0x02EB + .hword 0x02EC,0x02ED,0x0009,0x000A,0x000B,0x000C,0x0009,0x000A + .hword 0x000A,0x000B,0x000C,0x0009,0x000D,0x000E,0x06ED,0x06EC + .hword 0x06EB,0x06EA,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x0AC9,0x0ACA + .hword 0x02EE,0x02EF,0x000D,0x000E,0x0013,0x0037,0x000D,0x000E + .hword 0x000E,0x0013,0x0037,0x000D,0x0014,0x0015,0x06EF,0x06EE + .hword 0x0ECA,0x0EC9,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x0009,0x000A,0x0AC5 + .hword 0x0AC6,0x0AC7,0x0014,0x0015,0x001A,0x006A,0x0014,0x0015 + .hword 0x0015,0x001A,0x006A,0x0014,0x0015,0x0EC8,0x0EC7,0x0EC6 + .hword 0x0EC5,0x0009,0x000A,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000D,0x000E,0x0AC0 + .hword 0x0AC1,0x0AC2,0x001B,0x001C,0x0021,0x0036,0x001B,0x001C + .hword 0x001C,0x0021,0x0036,0x001B,0x001C,0x0EC3,0x0EC2,0x0EC1 + .hword 0x0EC0,0x000D,0x000E,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0014,0x0015,0x0AB5 + .hword 0x0AB6,0x0AB7,0x0AB8,0x0AB9,0x0ABA,0x0ABB,0x0ABC,0x0ABD + .hword 0x0ABE,0x0ABF,0x0EBB,0x0EBA,0x0EB9,0x0EB8,0x0EB7,0x0EB6 + .hword 0x0EB5,0x0014,0x0015,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001B,0x0009,0x000A + .hword 0x0AAB,0x0AAC,0x0AAD,0x0AAE,0x0AAF,0x02F0,0x02F1,0x0AB2 + .hword 0x0AB3,0x0AB4,0x06F0,0x0EAF,0x0EAE,0x0EAD,0x0EAC,0x0EAB + .hword 0x0009,0x000A,0x001C,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x0009,0x000D,0x000E + .hword 0x0AA1,0x0AA2,0x0AA3,0x0AA4,0x0AA5,0x02F2,0x02F3,0x0AA8 + .hword 0x0AA9,0x0AAA,0x06F2,0x0EA5,0x0EA4,0x0EA3,0x0EA2,0x0EA1 + .hword 0x000D,0x000E,0x000A,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000D,0x0014,0x0015 + .hword 0x0009,0x000A,0x0009,0x000A,0x0009,0x0A9C,0x0A9D,0x0A9E + .hword 0x0A9F,0x0AA0,0x0009,0x000A,0x0009,0x000A,0x0009,0x0009 + .hword 0x000A,0x0015,0x000E,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0014,0x001B,0x001C + .hword 0x000D,0x000E,0x000D,0x000E,0x000D,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x000D,0x000E,0x000D,0x000E,0x000D,0x000D + .hword 0x000E,0x001C,0x0015,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x000D,0x0009,0x000A + .hword 0x0014,0x0015,0x0014,0x0015,0x0014,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0014,0x0015,0x0014,0x0015,0x0014,0x0014 + .hword 0x0015,0x000A,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x0014,0x000D,0x000E + .hword 0x001B,0x001C,0x001B,0x001C,0x001B,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x001B,0x001C,0x001B,0x001C,0x001B,0x001B + .hword 0x001C,0x000E,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x0014,0x0015 + .hword 0x0009,0x000A,0x0009,0x000A,0x0009,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0009,0x000A,0x0009,0x000A,0x0009,0x0009 + .hword 0x000A,0x0015,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x0009,0x000A + .hword 0x000D,0x000E,0x000D,0x000E,0x000D,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x000D,0x000E,0x000D,0x000E,0x000D,0x000D + .hword 0x000E,0x0015,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x001B,0x001C + .hword 0x0014,0x0015,0x0014,0x0015,0x0014,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0014,0x0015,0x0014,0x0015,0x0014,0x0014 + .hword 0x0015,0x001C,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x0009,0x000A + .hword 0x000B,0x000C,0x0009,0x000A,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x0009,0x000A,0x000B,0x000C,0x0009,0x000A + .hword 0x0009,0x000A,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x000D,0x000E + .hword 0x0013,0x0037,0x000D,0x000E,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x000D,0x000E,0x0013,0x0037,0x000D,0x000E + .hword 0x000D,0x000E,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x0014,0x0015 + .hword 0x001A,0x006A,0x0014,0x0015,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x0014,0x0015,0x001A,0x006A,0x0014,0x0015 + .hword 0x0014,0x0015,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x001B,0x001C + .hword 0x0021,0x0036,0x001B,0x001C,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x001B,0x001C,0x0021,0x0036,0x001B,0x001C + .hword 0x001B,0x001C,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0294,0x0295,0x0296,0x0297,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0294,0x0295,0x0296,0x0297 + .hword 0x0298,0x0299,0x029A,0x029B,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x0298,0x0299,0x029A,0x029B + + .hword 0x028A,0x028B,0x028C,0x028D,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x028A,0x028B,0x028C,0x028D + .hword 0x028F,0x0290,0x0291,0x0292,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x028F,0x0290,0x0291,0x0292 + + .hword 0x0A8F,0x0A90,0x0A91,0x0E93,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0A93,0x0E91,0x0E90,0x0E8F + .hword 0x0A8A,0x0A8B,0x0E8E,0x0A8D,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x0E8D,0x0A8E,0x0E8B,0x0E8A + + .hword 0x0A83,0x0E89,0x0E88,0x0A86,0x0672,0x0671,0x026F,0x0270 + .hword 0x0271,0x0272,0x026F,0x0270,0x0271,0x0272,0x026F,0x0270 + .hword 0x0271,0x0272,0x026F,0x0270,0x0271,0x0272,0x026F,0x0270 + .hword 0x0271,0x0270,0x0271,0x0272,0x0E86,0x0A88,0x0A89,0x0E83 + .hword 0x0A81,0x067B,0x067A,0x0679,0x067F,0x0677,0x027D,0x027E + .hword 0x0277,0x027F,0x027D,0x027E,0x0277,0x027F,0x027D,0x027E + .hword 0x0277,0x027F,0x027D,0x027E,0x0277,0x027F,0x027D,0x027E + .hword 0x0277,0x027E,0x0277,0x027F,0x0279,0x027A,0x027B,0x0E81 + + .hword 0x0A75,0x0A76,0x0A77,0x0A78,0x0A79,0x0E80,0x0282,0x0E7B + .hword 0x0A80,0x0E79,0x0282,0x0E7B,0x0A80,0x0E79,0x0282,0x0E7B + .hword 0x0A80,0x0E79,0x0282,0x0E7B,0x0A80,0x0E79,0x0282,0x0E7B + .hword 0x0A80,0x0E7B,0x0A80,0x0E79,0x0E78,0x0E77,0x0E76,0x0E75 + .hword 0x0A67,0x0A68,0x0A69,0x0A6A,0x0A6B,0x0E74,0x0E6E,0x0A73 + .hword 0x0A74,0x0E6B,0x0E6E,0x0A73,0x0A74,0x0E6B,0x0E6E,0x0A73 + .hword 0x0A74,0x0E6B,0x0E6E,0x0A73,0x0A74,0x0E6B,0x0E6E,0x0A73 + .hword 0x0A74,0x0A73,0x0A74,0x0E6B,0x0E6A,0x0E69,0x0E68,0x0E67 + +@}}BLOCK(Layer256x512) + +@{{BLOCK(Layer512x256) + +@======================================================================= +@ +@ Layer512x256, 512x256@8, +@ + regular map (flat), not compressed, 64x32 +@ Total size: 4096 = 4096 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global Layer512x256Map @ 4096 bytes +Layer512x256Map: + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + .hword 0x0024,0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027 + + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + .hword 0x002A,0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D + + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + .hword 0x002E,0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035 + .hword 0x0032,0x0033,0x0034,0x0035,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0027,0x000F,0x0010,0x0011,0x0012 + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000F,0x0010,0x0011,0x0012,0x002A,0x002B,0x002C,0x002D + + .hword 0x002A,0x002B,0x002C,0x002D,0x0016,0x0017,0x0018,0x0019 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000B,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x0016,0x0017,0x0018,0x0019,0x002E,0x002F,0x0030,0x0031 + + .hword 0x002E,0x002F,0x0030,0x0031,0x001D,0x001E,0x001F,0x0020 + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0013,0x0036,0x0036 + .hword 0x0036,0x0036,0x0038,0x02F4,0x0039,0x003A,0x003B,0x003C + .hword 0x06F4,0x0438,0x0036,0x0036,0x0036,0x0036,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x001D,0x001E,0x001F,0x0020,0x0032,0x0033,0x0034,0x0035 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0022,0x0023,0x0028,0x0029 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001A,0x0036,0x0036 + .hword 0x02F5,0x003E,0x003F,0x02F6,0x0040,0x0041,0x0042,0x0043 + .hword 0x06F6,0x043F,0x043E,0x0036,0x0036,0x0036,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x0022,0x0023,0x0028,0x0029,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0027,0x000F,0x0010,0x0011,0x0012 + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x0021,0x0036,0x0044 + .hword 0x02F7,0x0046,0x0003,0x0004,0x0001,0x0002,0x0003,0x0004 + .hword 0x0001,0x0002,0x0446,0x0445,0x0444,0x0036,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000F,0x0010,0x0011,0x0012,0x002A,0x002B,0x002C,0x002D + + .hword 0x002A,0x002B,0x002C,0x002D,0x0016,0x0017,0x0018,0x0019 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000B,0x004C,0x004D + .hword 0x004E,0x004F,0x0008,0x0005,0x0006,0x0007,0x0008,0x0005 + .hword 0x0006,0x0007,0x044F,0x044E,0x044D,0x044C,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x0016,0x0017,0x0018,0x0019,0x002E,0x002F,0x0030,0x0031 + + .hword 0x002E,0x002F,0x0030,0x0031,0x001D,0x001E,0x001F,0x0020 + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0013,0x0055,0x0056 + .hword 0x0057,0x0058,0x02F8,0x02F9,0x02FA,0x02FB,0x02F8,0x02F9 + .hword 0x02FA,0x02FB,0x0458,0x0457,0x0456,0x0455,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x001D,0x001E,0x001F,0x0020,0x0032,0x0033,0x0034,0x0035 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0022,0x0023,0x0028,0x0029 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001A,0x005E,0x005F + .hword 0x0060,0x0061,0x02FC,0x02FD,0x02FE,0x02FF,0x0300,0x0301 + .hword 0x0302,0x0303,0x0461,0x0460,0x045F,0x045E,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x0022,0x0023,0x0028,0x0029,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0027,0x000F,0x0010,0x0011,0x0012 + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x0021,0x0064,0x0065 + .hword 0x0066,0x0067,0x0304,0x0305,0x0306,0x0307,0x0308,0x0309 + .hword 0x030A,0x030B,0x0467,0x0466,0x0465,0x0464,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000F,0x0010,0x0011,0x0012,0x002A,0x002B,0x002C,0x002D + + .hword 0x002A,0x002B,0x002C,0x002D,0x0016,0x0017,0x0018,0x0019 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000B,0x0068,0x0069 + .hword 0x030C,0x030D,0x030E,0x030F,0x0310,0x0036,0x0036,0x0311 + .hword 0x0312,0x0313,0x070D,0x070C,0x0469,0x0468,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x0016,0x0017,0x0018,0x0019,0x002E,0x002F,0x0030,0x0031 + + .hword 0x002E,0x002F,0x0030,0x0031,0x001D,0x001E,0x001F,0x0020 + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0013,0x0055,0x0056 + .hword 0x0314,0x0315,0x0316,0x0317,0x0318,0x0036,0x0036,0x0319 + .hword 0x031A,0x031B,0x0715,0x0714,0x0456,0x0455,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x001D,0x001E,0x001F,0x0020,0x0032,0x0033,0x0034,0x0035 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0022,0x0023,0x0028,0x0029 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001A,0x005E,0x005F + .hword 0x031C,0x031D,0x031E,0x031F,0x0320,0x0036,0x0036,0x0321 + .hword 0x0322,0x0323,0x071D,0x071C,0x045F,0x045E,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x0022,0x0023,0x0028,0x0029,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0027,0x000F,0x0010,0x0011,0x0012 + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x0021,0x0064,0x0065 + .hword 0x0324,0x0325,0x0326,0x0036,0x0036,0x0036,0x0036,0x0036 + .hword 0x0327,0x0726,0x0725,0x0724,0x0465,0x0464,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000F,0x0010,0x0011,0x0012,0x002A,0x002B,0x002C,0x002D + + .hword 0x002A,0x002B,0x002C,0x002D,0x0016,0x0017,0x0018,0x0019 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000B,0x0068,0x0069 + .hword 0x0328,0x0037,0x000D,0x000E,0x0013,0x0036,0x0036,0x000E + .hword 0x0013,0x0036,0x0329,0x0728,0x0469,0x0468,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x0016,0x0017,0x0018,0x0019,0x002E,0x002F,0x0030,0x0031 + + .hword 0x002E,0x002F,0x0030,0x0031,0x001D,0x001E,0x001F,0x0020 + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0036,0x0064,0x032A + .hword 0x032B,0x006A,0x0014,0x0015,0x001A,0x006A,0x0014,0x0015 + .hword 0x001A,0x0036,0x0036,0x0036,0x072A,0x0464,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x001D,0x001E,0x001F,0x0020,0x0032,0x0033,0x0034,0x0035 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0022,0x0023,0x0028,0x0029 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x0036,0x0068,0x032C + .hword 0x0036,0x0036,0x001B,0x001C,0x0021,0x0024,0x0025,0x0026 + .hword 0x0027,0x0036,0x0036,0x0036,0x072C,0x0468,0x0036,0x0036 + .hword 0x0036,0x0036,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x0022,0x0023,0x0028,0x0029,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0027,0x000F,0x0010,0x0011,0x0012 + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x0036,0x0055,0x032D + .hword 0x0036,0x000C,0x0009,0x000A,0x000B,0x002A,0x002B,0x002C + .hword 0x002D,0x0036,0x0036,0x0036,0x072D,0x0455,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000F,0x0010,0x0011,0x0012,0x002A,0x002B,0x002C,0x002D + + .hword 0x002A,0x002B,0x002C,0x002D,0x0016,0x0017,0x0018,0x0019 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x005E,0x00D2 + .hword 0x0036,0x0037,0x000D,0x000E,0x0013,0x002E,0x002F,0x0030 + .hword 0x0031,0x0036,0x0036,0x0036,0x00D3,0x045E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x0016,0x0017,0x0018,0x0019,0x002E,0x002F,0x0030,0x0031 + + .hword 0x002E,0x002F,0x0030,0x0031,0x001D,0x001E,0x001F,0x0020 + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x00D4,0x00D5 + .hword 0x00D6,0x006A,0x0014,0x0015,0x001A,0x0032,0x0033,0x0034 + .hword 0x0035,0x0036,0x0036,0x00DE,0x00DF,0x00E0,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x001D,0x001E,0x001F,0x0020,0x0032,0x0033,0x0034,0x0035 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0022,0x0023,0x0028,0x0029 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0036,0x00E1 + .hword 0x00E2,0x00E3,0x0036,0x0036,0x0036,0x0036,0x0036,0x0036 + .hword 0x0036,0x0036,0x00E4,0x00E5,0x00E6,0x0036,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x0022,0x0023,0x0028,0x0029,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0027,0x000F,0x0010,0x0011,0x0012 + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x0036,0x0036 + .hword 0x00E7,0x00E8,0x00E9,0x00EA,0x00EB,0x00EC,0x00E9,0x00EA + .hword 0x00EB,0x00EC,0x00ED,0x00EE,0x0036,0x0036,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x0009,0x000A,0x000B,0x000C,0x0009,0x000A,0x000B,0x000C + .hword 0x000F,0x0010,0x0011,0x0012,0x002A,0x002B,0x002C,0x002D + + .hword 0x002A,0x002B,0x002C,0x002D,0x0016,0x0017,0x0018,0x0019 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0036,0x0036 + .hword 0x0036,0x00EF,0x00F0,0x00F1,0x00F2,0x00F3,0x00F0,0x00F1 + .hword 0x00F2,0x00F3,0x00F4,0x0036,0x0036,0x0036,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x000D,0x000E,0x0013,0x0037,0x000D,0x000E,0x0013,0x0037 + .hword 0x0016,0x0017,0x0018,0x0019,0x002E,0x002F,0x0030,0x0031 + + .hword 0x002E,0x002F,0x0030,0x0031,0x001D,0x001E,0x001F,0x0020 + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x0014,0x0015,0x001A,0x006A,0x0014,0x0015,0x001A,0x006A + .hword 0x001D,0x001E,0x001F,0x0020,0x0032,0x0033,0x0034,0x0035 + + .hword 0x0032,0x0033,0x0034,0x0035,0x0022,0x0023,0x0028,0x0029 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x001B,0x001C,0x0021,0x0036,0x001B,0x001C,0x0021,0x0036 + .hword 0x0022,0x0023,0x0028,0x0029,0x0024,0x0025,0x0026,0x0027 + + .hword 0x0024,0x0025,0x0026,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + .hword 0x0025,0x0026,0x0027,0x0024,0x0025,0x0026,0x0027,0x0024 + + .hword 0x002A,0x002B,0x002C,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + .hword 0x002B,0x002C,0x002D,0x002A,0x002B,0x002C,0x002D,0x002A + + .hword 0x002E,0x002F,0x0030,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + .hword 0x002F,0x0030,0x0031,0x002E,0x002F,0x0030,0x0031,0x002E + + .hword 0x0032,0x0033,0x0034,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + .hword 0x0033,0x0034,0x0035,0x0032,0x0033,0x0034,0x0035,0x0032 + +@}}BLOCK(Layer512x256) + +@{{BLOCK(TextBackgrounds) + +@======================================================================= +@ +@ TextBackgrounds, 8x6512@8, +@ + palette 256 entries, not compressed +@ + 814 tiles not compressed +@ Total size: 512 + 52096 = 52608 +@ +@ Time-stamp: 2007-12-05, 16:39:14 +@ Exported by Cearn's GBA Image Transmogrifier +@ ( http://www.coranac.com ) +@ +@======================================================================= + + .section .rodata + .align 2 + .global TextBackgroundsPal @ 512 bytes +TextBackgroundsPal: + .hword 0x0000,0x0000,0x0000,0x0001,0x0001,0x0002,0x0002,0x0022 + .hword 0x0023,0x0442,0x0C42,0x1063,0x1083,0x0024,0x0005,0x0045 + .hword 0x0C64,0x0006,0x0007,0x0446,0x0467,0x0847,0x1066,0x0887 + .hword 0x1484,0x14A5,0x1CC5,0x14A6,0x1CC6,0x18C7,0x20E5,0x20E6 + .hword 0x2507,0x2927,0x0008,0x0428,0x0068,0x0869,0x0C69,0x000A + .hword 0x042A,0x044A,0x086A,0x0C6B,0x0488,0x04AA,0x0C8A,0x088B + .hword 0x0CAB,0x04CA,0x1CE8,0x14AA,0x000D,0x0C6D,0x082E,0x088C + .hword 0x08AC,0x04CD,0x08AE,0x10AC,0x14CC,0x18CC,0x108E,0x14AF + + .hword 0x14CF,0x18EE,0x20E9,0x1D0B,0x050E,0x190D,0x152E,0x190E + .hword 0x190F,0x2108,0x2928,0x2D49,0x252A,0x296A,0x316A,0x2D8B + .hword 0x358B,0x39AB,0x252D,0x316D,0x258E,0x258F,0x2DAE,0x318C + .hword 0x35AD,0x39EE,0x39EF,0x41EE,0x420F,0x0832,0x0C33,0x1052 + .hword 0x0C92,0x0CB2,0x08F2,0x1091,0x14B1,0x14D1,0x18D2,0x0C55 + .hword 0x0C75,0x0016,0x0C56,0x1456,0x04F5,0x14B4,0x10B5,0x18D4 + .hword 0x10B6,0x14B6,0x14D6,0x10F7,0x20D5,0x0932,0x1932,0x1552 + .hword 0x0955,0x1536,0x09B6,0x11B4,0x2130,0x2550,0x2171,0x2D51 + + .hword 0x2172,0x21B2,0x2992,0x2DD2,0x31D0,0x3192,0x35D2,0x31F2 + .hword 0x2574,0x25B5,0x29D4,0x2DD5,0x35F4,0x0C58,0x1058,0x1459 + .hword 0x105A,0x10B9,0x14B9,0x10F9,0x18BA,0x14DA,0x145D,0x145E + .hword 0x145E,0x187F,0x08BC,0x14BE,0x189E,0x18BE,0x1C9F,0x18BF + .hword 0x14DF,0x20BF,0x24BF,0x28BF,0x20DE,0x093A,0x1139,0x1D19 + .hword 0x09BA,0x0DBA,0x193E,0x193F,0x09FC,0x291F,0x255E,0x3E10 + .hword 0x3E31,0x2636,0x3214,0x3635,0x3E54,0x3216,0x3A36,0x3E57 + .hword 0x0A3D,0x167D,0x0A9E,0x2A39,0x3659,0x3A79,0x325A,0x2A9E + + .hword 0x3E9C,0x4252,0x4653,0x4A73,0x4E93,0x4275,0x4A74,0x4E94 + .hword 0x4297,0x4A96,0x52B5,0x52B5,0x56D6,0x4AB9,0x42BA,0x4ADA + .hword 0x5AF8,0x52FA,0x5F19,0x5F3B,0x633A,0x6B7B,0x6B9C,0x6FBD + .hword 0x73DE,0x77FF,0x67F9,0x7FF9,0x001F,0x181F,0x301F,0x4C1F + .hword 0x641F,0x7C1F,0x00DF,0x18DF,0x30DF,0x4CDF,0x64DF,0x7CDF + .hword 0x019F,0x199F,0x319F,0x4D9F,0x659F,0x7D9F,0x027F,0x1A7F + .hword 0x327F,0x4E7F,0x667F,0x7E7F,0x033F,0x1B3F,0x333F,0x4F3F + .hword 0x673F,0x7F3F,0x03FF,0x1BFF,0x33FF,0x4FFF,0x67FF,0x7FFF + + .section .rodata + .align 2 + .global TextBackgroundsTiles @ 52096 bytes +TextBackgroundsTiles: + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x36362229,0x36363636,0x36363622,0x5D5D3636,0x36363636,0x6A8D8D5E,0x5E673668,0x70918D6A + .word 0x6A8DA562,0x738E6A6A,0xA6A8AC13,0xA6A6A6A8,0xA9130F0D,0xB8A9B8B8,0x08080806,0x37B9B8A9 + .word 0x27363636,0xB9A94027,0x11363636,0xA97E2A12,0x113A5D67,0x0200080D,0x113A6068,0x23280623 + .word 0x0E37756C,0x36362811,0x0E23B8A9,0x36362812,0x0D1128B8,0x36363623,0x0D362328,0x5D363628 + .word 0xB9A9A9A7,0x0E0E22A8,0x2D7AA976,0x36360003,0x0F2A2A08,0x5D360E02,0x3A000023,0x6A5E5D37 + .word 0x12071128,0x91938E6A,0x08293736,0x91A8AC11,0x28356036,0xA5AC2C0D,0x35606060,0x78382313 + + .word 0x36363636,0x07392336,0x365D5D36,0x06113636,0x5D5E8E67,0x280E1260,0x60678F8F,0x5D111160 + .word 0x6D91918F,0x2811233A,0x70957091,0x00253040,0x6FA9A678,0x040F303A,0xA9A8A8B9,0x0E0E0DA9 + .word 0xB9B97B07,0x37360E13,0x0804000E,0x365D3612,0x04070707,0x6D6E3612,0x29080807,0x6A676EBB + .word 0x290F0F13,0x6A70B97A,0x2413373A,0xB8B8A92A,0x0F252A36,0xB138080D,0x37252536,0x0804070F + .word 0x0D282836,0x05314439,0x5E8E6A5D,0x02132A35,0x70676767,0x12282836,0x6A6A6A6A,0x11111179 + .word 0xB8A9A691,0x623636A9,0x75B8A9A9,0x387A6244,0x13257BA9,0x230D0F0F,0x0F0D1513,0x5D28120F + .word 0x25240208,0x8D673615,0x75622408,0x8D8E8D67,0xB8750807,0x919193A5,0xA5130807,0x93A6ACAC + .word 0x2D080804,0xACA87544,0x0D0D130F,0x7A2D140F,0x08365D36,0x2D13080D,0x675E5D5D,0x13080808 + + .word 0x606E6868,0x0D253A63,0x70918D8D,0x133A3A6D,0xA68F8D91,0x0FA9ACA5,0xA5A59191,0x28A6B8A8 + .word 0xA8A8A5A5,0x0E3AA9A9,0x3862B8B8,0x370F2C2D,0x1336292C,0x110D0F13,0x27292413,0x36363627 + .word 0x1F19191A,0x1C4A191A,0x4951504E,0x1E4E0B18,0x5751514A,0x1A1F1818,0x20504B1F,0x0A0C1C0A + .word 0x1F4A4A4B,0x180C0C0A,0x090A181A,0x0C1A4B0A,0x1A1F0B09,0x0A182020,0x4B50211C,0x0C0B214A + .word 0x1F4E4A18,0x200A191E,0x090A191A,0x210B0C19,0x1A211F0C,0x1A0A181F,0x4B4A1A19,0x0A044A58 + .word 0x1F1E1E1E,0x49515C51,0x1A1E2121,0x594A201F,0x1E1F1E1A,0x211F1F1F,0x4B1A0C21,0x211E1F1F + .word 0x1C4F4E4B,0x0C19574E,0x0C494B4B,0x1A1A1E1C,0x1F181919,0x180A1A20,0x211F190B,0x1A0A181E + .word 0x0C0C040B,0x190A0C18,0x1A0B4E5C,0x1F0B1C0A,0x1A20514B,0x0C1C1C0A,0x1C4E4E4A,0x1A1C0A0B + + .word 0x21191A0A,0x50200B19,0x2121210C,0x501A181E,0x1A504E4B,0x18190B0C,0x0B4B4E1E,0x490B181C + .word 0x0C50200B,0x1F194A1A,0x1C0A1A0B,0x18514B4B,0x4E0B0C19,0x1C4E4E5B,0x4B180B0C,0x4A505151 + .word 0x4B1A1A4B,0x0A0B1C4A,0x211A194B,0x1B200B0C,0x1F180A1F,0x504B1809,0x201A0B0C,0x0A0A1A0A + .word 0x0B0C4A57,0x1A21201C,0x1C1A595C,0x4B5B5C4B,0x0B0C1C4B,0x505B5020,0x0A014F59,0x50211F1A + .word 0x201E4A4A,0x1E1E2020,0x1F1E1A0B,0x20211F1A,0x200B0A18,0x2120201F,0x0A0C1C0A,0x201F1F19 + .word 0x0919201F,0x1F201F19,0x0B1A504B,0x4E211E1E,0x0B1A0C20,0x4B201F20,0x0B1A0A1B,0x211A1F1E + .word 0x796E2E15,0x50320C7D,0xB16F3B19,0x515B4E51,0x4C611D1E,0x4B594E4B,0x21353E33,0x1C4F4B4B + .word 0x32753342,0x3D1B1B19,0x253A4A58,0x656F6540,0x4C575B4B,0x2664703E,0x594A1E1A,0x1A2E6F86 + + .word 0x16334E51,0x4B4B1E18,0x49181F4D,0x4A504B1F,0x0C19504E,0x214A4B0A,0x1A3D1E1C,0x21202119 + .word 0x182B3D3D,0x1A504B4A,0x3363333D,0x164B4E1E,0x706D0C18,0x3B4F202E,0x662E1C0A,0x322B333E + .word 0x1E1F1E20,0x51494633,0x204A1E1F,0x504D7733,0x21422619,0x214B431A,0x503D3B1C,0x494D4D4E + .word 0x181D3E0C,0x5751504A,0x492E1B1D,0x49504B1F,0x421B4A1D,0x6F4C4A4B,0x64534B4B,0x6CA57365 + .word 0x351E4B50,0x1A1A4B41,0x18204B21,0x2020200A,0x1C4A333D,0x1F4E4A1B,0x1C4D6173,0x35353B40 + .word 0x1A3D3F3E,0x434B4226,0x263E6635,0x4E501C3B,0x33162663,0x20214B1F,0x633D4A2B,0x1C215120 + .word 0x191A4B21,0x0A194B20,0x4B212120,0x215C5150,0x1E202021,0x0A1E201E,0x1A1A1E20,0x0C0B4B1A + .word 0x0A181F1E,0x0C090C18,0x18212020,0x2021190B,0x19202021,0x59511F0B,0x191A1E4D,0x511A0A0A + + .word 0x0A1A5B4E,0x1F19180B,0x0A515020,0x0B4E501A,0x0C511A04,0x4E4E4A0A,0x1C0C0B1C,0x4A1E1A0A + .word 0x510A1C1C,0x0C0A1819,0x1A0A194B,0x180B0A0B,0x190A4B5B,0x1A1A0C18,0x0B1C4B21,0x5B502020 + .word 0x0A184B5B,0x0B0B1918,0x181C5121,0x1C501F0A,0x200A1C0C,0x5B511850,0x200B0A4B,0x490A4FC3 + .word 0x0A0A0A0B,0x505B5C1F,0x0A0C0C09,0x20180A04,0x1A504B0B,0x19180A0B,0x5B594B4D,0x1C090B4E + .word 0x211F1C1A,0x1D66884D,0x32494A21,0x65805442,0x4A20204A,0x77434C1F,0x4D4B4B21,0xA94C1F20 + .word 0x1A1F4B4B,0xB14C321C,0x1F204E1A,0x4C1E3232,0x204B4B19,0x0A18421C,0x51502032,0x184B214E + .word 0x161C1C0A,0x4E64633F,0x1D1C0A0C,0x77771064,0x10194B20,0x7777454C,0x215C5156,0x3275A954 + .word 0x161E427B,0x4B217AA9,0x75187289,0x3D4D4DA9,0x750A793B,0x324A1F52,0x46196D0B,0x0C181F4C + + .word 0x324E4E5B,0x1D669591,0x4A50514F,0x4B50491D,0x1F504D46,0x4B1A1A4B,0x321C4A43,0x211A194C + .word 0x353E421E,0x1F180A3D,0x66703526,0x431A0B18,0x65603242,0x7A0C4A57,0x41261C20,0x791A595C + .word 0x601B2042,0x1A4E501A,0x3B0B2121,0x1E514D4C,0x35161C4A,0x204B4E4B,0x3D663518,0x21201F1F + .word 0x53526E3A,0x200B0A19,0x0A0A6FB8,0x0A0C1C0A,0x1A214979,0x0919201F,0x4B5B5C52,0x0B337D52 + .word 0x1F181F1F,0x18090C4A,0x0B0B180A,0x090A090C,0x1A0B041A,0x4B212018,0x180B1A1F,0x0C180B0A + .word 0x4B4B514E,0x594B4A4E,0x1F1F4B4B,0x504A4B21,0x0A090A0B,0x0C180B0A,0x1C204B4D,0x0A0B0A0C + .word 0x0C1C1A20,0x4B1F2118,0x4A1C210C,0x211E1F4B,0x181C4E4E,0x1F1E4A59,0x1F0B214B,0x2018184E + .word 0x1F0B1F4A,0x0A0B0B0B,0x1A181A21,0x0C0B4E21,0x5121180C,0x0A1E4B50,0x504E190C,0x18204B4A + + .word 0x4A1E1F4B,0x0A205959,0x1E1F214E,0x585B5020,0x214E5051,0x20181A20,0x4B4E4E50,0x180A4959 + .word 0x204B2121,0x0C1F5C21,0x2021201E,0x18194A1F,0x1A1A4B20,0x4B0C0C0A,0x2020200B,0x5C1C0C18 + .word 0x50211F41,0x1A4B4E4B,0x561A1F1F,0x4E4E515B,0x3E0C1918,0x4B50514D,0x324F420A,0x0B204A33 + .word 0x5B583B4F,0x1A0C091D,0x490A538C,0x733E6642,0x505B5C6F,0x9592584E,0x20182B78,0x1F324B4B + .word 0x524B3D0B,0x0B192051,0x571F0A0B,0x213F3F51,0x18090C4B,0x56917D50,0x1015090C,0x6D6E4C0A + .word 0x4D496F33,0x10421C1F,0x0C1879A5,0x181C190C,0x594B4C74,0x51514A4B,0x504A4B21,0x4E4E4E51 + .word 0x4B181949,0x100C1C4B,0x1F1F181E,0x0A014F5B,0x1B1B1F50,0x0A1A5B4E,0x4F3D1633,0x0A515020 + .word 0x5C4D793B,0x0C513315,0x4C1D7816,0x1C16353D,0x2B2B3E4C,0x53353D41,0x632B1D4E,0x726D3352 + + .word 0x505B5020,0x26653320,0x50211F2E,0x0B1A0A33,0x1F191816,0x0A184B85,0x0B4E4F33,0x181C5666 + .word 0x4E4E4A0B,0x202B716D,0x4A1E1A0A,0x423E6352,0x26151B19,0x6335160B,0x7070633E,0x0A631609 + .word 0x5B4E0B09,0x201F1C4B,0x4B1C204A,0x1A505C5B,0x204E1A20,0x0B214E4B,0x20200918,0x0A0C4B21 + .word 0x201F0C1E,0x0B090B1F,0x0A0A0B1A,0x0A19201F,0x501C0B4B,0x0C184E51,0x51C44E50,0x490A0B4B + .word 0x1918107B,0x0A090A0B,0x1C090B54,0x1C3D7C4D,0x10495959,0x5B666415,0x7F857F20,0x4B336F66 + .word 0x421B3220,0x204E3D66,0x180A4959,0x2020153F,0x0C1F5C21,0x201F0C32,0x641B4A1F,0x31B8B8AC + .word 0x0C180B0A,0x0C194B1A,0x3B260A0B,0x4A101C15,0x3D1F1C4B,0x0B2A2663,0x1A50AF5B,0x3A7B7833 + .word 0x0B21A94B,0x757B7943,0x170C794A,0x190A647B,0xA961101F,0x211F3FA6,0x3779201F,0x4B4B5352 + + .word 0x261C200C,0x1A595C41,0x1819492E,0x0C654B4B,0x1F181E6D,0x294F5B1F,0x1B1F7B7B,0x3D5B4E1B + .word 0x3D3B7AA5,0x7D50204F,0x4D733B10,0x513F155C,0x7BA81618,0x16633D4C,0xA83E4C51,0x6365657A + .word 0x5B5C5273,0x777B524B,0x5B50202B,0x65332050,0x211F2E0A,0x460A3350,0x1918160A,0x184B851F + .word 0x4E4F330A,0x1C56660B,0x4E4A0B3B,0x2B716D4E,0x1E1A0A3D,0x3E63524A,0x151B197C,0x35160B26 + .word 0x5020410B,0x4B214E51,0x217AAC7A,0x4B4E4B50,0x1A6E650B,0x4E7D5B56,0x6E6E6D0A,0x6D767C6E + .word 0x6F6E6E18,0x656E6E6E,0x7D636620,0x3B6E6D7F,0x2B537942,0x6D6F4141,0x5B5C6F63,0x92584E50 + .word 0x196D0B18,0x6E6E4C46,0x4B3D0B1A,0x6E6D5152,0x3D2B0B4E,0x6E3F5157,0x096D6F6F,0x917D5018 + .word 0x1509633F,0x6E4C0A10,0x496F336D,0x421C1F4D,0x1879A573,0x1C190C0C,0x4B4C7495,0x514A4B59 + + .word 0x10421F19,0x792B4D5B,0x4B5C5150,0x6D1C4B4A,0x50202020,0x2E1C1A20,0x4A0C1F19,0x4A1C2118 + .word 0x4A32332A,0x181C4E21,0x1A3B261A,0x420B2020,0x1A331820,0x43161F1F,0x1A1F1E4B,0x1A3B1A1F + .word 0x3F656EA6,0x46534D0B,0x5A504393,0xB9874B4E,0x4B1F2133,0xA9AC4921,0x201E1F4B,0x42A97B4A + .word 0x1F1E4A59,0x214F8121,0x49773352,0x4B4E4C21,0x447B3B26,0x204B2021,0x7A304D21,0x20212032 + .word 0x2B1D4E4E,0x6D33AC6D,0x421F190C,0x63665B44,0x5C51504A,0x1C4B4A4B,0x2020200B,0x1C1A2050 + .word 0x0C1F193A,0x1C21184A,0x32332A75,0x6E4E214A,0x3B263D19,0x6D6E201A,0x3F3F3D1F,0x666E6E3D + .word 0x70633E72,0x63160970,0x656EA673,0x534D0B3F,0x5043936E,0x874B4E5A,0x1F213F6E,0xAC49214B + .word 0x1E1F6E6E,0xA97B4A20,0x1E656E6E,0x4F81211F,0x6E6E6E6E,0x7C486549,0x73636576,0x4B7A6E62 + + .word 0x182B780A,0x324B4B20,0x18107B46,0x16181A19,0x090B54B9,0x261B1A1A,0x495959A9,0x3B1D1610 + .word 0x857F2042,0x3F64667F,0x1B322021,0x6D6D6642,0x0A49594B,0x6E633F18,0x1F5C2120,0x656D410C + .word 0x4A4B211F,0x4E4E5150,0x181C1F19,0x194B1A0C,0x26333333,0x101C153B,0x6D3E3E3D,0x2A266E6E + .word 0x6F666365,0x7B6C3F6E,0x6D736F65,0x7B79656E,0x6373656D,0x0A647B37,0x6E636541,0x1F3FA6A9 + .word 0x653D4A21,0x52666E6E,0x321F204B,0x4A7A6465,0x411D1F20,0x52A96465,0x6D2E1D1E,0xA6A56E6E + .word 0x6D6E1C1F,0x6E6E667D,0x3C640C1A,0x51504A18,0x2E631D16,0x764B1F41,0x1B6D1D3B,0x48434541 + .word 0x644D5254,0x6DA56578,0x1E4B504E,0x6E6DA6A8,0x204B214D,0x6EA5ACA9,0x813F6565,0x6E6EA5A9 + .word 0x7BACB8A5,0x666E6EB8,0xA56EA576,0x4B406EA5,0xA6A56D6D,0x4E4C3FA6,0x7B3EA66F,0x214B41AC + + .word 0x1B4A1F20,0xA6B8AC64,0x6E2E156E,0x320C7D79,0x6F3B1941,0x5B4E51B1,0x611D1E65,0x594E4B4C + .word 0x353E333F,0x4F4B4B21,0x7533424C,0x1B1B1932,0x3A4A584E,0x6F654025,0x575B4B20,0x6D703E4C + .word 0x79416560,0x4B535237,0x334E5150,0x4B1E1816,0x181F4D51,0x504B1F49,0x19504E4B,0x4A4B0A0C + .word 0x3D1E1C1C,0x2021191A,0x2B3D3D3D,0x504B4A18,0x633F6565,0x4B4E1E33,0x6E3B3B6D,0x4F202E70 + .word 0x7CA5A932,0xA5406566,0x6F6FA9A6,0x6F706E65,0x6F6D6E6D,0x7D493C6D,0x504D466D,0x1A3D481F + .word 0x1C4A4341,0x1A634832,0x3E421E48,0x3B2B3D35,0x7035263D,0x1A0B1866,0x60324232,0x0C4A5765 + .word 0x3D4A636C,0x21516DA6,0x1B20421D,0x4E5065A5,0x0B21214B,0x514D48A6,0x161C4A4B,0x4B4E4B6D + .word 0x66351821,0x201F1F65,0x526E3A1F,0x0B0A197C,0x2B6DB843,0x0C1C0A2B,0x21497978,0x19201F1A + + .word 0x4A1E1A1C,0x3F6F8659,0x1F1C1A1A,0x66884D21,0x494A211E,0x80544232,0x20204A20,0x434C1F4A + .word 0x4B4B2121,0x4C1F204D,0x1F4B4B20,0x4C321C1A,0x204E1A0A,0x1E32321F,0x4B4B1909,0x18421C20 + .word 0x3F1C0A65,0x2B333E66,0x3D1C0A64,0x6E6D6463,0x1C0A0C6E,0x6F636D1D,0x194B206F,0x77454C10 + .word 0x5C5156A6,0x75A95421,0x1E427BB1,0x6D78A916,0x1872894C,0x6D7CA975,0x0A793B0A,0x6E657675 + .word 0x0B090B0B,0x50202020,0x010B0B18,0x4A0C1F19,0x0A181A19,0x4B1A1A0A,0x190A0B1A,0x1A0A091A + .word 0x211F1A1A,0x19190C20,0x4B4B4E4B,0x1E20214B,0x4B4B1E18,0x20212021,0x4A514E1E,0x4E4E1E1E + .word 0x1A0A194A,0x1F504B4B,0x1A0B0A21,0x1F1E211F,0x4B210C09,0x090C201E,0x1F4B4B19,0x1E090A0A + .word 0x1C211F21,0x1E091C1F,0x0C181F4A,0x200A1C20,0x0B192058,0x4B181949,0x21191950,0x1F1F181F + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x06000000,0x08020200,0x06020600 + .word 0x060E0E0E,0x02020006,0x1227120E,0x0000060E,0x27272712,0x00060612,0x120E1212,0x0606060E + .word 0x06060606,0x0608080D,0x06060606,0x08080806,0x06060606,0x130D130F,0x06060606,0x13131313 + .word 0x00000200,0x06060202,0x06000000,0x06060606,0x06090000,0x06060808,0x06060600,0x06060D12 + .word 0x06060506,0x0E133429,0x0606060D,0x0E0E120E,0x060E1213,0x06060606,0x0D342A13,0x08060606 + .word 0x00020206,0x00000000,0x08060606,0x00000000,0x08060606,0x06020606,0x060E0606,0x06060606 + .word 0x060E0606,0x06060606,0x08080606,0x06080808,0x29290D06,0x080D0F0F,0x2A37130D,0x0D131313 + + .word 0x00000000,0x0F0F0600,0x06060602,0x13130606,0x0F131306,0x130D0608,0x2A2A1306,0x06060613 + .word 0x37290606,0x06060F13,0x29270606,0x06060F13,0x270D0606,0x06060D13,0x13060606,0x06080D29 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x06000000,0x00000006,0x060E0600,0x0006060E + .word 0x00000000,0x06000000,0x00000000,0x06000000,0x00000000,0x06060200,0x00000000,0x06060606 + .word 0x06000000,0x06060808,0x06090000,0x0E130D12,0x06060000,0x0E0E3429,0x06060600,0x0606120E + .word 0x08060606,0x06060606,0x06060606,0x06060606,0x060E0606,0x08080806,0x080E0606,0x0D0D0F08 + .word 0x29080606,0x1313130F,0x2A290D06,0x29291313,0x29371306,0x12292913,0x3737370D,0x060D0E2A + + .word 0x13060606,0x2A291313,0x13080606,0x132A3729,0x2A120606,0x060E3734,0x29060611,0x06060E27 + .word 0x06060E12,0x39310606,0x06061112,0x7B771306,0x7A080E11,0xA9653A78,0x78A87A32,0x63363636 + .word 0x0D27292A,0x130D0606,0x0606060E,0x0D080606,0x06060606,0x06060806,0x0E060806,0x06101012 + .word 0x2727270E,0x34122727,0x28272877,0x34272727,0xBB75657B,0x6C80373A,0xA9BFB9A9,0xB9BBB9B9 + .word 0x29373713,0x13291313,0x373A3A27,0x2929292A,0x13271316,0x120D0E0E,0x08060608,0x06060606 + .word 0x1113060E,0x06060612,0x27297544,0x29281127,0x342929A8,0x27283636,0x34271113,0x36273434 + .word 0x0E060606,0x06060D29,0x0606060D,0x06061327,0x0506090D,0x09060610,0x06060606,0x09080612 + .word 0x0E060606,0x2729343A,0x1014773C,0x34343A23,0x3BB18962,0x34341208,0x767B4034,0x39270F25 + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x06060603,0x08060606 + .word 0x06060606,0x06060606,0x08080606,0x05060808,0x0F0D0806,0x0D131313,0x130F0D08,0x0E232913 + .word 0x12270E0E,0x06060612,0x2727120E,0x0608060E,0x120E270E,0x0808080D,0x06061212,0x130D0806 + .word 0x06060612,0x1313130F,0x06060606,0x2A291313,0x06060606,0x132A1313,0x13060606,0x060E3729 + .word 0x06060506,0x08060606,0x060E060D,0x130D0606,0x0D341213,0x0D080606,0x0D272A13,0x06060606 + .word 0x0606292A,0x06100806,0x0606060E,0x34121012,0x0E060606,0x34272727,0x27270806,0x6C802727 + .word 0x133A3A13,0x0606060E,0x08271327,0x29060606,0x11060616,0x27281112,0x27130608,0x36283627 + .word 0x3429750E,0x36273436,0x34292944,0x36363634,0x362711A8,0x675D5D36,0x36363613,0x686A8D36 + + .word 0xA8B9A9A9,0x360E0E22,0x062D7AA9,0x36363606,0x060F2A2A,0x675D360E,0x373A0606,0x8F6A5E5D + .word 0x6A120611,0x8F91938E,0x11082937,0x9191A8AC,0x0D283560,0x78A5AC2C,0x13356060,0xB9783823 + .word 0x36363636,0x29063923,0x36365D5D,0x22061136,0x605D5E8E,0x36280E12,0x6060678F,0x685D1111 + .word 0x3A6D9191,0x62281123,0x40709570,0x13062530,0x3A6FA9A6,0x0D060F30,0xA9A9A8A8,0x08060E0D + .word 0x36363622,0x36363636,0x36363636,0x365D5D36,0x5E363636,0x676A8D8D,0x6A5E6736,0x6870918D + .word 0x6A6A8DA5,0x6C738E6A,0xA8A6A8AC,0xA9A6A6A6,0xB8A9130F,0xB8B8A9B8,0xA9080806,0x2837B9B8 + .word 0x27273636,0xB9B9A940,0x12113636,0xA9A97E2A,0x0D113A5D,0x06091008,0x23113A60,0x23232809 + .word 0x110E3775,0x36363628,0x120E23B8,0x36363628,0x230D1128,0x36363636,0x280D3623,0x5D5D3636 + + .word 0x06060300,0x06060606,0x06060301,0x06060606,0x08080603,0x06060E0E,0x12080603,0x06061112 + .word 0x120E0702,0x06060E12,0x06060602,0x0506060E,0x06060402,0x06060606,0x00060603,0x06080000 + .word 0x1324240D,0x080D2313,0x292A290F,0x06061129,0x3737250D,0x0E060D29,0x2A37140D,0x12110E12 + .word 0x1329130D,0x27120D08,0x080D0D0D,0x22291406,0x11060606,0x27393912,0x220F0806,0x11626234 + .word 0x13080606,0x06063734,0x2A120606,0x39310E27,0x29060606,0x7B770606,0x06060606,0xA9651306 + .word 0x06060E11,0x63363A78,0x7A081112,0x360E3636,0x78A80E12,0x36360E22,0xA8B97A11,0x675D3606 + .word 0x2827270E,0xB9BB373A,0xBB752877,0x2906B9B9,0xA9BF657B,0x22063923,0x3636B9A9,0x36281136 + .word 0x36363636,0x685D0E12,0x605D5D5D,0x62281111,0x60605E8E,0x13061123,0x3A6D678F,0x0D062530 + + .word 0x5E363622,0x6C70918D,0x6A363636,0xA9738E8D,0x6A5E6736,0xB8A6A66A,0xA86A8D36,0x28B8A9A6 + .word 0xB8A6A8A5,0x0837B9B8,0xA9A913AC,0x080631B8,0x3908080F,0x06061344,0x350D2806,0x0612282A + .word 0x63606E68,0x1D0D253A,0x6D70918D,0x06133A3A,0xA5A68F8D,0x100FA9AC,0xA8A5A591,0x0628A6B8 + .word 0xA9A8A8A5,0x130E3AA9,0x2D3862B8,0x3A370F2C,0x13133629,0x36110D0F,0x27272924,0x36363636 + .word 0x13B9B97B,0x3637360E,0x1206080A,0x5D365D36,0x12080608,0x676D6E36,0xBB290808,0x6A6A676E + .word 0x7A290F0F,0x916A70B9,0x2A241337,0xA9B8B8A9,0x0D0F252A,0xA9B13808,0x0F372525,0x13080606 + .word 0x390D2828,0x08063144,0x355E8E6A,0x0806132A,0x36706767,0x06122828,0x796A6A6A,0x06111111 + .word 0xA9B8A9A6,0x06623636,0x4475B8A9,0x0F387A62,0x0F13257B,0x36230D0F,0x0F0F0D15,0x5D5D2812 + + .word 0x15252406,0x8D8D6736,0x67756224,0x8D8D8E8D,0xA5B87508,0x91919193,0xACA51308,0x9393A6AC + .word 0x442D0808,0xACACA875,0x0F0D0D13,0x7A7A2D14,0x0D08365D,0x2D2D1308,0x08675E5D,0x13130808 + .word 0x0613130F,0x06060606,0x060D130F,0x08060606,0x06060606,0x0D0D0F0F,0x13080600,0x29131313 + .word 0x2A0F0600,0x13272937,0x2A130600,0x060D2729,0x13130600,0x06060606,0x06060200,0x06060606 + .word 0x09090606,0x39343427,0x08060606,0x27343429,0x0606130D,0x0F123A34,0x12102729,0x2508233A + .word 0x0605060E,0x763B100E,0x06060606,0x7BB11406,0x06090606,0x40897706,0x060D0D06,0x34623C06 + .word 0x062DA932,0x8F6A360E,0x060F7AA9,0x8F915E5D,0x373A2AA9,0x9191938E,0x6A12062A,0x78A5A8AC + .word 0x11080606,0xB978AC2C,0x0D282911,0x1D0D3823,0x13353537,0x0613253A,0x63606060,0x100F3A3A + + .word 0x40709191,0x08060F30,0x3A6F9570,0x36370E0D,0xA9A9A9A6,0x5D36360E,0x13B9A8A8,0x676D5D36 + .word 0x1206B97B,0x6A6A6E36,0x1208080A,0x916A676E,0xBB290608,0xA9B870B9,0x7A290808,0xA9B1B8A9 + .word 0x365E8E28,0x06111128,0x7970676A,0x0F623611,0xA96A6A67,0x36387A36,0x44B8A96A,0x5D230D62 + .word 0x0F75B8A6,0x3A5D280F,0x0F1325A9,0x37622C12,0x240F0D7B,0x0F2D2923,0x440D0D15,0x0D103762 + .word 0x27272436,0x37363636,0x5D362729,0x70605D5D,0x6A675D36,0xA6736867,0x8E8E8E8D,0xA9937091 + .word 0x91919191,0xACA69393,0xA5A6A6A5,0x7579A9A5,0xA8A9B875,0x13B8B9B8,0xB8B92D44,0x063AB8AC + .word 0x12613A37,0x150F0606,0x28A66C73,0x0D130F06,0x1262B9B9,0x0F080806,0x0E0606B9,0x2429120E + .word 0x2822060F,0x60603634,0x5D60360E,0x706E605D,0x5EA93A13,0xA6937068,0xB9602408,0xB8B8A9A9 + + .word 0x240D0D08,0x3A622C23,0x442F130F,0x372D2962,0x6E2F2537,0x0F10376E,0x91703F37,0x0D246092 + .word 0x91707070,0x082478A9,0xA9A6A693,0x230624B9,0x7BA9A6A6,0x28360837,0xB1B8ACB8,0x3636360E + .word 0x5D675D5D,0x13130808,0x605E5D60,0x13130660,0xA6616060,0x29290806,0x06A9A9A9,0x36360D08 + .word 0x08A9B93A,0x5D5D0E0E,0x06060629,0x3A3A2A0E,0x08083729,0x3E3E3A08,0x0D29373A,0x3A3A2A08 + .word 0x06060000,0x0D080606,0x06020000,0x130D0806,0x06060000,0x130F0806,0x06060000,0x130F0806 + .word 0x06080800,0x2A290806,0x0E060602,0x3729080E,0x06060602,0x130D0606,0x06060606,0x0D060606 + .word 0x06122913,0x36272906,0x060D2929,0x27282806,0x060E2913,0x34361106,0x060E2A13,0x34362712 + .word 0x08133729,0x34342711,0x06273A37,0x27292913,0x06133A37,0x11297506,0x08162713,0x13A8440E + + .word 0x6D706E60,0x0628A9AC,0xA5A69168,0x130EA6B8,0xA8A58F8D,0x3A373AA9,0xA9A8A58D,0x36110F2C + .word 0x2D38A891,0x36360D0F,0x131362A5,0x37363636,0x272736B8,0x70603636,0x27272929,0xA6735D5D + .word 0x2A240F0F,0x13083808,0x0D0F1337,0x150F0606,0x0F37252A,0x0D130606,0x12612525,0x0F080F06 + .word 0x28A63A37,0x24290806,0x12626C73,0x6060120E,0x0E06B9B9,0x706E3634,0x282206B9,0xA693605D + .word 0x6E2F1308,0x0824606E,0x912F250F,0x23247892,0x91703F37,0x280624A9,0xA9707037,0x363608B9 + .word 0x7BA6A670,0x5D363637,0xB1A9A693,0x685D360E,0x08B8ACA6,0x73686711,0x36A9A9B8,0x78736D36 + .word 0x0E0D0E13,0x06121112,0x2A3A3A3A,0x10062837,0x15252F2F,0x0E113625,0x35353535,0x06113636 + .word 0x5D5E6060,0x06105E5D,0x676A6A73,0x06105D60,0x6A6A6A6A,0x1106606E,0x6E686E70,0x280E0E78 + + .word 0x06060606,0x08060E0E,0x06060606,0x06060E13,0x0D080602,0x06061234,0x12080602,0x06060E29 + .word 0x06060600,0x0D060606,0x06090000,0x340E0606,0x06000002,0x2A120605,0x00000000,0x13130D06 + .word 0x06060D13,0xB96C3434,0x1006080D,0xBB802712,0x10080606,0xB9372727,0x12060606,0xB93A2727 + .word 0x0E06060D,0xA9BB2827,0x06060627,0xBF752727,0x08060629,0xB9652827,0x06060E2A,0xA97B770E + .word 0x5D362424,0xA9936867,0x6A672736,0xACA67091,0x8E8E5D29,0x75799393,0x91918E36,0x13B8A9A5 + .word 0xA5A6918D,0x063AB9B8,0xA8A9A691,0x0612B8AC,0xB8B9B8A5,0x10061112,0x0E0D2D75,0x0E112837 + .word 0x5D60060F,0xB8B87068,0x5EA9360E,0xB9B8A9A9,0xB9603A13,0x1128B8A9,0x632F2408,0x34361123 + .word 0x23281606,0x345D365D,0x5D670E06,0x365E6767,0x6E733606,0x6A676A70,0x73B93610,0x6C706768 + + .word 0x06000002,0x13130806,0x06060002,0x130D0808,0x06060600,0x13130808,0x0E120E06,0x130F060D + .word 0x12271206,0x06060606,0x0E27270E,0x06060606,0x1227120E,0x06060606,0x12120E0E,0x06060606 + .word 0x0606132A,0x63A97B39,0x060E2A29,0x36657731,0x0E373713,0x363A1306,0x27342913,0x36780606 + .word 0x292A1313,0x787A0606,0x06120806,0xA8080606,0x06060606,0x7A0E110E,0x11060606,0x32111212 + .word 0x580B4F50,0x19181F50,0x0B0A4B0A,0x501F0A1A,0x0A1F1C1F,0x5C4B1F0B,0x181C190C,0x4A0C0A0A + .word 0x51514A4B,0x0A0A0B4A,0x4E4E4E51,0x0A04194E,0x0C194B1A,0x0A201F19,0x4A0A1A0B,0x4B5C5151 + .word 0x5B594B4D,0x1C060B4E,0x1A504B0B,0x19180A0B,0x0A0C0C06,0x20180A06,0x0A0A0A0B,0x505B5C1F + .word 0x200B0A4B,0x490A4FC3,0x200A1C0C,0x5B511850,0x181C5121,0x1C501F0A,0x0A184B5B,0x0B0B1918 + + .word 0x1C204B4D,0x0A0B0A0C,0x0A060A0B,0x0C180B0A,0x1F1F4B4B,0x504A4B21,0x4B4B514E,0x594B4A4E + .word 0x180B1A1F,0x0C180B0A,0x1A0B061A,0x4B202018,0x0B0B180A,0x1918100C,0x1F181F1F,0x1A201F21 + .word 0x4A0A1A0B,0x4B5C5151,0x0C194B1A,0x0A201F19,0x4E4E4E51,0x0A06194E,0x51514A4B,0x0C0A0B4A + .word 0x181C190C,0x1F190A0A,0x0A1F1C1F,0x514B1F0B,0x0B0A4B0A,0x501F0A1A,0x580B4D20,0x19181F50 + .word 0x1C1A4B21,0x4D19191A,0x1F0A4B5B,0x1A19191A,0x200A194A,0x1819191A,0x200A1A19,0x181C191A + .word 0x1F191A19,0x1C1C191A,0x1F1C191A,0x1F19181A,0x1A1A1A21,0x190C0B0A,0x1A191E4A,0x0C0B0B19 + .word 0x5B594B4D,0x18060B4E,0x1A504B0B,0x19180606,0x060C0C06,0x190A0606,0x0A0A0A0B,0x180A0A0C + .word 0x180A0C4B,0x0A0A0C19,0x0A0B191C,0x06061818,0x0A0C191C,0x06060A0A,0x0C191A1C,0x060A0A0A + + .word 0x1C1C1919,0x1C1E1C1C,0x191A1F1F,0x201F1C1A,0x181A1F1F,0x1F1F1A18,0x181C201F,0x1F1C1918 + .word 0x0C191918,0x1C1A0C0A,0x0A0A0A06,0x1A180B0A,0x06060606,0x1A180A06,0x06060606,0x1C190A06 + .word 0x18191A0C,0x0A0A060B,0x191F4A21,0x0A060A10,0x1A1F2120,0x0606100C,0x1A1F211F,0x060A1018 + .word 0x191F1F1E,0x0A060B1A,0x1A1A1C1E,0x0A0A1019,0x1C1A1C1C,0x0C0A101A,0x1F1F1C1F,0x0C101A1E + .word 0x574E1E09,0x184B4E4E,0x4E4E210C,0x57585850,0x1A1A1F18,0x4B4A201F,0x18191A19,0x491A1C1A + .word 0x1A1E1A18,0x1A191818,0x1F1A180A,0x1A18181A,0x0C0A0B09,0x1A1A0C1E,0x090A0909,0x0A090909 + .word 0x09090909,0x0A0B0A09,0x1E204A4F,0x5050504B,0x20214D4B,0x214B2020,0x1F20201F,0x1F1F1F1F + .word 0x1A1E201F,0x1A1C1A1F,0x181A1E1E,0x1A181A1A,0x1A191A1A,0x0A0C181A,0x0A090A0C,0x0909090A + + .word 0x504E4E1A,0x180A204E,0x4E4A4F58,0x1C4B4E50,0x1C1C204B,0x204A4A1F,0x191A1A1A,0x20191818 + .word 0x1C1A181A,0x1C191818,0x1A1A1818,0x1A191A1A,0x181A1A0C,0x1A1A180C,0x1D324909,0x181D1D1D + .word 0x20090918,0x1009204E,0x50504E4A,0x184F5050,0x4A4E504B,0x2150504A,0x18184B4B,0x4B213218 + .word 0x18182121,0x4B1F1918,0x1A1A1A1F,0x191A1A19,0x181A1A1A,0x0C19180C,0x0A0C0C18,0x09090909 + .word 0x0B1A0A1B,0x211A1F1E,0x0B1A0C20,0x4B201F20,0x0B1A504B,0x4E211E1E,0x0619201F,0x1F201F19 + .word 0x0A0C1C0A,0x201F1F19,0x200B0A18,0x2120201F,0x1F1E1A0B,0x20211F1A,0x201E4A4A,0x1E1E2020 + .word 0x191A1E4D,0x204A1C0A,0x19202021,0x4A4E1F0B,0x18212020,0x2021190B,0x0A181F1E,0x0C060C18 + .word 0x1A1A1E20,0x06061F1A,0x1E202021,0x060B1C1F,0x4B212120,0x0A182050,0x191A4B21,0x0B181E20 + + .word 0x2119181A,0x1F1F181F,0x18191A1F,0x4B181949,0x191E1F20,0x200A1C1A,0x1E1F2021,0x1C0A1819 + .word 0x1F202120,0x190A181A,0x19202006,0x180B0C18,0x0C0C0B06,0x0C0A0A0B,0x0A060606,0x0B0A0A0A + .word 0x1A1A1F58,0x0B0A0B18,0x1A1A1C4B,0x0A0A0B19,0x1A1C204B,0x060A0C19,0x1A1C1F1F,0x060A0C19 + .word 0x1A1C1C1A,0x060A1819,0x1E1C1919,0x060A181E,0x1F1C1918,0x060B191E,0x1F1C190C,0x0A18191F + .word 0x1A1A1A18,0x060A0B18,0x1E1A190C,0x0A0B181A,0x1A1A180B,0x0C191A1A,0x1A180C0A,0x191A1E1A + .word 0x19180A06,0x1E201C1A,0x190C0606,0x4B4B1F1A,0x190B0606,0x4D4A1C1F,0x1A0C0606,0x4A1F1F1F + .word 0x06060606,0x1E190B06,0x06060606,0x1E1A0C06,0x0606060A,0x1F190A06,0x06060A0B,0x1A180A06 + .word 0x060A0B1A,0x190C0606,0x0B181F20,0x190A0606,0x184B4B4B,0x1806060A,0x1C4B4D4B,0x1906060A + + .word 0x1F1F1F1F,0x181A1A1F,0x1E1C1F1F,0x0C0C191C,0x1C20211E,0x0B181F1F,0x2021211E,0x0C194949 + .word 0x214A211E,0x19191F1F,0x4B4B211F,0x1A1A1A32,0x4D4A201C,0x1A1A1D4D,0x4D211F1C,0x1C191C4D + .word 0x4E204F09,0x18090920,0x50504F18,0x4A4E5050,0x4A505021,0x4B504E4A,0x1832214B,0x4B4B1818 + .word 0x18191F4B,0x21211818,0x191A1A19,0x1F1A1A1A,0x0C18190C,0x1A1A1A18,0x09090909,0x180C0C0A + .word 0x4E200A18,0x1A4E4E50,0x504E4B1C,0x584F4A4E,0x1F4A4A20,0x4B201C1C,0x18181920,0x1A1A1A19 + .word 0x1818191C,0x1A181A1C,0x1A1A191A,0x18181A1A,0x0C181A1A,0x0C1A1A18,0x09090918,0x09090909 + .word 0x100A0B0A,0x10101010,0x4B505050,0x4F4A201E,0x20204B21,0x4B4D2120,0x1F1F1F1F,0x1F20201F + .word 0x1F1A1C1A,0x1F201E1A,0x1A1A181A,0x1E1E1A18,0x1A180C0A,0x1A1A191A,0x0A090909,0x0C0A090A + + .word 0x4E4E4B18,0x091E4E57,0x50585857,0x0C214E4E,0x1F204A4B,0x181F1A1A,0x1A1C1A49,0x191A1918 + .word 0x1818191A,0x181A1E1A,0x1A18181A,0x0A181A1F,0x1E0C1A1A,0x090B0A0C,0x0909090A,0x090A0A09 + .word 0x4B1A0C21,0x211E1F1F,0x1E1F1E1A,0x211F1F1F,0x1A1E2121,0x594A201F,0x1F1E1E1E,0x49515C51 + .word 0x4B4A1A19,0x0A064A58,0x1A211F0C,0x1A0A181F,0x060A191A,0x210B0C19,0x1F4E4A18,0x200A191E + .word 0x1C4E4E4A,0x0C19180B,0x1A20514B,0x18491D0C,0x1A0B4E5C,0x494A1A0C,0x0C0C060B,0x50491A18 + .word 0x211F190B,0x4B1C181E,0x1C1A1919,0x201C191A,0x1F1F4B4B,0x1F1F1F1F,0x1F4B4E4B,0x1E1F1F1F + .word 0x0606060A,0x060A0A0A,0x06060A0C,0x060A0A06,0x06060B19,0x06060606,0x060A4D58,0x06060606 + .word 0x064B5958,0x06060606,0x4A59574A,0x0606060A,0x4D58211F,0x06060A19,0x4F4D201C,0x060A1A4A + + .word 0x1F1A180A,0x0C181A1F,0x1E1A0C06,0x18191A1E,0x1F1A0B06,0x181A1C1F,0x1E190A06,0x191C1F20 + .word 0x1C0C0606,0x1A1F1F21,0x1A0B0606,0x1C19191F,0x18060606,0x1918191A,0x0A060606,0x0C181919 + .word 0x1A0C0A0A,0x201F1F20,0x1A0C0A0B,0x201F1F20,0x190B0A0B,0x1F1F2020,0x180B0A0C,0x1F1F2120 + .word 0x180A0A18,0x1F1F1E1C,0x06060A18,0x1F1C1A18,0x060A0B18,0x1C1A180A,0x060A0B0C,0x1A190B06 + .word 0x4A4D4B4A,0x19060618,0x4D4B4D20,0x0606061F,0x4B574B1C,0x06060A21,0x4B594A20,0x06060B21 + .word 0x4B594B21,0x06060A21,0x4E594A1F,0x06060620,0x4E58211F,0x0606061F,0x214A1F1E,0x0606061C + .word 0x4A20201A,0x1918324B,0x211F1F19,0x18181F4A,0x1F201F19,0x0B1A4921,0x201F1A19,0x0C1A2020 + .word 0x201C1918,0x0C1A1E1A,0x1F1C1919,0x18191918,0x1E1A190A,0x0C19191E,0x1A1A1906,0x18191A1A + + .word 0x20090918,0x0909204E,0x50504E4A,0x184F5050,0x4A4E504B,0x2150504A,0x18184B4B,0x4B213218 + .word 0x18182121,0x4B1F1918,0x1A1A1A1F,0x191A1A19,0x181A1A1A,0x0C19180C,0x0A0C0C18,0x09091D10 + .word 0x2020200B,0x5C1C0C18,0x1A1A4B20,0x4B0C0C0A,0x2021201E,0x18194A1F,0x204B2121,0x0C1F5C21 + .word 0x4B4E4E50,0x180A4959,0x214E5051,0x20181A20,0x1E1F214E,0x4D5B5020,0x4A1E1F4B,0x181F5959 + .word 0x50C44E50,0x1A1A1F4A,0x501C0B4B,0x1C4A5051,0x0A0A0B1A,0x19181A1F,0x201F0C1E,0x1918181F + .word 0x20200618,0x180B1C21,0x204E1A20,0x0C0A1F4B,0x4B1F2020,0x060A495B,0x201F1F1E,0x06061A1F + .word 0x4F201F1A,0x060B1F4D,0x4B1C191A,0x0A1A204F,0x1F1A1E1F,0x19204B4D,0x1F1F1C1A,0x214B211F + .word 0x190A1819,0x4B1F1A1A,0x191A1A19,0x1F1A1A19,0x1E1A0C0B,0x191A1A1C,0x19100606,0x1A1C1F1E + + .word 0x06060606,0x19191A0B,0x06060606,0x180C0C0A,0x0606060A,0x06060606,0x06060C1D,0x06060606 + .word 0x0649324B,0x06060606,0x4A4D4E21,0x06060619,0x4E4E201A,0x06060C49,0x4E211919,0x0606324F + .word 0x0A0B0B18,0x19180A0A,0x0A0C1819,0x0C0B0A0A,0x1819190B,0x0B0A0B0C,0x1E1A0C06,0x0C0C1819 + .word 0x1A180A06,0x19191919,0x0C0A0606,0x1A1A1919,0x0A060606,0x1A1A1918,0x18060606,0x19191818 + .word 0x1F491A19,0x06060A1A,0x1F49180C,0x0A0B0B1A,0x1F490C0A,0x0B1A181A,0x1F491818,0x0A181E1A + .word 0x1F201A19,0x060A1819,0x1E1E1A1A,0x06060A18,0x0C18191A,0x0606060C,0x0B0C1819,0x060A1A0A + .word 0x1A1A1906,0x18191E1A,0x1C19180A,0x191C1E19,0x1A19191A,0x1F1E0C1A,0x1A0C0A0A,0x190A060A + .word 0x0A060606,0x060A060A,0x06060606,0x06060606,0x0A0A0606,0x06490A0A,0x1A1E1E0A,0x191F1E1A + + .word 0x4E200909,0x18090920,0x50504F18,0x4A4E5050,0x4A505021,0x4B504E4A,0x1832214B,0x4B4B1818 + .word 0x18191F4B,0x21211818,0x191A1A19,0x1F1A1A1A,0x0C18190C,0x1A1A1A18,0x09090909,0x180C0C0A + .word 0x090A0B0A,0x09090909,0x4B505050,0x4F4A201E,0x20204B21,0x4B4D2120,0x1F1F1F1F,0x1F20201F + .word 0x1F1A1C1A,0x1F201E1A,0x1A1A181A,0x1E1E1A18,0x1A180C0A,0x1A1A191A,0x0A100909,0x0C0A0909 + .word 0x4E4E4B18,0x091E4E57,0x50585857,0x09214E4E,0x1F204A4B,0x181F1A1A,0x1A1C1A49,0x191A1918 + .word 0x1818191A,0x181A1E1A,0x1A18181A,0x0A181A1F,0x1E0C1A1A,0x090B0A0C,0x09090909,0x090A0A09 + .word 0x5B594B4D,0x1F060B4E,0x1A504B0B,0x19180A0B,0x0A0C0C06,0x20180A06,0x0A0A0A0B,0x505B5C1F + .word 0x200B0A4B,0x211F4FC3,0x200A1C0C,0x1F4A1850,0x181C5121,0x18501F0A,0x0A184B5B,0x0B0B1918 + + .word 0x1A1E1F1F,0x060B181A,0x1E1E190B,0x191C1C1E,0x1F1F1C20,0x1C1F1E1E,0x191A1C21,0x1C1A1A1A + .word 0x1A18191E,0x1A1A1919,0x0C0B0C1A,0x19191919,0x0B0C180B,0x19180C0B,0x1F181E1F,0x0C0B0B21 + .word 0x06060606,0x1E1E1E18,0x0606060B,0x1E190C06,0x0A0A181C,0x180A0606,0x1A1A1F1F,0x0606060B + .word 0x1F21211E,0x0A0A211F,0x4B21201A,0x4A58574E,0x211F1A19,0x59574D4A,0x1A1A180C,0x57211F1C + .word 0x2019191A,0x0610494D,0x191A1E1E,0x06104A4A,0x1E1E1E19,0x06104A20,0x1F1A180B,0x0B0C1A1E + .word 0x1A180A06,0x19181C1E,0x181A060A,0x0C191A1E,0x1F0A064A,0x0C0A0B0C,0x0C060C59,0x0B190C20 + .word 0x06060A06,0x19180C18,0x060A0B0A,0x18180C0A,0x0A0C180B,0x0B0C0C0B,0x180C0B18,0x0A0A0B18 + .word 0x0B18181A,0x06060A0B,0x0606180C,0x06060606,0x0606060A,0x06060606,0x0606060A,0x0B1C1918 + + .word 0x0A0A0B18,0x190C0A0C,0x060A0A0C,0x201C0B0A,0x1F060A0A,0x4B4A4B21,0x4A4B0A06,0x4D4B4A4B + .word 0x19190606,0x1A1A1A19,0x1A0A0606,0x19191918,0x1F060606,0x191A1A1A,0x06060606,0x18191C1F + .word 0x201E1F1F,0x1F491F20,0x181C2120,0x1A201F1D,0x4A4B4B4B,0x1F1F1F4D,0x21212121,0x1E1F2021 + .word 0x1F1F1E1A,0x1A1F1F1F,0x19191919,0x191A1E1A,0x1A1A1918,0x1A1A1A18,0x1E191818,0x19191B1A + .word 0x191A1918,0x1F201F1C,0x19191A19,0x1F1F1F19,0x181A1818,0x201F1C18,0x1A1C1818,0x1F1F1E1E + .word 0x1E1A1818,0x1C204A1F,0x1F1C1818,0x1A1C1F21,0x1F1F1918,0x191A1F1F,0x1F1E1F19,0x191A1E1F + .word 0x1E181A1C,0x21190B0B,0x18212120,0x1818181A,0x2021201F,0x19191921,0x20212020,0x1F1C1F20 + .word 0x21202020,0x1F1C201F,0x2120201F,0x1F1C191F,0x20201F1E,0x201A191E,0x1F1F1E19,0x211C1C1A + + .word 0x190B0C1A,0x19191919,0x19180C4B,0x19191919,0x1919181C,0x18191919,0x19191A1C,0x1F1A1A19 + .word 0x1C1A1F1C,0x20201F1A,0x494B4B20,0x21201F1F,0x494A4A4B,0x21201E20,0x204A4F4E,0x1F211F1F + .word 0x1F1E1A19,0x18191C1F,0x1F1F1E19,0x191E1E1F,0x1C1E1F1C,0x191E1E1E,0x1A191F20,0x191E1F1A + .word 0x1A1A1A1F,0x191E191C,0x19191A1F,0x191A1A1A,0x191A1C20,0x191A1A1A,0x191C1E20,0x19191A19 + .word 0x1818194A,0x1F180A0A,0x1010101F,0x10101010,0x100C191F,0x10101010,0x0B0C1E1E,0x0A0B0B0B + .word 0x1A1A1E20,0x0A184A1C,0x1E202021,0x181C201E,0x4B212120,0x1818194B,0x191A4B21,0x06060619 + .word 0x190C0C1A,0x4A1A181A,0x0B0B0C16,0x1F190B0B,0x0A060A10,0x190A0A0A,0x06060A0A,0x1806180A + .word 0x0A0A0A0A,0x0A0A0A0A,0x0A0A0A0B,0x060A0A0A,0x0A0A0A18,0x0A0A0A0A,0x0B0B0C0B,0x0A0B0B0B + + .word 0x06064D59,0x0A181E19,0x060A4D4E,0x0A0B1F0C,0x060B3220,0x060A0C18,0x060C1619,0x06060606 + .word 0x060A0A06,0x06060606,0x060A0A0A,0x060A0606,0x060A0A0A,0x06060606,0x0A0A0A0A,0x0A060606 + .word 0x1A0A0606,0x1E1E1A1A,0x1A190B06,0x1A1A1A1A,0x1A1A1906,0x1C1E1E1F,0x1F1E1A0A,0x1A1F1C1F + .word 0x201F1A0A,0x1E1F1F1F,0x201F1A0A,0x1A1F2020,0x201F1A1C,0x191F1F20,0x201F1A1F,0x1A1F2020 + .word 0x100A0B1E,0x1818180C,0x1919191A,0x18181919,0x201F1C1C,0x19191F49,0x1F1C1A1A,0x1C1F2020 + .word 0x19191A1A,0x1F201F1A,0x181A1C19,0x491F1A19,0x191A1919,0x491C1918,0x18181919,0x49191818 + .word 0x1A191818,0x204A4D1F,0x1C1E1A19,0x20575721,0x1F1C1E1F,0x0B494F4A,0x1F1A1F1C,0x1C06324D + .word 0x1C1A1A20,0x1F1F0649,0x1A181810,0x2020190A,0x0C0C194F,0x4B4A1A18,0x0B0C1D50,0x1F504A19 + + .word 0x1E201E1C,0x191A1E1C,0x191A1919,0x1A1E1919,0x19181819,0x1E191918,0x1A191A1F,0x191A1F32 + .word 0x1A181820,0x4A4B4B1F,0x0B0B0C1A,0x1C1A180C,0x0B0C181A,0x191A0C0B,0x1F1C4B21,0x0C1A1A19 + .word 0x191A1819,0x201C1A1A,0x191A1919,0x1F1A1818,0x1F201D1A,0x1F180C18,0x18194A1F,0x1C191818 + .word 0x1818181D,0x1A1A1A18,0x1C180B0C,0x1B1C1F1E,0x1A180B18,0x1F1E211F,0x1A0A191C,0x1F504B4B + .word 0x214B4E4E,0x4E4B4B4A,0x4A4D4E4B,0x4E4E4B4A,0x4B4E4F4A,0x4B4B4B4B,0x214B4F4A,0x1F214A21 + .word 0x4B4E4D49,0x214A214A,0x4E4D1D18,0x21214A4B,0x4E180B18,0x4A4B4B4F,0x180C1820,0x4F4F4B1F + .word 0x1C1C1E1C,0x1A1A1919,0x1F1E2020,0x1919191C,0x1F1E214A,0x1A1A1C1F,0x1E1F1F1F,0x1E1F1F1F + .word 0x1F1F1F1F,0x1F1F1F1F,0x1F1C1F20,0x21201F1F,0x1F494A4A,0x2021201F,0x204B4D4F,0x180C1A20 + + .word 0x1C4E4E4A,0x06060619,0x1A20514B,0x06060606,0x1A0B4E5C,0x06060A06,0x0C0C060B,0x190A0C18 + .word 0x211F190B,0x1A0A181E,0x1F181919,0x180A1A20,0x0C494B4B,0x1A1A1E1C,0x1C4F4E4B,0x0B19574E + .word 0x19191906,0x0B181919,0x0A060606,0x0A0A0B0B,0x06060606,0x06060606,0x0606060A,0x06060606 + .word 0x060A1A1E,0x06060606,0x18191F4B,0x0B0C060B,0x1919181A,0x20201E19,0x1819190C,0x1818180B + .word 0x0A0B0A0B,0x0A060606,0x0A0B0B0A,0x1A060606,0x060A0A06,0x1E0A0606,0x0A0A0606,0x1E060606 + .word 0x06060606,0x18060606,0x06060A19,0x0C060606,0x06061E1F,0x0B060606,0x0A0A0B18,0x19060606 + .word 0x201F1A1F,0x1E202020,0x201F1E1A,0x20212120,0x1F1F2121,0x1A212120,0x18181C1F,0x0B191F1A + .word 0x1818181A,0x0B0B181A,0x181B1B1D,0x180C0C18,0x18324D4A,0x1A19180C,0x1F4A4F4B,0x1C1C191E + + .word 0x1919191A,0x49191818,0x19191C20,0x491D1919,0x0C0B0C18,0x32321D1B,0x0C0B0B0B,0x191D1918 + .word 0x1E49180C,0x1A0C0C18,0x4A4A491C,0x180C1E21,0x4D4B201C,0x1A1F494B,0x4D4A201E,0x1A494D4F + .word 0x0C0C184F,0x4A505120,0x1C0C184D,0x1C4E4E50,0x1A0A1A49,0x18514B4B,0x0C502019,0x1F194A1A + .word 0x0B4B4E1E,0x490B181C,0x1A504E4B,0x18190B0C,0x2121210C,0x501A181E,0x21191A0A,0x50200B19 + .word 0x1C4E4E4A,0x1A1C0A0B,0x1A20514B,0x0C1C1C0A,0x1A0B4E5C,0x1F0B1C0A,0x0C0C060B,0x190A0C18 + .word 0x211F190B,0x1A0A181E,0x1F181919,0x180A1A20,0x0C494B4B,0x1A1A1E1C,0x1C4F4E4B,0x0C19574E + .word 0x1820211C,0x2120201A,0x1A1F0B06,0x18191E1F,0x060A181A,0x181A210A,0x1F4A4A4B,0x180C0C0A + .word 0x20504B1F,0x0A0C1C0A,0x5751514A,0x1A1F1818,0x4951504E,0x1E4E0B18,0x1F19191A,0x1C4A191A + + .word 0x4A4B4E4B,0x1A0B181F,0x1820201F,0x21191818,0x0C0C1A1A,0x594A1A18,0x190C181E,0x49515C51 + .word 0x4B4A1A19,0x0A064A58,0x1A211F0C,0x1A0A181F,0x060A191A,0x210B0C19,0x1F4E4A18,0x200A191E + .word 0x191A1E4D,0x1F1E180A,0x19202021,0x1A1E1A0B,0x18212020,0x19180C0B,0x0A181F1E,0x0B0B0C18 + .word 0x1A1A1E20,0x18184B1A,0x1E202021,0x0C1C201E,0x4B212120,0x0A1A5150,0x191A4B21,0x0B0B4B20 + .word 0x20202020,0x191C1F20,0x1F1F1C1C,0x1A1F4B21,0x211E1A19,0x191F4A4A,0x191E1C19,0x18191A19 + .word 0x18191A18,0x180C100A,0x0A0C0C0B,0x180A0606,0x0606060A,0x0C0A0606,0x0A060606,0x0A0A0A0A + .word 0x0606060B,0x0B060B18,0x06060B1A,0x0A060606,0x060A1818,0x18060606,0x06060A0C,0x201E0A06 + .word 0x06060A0C,0x181A0B06,0x06060C18,0x1A1A190A,0x060A0C18,0x1A19190A,0x06060B0A,0x1A191918 + + .word 0x1F1F1E1E,0x20212020,0x1F1E191F,0x21212020,0x1F1C1A1C,0x20212020,0x201E1C1F,0x1C1F2021 + .word 0x1C1A1A19,0x1F201F1F,0x1F1C1C1A,0x211F191E,0x1C1F1F1E,0x201F1F1A,0x1F1E201F,0x201E201F + .word 0x4D4A2120,0x1E494D4F,0x4F4A2021,0x1C1F4A4B,0x4A491F1F,0x1C1F1F1F,0x1A1C1F1F,0x19191A1C + .word 0x1C1F201C,0x0B181E1F,0x1C20201F,0x0A191A20,0x1D202120,0x18182121,0x19202120,0x18182120 + .word 0x2119191E,0x1F1F181F,0x0B192049,0x4B181949,0x0C181F20,0x200A1C20,0x1C211F1C,0x1E061C1F + .word 0x1F4B4B18,0x1E060A0A,0x4B210C06,0x060C201E,0x1A0B0A21,0x1F1E211F,0x1A0A194A,0x1F504B4B + .word 0x51C44E50,0x490A0B4B,0x501C0B4B,0x0C184E51,0x0A0A0B1A,0x0A19201F,0x201F0C1E,0x0B060B1F + .word 0x20200618,0x0A0C4B21,0x204E1A20,0x0B214E4B,0x4B1C204A,0x1A505C5B,0x5B4E0B06,0x201F1C4B + + .word 0x4A514E1E,0x4E4E1E1E,0x4B4B1E18,0x20212021,0x4B4B4E4B,0x1E20214B,0x211F1A1A,0x19190C20 + .word 0x190A0B1A,0x1A0A061A,0x0A181A19,0x4B1A1A0A,0x060B0B18,0x4A0C1F19,0x0B060B0B,0x50202020 + .word 0x1F181F1F,0x1E191921,0x4919184B,0x4920190B,0x201C0A20,0x201F180C,0x1F1C061E,0x1C1F211C + .word 0x0A0A061E,0x184B4B1F,0x1E200C06,0x070C214B,0x1F211E1F,0x210A0B1A,0x4B4B501F,0x4A190A1A + .word 0x4B1A0C21,0x211E1F1F,0x1E1F1E1A,0x211F1F1F,0x1A1E2121,0x594A201F,0x1F1E1E1E,0x19515C51 + .word 0x4B4A1A19,0x06064A58,0x1A211F0C,0x1A0A181F,0x060A191A,0x210B0C19,0x1F4E4A18,0x200A191E + .word 0x51C44E50,0x1A1C0B4B,0x501C0B4B,0x1F194A51,0x0A0A0B1A,0x1A1E1E1F,0x201F0C1E,0x1A1A1A18 + .word 0x20200618,0x1F1F2021,0x204E1A20,0x4B4B4B4B,0x4B1C204A,0x585A5C5B,0x5B4E0B06,0x201F1C4B + + .word 0x1C1F1C1C,0x06060B19,0x1F201F20,0x0A1A1C1F,0x4A4A201F,0x494A4A4B,0x4A4A201F,0x4D4D4D4B + .word 0x491F1F1F,0x574D4B4A,0x1F1C1F4A,0x4A201F1C,0x1A1A214E,0x1A1E1C1C,0x19060B0C,0x1F1A1A1E + .word 0x0A180A06,0x1906060C,0x0C0C0606,0x0B060A06,0x06060B1A,0x0B06060B,0x0A0A4A58,0x1A0A0A0A + .word 0x180B4B57,0x1E0C0A0A,0x061A494D,0x20201806,0x0B0C191A,0x1F20180B,0x0A0A0B1A,0x1F1F1F1F + .word 0x1F4A4F4A,0x1F1C1A1C,0x204A4B4A,0x1A1A1F20,0x20201F21,0x1E202021,0x201F1F1E,0x20202021 + .word 0x201F1F1F,0x1F1C2021,0x20201F20,0x1E0A2021,0x211A1C20,0x20192021,0x1C192020,0x21212121 + .word 0x4B4A211F,0x191C2021,0x2121211E,0x181E2021,0x214A1E1A,0x181A1F1F,0x4A1F1E1F,0x1A1C1F20 + .word 0x201C1C20,0x1A1F204D,0x1F1F1C20,0x1A20214D,0x1F1F1C20,0x1A1F204A,0x1F211F20,0x1A1E1F1C + + .word 0x4A514E19,0x4E4E1E1E,0x4B4B1E18,0x20212021,0x4B4B200C,0x1E20214B,0x211F0C0C,0x19190C20 + .word 0x190A0B18,0x1A0A061A,0x0A181818,0x4B1A1A0A,0x060B0B18,0x4A0C1F19,0x0B060B0C,0x50202020 + .word 0x0A064F59,0x50211F1A,0x0B0C1C4B,0x505B5020,0x1C1A595C,0x4B5B5C4B,0x0B0C4A57,0x1A21201C + .word 0x201A0B0C,0x0A0A1A0A,0x1F180A1F,0x504B1806,0x211A194B,0x1B200B0C,0x4B1A1A4B,0x0A0B1C4A + .word 0x191A1E4D,0x511A0A0A,0x19202021,0x59511F0B,0x18212020,0x2021190B,0x0A181F1E,0x0C060C18 + .word 0x1A1A1E20,0x0C0B4B1A,0x1E202021,0x0A1E201E,0x4B212120,0x215C5150,0x191A4B21,0x0A194B20 + .word 0x21191950,0x1F1F181F,0x0B192058,0x4B181949,0x0C181F4A,0x200A1C20,0x1C211F21,0x1E061C1F + .word 0x1F4B4B19,0x1E060A0A,0x4B210C06,0x060C201E,0x1A0B0A21,0x1F1E211F,0x1A0A194A,0x1F504B4B + + .word 0x0B0A1C0B,0x4A4E4E1C,0x0A1C0C06,0x4B51201A,0x0A1C0A0A,0x5C4E0B1A,0x06060606,0x06060606 + .word 0x0B0A0606,0x060A0A0C,0x19180B0A,0x19191919,0x1F1F1A0C,0x4B4B1F1F,0x201F1C19,0x4B4E4F4B + .word 0x1C204B4D,0x060B0A0C,0x0A060A0B,0x060A0B0A,0x1F1F4B4B,0x180A0B21,0x4B4B514E,0x590B0B4E + .word 0x180B1A1F,0x0A180B0A,0x1A0B061A,0x0C202018,0x0B0B180A,0x1A0B060C,0x1F181F1F,0x1F1A0B4A + .word 0x0B060A06,0x0C1A1818,0x06060606,0x06060606,0x0606060A,0x06060606,0x06060A4A,0x06060606 + .word 0x0B0B0B0B,0x0B0A0A06,0x18191F1A,0x0C0C1818,0x1A1F2120,0x0C191919,0x1E1E1A1C,0x1A1A1A1E + .word 0x0A0A1C18,0x204B4B1F,0x0A060B06,0x214D4D0C,0x0A060606,0x4A4B4A0B,0x0A060606,0x4B4B490A + .word 0x06060A0B,0x4D4A1806,0x0A19180C,0x0C0C0606,0x0B0C0A0B,0x0A0A0A0A,0x0B0A060B,0x0B060A0C + + .word 0x0C1A201F,0x4A1E1A19,0x0C202020,0x201A0B0B,0x1821201C,0x1F1F180C,0x4D4D4D49,0x180C1832 + .word 0x4F4F4F4F,0x180C1C4F,0x4B4A321C,0x0B1E204B,0x1F1F180B,0x181F211C,0x201F1E18,0x2020211F + .word 0x1D204A21,0x191E1A1E,0x1F1D1F20,0x18191A19,0x1A1F1D19,0x0B181919,0x181A1E19,0x0B0C1919 + .word 0x18181818,0x0B0C1918,0x19180C0B,0x0B0B1A19,0x0B0B0B0B,0x100A1918,0x1F181E1F,0x190A0B4A + .word 0x4A0B0A0B,0x4B5C5151,0x0C1D0A06,0x0A201F19,0x4E4E180A,0x0A06194E,0x51511E0C,0x0A0A0B4A + .word 0x181C1918,0x4A0C0A0A,0x0A1F1C1B,0x5C4B1F0B,0x0B0A4B0A,0x501F0A1A,0x580B4F50,0x19181F50 + .word 0x4B50211C,0x0C0B214A,0x1A1F0B06,0x0A182020,0x060A181A,0x0C1A4B0A,0x1F4A4A4B,0x180C0C0A + .word 0x20504B1F,0x0A0C1C0A,0x5751514A,0x1A1F1818,0x4951504E,0x1E4E0B18,0x1F19191A,0x1C4A191A + + .word 0x1F4B4B20,0x181C0A0A,0x0C4D4D21,0x060B060A,0x0B4A4B4A,0x0606060A,0x0A494B4B,0x0606060A + .word 0x06184A4D,0x0B0A0606,0x06060C0C,0x0C18190A,0x0A0A0A0A,0x0B0A0C0B,0x0C0A070B,0x0B070A0B + .word 0x0A1A5B4E,0x1F19180B,0x0A515020,0x0B4E501A,0x0C511A06,0x4E4E4A0A,0x1C0C0B1C,0x4A1E1A0A + .word 0x510A1C1C,0x0C0A1819,0x1A0A194B,0x180B0A0B,0x190A4B5B,0x1A1A0C18,0x0B1C4B21,0x5B502020 + .word 0x18211F4B,0x201A1C0C,0x4B1F1E21,0x0C211C4A,0x594A1E1F,0x4E4E1C18,0x4E181820,0x4B210B1F + .word 0x0B0B0B0A,0x1D1F0B1F,0x214E0B0C,0x201A181A,0x504B1E0A,0x0C182151,0x4A4B2018,0x0C194E50 + .word 0x1F19191A,0x1C4A191A,0x4951504E,0x1E4E0B18,0x5751514A,0x1A1F1818,0x20504B1F,0x0A0C1C0A + .word 0x1F4A4A4B,0x180C0C0A,0x070A181A,0x0C1A4B0A,0x1A1F0B07,0x0A182020,0x4B50211C,0x0C0B214A + + .word 0x4B1A1A4B,0x0A0B1C4A,0x211A194B,0x1B200B0C,0x1F180A1F,0x504B1807,0x201A0B0C,0x0A0A1A0A + .word 0x0B0C4A57,0x1A21201C,0x1C1A595C,0x4B5B5C4B,0x0B0C1C4B,0x505B5020,0x0A014F59,0x50211F1A + .word 0x18211F4B,0x201A1C0C,0x4B1F1E21,0x0C211C4A,0x594A1E1F,0x4E4E1C18,0x4E181820,0x4D210B1F + .word 0x0B0B0B0A,0x421F0B1F,0x214E0B0C,0x211A181A,0x504B1E0A,0x0C182151,0x4A4B2018,0x0C194E50 + .word 0x06122913,0x0075A906,0x060D2929,0x00007506,0x060E2913,0x00000006,0x060E2A13,0x00000012 + .word 0x08133729,0x00002711,0x06273A37,0x00002913,0x06133A37,0x00297506,0x08162713,0x00A8440E + .word 0x06A97500,0x13291206,0x06750000,0x29290D06,0x44000000,0x13290E06,0x75000000,0x132A0E06 + .word 0x75270000,0x29371344,0x757A0000,0x373A2744,0x06A92900,0x373A1306,0x0E7AAC00,0x13271608 + + .word 0x06060606,0x0E060606,0x06060600,0x06060606,0x02060000,0x0D080606,0x02000000,0x08060602 + .word 0x00000000,0x06060002,0x00000000,0x00000000,0x00000000,0x02000000,0x00000000,0x02000000 + .word 0x1308060E,0x6C34060D,0x06060E13,0x1210080D,0x0612340D,0x12060606,0x0E291212,0x060D0D06 + .word 0x06060606,0x27340E06,0x05060900,0x13120605,0x06000000,0x130D0606,0x00000000,0x08060606 + .word 0x00000000,0x00000000,0x00000080,0x00000000,0x0000A975,0x00000000,0x00A9750E,0x00000000 + .word 0x00A90806,0x00000000,0x7B7A062A,0x00000000,0x447A2A13,0x00000000,0x4475130D,0x0075A908 + .word 0x191C1A20,0x4A191A1A,0x1F1C210C,0x49191A1C,0x181C4E4E,0x49191E57,0x1F0B214B,0x20191A4E + .word 0x1F0B1F4A,0x0A0B0B0B,0x1A181A21,0x0C0B4E21,0x5121180C,0x0A1E4B50,0x504E190C,0x18204B4A + + .word 0x20201F1F,0x1A1F2021,0x4B201F4A,0x1A4A214B,0x204E1A20,0x0B214E4B,0x20200618,0x0A0C4B21 + .word 0x201F0C1E,0x0B060B1F,0x0A0A0B1A,0x0A19201F,0x501C0B4B,0x0C184E51,0x51C44E50,0x490A0B4B + .word 0x190A0B0B,0x100A0B10,0x060B0B18,0x0A060A19,0x0A181A19,0x1A0C1A0A,0x190A0B1A,0x1A0A061A + .word 0x211F1A1A,0x19190C20,0x4B4B4E4B,0x1E20214B,0x4B4B1E18,0x20212021,0x4A514E1E,0x4E4E1E1E + .word 0x1A0B0A0B,0x1919191A,0x180B0B0C,0x181A1818,0x1E0B214B,0x1819184B,0x1F0B1F4A,0x18180B0B + .word 0x1A181A21,0x1A0B4E21,0x5121180C,0x0A1E4B50,0x504E190C,0x18204B4A,0x1A1E1F49,0x490A0B4A + .word 0x0B0B0B18,0x190B0B0B,0x0B0B0B0B,0x210B0C18,0x0B0B0B0B,0x180A0C1C,0x180C1818,0x0C191A18 + .word 0x1819191C,0x18191C1F,0x1A184B20,0x4B0C0C0A,0x2020200B,0x5C1C0C18,0x4A514E1E,0x4E4E1E1E + + .word 0x191E1E1F,0x19191F20,0x1C1D1F19,0x0B182020,0x20200618,0x0B0A4B21,0x201F0C1E,0x0B060B1F + .word 0x0A0A0B1A,0x0A19201F,0x501C0B4B,0x0C184E51,0x51C44E50,0x490A0B4B,0x0B180C0C,0x18204B1A + .word 0x191A1A18,0x19191818,0x1918191A,0x1A19191A,0x190B0B1A,0x1A0A061A,0x211F1A1A,0x19190C20 + .word 0x4B4B4E4B,0x1E20214B,0x4B4B1E18,0x20212021,0x4A514E1E,0x4E4E1E1E,0x2020200B,0x4D1C0C18 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x44AC0000 + .word 0x00000000,0x0D447700,0x00000000,0x0644A905,0x07000000,0x06037A07,0x44B84400,0x130E2703 + .word 0x06447500,0x060D373A,0x3A7A1100,0x08293737,0x2A400606,0x06082F2F,0x2F392975,0x06062A0F + .word 0x24441329,0x06060614,0x06080606,0x02060606,0x06060606,0x00060606,0x1306270D,0x00020606 + + .word 0x06060606,0x06060606,0x06060606,0x02020606,0x06060E06,0x00020206,0x08080806,0x00000000 + .word 0x00000606,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000200,0x08080600,0x00020200,0x08060606,0x00020000,0x0E120606,0x00000000,0x27270E06 + .word 0x00000000,0x27120606,0x00000000,0x270E0600,0x00000000,0x120E0000,0x00000000,0x0E000000 + .word 0x2D131308,0x00A9062A,0x23060606,0xA9440608,0x06060606,0xA9060606,0x06060612,0x06060606 + .word 0x06061227,0x13060606,0x06122727,0x0D080606,0x06121212,0x290D0606,0x0D130E0E,0x13130F06 + .word 0x00000000,0x00000000,0x00000044,0x00000000,0x000000B8,0x00000000,0x00000744,0x00000000 + .word 0x00050703,0x00000000,0x77A97A27,0x00000000,0x4444030E,0x000000AC,0x0D060613,0x00000044 + + .word 0x00000000,0x00000000,0x00000000,0x75000000,0x00000000,0xA9000000,0x00000000,0x08000000 + .word 0x00000000,0x44447B00,0xA9000000,0x757A7AA9,0x75A90000,0x132A0608,0x0E758000,0x0D132A06 + .word 0x06A9A900,0x13290D13,0x060644A9,0x130D0806,0x06060606,0x0F060606,0x0606082A,0x06060606 + .word 0x0606232D,0x0D060606,0x06060613,0x13121206,0x06060613,0x0E122712,0x12060608,0x0E122727 + .word 0x2A2A3729,0x00060613,0x132A2A13,0x00000606,0x06081306,0x00000006,0x06060606,0x00000000 + .word 0x0006060D,0x00000000,0x06061313,0x00000000,0x000F0F13,0x00000000,0x00000F0F,0x00000000 + .word 0x0D13130F,0x29130606,0x06130F0F,0x372A1306,0x06060F00,0x2A2A0806,0x00060000,0x2A130606 + .word 0x00000000,0x13060600,0x00000000,0x06060000,0x00000000,0x06000000,0x00000000,0x00000000 + + .word 0x2906060D,0x00000675,0x13060627,0x75110629,0x44080606,0x447A4039,0x24060613,0x063A2A2F + .word 0x14060606,0x3A372F0F,0x06060606,0x37372F2A,0x06060602,0x0D290806,0x06020000,0x06080606 + .word 0x00000000,0x00000000,0xB9B90000,0x00000000,0x3A37806C,0x006575BB,0x27272734,0x77282728 + .word 0x27271234,0x0E272727,0x12101006,0x0608060E,0x06080606,0x06060606,0x0606080D,0x0E060606 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x7A7A4475,0xA90D777B,0x12ACA97A + .word 0xA9063139,0x120E0606,0x27750606,0x11060629,0x34370E06,0x0606122A,0x29372A13,0x06060813 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x010600A9,0xA9BB4705,0x0F78AC34,0x3C77750D + .word 0x7B342927,0x06060675,0x75060809,0x06060606,0x10060609,0x0D090605,0x27130606,0x0D060606 + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000075,0xA8290000,0x000075A9,0x44752927 + .word 0x12060606,0x0E061311,0x06060606,0x08060608,0x0E0E0D12,0x16132713,0x2A292929,0x273A3A37 + .word 0x0612126C,0x08131327,0x0D061034,0x060D1234,0x0D060806,0x0606060E,0x06060D0D,0x06060506 + .word 0x0E060613,0x00060506,0x29120608,0x00000606,0x12340E06,0x00000906,0x120D130E,0x00000006 + .word 0x270E0808,0x0E122727,0x27120608,0x000E0E12,0x0E060606,0x00000606,0x06060600,0x00000006 + .word 0x00000000,0x00000000,0x00020200,0x00000000,0x00000202,0x00000000,0x00000000,0x00000000 + .word 0x06000000,0x06060606,0x06000000,0x06060E08,0x00000000,0x06060608,0x00000000,0x06060608 + .word 0x00000000,0x06060600,0x00000000,0x06060200,0x00000000,0x06020200,0x00000000,0x06020000 + + .word 0x06060D13,0x2A29270D,0x06060608,0x132A340D,0x06060606,0x13120E06,0x0E120E0E,0x0D060606 + .word 0x2934130E,0x06050606,0x120D0606,0x00060606,0x08080606,0x00000906,0x06060606,0x00000006 + .word 0x1313292A,0x06060613,0x13131313,0x06060606,0x0F130D13,0x06060606,0x06080808,0x06060606 + .word 0x0D080806,0x06060606,0x0E060606,0x12120E12,0x12060600,0x12272727,0x0E060000,0x0E122712 + .word 0x290D0606,0x0606060E,0x290D0806,0x06060613,0x130D0606,0x06060D27,0x130F0606,0x06062729 + .word 0x130F0606,0x06062937,0x13060606,0x06132A2A,0x08060D13,0x0613130F,0x06061313,0x02060606 + .word 0x13132913,0x13373729,0x1313130D,0x0D13372A,0x0F0F0D08,0x060D2929,0x08080806,0x06060808 + .word 0x06060606,0x06060E06,0x06060606,0x06060E06,0x06060206,0x06060608,0x00000000,0x06060608 + + .word 0x080D060E,0x02020006,0x06080606,0x00000006,0x06060606,0x00000000,0x02060606,0x00000002 + .word 0x02020606,0x00000000,0x00060606,0x00000000,0x00000606,0x00000000,0x00000006,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x3636270E,0x00000000 + .word 0x28365D27,0x00000012,0x5D5D5D28,0x10282836,0x28121027,0x27272728,0x10101012,0x36363612 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x0E270E10,0x00000000 + .word 0x1236270E,0x0E0E0E10,0x345D5D27,0x28363628,0x28363628,0x0E110E12,0x270E100E,0x2828100E + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000023,0x100E0E00,0x0E23100E,0x0E0E0E10,0x36271010,0x28101012,0x280E1010,0x36365D28 + + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x000E0000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x10000000 + .word 0x00000000,0x0E000000,0x00000000,0x280E0000,0x00000000,0x36101000,0x36230000,0x27365D12 + .word 0x36000000,0x00000036,0x36270000,0x28281228,0x5D5D270E,0x2727365D,0x125D2827,0x36362828 + .word 0x12102728,0x36361210,0x10101227,0x12270E10,0x10283612,0x1010365D,0x365D3636,0x10101236 + .word 0x10102836,0x2836360E,0x5D365D36,0x10122736,0x36360E10,0x10101012,0x10100E0E,0x0E101010 + .word 0x27270E27,0x5D5D1210,0x36271028,0x28283636,0x0E10100E,0x0E10365D,0x28280E28,0x0E239494 + + .word 0x10101010,0x10101010,0x28101010,0x27270E10,0x5D28270E,0x675D5D5D,0x5D5D360E,0x5D273667 + .word 0x11363610,0x1210100E,0x28280E10,0x23101028,0x28121010,0x11231012,0x27122810,0x28927036 + .word 0x10101010,0x275D6712,0x10282828,0x0E121210,0x0E12125D,0x10101010,0x5D363667,0x0E282736 + .word 0x67362727,0x365D5D67,0x5D5D1111,0x36361236,0x36362836,0x10100E5D,0x23223636,0x10237067 + .word 0x00000000,0x00000000,0x00000000,0x0E000000,0x00000000,0x10000000,0x00000000,0x28000000 + .word 0x00000000,0x10102300,0x00000000,0x28102300,0x00000000,0x5D28280E,0x00000000,0x5D10110E + .word 0x0E270000,0x28360E10,0x12360E00,0x0E363628,0x345D270E,0x28110E12,0x28365D27,0x1028100E + .word 0x270E3628,0x2710100E,0x1010100E,0x67270E10,0x28101010,0x5D5D5D10,0x5D101010,0x1227365D + + .word 0x2827100E,0x0E5D6728,0x100E1010,0x10121212,0x10101010,0x10101010,0x0E282810,0x0E282710 + .word 0x5D121228,0x365D5D36,0x6736365D,0x36365D67,0x5D362767,0x10101236,0x5D5D1127,0x10230E5D + .word 0x360E3636,0x5D121010,0x100E1010,0x28361027,0x270E0E0E,0x10363636,0x27102727,0x23945D0E + .word 0x10102828,0x63A49428,0x280E0E0E,0x2873A46D,0x28112828,0x6773A297,0x6B282828,0x5D729E97 + .word 0x6D281128,0x1063A4A4,0x6B283436,0x2873A297,0x6B123468,0x67729E97,0x9D356895,0x5D359F9D + .word 0x9C608F9A,0x282B9F9C,0x91609B69,0x123E6391,0x9195A068,0x2863359D,0x9D9BA08F,0x37642B91 + .word 0x23102810,0x63A4A492,0x90719E6B,0x36ABA2A4,0x8E9C6B60,0x28AAABA4,0x6A906B60,0x3693ABA4 + .word 0x678E929D,0x5FAAA1A4,0x5E8E959E,0x5FAAA4A4,0x5D8D96AB,0x5FAAA4A4,0x5D8D8FAB,0x5F91A490 + + .word 0x28283622,0x3594A494,0x915D3536,0x99A3AEAB,0x9D68355F,0xA2A3AEAB,0x9D603536,0x9EA2ABAB + .word 0x605D3536,0x99A295AA,0x60363536,0x999E9C91,0x355D3528,0x98A26B8D,0x2B963536,0x8DA25D6A + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x0E000000,0x00000000,0x10100000,0x00000000,0x0E100000 + .word 0x10000000,0x270E1036,0x100E0000,0x10100E12,0x34122700,0x0E5D1028,0x36363627,0x285D100E + .word 0x365D270E,0x285D100E,0x10362727,0x0E361010,0x0E28270E,0x100E0E10,0x0E28270E,0x10100E10 + .word 0x5D282710,0x23101067,0x115D360E,0x1110100E,0x2836360E,0x11231028,0x28280E10,0x28927012 + .word 0x27121010,0x63A47036,0x23122810,0x36ABA492,0x23102810,0x28ABA2A4,0x90712810,0x36AAABA4 + + .word 0x36362811,0x35947067,0x23222836,0x99A3A494,0x28283636,0xA2A3AEAB,0x915D3622,0x9EA3AEAB + .word 0x9D5D3536,0x99A2ABAB,0x9D683536,0x99A295AB,0x6060355F,0x989E9CAA,0x605D3536,0x8DA26B91 + .word 0x6B283436,0x28359F97,0x9D123436,0x122B9F9D,0x9C356868,0x283E639C,0x91608F95,0x37633591 + .word 0x91609B9A,0x60642B9D,0x9D95A069,0x6E643691,0xAB9BA068,0x6E6D355D,0xAB9B9F8F,0x709C6036 + .word 0xAB9B9F9A,0x6064365D,0xAB959FA0,0x6E6D3536,0x6D959F9F,0x6E9C6036,0x6460A09F,0x70926036 + .word 0x64369F9F,0x6B6B9135,0x6F6D7271,0x6B359170,0x72946068,0x6B359C9B,0x9B916068,0x6063A1AA + .word 0x5D8D6AAB,0x5F3A6D67,0x368D95AD,0x353A635D,0x276A95AD,0x63363A5D,0x293470AD,0x6E283536 + .word 0x353695AB,0x702A3535,0x645D959F,0x91376063,0x95709FA2,0x952B619B,0xA19D999E,0x9B35369D + + .word 0x369F6036,0x698F5D36,0x369D7036,0x5D69675D,0x3695705D,0x2869365D,0x3670916D,0x3669715D + .word 0x36606E64,0x5E699C5E,0x5D5D636D,0x70699C95,0x365F6D95,0x958D9C9B,0x6063919D,0x9B9C9B8E + .word 0x00000000,0x36280E10,0x00000000,0x36100E0E,0x00000000,0x5D100E0E,0x00000000,0x28121000 + .word 0x00000000,0x28360E00,0x00000000,0x0E272300,0x00000000,0x10101000,0x00000000,0x10100E23 + .word 0x0E100E27,0x10103636,0x2810125D,0x2310365D,0x27101267,0x700E125D,0x36101012,0x675D3667 + .word 0x5D0E1010,0x28365D67,0x36122810,0x6A365D36,0x36122810,0x9B5F1227,0x675D2810,0xAA9B3627 + .word 0x8E719E6B,0x5F93ABA4,0x6A9C6B6B,0x5FAAA1A4,0x67906B60,0x5FAAA4A4,0x5E8E9260,0x5FAAA4A4 + .word 0x5D8E959D,0x5F91A4A4,0x5D8D969E,0x353A6D90,0x5D8D8FAB,0x633A6367,0x368D6AAB,0x6E363A5D + + .word 0x35363536,0x69A25D8D,0x2B5D3536,0x5D8F5D6A,0x36963528,0x28696736,0x369F6036,0x3669365D + .word 0x369D7036,0x5E69715D,0x36957036,0x70699C5D,0x3670915D,0x95699C5E,0x5D606E6D,0x9B8D9C95 + .word 0x6D959F9A,0x6B926036,0x64959FA0,0x6B6B9136,0x6460A09F,0x6B359135,0x6F369F9F,0x60359C70 + .word 0x726D729F,0x5F63A19B,0x9B946071,0x36A4A4AA,0x9D916068,0x3497A4AA,0x70366D68,0x36609CA4 + .word 0x9D366D6D,0x5FA4A4AA,0x705D5D9B,0x3697A4A4,0x70365D95,0x34609CA4,0x70365D95,0x36609C9C + .word 0x36363695,0x368F9C94,0x3636363A,0x6E9494A7,0x36603627,0x60959470,0x36923A27,0x68687128 + .word 0x6BA4989B,0x91606036,0xA4A49797,0x9A603636,0x9C9C9C67,0x9B60356D,0x9C9C9B67,0x9B353560 + .word 0x9C9C5E96,0x7036365E,0x9694363A,0x702B2B92,0x94955F6D,0x70233A95,0x3A60602B,0x70356891 + + .word 0x5DAAAA9B,0x9B9C9B6A,0x60AAAA9B,0x9C9C9C6A,0x60AAAE9B,0xAA9C905E,0x35AAAE9B,0xAA946A60 + .word 0x2B70AA9B,0x9B676A60,0x2B70AA96,0x706E6E37,0x2B689195,0x36245D2A,0x2B602892,0x28635E35 + .word 0x00000000,0x280E280E,0x00000000,0x2811360E,0x00000000,0x100E360E,0x00000000,0x0E122810 + .word 0x0E000000,0x27283412,0x27000000,0x0E365D36,0x0E000000,0x10365D27,0x10000000,0x0E28270E + .word 0x5D672710,0xA7956012,0x275D2710,0x726F6D16,0x365D0E10,0xA7613710,0x675D1010,0x9429230E + .word 0x5D5D2810,0x36282811,0x5D281010,0x12122836,0x36271010,0x28100E36,0x0E0E1010,0x10101010 + .word 0x278D95AB,0x7028355D,0x296A95AD,0x912A3536,0x353470AD,0x95376035,0x643695AD,0x9B2B6163 + .word 0x955D95AB,0x9135369B,0xA1709F9F,0x9A60609D,0x6B9D99A2,0x9B603636,0xA4A4989E,0x9B603536 + + .word 0x365D6364,0x9B9C9B9B,0x605F6D6D,0x9C9C9B8E,0x5D639195,0xAA9C9C6A,0x60AAAA9D,0xAA9C906A + .word 0x60AAAA9B,0x9B946A5E,0x35AAAE9B,0x70676A60,0x2BAAAE9B,0x366E6E60,0x2B70AA9B,0x28245D37 + .word 0x705D5D6D,0x36609CA4,0x70365D9B,0x6E8F9C9C,0x36365D95,0x60949494,0x36363695,0x689594A7 + .word 0x36363695,0x68687170,0x3660363A,0x925D6E28,0x6E923A27,0x6E36682B,0x95957127,0x60286035 + .word 0x6E957127,0x685D6E2B,0x95929235,0x92366835,0x9568912B,0x6E28606D,0x956E2828,0x6027606E + .word 0x953E365D,0x60233A68,0x95635D5E,0x63243A70,0x91605D5D,0x64237094,0x6D6D365D,0x2B609C91 + .word 0x6328602B,0x35606E63,0x63353735,0x5F683E3B,0x36373A2B,0x6E353535,0x362A6335,0x6E353A6E + .word 0x362A6D6D,0x6D3A6092,0x632A7195,0x6D3A6E91,0x682A9495,0xA75D7194,0x9C609CAA,0x6E6D6E91 + + .word 0x36602392,0x286E5D6E,0x2835375F,0x28915D6E,0x23372B35,0x28916D27,0x23252B3A,0x28928E5D + .word 0x5D253660,0x2871926A,0x67362B68,0x22716A8F,0x675D2B68,0x36946791,0x8D5D2B5D,0x369C8DAA + .word 0x10000000,0x10281010,0x0E000000,0x10280E0E,0x0E000000,0x12362812,0x00000000,0x27280E10 + .word 0x00000000,0x36282828,0x00000000,0x28272710,0x00000000,0x10283600,0x00000000,0x0E271200 + .word 0x0E0E1010,0x36121010,0x0E121010,0x36272310,0x12231010,0x10100E0E,0x36101010,0x10102836 + .word 0x36121036,0x350E2828,0x36360E36,0x6D230E0E,0x5D281010,0x28280E28,0x360E1010,0x24002736 + .word 0x9CA4979B,0x7035356D,0x9C9C9C97,0x70363660,0x9C9C9B67,0x702B2B5E,0x969C5E67,0x70233A92 + .word 0x94943696,0x35356895,0x3A955F3A,0x5F606E91,0x6360606D,0x6E683E63,0x6328602B,0x6E35353B + + .word 0x2B70AA9B,0x28635E2A,0x2B689196,0x286E5D35,0x36602895,0x28915D6E,0x28602392,0x28916D6E + .word 0x23353792,0x28928E27,0x23372B5F,0x2271925D,0x5D252B35,0x36716A6A,0x6725363A,0x3694678F + .word 0x95929227,0x6027606D,0x95689135,0x63233A6E,0x956E282B,0x64243A68,0x953E3628,0x2B237070 + .word 0x91635D5D,0x35609C94,0x6D605D5E,0x6D3E9191,0x9C6D365D,0x71366E91,0x6D5D5D5D,0x6E606D92 + .word 0x9C5D5D28,0x353E9191,0x6D5D6A36,0x6D366E92,0x6E60716E,0x71606D71,0x716E916E,0x6E367271 + .word 0x25366E70,0x5E607271,0x2E2A5D68,0x60376E71,0x2B253A68,0x6E237171,0x36253768,0x6E127171 + .word 0x9C679C6D,0x6D656D67,0x92926D5D,0x5D3E6D5E,0x71717163,0x5D362F2F,0x71716E60,0x6E5D2A2F + .word 0x71716060,0x705E362F,0x71603A3A,0x6D5D262A,0x71706363,0x635D2637,0x71716D60,0x3728263A + + .word 0x675E355D,0x5D91A4AA,0x6F6D6D3E,0x3E5D92A7,0x6E916D63,0x35356072,0x5D606E91,0x2E266071 + .word 0x36365E71,0x60263B5E,0x3A366071,0x6036266E,0x6D602363,0x3A36262B,0x71712371,0x60232635 + .word 0x00000000,0x36271000,0x00000000,0x36272800,0x00000000,0x36272800,0x00000000,0x12283612 + .word 0x36000000,0x10285D28,0x36000000,0x10125D36,0x27000000,0x10105D5D,0x0E000000,0x12272827 + .word 0x0E101028,0x2B05005D,0x10101236,0x2B15005D,0x10102736,0x2B253612,0x1012360E,0x2B2B3610 + .word 0x10365D10,0x6D2A3627,0x10363610,0x6E292727,0x0E0E5D28,0x9570350E,0x0E103636,0x95923527 + .word 0x3635372B,0x6D353A35,0x36373A35,0x6D3A606E,0x362A632B,0xA73A6E92,0x632A6D35,0x6E5D7191 + .word 0x682A716D,0x6D6D6E94,0x9C2A9495,0x5D656D91,0x9C609C95,0x5D3E6D67,0x92679CAA,0x6E362F5E + + .word 0x67362B60,0x5D9C8D91,0x8D5D2B68,0x3E91A4AA,0x675D2B68,0x355D92AA,0x6F5E355D,0x2E3560A7 + .word 0x6E6D6D5D,0x60266072,0x5D916D3E,0x60263B71,0x36606E63,0x3A36265E,0x3A365E91,0x6036266E + .word 0x6E5D6A28,0x5E367271,0x71607136,0x60607271,0x256E916E,0x6E376E71,0x2E366E6E,0x6E237171 + .word 0x2B2A5D70,0x2B127171,0x36253A68,0x36116E71,0x63253768,0x37116E71,0x60252B68,0x2823606D + .word 0x63252B68,0x2B116E71,0x60256068,0x36116E6D,0x5D25686E,0x37236036,0x5D376E74,0x28286063 + .word 0x363A6870,0x283A6028,0x22366068,0x686D3A22,0x24256363,0xA7360E12,0x34366036,0x6D342936 + .word 0x716E7460,0x2A236063,0x6D6E7460,0x2B35606D,0x6D6E7060,0x3E60606D,0x6E6E6E3A,0x656E6E71 + .word 0x60686D28,0x3E607071,0x60603636,0x373A8D8D,0x63633627,0x36366070,0x6D6D5F36,0x15343670 + + .word 0x7171282B,0x5D2B263A,0x6D365D28,0x602A255D,0x6E363625,0x6E372536,0x5D361263,0x6E37373A + .word 0x60362B63,0x6028603A,0x603B3B35,0x3622633A,0x3A26633B,0x27365F63,0x5D233636,0x36605F70 + .word 0x93737070,0xA5A6A6A6,0xA6937070,0xA593A5A5,0xA8A67070,0xA573A6A9,0xA6937393,0x93937070 + .word 0x707093A6,0xA8737070,0x7070A6A5,0xA5A67070,0x707093A5,0xA5A69373,0x7370A6A5,0xA5A5A673 + .word 0xA670A5AC,0xA66E70A9,0xA670A8AC,0x6E7370AC,0xA693ACAC,0x73A6A5A5,0xA593B8AC,0x93A6A5A5 + .word 0xA8A5B8A5,0x73A6A5A5,0xA8A5A8A8,0x93A6A5A8,0xACACACA8,0x7070A5AC,0xA8ACACAC,0x707070A5 + .word 0xA5A67064,0xA6707070,0xA6936E64,0xA5707070,0x7370706E,0xA6A67073,0x7393706E,0x93939393 + .word 0xA6737070,0xACA5A5A5,0x93737070,0xA5A5A5A6,0x70707070,0xA5A5A593,0x70937370,0xA9A8A9A6 + + .word 0xA5A673A6,0x70707393,0xA69373A6,0x70707393,0x70737393,0x70707070,0x70707370,0xA6737070 + .word 0x707093A5,0xA8937370,0x737393A5,0xACA693A6,0xA69393A5,0xACA593A5,0xA6A5A6A6,0xACA8A6A5 + .word 0x0E100E27,0xAA933636,0x2810125D,0xA793365D,0x27101267,0x6463125D,0x36101012,0x675D3667 + .word 0x5D0E1010,0x28365D67,0x36122810,0x372A5D36,0x36122810,0x3E291127,0x675D2810,0x35361127 + .word 0x71926D6D,0x705D2A2F,0x7171715D,0x6D5E362F,0x71716E63,0x635D262F,0x71716060,0x375D262A + .word 0x71603A60,0x2A282637,0x7170633A,0x2B23603A,0x71716D63,0x3E356063,0x6D6E7460,0x6560606D + .word 0x6D366071,0x5D23262B,0x71602371,0x602B2635,0x71712363,0x6E2A253A,0x6D712871,0x6E37255D + .word 0x6E365D2B,0x60373736,0x5D363628,0x3628603A,0x60361225,0x2722633A,0x60362B63,0x36365F3A + + .word 0x5D256068,0x28286036,0x5D256868,0x683A6063,0x36376E6E,0xA76D3A28,0x223A6874,0x6D360E22 + .word 0x24366070,0x5F342912,0x34256368,0x36223636,0x60366063,0x36223660,0x60605D36,0x36363A60 + .word 0x60605D60,0x5F223660,0x60603636,0x36223660,0x6E6E3636,0x36363A6E,0x3A603636,0x36366036 + .word 0x3A606028,0x3A283A37,0x5D3A5D12,0x2B11282A,0x35363512,0x230E0E28,0x36360E11,0x12110E28 + .word 0x606E5F60,0x22226060,0x36603636,0x60253436,0x366E3636,0x3A362536,0x3A605D5D,0x67362536 + .word 0x2860605D,0x675D2515,0x2A5D5D5D,0x5D5D1115,0x35355D28,0x355D1125,0x36351112,0x28361128 + .word 0x35366064,0x5D3E3E64,0x36603660,0x36366560,0x36363667,0x3A366E6E,0x362A3A60,0x11366067 + .word 0x11353760,0x1128635D,0x0E122A5D,0x0E28635D,0x1212353E,0x0E353535,0x28113628,0x11363636 + + .word 0x9393A8A5,0xA8A5A693,0x7093A6A5,0xA8A5A693,0x70707393,0xA8A5A593,0x73707393,0xA6A5A593 + .word 0x707093A6,0x70A6A673,0x70707070,0x73937393,0x93707070,0x707393A6,0xA5737070,0x7073A693 + .word 0xA8ACACA8,0x707070A6,0xA5A8A5AC,0x70707093,0xA593A5A8,0x70707070,0x73A67370,0x70709393 + .word 0x73707070,0x7093A6A6,0x93737070,0x7070A5AC,0xA5A67070,0x70707093,0x93737070,0x70707070 + .word 0xA5A69373,0xA5B9ACA8,0xA6737070,0xA9A9ACA8,0x93707070,0xA9A9A9A6,0x70707070,0xACA9A5A5 + .word 0xA6707070,0xACA5A693,0x73939373,0xA5A69393,0x93A5A693,0xA6737070,0xA5A9A570,0x937070A6 + .word 0x93939370,0xA8B8B893,0x937070A6,0xA5ACACA5,0x7093A6A9,0xA6A69373,0x7393A5A8,0x70739393 + .word 0xA6A5A5A5,0xA5A8ACA6,0xA5A5A8A8,0x93A6A8A5,0xA5A5A6A5,0x7070A5A5,0xA6739393,0x7093A5A5 + + .word 0x5D672710,0x60371212,0x275D2710,0x60601510,0x365D0E10,0x603A2A10,0x675D1010,0x3A37280E + .word 0x5D5D2810,0x27282811,0x5D281010,0x12122836,0x36271010,0x28100E36,0x0E0E1010,0x10101010 + .word 0x6D6E7460,0x3E6E6E6D,0x6E6E7060,0x37607071,0x606E6E60,0x363A8D71,0x60686D3A,0x1536608D + .word 0x63603628,0x22343670,0x6D633636,0x60226070,0x606D5F27,0x3A253460,0x366E5F36,0x67362536 + .word 0x3A3B3B63,0x5D605F63,0x5D266335,0x363E3E70,0x3523363B,0x3A366564,0x36366036,0x11366E60 + .word 0x36603664,0x1136606E,0x36363660,0x0E286367,0x112A3A67,0x0E28635D,0x0E353760,0x1135355D + .word 0x6E603660,0x3A36606E,0x3A6E3636,0x2B283A36,0x3A603636,0x23112837,0x5D606036,0x120E0E2A + .word 0x353A5D28,0x11110E28,0x36363512,0x0E110E28,0x3A360E12,0x110E0E28,0x28280E11,0x230E1128 + + .word 0x3A280E11,0x11110E28,0x28260E0E,0x0E0E0E28,0x2A120E11,0x110E1112,0x15120E12,0x230E122A + .word 0x230E0E25,0x2F0E0E23,0x22111122,0x60361122,0x11111122,0x3E5E1122,0x11111111,0x60363636 + .word 0x28121111,0x12361128,0x0E0E0E0E,0x11280E28,0x0E0E120E,0x110E0E23,0x0E12150E,0x0E12120E + .word 0x0E232311,0x0E26260E,0x22362822,0x22363611,0x22282811,0x28285D11,0x110E2828,0x28273611 + .word 0x28283728,0x11372826,0x25283712,0x2828110E,0x1212362A,0x3636110E,0x120E2A37,0x3737120E + .word 0x230E112F,0x2B2B2F0E,0x11060E36,0x60603611,0x0E111128,0x3E3E3E11,0x0E3A2712,0x36366311 + .word 0xA5937070,0x707093A5,0xA5A67070,0x9370A6A8,0xA8937070,0xA6A5A5AC,0xA5A67370,0xA8A8ACAC + .word 0xA8A5A5A5,0xA8ACACAC,0xA5A5A5A5,0xACA9A593,0xA5A5A8A5,0xA5A5A5A5,0xA5A5A5A5,0xA5A593A6 + + .word 0x73707070,0x70707070,0x70709373,0x70707070,0x7393A6A6,0x70707070,0x7393A6A5,0x7070706C + .word 0x73A6A5A5,0x70706C73,0x93A5A5A5,0x706C6C70,0xA6A5A5A5,0x736C6C70,0xA6A5A5A5,0x73737073 + .word 0xACA9A673,0x7073A6A8,0xB8A9A673,0x7093A8A8,0xA8A6A693,0x93A6A8AC,0xA6737073,0x93A5A5A8 + .word 0xA6737070,0x93A5A8A6,0x93706E6E,0xA6A5A5A5,0x7070706E,0xA993A5A6,0x70707073,0x7093A6A5 + .word 0x70707073,0x7073A6A6,0x70707070,0x70709393,0x70707070,0x70707373,0x73737370,0x93707070 + .word 0x93A6ACA6,0xA6737070,0x9393A5A9,0xA5737073,0x7093A6A5,0x93707073,0x70709370,0x93939373 + .word 0x0E0E1010,0x36121010,0x0E121010,0x36272310,0x12231010,0x10100E0E,0x36101010,0x10102836 + .word 0x36121036,0x350E2828,0x36360E36,0x6D230E0E,0x5D281010,0x28280E28,0x360E1010,0x03002736 + + .word 0x36603660,0x67362536,0x3A6E3636,0x5D5D2536,0x28605D36,0x355D1115,0x2A60605D,0x285D1115 + .word 0x355D5D5D,0x12361125,0x36355D5D,0x11361128,0x28351128,0x11280E28,0x0E121112,0x0E0E0E28 + .word 0x12122A60,0x11363635,0x2812355D,0x28372836,0x2811363E,0x36281126,0x25283728,0x3736110E + .word 0x12283728,0x2B37120E,0x12123612,0x602B2F0E,0x230E2A2A,0x3E60360E,0x110E1137,0x363E3E11 + .word 0x2A260E11,0x2F0E1212,0x15120E0E,0x600E0E2A,0x23120E11,0x3E361123,0x220E0E12,0x605E1122 + .word 0x11111125,0x3A363622,0x11111122,0x36633636,0x11111122,0x6363280E,0x06002711,0x36352806 + .word 0x11112727,0x3A243663,0x0E060001,0x36366328,0x06060301,0x63636328,0x0E0E0E28,0x28363511 + .word 0x0E0E0E0E,0x12222211,0x06060E0E,0x06111106,0x06030306,0x0603030E,0x06020000,0x0003060E + + .word 0x060E3635,0x1111360E,0x0E060E11,0x03136328,0x06060E11,0x0306280E,0x06060612,0x0E0E0E0E + .word 0x05060E11,0x0E0E0E06,0x03060E11,0x030E2806,0x06041236,0x01376313,0x03060E0E,0x2A633701 + .word 0x36633612,0x36361111,0x63631302,0x37633528,0x632A0303,0x2A632828,0x23030303,0x632A0E06 + .word 0x04010203,0x23010304,0x01000203,0x0E000002,0x00060102,0x0E030002,0x06030002,0x010E0003 + .word 0x93A6A8A5,0xA5A5A693,0x70A8A8A5,0xA5A5A593,0x73A6ACA5,0xA8ACA593,0xA69393A5,0xA8AC93A5 + .word 0x937073A6,0x7AAC9370,0x70737073,0xA8A8A670,0x70707073,0xACA89370,0x70707070,0xA5A5A573 + .word 0x93A6A5A5,0x93737070,0x73A5A5A5,0x70707070,0xA5A8A6A5,0x73707073,0xA5A673A6,0x73737393 + .word 0xA6A67373,0x73737073,0x6C6C6CA6,0x736C6C6C,0x7373A6A5,0x93A69393,0x7070A8A8,0xA5937093 + + .word 0x93709393,0x7070A6A5,0xA570A5A6,0x7393A5A5,0xA8A5A5A6,0x73A6A5A5,0xA8A8A593,0x9393A5A8 + .word 0xACA8A593,0x93A6A6A8,0xA5A5A593,0x70A6A5A5,0x93A87370,0x70707393,0xA5A57070,0x70707070 + .word 0x93707070,0xA5A5A5A6,0xA6737070,0xA5A5A5A5,0xA6937370,0x73A6A6A5,0x93937373,0xA6709393 + .word 0x93737370,0xA6707073,0x73737370,0x93707073,0x73739373,0x73707070,0xA69373A6,0x70707093 + .word 0x0E101028,0x0E02005D,0x10101236,0x110E0336,0x10102736,0x0E0E1112,0x1012360E,0x06023610 + .word 0x10365D10,0x02003627,0x10363610,0x00002727,0x0E0E5D28,0x0000100E,0x0E103636,0x000E2827 + .word 0x0E0E0E11,0x0E121223,0x0E0E120E,0x2226260E,0x0E12150E,0x2836360E,0x2223230E,0x28285D11 + .word 0x22362811,0x11273611,0x11282822,0x03133611,0x060E2811,0x03066328,0x0E063628,0x0E0E280E + + .word 0x0E060E2F,0x36366311,0x0E111136,0x37631111,0x363A2728,0x2A633528,0x63633612,0x632A2828 + .word 0x632A1302,0x23010E06,0x23030303,0x0E000304,0x04010303,0x0E030002,0x01000203,0x010E0002 + .word 0x06030101,0x2222110E,0x0E0E0101,0x1111110E,0x0E0E2828,0x03030606,0x060E0E0E,0x03060E06 + .word 0x03030E0E,0x0E220E06,0x02000606,0x11222222,0x00000000,0x2227230E,0x03000000,0x22342727 + .word 0x22000000,0x060E2222,0x0E030000,0x0E112223,0x27270200,0x12222727,0x270E0000,0x12223436 + .word 0x0E000000,0x22342734,0x0E000000,0x11223627,0x00000000,0x12120D0E,0x00000000,0x00000000 + .word 0x02060603,0x012A0200,0x03060311,0x03060606,0x06060E0E,0x0D0D0606,0x120E0E06,0x23362211 + .word 0x11000000,0x00362811,0x00000000,0x0036340E,0x00000000,0x00000208,0x00000000,0x00000000 + + .word 0x0E060000,0x0000060E,0x0E0E0E06,0x00010311,0x110E0D06,0x00060E11,0x34000000,0x00000E11 + .word 0x00000000,0x00002211,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x0E100E27,0x10103636,0x2810125D,0x2310365D,0x27101267,0x700E125D,0x36101012,0x675D3667 + .word 0x5D0E1010,0x23365D67,0x36122810,0x00365D36,0x36122810,0x00281127,0x675D2810,0x00361127 + .word 0x06060E11,0x0E0E0E0E,0x06060E11,0x030E0E06,0x05060612,0x01372806,0x03060E11,0x2A636313 + .word 0x06040E11,0x012A3701,0x03061236,0x03060200,0x02060E0E,0x0D0D0606,0x03060603,0x230D0606 + .word 0x00060203,0x00000003,0x06030102,0x0001060E,0x0E060002,0x00060311,0x0E0E0000,0x00060E11 + .word 0x110E0E06,0x00000E11,0x340E0D06,0x00002211,0x00000006,0x00000011,0x00000000,0x00000000 + + .word 0x27020000,0x34343627,0x0E020000,0x22273427,0x00000000,0x1236270E,0x00000000,0x000D0E0E + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x44312D0F,0x130F0D31,0x2C393113,0x130D0D2D,0x0F2D252D,0x0D0D0D75,0x14133838,0x0D0D0D44 + .word 0x440F0F2D,0x0D0D0D44,0x75141413,0x0D0D0F44,0x39393938,0x0D0F3839,0x39393944,0x0F133939 + .word 0x142D4475,0x3144392F,0x44393908,0x39391339,0x392C2D13,0x382C0D2C,0x39444431,0x142D4444 + .word 0x4438392D,0x75393939,0x38382D39,0x44443939,0x2F2F2C2D,0x0F142F44,0x382D310F,0x0D0E0D13 + .word 0x2D443914,0x13443944,0x44397575,0x38757544,0x39447575,0x39754444,0x39753939,0x75394439 + .word 0x752D7575,0x44447539,0x752F3939,0x44447575,0x4439312C,0x75443944,0x75752C12,0x390D7539 + + .word 0x0D080F31,0x2C13442D,0x2D0F0F2D,0x0F39392D,0x0F2C1314,0x2C0D132C,0x2D391314,0x2F2D140D + .word 0x082D2D13,0x2D0D0F0D,0x0D153144,0x140F140D,0x14082D39,0x2C2C0D2C,0x39311439,0x14140D0F + .word 0x39442C44,0x823C1331,0x4475142C,0x7C30460F,0x380F0D0F,0x77464539,0x130D0D08,0x2D8A8A80 + .word 0x39131313,0x0F133C8A,0x46443914,0x0D0D2644,0x0D0F392C,0x0D0D153C,0x31442C44,0x77263C30 + .word 0x0D0D0D44,0x0D0D0D0D,0x0D0D0D13,0x0D0D0D39,0x8A430D0F,0x0D0F4475,0x8A810D0D,0x0D31392C + .word 0x81770D0D,0x0D0D0D13,0x440D0D0D,0x817E0D0D,0x0D0F0D0D,0x81B20F2C,0x77140D0D,0x75B3777E + .word 0x46448177,0x13440F13,0x3A7CB377,0x082C1339,0x447E8A0D,0x132D3944,0x3144550D,0x2C2C3946 + .word 0x46750D0D,0x2C143939,0x2C0F0D0D,0x2C143177,0x0D0D0D0D,0x142C778A,0x0F0D0D0D,0x2C2C8177 + + .word 0x23142C0D,0x2D750F39,0x230D0D0D,0x2C2D380D,0x0D11080E,0x13141413,0x0E0D132D,0x0F0D080D + .word 0x0F2C2D2C,0x120E0D0F,0x2D392D2D,0x13251413,0x44442D2D,0x2C2D0F2D,0x44313944,0x392C142D + .word 0x31132308,0x2C080D14,0x382F140D,0x1438130D,0x31440D0D,0x0D2F2D44,0x4444752C,0x0F314439 + .word 0x44757544,0x13394444,0x75397575,0x08382C39,0x142C2C39,0x1338392D,0x13442C0F,0x2C142F39 + .word 0x080D0844,0x0D397525,0x0D383939,0x38384475,0x13443975,0x2C2C0839,0x38397514,0x0F2C2F39 + .word 0x2D2D2F25,0x132C382F,0x2D39390D,0x142D382F,0x2D394438,0x14382F2D,0x392C2D39,0x142C2D2D + .word 0x0D467739,0x0D0D0D0D,0x0D0F7C39,0x0D0D770D,0x0D0F3846,0x0D447531,0x810D132C,0x0D397780 + .word 0xB20D1408,0x13314181,0x8A430F0D,0x0D0D2A7C,0x452C0D0F,0x130F0D2C,0x2D44750F,0x442D0F2D + + .word 0x397E7755,0x130F4438,0x4439B20D,0x2D117539,0x39774443,0x0D08312D,0x390D4543,0x12231339 + .word 0x382D0F0D,0x130F152F,0x08440D0D,0x0F2C2C2A,0x2D14130D,0x082D7538,0x13383944,0x392C752C + .word 0x2A134413,0x1375122D,0x2C2C1413,0x082C3838,0x38440F39,0x132D3938,0x2D2D2C75,0x2C2C3838 + .word 0x2D317575,0x2C142D38,0x38317575,0x2C142C2D,0x2D447575,0x140D142C,0x38447575,0x2C2C2C2C + .word 0x23142C0D,0x2D750F13,0x230D0D0D,0x2C2D380D,0x0D11080E,0x13141413,0x0E0D132D,0x0F0D080D + .word 0x0F2C2D2C,0x120E0D0F,0x2D392D2D,0x13251413,0x44442D2D,0x2C2D0F2D,0x44313944,0x392C142D + .word 0x39442C44,0x31082C31,0x4475142C,0x0D08390F,0x380F0D0F,0x392C1439,0x130D0D08,0x2D394444 + .word 0x39131313,0x44757575,0x2D443914,0x44447544,0x390F392C,0x14444439,0x31442C44,0x2C0F3839 + + .word 0x38443939,0x132C142C,0x44394438,0x39310D39,0x4475132C,0x440F4475,0x142D0813,0x7531392C + .word 0x0D0D080F,0x750D0D13,0x140D0F2C,0x75130D0D,0x0D0F2D2D,0x442D0F2C,0x08142D2C,0x7544392D + .word 0x312C1313,0xB2753914,0x142D310F,0x77313131,0x392D140F,0x4644392D,0x31313924,0x2D397544 + .word 0x75443944,0x2D394444,0x312D3944,0x31443975,0x752C4414,0x3939392C,0x0D390D44,0x44383844 + .word 0x39390D0D,0x758A392C,0x310D0D0F,0x0D818144,0x810D0D2E,0x0D774475,0x770D0F45,0x0D447544 + .word 0x0D0F1377,0x0F0D4439,0x0D153D2D,0x390D2D44,0x0D153981,0x44132C0F,0x0D0D3981,0x44390D08 + .word 0x0F460F0D,0x31468A0F,0x2F8A770D,0x75810F0F,0x81778113,0x77810F0F,0x81448145,0x81810F0F + .word 0x81447544,0x46140F0F,0x77774475,0x8A130D0F,0x2D773975,0x080D0D0F,0x0F463939,0x140D0D0D + + .word 0x39394444,0x39310F39,0x39447544,0x2D393844,0x44391439,0x11447539,0x38143146,0x2C2C7544 + .word 0x442F317C,0x44393939,0x39384444,0x2D443975,0x4439448A,0x14313975,0x75754481,0x14132D39 + .word 0x06223600,0x11030606,0x11283600,0x110E0612,0x11343600,0x0E0E0E11,0x0E020000,0x06000000 + .word 0x08000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x39444444,0x312D2C2D,0x39444444,0x75443939,0x38394444,0x44447544,0x44444444,0x75394475 + .word 0x44444439,0x0D143939,0x44394439,0x2513392C,0x38443944,0x080D2D39,0x082D3939,0x142C142D + .word 0x39394444,0x39310F39,0x39447544,0x2D393844,0x44391439,0x11447539,0x3814312D,0x2C2C7544 + .word 0x442F312D,0x44393939,0x39384444,0x2D443975,0x4439442D,0x14313975,0x75754444,0x14132D39 + + .word 0x312C1313,0x39753913,0x0F2D310F,0x31313131,0x442D140F,0x2D44392D,0x31313924,0x2D397544 + .word 0x75443944,0x2D394444,0x312C3944,0x31443975,0x752C4414,0x3939392C,0x0D390D44,0x44383844 + .word 0x130F0D14,0x7575392C,0x312C1424,0x75757544,0x752D2D2D,0x44444475,0x442F2D2D,0x44447544 + .word 0x0D144439,0x3939390D,0x0D0F0D0D,0x382D2D13,0x0D0D0F13,0x392D2C0F,0x0D0D132D,0x2C0D0D08 + .word 0x0F2D3939,0x380F392C,0x2D393839,0x442D3938,0x3939392D,0x752D142D,0x382C132C,0x39394438 + .word 0x14131408,0x1331080D,0x2D0F0F0D,0x0D0D0F13,0x0D2C0D0F,0x130F0D0D,0x2D44750F,0x442D0F2D + .word 0x38394439,0x130F4438,0x39394439,0x2D117539,0x39444438,0x0D08312D,0x390D1344,0x12231339 + .word 0x382D0F0D,0x130F152F,0x08440D0D,0x0F2C2C2A,0x2D14130D,0x082D7538,0x13383944,0x392C752C + + .word 0x31132308,0x2C080D14,0x382F140D,0x1338130D,0x31440D0D,0x0D2F2D44,0x4444752C,0x0F314439 + .word 0x44757544,0x13394444,0x75397575,0x08382C39,0x142C2C39,0x1338392D,0x13442C0F,0x2C142F39 + .word 0x080D080D,0x39390D25,0x0D38390D,0x38382C2D,0x13443925,0x2C2C080F,0x38397514,0x0F2C2F39 + .word 0x2D2D2F25,0x132C382F,0x2D39390D,0x142D382F,0x2D394438,0x14382F2D,0x392C2D39,0x142C2D2D + .word 0x0D080F31,0x2C13442D,0x2D0F0F2D,0x0F39392D,0x0F2C1314,0x2C0F132C,0x2D391314,0x2F2C140D + .word 0x082D2D13,0x2D0D0F0D,0x0D153144,0x140F140D,0x14082D39,0x2C140D2C,0x39311439,0x2C14130F + .word 0x0D31440F,0x77130F0D,0x0F134414,0x810F0D0D,0x0F44812D,0x380F0D0D,0x13447538,0x0F0D0D0D + .word 0x8A8A752D,0x0D0D0D0F,0x818A312C,0x0D0D0F0F,0x39B27E39,0x0F0D0D0F,0x0F397780,0x0F0D0D0D + + .word 0x142D4475,0x3144392F,0x44393977,0x39391339,0x392C758A,0x382C0D2C,0x39758A31,0x142D4444 + .word 0x8A390F0D,0x75393944,0x1314130F,0x44447544,0x13148A81,0x0F44130F,0x468A77B2,0x0D110F0F + .word 0x0D080F31,0x2C13442D,0x2D0F0F2D,0x4631392D,0x0F2C1314,0x46397514,0x14391314,0x81814413 + .word 0x14142F14,0x81312C13,0x13252D44,0x44313824,0x38383831,0x44393938,0x382D3139,0x442C3838 + .word 0x39312D0F,0x13132D2D,0x2C393113,0x380F8131,0x0F2C2D2D,0x24147E75,0x2D2C2D7C,0x39317E44 + .word 0x38397781,0x39B23944,0x3877448A,0x46817544,0x2D778144,0x46818177,0x39397739,0x43817777 + .word 0x2D2D4444,0x31443814,0x2D393931,0x44442D2D,0x382D3138,0x75442D2D,0x38393131,0x75397738 + .word 0x392D312D,0x44757744,0x31312D31,0x2D314639,0x31443146,0x14144631,0x4548467E,0x13454381 + + .word 0x07143914,0x13443914,0x0D2D7575,0x3875752D,0x39394444,0x392F3944,0x38394444,0x75392F2F + .word 0x13383939,0x44772D13,0x13253838,0x44773913,0x242C2D24,0x75777738,0x2C2C3114,0x3914822D + .word 0x31312D44,0x39383838,0x382D2D2C,0x390F2C2D,0x2D2C140F,0x1338462D,0x45141408,0x77451414 + .word 0x31464513,0x7E774646,0x46773914,0x7E393931,0x39132D2C,0x7E463944,0x392D132D,0x3846312D + .word 0x7E387739,0x382C467E,0x7E817744,0x14131314,0x45468224,0x0F0D0F0F,0x0F457E7E,0x0D0D0D0D + .word 0x08084581,0x08080808,0x080D147E,0x08080808,0x0D0D2446,0x08080808,0x0F142D77,0x08080808 + .word 0x38484544,0x1331837E,0x38141414,0x0F55817D,0x25130F0F,0x0F813838,0x0F0F0D0D,0x457C450F + .word 0x0D0D0D0D,0x7E462C0D,0x0D0D0D08,0x7E46140D,0x0D080808,0x812D0D0D,0x0D080808,0x7E46140D + + .word 0x2C25312C,0x2D755581,0x7E2C2C0D,0x2C2D387E,0x7E2F140D,0x13141413,0x48452C2C,0x0F0D252F + .word 0x24774831,0x0F0F0F13,0x452D2D7E,0x13251445,0x45313846,0x2C141345,0x13454577,0x2C141313 + .word 0x2D2D2C14,0x392D2C39,0x2D2F3814,0x3844392D,0x2F382D14,0x0D39392D,0x2F382C13,0x252F2D2D + .word 0x392F2C0F,0x14753938,0x0F082C2C,0x25394413,0x2D2C3838,0x0F39380D,0x250F3939,0x0F080D08 + .word 0x392F142C,0x0F2C4413,0x2D393813,0x392C2C14,0x392C3808,0x75753975,0x44443913,0x44757544 + .word 0x3944310F,0x2C754444,0x442D2F0F,0x0F0F4431,0x0D133813,0x0D142F38,0x140D082C,0x080F1331 + .word 0x392C2D39,0x142C2D2D,0x2D394438,0x14382F2D,0x2D39390D,0x142D382F,0x2D2D2F25,0x132C382F + .word 0x38397514,0x0F2C2F39,0x13443925,0x2C2C080F,0x0D38390F,0x38380F2D,0x080D080F,0x38391025 + + .word 0x2D44750F,0x442D0F2D,0x0F2C0D0F,0x130F0D0F,0x2D0F0F0F,0x0D0F0F13,0x14131408,0x1331080F + .word 0x382C132C,0x39394438,0x3939392D,0x752D142D,0x2D393839,0x442D3938,0x0F313831,0x380F392C + .word 0x13383944,0x392C752C,0x2D14130F,0x082D7538,0x08440D43,0x0F2C2C2A,0x382D0F0D,0x130F152F + .word 0x39431344,0x15100F39,0x39444438,0x0D08312D,0x39394439,0x2D0F7539,0x38394439,0x130F4438 + .word 0x75393813,0x39754444,0x39757544,0x0D444444,0x44447539,0x75397575,0x39444444,0x39447539 + .word 0x3939440F,0x75447575,0x75443914,0x75392F2D,0x39757539,0x14313975,0x39757514,0x0F2C3975 + .word 0x0F132C2D,0x392C130F,0x0D142D75,0x2C31250F,0x0814380F,0x3C302C0D,0x0D130D14,0x7E7E2C0F + .word 0x0F0D0F0F,0x7777310F,0x0F430F2D,0x7746312C,0x140D0F13,0x463C312C,0x2D132C2C,0x3C312D2C + + .word 0x2C0F2D39,0x14142D44,0x2C443931,0x13314439,0x75753813,0x2D393939,0x44394439,0x39757539 + .word 0x38443977,0x75443944,0x2C397780,0x7539382D,0x2D407777,0x44312C2D,0x38467747,0x39131424 + .word 0x0F0D2D13,0x39080F13,0x0F080F0F,0x2C2D2C0F,0x2C317544,0x75752C15,0x392D3938,0x2C382A2F + .word 0x39393938,0x132D0813,0x17443939,0x38144413,0x24444444,0x39130D0F,0x38383939,0x310D0D13 + .word 0x2C752C39,0x44393813,0x38392408,0x0F13142D,0x2A14130F,0x0F0D4408,0x2F141413,0x0D0F2D38 + .word 0x38141414,0x44130F39,0x2D2C142C,0x38444439,0x382C142C,0x39443939,0x382D142C,0x39443938 + .word 0x2D0F2D44,0x0F75442D,0x0F0D0F13,0x0F0D2C0F,0x130F0F0F,0x0F0F0F2D,0x0F083113,0x08141314 + .word 0x38443939,0x2C132C38,0x2D142D75,0x2D393939,0x38392D44,0x3938392D,0x2C390F38,0x2D382D0F + + .word 0x2D2D2C14,0x392D2C39,0x2D2F3814,0x3844392D,0x2F382D14,0x0D39392D,0x2F382C13,0x252F2D2D + .word 0x392F2C0F,0x14753938,0x0F082C2C,0x25394413,0x2D2C3838,0x0F39380D,0x250F3938,0x0F080D08 + .word 0x080F0D2C,0x2D130F0F,0x0F2C2D39,0x130F0F0F,0x132D2D38,0x440F0F0D,0x0D393939,0x3944140D + .word 0x44754444,0x2D2D2F44,0x75444444,0x2D2D2D75,0x44757575,0x24142C31,0x2C397575,0x140F0F13 + .word 0x44383844,0x440D390D,0x2C393939,0x14442C75,0x75394431,0x44392C31,0x4444392D,0x44394475 + .word 0x4475392D,0x24393131,0x2D39442D,0x0F142D44,0x31313131,0x0F2D2D14,0x14393931,0x142D2D2D + .word 0x0D390D44,0x44383844,0x752C4414,0x3939392C,0x312C3944,0x31443975,0x75443944,0x2D394444 + .word 0x31313924,0x2D394439,0x2D2D2C0F,0x2D44312D,0x2C142C0F,0x3131312D,0x14141413,0x3939312C + + .word 0x0F0F132D,0x140D1008,0x0F0F0F0D,0x14131308,0x080F1744,0x0D0D130D,0x0D142D39,0x130F1308 + .word 0x442D2D2D,0x0F2C3144,0x752D2C2C,0x0F0D2C31,0x2C2C142C,0x0F130F13,0x1314142D,0x140D130F + .word 0x3C3C3C30,0x132C2C31,0x473C3C30,0x2C0D4646,0x47301416,0x31467E7E,0x3C0F0D10,0x7780817C + .word 0x13080F08,0x8080763C,0x0F0F0F13,0x77773C2C,0x080F0F08,0x46392D0D,0x0F0F0D0F,0x392D130F + .word 0x75754439,0x14132D39,0x4439312D,0x14313975,0x39382D2D,0x2D443975,0x442D2C31,0x44393939 + .word 0x38141431,0x2C2C7544,0x31132C77,0x14447538,0x240D2C39,0x31442D14,0x130D1339,0x382C1513 + .word 0x14383931,0x130D4475,0x2D2C392C,0x0F2D4439,0x440D1313,0x142F3939,0x44130D08,0x13443939 + .word 0x2C0D1019,0x382F3844,0x130D0813,0x2D250816,0x0D0F132C,0x2C141017,0x0D0F2C2C,0x2F140F0D + + .word 0x2C38312D,0x302D2C2C,0x2D392D2C,0x2D2C2C14,0x39312C24,0x2C2C2C2D,0x242D2C2D,0x2C2D2D39 + .word 0x2C2C2C2A,0x2D313814,0x242C2D2C,0x2D2F0F14,0x242C2D39,0x2D140D0F,0x2C2D2D2D,0x13080F13 + .word 0x4048463C,0x1414142C,0x40763C30,0x2C131438,0x47473C2F,0x1413243C,0x48473C2D,0x14132C40 + .word 0x7746382D,0x130F2F46,0x7777392D,0x0D0D3877,0x8046312D,0x0D0F3876,0x77483114,0x17133846 + .word 0x2D754438,0x2C0F1314,0x2D2D2D0F,0x0F131314,0x31143938,0x08131414,0x2F2D3814,0x0D142C14 + .word 0x38392D2C,0x2C2D2C14,0x3C39392D,0x2D2D2C3C,0x3C393825,0x2D313C48,0x2C2D2A0F,0x2D3C4547 + .word 0x392D1414,0x39447575,0x44393114,0x2D313944,0x3939442D,0x2D2D3831,0x2F393844,0x312C2D2D + .word 0x252F3914,0x3C14142F,0x14252D0D,0x3C2C1331,0x14152C2D,0x3C2F0D24,0x13152438,0x3C300D13 + + .word 0x2D2C2C13,0x14132D08,0x3946302C,0x130D1438,0x2C7E463C,0x0F0D0831,0x38467746,0x0F08080F + .word 0x2D467746,0x08080D0F,0x2C394648,0x1317160D,0x0D2D4047,0x080F0D0D,0x0F133C47,0x0D0D0D0F + .word 0x080F0D13,0x2D130F0F,0x08131313,0x130F0F0F,0x0D130D08,0x440F0F08,0x08130F13,0x3944140D + .word 0x44312C0F,0x2D2D2F44,0x312C0D0F,0x2C132C75,0x130F130F,0x2414132C,0x0F130D14,0x2C2D1313 + .word 0x0F0F132D,0x2C0D0F08,0x0F0F0F13,0x392D2C0F,0x0D0F0F44,0x382D2D13,0x0D144439,0x3939390D + .word 0x442F2D2D,0x44447544,0x752D2D2D,0x44444475,0x312C1424,0x75757544,0x130F0814,0x7575392C + .word 0x2D394475,0x2C2D1408,0x2C0F2D44,0x2D2D0F0D,0x0F0F1375,0x2C0F0F14,0x130D0D75,0x0F080F0F + .word 0x2C393175,0x24082D14,0x75440F44,0x2D147544,0x390D3139,0x2D44392D,0x13142C14,0x2C392D13 + + .word 0x39392D2D,0x442D2C2D,0x39382C31,0x2C2D2C2D,0x44311431,0x142C2C2D,0x752C132D,0x13142C2D + .word 0x44140F2C,0x082C2C2D,0x38130F14,0x132D2C31,0x13390D0F,0x2C2D2C31,0x31140D0F,0x2C2D2C2D + .word 0x132C2C44,0x2C2D2D2C,0x132C392C,0x142D242C,0x0F143814,0x2F141314,0x0F131313,0x30140F13 + .word 0x0F0F0F0F,0x30141313,0x13080D08,0x3013140D,0x0F140F2C,0x2C14140D,0x0F0F2C2C,0x312C130D + .word 0x08132C2D,0x0D0F130F,0x0F142F2F,0x0D131313,0x142F3C3C,0x0F131414,0x14303C45,0x1313142C + .word 0x2C3C4545,0x14132C2C,0x2D3C453C,0x13142C2C,0x38404745,0x132C2C2D,0x39444748,0x2C473C38 + .word 0x080F142C,0x2C140D0F,0x0F0D130F,0x140D080F,0x0F08080D,0x2C130F0F,0x0F080F0F,0x2C0F0D08 + .word 0x0F0F0F0F,0x140D0F0D,0x0D0D0D14,0x0D0D0F08,0x0F081313,0x0F0D0808,0x080F1413,0x080F0F08 + + .word 0x0D0D1331,0x3815130D,0x0F0F0F2C,0x2C25130D,0x0D080D2D,0x1314130D,0x080F1314,0x2F14130D + .word 0x0F0F0813,0x2F2C140F,0x0F0F0F0F,0x2D2C140F,0x0F080F0F,0x2C2D2C13,0x0F2C0F0F,0x2C31312C + .word 0x0D0F2C14,0x380F170D,0x0F242A13,0x38130F0F,0x0F24390F,0x31240F0F,0x0F133814,0x310F080F + .word 0x0F0D2F39,0x300F0D0F,0x0F0D2C31,0x380D0D0F,0x0F082414,0x38130D0F,0x0F0D240D,0x31130D0F + .word 0x2C2D382C,0x080D0F0F,0x2C2F3C3C,0x08080F0F,0x2D303C47,0x170D130F,0x0F304747,0x0D13130D + .word 0x13304747,0x13130F0F,0x13304747,0x0F080F0F,0x1330477E,0x0D0F0F0F,0x1330477E,0x0F0F0F0F + .word 0x77483C2C,0x170F2D44,0x46473C2C,0x0F133939,0x383C4513,0x0F0D2F39,0x2F2F2E0F,0x0F0F132D + .word 0x2C130D0D,0x0F0F132C,0x2C13080F,0x0F081314,0x30300D0F,0x0F0D0F2C,0x3C47140F,0x0F0F1326 + + .word 0x0F2C0F08,0x2D3C4547,0x0F2C080F,0x2D3C453D,0x130F0F0F,0x2D3C3C47,0x130F080F,0x2F3C3C30 + .word 0x080F080F,0x303C3C14,0x0F0F080F,0x303C3C2C,0x0F080F0F,0x303C3C2C,0x0F0F0F0F,0x303C3C2C + .word 0x0D131524,0x3C2C0D0D,0x130D2513,0x48140F0F,0x0D0D2513,0x310D0808,0x0D0D2F13,0x14130F08 + .word 0x0F0F2D0F,0x13080F0F,0x0F132C0F,0x0F0F0F0F,0x08241313,0x0F0F080F,0x132C130D,0x0F0F2C0F + .word 0x0F0D2C47,0x2C140F08,0x0F081348,0x0F130D0F,0x0F0F132C,0x0D08080F,0x080D0F2C,0x0F0F080F + .word 0x0D0F0D14,0x0F0F0F0F,0x080F0D0D,0x140D0D0D,0x08080D0F,0x1313080F,0x080F0F08,0x13140F08 + .word 0x0F130F0D,0x2C2D1308,0x1313130D,0x312C0F0F,0x1414130F,0x3C301314,0x2C141313,0x47482C14 + .word 0x2C2C1314,0x3C7E462C,0x2C2C1413,0x44767E31,0x312C2C13,0x39777647,0x382C2D14,0x38407648 + + .word 0x2C2D2D2C,0x442C2C13,0x2C242D14,0x2C392C13,0x14131431,0x1438140F,0x130F132C,0x1313130F + .word 0x13131331,0x0F0F0F0F,0x0D141331,0x080D0813,0x0D141414,0x2C0F140F,0x0D132C2D,0x2C2C0F0F + .word 0x08142D2C,0x7544392D,0x0D0D2D2D,0x442D0F2C,0x0F0F0F2C,0x750F0F0F,0x170F080F,0x750D0D0D + .word 0x142D0824,0x7531392C,0x4475142D,0x440F4475,0x2D39442D,0x39310D39,0x132D392C,0x142C1413 + .word 0x2C2C3975,0x14392C0F,0x13132D39,0x13392C0F,0x140D2C2C,0x0F0D0F0F,0x080F0814,0x0D080814 + .word 0x14080F0F,0x130F0D08,0x08310D0F,0x0F130808,0x14310D2C,0x0F0D1308,0x140F0D08,0x080F0F2D + .word 0x0F0D0D0F,0x2C2C1438,0x140F0D0F,0x2C2C2413,0x170F0F08,0x142C250F,0x0F0F0F08,0x132C2D0F + .word 0x240F0F08,0x1413132C,0x2D131308,0x14131313,0x2D2C2C08,0x2D0F1313,0x2D2D1413,0x2C2D1413 + + .word 0x080D2D2C,0x31140D0F,0x080F2D2C,0x2C0F0F0D,0x0F142D2C,0x14080F0F,0x082D2C2C,0x0F0F0F0F + .word 0x2D39132C,0x080F0F0F,0x0F142C2C,0x0F0F0F13,0x2C14312D,0x0F081313,0x0F2C2C2D,0x0F0F1313 + .word 0x39467C47,0x2C477739,0x4676483C,0x14443844,0x767E4731,0x132A3946,0x46302F2C,0x142D3946 + .word 0x3C2F2D14,0x142D3940,0x2C2F2C0D,0x2C383939,0x2F2D140D,0x2531392D,0x2F14130F,0x132C2D31 + .word 0x0D131313,0x0F0F0F0F,0x0F141313,0x0F0F0F0F,0x2C2C1313,0x080F0F08,0x2D13130D,0x0F0F0F08 + .word 0x140D130D,0x0F0F0F0F,0x0D0D130F,0x0D080F08,0x080F1314,0x08080F08,0x0F13140D,0x14080F0F + .word 0x2D38130F,0x39463C31,0x442D130F,0x39807E39,0x442D1414,0x39777677,0x39392D2C,0x39467677 + .word 0x77444424,0x44394876,0x77754431,0x44394076,0x4444392D,0x39383940,0x44383113,0x382C2D31 + + .word 0x0F0D2414,0x2C0F0D0F,0x0F0D3913,0x14130F0F,0x0F0D3944,0x1314130F,0x0F0F132D,0x130F130F + .word 0x0F0F0D0D,0x2C0F0F0F,0x0F0F0F0F,0x140F0F0F,0x0F0F0F0F,0x0F08080D,0x0F080D0F,0x0F080F0F + .word 0x2C3C4746,0x0F0F080D,0x30474731,0x0F0F0813,0x30478031,0x0F0F0813,0x30458031,0x0F0F0813 + .word 0x2C3C7E46,0x0F0F0F0F,0x13263C46,0x0F0F0F0F,0x0F13142C,0x0F080F0F,0x080F0F08,0x0D0F0F08 + .word 0x3C480F0F,0x0F131430,0x3C48130F,0x0F131430,0x3C3C0F0F,0x0F0D2C2F,0x2C310D08,0x0F08132C + .word 0x13142C08,0x0F0F0F2C,0x2C2C1308,0x0F0F1313,0x48483013,0x142C3047,0x7E47482C,0x473C4748 + .word 0x0F0F0F0F,0x303C3C2E,0x130F0F0F,0x2F3C4530,0x260F080F,0x2C47473C,0x2F0F0F0F,0x2D3C4745 + .word 0x38080F0F,0x14313C44,0x3944130F,0x132D3944,0x440F1413,0x262C4444,0x14131330,0x453C382D + + .word 0x2D14080F,0x0F13382D,0x392D1308,0x0F132D44,0x77392F0F,0x14143177,0x77441408,0x2C317780 + .word 0x7777140D,0x3C467777,0x777E2C08,0x3C467777,0x80462C14,0x31394446,0x462C303C,0x2C2D3977 + .word 0x0F0F0F0F,0x1313130D,0x0F0F0F0F,0x1313140F,0x080F0F08,0x13132C2C,0x080F0F0F,0x0D13132D + .word 0x0F0F0F13,0x13130D14,0x080F082C,0x13130D0D,0x080F080F,0x14130F08,0x0F0F0813,0x0D14130F + .word 0x47392D24,0x2C384876,0x48404414,0x252F477C,0x473C2F13,0x2D253C47,0x403C3114,0x2C252F3C + .word 0x3C383814,0x142D2C30,0x3838312C,0x0D2C2F2F,0x2F2D2D14,0x0D142D2D,0x2D2D2C13,0x1513142F + .word 0x0F0D142D,0x2C2D0D08,0x0D0F0F2C,0x2C2D0F08,0x0F0F0814,0x2C2D140F,0x0F0F0F0F,0x2C2C2D08 + .word 0x0F0F0F08,0x2C14392D,0x130F0D0D,0x303C2C0F,0x130D0D0F,0x3C3C3C2C,0x130D0F0D,0x3C47482C + + .word 0x38142C2C,0x0F0D0D0F,0x13242C2C,0x0F0D0F14,0x0F252C14,0x080F0F17,0x0D2D2C14,0x080F0F17 + .word 0x2C13142C,0x080F0F24,0x1313142C,0x0813132D,0x13130F2D,0x082C2C2D,0x13142D31,0x13142D2D + .word 0x0F0F0F0F,0x130D0F2C,0x14143814,0x0D081314,0x2F382D2C,0x080F132D,0x2F2F1414,0x0F142D2D + .word 0x2C141413,0x1475392D,0x14141325,0x25312D2C,0x13132D31,0x082C1313,0x0F0F2C2D,0x2C2C1413 + .word 0x2D2C140D,0x38382C2C,0x2C140D08,0x382D2C2C,0x140F0808,0x382D1414,0x0F0D0808,0x2D2C1414 + .word 0x0F0D0808,0x2C141413,0x08080817,0x2C14130F,0x08082413,0x2C140F0D,0x0808082C,0x14130F08 + .word 0x2C312D31,0x0F080F2D,0x2D2F3838,0x0F0D0F2C,0x2F2D3838,0x0F0F142D,0x252D382D,0x0F0D142F + .word 0x2C38382D,0x0F132C2F,0x3838312C,0x0F13382F,0x39312C2C,0x0F133838,0x31142C2C,0x0D143838 + + .word 0x2C140F0F,0x142C2D2F,0x14250D0F,0x2C2D2F2D,0x14250D0F,0x2D2D382C,0x142C0D0F,0x132C2F14 + .word 0x1425130F,0x0D2C1413,0x2C140F0F,0x0D2C0813,0x0D2D080F,0x0D132C2D,0x08080F0F,0x0D140F25 + .word 0x0F140F0F,0x0D0F0F0F,0x0F130D0F,0x080F0F0F,0x130F0F0D,0x0F0F0F08,0x0F0D0F08,0x262C140F + .word 0x2C0F0D0F,0x3C3C3C30,0x45452C0D,0x7E7E4647,0x48473C0F,0x3C464648,0x47473C14,0x31383C3C + .word 0x390F142D,0x2C0F0D2C,0x2C08080F,0x2D130D24,0x080F080F,0x2C2C0813,0x0F0D0817,0x140D0F08 + .word 0x130F1430,0x080F080D,0x2C2D313C,0x130F0D0F,0x2D2D2D31,0x13173138,0x2D313831,0x0F132D2D + .word 0x0F0F0813,0x1313130F,0x0F0F0F44,0x30303014,0x3914080F,0x473C4547,0x76772C13,0x3C3C4548 + .word 0x8076312C,0x2C303C48,0x7C76462C,0x13133045,0x3C453C2C,0x0D0F142F,0x2D31312C,0x130D1314 + + .word 0x0F080F13,0x3C2C0D0F,0x0F0D1430,0x45452C0F,0x0F0D2647,0x47453C0F,0x08133C45,0x3C3C452C + .word 0x140D2C2C,0x2F302F2C,0x14131313,0x2C2C2C2C,0x130F0D0F,0x1414142C,0x140F0F0F,0x1414142C + .word 0x3C46473C,0x47453C2C,0x2D3C4547,0x3C302C2C,0x2C2D303C,0x2D13142C,0x132C2C30,0x31141308 + .word 0x0813132C,0x3914140D,0x170D0F2C,0x312C2D0F,0x330D0D14,0x2C2D440F,0x430F0813,0x31384413 + .word 0x1414307C,0x7E483C14,0x2F31463C,0x80764638,0x40393931,0x46404040,0x77807731,0x312D3840 + .word 0x46778039,0x0F142D38,0x3C467646,0x130F142D,0x2D3C4745,0x130D0D0F,0x2D313C3C,0x130D0D0F + .word 0x2C303C48,0x13131339,0x2C30477C,0x0F08082C,0x1747487E,0x0D080F0D,0x263C3131,0x0F080D13 + .word 0x0F14142C,0x300D0D0D,0x0F13142C,0x7E310F0D,0x0D0F2C2C,0x46313014,0x14132C2D,0x80474530 + + .word 0x0F0F0F0F,0x0F0F140F,0x0F0F0D0F,0x0F0D130F,0x080F0D0D,0x0D0F0F13,0x0D080D0D,0x08141314 + .word 0x0F0D0F30,0x14132C25,0x0F0D2C7E,0x1324130F,0x303C4546,0x0F142C2C,0x7C46467C,0x0F2C457E + .word 0x2F2D2C14,0x0F0F142C,0x2D2F2D2C,0x0F0D2514,0x2C382D2D,0x0F0D2514,0x142F2C13,0x0F0D2C14 + .word 0x13142C0F,0x0F132514,0x13082C0F,0x0F0F142C,0x2D2C130F,0x0F082D0D,0x250F140F,0x0F0F0808 + .word 0x310F0D0D,0x38467E3C,0x2C0F0D0F,0x38387E7E,0x7E2C0F0F,0x38384681,0x812C0D0F,0x2D383C46 + .word 0x452C130F,0x2D383847,0x473C2C0F,0x2C31383C,0x46483C13,0x2C2C313C,0x46464713,0x2C2C1431 + .word 0x2C2C3838,0x0D142C2D,0x2C2C2D38,0x080D142C,0x14142D38,0x08080F14,0x14142C2D,0x08080D0F + .word 0x1314142C,0x08080D0F,0x0F13142C,0x0F080808,0x0D0F142C,0x13240808,0x080F1314,0x2C080808 + + .word 0x080F0D2D,0x2C141413,0x0F2C2D2D,0x2C14140F,0x13142C2C,0x14142C0F,0x2C2D2D2D,0x14312C14 + .word 0x2D2D2C24,0x2C2C2C2D,0x2C2C2C2C,0x2C2D2D2D,0x24142C2D,0x2D2D2C24,0x14242424,0x382C1414 + .word 0x0D243844,0x140F0D08,0x0D39392D,0x130F0D08,0x14393914,0x0F0F0808,0x2D2D1413,0x0F0D080D + .word 0x14141314,0x0F080808,0x14132C14,0x0808080D,0x080D0F14,0x08080808,0x0F2C2C2D,0x0D080F0F + .word 0x14142C2C,0x2C383931,0x2C142C14,0x38393931,0x132C2C14,0x1444392D,0x132C1413,0x0F0D0F14 + .word 0x142D130F,0x0F0F080F,0x2C130F0D,0x0F08080F,0x2C0F0808,0x08080D14,0x140F0808,0x080D0D0D + .word 0x0F0F0813,0x14080F08,0x0F0F0808,0x310D0D0F,0x08080F2C,0x2C0D080F,0x0F080F0F,0x38080F0F + .word 0x0F08080F,0x31130D0D,0x08080F0F,0x3C130808,0x08080F0F,0x392C0F08,0x0F080F0D,0x44140F0F + + .word 0x3C454730,0x2D2D2F38,0x313C4677,0x2F2D2D2D,0x38394439,0x38383831,0x38394077,0x31313838 + .word 0x2D3C7647,0x2D2A382D,0x2C3C4846,0x2C2D2D14,0x2C384746,0x2C2D2D2C,0x2D2F3C46,0x2C2C2C2D + .word 0x3175382F,0x142C2D2D,0x44382A2F,0x2C2D2C39,0x312A2F38,0x2D2C2C39,0x2A2F2D31,0x2D243131 + .word 0x2C2C2C2D,0x2C242D2D,0x2C2D2C2C,0x2C242C2C,0x2C2D382D,0x2D241424,0x2C314438,0x392C1314 + .word 0x2D2D312D,0x2C130F24,0x2D2F3114,0x2C141314,0x2D38392C,0x2D2C1324,0x2D31392C,0x2D2C1324 + .word 0x2D31382C,0x2F2F242C,0x2D2D2D2C,0x38382D2D,0x3131312D,0x39393838,0x38443931,0x38393938 + .word 0x2C13142C,0x2D14132C,0x2D2D2C2D,0x2D2C142C,0x2538382C,0x2D2D2C2F,0x2D38382D,0x2D2D2D2D + .word 0x31382C25,0x2D2D312D,0x2F442C2C,0x2D2D3839,0x39382C2D,0x2424242D,0x31393938,0x24242424 + + .word 0x0F0D0F0F,0x2C38390F,0x080F0D0F,0x2D2F1408,0x08081314,0x2C2D1308,0x080D142C,0x2C2D1308 + .word 0x0F0F2C2C,0x2C2D130D,0x08142D2C,0x142D1308,0x0F2C2D2D,0x242C130F,0x132D2D2D,0x392D2C13 + .word 0x2F2C312C,0x130D0D13,0x142C2C14,0x0F0F0F13,0x13142C14,0x13131313,0x242D2C14,0x13131413 + .word 0x13142C14,0x13131414,0x14142C2C,0x0F13142C,0x24242C38,0x1313142C,0x24243939,0x1313142C + .word 0x2F2C2C2D,0x4848473C,0x2D2C2C2C,0x3C3C3C30,0x2D2C2C2C,0x302F2F2D,0x2D2C242C,0x312D2F2A + .word 0x2D2D242C,0x2D2C2C2C,0x2C2C2424,0x2C2C2D2C,0x24242424,0x2D382D2C,0x14141424,0x3844312C + .word 0x7E464647,0x133C7C7E,0x463C3C3C,0x2C477C7C,0x38383130,0x3C487640,0x382F2F31,0x3C484038 + .word 0x2D382A2D,0x47473C30,0x142D2D2C,0x483C302D,0x2C2D2D2C,0x463C3024,0x2D2C2C2C,0x463C132D + + .word 0x080F0813,0x13080F0F,0x0F0D0D2D,0x0D080F0F,0x0F080D13,0x2C0F0808,0x0F0F0D25,0x0F0F080F + .word 0x0D0D1430,0x0F08080F,0x080F2C3C,0x0F0F0808,0x0D13253C,0x0F0F0808,0x0D132E3C,0x0D0F080F + .word 0x3C46472C,0x2C2C1414,0x38464747,0x142C142C,0x2D383C3C,0x142C2C13,0x14142C14,0x13142C13 + .word 0x0F080D0F,0x0F132D14,0x0F08080F,0x0D0F132C,0x140D0808,0x08080F2C,0x0D0D0D08,0x08080F14 + .word 0x1314142C,0x2D0D1708,0x0F14142C,0x2D2D2C0F,0x0F2C1414,0x2C2C1413,0x142C3114,0x2D2D2D2C + .word 0x2D2C2C2C,0x242C2D2D,0x2D2D2D2C,0x2C2C2C2C,0x242C2D2D,0x2D2C1424,0x14142C38,0x24242414 + .word 0x13141414,0x2C2C2C0F,0x14131314,0x38382D13,0x142C2D2D,0x38382F14,0x31313131,0x312C2C2D + .word 0x38394475,0x14142C31,0x44441344,0x14144431,0x2D0F3139,0x2A38140F,0x2F2C2C14,0x24130813 + + .word 0x2D313839,0x0F0F142D,0x2D383939,0x132C242A,0x38383838,0x142D292F,0x39444439,0x13132A2D + .word 0x44312D2C,0x0F2A2D2D,0x392D2D2C,0x25383138,0x2D2D2C14,0x38313839,0x2D2C1314,0x39313131 + .word 0x0D0F0808,0x0F0F080F,0x08080808,0x0F080808,0x08080808,0x08080808,0x08080808,0x0F0F1314 + .word 0x080F0813,0x0D0D132D,0x080F2C2C,0x240F0F14,0x0F132C2C,0x0F0F2408,0x0D2C2C38,0x250D2C2D + .word 0x0F0F1308,0x44140D08,0x0F0F2C0D,0x44140F08,0x2C140F0F,0x3C3C302C,0x3C30140D,0x3C47463C + .word 0x473C3014,0x31454646,0x46473C30,0x142A2D45,0x39453C30,0x2D2D2D31,0x39313C30,0x2C393831 + .word 0x2C2D3844,0x2C2D2C2D,0x2C2C3139,0x252C2C2C,0x2C2C2D44,0x2C2D382C,0x2C142439,0x38382F2D + .word 0x1413142C,0x2D2D2D2F,0x0F131414,0x0F2D3813,0x13252D2D,0x0D2D140F,0x2C2D3139,0x14130814 + + .word 0x2D31382D,0x312C1314,0x2C2D2C2C,0x2D2C130F,0x132C252C,0x0F2F130D,0x0F14142A,0x170D0D0D + .word 0x0D0D132C,0x0F0D0D0D,0x0D100D17,0x13141413,0x0F0D0D0F,0x1314380D,0x102D1313,0x0F310F0D + .word 0x2A2D2D2C,0x2D39382F,0x2D2D2D2D,0x2C382D2F,0x2D2D2D2D,0x252D2D2A,0x2D2D2D0D,0x2A25252D + .word 0x2D2C2C2D,0x2D2A2A2F,0x2C2C2F25,0x2D2D2D2C,0x2D140F13,0x2F2D2D2D,0x130F0F0D,0x13131313 + .word 0x24243839,0x13142C2C,0x25132D38,0x2C2C2D24,0x0F132D2F,0x2D2D2D25,0x0D132D2D,0x2C2D2D25 + .word 0x0D0F2D2D,0x2D2D2D25,0x0F0D142D,0x2D251314,0x0D0D132C,0x13131313,0x0D0D0D0D,0x0F131414 + .word 0x3944382C,0x382D2F38,0x44392D14,0x38383839,0x442F2D2D,0x39393939,0x39252C2C,0x44393831 + .word 0x2F142D14,0x44383844,0x142D2D14,0x31394438,0x38252D13,0x4444392C,0x382C140D,0x0D2C2D2D + + .word 0x38393939,0x2C2C2C2C,0x39383939,0x2C2C2C38,0x39443939,0x2C2F140F,0x2C394444,0x080F0F13 + .word 0x14313944,0x14131308,0x0F143131,0x1413170D,0x0D0D0D13,0x2C140F0D,0x130F0D0D,0x2C2C2C13 + .word 0x14132C2C,0x2D38312D,0x0F13142C,0x2C2C2D2C,0x0D13242C,0x2C252C13,0x0D0D0D08,0x2A14140F + .word 0x0D0D0D0F,0x2C130F0D,0x13141413,0x0F080F0D,0x0D382D2C,0x0F0D0F0F,0x140F752D,0x0F132D0F + .word 0x2D2C2D2C,0x3C38132C,0x2C2C2C25,0x382D132C,0x2C382D2C,0x382D142C,0x2D2F3838,0x2D2C142C + .word 0x382D2D2D,0x2C14132C,0x13382D13,0x1414130F,0x0F142D0D,0x2D2D2513,0x14081313,0x39312D2C + .word 0x0D13303C,0x08130F0F,0x0D132C38,0x0D0D0D0D,0x0D132C31,0x0D0D0D0D,0x1314312D,0x0D0D1313 + .word 0x38312C2C,0x0D143131,0x312C252C,0x13382D39,0x312D2D2D,0x2F312D39,0x3138392C,0x2C2C2D39 + + .word 0x0F080F0F,0x08080F0D,0x0808080F,0x08080808,0x08080808,0x08080808,0x14130F0F,0x08080808 + .word 0x2D130D0D,0x13080F08,0x140F0D0D,0x2C2C0F08,0x080F0D08,0x2C2C130F,0x2D0D082C,0x382C2C0D + .word 0x39393975,0x0F0D0D14,0x13252A2F,0x0F0D0D0F,0x0F0F0F0F,0x0F0F0F0F,0x0F13142C,0x0F0F080D + .word 0x13313139,0x0D14130D,0x2F752C13,0x0D0F0D0F,0x0D13142C,0x0F080808,0x080D0D0D,0x080F0F0F + .word 0x140F1313,0x392D312C,0x0F0F0F0F,0x39392D14,0x130F0F0F,0x442C2514,0x130D0D08,0x132D2C14 + .word 0x130F080F,0x0F131313,0x0F130D0F,0x0F0D0F0F,0x080D0F0F,0x08080808,0x0F0F0F0F,0x0F0F0F0F + .word 0x24142C2D,0x25130D0D,0x08131338,0x14130F13,0x0D13142D,0x140F0D0F,0x0F0D1308,0x130F080F + .word 0x0D080F0F,0x130D0D08,0x0D0D0F0F,0x13080F2C,0x2D0D0F0F,0x0D38392D,0x0D080F0F,0x2C13442D + + .word 0x39313030,0x44392D31,0x392D2F2D,0x392D3138,0x382D2D2C,0x2D2D2A39,0x2D2D2C2C,0x382D2D38 + .word 0x2D2D2D2C,0x392A2F2D,0x2D2C2D2C,0x13382D2D,0x2D2D3113,0x390F142C,0x44312D0F,0x13132D31 + .word 0x2D2D310F,0x0F08142D,0x2D2D2C2D,0x0D14382D,0x2F2F2D2D,0x3144392F,0x39383838,0x75394439 + .word 0x31393939,0x14383131,0x3131382C,0x382C1431,0x2D2D2C08,0x2D2D2D2D,0x382F2C75,0x2D2D2D2D + .word 0x75750F13,0x130D7539,0x442D130F,0x75443944,0x7524130F,0x44447575,0x752D3144,0x44447539 + .word 0x39753939,0x75394439,0x39447575,0x39754444,0x44397544,0x38757544,0x2D44392C,0x13443944 + .word 0x0F0D0F0F,0x14131313,0x2C13132C,0x38393939,0x44393139,0x2D393944,0x442D3113,0x312D7544 + .word 0x31440F31,0x14753175,0x312D2D2C,0x392C2C44,0x39143113,0x0D443939,0x240F0F13,0x44144444 + + .word 0x130D0D0D,0x0F131414,0x312C140F,0x0F2C2F39,0x392D130F,0x142D2D44,0x39440F14,0x2D2D3944 + .word 0x44312D2C,0x2D384444,0x44442C13,0x2D394475,0x7517140F,0x2D447575,0x2C0F0D08,0x2C2D4444 + .word 0x13130F0F,0x0D0D0F13,0x0D0D0F0F,0x130D0D0D,0x0D0F2D31,0x0F0F130D,0x0D2C2C2C,0x0F140D0D + .word 0x2D0F2C0D,0x3914080D,0x392C0F08,0x3108152D,0x13130F0F,0x142D312D,0x14142D31,0x39394413 + .word 0x2D2F130D,0x31393944,0x392C140F,0x39444475,0x442D2F2C,0x39397575,0x44390F31,0x31394475 + .word 0x13384439,0x31392D39,0x0D0F7544,0x440F4413,0x0F14142C,0x2C393913,0x080F2C44,0x442C1413 + .word 0x39750F38,0x0F0F7575,0x44394444,0x0F132D44,0x75754439,0x0F132475,0x39754444,0x44312D75 + .word 0x39443975,0x39397539,0x44447539,0x75754439,0x44757538,0x44753944,0x44394413,0x2C39442D + + .word 0x2D14080D,0x0F312D2D,0x2D380F0D,0x2D2C2D2D,0x2F2C1313,0x2D2D2F2F,0x2C0F0D39,0x38383839 + .word 0x130D1314,0x39393931,0x0F0F2C38,0x2C383114,0x13142D2D,0x08131313,0x2D2D2D2D,0x75131325 + .word 0x312D3944,0x2C2D2D39,0x38312D39,0x2D2D2D39,0x392A2D2D,0x2D2D2D38,0x382D2D38,0x2D2C2D2D + .word 0x2D2F2A39,0x2C2D2D2D,0x2D2D3813,0x2C2D2C2D,0x2C140F39,0x13312D2D,0x312D1313,0x0F2D3144 + .word 0x0D0D0D14,0x2D2C1424,0x130D0F14,0x38131308,0x0F0D0814,0x2D14130D,0x0F080F13,0x08130D0F + .word 0x080D0D13,0x0F0F080D,0x2C0F0813,0x0F0F0D0D,0x2D39380D,0x0F0F0D2D,0x2D44132C,0x0F0F080D + .word 0x080D0F13,0x0F0F0F0F,0x2C2F3814,0x080F0F0D,0x0F242D14,0x08080808,0x0F0F242C,0x0F13130F + .word 0x2C140F14,0x0F2D392D,0x39311413,0x132D3139,0x2D31382C,0x0D132C2D,0x1313132C,0x13131313 + + .word 0x0F0F0F08,0x0F0F0F0F,0x0F080808,0x0F0F0F0F,0x08080808,0x0F0F0808,0x0F0F0808,0x0808080F + .word 0x0F0F0F0D,0x080F0F0F,0x0F080D0D,0x0F0F0F0F,0x0D0D2413,0x0F0F0F08,0x14141313,0x0F0F080F + .word 0x390F0F0F,0x2C2D3939,0x380F0F0F,0x2D2D2D38,0x2D0F0F0F,0x132C2D2D,0x2D0F0F0F,0x08132C2D + .word 0x2C130F0F,0x0D082C2C,0x2C2C0F0F,0x1413142C,0x2D2C0F0F,0x1414132D,0x380F0F0F,0x39311338 + .word 0x0F14142C,0x2C14130F,0x13142C2C,0x14131313,0x0F0F080F,0x0D0D080F,0x0F080F0F,0x0F080808 + .word 0x132D140F,0x0D08080F,0x2D39442D,0x2C2C2C2D,0x2F382D2C,0x2D2D2D2C,0x2C2D2C2D,0x2C2C2C2D + .word 0x2C2D2D2C,0x2C2C1414,0x2D2D2D2D,0x2C141313,0x2D2D2C14,0x2C0F0F13,0x2A130F0D,0x130D0D08 + .word 0x2F130F08,0x130F1314,0x382C132C,0x14242D31,0x392D2C2D,0x2A313139,0x2D392414,0x2D393144 + + .word 0x3938142C,0x442C4431,0x3944392D,0x2C390F39,0x44754439,0x1439442D,0x75757544,0x13131339 + .word 0x4444392D,0x080F0D13,0x392D2C2F,0x0F140F38,0x0F2F1313,0x2C147544,0x312C0D0F,0x442C4439 + .word 0x2D44750F,0x442D0F2D,0x0F2C0D0F,0x130F0D0F,0x2D0F0F0F,0x0F0F0F13,0x14131408,0x1331080F + .word 0x382C132C,0x39394438,0x3939392D,0x752D142D,0x2D393839,0x442D3938,0x0F2D3939,0x380F392C + .word 0x13383944,0x392C752C,0x2D14130F,0x082D7538,0x08440D0F,0x0F2C2C2A,0x382D0F0D,0x130F152F + .word 0x390F1344,0x0F0F2C39,0x39444438,0x0D08312D,0x39394439,0x2D0F7539,0x38394439,0x130F4438 + .word 0x2D2D2D2C,0x130F142D,0x3839442D,0x132C2D2D,0x44447544,0x142F2D39,0x44757544,0x14394444 + .word 0x4444752C,0x14313939,0x31440F0F,0x142C2D44,0x2D2C140D,0x1314130F,0x2C130F08,0x2C0F0F14 + + .word 0x2D2D2514,0x2C2D312C,0x2D252514,0x2D313938,0x2D252514,0x2D314444,0x0F142D2D,0x2D31382C + .word 0x0D0D142C,0x2D383825,0x0D0D1324,0x2D38392F,0x0F0D0F14,0x3839392D,0x140F0F13,0x38393838 + .word 0x142C2C2C,0x2C2C2C2D,0x31393938,0x2D313131,0x2F383131,0x2C2D2C2D,0x2D2D2D2D,0x2D2C2C2D + .word 0x1424242C,0x2C142424,0x13131324,0x0F13130F,0x142C2C2F,0x13130F13,0x2C2D2D2F,0x0D13142C + .word 0x2D2D2C14,0x14132D2D,0x312D2D2D,0x13143831,0x2D2D2C2C,0x13382F2C,0x2D2D2C2D,0x13382D2C + .word 0x2D2C2C2F,0x132F2D2C,0x2D2C240F,0x142C2D2C,0x2C140D0F,0x13142C2C,0x140F0D0D,0x0F13142C + .word 0x2C141314,0x0D0D0D0F,0x2D131313,0x0F13142D,0x2C13130D,0x2D2D2D39,0x2C13130D,0x3839392D + .word 0x2D13130F,0x13130F0F,0x3813130F,0x0F0D0D13,0x0F0F0F13,0x0D0D0F0D,0x0D0D0D13,0x0D0D0D0D + + .word 0x2A14130D,0x31312D2D,0x142D2C14,0x2D2D0F13,0x0F14442D,0x130D0D08,0x0D0D0F31,0x0F0D0D0D + .word 0x0D0D0D0D,0x14130D0D,0x130D0D0F,0x13131414,0x0F0F0D0D,0x0D0D0F0F,0x0D0D0D0D,0x140F0D0D + .word 0x2C2C2D13,0x2C2C2C2C,0x1413132D,0x2D382D2D,0x2C2C2C2C,0x39392D2C,0x2D2D2D2C,0x38383931 + .word 0x38393939,0x31393838,0x39383844,0x2C313131,0x31313939,0x2D2C2D2D,0x2C2D2D39,0x2C2D2D2D + .word 0x14142C31,0x0D0F1313,0x2D2D3139,0x1313142C,0x38383839,0x142C2C2D,0x39393938,0x13143139 + .word 0x2C2C3131,0x1313142C,0x2D2D2D2C,0x1313142C,0x2C2C2C31,0x14131413,0x2C2C2D2C,0x14131431 + .word 0x2D170F08,0x39312D39,0x0F0D1313,0x39443931,0x2D2C2C14,0x44444439,0x39312C13,0x44444444 + .word 0x44392C13,0x39444444,0x38442D14,0x2D393831,0x2C2C3931,0x13382F2D,0x2D2C1439,0x0F2D2D2C + + .word 0x2C2C2D2D,0x14141414,0x2D2D2D39,0x2C2C2C2C,0x2C2D2C39,0x142D142C,0x2F2D2C31,0x13241314 + .word 0x130F0F31,0x14131313,0x0D0D0D14,0x1414130F,0x0D0D0D0F,0x1313130F,0x13131313,0x1313130F + .word 0x3939382C,0x2C443144,0x38392C2C,0x13442C25,0x24242414,0x132C1413,0x24242414,0x130F1314 + .word 0x132C2C2C,0x13131313,0x0F141414,0x13132D0F,0x13131313,0x142D2D14,0x1313130F,0x0F131414 + .word 0x0F0F0F0D,0x39143139,0x140F0D0D,0x392D0814,0x0D130D0F,0x44311508,0x0D0F142D,0x132D2D0D + .word 0x0D132C2C,0x1413392D,0x2C13132C,0x14132C0F,0x2C2D2C14,0x2D0F0F2C,0x2C311314,0x310F080D + .word 0x082D3939,0x142C142D,0x38443944,0x080F2D39,0x44394439,0x2513392C,0x44444439,0x0F143939 + .word 0x44444444,0x75394475,0x38394444,0x44447544,0x39444444,0x75443939,0x39444444,0x312D2C2D + + .word 0x75754444,0x14132D39,0x4439442D,0x14313975,0x39384444,0x2D443975,0x442F312D,0x44393939 + .word 0x3814312D,0x2C2C7544,0x44391439,0x0F447539,0x39447544,0x2D393844,0x39394444,0x39310F39 + .word 0x14390D44,0x44382D31,0x752C4414,0x3939392D,0x312C3944,0x39393975,0x75443944,0x2D394444 + .word 0x31313924,0x2D394444,0x442D140F,0x3139392D,0x132D310F,0x31393131,0x142C1313,0x2D39392C + .word 0x2D13132D,0x2C2D3839,0x1313142D,0x2C2C3939,0x0F132D39,0x44383939,0x13132D31,0x2F39392C + .word 0x132C2D2D,0x3939250F,0x132C2F2D,0x3831140F,0x2C2F252D,0x312D1414,0x2D252C2C,0x2C2C1314 + .word 0x2D2C2D25,0x0D0D132C,0x2C38382C,0x0D0F0F14,0x2D383838,0x0F0F0F13,0x2D252D31,0x1314142C + .word 0x2C2F2D2D,0x142C2C2C,0x142C2D31,0x2C2C1413,0x0F142C31,0x2C131313,0x1413142C,0x2D2D2D2C + + .word 0x0F0D0D0D,0x13131413,0x0D0D0D0D,0x0F0F0F0D,0x0D0D0D0D,0x0D0D0D0D,0x0D0D0F0F,0x080D0D0D + .word 0x13141414,0x0D0D0D0F,0x2C2C2C2C,0x0D131313,0x2C2D2D2C,0x070D0F14,0x2C39130F,0x0D13142C + .word 0x0D0D0D0F,0x0D0D0D0D,0x0D0D130D,0x0D0D0D0F,0x16152C0D,0x0808080F,0x082D2D13,0x0D080809 + .word 0x142D130D,0x2D2D2C14,0x2D2D140D,0x1414142C,0x2D2D0D0D,0x2C2D3131,0x140D0F0D,0x14141413 + .word 0x0D0D0D0F,0x392D140F,0x0F0D0D0D,0x24242D14,0x130D0808,0x2C2C2424,0x24241413,0x2C2C2C2C + .word 0x14142C2C,0x2C2C2D14,0x14141414,0x2C2C1414,0x2C141314,0x2C2C2C2C,0x13142C2C,0x13131313 + .word 0x44394413,0x1439442D,0x44757538,0x75753944,0x44447539,0x75754439,0x39443975,0x39397539 + .word 0x39754444,0x75752D75,0x75754444,0x39392F75,0x44394475,0x2C313944,0x39750D39,0x172C7575 + + .word 0x2F394431,0x75442D14,0x39133939,0x07393944,0x2C0D2C38,0x242D2C39,0x44442D14,0x31444439 + .word 0x39393975,0x2D393844,0x39394444,0x392D3838,0x442F2D0F,0x2D2C2F2F,0x13131717,0x0F312D38 + .word 0x2D2D3131,0x3139382F,0x14132D44,0x44393114,0x080F1375,0x44751413,0x130D0D75,0x2C14130F + .word 0x2C393175,0x1313142C,0x75440F44,0x14132C44,0x390D3139,0x0F142D39,0x2C142C14,0x14131331 + .word 0x39383131,0x1413142D,0x39394444,0x1413132C,0x44444444,0x1313132C,0x2D313131,0x1313132C + .word 0x0F0F1313,0x1313132D,0x2C0F0F13,0x0F131338,0x0F2D3114,0x130F1439,0x312C2C2C,0x130F2D39 + .word 0x2D2D2C2D,0x142C2D2D,0x31382D2D,0x2D2D2D31,0x2C2F382D,0x2C2C2D2D,0x2C2D382D,0x2D2C2D2D + .word 0x2C2D2F2C,0x2F2C2C2D,0x2C2D2C14,0x0F242C2D,0x2C2C1413,0x0F0D142C,0x2C14130F,0x130F1314 + + .word 0x2D2C2C2C,0x2C2C2C14,0x3131312D,0x38393931,0x2D2C2D2C,0x3131382F,0x2D2C2C2D,0x2D2D2D2D + .word 0x2424142C,0x2C242414,0x0F13130F,0x24131313,0x130F1313,0x2F2C2C14,0x2C141413,0x2F2D2D2C + .word 0x2C312D2C,0x14252D2D,0x3839312D,0x1425252D,0x2D44312D,0x14252514,0x1338312D,0x2D2D2D0F + .word 0x2538382D,0x2C2D130D,0x2F39382D,0x24140D13,0x2D393938,0x130D132D,0x38383938,0x0F0F142D + .word 0x31442C44,0x2C0F3839,0x390F392C,0x14444439,0x2D443914,0x44447544,0x39131313,0x44757575 + .word 0x130D0F08,0x2D394444,0x380F140F,0x392C1439,0x4475142C,0x0D08390F,0x39442C44,0x31082C31 + .word 0x08142D2C,0x7544392D,0x0D0F2D2D,0x442D0F2C,0x140F0F2C,0x75130F0F,0x0F0F080F,0x750D0D13 + .word 0x142D0813,0x7531392C,0x4475132C,0x440F4475,0x44394438,0x39310D39,0x38443939,0x142C142C + + .word 0x38447575,0x2C2C2C2C,0x2D447575,0x140D142C,0x38317575,0x2C142C2D,0x2D317575,0x2C142D38 + .word 0x2D2D3975,0x2C2C3838,0x38441339,0x132D3938,0x2C2C1439,0x082C3838,0x2A134439,0x14750F2D + .word 0x44313944,0x392C142D,0x44442D2D,0x2C2D0F2D,0x2D392D2D,0x13251413,0x0F2C2D2C,0x0F0F0D0F + .word 0x0F0D132D,0x0F0D080D,0x0D0F080F,0x13141413,0x0F0F0D0F,0x2C2D380D,0x0F2D2C0D,0x2D750F14 + .word 0x31442C44,0x2C143839,0x390F392C,0x2D394439,0x2D443914,0x39447544,0x39131313,0x44757575 + .word 0x130D0F08,0x2D394444,0x380F140F,0x2F2C2D39,0x4475142C,0x14142F0F,0x39442C44,0x2C0F2C31 + .word 0x14142C2C,0x2C2D2D2C,0x1313142C,0x2D2D2D2D,0x0F0D0F2C,0x142C2D2D,0x080D0D13,0x080F132A + .word 0x14130F13,0x080F132F,0x312D2414,0x2C132C38,0x3931312A,0x2D2C2D39,0x4431392D,0x1424392D + + .word 0x0F13142C,0x2C14140F,0x13131314,0x2C2C1413,0x10080D0F,0x0F080F0F,0x08080809,0x0F0F080F + .word 0x0F08080D,0x0F142D13,0x2D2C2C2C,0x2D44392D,0x2C2D2D2D,0x2C2D382F,0x2D2C2C2C,0x2D2C2D2C + .word 0x31392D2C,0x0D0F2C25,0x382D2D2D,0x0D0F252C,0x2D2D2C13,0x0D0F2C25,0x2D2C1308,0x0D0F2C2C + .word 0x2C2C080D,0x0D0D1314,0x0D0F1314,0x0D0D0D0F,0x0D0D1414,0x0D0D0D0D,0x0F0F3139,0x0D0D0D13 + .word 0x0F0F0D0D,0x080D0D0F,0x0F0F0D0D,0x0808080F,0x08080D0D,0x08080808,0x0F08080D,0x08080F0F + .word 0x0F0F0F08,0x0D0F0F0F,0x0F0F0F0D,0x0D0D080F,0x080F0F0F,0x13240D0D,0x0F080F0F,0x13131414 + .word 0x0F0D0D0D,0x0D0D0D0D,0x0D0F0F08,0x14382F2C,0x08080808,0x142D240F,0x0F13130F,0x2C240F0F + .word 0x2D392D0F,0x140F142C,0x39312D13,0x13143139,0x2D2C130D,0x2C38312D,0x13131313,0x2C131313 + + .word 0x39444444,0x312D2C2D,0x39444444,0x75443939,0x38393944,0x44447544,0x44392D38,0x75394475 + .word 0x44443114,0x0F143939,0x44394431,0x2513392C,0x38443944,0x080F2D39,0x082D3939,0x142C142D + .word 0x140F752D,0x0D2C2D13,0x0D382D2C,0x0F0D0F0F,0x13141413,0x0F080F0D,0x0D080D0F,0x2D130D0F + .word 0x0F0D0D0F,0x2C2D2C0F,0x1314140F,0x2D2D392D,0x2D0F2D14,0x2D2D4444,0x2D142C39,0x44393144 + .word 0x2D0F7514,0x3944132A,0x38382C08,0x39142C2C,0x38392D13,0x39134438,0x38382C2C,0x75392D2D + .word 0x382D142C,0x7575312D,0x2D2C142C,0x75753138,0x2C140D14,0x7575442D,0x2C2C2C2C,0x44754438 + .word 0x39393975,0x140F2C38,0x39384439,0x0D0F2438,0x4438392C,0x08080D2D,0x4439132D,0x0D0F132D + .word 0x44442C39,0x242D2C14,0x75751413,0x2D252D0F,0x2D750F39,0x1331392C,0x312D1313,0x0F2D3144 + + .word 0x13142C2C,0x0F0F2C39,0x2C0F0D0D,0x0D240D14,0x05080808,0x0D2C1508,0x0408080D,0x132D2D08 + .word 0x0D142424,0x0D13392D,0x2C130F2C,0x0F132C0F,0x2D39390F,0x130F0F2D,0x2D44132C,0x310F080D + .word 0x14141313,0x13131314,0x0F131313,0x0F0F0F13,0x1313130F,0x13131313,0x13130F08,0x0F0F0F13 + .word 0x14131313,0x14141414,0x2C2C140D,0x2C2C2C2C,0x2D2C1307,0x2C2D2D2D,0x2C0D0100,0x2D393944 + .word 0x2C130D0F,0x252D2C2D,0x140F0F0D,0x2C38382C,0x130F0F13,0x3838382D,0x2C141413,0x312D252D + .word 0x2C2C2C14,0x2D2D2F2C,0x13142C2C,0x312D2C14,0x1313132C,0x312C140F,0x2C2D2D2D,0x2C141314 + .word 0x39382D2C,0x2D2F1414,0x39392C2C,0x2D2D130F,0x2C393844,0x392D130D,0x1339392F,0x312D0F0D + .word 0x13253939,0x2D2D0F0F,0x0D133138,0x2D2F130F,0x13142D31,0x2D252F13,0x2D2C2C2C,0x2C2C252D + + .word 0x312D3844,0x440D3914,0x2D393939,0x14442C75,0x75393939,0x44392C31,0x4444392D,0x44394475 + .word 0x4444392D,0x24393131,0x2D393931,0x0F142D44,0x31444439,0x0F312D2C,0x44754444,0x13132C44 + .word 0x39311439,0x14140D0F,0x14082D39,0x2C2C0F14,0x16153144,0x140F0F0F,0x0D2D2D13,0x2D0D1417 + .word 0x2D391314,0x2F2D140D,0x0F2C1314,0x2C0D132C,0x2D0F0F2D,0x0F39392D,0x0D080F31,0x2C13442D + .word 0x39393944,0x75393939,0x39393938,0x39443839,0x75141413,0x2C393844,0x440F0F2D,0x2D133944 + .word 0x14133838,0x392C4444,0x0F2D252D,0x13147575,0x2C393113,0x390F7531,0x39312D0F,0x13132D2D + .word 0x382D310F,0x0F0F1313,0x2F2F2C2D,0x0F2D2F44,0x38382D39,0x44443939,0x4438392D,0x75393939 + .word 0x39444431,0x142D4444,0x392C2D24,0x382C0D2C,0x44393908,0x39391339,0x142D4475,0x3144392F + + .word 0x75752C0F,0x390D7539,0x4439312C,0x75443944,0x752F3939,0x44447575,0x752D7575,0x44447539 + .word 0x39753939,0x75394439,0x31397575,0x39754444,0x0D2D7575,0x3875752D,0x07143914,0x13443914 + .word 0x39311439,0x14140F0F,0x14082D39,0x2C130F14,0x08153144,0x140F130D,0x0D2D2D13,0x2D140F0D + .word 0x2D391314,0x2C2C130D,0x0F2C1314,0x2C13132C,0x2C0F0F2D,0x142C2D2C,0x0D080F31,0x1413312C + .word 0x44314439,0x2C383939,0x38394439,0x2C2C3938,0x3844392D,0x14242424,0x44382C2D,0x14242424 + .word 0x2F143838,0x2C2C2C2C,0x142D252C,0x1414142C,0x2D2D2D14,0x13131314,0x1414130F,0x0F131313 + .word 0x382D3139,0x080D0D0D,0x31394439,0x0F0D0D0D,0x39444444,0x0D0D0F2D,0x44444444,0x0D0D1339 + .word 0x44444439,0x0D0D2C44,0x3138392D,0x0D0D3138,0x2D2F3813,0x130D0D2C,0x2C2D2D0F,0x390F0F2D + + .word 0x13130F0D,0x312C1414,0x2C141313,0x39312D2D,0x2D2C2C14,0x39383838,0x39311413,0x38393939 + .word 0x2C141313,0x31312C2C,0x14141313,0x2C2C1414,0x0D131314,0x2C14130F,0x0D0F1314,0x13130705 + .word 0x2C2C2C2C,0x132D2C2C,0x2D2D382D,0x2D131314,0x2C2D3939,0x2C2C2C2C,0x31393838,0x2C2D2D2D + .word 0x38383931,0x39393938,0x3131312C,0x44383839,0x2D2D2C2D,0x39393131,0x2D2D2D14,0x392D2D2C + .word 0x0F2D3939,0x380F392C,0x2D393838,0x442D3938,0x3939392C,0x752D142D,0x382C1413,0x39394438 + .word 0x14131413,0x1331080F,0x2D0F0D0F,0x0F0F0F13,0x0F140D0F,0x130F0D0F,0x14140F0D,0x14141414 + .word 0x38394439,0x130F4438,0x39394439,0x2D0F7539,0x39444438,0x0D08312D,0x390F1344,0x0F0F2C39 + .word 0x382D0F0D,0x130F152F,0x08440D0F,0x0F2C2C2A,0x2D142C13,0x082D7538,0x13382D2C,0x392C752C + + .word 0x14131313,0x2C141414,0x2C2C2C2C,0x2C2C2C2C,0x2C2C2C2C,0x382C0F2C,0x312D2C2C,0x14393938 + .word 0x2C2C2C2C,0x75392D2C,0x2D2C2C2C,0x44443131,0x2C2C2C2C,0x0F2D2F44,0x382C2C2D,0x0F0F1313 + .word 0x2D44392C,0x13443944,0x44397539,0x38757544,0x39447575,0x39754444,0x39753939,0x75394439 + .word 0x752D7575,0x14447539,0x752F3939,0x44447575,0x4439312C,0x75443944,0x75752C0F,0x390D7539 + .word 0x2C390F38,0x39392D0F,0x38392D44,0x3838392D,0x2D142D75,0x2C393939,0x38443939,0x13142C38 + .word 0x0F083113,0x13141314,0x130F0F0F,0x0F0D0F2D,0x0F0D0F13,0x0F0D2C0F,0x2D0F2D44,0x132C442D + .word 0x2A144438,0x14750F2D,0x2C2C130F,0x082C3838,0x13130F13,0x132D392D,0x0F131314,0x2C2C3814 + .word 0x13131414,0x2C142D13,0x0F131313,0x2C14130F,0x142D1414,0x140D130F,0x382D3144,0x2C2C2C2C + + .word 0x2F394431,0x0F243814,0x39133939,0x142C3844,0x2C0D2C38,0x242D2C39,0x44442D14,0x31444439 + .word 0x39393975,0x2C383844,0x39394444,0x132F3838,0x442F2D0F,0x382D2F2F,0x13130F0D,0x13312D38 + .word 0x1438240F,0x3144392F,0x44382C14,0x39391339,0x392C2D24,0x382C0D2C,0x39444431,0x142D4444 + .word 0x4438382C,0x75393939,0x38382F13,0x44443939,0x2F2F2D38,0x0F2D2F44,0x382D3113,0x0F0F1313 + .word 0x2D443914,0x13443944,0x44397575,0x38757544,0x39447575,0x39754444,0x39753939,0x2C394439 + .word 0x752D7575,0x14447539,0x752F3939,0x44447575,0x4439312C,0x75443944,0x75752C0F,0x140D7539 + .word 0x140F752D,0x0D2C2D0F,0x0D382D2C,0x0F0D0F0F,0x13141413,0x16080F0D,0x0D080D0F,0x2D130D0F + .word 0x0F0D0F17,0x2C2D2C0F,0x13142513,0x2D2D392D,0x2D0F2D2C,0x2D2D4444,0x2D142C39,0x44393144 + + .word 0x2D0F7514,0x3944132A,0x38382C08,0x39142C2C,0x38392D0D,0x39134438,0x38382C2C,0x75392D2D + .word 0x382D142C,0x44393838,0x2C2C142C,0x2C2C2C2C,0x2C140D14,0x2C2C2C2C,0x2C2C2C2C,0x14141414 + .word 0x2A134439,0x14750F2D,0x2C2C1439,0x082C3838,0x38441339,0x132D3938,0x2D2D3975,0x2C2C3838 + .word 0x38383944,0x2C142D38,0x2C2C2C2C,0x2C142C2C,0x2C2C2C2C,0x140D142C,0x14141414,0x2C2C2C2C + .word 0x0F2D2C0D,0x13750F14,0x0F0F0D0F,0x2C2D380D,0x0D0F080F,0x13141413,0x0F0D132D,0x0D0D080D + .word 0x0F2C2D2C,0x170F0D0F,0x2D392D2D,0x13251413,0x44442D2D,0x2C2D0F2D,0x44313944,0x392C142D + .word 0x390F3139,0x44443939,0x4438392D,0x44754439,0x39754452,0x39143944,0x44752C2C,0x31311438 + .word 0x39393944,0x2D312F44,0x7539442D,0x44443839,0x75393114,0x2D443944,0x392D1314,0x44447575 + + .word 0x382F2D2D,0x2D2D2D38,0x31313938,0x38383131,0x39393939,0x2D313138,0x44443944,0x242C3144 + .word 0x3944390F,0x242D3839,0x39391425,0x2D2C2C2D,0x2D310F08,0x2C2D312C,0x312D2C14,0x38393814 + .word 0x39394444,0x39310F39,0x39447544,0x2D393844,0x44391439,0x10447539,0x38143131,0x2C2C7544 + .word 0x442F312D,0x44393939,0x39384444,0x2D443975,0x4439442D,0x14313975,0x75754444,0x14132D39 + .word 0x38440F13,0x39443938,0x39752C2D,0x39443939,0x2D31392C,0x38444439,0x392C382D,0x39130F39 + .word 0x2F151313,0x140F2D38,0x2A2C2C13,0x0F0D4408,0x38752D08,0x0F13142D,0x2C752C39,0x44393813 + .word 0x14390F38,0x31392D0F,0x38392D44,0x38313138,0x312C2D75,0x2D313831,0x38313131,0x142C2D31 + .word 0x2C2C2C2D,0x1413142C,0x14130F0D,0x130D0F2D,0x0F0D0F13,0x0F0D2C0F,0x2D0F2D44,0x0D75442D + + .word 0x0F2D3931,0x380F3914,0x38313138,0x442D3938,0x3138312D,0x752D2C31,0x312D2C14,0x31313138 + .word 0x2C141314,0x2D2C2C2C,0x2D0F0D13,0x0D0F1314,0x162C0D0F,0x130F0D0F,0x2D44750D,0x442D0F2D + .word 0x38394439,0x130F4438,0x39394439,0x2D0F7539,0x39444438,0x0D08312D,0x390F1339,0x0F0F2C39 + .word 0x382D0F14,0x130F152F,0x08440D0F,0x0F2C2C2A,0x2D14130F,0x082D7538,0x13383944,0x392C752C + .word 0x44394413,0x1439442D,0x44757538,0x75753944,0x44447539,0x75754439,0x39443975,0x39397539 + .word 0x39754444,0x75752D75,0x75754444,0x39392F75,0x44394475,0x2C313944,0x39750D39,0x0F2C7575 + .word 0x2F394431,0x142D2D14,0x39133939,0x16393944,0x2C0D2C38,0x132D2C39,0x44442D14,0x0F2D4439 + .word 0x39393975,0x14393844,0x39394444,0x392D3838,0x442F2D0F,0x2D2C2F2F,0x13130F0F,0x0F312D38 + + .word 0x142D2D0F,0x3144392F,0x4439390F,0x39391339,0x392C2D0F,0x382C0D2C,0x39442D0F,0x142D4444 + .word 0x44383914,0x75393939,0x38382D39,0x44443939,0x2F2F2C2D,0x0F2D2F44,0x382D310F,0x0F100F13 + .word 0x140F752D,0x0D2C2D0F,0x0D382D2C,0x0F0D0F0F,0x13141413,0x0F080F0D,0x0D080D0F,0x2D130D0F + .word 0x0F0D100D,0x2C2D2C0F,0x13142513,0x2D2D392D,0x2D0F2D2C,0x2D2D4444,0x2D142C39,0x44393144 + .word 0x2A134439,0x1475162D,0x2C2C1439,0x082C3838,0x38441339,0x132D3938,0x2D2D3975,0x2C2C3838 + .word 0x2D317575,0x2C142D38,0x38317575,0x2C142C2D,0x2D447575,0x140D142C,0x38447575,0x2C2C2C2C + .word 0x390F3139,0x44443939,0x4438142D,0x44754439,0x39751415,0x39143944,0x44752C0F,0x2D311438 + .word 0x39393914,0x2D312F44,0x7539442D,0x44443839,0x75393114,0x2D443944,0x392D1314,0x44447575 + + .word 0x38440D13,0x39443938,0x3975172D,0x39443939,0x2D310D0D,0x38444439,0x390F0905,0x44130F39 + .word 0x2F150F13,0x0D0F2D38,0x2A2C2C0F,0x0F0D4408,0x38752D08,0x0F13142D,0x2C752C39,0x44393813 + .word 0x0F2C2D77,0x08080808,0x132C3181,0x0808080F,0x2D313181,0x08080F14,0x31397777,0x0D0F0F2C + .word 0x31814444,0x2C2C2D2D,0x44814439,0x31313939,0x7E75442C,0x77778175,0x8A752F25,0x818A8144 + .word 0x0D0D0D08,0x777E2C0D,0x0D080808,0x8A772D0F,0x0D080808,0x81822D14,0x0F0F0F0D,0x46777E2C + .word 0x2C2C1313,0x7E477E46,0x462D2D2C,0x777E477C,0x4677462D,0x467E4638,0x44447581,0x7E453944 + .word 0x2C554577,0x2C130F13,0x45454575,0x2D2D2D77,0x45444446,0x0F447546,0x39393148,0x2C2C4446 + .word 0x44392D31,0x39393939,0x442D2C44,0x2C393944,0x2C2C3077,0x38393939,0x2C2F7E7E,0x142C2C13 + + .word 0x77812D0F,0x39393939,0x3981442D,0x45482C2D,0x2D757C39,0x2C822F2C,0x2C317C39,0x2C46382D + .word 0x2D2C7777,0x382C3938,0x382C3977,0x382D2D38,0x2D382C24,0x38392F2D,0x392C2D13,0x2F2D2D2D + .word 0x2C2C4639,0x3938132C,0x312F772C,0x38313944,0x44773114,0x2C393977,0x44813114,0x2C383977 + .word 0x39773114,0x2C394477,0x44312D14,0x2F390F45,0x75312C25,0x14380D46,0x442A2D25,0x442C0F39 + .word 0x2D467E77,0x130F1413,0x31813939,0x2D2C2D2D,0x77444438,0x0D08312D,0x77393138,0x0F0F2C39 + .word 0x382C3814,0x130F1548,0x08141313,0x0F2C2C2A,0x2D142C13,0x082D7538,0x13383944,0x392C752C + .word 0x2C2F2C25,0x44392C2C,0x77463131,0x817E7E77,0x38394645,0x75757575,0x44313824,0x81392D39 + .word 0x39443944,0x8177397C,0x39393944,0x81774439,0x2D2D2C0F,0x2D7E7744,0x4444240D,0x25778144 + + .word 0x44311308,0x252D7781,0x7E2D140F,0x2D2D4877,0x7781392D,0x44392D77,0x46394439,0x3944382D + .word 0x77444431,0x44393931,0x75774444,0x44444439,0x142C2C39,0x39444439,0x13442C0F,0x13143944 + .word 0x12105D36,0x15365D5D,0x6712105D,0x28365D67,0x12101036,0x28282728,0x28101012,0x0D362228 + .word 0x270E1028,0x0E5D5D28,0x12101010,0x11365D28,0x12101028,0x08125D23,0x1210150E,0x03112823 + .word 0x00000010,0x00000000,0x00000E12,0x00000000,0x00365D67,0x00000000,0x365D3636,0x00000000 + .word 0x11273612,0x00000036,0x27675D28,0x00000023,0x5D362710,0x00001010,0x36151028,0x36280E5D + .word 0x36360200,0x27281323,0x36060000,0x34272727,0x12000000,0x28363634,0x01000000,0x365D5D36 + .word 0x00000000,0x0E000601,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x2815230E,0x28115D5D,0x150E1122,0x15151528,0x11283434,0x15253613,0x365D3412,0x29362411 + .word 0x5D5D3436,0x28280E36,0x36363627,0x5D2B1136,0x36281100,0x25151512,0x34230300,0x15153628 + .word 0x00673636,0x00000000,0x00365F25,0x00000000,0x5D5E1015,0x00000036,0x35121515,0x0000005D + .word 0x0E36105D,0x00000036,0x2836105D,0x00000036,0x36121025,0x0000065D,0x28281515,0x00063628 + .word 0x15281515,0x00120D13,0x10103615,0x27101010,0x0E272736,0x10122736,0x27272636,0x36363636 + .word 0x27103613,0x36101227,0x27153611,0x28102827,0x2736120E,0x10122828,0x22360300,0x10125D12 + .word 0x67702300,0x00000023,0x5D0E1000,0x36283636,0x36123610,0x11115D5D,0x675D5D0E,0x27273667 + .word 0x36272810,0x6736365D,0x10101036,0x5D12120E,0x10121236,0x28282810,0x12675D12,0x10101010 + + .word 0x00000000,0x5F673600,0x12000000,0x1010125D,0x28101023,0x100E2828,0x0E101012,0x10363611 + .word 0x6736275D,0x0E365D5D,0x5D5D5D67,0x0E27285D,0x100E2727,0x10101028,0x10101010,0x10101010 + .word 0x10105E36,0x00000000,0x10352712,0x0000000E,0x280E2310,0x270E0E28,0x360E1010,0x36280E28 + .word 0x36120E0E,0x365D3636,0x1023120E,0x0E283612,0x10101010,0x10100E10,0x10101010,0x10103636 + .word 0x00000000,0x00000000,0x00000000,0x0E000000,0x36360000,0x28102736,0x10125D5D,0x270E2727 + .word 0x1010100E,0x0E0E1010,0x12101010,0x100E3636,0x36271210,0x365D365D,0x0E363628,0x36281010 + .word 0x67702310,0x00000023,0x5D0E1010,0x36283636,0x36123636,0x11115D5D,0x675D5D36,0x27273667 + .word 0x3627280E,0x6736365D,0x10101010,0x5D12120E,0x1012120E,0x28282810,0x12675D27,0x10101010 + + .word 0x11365D15,0x0000080D,0x0E5E6715,0x00000002,0x02363536,0x00000000,0x01365D5D,0x00000000 + .word 0x00020E0E,0x00000000,0x0000030E,0x00000000,0x00000003,0x00000000,0x00000000,0x00000000 + .word 0x360E0000,0x105D2812,0x00000000,0x28362800,0x00000000,0x275D3636,0x00000000,0x270E0E00 + .word 0x00000000,0x0E000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x27121010,0x0E102836,0x28362828,0x27282728,0x0E280E10,0x12362728,0x10120E10,0x00001028 + .word 0x000E0E10,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0xB4000000,0x00000000,0x81CA0000,0x00000000,0x59C2CA00 + + .word 0x00000000,0x81000000,0x00000000,0xC2CACA00,0xCA000000,0x59C2C2CA,0xC2CACA00,0x005959C2 + .word 0x59C27C7C,0x00D0801D,0x00565565,0xD0B71400,0x00870056,0xB7000000,0x81D0B315,0xC6D80000 + .word 0xB4837C76,0xCA7C83B4,0x817C87C2,0xC2C2C281,0x48485656,0x56554848,0xB7D00000,0x000015C5 + .word 0x14D8D800,0x0000D0C6,0x0000D8D0,0xD0D0B700,0x000000D0,0xC6BC0000,0x0000D0B7,0xB7D0D800 + .word 0xCACACACA,0xCACACACA,0xC2C2C2C2,0x87878187,0x56565659,0x48484856,0x00D0B700,0xD8D40000 + .word 0xC6BCD0D8,0xD0D80000,0xBC1400D0,0x00D0D0D0,0x14000000,0x0000D0B7,0xD80000D0,0x00CFB7C6 + .word 0xCACACA87,0xCACACACA,0xC2AF5548,0x555555C2,0x56555659,0x59555655,0x000000C0,0x00C9D800 + .word 0x0014C0D0,0xCED0D8D0,0xC6CFD000,0xD00000D8,0xB7D00000,0x00000000,0xD0D8D000,0xD00003B7 + + .word 0xCACACACA,0x7C7CB4B4,0xC2C2C2AF,0x4883C2C2,0x59595959,0x56565959,0xD0000000,0x000000B6 + .word 0xD8D00006,0x008ABDD0,0x00D8B6C9,0x83B7D000,0x00068AD0,0xCFD00000,0x0680D0D8,0xC5D00000 + .word 0xCACACACA,0xCACACACA,0xC2C25548,0xC2C2AFC2,0x55565648,0x59595959,0x76000000,0x00000056 + .word 0xD8802E00,0x0000BBD0,0x00D88345,0xD1BFC600,0x0000C1B6,0xCED00000,0x001DBDD0,0xC4D8D000 + .word 0xB4B4CACA,0x65808181,0xC2C2C2C2,0x48AFC2C2,0x5A878759,0x55655681,0x55C4D800,0xD0001500 + .word 0xBCCBD7D0,0xD8D00000,0xD00019D8,0x00D8C1B3,0x0000004C,0x0019B2C8,0xD0004DCE,0x4CB3D0D8 + .word 0xCACAB487,0xB4CACACA,0xAFAF5548,0xC2C2C2C2,0x56484148,0x5659595A,0x000000D0,0x00D0B000 + .word 0x0000D1CB,0xD0C6C0D0,0xD0C9B619,0xC61400D0,0xD0B70000,0x14000000,0xB6C2D000,0xD80000B6 + + .word 0x87CACACA,0xCACACA81,0xC283AFAF,0xC2C28456,0x55565555,0x59565655,0x550E0000,0x0000D080 + .word 0xD0D00000,0x00D0801D,0x00D0D0CF,0xD0B71400,0x00C7CFB0,0xB7000000,0xC7D0B3D0,0xC6D80000 + .word 0xB4CACACA,0x76767C80,0x5584AFC2,0x5555C2AF,0x59555959,0x55595959,0xB7D00000,0x000000D0 + .word 0x14D8D800,0x0000D0C6,0x0000D8D0,0xD0D0B700,0x000000D0,0xC6BC0000,0x0000D0B7,0xB7D0D800 + .word 0xCACACAB4,0x878187CA,0xC284AF55,0x4884C2C2,0x56565956,0x41565959,0x00D0B700,0xD8D40000 + .word 0xC6BCD0D8,0xD0D80000,0xBC1400D0,0x00D0D0D0,0x14000000,0x0000D0B7,0xD80000D0,0x00CFB7C6 + .word 0xCACACACA,0xCACACACA,0xC2AFC2C2,0x4855C2C2,0x59595959,0x48565655,0x56000000,0x00000076 + .word 0xD0BB0000,0x002E80D8,0x00C6BFCF,0x4583D800,0x0000D0CD,0xB6C10000,0x00D0D8C4,0xD0BD1D00 + + .word 0xB4B47C7C,0xCACACACA,0xC2C28348,0xAFC2C2C2,0x59595656,0x59595959,0xB6000000,0x000000D0 + .word 0xD0BD8A00,0x0600D0D8,0x00D0B783,0xC9B6D800,0x0000D0D1,0xD08A0600,0x0000D0C5,0xD8D08006 + .word 0x00000000,0xD05987B4,0xCA000000,0x00B65587,0xCA000000,0xC9B684C2,0xC2CA0000,0x81000059 + .word 0xC2830000,0x00000000,0xC2872E00,0x000000D0,0x00C27600,0xD300D0CD,0x00558A2A,0xD0D3B016 + .word 0x87CF0015,0x00D0D88A,0xB7140000,0x000087D0,0xD8000006,0x0084CFB7,0xD0D800C9,0xCCC5C600 + .word 0x00D0D387,0xB7B70000,0x00C981C6,0xB7D80000,0xC98700D0,0x00D0D800,0xB7000000,0x0019D0D8 + .word 0x00D0B700,0x0000D0D8,0xD8B70000,0x000000D0,0xB7D80000,0x000000D0,0x1DD0D800,0xD800D0B7 + .word 0x0000D0D8,0xD0D0BB00,0x0000D0D0,0xD08BD000,0x00D0B700,0x8B1DD0D8,0xD8BC0000,0x000000D0 + + .word 0xD0D8D0C6,0xD0B70000,0x00D0C645,0xB7000000,0xD0D0B3C6,0xD0D00000,0xD04D00D0,0x00D0D0C6 + .word 0x14000000,0x0000D0D7,0xD8000000,0x00D0B7D0,0xD0D800B3,0xD0B70000,0x00D0D889,0xCF1D0000 + .word 0x0000D8D0,0xD8B0B3D0,0x00001DC0,0x14D7D000,0x0000CFD0,0x81D0D8D0,0xB7D0D000,0xC90000D8 + .word 0xBCD00000,0x00000000,0xD0D80000,0x0000038A,0x00D0D800,0xD015BFD0,0x0000D0D9,0xD8BCD000 + .word 0x55B60000,0x00D8D000,0xD0000000,0x0000D780,0xD0000000,0x00008AD3,0xD8D00080,0x008BB600 + .word 0x00D2B7D0,0x8BB60000,0x03B3D2D0,0xD8D00000,0xB3D000D8,0xD6D0D000,0xD0000000,0x00D6D78B + .word 0x55C8D1C7,0x004DD8D0,0xC8C94D00,0x00001DCD,0xD0D00000,0x00004FC5,0x4FC2D800,0xD019CBD1 + .word 0x0000D0C9,0xB0B4D000,0x0000C8B3,0xB7D5D500,0x00B3B6C7,0xD000D5D0,0xB4D0C700,0x000000D5 + + .word 0xD8B7C0D0,0xC1D00000,0x81D7D000,0xD0000000,0xBDD0D8D0,0xD3D00042,0xD00000D0,0xD4D3D0B7 + .word 0x00000000,0x0000B7CD,0xD0000019,0x004CD0D3,0xD3D055CD,0x42C5D000,0x00D2C8D0,0xC5D00000 + .word 0x0600D0D0,0xD0D8C98A,0x000000D0,0x00B6C800,0x0000D0C5,0xC9B6B0D3,0xCDD0C800,0x810000C9 + .word 0xC9CE1900,0x00000000,0xCFC1D800,0x000000D0,0x0000D0D8,0xD300D0CD,0x000000D0,0xD0D3B016 + .word 0xC6CF0000,0x00D0D8D7,0xB7140000,0x0000D0D0,0xD8000006,0x00C1CFB7,0xD0D800C9,0xCCD0C600 + .word 0x00D0D387,0xB7B70000,0x00C981C6,0xB7D80000,0xC98700D0,0x00D0D800,0xB7000000,0x0019D0D8 + .word 0xD0D8D0C6,0xD0B70000,0x00D0C647,0xB7000000,0xD0D0B3C6,0xD0D00000,0xD04D00D0,0x00D0D0C6 + .word 0x14000000,0x0000D0D7,0xD8000000,0x00D0B7D0,0xD0D800B3,0xD0B70000,0x00D0D889,0xCF1D0000 + + .word 0x00D0D800,0x0000B655,0x80D70000,0x000000D0,0xD38A0000,0x000000D0,0x00B68B00,0x8000D0D8 + .word 0x0000B68B,0xD0B7D200,0x0000D0D8,0xD0D2B303,0x00D0D0D5,0xD800D0B3,0x8BD7D600,0x000000D0 + .word 0x005555B2,0xD0C8D200,0x0055C2B2,0xCD55D0D3,0xD355C2C5,0x190000D0,0xCD55B0CA,0x00000000 + .word 0xB75684CA,0xD00000D0,0x4259B0CA,0xD0D8D0BD,0x0059C2CA,0x00D0D781,0x0059C2CA,0xD0C0B7D8 + .word 0x0000D0C5,0xD0C8D200,0x00D0C549,0xCD55D0D3,0xD3D04C00,0x190000D0,0xCDB70000,0x00000000 + .word 0xB7D0D3D4,0xD00000D0,0x4200D0D3,0xD0D8D0BD,0x000000D0,0x00D0D781,0x0000D0C1,0xD0C0B7D8 + .word 0xD859C2CA,0xCE4D00D0,0xC85987CA,0x4C000000,0x8A56C2CA,0xD81900D0,0x1556C2CA,0xD0D7CBBC + .word 0x1559C2C5,0x00D8C455,0x4859C281,0xD0CF1400,0x4859558A,0x00D0C000,0x59555580,0x0000D0C0 + + .word 0x00D0D8C4,0xD0BD1D00,0x0000D0CD,0xB6C10000,0x00C6BFD1,0x4583D800,0xD0BB0000,0x002E80D8 + .word 0x56000000,0x00000076,0x000000D8,0xD0D8D0D0,0xCF1DD8D0,0xD80000D0,0xD0C0D000,0x00000000 + .word 0x0000D0C5,0xD8D08006,0x0000D0D1,0xD08A0600,0x00D0B783,0xC9B6D800,0xD0BD8A00,0x0600D0D8 + .word 0xB6000000,0x000000D0,0xB7000000,0x0000D0D0,0xD0B71DD0,0x00D0D000,0x00D0CFD9,0xB7D00000 + .word 0xB70300D0,0x00D0D8D0,0x00000000,0x0000D0B7,0xD80000D0,0x00D0CFC6,0xD0D8D0CE,0xD0C01400 + .word 0x00D8C900,0xC0000000,0xD0D0B700,0x55000000,0xD000CFB7,0x8155D4D8,0x000000D0,0x8176D1D0 + .word 0xB60000D8,0x00D0C2B6,0x00000014,0x0000B7D0,0xD00014C6,0x19B6C9D0,0xD0C0C6D0,0xCBD10000 + .word 0x00B0D000,0xD0000000,0x5A595956,0x48414856,0xC2C2C2C2,0x4155AFAF,0xCACACAB4,0x87B4CACA + + .word 0x0680D0D8,0xC5D00000,0x00068AD0,0xCFD00000,0x00D8B6C9,0x83B7D000,0xD8D00006,0x008ABDD0 + .word 0xD0000000,0x000000B6,0xD0D00000,0x000000B7,0x00D0D000,0xD01DB7D0,0x0000D0B7,0xD9CFD000 + .word 0x001DBDD0,0xC4D8D000,0x0000C1B6,0xCED00000,0x00D88345,0xD1BFC600,0xD8802E00,0x0000BBD0 + .word 0x76000000,0x00000056,0xD0D0D8D0,0xD8000000,0xD00000D8,0xD0D81DCF,0x00000000,0x00D0C0D0 + .word 0xD8414887,0x000000D0,0xD4568481,0xCF00D0D8,0x0059C287,0xB7D0D000,0x0059C2CA,0xC6B7D000 + .word 0x0056C2CA,0xD814BCC6,0xD05684CA,0x000014BC,0xB759AFCA,0x000000D0,0x005655B4,0xD000D0D8 + .word 0x00D0B7D0,0xCFD00000,0xD0D000B7,0x1DB7D000,0xD0000000,0x0000B7D0,0xC6000000,0x0000D0D7 + .word 0xD0D000D0,0x00D0D814,0x4DD0D0D8,0xD0D80000,0x00B3C6D0,0xD8000000,0xD0C645C6,0x89B30000 + + .word 0x000000D9,0xD0C0D000,0x0000D8D0,0xD81DCFD0,0xD0D8D000,0x000000D0,0xBCD00000,0x000000B7 + .word 0x008AD000,0xD000D0D8,0x0003BFD0,0xB3D0D800,0x000015BC,0xB0D7D000,0x0000D0D8,0xD81481C9 + .word 0xD0000000,0x874859C0,0xC0D000D0,0xCA555600,0x14CFD0D8,0xCAAF5500,0x00C6B7D0,0xCAC25600 + .word 0xD0D800B7,0xCAC25500,0xD8000003,0xCA5556D8,0xD0000000,0xCA5555C9,0xCED000D0,0xCA555900 + .word 0x00D0C0D0,0xD9000000,0xD0CF1DD8,0xD0D80000,0xD0000000,0x00D0D8D0,0xB7000000,0x0000D0BC + .word 0xD8D000D0,0x00D08A00,0x00D8D0B3,0xD0BF0300,0x00D0D7C2,0xBC150000,0xC98114D8,0xD8D00000 + .word 0x00555576,0xB7C6D000,0x00595576,0xD0BCD000,0x0059C27C,0xD800B7D0,0xD059AF80,0x000000C6 + .word 0xB75955B4,0x00000014,0xD05584CA,0x000000D8,0x0059AFCA,0xD000D8D8,0x0059C2CA,0xB7D0D000 + + .word 0xD8000000,0x008BD0D0,0x00000000,0x001D8BD0,0xD00000D0,0x00D0D0BB,0xB7D0D0D8,0xD0D80000 + .word 0x1DB7D800,0xD8000000,0xD0D8B7D0,0xBCD00000,0xD80000B7,0x00B7D0D0,0x00000000,0x0000D0D8 + .word 0xD0D0D800,0x00000080,0xB7D20000,0x00000000,0xD2B3D000,0xB60000D0,0x0003B3D0,0x55D0D0D8 + .word 0x0000008B,0x0080D300,0x0000D0D7,0xD0D78AB6,0xB6D0D0D6,0xD800008B,0x8BD8D600,0x00000000 + .word 0x06C9D0D8,0xCAAF5900,0x00B68AD0,0xCAC25900,0xD0D80680,0xCAC25900,0xD8000006,0xCAC259D0 + .word 0xD0000000,0xB4C259B6,0xBDD00000,0xB4C25900,0x8AB7D0D0,0x7C835600,0x0083CFC5,0x7C485600 + .word 0x0059AFCA,0xD8D0C906,0x0059C2CA,0xD08AB600,0x0059C2CA,0x8006D8D0,0xD059C2CA,0x060000D8 + .word 0xB659C2B4,0x000000D0,0x0059C2B4,0x0000D0BD,0x0056837D,0xD0D0B78A,0x0056487C,0xC5CF8300 + + .word 0x0059C2CA,0xC6B7D000,0x0056C2CA,0xD800B7D0,0xD05684CA,0x00001480,0x80555681,0x0000001D + .word 0x5555C287,0xC70000D0,0x0E5683CA,0xD0C7D0D0,0x0055AFCA,0xB3CFD000,0x0055AFCA,0xD0B0CF00 + .word 0xCC000000,0x0000B7B7,0xD0C100D0,0x19D0D8B7,0xC6CFD0D8,0xD0D80000,0x00B7D0D7,0xD8000000 + .word 0xD0D8B7C6,0xB7C90000,0xD80014CF,0x0087C9D0,0x00000000,0x000081D3,0xC9060000,0x00D0C687 + .word 0xC9B3C700,0xC7000000,0xD0C8B6C4,0xD14D00D8,0x0000B3D0,0xC8C9D0C2,0x000000B4,0x55C8D04F + .word 0x0000D0D5,0xD0CDC5D1,0xD0D5D500,0xD81D4FCB,0xB4D50000,0x4D000019,0xB0B7D000,0x000000D0 + .word 0x0045B6D0,0xCA484800,0x2E83C1BD,0xCA555600,0x80D8001D,0xCAC25600,0xD8000000,0xCAC25576 + .word 0xD0000000,0xCAC25956,0xBBC600D0,0xCAAF5900,0x00BFD0D8,0xCAC25900,0x00D1CEC4,0xCAC25900 + + .word 0x0056C2B4,0xD814C6D0,0xD059C2CA,0x000014C6,0xB059C2CA,0x000000C0,0x005AC2CA,0xB600D0D0 + .word 0x0056AFCA,0xB6D0D000,0x0048AFCA,0xC2B7C900,0x004155B4,0xD000B6D1,0xD0484187,0x000019CB + .word 0x81C900D0,0xD0D30000,0x00B6B6D8,0xD3000000,0x00B0C8C9,0xB0D00000,0xC9D3008A,0x16CDD000 + .word 0xCD000006,0x0000CFC9,0xD0000000,0x0000C1CE,0xC8D000D0,0x00D0D819,0x00C5D0D0,0xD0D80000 + .word 0x0019CDD0,0xD000D0D0,0x000055C8,0xC0D0D800,0x0000D0D2,0xB7D7D000,0x00D0D300,0xD881BDD0 + .word 0xCDD30000,0x000042B7,0xB7D0D000,0x000000D0,0x004CC5D0,0xD000D0D3,0x000042C5,0xC1D0D3D4 + .word 0xD0D84CCE,0xCAC25900,0xD719004E,0xCAC287D8,0xCB000000,0xB4C287C4,0xBCD000D0,0xB4C25A55 + .word 0x00B3C8D8,0x81C28100,0x00C1B2D0,0x81C25615,0xD0D819B3,0x80AF6500,0xD800004C,0x654855D0 + + .word 0x00000000,0x4A4B1F20,0x1C200000,0x1A504E19,0x181A1C18,0x4B574F1F,0x1A1C1F3E,0x1A1C211F + .word 0x211A183E,0x0C0C1F21,0x4A1F1A3E,0x1A0B0B1F,0x1A1F2040,0x58201C0B,0x2320666F,0x3D2E2363 + .word 0x49185050,0x4A1C181F,0x0B191A20,0x504E5119,0x180B180B,0x514E4B4A,0x3D3B1E19,0x515B4B1A + .word 0x0B1A2121,0x4B4E1C64,0x4B50211B,0x3B0B2B95,0x6E6E6E70,0x70919191,0xA6A6A670,0x9193A6A6 + .word 0x1E091F1F,0x1F4B201E,0x090C1E50,0x1F186309,0x6320214B,0x18191C3D,0x0A1E1F4B,0x1F492041 + .word 0x1F4B1A1A,0x213B643D,0x4B210B0A,0x3C193B48,0x28233560,0x35356823,0x6E707070,0x6E707095 + .word 0x4A5C5019,0x4B0A0A0A,0x0C4B1F18,0x5C20040A,0x0A1F0A1F,0x511F190B,0x0A0B1A50,0x51194E4A + .word 0x182B0B58,0x4A0C4E51,0x3D410A0B,0x70657680,0xA6786235,0x9593A6A6,0xA6A69370,0x957878A6 + + .word 0x1A4B4A50,0x4E201E19,0x0A1A0C20,0x4E212019,0x091A1F20,0x1E20483B,0x3D2B1920,0x1E214B20 + .word 0x190A5D64,0x4A4B4B21,0x0A183B68,0x514B4B1F,0x60353668,0x6E6E6E6E,0xA6939591,0xA8A8A6A6 + .word 0x5B000000,0x1A184E50,0x1F4E4E00,0x204B200C,0x181A1E18,0x584A1A0C,0x20201F0C,0x264A190C + .word 0x4A214B20,0x6E321C1A,0x20505950,0x6E26211F,0x50512120,0x73410A1A,0x1C180B0B,0x93604C21 + .word 0x18181819,0x60214E4A,0x1F18194B,0x70700821,0x4218324D,0x93936E29,0x60376E6E,0xA6939370 + .word 0x706E7070,0x93937070,0x70709393,0xA6737070,0x709393A6,0xA9A9736D,0x6D709393,0x7373646D + .word 0x70707070,0x4E4F1A6E,0x93707070,0x70707093,0xA6939393,0x70939393,0xA6A6A6A6,0x93939393 + .word 0xA6A6A6A6,0x6D736F6F,0xA8A9A9A9,0x646D73A9,0x737373A6,0x646D6D73,0x6D707070,0x6D6D6D64 + + .word 0x201E204B,0x76201F4E,0x236D6E70,0x707C5952,0x70707070,0x6E236370,0x70707070,0xA6937070 + .word 0x70707070,0xA6937370,0x7070706D,0x93937070,0x70706D6D,0x73707070,0x706D646D,0x6D6D6D70 + .word 0x201A0C3F,0x761F3321,0x35633318,0x63357035,0x93939361,0x93937070,0xA6A6A6A6,0x93939393 + .word 0x93A6A6A6,0x73939393,0x93939393,0x70707373,0x73737373,0x706D6D6D,0x6464646D,0x6D646464 + .word 0x70636E70,0x70606070,0x7070706E,0x706E6E6E,0x70707093,0x6E6D6D6E,0x6E707093,0x6E64646D + .word 0x6D6D6E70,0x646D6464,0x64646D6E,0x66646464,0x6464646D,0x79666564,0x6D6D6464,0xA5A8A9A6 + .word 0xA6A6A673,0x7093A6A6,0x70706E6D,0x70707070,0x93937070,0x70707070,0x6F6F6470,0xACA8A879 + .word 0xA6736665,0xACA8ACAC,0xACA5726F,0x6D70A6AC,0xACACACAC,0x6D707093,0xA6A5A5A5,0x70707093 + + .word 0x6E707070,0x70707070,0x706E7070,0x70707070,0x70A6A670,0x70707070,0x70A6ACB8,0x70707070 + .word 0xA6A8ACB8,0x70707070,0x79A97963,0x9370706D,0x64646464,0x66646464,0x64646464,0x64646464 + .word 0x70707070,0x6D706E70,0x70707070,0x6D707070,0x70707070,0xA6707070,0x70707070,0xA6707070 + .word 0x70707070,0x70707070,0xA6A6A6A6,0xA6A6A6A6,0xA6A6A673,0xA6A6A6A6,0x706E706D,0xA8A8A670 + .word 0xA6736464,0xA8ACACA6,0x64646464,0x70ACAC6D,0x6464A6A8,0x70A6A66D,0x6D70A6A8,0x706D6464 + .word 0x646D7070,0x706D6464,0x6D6D7093,0x70707070,0x70707073,0x70707070,0x7070A6A8,0x70707070 + .word 0x0C0C1819,0x93933B18,0x204A4B4A,0x9393764B,0x1F1F1C1F,0x93936E4C,0x3F18191F,0x93937035 + .word 0x70700B0C,0x73939370,0x6E6D706E,0x73939370,0x6E524A18,0x73939370,0x6E521E18,0x70707070 + + .word 0x646D7093,0x6D64646D,0x6D6D7073,0x93736D64,0x6D6D6D73,0xA693936D,0x706D6473,0x93937070 + .word 0x70706D64,0x70707070,0x70706D64,0x70707070,0x70706D6D,0x93707070,0x7070706D,0xA6937070 + .word 0x70707093,0x6D6E6D6D,0x70709393,0x73737373,0x70707093,0xA6A89373,0x70707070,0x93939370 + .word 0x70707070,0x70707070,0x93939393,0x936D7070,0x93A673A6,0x23013573,0x706E7393,0x19201F35 + .word 0x6D646D6D,0x64646D6D,0x736F6F73,0x6D6D6D70,0xA8A8A6A6,0x70707093,0x93A6A6A6,0x70707070 + .word 0x73A6A693,0x706E706D,0x93A8A8A8,0x70707070,0x70936238,0x70707070,0x70351C1C,0x93937070 + .word 0x6464736D,0x6D646464,0x73A6A893,0x73737373,0xA6A69373,0xA6A8A8A6,0x73937370,0xA6A67373 + .word 0x6D70706E,0x73736E6E,0x6E6E6E70,0x73736E6D,0x70707070,0xA6A69373,0x93737093,0xACA5A6A6 + + .word 0xA5A5736D,0xA6A5A8AC,0xA8A5ACA5,0x73A6A5AC,0xA6A5A5A5,0x707393A6,0x939393A6,0x70707070 + .word 0x73706E73,0x6D6D6D6E,0x93737073,0x70737393,0x937393A6,0x7393A6A6,0x939393A5,0x70737393 + .word 0xA6A6A6A6,0x70707093,0x706E7370,0x60606E70,0x70707070,0x70707070,0x6E6E6E70,0x6F73A673 + .word 0x6C6C736E,0x64616161,0x64617070,0x61616164,0x666F6F6E,0x70707064,0x706D6464,0x70707070 + .word 0x70707070,0x70707070,0x70707070,0x70707070,0x7093A693,0x70707070,0xA8A8736F,0x736F73A8 + .word 0xA9A9A979,0x6F6F6F79,0x6F79A979,0x6D706D6F,0x6E6E6E6E,0x91703560,0x70707070,0x91917070 + .word 0x70707070,0xA8A8A66E,0x70707070,0x6E93A693,0xA5A67070,0xA5A5A5A6,0xA5A5A6A6,0xA5A69373 + .word 0x646F6F6F,0x6E6E6E63,0x64646464,0x7070706D,0x70707070,0x93707070,0x70707070,0xA6937070 + + .word 0xA8A8ACAC,0xA6A8A8A8,0xB8A8ACA8,0xA6B8B8B8,0xB8A8A5A5,0x70A8B8B8,0xA8A8A5A5,0x7093A6A5 + .word 0x7070706E,0x6073A693,0x70707070,0x356E7070,0x707093A6,0x70707070,0x707093A6,0x70707070 + .word 0x00000000,0x180C1A0C,0x4B000000,0x180B191A,0x4E000000,0x1A0B1821,0x4A210000,0x1E1A1A1A + .word 0x3F4A1E00,0x4E1C183E,0x584E4A19,0x191A1F66,0x1A1A211F,0x0C196DAC,0x0C1F1C1A,0x161CA80B + .word 0x6E3D1818,0x70707070,0x70261C1A,0x70707070,0x70291A20,0x70707070,0x7060321A,0x70707070 + .word 0x6E664C20,0x70707070,0x7072764A,0x70707070,0x70726F3D,0x70707070,0x70726F65,0x93707070 + .word 0x70707070,0x93939370,0x70707070,0x70937370,0x7073A670,0x6370936E,0x7093A8A6,0x2370706E + .word 0x73A6ACA6,0x23707070,0x73A6ACA6,0x52707070,0x73A5ACA6,0x3D707070,0x73A5ACA5,0x65707070 + + .word 0x1C1A186E,0x4A4E0B6D,0x1A201A23,0x18207019,0x1C1A1E1A,0x201A6521,0x4A204E1C,0x1F19664E + .word 0x214B200B,0x0B1C1A4A,0x5059501A,0x0C211F20,0x51212020,0x0B0A1A50,0x180B0B0A,0x184A211C + .word 0x351F4E51,0xA6A69370,0x19191A1A,0xA693706E,0x1A180C1C,0x9370702E,0x1E1A0B1F,0x93352319 + .word 0x1F4A1F18,0x23014A1A,0x4E4A2118,0x0C0B1A21,0x1A1A201A,0x18180A18,0x180B1A1A,0x1A4A1F1A + .word 0xA69393A6,0xA5ACA8A5,0xA5A5A6A6,0x70A6A5AC,0xA8A8A5A6,0x637093A8,0x61A6A8A8,0x21706061 + .word 0x01233838,0x4E6D7000,0x2019181C,0x4B183E1A,0x1C181A1C,0x0B183E19,0x0A1A200C,0x0A1A0B6D + .word 0x616E7373,0x23353535,0x1A1F0164,0x0C0A1A18,0x0C0C1801,0x200B1918,0x0A0A1A19,0x501A180C + .word 0x0A19201F,0x20200B0A,0x1A0C1959,0x18182120,0x19181820,0x0B20211E,0x204B1F18,0x0B1F2121 + + .word 0x70707079,0x7070706E,0x95916EA9,0x35353560,0x6D643B3D,0x21204B0C,0x2B183B1A,0x4A200A63 + .word 0x2057491F,0x4B3D091F,0x50515119,0x501F0A4A,0x4B515019,0x210B184A,0x1F4A4E1A,0x1C091A4B + .word 0x70959170,0x35707070,0x00006060,0x23002323,0x1A64641C,0x1F505C20,0x2B2A0C4A,0x1A204B1C + .word 0x661F214B,0x0A0B1C3B,0x1A181A1A,0x010C1A64,0x0B0A191A,0x4F1C5948,0x0C1F4B4B,0x594B5C7F + .word 0x7070916E,0x93937070,0x60353568,0x7091916E,0x1A4A506E,0x6D640A18,0x0A0A3D0B,0x65180B19 + .word 0x1C0C0A0A,0x0B3C1A51,0x0C51511A,0x1C2B2B2B,0x0B1A505B,0x4B4B191C,0x1C04204E,0x215B4B1C + .word 0x6E6E9170,0x606E6E6E,0x3600236E,0x00233535,0x184A417C,0x4B4B4E64,0x4E594B33,0x4A50480B + .word 0x1F184A0C,0x50511A1F,0x0B1C1C1C,0x4E21180B,0x214E211A,0x19181A1F,0x4B4E0C20,0x0C0C214A + + .word 0x1C4A4A19,0x6D6DA90B,0x1A501F0C,0x6F79AC65,0x1A201918,0x72A6AC73,0x791C181A,0x7293A5AC + .word 0xA52B1A20,0x7073A5A8,0xB8A54E4A,0x6E70A6A8,0xACAC7919,0x7070A6A8,0xA8AC933D,0x707073A6 + .word 0x70726F6F,0x93707070,0x6D6D6F6F,0xA6737070,0x706D6D6D,0xA6937070,0x70706D6D,0xA6937070 + .word 0x7070706D,0xA6937373,0x73707070,0xA5A59373,0x70707070,0xA5A8A8A6,0xA6937370,0xA6A8A8A8 + .word 0x73A5ACA8,0x35707070,0x73A6A8A5,0x63709373,0x7393A6A6,0x70A6A893,0x737393A6,0x93ACA593 + .word 0x737393A6,0x70ACA693,0x737393A6,0x93A8A6A6,0x93709393,0x93A8A693,0xA6937073,0x93A89393 + .word 0x3E18191A,0x0000180C,0x654B4A51,0x00000020,0x58703533,0x0000001F,0x4E1F6D70,0x00000032 + .word 0x5A4D3B70,0x00001A0C,0x491A2370,0x0000180B,0x1A0B2370,0x00000C0A,0x21193570,0x0000200B + + .word 0x00000000,0x181A0C4A,0x00000000,0x0B0C0A0B,0x0C000000,0x181C1A0A,0x18000000,0x4A4B1A18 + .word 0x19000000,0x4E1A204B,0x0C000000,0x1A1C584A,0x594B0000,0x1A194B50,0x430B4E00,0x4A1C1A43 + .word 0xA5B8A62E,0x70707093,0xA6ACA62E,0x70707073,0xA6ACA633,0x70707073,0x93A8A63D,0x70707070 + .word 0x70A5A876,0x70707070,0x93A6A633,0x6E707070,0x9393932E,0x656E7070,0x93A6933D,0x6E6E7070 + .word 0xA8937370,0x73A6A8A8,0x73737373,0x70737373,0x6F737370,0x706E7370,0x6F6F6E6E,0x70706E72 + .word 0x736F6E6E,0x70707073,0x73736E6E,0x70707073,0x7373736F,0x70707093,0x93A67373,0x6E707070 + .word 0xA6707073,0x93A8A693,0xA8A69370,0x35A6A8A8,0xA6A8A893,0x23709393,0x28739373,0x3F3D2335 + .word 0x21377070,0x18180B4A,0x0A183A6E,0x181A181A,0x0B0C2670,0x0C211F0B,0x1A194260,0x19201F1E + + .word 0x4A1A1F63,0x0059501A,0x1A214E01,0x00212020,0x0A181A1A,0x000B0B0A,0x1959183E,0x00201A0C + .word 0x18204A3F,0x00001918,0x1F18501F,0x0000004B,0x1C184E1C,0x0000004F,0x181A1C1C,0x00000000 + .word 0x310A5000,0x4E504E46,0x171A0C0A,0xAC8977A6,0x1F510A19,0xA6ACAC1D,0x1F504A58,0x6570706D + .word 0x703F4E4B,0x6E1C4F21,0x4B6D191A,0x70191A20,0x4A0C0B19,0x701A1C58,0x59501A0A,0x6F584B4E + .word 0x939393A9,0x93707070,0x7093A6A6,0x73707070,0x7093A6A6,0x6E6E7070,0x70939393,0x736F7070 + .word 0x70709370,0x73726D6E,0x6E707070,0x79726D6D,0x6E709370,0xA6726E6D,0x6E709393,0xA6736E6D + .word 0x70739393,0x93707070,0x70709393,0x93937070,0x70707073,0x93A67070,0x7070706D,0x93A67070 + .word 0x707070A6,0x93A69370,0x707093A8,0x93A69370,0x707093A8,0x93A69370,0x7073A6AC,0x93A69370 + + .word 0x4E4F106F,0x21191A4B,0x4919A973,0x1F204E51,0x3EAC6D70,0x4021211F,0x706D6D70,0x19707070 + .word 0x6D1F7D70,0x4A211C1A,0x3E1F6570,0x181E2018,0x19203D70,0x181F193E,0x1F203D70,0x004A4A1A + .word 0x650C0A0C,0x703D0C4A,0x3E0A1920,0x702E0A0B,0x0C4A584B,0x703D3F3E,0x184E4B21,0x70663F18 + .word 0x19191A4A,0x706D204B,0x0C161809,0x703D4F1C,0x1E150400,0x70524B1C,0x3D080B0A,0x702E211C + .word 0x6E709370,0xA673706D,0x6D70706E,0xA570706D,0x6D707070,0xA893706D,0x6D707070,0xA5706D6D + .word 0x6D707070,0xA5706464,0x646D7070,0xA5706464,0x64647070,0x73706D64,0x64647070,0x73646D64 + .word 0x6E73A6AC,0x93A6936D,0x6E73A5AC,0x93A67364,0x6D93A8AC,0x93936F64,0x6E93A8B8,0x93936F64 + .word 0x6D70A5B8,0x93936F6D,0x7070A5B8,0x7073646D,0x70A6ACAC,0x706D6D6D,0x70A6ACA8,0x70706470 + + .word 0x20214170,0x004A4A1F,0x4A4A5270,0x00181F1F,0x58504E63,0x001A1F4B,0x1A4D1A35,0x00190C18 + .word 0x6D70706D,0x181C0C0B,0x1C3F3F70,0x1A1C1818,0x4B213D70,0x200C1A4A,0x1A4B4E35,0x4A0C4A4E + .word 0x3D191D18,0xA86D1F20,0x3D321A1A,0xA86E4B4B,0x3D321F1E,0xA66E4B4B,0x1F2E1919,0xA66E1F21 + .word 0x3D090A1A,0xA6600A19,0x2B1A1A4B,0x9335180A,0x191F0C4A,0x95363B5D,0x20202050,0x91686864 + .word 0x707070A8,0x73707070,0x6DA6ACAC,0x7370706D,0x64A6ACAC,0x93707064,0x646D6DA6,0x70707064 + .word 0x6D6464A6,0x70706D64,0x70646473,0x70706D6D,0xA6A66464,0xA6707070,0xA8A86464,0xA5739370 + .word 0x70A6ACA8,0x70706E70,0x93A6ACA8,0x70707070,0xA6ACA8A6,0x70707070,0xA5ACACA6,0x70707093 + .word 0xA5ACACA6,0x70707070,0xA5ACACA6,0x70707070,0xA5ACACA6,0x93937070,0xA8A8ACA8,0xA6A6706E + + .word 0x4A4B0060,0x0C194E50,0x504B236E,0x0C182151,0x484E356E,0x211A181A,0x0B64356E,0x4A1F0B1F + .word 0x4E18366E,0x4B210B1F,0x594A006E,0x4E4E1C18,0x4B412391,0x0C211C4A,0x337C6E70,0x201A1C0C + .word 0x51515C4B,0x9595704A,0x191F200A,0x7893650C,0x4E19040A,0x78A6764E,0x4A0B0A0A,0xA6A68051 + .word 0x0A0A0C4A,0xA6A63D18,0x0B1F4B5C,0xA678412B,0x1A0A1F50,0x93620A0B,0x501F1819,0x70350B58 + .word 0xA6A66D6D,0xA5A6A670,0x70707070,0xA8A5A670,0x7070706E,0xA8A5A670,0x70707070,0x93A5A670 + .word 0x70707070,0x70A6A670,0x70707070,0x6EA6A670,0x70707070,0x70A6A670,0x70707070,0x6D73A670 + .word 0xA5A5A6A8,0xA693706E,0xA6A593A5,0x9370706E,0x93A5A6A6,0x7070706E,0x73A6936E,0x70706D63 + .word 0xA5A57070,0x70706464,0xA5A67070,0x7070646F,0xA6707070,0x7070646F,0xA6707070,0x7070646F + + .word 0x656D7093,0x214B1C0B,0x18649193,0x5B4B2B3C,0x0B0A9170,0x4B192B1A,0x19186E70,0x1C1C2B51 + .word 0x0A1A6070,0x1C0B0C1C,0x0A4A3570,0x041A510C,0x3D503591,0x2050510A,0x0B6E686E,0x4E5B1A0A + .word 0x1F181F1F,0x6E353C21,0x4919184B,0x7035193B,0x201C6320,0x70683B64,0x413D091E,0x9523483D + .word 0x0A63091E,0x6E284B1F,0x1E200C09,0x7023214B,0x1F211E1F,0x70350B1A,0x4B4B501F,0x70600A1A + .word 0x70707070,0x64667370,0x70707070,0x64646D6E,0x70707070,0x6464646D,0x6F707070,0x64646465 + .word 0x7370706E,0x6464646F,0xA6A66E70,0x64646472,0xACA67070,0x706466A8,0xB8707070,0x707063B8 + .word 0x73707070,0x91916D6F,0x6F707070,0x9170706F,0x73707070,0x70356D6F,0xA8707070,0x70606F79 + .word 0xA8707070,0x706E6FA9,0xA8937070,0x706E79A9,0x73A67070,0x706EA9A9,0x6F937070,0x706E7979 + + .word 0x1A1F2335,0x594F010A,0x20500070,0x4B1C0C0B,0x4B5C2370,0x5C591A1C,0x1C202370,0x7F48643B + .word 0x2B1A0070,0x0C0B1A66,0x2A640095,0x1F0A181F,0x0C646091,0x4B191A21,0x4A1C6070,0x4B1A1A4B + .word 0x5151504A,0x70703B4B,0x5B4E4E1C,0x93910B4E,0x4B4B5118,0xA6912B1C,0x1A4A191F,0x93919564 + .word 0x3D180B49,0x736E4B0B,0x3B0B1918,0x736E501A,0x1E181A50,0xA66E2121,0x190B2050,0x936E1921 + .word 0xAC707070,0x70706DAC,0xA8707070,0x707070A8,0xA8707070,0x7393A6AC,0x79707070,0x93A6ACAC + .word 0x6F937070,0x93A5ACA9,0x6F707070,0x93A8AC79,0x73737073,0x93A8AC66,0x93737070,0x93A8AC64 + .word 0x6F706070,0x70706164,0x73706070,0x70706161,0xA6706E70,0x70706161,0x73707070,0x70646461 + .word 0x70707093,0x7065646C,0x70707093,0x70656470,0x70706E70,0x70656E70,0x70606C70,0x70656E70 + + .word 0x4A213570,0x1C21504B,0x20203570,0x090B1F3D,0x0A4B3570,0x1A180A09,0x630C606E,0x4B4A4A1F + .word 0x2B6D9570,0x1F4B5020,0x18649170,0x4A515157,0x3B3B6E70,0x4E505149,0x1A40706E,0x1A19191F + .word 0x190B2050,0x936E1921,0x1E181A50,0xA66E2121,0x3B0B1918,0xA66E501A,0x3D180B49,0xA66E4B0B + .word 0x1A4A191F,0xA6919564,0x4B4B5118,0xA6912B1C,0x5B4E4E1C,0x93910B4E,0x5151504A,0x91703B4B + .word 0x73737070,0x93A8AC63,0x73737070,0xA6ACB866,0x93737070,0xA6B8B879,0x70737070,0xA6ACB8A9 + .word 0x79737070,0xA6A6ACAC,0xA8707370,0x7070A6AC,0xA8707070,0x707070A8,0xAC707070,0x706D6DAC + .word 0x60606C70,0x70656D70,0x60707373,0x6D666D70,0x60706E73,0x706F6D70,0x606E7073,0x706D6670 + .word 0x60617073,0x70646670,0x6E616E70,0x7070616E,0x73706070,0x70706161,0x6F706070,0x70706164 + + .word 0xB8707070,0x646463B8,0xACA67070,0x646479AC,0xA6A66E70,0x6464A9A8,0x7070706E,0x646479A6 + .word 0x70707070,0x64646D70,0x70707070,0x64647070,0x70707070,0x64647070,0x70707070,0x64669370 + .word 0x70707070,0x6D73A670,0x70707070,0x70A6A670,0x70707070,0x6EA6A670,0x70707070,0x70A6A670 + .word 0x70707070,0x70A6A670,0x7070706E,0xA6A6A670,0x70707070,0xA8A6A670,0xA6A66D6D,0xA8A6A670 + .word 0xA6707070,0x7070646F,0xA6707070,0x7070646F,0xA5A67070,0x7070646F,0xA5A57070,0x70706464 + .word 0x73A6936E,0x70706D63,0x93A5A6A6,0x7070706E,0xA6A593A8,0x9370706E,0xA5A56EA8,0xA693706E + .word 0x20202050,0x91686864,0x191F0C4A,0x95363B5D,0x2B1A1A4B,0x9335180A,0x3D090A1A,0xA6600A19 + .word 0x203B1919,0xA66E1F21,0x4B48201E,0xA66E4B4B,0x21202120,0xA86E4B4B,0x1E1E4E4E,0xA86E514A + + .word 0xA8A86464,0xA8739370,0xA6A66464,0xA6707070,0x70646473,0x70706D6D,0x6D6464A6,0x70706D64 + .word 0x646473A6,0x7070706D,0x6466A6AC,0x70706E6D,0x656FA8AC,0x6E6D6D6D,0x667293A8,0x6E6D6D64 + .word 0xA5A5A8AC,0xA6A6706E,0xA5A5ACAC,0x93937070,0xA8A8A8A8,0x70707070,0xA8B8B8A8,0x70707070 + .word 0xA5B8B8A8,0x70707093,0xA6B8ACA8,0x70707070,0xA6B8AC93,0x70707070,0x70B8A670,0x70706E70 + .word 0x201C1918,0x702E201F,0x20321B07,0x70524D1F,0x214D1D07,0x7041491A,0x204F4D1E,0x706D321A + .word 0x18494F21,0x70663F1B,0x1B18494B,0x703D3F3E,0x3E0A1920,0x702E0A0B,0x650C0A0C,0x703D0C4A + .word 0x66727070,0x736D6D64,0x66727070,0x736D6D64,0x666F7070,0xA5706464,0x6D707070,0xA5706464 + .word 0x6D707070,0xA5706D6D,0x6D707070,0xA893706D,0x6D70706E,0xA570706D,0x6E709370,0xA673706D + + .word 0x70B8A573,0x73726F66,0x70B8A6A5,0x73727266,0x70B8A8AC,0x7073736F,0x72ACACB8,0x93936F6D + .word 0x6E93A8B8,0x93936F64,0x6D93A8AC,0x93936F64,0x6E73A5AC,0x93A67364,0x6E73A6AC,0x93A6936D + .word 0x1A4B4D70,0x201F1A4E,0x4B214170,0x1E1C1821,0x1C3F3F70,0x1A1C1818,0x6D70706D,0x181C0C0B + .word 0x1A4D1A35,0x00190C18,0x58504E63,0x001A1F4B,0x4A4A5270,0x00181F1F,0x20214170,0x004A4A1F + .word 0x7073A6AC,0x93A69370,0x707093A8,0x93A69370,0x707093A8,0x93A69370,0x707070A6,0x93A69370 + .word 0x7070706D,0x70937070,0x70707073,0x70707070,0x70709393,0x6E707070,0x70739393,0x70707070 + .word 0x1F203D70,0x004A4A1A,0x19203D70,0x181F193E,0x3E1F6570,0x181E2018,0x6D1F7D70,0x4A211C1A + .word 0x706D6D70,0x19707070,0x3EAC6D70,0x4021211F,0x4919A96D,0x1F204E51,0x4E4F0A3E,0x21191A4B + + .word 0x939393A5,0x70737393,0x937393A6,0x7393A6A6,0x93737073,0x70737393,0x73706E73,0x636E7073 + .word 0x939393A6,0x6E707073,0xA6A5A5A5,0x707393A6,0xA8A5ACA5,0x73A6A8A8,0xA5A5736D,0xA5A8B8B8 + .word 0x706D6464,0x70707070,0x666F6F6E,0x70707064,0x64617070,0x61616164,0x6C6C736E,0x64616161 + .word 0x6E6E6E70,0x6F73A673,0x70707070,0x70707070,0x706E7370,0x60606E70,0xA6A6A673,0x70707093 + .word 0x6D6D6464,0xACACA8A6,0x6464646D,0xA8A87364,0x64646D6E,0x73646464,0x6D6D6E70,0x636D6464 + .word 0x6E707093,0x6D64646D,0x70707093,0x6E6D6D6E,0x7070706E,0x706E6E6E,0x70636E70,0x70606070 + .word 0xA6A8ACA8,0x70707093,0xA8ACACAC,0x6D7070A6,0xACA8A5A5,0x6DA5ACAC,0xA8A6656D,0xA8ACA8A8 + .word 0x6F6F646D,0xACA8A8A9,0x93937070,0x70707070,0x70706E6D,0x70707070,0xA6A6A673,0x7093A6A6 + + .word 0x00000000,0x0F060000,0x00000000,0x130F0000,0x00000000,0x13130600,0x06000000,0x060D0606 + .word 0x0F060600,0x06060608,0x2A131302,0x06060F13,0x372A1306,0x06060F13,0x29290606,0x06060D13 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000006,0x060E0000,0x0006060E + .word 0x27270606,0x06080D13,0x130D0606,0x06060D29,0x0E060606,0x09061329,0x06060606,0x09060627 + .word 0x05060606,0x27080610,0x0606090D,0x34293412,0x0E06060D,0x34343A3A,0x10060606,0x39341223 + .word 0x12270000,0x06060612,0x2727120E,0x0608060E,0x120E270E,0x0808080D,0x06061212,0x130D0806 + .word 0x06060612,0x1313130F,0x06060606,0x2A291313,0x06060606,0x132A1313,0x13060606,0x060E3729 + + .word 0x27243629,0x36363627,0x36272925,0x605D5D5D,0x675D362A,0x7368676A,0x8E8E8D60,0x9370918E + .word 0x9191916E,0xA6939391,0xA6A6A573,0x79A9A5A5,0xA9B87562,0xB8B9B8A8,0xB92D4444,0x3AB8ACB8 + .word 0x613A3737,0x0F070412,0xA66C7370,0x130F0428,0x62B9B9A6,0x08080512,0x0700B9A9,0x29120E0E + .word 0x22000FAC,0x60363428,0x60360E75,0x6E605D5D,0xA93A1313,0x9370685E,0x60240805,0xB8A9A9B9 + .word 0x0D0D0815,0x622C2324,0x2F130F0D,0x2D296244,0x2F25370F,0x04376E6E,0x703F3724,0x24609291 + .word 0x70707060,0x2478A991,0xA6A69370,0x0224B9A9,0xA9A6A6A6,0x3606377B,0xB8ACB8B8,0x363612B1 + .word 0x675D5D3A,0x1308085D,0x5E5D6037,0x13056060,0x6160600F,0x290804A6,0xA9A9A90D,0x360D0807 + .word 0xA9B93A08,0x5D0E0E08,0x04042923,0x3A2A0E05,0x08372928,0x3E3A0808,0x29373A36,0x3A2A080D + + .word 0x0D0E1314,0x1211120E,0x3A3A3A2A,0x0028372A,0x252F2F25,0x36362515,0x2B2B352B,0x3636362B + .word 0x60603A35,0x065D5D5D,0x67676E36,0x005D5D67,0x6767675D,0x045D6167,0x60616060,0x0E287861 + .word 0x2F040806,0xB8B8A963,0x28280600,0x28112323,0x67361122,0x36365D5D,0x7336030E,0x5D6A6A70 + .word 0xB93A0003,0x6A8F9193,0x80130E0E,0x8E8E91AE,0x242B2328,0x6E70B8BE,0x36363628,0xA8A9BF29 + .word 0xA9A9A9BA,0x5D361102,0x36361111,0x686A3636,0x0E7A0E34,0x78A86036,0x750E2234,0x78A8AC7A + .word 0x447ABA36,0xA9B8B87A,0xB87575A8,0xB8B8B844,0xB8AC7875,0xBABA4475,0xB8BABA7A,0xBA7A44BA + .word 0x3761605D,0x0D080707,0x756E91A8,0x0F000413,0xB8A8AC7A,0x370DB862,0x7AA8AC7A,0x75447544 + .word 0xA9ACB8B8,0xA9B8392C,0xBABABABA,0xB8B844B8,0xBABABABA,0xBABA31BA,0xA8BABABA,0xBABA15A8 + + .word 0x0D0E1314,0x1211120E,0x3A3A3A2A,0x0128372A,0x7A787575,0x36A8257A,0xAC757544,0xA844B875 + .word 0xAC7A75AC,0xB8B84475,0xBAB8B8BA,0xB8B84475,0xBABABABA,0xBAB8A875,0xBAB8BABA,0xBABAB837 + .word 0x2F040806,0xB8B8A963,0x28280600,0x28112323,0x6A361122,0x36365D5D,0xA63644A8,0x5D6A6A70 + .word 0xA97AB8A8,0x6A8F9193,0x4439B8B8,0x8E8E9144,0x7539A8B8,0x95707A7A,0xB8BA31BA,0x7A7A7A75 + .word 0xA9A9A9B9,0x5D361102,0x36361111,0x5E5E3636,0x0E0E0E34,0x73606436,0x0E0E2234,0x737A750E + .word 0x11365E36,0xA961370E,0x12958E8F,0x2A110E0E,0x3A62A8A5,0x0E00010E,0x08366CA5,0x280E0E0E + .word 0x3760605D,0x0D080707,0x4460705E,0x0D000413,0x757A6C73,0x370D003A,0x77A9A86C,0x36110403 + .word 0x00A9A9A9,0x25360E06,0x060E110E,0x37362223,0x0E0E280E,0x5D5D3611,0x0E282828,0x6D3F3711 + + .word 0x7B757564,0x0E0E1175,0x1339753C,0x28280002,0x08131305,0x28230601,0x14000011,0x36282815 + .word 0x0E040E12,0x353A3636,0x050F1323,0x3544620E,0x0E152523,0x3A620D04,0x15252525,0x37150E07 + .word 0x36363628,0xB8A87A7A,0x36363628,0x7AB8B836,0x5D365D36,0x75447ABA,0x60365D5D,0x44B8B8A8 + .word 0xA860635D,0x7AB8A8A8,0x646E3A3A,0xB8B8B87A,0x63443A31,0x040F2675,0x7A754475,0xA844447A + .word 0xBABABAA9,0x3975A8B8,0xBABABAA8,0x00A8BABA,0xBABAB8B8,0x00A8BABA,0xBABABA38,0x0000A8B8 + .word 0xB875387A,0x00000075,0x0D44B8A8,0x00000001,0x00000F0D,0x00000000,0x00757A7A,0x00000000 + .word 0x75757A7A,0xA8A84039,0x00443900,0x75000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x75A8A8B8,0xBABA7A39,0x38257575,0xBAB84400,0x00000000,0x75440000,0x00000000,0x39000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0xBABA7A44,0x7AA8A9BA,0xBABAB839,0x3938B8BA,0xBABABA7A,0x757A38BA,0xBA75B878,0xA8B84438 + .word 0x2F7A4438,0xB8BAB8A8,0xB8000000,0xBABABABA,0x7A750000,0xBABABABA,0xA8000000,0x78B8BAA8 + .word 0x28362229,0x23232328,0x28363622,0x28282328,0x2836367A,0x36363628,0x3667367A,0x3A3A3636 + .word 0x368DA8B8,0x3A363636,0x60A87AB8,0x60606044,0x75B875BA,0x75627878,0x087AA8A8,0x25787875 + .word 0x11232323,0xA9782E11,0x0E232323,0x7A45150E,0x0E252828,0x02000507,0x0E252B28,0x1112060E + .word 0x0E152C37,0x3628110E,0x0E0E4444,0x3612110E,0x070E1175,0x36121211,0x07231112,0x36232312 + + .word 0x2A3A0E44,0x06113625,0x15253A13,0x06103636,0x35352F3A,0x06105E5D,0x5D5E352F,0x11065D60 + .word 0x676A6035,0x280E606E,0x6A6A6A60,0x280E0E78,0x6E686A73,0x28280E11,0x78A96E6A,0x5D362806 + .word 0xA7806009,0x6C756DA9,0xB513130E,0x230678BB,0x23282B23,0x11062D12,0x28282828,0x28230E28 + .word 0x28282828,0x5D360E11,0x35363636,0x37230E0E,0x3737365D,0x0D060E11,0x2F3E5D5E,0x06061515 + .word 0x252B3636,0x050D1325,0x35353636,0x0D151525,0x35362835,0x0744623A,0x37372836,0x113A6244 + .word 0x3939373A,0x0E253A3A,0x13254444,0x25051313,0x0D23110D,0x0E07070D,0x0E0D0D0D,0x2323230E + .word 0xB9444504,0xB87A7A7A,0xBABA000E,0xBABABABA,0xBABA0404,0xBABABABA,0xBA290704,0xBABAB8B8 + .word 0xAC0D0808,0xBAB8A8B8,0x13132525,0x44443939,0x75752536,0x75394444,0x75152536,0x13256238 + + .word 0x13A8A8A8,0x00000000,0x00A8B8B8,0x00000000,0x00B8BABA,0x00000000,0x00B8BABA,0x00000000 + .word 0x0075757A,0x00000000,0x00004444,0x00000000,0x00007A78,0x00000000,0x0000753A,0x00000000 + .word 0x7A000000,0x44443944,0x00000000,0x447A4400,0x00000000,0xB8B8A87A,0x00000000,0xBABABA44 + .word 0x00000000,0xBABAB8A8,0x00000000,0xA8B83900,0x00000000,0x757A0000,0x00000000,0x757A7A00 + .word 0x447A3838,0x04142C25,0x75757A75,0x000D1515,0x39BABAA8,0x0E111136,0x38B8BABA,0x0E0E0E45 + .word 0x7A7ABABA,0x2F232375,0x3844B8A8,0x153A372F,0x13394439,0x0E050707,0x757A4444,0x23110E07 + .word 0x0F0F0005,0x5D36230D,0x2C250D04,0x36363628,0x752C0404,0x3A3A3A3A,0x620D0504,0x60606262 + .word 0x14050504,0x75752D14,0x07070D07,0x44130D07,0x04232323,0x130D0405,0x36362323,0x13040404 + + .word 0x062C7870,0x5E5D280E,0x060D7578,0x675E3636,0x252F2578,0x5E5E605E,0x5D110625,0x4462757A + .word 0x0E060606,0xA9447A13,0x1D12140E,0x06082511,0x0F262625,0x0E0F152A,0x3B3A3A37,0x06082525 + .word 0x2E605E5E,0x060E0815,0x2A3F6E60,0x28250E08,0x7575756E,0x3628280E,0x0FA97575,0x36353628 + .word 0x0E06A946,0x36363528,0x0E060606,0x36363635,0x7E230606,0x44753A75,0x31130606,0x44467544 + .word 0x0E08230F,0x2323230E,0x110E0E0D,0x2A232323,0x23231213,0x37362336,0x36363625,0x37353536 + .word 0x3535352B,0x3A3A3A35,0x3A353737,0x3C443A3A,0x3A442C25,0x7575753A,0x44131414,0x25753A44 + .word 0x382A2515,0x7AACBAB8,0x7A2F3A3A,0xBABABABA,0xA9443560,0xB8BAB8B8,0x7A353544,0xBABABAB8 + .word 0x44003575,0x44397575,0x75360E31,0xA87AA875,0x7A37130F,0xB8B87A75,0xA8140805,0xBABABA7A + + .word 0x007AACA9,0x00000000,0x00A8BABA,0x00000000,0x00A8A8B8,0x00000000,0x000078B8,0x00000000 + .word 0x00007539,0x00000000,0x00A8A875,0x00000000,0x00B8B8B8,0x00000000,0x00B8BABA,0x00000000 + .word 0x07000000,0x62757875,0x14000000,0xA9A9A9B8,0x31000000,0xBABABAA8,0x00000000,0xB8BABAB8 + .word 0x00000000,0x75A94400,0x00000000,0xA97AA800,0x04000000,0xBABAACB8,0x07000000,0xBABABAA9 + .word 0xB8BA7875,0x2A131113,0xBABABAB8,0x14123744,0x44BABABA,0x04153737,0x3AACB8BA,0x0D2A3A3A + .word 0x60757575,0x0D39443A,0x60A6B87A,0x000D7844,0x78B8BAB8,0x23062545,0x7ABABABA,0x23230E7C + .word 0x28282825,0x13050528,0x28282B25,0x1304372B,0x2B2B2B07,0x1305043A,0x44444405,0x36050404 + .word 0x44441504,0x360E0E04,0x0202110E,0x25150E04,0x05251212,0x26250505,0x12152523,0x25150507 + + .word 0x63633A3A,0x06127575,0x62616336,0x0F0E6078,0x75625D36,0x25152575,0x75756236,0x120E080F + .word 0x13157560,0x12120606,0x08082A3A,0x25121212,0x0E0E1275,0x2F251212,0x11111111,0x622F2828 + .word 0x150F0808,0x081D1506,0x06060815,0x15061006,0x06151515,0x090D0906,0x0E2F1515,0x08080606 + .word 0x11622525,0x0D060606,0x0E2F2F2F,0x2A2A0E0E,0x0E067575,0x3A372312,0x110E0675,0x3A3A2A23 + .word 0x070E0D0D,0x0E0E0E0E,0x1313130D,0x0011130D,0x0D15150F,0x3623150D,0x15151515,0x12121215 + .word 0x362B2525,0x06362323,0x5D5D3728,0x00363636,0x36363636,0x04363A36,0x3A3A3A36,0x0E23623A + .word 0x75040806,0xB8B8BA7A,0x28280600,0xB8B8A8A8,0x7A361111,0x44447538,0x9336030E,0x7A7A447A + .word 0xB9600003,0xA8A8B8AC,0x8913110E,0xB8B8B8A8,0x24352336,0xBABABAA9,0x7A363636,0xACACACA8 + + .word 0x00A8BABA,0x00000000,0x007AA8A8,0x00000000,0x00007575,0x00000000,0x0000BA7A,0x00000000 + .word 0x00B8A8A8,0x00000000,0x00B8BABA,0x00000000,0x00A8BABA,0x00000000,0x0000ACB8,0x00000000 + .word 0x0F000000,0xBABABABA,0x00000000,0xB8B8B807,0x00000000,0x44447500,0x00000000,0x7A75BAB8 + .word 0x08000000,0xBABAB8B8,0x39000000,0xBABABAA8,0x44000000,0xBABABAB8,0x00000000,0xBABAB8B8 + .word 0x75ACBABA,0x23230E02,0x36ACA8A8,0x2B361236,0x38443839,0x37353536,0x38A8A87A,0x37624425 + .word 0xA8A8B8BA,0x753A3A60,0xBABABABA,0x150E0E38,0x13B8BABA,0x0E000225,0x44ACB8BA,0x120E0E0E + .word 0x152B2523,0x05040404,0x2C2B362B,0x07000408,0x38626237,0x2507002A,0x44756262,0x360E0403 + .word 0x00757575,0x15230E06,0x06060E0E,0x15230E11,0x0E06120E,0x3736120E,0x0E121212,0x3F3B2F11 + + .word 0x28230D0D,0x62603636,0x36361112,0x75602B36,0x36362811,0x31453A3A,0x36363623,0x0875443A + .word 0x3A3A3636,0x06157875,0x44443A36,0x060E7575,0x7575753A,0x06060E0E,0x0E080F2F,0x11281215 + .word 0x232A0606,0x75753528,0x2844230E,0xA9754444,0x752A2508,0x0E127531,0x26150F06,0x22280E11 + .word 0x11120606,0x0E282828,0x28281206,0x11112828,0x2A35280E,0x36363636,0x15252806,0x15153615 + .word 0x28282831,0x25352A2F,0x0E0E0E0E,0x0E251513,0x0E0E0E0E,0x0E150E15,0x0E0E110E,0x0E0E060E + .word 0x0E0E1511,0x000E0E06,0x0E151536,0x0000000E,0x00060E0F,0x00000000,0x00000015,0x00000000 + .word 0x0E151500,0x250E060E,0x15000000,0x0E0E0E0E,0x00000000,0x0E0E0E00,0x00000000,0x0E000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x15150E25,0x0E282815,0x1515150F,0x06062828,0x15151515,0x0E061111,0x11251515,0x0E060E15 + .word 0x36362515,0x0E0E0E15,0x36363615,0x00000E15,0x150E3615,0x00000000,0x00001536,0x00000000 + .word 0x13150815,0x06151515,0x15150000,0x0E060615,0x00000000,0x0E150E0E,0x00000000,0x0E0E0000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x06060D13,0x006C3434,0x1006080D,0x00802712,0x10080606,0xB9372727,0x12060606,0xB93A2727 + .word 0x0E06060D,0x00BB2827,0x06060627,0x00752727,0x08060629,0x00652827,0x06060E2A,0x0000770E + .word 0x00000015,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + .word 0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000,0x00000000 + + .word 0x0606132A,0x00007B39,0x060E2A29,0x00007731,0x75373713,0x00000D06,0x27342913,0x0000A9A9 + .word 0x292A1313,0x00757A06,0x06120806,0x0044A906,0x06060606,0x007AAC0E,0x11060606,0x007A1212 + .word 0x09090606,0x00A93427,0x08060606,0x0000AC29,0x0606130D,0x00067834,0x75102729,0x00010F7B + .word 0x0605060E,0x00050D75,0x06060606,0x00477506,0x06090606,0x00BB7706,0x060D0D06,0x00A93C06 + +@}}BLOCK(TextBackgrounds) diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/layers.pew b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/layers.pew new file mode 100644 index 0000000000..864ec9312a Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/layers.pew differ diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/readme.txt b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/readme.txt new file mode 100644 index 0000000000..eb3ceddde4 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/readme.txt @@ -0,0 +1,6 @@ +Maps were created using the tileset provided via the Pern Editor map software by dovoto + +Maps were exported individually using the grit export option. +Rotation backgrounds were exported with 8 bit tile indexes checked. + +www.pernedit.com diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/tiles.png b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/tiles.png new file mode 100644 index 0000000000..5c7f41b3af Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/tiles.png differ diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile new file mode 100644 index 0000000000..6d1edbe6bb --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=Rotation +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile.fpc b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile.fpc new file mode 100644 index 0000000000..090623337f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=Rotation + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Rotation.pp b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Rotation.pp new file mode 100644 index 0000000000..f20cb4b1a9 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/Rotation.pp @@ -0,0 +1,89 @@ +program BG_Rotation; +{$L build/drunkenlogo.bin.o} +{$L build/palette.bin.o} + +uses + ctypes, nds9; + +{$include inc/drunkenlogo.bin.inc} +{$include inc/palette.bin.inc} + +var + angle: u32; + scrollX, scrollY: s16; + scaleX, scaleY: s16; + rcX, rcY: s16; + keys: u32; + s, c: s16; + bg3: integer; + + +begin + videoSetMode(MODE_5_2D ); + + vramSetBankA(VRAM_A_MAIN_BG); + + consoleDemoInit(); + + + bg3 := bgInit(3, BgType_Bmp8, BgSize_B8_256x256, 0,0); + + + dmaCopy(@drunkenlogo_bin, bgGetGfxPtr(bg3), 256*256); + dmaCopy(@palette_bin, BG_PALETTE, 256*2); + + angle := 0; + + // the screen origin is at the rotation center...so scroll to the rotation + // center + a small 32 pixle offset so our image is centered + scrollX := 128; + scrollY := 128 ; + + //scale is fixed point + scaleX := 1 shl 8; + scaleY := 1 shl 8; + + //this is the screen pixel that the image will rotate about + rcX := 128; + rcY := 96; + + while true do + begin + printf(#10#10#9 + 'Hello DS devers' + #10); + printf(#9 + 'www.drunkencoders.com' + #10); + printf(#9 + 'BG Rotation demo' + #10); + + iprintf('Angle %3d(actual) %3d(degrees)' + #10, angle, (angle * 360) div (1 shl 15)); + iprintf('Scroll X: %4d Y: %4d' + #10, scrollX, scrollY); + iprintf('Rot center X: %4d Y: %4d' + #10, rcX, rcY); + iprintf('Scale X: %4d Y: %4d' + #10, scaleX, scaleY); + + scanKeys(); + keys := keysHeld(); + + if ( keys and KEY_L ) <> 0 then angle := angle + 20; + if ( keys and KEY_R ) <> 0 then angle := angle - 20; + if ( keys and KEY_LEFT ) <> 0 then scrollX := scrollX + 1; + if ( keys and KEY_RIGHT ) <> 0 then scrollX := scrollX - 1; + if ( keys and KEY_UP ) <> 0 then scrollY := scrollY + 1; + if ( keys and KEY_DOWN ) <> 0 then scrollY := scrollY - 1; + if ( keys and KEY_A ) <> 0 then scaleX := scaleX + 1; + if ( keys and KEY_B ) <> 0 then scaleX := scaleX - 1; + if ( keys and KEY_START ) <> 0 then rcX := rcX + 1; + if ( keys and KEY_SELECT ) <> 0 then rcY := rcY + 1; + if ( keys and KEY_X ) <> 0 then scaleY := scaleY + 1; + if ( keys and KEY_Y ) <> 0 then scaleY := scaleY - 1; + + + swiWaitForVBlank(); + + bgSetCenter(bg3, rcX, rcY); + bgSetRotateScale(bg3, angle, scaleX, scaleY); + bgSetScroll(bg3, scrollX, scrollY); + bgUpdate(); + + // clear the console screen (ansi escape sequence) + iprintf(#$1b'[2J'); + + end; +end. diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/drunkenlogo.bin b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/drunkenlogo.bin new file mode 100644 index 0000000000..64b34518ef --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/drunkenlogo.bin @@ -0,0 +1,866 @@ +ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ      + + + *...020000...0-% + + + +       *.23fhp‰‰‰‰£¤³ºº»¹¹¶¶·¹¹¹¹¹¶´¢¢¢‰~j^^^32-! +%**************************************!!*!!!!!!!!!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%!************++---..-*  *23fn}‡¤´´º»ÁÁÁËËÊÁÁËËÊÁÂËËÇÀÇÊÊÊËËÊËËÊÊÊÊÊÊÊÆ¹¹¹¶¶´¤‰j32.! + +-2222222222222222222200022000000000000..00......................................------------...............2.22222222222222222222-  *.3fm†²»¼ÝàäêäãààËËÊÆÆÆ¹¸¹¹¹¹·¶¹·©¥¶·¶¶¶·¶¹Æ¹··¹¹ÆÆÇÊËÎÏèèìììÏÁ¹´‰m^0%*22222333333333333333333333333333333333333333333333333333333333333333333333333333333333332222332332.....2332222222222222222222222**f†»ÝääïïäàÝÁÁÁ¹¹¹¸·¶¶¸······¶¶····ª©©ª··············´´¶······ÆÆÆÊËÏÐãèʶ¢~-*.2222.....................222...22...222.222.22222..222222222222222222222222222222222222222222222!!***.322222222222222222222222. káåäݼ¼¼¹¹¹¹¹¸¹¸··¸¸¸···´´·¶¶¶···¶¶·········¶·····¶¶·········¶´¶·¶¶·ÆÇÏè¶^ .22+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*!!******************************+.22222222!*.**.322222222222222222222222..4¼ãéäÝÁ¹Æ¹¹···¶¶¶·¸¹··¶¶¶··¶·¸·¶´¶······ª····¹¹ª¶¶ª©©·······©©¶·ÆÇÎÇ·…3 +*2+*22222222.**+.2222222222222222222222222.%0f-%.3m¤ÊèèèÏÏËÆ¹··¶·¶¶¶¶´¶¶¶··¸¸·¥¥¸¸¸·¶©·©©©©··¶¶ªª···ÆÇÇÇÇÉÕØÕÉ©z^-%!^m!*2!  +.22222222...22222222222222222222222222.%-¤¶m^.%*2^m~…£¤´·ÆÆ¹ÆÊÊÊÊÊÊÊÊÊÊÌÍÆ·ªÌÌÌÌÆÈÄȪªªÆÌÇÆÇÌÎÎÕÕÎÆ´¢…zu_3-%!.h´ô¤ +.2 .2022202222222222222222222222222222222.*é¾Áʶ~f.**.23^juu„‰¢¥´¶¶´¶¶··¶¥¥¥····©¥¥¥¥ž¢¥¥¢¢¢¢¢¢ž„u_32-%-f†Âôôôôj .2 +-2000000000002222222222222222222222222.*mÛººº¸¹¹¹´f3.!%*033333^^^^33^__jj_^^^^331000---* *2^u´ÝääåâÞàó^ +22 +-200...0000000022222222222222222222222.* mË´´¸¹¹ÊÁÁÁ¹º¤‰†~mf^32.*!%%%***-.2^jm~‰¢´¹ÏééäÞÞáÛé2!2.!!!!!!!!! +*2.000000....0000022222222222222222222..  jÊ´´¶¶¶¹¹¹ÊàééééééèÏÊÁ¶¢†}nmmmkkjjf^^^^^^^^^^fjjjmuv„„„‰¤´¹ÏÏèèÐÏÏÎËËËËÝÝààá.*2.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +*3233333332220.000022222222222222222222.  ^Ç¥¥´´´¶···¹¹ÊÊÊÊÊËÏãèèèìóóóóóóóóóìèÖèèèèèèèèèèèèèèèëëëèèèÏËÊÊÊÇÇÊÊÊÊÊÊËËÝàá¾*+2.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -^33333333333200..000222222222222222222.  3Æ¥¥¥´¶¶¶¶··¸ÆÆ¹¹Æ¹¹¹Ç¹¹ÁÊÊÊÊÁÁÊÊÁ¹·ÆÇÇÆÆÇǹ¹¹¹¹¹¹¹ÆÆÆÆÆÇÇÆÀÆÇÇÇÇÇÇÊÊÊËËËÛéé².2.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!-^333333333333320..00022222222222222222.% 0·¥¥¥´¶¶¶¶······¹¹Æ¹¹ÆÆÆÆÆÆÆÆÇÇÇÁÆ·ªÃÅÆÆÃÆÆ¹¹¹¹·¹··¹ÆÆÆÆÆÆÆÆÆÇÇÇÇÌÌÊÊÊËËààéã‰.2.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%-^3333333333333330..00022222222222222...% 0·©¥¥¥©©©©ª····ÃÃÃÈȪ··ÆÈÈÈÈÀÇÇÆÇÆªªÈÄÃÃÃÃꪪªªªªÈÈÆÈÆÆÇÇÇÈÇÇÇÌÇÇÌÌÊÊËËÏÏèã†22+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%,^33333333333333332..0002222222222222...%-ª¥¥¥©©©¨©©ªªªªÃȪªÈÈÈ®ÈÈÈÈÈÈÈÄÄÈÈ©©®È®®®®®®®®ª®ªÈÈÈÈÈÈÈÈÇÉÈÇÇÇÌÇÇÉÉÌÎÎÍÏÏèã„ +22*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%,^333333333333333332..00022222222222....* *ž¥¥¥¨¨¨¨©©®®®®ÈÈ®®ÈÈÈÈÈÈÄÄÄÄÈÄÄȨ§©ÈÈ®®®©©®®®®®®ÈÈÈÈÈÈÈÈÈÈÄÇÇÇÇÇÇÉÇÌÎÌÍÏÏèè +22*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%% &33333333333333333332..0002222222222....* z¨¦¦¦¨¨¨¨©©®®®®ÈÈÈÈÈÈÈÈÈÈÄÄÈÈÈÄ®¦¦©ÈÈ®®®®®®®®®®®ÈÈÈ®®®ÈÈÈÈÈÄÇÇÇÇÇÉÉÌÌÌÍÔÏèè~ +22*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%%% &333333333333333333330..00022222222....2- x¨¦¦¦¦¨¨¨©©©®®®È®®ÈÈÈÈÈÈÈÈÈÈÈÈÈ®¨¨­®®®È®®®®ÈÈÈÈ®®®®®®®ÈÈÈÈÈÈÈÈÈÉÉÉÇÌÌÌÔÔÏëèv +22!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%%%% &3333333333333333333310..00222222222....- w¨¦¦¦¦¦¦¨¨©©©®®®®®®®®®ÈÈÈÈÈÈ®®®®­­­®®®®®®®®®®®®®®®®®®®®ÈÈÈÈÈÈÈÈÉÉÉÉÌÌÌÓÔÖëÖu +22!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%%%%%  %3333113333313333333332..000222222222.... x¦¦¦¦¦¦¦¨¨¨¨©©©©®®®®®®®®®®®®®®­¬­­®®®­­­®®®®®®®®®®®®®®ÈÈÈÈÈÈÈȱ±±ÉÉÌÌÌÕÖèÖu 22!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%%%%$%%  +%133^^^jjjjj^33333333330..00222222....... %{¦¦¦¦¦¦¦¨¨¨¨¨¨¨®®­­®®®®®®®®®®¬§¬­®®­­­­­®®®®­®®­®®®®®®®®ÈÈÈÈÈÈÈÈÉÉÉÌÌÎÍèÖm 22!!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%%%%%$$$ +%3^^jlmmmkk||f3333333331--.00............% ""*ž¦¡¦¡¦¦§§¨¨¨¨¨­­­­­­­®®®®®®­¬§¬­°­­­­¬­°­­°°­°°°°°®®®®®ÈÈÈÈȱȱÈÉÉÉÌÌÌèÖj 22!!!!!!!!!!!!!!!!!!!!!!!!!!%%%%%%$%%$$$ -m~|m^3.*%*2jv^3333333330-.--...........2*!+/////////4444/#,¦¡¦§§§§¨¨¨¨¨­­¨­­­­­­®®®­§¡¬­­­­¬¬¬¬­­­­­­­§§°°°®®®®ÈÈÈÈÈȱÈÈÈÉÉÉÉÌèÖj 22!!!!!!!!!!!!!!!!%%%%%%%%%$$$$ -fj3.* +*mu3333333331-.2^ffkkff32..3hk44444444444/2./4g4# -¦¦¦¦§§¨¨¨¨¨¨¨¨¨­­­­­­­­¬§¡¬­­¬¬¬¬¬¬¬¬­­­­­§§°°°°®¯ÈÈ®ÈÈȱ±ÈÈÄÉÄÄÑÉÙÕ_ 22!!!!!!!!!!!!!!!%%%%%%%%%%%$$$%*^3% +3v^113331113^fkkfffffkkkffnk3*!!!! +4g/ 3¦¦¦§§§§¨¬§¬­¨¨­­¬­­­­¬¡¡¬¬¬¬¬¬§¬¬¬¬¬¬­­­¬­°°°°°¯¯¯®®®®ÈÈ®®ÈÈ®®ÄÒ×Õz 2.!!!!!!!!!!!!!!%%%%%%%%%%%$$$$$33 +*.3nŠ^ +-|m^^^f^^^^mmk3.*!.3fnnh. 3g/%wxxxxœœ¦¡¦§¨§¨¨­¬¨¨¬¨¨­­¬§¡¡¬¬§««§¡¡§§¬§§¬¬­­­­°°°­®®®È®®­®®®®®®®®®ÄÕÌ©%+.!!!!!!!!!!!!%%%%%%%%%%%%%%$$$$$$%^**^»áôôôn%jmmmnnn|~l3! +23*  .2!  /g/%_œwwwxœ¡§¦¦§¬¬¬¨¨¨§§§§¬¡œ¡§¬§§§¡¡¡¡¬¬¡¡§¬¬¬§¡§¨¨§¨©©®®©­©©®®®®®®¨®ÇÊÒ-!+!!!!!!!!!!%%%%%%%%%%%%%%%%%%$$$$$$$&^!k¾óíôôôôn + +.^^3--.3^3* +  + +.nns‚ƒ³+2“Üá»n44"&:````wxxœœ¡¡¡§§§¬¬§§¨§§§§œœ¡¡¡¡«¡¡¡¡§§¡¡§§§§§¡§¬¬¬§¨¨¨¨¨¨©©­©­©¨¨¦¨®®°1 +*!!!!!!!!!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%$$$$$&^}íôôôôôô| + + + +3nŠŠ}^! + +fôííðôôô4+¿ôôôôá‹ +g/ ([[::```wwxœœ¦¦¦§§¨¨¨¨¨¨¨¨¨¬¡œ¡¡œœ¡«««¡¡¡§§§§¡§¨¨¨­®®¨¨©©¨©¨¨¨¨¨¨¦xœœœ: !!!!!!!!%%%&&&&&&&&&&&&&&&&&&%%%%%%%%%%%%%%%&&&&&&%%%%%%%%%%%$$$$$$%&&&-^náôôôôôô} + + +3Šíôôôôôíº3 + +hôôôôôôô“²ôôôðôôôo  44)cV999:::```wwxx¦¦§¨¨¦¨¨¨¨¨©¨§¡¡¡¡œ¡§§§¡¡§¦¡¨®©®®®©©¨¨©©¦¦œœ``:99:[e(!!!!%%%%&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%%%%%%%%%%$$$$$$$%&013333^káôôôôôô +%-2kf* +níôôôôôôôôôí^ + +3ôôôôôôíóôôôôôôôôÛ..4# $[cXN=88899::````xœ¡¦¦§§§§¨¨¡œœœ¡œ¡§§¨¨©¨«¡¡¨¨œœ```:986669[e) !!!!!!!*--**!%*,,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&%%&%%%%%%%%%%$$$$%&&-3^f^33^30fáôôôôôô†-ºÚíô»- +kôôôôôôôôôôôô».3ôôôôôôôôôôôôôôôôôf!4/ ([cSI@@====8999::```œœ¦¡¡¦¡œœœœœœœœœœœœœœ`œœœœœœœ¦¦œœœœ`:99988866689Kb) + !!!!.^hfffffff^^^^^310,&&&&&&&&&&&&&&&&&&&&&&&&&&%&&%%%%%%$$$$$$%&-13^^ff^2*fáôôôôôô†môôôôô² +2áôôôóôôôôôôôôô†2ôôôôôôôôðîôôôôôôô4/)[\SIAA@@>======99[[::``````œœœ`````````````````````````````::::[[86666688=LK99[9 !!*2ff2...23333^^^^ffff^0&&&&&&&&&&&&&&&&&&&&&&&%%%%%$$$$%&&&-13^^^^^32-*%fáôôôôôô†²ôôôôô| +}ôôôôôôôôôôôôôôÛ. +.âôôôôôôÜi4áôôôôóô“ 44 9[VLIIA@@@@@@>>>===MMKKK[[:::[[:98999999999999999999[[[[[[K99KKKM=66;==LMM9KKKK[9$ !!.ff* +%*03^ff30&&&&&&&&&&&&&%%%%%%%%%%%&&&,-1133^^^^^3-*!-*fáôôôôôô†-ºôôóôé^-»ôôôôôᆆÛôôôôôá|.Ûóôôôôô¾+ »ôôôôïôº+249aVLIIA@@>>>@@A=AIIILLMMMKMM9MM866686666666666666666MZZMMMZMZSSMB=======MMKKKKK[9( !!3h* +%3j^0&&&&&&&&&&&&&&&&&&&&,--013^^ff^332-% +2¼æ¾kfáôôôôôôŠ^Úôôóô»-^áôôôôôÛ2.²ôôôôôí³*¼íôôôóôÛ.Ÿôôôòôô¾2.4"K\TIHI@@>>>>@AA=ALLLLMMMMMMMMMM=666=666666666666;;6=BMMMMMMMMMMMMB===86=MMKKK9K[[( !*44332*! + +0j^-%%%%%%%%%&&--0013^^^jjf^^30* + + +*2* +3çííôôÛ} +^ÛôôôôôôŠ!|áôôôôŠfñôôôôôÛ3*†ôôôôôôÚ*%ºíôôôôôá2†íôôôôôÛ^ +.4"$K\TI@@@@>@>>>=A=ALLMMMMMMMMMMMM=;6;==6666666666666===BMMMMMMMMMMMM====8=MMMMKKKK[) !.^2.ÛÚ¾»ºº³²Š†|k3+.l^0-0113333^fffff^^^32.-*% +*3f}Ÿ¾º^^ºôôôôôôí. +3ÛôôôôôôŠ.²ôôôôô| +nôôôôôôÛ3!ôôôôôôí2²íôôôôôí3 +}íôôôôôák-k4 $K\NIA@@AA@@@@===ALLMMMMMMMMMMMM=;;===66666666666688==6=MMMM=BMMMMM==========K9KK[) +!.f. +3ôôôôôôôôôôôôôỆ. +.fj^^^^^^^^^32.--*% + +!.%^ÚáôôôôôºÛôôôôôôôô^3ÛôôôôôôºfÛôôôôô^ + +|ôôôôôôÛ^nôôôôôôô^‡íôôôôôôf +káôôôôôí}*ml3+  $9ZLAA@@AAAAAAA=ABLLLMMMMMMMMMMM=;;===666666666666===;6=MMM===MMM====8=======889K[)  !2f*4ôôôôôôôôôôôôôôôôá2 +*322.-**** +*2^k»áf‡ôôôôôôôôôôôôôôôôôk3ÛôôôôôôÚŠíôôôôÛ. + +|ôôôôôôáknôôôôôôôfæôôôôôôk +^Ûôôôôôô†!ku^^3+ $9ZLIAAAAA@AAAAAALLLLLLLLNMMMMMB;7;==;;66666666666;====BMMMB=BMMM=6==========88KK[)  !2f!fôôôôôôôôôôôôôôôôô¤ + + + + +*2^ +f½ôôôôôôf|ôôôôôôôôííôôôôôôô| +3Ûôôôôôôíáôôôôô²! + +|ôôôôôôíŠ^Šôôôôôôôk +náôôôôôôn3¾ôôôôôô²f|^3^^.9ZMLIIAAAA@@AAAALLMMMMMMMMMMMM=;7;==;;666666666666======BMMMMMMM=====666====8=KK[) + !3f +nôôôôôôôôôôôôôóôôô¾2 +2*.k}Šº¾Ûá- +†éôôôôôí^}ôôôôôôí¾k‡ôôôôôôô| +3Ûôôôôôôôôôôôôô} +|ôôôôôôôíÛáôôôôôôô| +fáôôôôôô2»ôôôôôôº!^|^33^^29ZMLLIAAAA@@AAAALLLMMMMMMMMMMM=;7;====;66666666666=======LMMMMMMBB===;66=8888=999) + !3^ôôôôôôô¼†³íôôôôôôá^.223^km2Û3*íôôôôôô- +Šíôôôôôé3}ôôôôôôá}^ôôôôôôô2Ûôôôôôôôôôôôôí3 + + +môôôôôôôôôôôôôôôôô^áôôôôôô†-ºôôôôôô½*3~^333^^. 9KMLLLAAAA@@AAAAALLLLLLMMMMMMM=6;=====;666666666;;======BBLLBBBBBBB=====8868=M999( *43Šôôôôôôô%2áôôôôôôáf^íÛááíôôn+|ôô3*³ôôôôôôé* +Šíôôôôôé3}ôôôôôôáf2ôôôôôôô†.Úôôôôôôôôôôôôæ. + +kôôôôôôôôôôôôôôôôô³3áôôôôôôŠ%²ôôôôôôÚ0 +3~^3333^3  )KMLLLA=AA@@AAAAABLLLLLLLLMMMM=6;====;;666666766;==66;=BB====BB=B===========KMK99( *^3 !ºôôôôôôô| +!áôôôôôôá^}ôôôôôôô|†ôôô2*³ôôôóôôá* +²íôôôôôí3}ôôôôôôáf2ôôôôôôô‰.Úôôôôôôôôôôôôí3 + + +fíôôôôôôôíííáááÛÛÛ‰2Ûôôôôôô²*ŠôôôôôôÛ3 + +2}^3333^^. +)[ZLLLA=III@@AAAAABBLLLLLLLMLB;6;===;=6666666666;==66;BBB=6;=B============LKKKKK9( !.^3 ++¾ôôôôôôôl.áôôôóóôÛ3|ôôôôôôô¾áôôô2*ºôôôôôôÛ%³íôôôôôí3 +ôôôôôôá^2ôôôôôôô†2Úôôôôôôôôôôôôók^íôôôôôôí¼²†|kf^3..Ûôôôôôôº-†ôôôôôôÛ^.|_33333^. (K\MMLAAIIIIIAAAAAAABBAAALLLLB;7;==;;;66666666666666====B=======;;====;=B=MKKKK9:$ %.f2 +2áôôôôôôôf +2áôôôôôôÚ3 +ôôôôôôôíôôôô.*¼ôôôôôôÛ%³íôôôôôá3 +†ôôôôôôá^2ôôôôôôô†2ÚôôôôôôôôôôôôôŠ^áôôôôôóß3 + +-¾ôôôôôô»2ôôôôôôáh-|j^3333^2 9]SKNIILIIILIAAAAAAAAAAAAAAB=676==6;;;666666;;;666=================B==BMM=MKK99) + %2f.3íôôôôôôô3 +3íôôôôôô¾2†ôôôôôôôôôôôô.*Úôôôôôô¾»íôôôôôÛ2 +†ôôôôôôá^2ôôôôôôô†-Úôôôôôôôôôôôôôá. +3áôôôôôôÛ%***.222*¼ôôôôôô¾3 +nôôôôôôá}*mj^3333^3  )[\KNLLLNQIILAABAAAAAAAAAA=A=676==;;;;6666666666666===========BBBB=ABBLMM=MK99:$ +3f*fôôôôôôôô2 +kíôôôôôô»*Šôôôôôôôôôôôô*-ßôôôôôô¼¾íôôôôôÛ2 +†ôôôôôôá^2ôôôôôôô†*¾ôôôôôôôôôôôôôôf +3Ûôôôôôôí*nÛÛáíôôí2ºôôôôôôÛf +fôôôôôôí‡*kj^3333^3 9cKMLSLNPPIBLAABABAAAAAAAA@=77;======;;66666666=====================LLLKKK999)!3^kôôôôôôôô- +}íôôôôôô³!²ôôôôôôôôôôôô*-éôôôôôô»¼íôôôôôÛ2 +†ôôôôôôá^2ôôôôôôô‰*¾ôôôôôôôôôôôôôô}2¾ôôôôôôô*†ôôôôôôô3Ÿôôôôôôák +^ñôôôôôí³%%fm^3333^3+ )cZZSSLLIPILLAABAAAAAAAAAAA;77;=========;==66======================BBMMKKK999$ +!3^}ôôôôôôôò* +†íôôôôôô²%³ôôôôôôôôôôôá%.íôôôôôô³Úôôôôôôß2 +†ôôôôôôá^2ôôôôôôô²*¾ôôôôôôííôôôôôô¤%2¾ôôôôôôô.nôôôôôôô3†ôôôôôôí| +3íôôôôôí»*^m^3333^3 9]ZZZNNIIILLAAIAAAAAAAAAA@;77;==================================B=BLMKKKK99:!!^4 †ôôôôôôôá²íôôôôôôŸ*ºôôôôôôôôÛn3- +3ôôôôôôô²ÛôôôôôôÛ2 +†ôôôôôôá^2ôôôôôôô²*¾ôôôôôôá»áôôôôôÚ2.»ôôôôôôô2fôôôôôôô^íôôôôôï +2ÛôôôôôôÚ-^m^3333^2(b[ZZTNNNLPLIIIIAAAA==AAA=;77;==============================B===BLLMMMMK9::( 43 +Šôôôôôôô¼¼íôôôôôô‰.¼ôôôôôôô¼3 +^ôôôôôôôŠáôôôôôô¾.Šôôôôôôá^2ôôôôôôô³*¾ôôôôôôÚºíôôôôôk*³ôôôôôôô3fôôôôôôôfníôôôôôôŠ.½ôôôôôôí23u_3333^2 9[[ZTTTTLLPII@IAAAAA=AAA=676===================================LLMMM=M99:: !42!²ôôôôôôí²Ûðôôôôôô2Úôôôôôôó3^ôôôôôôô† +áôôôôôô¼.Šôôôôôôá^2ôôôôôôô²%¼ôôôôôô¾kÛôôôôôŠŠôôôôôôô3 +3ôôôóôôôf +káôôôôôô³*ºôôôôôôô32nj333^^+ +)[aZZVTTTTLPIAAAAAAAAAAA=776==================================BBBMK99999:) ++^2.»ôôôôôôí† +éôôôôôôô|3ßôôôôôôá*fôôôôôôô† +íôôôôôô¼.Šôôôôôôá^2ôôôôôôô²»ôôôôôôÚmf¼ôôôôôº*†ôôôôôôôf3ôôôôôôô^ +^Ûôôôôôô»%¤ôôôôôôô^ +.mj333^3  ([cZVZTTTTTLLLAAAAAAAAAA=77;==================================BLLLK9999[9$ +!. 4.2¾ôôôôôôí}*ôôôôôôôôl^áôôôôôô¾%fôôôôôôô}íôôôôôô¾.Šôôôôôôá^2ôôôôôôô²ºôôôôôôÛk2²ôôôôôÚ3|ôôôôôôôŠ^ôôôôôôí3 +3Úôôôôôô½%†ôôôôôôôf + +-mj333^.[da\VVVXXTLLLAABAAAAAA=;77;=>>>>============================LLLMMKK999e).2!.f.4áôôôôôôíh.ôôôôôôôôffíôôôôôí³lôôôôôôô| +!ôôôôôôô»*Šôôôôôôá^2ôôôôôôô²»ôôôôôôÛk†ôôôôôí3ôôôôôôôæÛàôôôôôôº* +2¾ôôôôôôÚ*}ôôôôôôôn*lj33^3 9dca]\WXXNLIIIIIAAAAAAA;77;================================LLLMMMKKK[ee)232.....^h* +kíôôôôôôí^ +3ôôôôôôôô^ +nôôôôôôí¤ + +}ôôôôôôô|.ôôôôôôôº*Šôôôôôôáf3ôôôôôôôº!*»ôôôôôôák +kôôôôôô»!¤ôôôôôôôôôôôôôôôf +.»ôôôôôôÛ2môôôôôôô%jm^^3+ )ddcc]YXXXNIIIIIIAAAAAA;77;=============================BBBLLMMMMK\[[e[(!222332..ff! }ôôôôôôôí2 +fôôôôôôôí3ôôôôôôí‰ +ôôôôôôôl.ôôôôôôôº*²ôôôôôôáf +3ôôôôôôô¾**»ôôôôôôál3íôôôôôÛ23áôôôôôôôôôóôôô»* +*ºôôôôôôß3fôôôôôôôŠfm^3+ )cdcc]]YYXXQIIIIIAAAAA=;77========================AABBBBBLILLLMMMV\a[e[$ *22223+ + +.3 +†ôôôôôôôí. kôôôôôôôá3†ôôôôôôí† + +}ôôôôôôôf.ôôôôôôô³!²ôôôôôôáf3ôôôôôôôÚ-ºôôôôôôín*¾ôôôôôákkáôôôôôôôôôôôÛ3 + +*ºôôôôôôáf^ôôôôôôô³*^v^+(cdc]]]]YXXXQPPIIIIIIA=677=====================AAAAAABBBLLLLLLNVVV\a[e9 *22223*+.²ôôôôôôôá! }ôôôôôôôÛ2Šôôôôôôá ôôôôôôôf.ôôôôôôô³!²ôôôôôôáf +3ôôôôôôô¾-³ôôôôôôí} +¤ôôôôôôº! +3»ôôôôôôôôôº2 + + +ºôôôôôôô} 3ôôôôôôô¾-^m/(bdcc]]]\XXXTQPPIIIIIA=677=A========AA======AAAAAAAAIIBLLLLLLNTTV\\[[e9 +22223*.. +ºôôôôôôôÚ*»ôôôôôôô¾-²ôôôôôôán +†ôôôôôôô3.ôôôôôôô²²ôôôôôôáf +3ôôôôôôô¾+ºôôôôôôô‰}ôôôôôíß. + +*f†¤º»ºŸ†f* + + +2f^fkn}3.»»¾àíôôô334"$bdcc]]]\WXQQQPPIIIIIA=777=AA=AA=========AAAAAAAAAAAILLLLLLLLTTTVV\[[b).22223* +4.*¼ôôôôôôôÛh†ôôôôôôôô²%ºôôôôôôÛf‡ôôôôôôôf^ôôôôôôô¤²ôôôôôôáf3ôôôôôôôÛ-¼ôôôôôôà}3¼²Šnkf% + +*-*-2* + + + +*.23fn†‰.3/[dcc]Y\YXXXPPPPIIIIIA=;77=AAAAAAA=======AAAAAAAAABIILLLLLLLLTTTVV\[[e) +.32223*.k2.¾ôôôôôôôôôôôôôôôôôô†*»ôôôôôôÛf +%²ôôôôôôôŠk²ôôôôôôô¤²ôôôôôôáf3ôôôôôôôÚ-ºôᾺŸ†k2% + + + + +%2m†j- + + + + + + + + + 4/[dcc]YYYXXXPPPPIIIIPI=;77;=AAAAAAA=====AAAAAAAAAAAIILLLLLLLLTTTVV[[[[) +.22222+.4n2 +3Ûôôôôôôôôôôôôôôôôôô| +-¼ôôôôôôÛ^ +!²ôôôôôôôíáíôôôôôôô²%³ôôôôôôíf +^ôôôôôíÛŠ*3^2*% + + +%3ff3**3j|ljnm^2*!***% + + + +g/ 9dcbaYY\XXXPPPPIIIIPI?;757;AIAAAAAAAAAAAAAAAAAIIIIIILLLLLLNNTVVV\[[[[( !233332.2f}. fôôôôôôôôôôôôôôôôôôô4 +.¾ôôôôôôÚ3 + +Šôôôôôôôôôôôôôôôôôº%*¾ôôôôôôÛf.³}nf32.% + + + +**.23k~v||mkf^^^fkm||j^^fu|l^3fjmjjjff^3330*!2g4" )dcbaY\\XXXTPPPIIIIIIA;7757;============AA==AAAAAAAAILLLLLLLTTVVZZK[[( !232222.2^}2.f†²»Úáôôôôôôôôôôôí3¾ôôôôôô¾2 + +kôôôôôôôôÚ¾ôôôôôôô²*†¾Ÿ†nf3* + +%*.23^^fffjlm|~vj^^_mtvv|vvul^^3111130%,^m|muuvvy~vif4444g4#)dcca]\VVXTTTPPPPIIIII>;7555776;;;;;;;;;;;;;;;;;;;;;;;;;;;;;=======99$!*!**!+f4 ++2f|†²º¼ÚÚÛÛÛ³f3ÛôôôôôôÚ- +*²íôôôôí²3fÛ¾¼º²ŠŠ3** + +%*-.0233^^ffff^^^^^3330-&&&&&,----,,&&&&&&%$ +033333^^332##////#)edc]]YWWXTTTQPPPPIIIPA;;7755555555555555555577777777777777777777766)  + + + + + + + +*f2 + ++23^^2 +3¾ôíñôôô»!!-*Úíí¼%2.* + + +%*.23^^^^33310,&% + + + +,3333^^32 (edcc]YYWXNTQPPPPPIPPII=;7775555555555555555555555555555555577777766' + + + + + + + + +.f3. + + ++..2333. +2k-!.- +%*.2333333320-&%% + + + + &3^^^^2. (edca]YWVVNTQQPPPPIIPIII=;77555577777777777777777777777577777777;;66'   .33332..! + +*% +*jjf. +!+.2003^fl|}~}}}m^-%% $,1332+ $bdc]]YYVNNTTQQPIIIIIIIII@=;77777777777777777777777777777;;;;;;;=8==) !!!!*23^ff^^332.-***-23^^2 + +*^^-3f3* + +!*---.2233^^^3^n|mjf^323^^, $%%%%%%%%%%%%%%%%%$$$$$$$$$$$$$$$$$$$%%%&-1^jjf4/"$[dc]]YYWNNTTQQPPIIIPIIIIIIA=;;;;7777777777777777<<;;;;;;;;;;==?=9KZ) + !!!!*-2^^jf^^^^^^^303f^30----*-03f^&$0^f^3023^^^^^^^^3310&&%1f^0% + +%^^-$$$%&&&&&&&&%%%&&%%%%%%%%%%%%%%%&&&,-0000113^l|nif444//#"9dcc]YYWVTTNQQPPPIIPPIIIIIIIA====;;;;;;77777777777777777;;;;;===8=Z' %&&&&&,---&%%$%-3^^^^^^^^^^3,$%&03^^^^30,&&&&&%%%$$$&^^ +%^^%%$$%%%%%%%%%%%&&&&&&&&&,,01133^^^j|v~vj^33f}o4.+!!++24g4#9dbaaYYYVXXTTQPPPPPPPPPIIIIIIIIIAAAAA======;;;;;;<;;<;<<;;;;;;;8=K[( ...+***! + + + + + + + + + + + + + +%%%%%%% +%&&&,-0--,&&&&&&%%%%%%&3f*** +3^&%&,&&&,-111110-0113313^m|~~v~||||l^3^mf/4o4!  !.4g4# 9dbaaYYYXXXXXTTTQNIIIIIIILIIIIIIIIIILLIIIIIIAAAAAA==??????===BMKK[[$ % +%**% +$$$$^33n|†Š¼³20^-&&03^fffff^3-%%%&-^vmf3322...** +4g4g/   .gg/ )dcaaYYWXXXXXTNNNNIIPIIIIIIILIIIIIIIIIIIIIIIIIQQQJJJQQQXXVVV\Oab[[K +*****%%*0233333332-% +  ^.*Ûôôôôôô^-j1&*03332..23332*-f3%4i2 .4ff42! !4g/(dcba]YWVVXXXTNNNNPIIIIIIIIIIIIIIAIIIAIIIIIIIIIIIIIJJNNXVVTV\\a[[[9 !+++***!******,-,,&&&&-1^jj^30*%%%*-3jj3&%%%%%%%%%$$$$$$$$$$$$$$$$$$%,2f-*¼ôôôôôá^-f3,,^lf2% + + +%.^l^00j^ + +.!.*†áôôôôô¾f! 4g/(ddba]]YWXXXXTTNNNLLLIIIIIILLLLLIAIIIIIIIIIIIIIIIILIILLLBBBBMMMMKK9 *....*-^j^.% +%2j3  &3ff^2*¼ôôôôôá^*3-,^|3% + +2jj^f0*.23^n^ +kÛ^ + +†íôôôôôôôá³4 4g#(ddca]\YWXXXTNNNNNNLNIIIIIIIILLIIAAAAAAAAAA==========DDC;=====BMK9) *..2.* +.^3* +.^*%-223322.*.^3.% *¼ôôôôôíf%2-3l3.22*-f~m*^¼»¾Úáôº!ºô²fôôôôôôôôôôôÞo 4g#$edcbYYYYXXTTNNNNJJQTIIAAAA>=========;;;;;;;;;;;;;;;;;;;==?BMMMK[9) + +...-*%!!23.*23fmkf223 *2222....2222* +.4.!»ôôôôôôf3^f2 +*fмÛÛ¼‰k. + +*k|-fôôôôôôáff¾ôá. +ôôôôôôôôôôôôôr !f4[dcbaYYYWVTNNNNJNNILA==;;;;;;;;;;;;;;;;;;;;;;==?==???ABBLLMMVTKK9) +....-****!33% 3ŠÛôôôôôôô†*3*.332* *2^3 +.^* +!»ôôôôôôk^k22³ôôôôôôôôÚ^ +*3- +!³ôôôôôí³ŠÛôín + ôôôôôôôôôôôôôôn +g/[ddba\\WWVTTXXXTNB?==;;;;;;;;;;;;;;;========?AAAAAAAABBBBBB==MK[9( +...0-!*-,33f»íôôôôôôôôôôŠ .23^. +334.^†²²3*»ôôôôôô|34 +.Ûíôôôôôôôôôé^ +** +ôôôôôôáÚáôíºnôôôôôôôôôôóðôôÚ4 44#9ddaa]YWWXXXXUTB?====;;;;====???AAA=AAA=========;;;;;;;;;;==BMK[9$ +0.-.*!*0,332³ÛôôôôôôôôôôôôÚ.+^.33 +*.*3232!†áííôÛ†kÛôôôôôô}.. +†ôôôôôôôôôôôô¼2fôôôôôôôíôôôô2^ôôôôôôá}ºôôóôôô¼!!g/ +)ddaa]YYWVXXXQ?;;;CC=;;;==;;;;;;;;;;;;;;;;;;;;;;;;;;;;D??BBMVVZ[9$ +0---**-1,2^ +4áôôôôôôÛíôôôôôôÛ2*kf23n†²º»º²}.!^^f!Šôôôôôôôáíôôôôôô† !3ôôôôôôôôôíôôôô² +2íôôôôôôôôôôôn +.Úôôôôôí*.¾ôôôóôôs 2g# (ddba]YYWXXXXE;<=;75555557777777777777;LMTVV\[[K)-1330,,-0-^%³ôôôôôôô² íôôôôôôô +†ôôôôôôÚ*†ôôôôôôí. +|íôôôôôôk-¼ôôôôôôº%†ôôôôôôô2%†ôôôôôôôf +fÛôôôôôôôôí³n3 + + +kíôôôóôô¾3 +!4/ :cccaaYWWXA;77;BLLAAAAAAAAAA====;5555555555555777<;;?LLNVVVVK[K(03130---- +%^2 +kíôôôôôôí2^ôôôôôôôô^.»ôôôôôô¼.¾ôôôôôôá* +íôôôôôôf*¼ôôôôôô»*†ôôôôôôôf!nôôôôôôô} + +.¾ôôôôôôôíŠ! + + + +²ôôôôôôôô³. +g4 :bcbaaYWWX?<77DBLAAAAAAAA=AA====;7577777<;;;;==AABLLTTNTVVV\K[9(13130,,--2^%!ºôôôôôôô½ n¾²ŠŠŠŠ n +kíôôôôôô² 3íôôôôôôÚ! +Šíôôôôôôf-¼ôôôôôô¼* +ôôôôôôôººôôôôôôôгôôôôôôôí3 + +3áôôôôóôôíÚ2  2g/" +:bcbaaYWWXD<7=K988888888888888888888888888888888899999KKKK[[999: *******,-000000000000000000000000000--**************************************************!*-------,--,---,--,,,,,,,,,,,,,,,,,,,*%%%%%%!!!!!!!!!!!!! + 4ôÅ:'7>FPVbaOKKKKKKKKKKKKKKKKKK989988888888KKOOObaVK99999( + *+-******--00000000000000000000000--*****************************************************!*,------------------,---,---------,*!!!%%!!!**!!!!*!!!!!!!!!!!!! +*Þô´:''76=VcccaOOOOOV\VVVVVVOOOKKKKNNNK9999KOaaOO88):::)) + ++**********-0010011111100000000--**********++++++++++++++++++******************************--0000---,,,,,,,,,,,,,,,,,,,,,,*%%%%%!!!!!!!!!!!!!!!!!!!!!**! + påôÇw0(''6=NYaYaaaOOOOOOOOOOOOO\VVVVV\KKKOOOVM98)1^ww:- *.-+++**********&&&,,,,,,,,,,&&%%%%%!!!!!!!!!!!!!!!!!!%&&&&,,---,,,,,,,-,,,,,,--,,*%%%%%%*!!!*!***!****!******!!*!!  !´ïßÇ©{^(''6=V\aaaOOOOOOOO\\\\\aOOOOOO\\OOK988))_{ž{w:, + +-.*+++*******% + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + %,,,,,,,,,,,,,,,,,,,*%%%%%%%***********************!!**% 2Ëôƶq_:))8888JUOOO]]Y]]]]]aYYYY\OWUH88)):_w{‰‰‰…¦^*++********* + +&,,,,,,,&&&,,&%%! + + +1»é»Œ–”†q___:::9988888888888888888899::_z……€„^   + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + *³´Ÿˆƒ’››—Œƒu__^::::::)::::::::^jt„¤•˜“rqqw_0 + + ^y{zzqq€‘‘‘™µµµš™–•‡†„„„{{†ƒƒ‡Ž³²²qn|mu_^% + + + + + + + + + + + + + + + + + +  3z{_02f|„‰¤¤²•³º´´•˜³•²“ž…†„ujjuuu^* + + + + + + + + + + + + + + + + + + +-^^33313^hsƒ‡“••‰£¤…q_^^j„…zzz_1* + + + + + + + + + + + + + + + + + + +  %,1^^33^fffffnxw__``_3111::__^10, +    + + + + + + + + + + + + + + + + + + + + + + +  -.20-0-,-01:))11)(($$())(( + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +   +%,,($$%($$ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +     + + + + + + + + + +        ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ \ No newline at end of file diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin new file mode 100644 index 0000000000..1841883765 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin differ diff --git a/packages/libndsfpc/examples/graphics/Makefile b/packages/libndsfpc/examples/graphics/Makefile new file mode 100644 index 0000000000..b664efffa3 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Makefile @@ -0,0 +1,1575 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=3D Backgrounds Printing Sprites +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_3D=1 +TARGET_DIRS_BACKGROUNDS=1 +TARGET_DIRS_PRINTING=1 +TARGET_DIRS_SPRITES=1 +endif +ifdef TARGET_DIRS_3D +3D_all: + $(MAKE) -C 3D all +3D_debug: + $(MAKE) -C 3D debug +3D_smart: + $(MAKE) -C 3D smart +3D_release: + $(MAKE) -C 3D release +3D_units: + $(MAKE) -C 3D units +3D_examples: + $(MAKE) -C 3D examples +3D_shared: + $(MAKE) -C 3D shared +3D_install: + $(MAKE) -C 3D install +3D_sourceinstall: + $(MAKE) -C 3D sourceinstall +3D_exampleinstall: + $(MAKE) -C 3D exampleinstall +3D_distinstall: + $(MAKE) -C 3D distinstall +3D_zipinstall: + $(MAKE) -C 3D zipinstall +3D_zipsourceinstall: + $(MAKE) -C 3D zipsourceinstall +3D_zipexampleinstall: + $(MAKE) -C 3D zipexampleinstall +3D_zipdistinstall: + $(MAKE) -C 3D zipdistinstall +3D_clean: + $(MAKE) -C 3D clean +3D_distclean: + $(MAKE) -C 3D distclean +3D_cleanall: + $(MAKE) -C 3D cleanall +3D_info: + $(MAKE) -C 3D info +3D_makefiles: + $(MAKE) -C 3D makefiles +3D: + $(MAKE) -C 3D all +.PHONY: 3D_all 3D_debug 3D_smart 3D_release 3D_units 3D_examples 3D_shared 3D_install 3D_sourceinstall 3D_exampleinstall 3D_distinstall 3D_zipinstall 3D_zipsourceinstall 3D_zipexampleinstall 3D_zipdistinstall 3D_clean 3D_distclean 3D_cleanall 3D_info 3D_makefiles 3D +endif +ifdef TARGET_DIRS_BACKGROUNDS +Backgrounds_all: + $(MAKE) -C Backgrounds all +Backgrounds_debug: + $(MAKE) -C Backgrounds debug +Backgrounds_smart: + $(MAKE) -C Backgrounds smart +Backgrounds_release: + $(MAKE) -C Backgrounds release +Backgrounds_units: + $(MAKE) -C Backgrounds units +Backgrounds_examples: + $(MAKE) -C Backgrounds examples +Backgrounds_shared: + $(MAKE) -C Backgrounds shared +Backgrounds_install: + $(MAKE) -C Backgrounds install +Backgrounds_sourceinstall: + $(MAKE) -C Backgrounds sourceinstall +Backgrounds_exampleinstall: + $(MAKE) -C Backgrounds exampleinstall +Backgrounds_distinstall: + $(MAKE) -C Backgrounds distinstall +Backgrounds_zipinstall: + $(MAKE) -C Backgrounds zipinstall +Backgrounds_zipsourceinstall: + $(MAKE) -C Backgrounds zipsourceinstall +Backgrounds_zipexampleinstall: + $(MAKE) -C Backgrounds zipexampleinstall +Backgrounds_zipdistinstall: + $(MAKE) -C Backgrounds zipdistinstall +Backgrounds_clean: + $(MAKE) -C Backgrounds clean +Backgrounds_distclean: + $(MAKE) -C Backgrounds distclean +Backgrounds_cleanall: + $(MAKE) -C Backgrounds cleanall +Backgrounds_info: + $(MAKE) -C Backgrounds info +Backgrounds_makefiles: + $(MAKE) -C Backgrounds makefiles +Backgrounds: + $(MAKE) -C Backgrounds all +.PHONY: Backgrounds_all Backgrounds_debug Backgrounds_smart Backgrounds_release Backgrounds_units Backgrounds_examples Backgrounds_shared Backgrounds_install Backgrounds_sourceinstall Backgrounds_exampleinstall Backgrounds_distinstall Backgrounds_zipinstall Backgrounds_zipsourceinstall Backgrounds_zipexampleinstall Backgrounds_zipdistinstall Backgrounds_clean Backgrounds_distclean Backgrounds_cleanall Backgrounds_info Backgrounds_makefiles Backgrounds +endif +ifdef TARGET_DIRS_PRINTING +Printing_all: + $(MAKE) -C Printing all +Printing_debug: + $(MAKE) -C Printing debug +Printing_smart: + $(MAKE) -C Printing smart +Printing_release: + $(MAKE) -C Printing release +Printing_units: + $(MAKE) -C Printing units +Printing_examples: + $(MAKE) -C Printing examples +Printing_shared: + $(MAKE) -C Printing shared +Printing_install: + $(MAKE) -C Printing install +Printing_sourceinstall: + $(MAKE) -C Printing sourceinstall +Printing_exampleinstall: + $(MAKE) -C Printing exampleinstall +Printing_distinstall: + $(MAKE) -C Printing distinstall +Printing_zipinstall: + $(MAKE) -C Printing zipinstall +Printing_zipsourceinstall: + $(MAKE) -C Printing zipsourceinstall +Printing_zipexampleinstall: + $(MAKE) -C Printing zipexampleinstall +Printing_zipdistinstall: + $(MAKE) -C Printing zipdistinstall +Printing_clean: + $(MAKE) -C Printing clean +Printing_distclean: + $(MAKE) -C Printing distclean +Printing_cleanall: + $(MAKE) -C Printing cleanall +Printing_info: + $(MAKE) -C Printing info +Printing_makefiles: + $(MAKE) -C Printing makefiles +Printing: + $(MAKE) -C Printing all +.PHONY: Printing_all Printing_debug Printing_smart Printing_release Printing_units Printing_examples Printing_shared Printing_install Printing_sourceinstall Printing_exampleinstall Printing_distinstall Printing_zipinstall Printing_zipsourceinstall Printing_zipexampleinstall Printing_zipdistinstall Printing_clean Printing_distclean Printing_cleanall Printing_info Printing_makefiles Printing +endif +ifdef TARGET_DIRS_SPRITES +Sprites_all: + $(MAKE) -C Sprites all +Sprites_debug: + $(MAKE) -C Sprites debug +Sprites_smart: + $(MAKE) -C Sprites smart +Sprites_release: + $(MAKE) -C Sprites release +Sprites_units: + $(MAKE) -C Sprites units +Sprites_examples: + $(MAKE) -C Sprites examples +Sprites_shared: + $(MAKE) -C Sprites shared +Sprites_install: + $(MAKE) -C Sprites install +Sprites_sourceinstall: + $(MAKE) -C Sprites sourceinstall +Sprites_exampleinstall: + $(MAKE) -C Sprites exampleinstall +Sprites_distinstall: + $(MAKE) -C Sprites distinstall +Sprites_zipinstall: + $(MAKE) -C Sprites zipinstall +Sprites_zipsourceinstall: + $(MAKE) -C Sprites zipsourceinstall +Sprites_zipexampleinstall: + $(MAKE) -C Sprites zipexampleinstall +Sprites_zipdistinstall: + $(MAKE) -C Sprites zipdistinstall +Sprites_clean: + $(MAKE) -C Sprites clean +Sprites_distclean: + $(MAKE) -C Sprites distclean +Sprites_cleanall: + $(MAKE) -C Sprites cleanall +Sprites_info: + $(MAKE) -C Sprites info +Sprites_makefiles: + $(MAKE) -C Sprites makefiles +Sprites: + $(MAKE) -C Sprites all +.PHONY: Sprites_all Sprites_debug Sprites_smart Sprites_release Sprites_units Sprites_examples Sprites_shared Sprites_install Sprites_sourceinstall Sprites_exampleinstall Sprites_distinstall Sprites_zipinstall Sprites_zipsourceinstall Sprites_zipexampleinstall Sprites_zipdistinstall Sprites_clean Sprites_distclean Sprites_cleanall Sprites_info Sprites_makefiles Sprites +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Makefile.fpc b/packages/libndsfpc/examples/graphics/Makefile.fpc new file mode 100644 index 0000000000..0462c6516f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=3D Backgrounds Printing Sprites + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Printing/Makefile b/packages/libndsfpc/examples/graphics/Printing/Makefile new file mode 100644 index 0000000000..9d160aaaf8 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/Makefile @@ -0,0 +1,1621 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=ansi_console console_windows custom_font print_both_screens rotscale_text +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_ANSI_CONSOLE=1 +TARGET_DIRS_CONSOLE_WINDOWS=1 +TARGET_DIRS_CUSTOM_FONT=1 +TARGET_DIRS_PRINT_BOTH_SCREENS=1 +TARGET_DIRS_ROTSCALE_TEXT=1 +endif +ifdef TARGET_DIRS_ANSI_CONSOLE +ansi_console_all: + $(MAKE) -C ansi_console all +ansi_console_debug: + $(MAKE) -C ansi_console debug +ansi_console_smart: + $(MAKE) -C ansi_console smart +ansi_console_release: + $(MAKE) -C ansi_console release +ansi_console_units: + $(MAKE) -C ansi_console units +ansi_console_examples: + $(MAKE) -C ansi_console examples +ansi_console_shared: + $(MAKE) -C ansi_console shared +ansi_console_install: + $(MAKE) -C ansi_console install +ansi_console_sourceinstall: + $(MAKE) -C ansi_console sourceinstall +ansi_console_exampleinstall: + $(MAKE) -C ansi_console exampleinstall +ansi_console_distinstall: + $(MAKE) -C ansi_console distinstall +ansi_console_zipinstall: + $(MAKE) -C ansi_console zipinstall +ansi_console_zipsourceinstall: + $(MAKE) -C ansi_console zipsourceinstall +ansi_console_zipexampleinstall: + $(MAKE) -C ansi_console zipexampleinstall +ansi_console_zipdistinstall: + $(MAKE) -C ansi_console zipdistinstall +ansi_console_clean: + $(MAKE) -C ansi_console clean +ansi_console_distclean: + $(MAKE) -C ansi_console distclean +ansi_console_cleanall: + $(MAKE) -C ansi_console cleanall +ansi_console_info: + $(MAKE) -C ansi_console info +ansi_console_makefiles: + $(MAKE) -C ansi_console makefiles +ansi_console: + $(MAKE) -C ansi_console all +.PHONY: ansi_console_all ansi_console_debug ansi_console_smart ansi_console_release ansi_console_units ansi_console_examples ansi_console_shared ansi_console_install ansi_console_sourceinstall ansi_console_exampleinstall ansi_console_distinstall ansi_console_zipinstall ansi_console_zipsourceinstall ansi_console_zipexampleinstall ansi_console_zipdistinstall ansi_console_clean ansi_console_distclean ansi_console_cleanall ansi_console_info ansi_console_makefiles ansi_console +endif +ifdef TARGET_DIRS_CONSOLE_WINDOWS +console_windows_all: + $(MAKE) -C console_windows all +console_windows_debug: + $(MAKE) -C console_windows debug +console_windows_smart: + $(MAKE) -C console_windows smart +console_windows_release: + $(MAKE) -C console_windows release +console_windows_units: + $(MAKE) -C console_windows units +console_windows_examples: + $(MAKE) -C console_windows examples +console_windows_shared: + $(MAKE) -C console_windows shared +console_windows_install: + $(MAKE) -C console_windows install +console_windows_sourceinstall: + $(MAKE) -C console_windows sourceinstall +console_windows_exampleinstall: + $(MAKE) -C console_windows exampleinstall +console_windows_distinstall: + $(MAKE) -C console_windows distinstall +console_windows_zipinstall: + $(MAKE) -C console_windows zipinstall +console_windows_zipsourceinstall: + $(MAKE) -C console_windows zipsourceinstall +console_windows_zipexampleinstall: + $(MAKE) -C console_windows zipexampleinstall +console_windows_zipdistinstall: + $(MAKE) -C console_windows zipdistinstall +console_windows_clean: + $(MAKE) -C console_windows clean +console_windows_distclean: + $(MAKE) -C console_windows distclean +console_windows_cleanall: + $(MAKE) -C console_windows cleanall +console_windows_info: + $(MAKE) -C console_windows info +console_windows_makefiles: + $(MAKE) -C console_windows makefiles +console_windows: + $(MAKE) -C console_windows all +.PHONY: console_windows_all console_windows_debug console_windows_smart console_windows_release console_windows_units console_windows_examples console_windows_shared console_windows_install console_windows_sourceinstall console_windows_exampleinstall console_windows_distinstall console_windows_zipinstall console_windows_zipsourceinstall console_windows_zipexampleinstall console_windows_zipdistinstall console_windows_clean console_windows_distclean console_windows_cleanall console_windows_info console_windows_makefiles console_windows +endif +ifdef TARGET_DIRS_CUSTOM_FONT +custom_font_all: + $(MAKE) -C custom_font all +custom_font_debug: + $(MAKE) -C custom_font debug +custom_font_smart: + $(MAKE) -C custom_font smart +custom_font_release: + $(MAKE) -C custom_font release +custom_font_units: + $(MAKE) -C custom_font units +custom_font_examples: + $(MAKE) -C custom_font examples +custom_font_shared: + $(MAKE) -C custom_font shared +custom_font_install: + $(MAKE) -C custom_font install +custom_font_sourceinstall: + $(MAKE) -C custom_font sourceinstall +custom_font_exampleinstall: + $(MAKE) -C custom_font exampleinstall +custom_font_distinstall: + $(MAKE) -C custom_font distinstall +custom_font_zipinstall: + $(MAKE) -C custom_font zipinstall +custom_font_zipsourceinstall: + $(MAKE) -C custom_font zipsourceinstall +custom_font_zipexampleinstall: + $(MAKE) -C custom_font zipexampleinstall +custom_font_zipdistinstall: + $(MAKE) -C custom_font zipdistinstall +custom_font_clean: + $(MAKE) -C custom_font clean +custom_font_distclean: + $(MAKE) -C custom_font distclean +custom_font_cleanall: + $(MAKE) -C custom_font cleanall +custom_font_info: + $(MAKE) -C custom_font info +custom_font_makefiles: + $(MAKE) -C custom_font makefiles +custom_font: + $(MAKE) -C custom_font all +.PHONY: custom_font_all custom_font_debug custom_font_smart custom_font_release custom_font_units custom_font_examples custom_font_shared custom_font_install custom_font_sourceinstall custom_font_exampleinstall custom_font_distinstall custom_font_zipinstall custom_font_zipsourceinstall custom_font_zipexampleinstall custom_font_zipdistinstall custom_font_clean custom_font_distclean custom_font_cleanall custom_font_info custom_font_makefiles custom_font +endif +ifdef TARGET_DIRS_PRINT_BOTH_SCREENS +print_both_screens_all: + $(MAKE) -C print_both_screens all +print_both_screens_debug: + $(MAKE) -C print_both_screens debug +print_both_screens_smart: + $(MAKE) -C print_both_screens smart +print_both_screens_release: + $(MAKE) -C print_both_screens release +print_both_screens_units: + $(MAKE) -C print_both_screens units +print_both_screens_examples: + $(MAKE) -C print_both_screens examples +print_both_screens_shared: + $(MAKE) -C print_both_screens shared +print_both_screens_install: + $(MAKE) -C print_both_screens install +print_both_screens_sourceinstall: + $(MAKE) -C print_both_screens sourceinstall +print_both_screens_exampleinstall: + $(MAKE) -C print_both_screens exampleinstall +print_both_screens_distinstall: + $(MAKE) -C print_both_screens distinstall +print_both_screens_zipinstall: + $(MAKE) -C print_both_screens zipinstall +print_both_screens_zipsourceinstall: + $(MAKE) -C print_both_screens zipsourceinstall +print_both_screens_zipexampleinstall: + $(MAKE) -C print_both_screens zipexampleinstall +print_both_screens_zipdistinstall: + $(MAKE) -C print_both_screens zipdistinstall +print_both_screens_clean: + $(MAKE) -C print_both_screens clean +print_both_screens_distclean: + $(MAKE) -C print_both_screens distclean +print_both_screens_cleanall: + $(MAKE) -C print_both_screens cleanall +print_both_screens_info: + $(MAKE) -C print_both_screens info +print_both_screens_makefiles: + $(MAKE) -C print_both_screens makefiles +print_both_screens: + $(MAKE) -C print_both_screens all +.PHONY: print_both_screens_all print_both_screens_debug print_both_screens_smart print_both_screens_release print_both_screens_units print_both_screens_examples print_both_screens_shared print_both_screens_install print_both_screens_sourceinstall print_both_screens_exampleinstall print_both_screens_distinstall print_both_screens_zipinstall print_both_screens_zipsourceinstall print_both_screens_zipexampleinstall print_both_screens_zipdistinstall print_both_screens_clean print_both_screens_distclean print_both_screens_cleanall print_both_screens_info print_both_screens_makefiles print_both_screens +endif +ifdef TARGET_DIRS_ROTSCALE_TEXT +rotscale_text_all: + $(MAKE) -C rotscale_text all +rotscale_text_debug: + $(MAKE) -C rotscale_text debug +rotscale_text_smart: + $(MAKE) -C rotscale_text smart +rotscale_text_release: + $(MAKE) -C rotscale_text release +rotscale_text_units: + $(MAKE) -C rotscale_text units +rotscale_text_examples: + $(MAKE) -C rotscale_text examples +rotscale_text_shared: + $(MAKE) -C rotscale_text shared +rotscale_text_install: + $(MAKE) -C rotscale_text install +rotscale_text_sourceinstall: + $(MAKE) -C rotscale_text sourceinstall +rotscale_text_exampleinstall: + $(MAKE) -C rotscale_text exampleinstall +rotscale_text_distinstall: + $(MAKE) -C rotscale_text distinstall +rotscale_text_zipinstall: + $(MAKE) -C rotscale_text zipinstall +rotscale_text_zipsourceinstall: + $(MAKE) -C rotscale_text zipsourceinstall +rotscale_text_zipexampleinstall: + $(MAKE) -C rotscale_text zipexampleinstall +rotscale_text_zipdistinstall: + $(MAKE) -C rotscale_text zipdistinstall +rotscale_text_clean: + $(MAKE) -C rotscale_text clean +rotscale_text_distclean: + $(MAKE) -C rotscale_text distclean +rotscale_text_cleanall: + $(MAKE) -C rotscale_text cleanall +rotscale_text_info: + $(MAKE) -C rotscale_text info +rotscale_text_makefiles: + $(MAKE) -C rotscale_text makefiles +rotscale_text: + $(MAKE) -C rotscale_text all +.PHONY: rotscale_text_all rotscale_text_debug rotscale_text_smart rotscale_text_release rotscale_text_units rotscale_text_examples rotscale_text_shared rotscale_text_install rotscale_text_sourceinstall rotscale_text_exampleinstall rotscale_text_distinstall rotscale_text_zipinstall rotscale_text_zipsourceinstall rotscale_text_zipexampleinstall rotscale_text_zipdistinstall rotscale_text_clean rotscale_text_distclean rotscale_text_cleanall rotscale_text_info rotscale_text_makefiles rotscale_text +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Printing/Makefile.fpc b/packages/libndsfpc/examples/graphics/Printing/Makefile.fpc new file mode 100644 index 0000000000..d4db9bd368 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=ansi_console console_windows custom_font print_both_screens rotscale_text + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Printing/ansi_console/AnsiConsole.pp b/packages/libndsfpc/examples/graphics/Printing/ansi_console/AnsiConsole.pp new file mode 100644 index 0000000000..caf0f450e4 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/ansi_console/AnsiConsole.pp @@ -0,0 +1,37 @@ +program AnsiConsole; + +uses + ctypes, nds9; + +begin + + consoleDemoInit(); + + // ansi escape sequence to clear screen and home cursor + // #27 + [line;columnH + iprintf(#27 + '[2J'); + + // ansi escape sequence to set print co-ordinates + // #27 + [line;columnH + iprintf(#27 + '[10;10H' + 'Hello World!'); + + // ansi escape sequence to move cursor up + // #27 + [linesA + iprintf(#27 + '[10A' + 'Line 0'); + + // ansi escape sequence to move cursor left + // #27 + [columnsD + iprintf(#27 + '[28D' + 'Column 0'); + + // ansi escape sequence to move cursor down + // #27 + [linesB + iprintf(#27 + '[19B' + 'Line 19'); + + // ansi escape sequence to move cursor right + // #27 + [columnsC + iprintf(#27 + '[5C' + 'Column 20'); + + while true do + swiWaitForVBlank(); + +end. diff --git a/packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile b/packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile new file mode 100644 index 0000000000..12e3ecc7d9 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=AnsiConsole +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile.fpc b/packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile.fpc new file mode 100644 index 0000000000..0a72bb9bd3 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/ansi_console/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=AnsiConsole + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/console_windows/ConsoleWindows.pp b/packages/libndsfpc/examples/graphics/Printing/console_windows/ConsoleWindows.pp new file mode 100644 index 0000000000..830db2628b --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/console_windows/ConsoleWindows.pp @@ -0,0 +1,64 @@ +program ConsoleWindows; + +uses + ctypes, nds9; + +const border = '------------' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '| |' + + '------------'; + +var + touch: touchPosition; + left: pPrintConsole; + right: PrintConsole; + keys: integer; +begin + + left := consoleDemoInit(); + right := left^; + + consoleSetWindow(left, 15,1,12,16); + consoleSetWindow(@right, 1,1,12,16); + + consoleSelect(left); + iprintf(border); + consoleSelect(@right); + iprintf(border); + + consoleSetWindow(left, 2,2,10,14); + consoleSetWindow(@right,16,2,10,14); + + while true do + begin + scanKeys(); + keys := keysHeld(); + + if (keys and KEY_TOUCH) <> 0 then + begin + touchRead(touch); + + if (touch.px < 128) then + consoleSelect(left) + else + consoleSelect(@right); + + iprintf(#10'T: %i', touch.px); + end; + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile b/packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile new file mode 100644 index 0000000000..9c4feeddcf --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=ConsoleWindows +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile.fpc b/packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile.fpc new file mode 100644 index 0000000000..dd91a5a32a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/console_windows/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=ConsoleWindows + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/custom_font/CustomFont.pp b/packages/libndsfpc/examples/graphics/Printing/custom_font/CustomFont.pp new file mode 100644 index 0000000000..cdfb207cff --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/custom_font/CustomFont.pp @@ -0,0 +1,44 @@ +program custom_font; +{$L build/font.o} + +uses + ctypes, nds9; + +const + fontPalLen = 32; + fontTilesLen = 3072; + tile_base = 0; + map_base = 20; + +var + fontTiles: array [0..767] of cushort; cvar; external; + fontPal: array [0..255] of cushort; cvar; external; + + console: pPrintConsole; + font: ConsoleFont; + + +begin + videoSetModeSub(MODE_0_2D); + vramSetBankC(VRAM_C_SUB_BG); + + console := consoleInit(nil, 0, BgType_Text4bpp, BgSize_T_256x256, map_base, tile_base, false, false); + + font.gfx := pcuint16(fontTiles); + font.pal := pcuint16(fontPal); + font.numChars := 95; + font.numColors := fontPalLen div 2; + font.bpp := 4; + font.asciiOffset := 32; + font.convertSingleColor := false; + + consoleSetFont(console, @font); + + printf('Custom Font Demo'#10); + printf(' by Poffy'#10); + printf('modified by WinterMute'#10); + printf('for libnds examples'#10); + + while true do + swiWaitForVBlank(); +end. diff --git a/packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile b/packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile new file mode 100644 index 0000000000..95469d86dd --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +INC = inc +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=CustomFont +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile.fpc b/packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile.fpc new file mode 100644 index 0000000000..c4c97157b5 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/custom_font/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=CustomFont + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +INC = inc +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.bmp b/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.bmp new file mode 100644 index 0000000000..12ad598049 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.bmp differ diff --git a/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.grit b/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.grit new file mode 100644 index 0000000000..c0af58e14f --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.grit @@ -0,0 +1,25 @@ +#------------------------------------------------------- +# graphics in tile format +#------------------------------------------------------- +-gt + +#------------------------------------------------------- +# output first 16 colors of the palette +#------------------------------------------------------- +-pw16 + +#------------------------------------------------------- +# no tile reduction +#------------------------------------------------------- +-mR! + +#------------------------------------------------------- +# no map output +#------------------------------------------------------- +-m! + +#------------------------------------------------------- +# graphics bit depth is 4 (16 color) +#------------------------------------------------------- +-gB4 + diff --git a/packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile b/packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile new file mode 100644 index 0000000000..8ac67ec5ad --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +INC = inc +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=printBothScreens +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile.fpc b/packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile.fpc new file mode 100644 index 0000000000..9163e3f850 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/print_both_screens/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=printBothScreens + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +INC = inc +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/print_both_screens/printBothScreens.pp b/packages/libndsfpc/examples/graphics/Printing/print_both_screens/printBothScreens.pp new file mode 100644 index 0000000000..0964142730 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/print_both_screens/printBothScreens.pp @@ -0,0 +1,50 @@ +program printBothScreens; + +{$apptype arm9} + +{$mode objfpc} + +uses + ctypes, nds9; + +var + touch: touchPosition; + topScreen, bottomScreen: PrintConsole; +// p: PrintConsole; + +begin + videoSetMode(MODE_0_2D); + videoSetModeSub(MODE_0_2D); + + vramSetBankA(VRAM_A_MAIN_BG); + vramSetBankC(VRAM_C_SUB_BG); + + consoleInit(@topScreen, 3,BgType_Text4bpp, BgSize_T_256x256, 31, 0, true, true); + consoleInit(@bottomScreen, 3,BgType_Text4bpp, BgSize_T_256x256, 31, 0, false, true); + + +{ + topScreen := consoleInit(nil, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, true); + p := topScreen^; + bottomScreen := consoleInit(nil, 3, BgType_Text4bpp, BgSize_T_256x256, 31, 0, false); + topScreen := @p; +} + consoleSelect(@topScreen); + + iprintf(#10#10#9'Hello DS dev''rs'#10); + iprintf(#9'www.drunkencoders.com'#10); + iprintf(#9'www.devkitpro.org'); + + consoleSelect(@bottomScreen); + + while true do + begin + touchRead(touch); + iprintf(#27'[10;0H' + 'Touch x = %04i, %04i'#10, touch.rawx, touch.px); + iprintf('Touch y = %04i, %04i'#10, touch.rawy, touch.py); + + swiWaitForVBlank(); + end; + +end. + diff --git a/packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile new file mode 100644 index 0000000000..3644bc4102 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +INC = inc +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=RotscaleText +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile.fpc b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile.fpc new file mode 100644 index 0000000000..6ed3ea165c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=RotscaleText + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +INC = inc +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Printing/rotscale_text/RotscaleText.pp b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/RotscaleText.pp new file mode 100644 index 0000000000..1dc4af6e4c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/RotscaleText.pp @@ -0,0 +1,85 @@ +program RotscaleText; +{$L build/font.o} + +uses + ctypes, nds9; + +const + fontPalLen = 32; + fontTilesLen = 3072; + tile_base = 0; + map_base = 20; + +var + fontTiles: array [0..767] of cushort; cvar; external; + fontPal: array [0..255] of cushort; cvar; external; + + scaleX, scaleY: cint16; + scrollX, scrollY: cint16; + angle: cuint = 0; + keys: cuint32; + + console: pPrintConsole; + font: ConsoleFont; + bg3: cint; + +begin + videoSetMode(0); + + videoSetModeSub(MODE_5_2D); + vramSetBankC(VRAM_C_SUB_BG); + + console := consoleInit(nil, 3, BgType_ExRotation, BgSize_ER_256x256, map_base, tile_base, false, false); + + font.gfx := pcuint16(fontTiles); + font.pal := pcuint16(fontPal); + font.numChars := 95; + font.numColors := fontPalLen div 2; + font.bpp := 8; + font.asciiOffset := 32; + font.convertSingleColor := false; + + consoleSetFont(console, @font); + + bg3 := console^.bgId; + + printf('Custom Font Demo'#10); + printf(' by Poffy'#10); + printf('modified by WinterMute and Dovoto'#10); + printf('for libnds examples'#10); + + + angle := 0; + scrollX := 0; + scrollY := 0; + scaleX := intToFixed(1,8); + scaleY := intToFixed(1,8); + + while true do + begin + scanKeys(); + keys := keysHeld(); + + if ( keys and KEY_L ) <> 0 then angle := angle + 64; + if ( keys and KEY_R ) <> 0 then angle := angle - 64; + + if ( keys and KEY_LEFT ) <> 0 then scrollX := scrollX + 1; + if ( keys and KEY_RIGHT ) <> 0 then scrollX := scrollX - 1; + if ( keys and KEY_UP ) <> 0 then scrollY := scrollY + 1; + if ( keys and KEY_DOWN ) <> 0 then scrollY := scrollY - 1; + + if ( keys and KEY_A ) <> 0 then scaleX := scaleX + 1; + if ( keys and KEY_B ) <> 0 then scaleX := scaleX - 1; + + if( keys and KEY_X ) <> 0 then scaleY := scaleY + 1; + if( keys and KEY_Y ) <> 0 then scaleY := scaleY - 1; + + swiWaitForVBlank(); + + + bgSetRotateScale(bg3, angle, scaleX, scaleY); + bgSetScroll(bg3, scrollX, scrollY); + bgUpdate(); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.bmp b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.bmp new file mode 100644 index 0000000000..bc6ca47475 Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.bmp differ diff --git a/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.grit b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.grit new file mode 100644 index 0000000000..3c5fb0e4b7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.grit @@ -0,0 +1,20 @@ +#------------------------------------------------------- +# graphics in tile format +#------------------------------------------------------- +-gt + +#------------------------------------------------------- +# no tile reduction +#------------------------------------------------------- +-mR! + +#------------------------------------------------------- +# no map output +#------------------------------------------------------- +-m! + +#------------------------------------------------------- +# graphics bit depth is 8 (256 color) +#------------------------------------------------------- +-gB8 + diff --git a/packages/libndsfpc/examples/graphics/Sprites/Makefile b/packages/libndsfpc/examples/graphics/Sprites/Makefile new file mode 100644 index 0000000000..efba2e2b4d --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/Makefile @@ -0,0 +1,1713 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=allocation_test animate_simple bitmap_sprites fire_and_sprites simple sprite_extended_palettes sprite_rotate +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_ALLOCATION_TEST=1 +TARGET_DIRS_ANIMATE_SIMPLE=1 +TARGET_DIRS_BITMAP_SPRITES=1 +TARGET_DIRS_FIRE_AND_SPRITES=1 +TARGET_DIRS_SIMPLE=1 +TARGET_DIRS_SPRITE_EXTENDED_PALETTES=1 +TARGET_DIRS_SPRITE_ROTATE=1 +endif +ifdef TARGET_DIRS_ALLOCATION_TEST +allocation_test_all: + $(MAKE) -C allocation_test all +allocation_test_debug: + $(MAKE) -C allocation_test debug +allocation_test_smart: + $(MAKE) -C allocation_test smart +allocation_test_release: + $(MAKE) -C allocation_test release +allocation_test_units: + $(MAKE) -C allocation_test units +allocation_test_examples: + $(MAKE) -C allocation_test examples +allocation_test_shared: + $(MAKE) -C allocation_test shared +allocation_test_install: + $(MAKE) -C allocation_test install +allocation_test_sourceinstall: + $(MAKE) -C allocation_test sourceinstall +allocation_test_exampleinstall: + $(MAKE) -C allocation_test exampleinstall +allocation_test_distinstall: + $(MAKE) -C allocation_test distinstall +allocation_test_zipinstall: + $(MAKE) -C allocation_test zipinstall +allocation_test_zipsourceinstall: + $(MAKE) -C allocation_test zipsourceinstall +allocation_test_zipexampleinstall: + $(MAKE) -C allocation_test zipexampleinstall +allocation_test_zipdistinstall: + $(MAKE) -C allocation_test zipdistinstall +allocation_test_clean: + $(MAKE) -C allocation_test clean +allocation_test_distclean: + $(MAKE) -C allocation_test distclean +allocation_test_cleanall: + $(MAKE) -C allocation_test cleanall +allocation_test_info: + $(MAKE) -C allocation_test info +allocation_test_makefiles: + $(MAKE) -C allocation_test makefiles +allocation_test: + $(MAKE) -C allocation_test all +.PHONY: allocation_test_all allocation_test_debug allocation_test_smart allocation_test_release allocation_test_units allocation_test_examples allocation_test_shared allocation_test_install allocation_test_sourceinstall allocation_test_exampleinstall allocation_test_distinstall allocation_test_zipinstall allocation_test_zipsourceinstall allocation_test_zipexampleinstall allocation_test_zipdistinstall allocation_test_clean allocation_test_distclean allocation_test_cleanall allocation_test_info allocation_test_makefiles allocation_test +endif +ifdef TARGET_DIRS_ANIMATE_SIMPLE +animate_simple_all: + $(MAKE) -C animate_simple all +animate_simple_debug: + $(MAKE) -C animate_simple debug +animate_simple_smart: + $(MAKE) -C animate_simple smart +animate_simple_release: + $(MAKE) -C animate_simple release +animate_simple_units: + $(MAKE) -C animate_simple units +animate_simple_examples: + $(MAKE) -C animate_simple examples +animate_simple_shared: + $(MAKE) -C animate_simple shared +animate_simple_install: + $(MAKE) -C animate_simple install +animate_simple_sourceinstall: + $(MAKE) -C animate_simple sourceinstall +animate_simple_exampleinstall: + $(MAKE) -C animate_simple exampleinstall +animate_simple_distinstall: + $(MAKE) -C animate_simple distinstall +animate_simple_zipinstall: + $(MAKE) -C animate_simple zipinstall +animate_simple_zipsourceinstall: + $(MAKE) -C animate_simple zipsourceinstall +animate_simple_zipexampleinstall: + $(MAKE) -C animate_simple zipexampleinstall +animate_simple_zipdistinstall: + $(MAKE) -C animate_simple zipdistinstall +animate_simple_clean: + $(MAKE) -C animate_simple clean +animate_simple_distclean: + $(MAKE) -C animate_simple distclean +animate_simple_cleanall: + $(MAKE) -C animate_simple cleanall +animate_simple_info: + $(MAKE) -C animate_simple info +animate_simple_makefiles: + $(MAKE) -C animate_simple makefiles +animate_simple: + $(MAKE) -C animate_simple all +.PHONY: animate_simple_all animate_simple_debug animate_simple_smart animate_simple_release animate_simple_units animate_simple_examples animate_simple_shared animate_simple_install animate_simple_sourceinstall animate_simple_exampleinstall animate_simple_distinstall animate_simple_zipinstall animate_simple_zipsourceinstall animate_simple_zipexampleinstall animate_simple_zipdistinstall animate_simple_clean animate_simple_distclean animate_simple_cleanall animate_simple_info animate_simple_makefiles animate_simple +endif +ifdef TARGET_DIRS_BITMAP_SPRITES +bitmap_sprites_all: + $(MAKE) -C bitmap_sprites all +bitmap_sprites_debug: + $(MAKE) -C bitmap_sprites debug +bitmap_sprites_smart: + $(MAKE) -C bitmap_sprites smart +bitmap_sprites_release: + $(MAKE) -C bitmap_sprites release +bitmap_sprites_units: + $(MAKE) -C bitmap_sprites units +bitmap_sprites_examples: + $(MAKE) -C bitmap_sprites examples +bitmap_sprites_shared: + $(MAKE) -C bitmap_sprites shared +bitmap_sprites_install: + $(MAKE) -C bitmap_sprites install +bitmap_sprites_sourceinstall: + $(MAKE) -C bitmap_sprites sourceinstall +bitmap_sprites_exampleinstall: + $(MAKE) -C bitmap_sprites exampleinstall +bitmap_sprites_distinstall: + $(MAKE) -C bitmap_sprites distinstall +bitmap_sprites_zipinstall: + $(MAKE) -C bitmap_sprites zipinstall +bitmap_sprites_zipsourceinstall: + $(MAKE) -C bitmap_sprites zipsourceinstall +bitmap_sprites_zipexampleinstall: + $(MAKE) -C bitmap_sprites zipexampleinstall +bitmap_sprites_zipdistinstall: + $(MAKE) -C bitmap_sprites zipdistinstall +bitmap_sprites_clean: + $(MAKE) -C bitmap_sprites clean +bitmap_sprites_distclean: + $(MAKE) -C bitmap_sprites distclean +bitmap_sprites_cleanall: + $(MAKE) -C bitmap_sprites cleanall +bitmap_sprites_info: + $(MAKE) -C bitmap_sprites info +bitmap_sprites_makefiles: + $(MAKE) -C bitmap_sprites makefiles +bitmap_sprites: + $(MAKE) -C bitmap_sprites all +.PHONY: bitmap_sprites_all bitmap_sprites_debug bitmap_sprites_smart bitmap_sprites_release bitmap_sprites_units bitmap_sprites_examples bitmap_sprites_shared bitmap_sprites_install bitmap_sprites_sourceinstall bitmap_sprites_exampleinstall bitmap_sprites_distinstall bitmap_sprites_zipinstall bitmap_sprites_zipsourceinstall bitmap_sprites_zipexampleinstall bitmap_sprites_zipdistinstall bitmap_sprites_clean bitmap_sprites_distclean bitmap_sprites_cleanall bitmap_sprites_info bitmap_sprites_makefiles bitmap_sprites +endif +ifdef TARGET_DIRS_FIRE_AND_SPRITES +fire_and_sprites_all: + $(MAKE) -C fire_and_sprites all +fire_and_sprites_debug: + $(MAKE) -C fire_and_sprites debug +fire_and_sprites_smart: + $(MAKE) -C fire_and_sprites smart +fire_and_sprites_release: + $(MAKE) -C fire_and_sprites release +fire_and_sprites_units: + $(MAKE) -C fire_and_sprites units +fire_and_sprites_examples: + $(MAKE) -C fire_and_sprites examples +fire_and_sprites_shared: + $(MAKE) -C fire_and_sprites shared +fire_and_sprites_install: + $(MAKE) -C fire_and_sprites install +fire_and_sprites_sourceinstall: + $(MAKE) -C fire_and_sprites sourceinstall +fire_and_sprites_exampleinstall: + $(MAKE) -C fire_and_sprites exampleinstall +fire_and_sprites_distinstall: + $(MAKE) -C fire_and_sprites distinstall +fire_and_sprites_zipinstall: + $(MAKE) -C fire_and_sprites zipinstall +fire_and_sprites_zipsourceinstall: + $(MAKE) -C fire_and_sprites zipsourceinstall +fire_and_sprites_zipexampleinstall: + $(MAKE) -C fire_and_sprites zipexampleinstall +fire_and_sprites_zipdistinstall: + $(MAKE) -C fire_and_sprites zipdistinstall +fire_and_sprites_clean: + $(MAKE) -C fire_and_sprites clean +fire_and_sprites_distclean: + $(MAKE) -C fire_and_sprites distclean +fire_and_sprites_cleanall: + $(MAKE) -C fire_and_sprites cleanall +fire_and_sprites_info: + $(MAKE) -C fire_and_sprites info +fire_and_sprites_makefiles: + $(MAKE) -C fire_and_sprites makefiles +fire_and_sprites: + $(MAKE) -C fire_and_sprites all +.PHONY: fire_and_sprites_all fire_and_sprites_debug fire_and_sprites_smart fire_and_sprites_release fire_and_sprites_units fire_and_sprites_examples fire_and_sprites_shared fire_and_sprites_install fire_and_sprites_sourceinstall fire_and_sprites_exampleinstall fire_and_sprites_distinstall fire_and_sprites_zipinstall fire_and_sprites_zipsourceinstall fire_and_sprites_zipexampleinstall fire_and_sprites_zipdistinstall fire_and_sprites_clean fire_and_sprites_distclean fire_and_sprites_cleanall fire_and_sprites_info fire_and_sprites_makefiles fire_and_sprites +endif +ifdef TARGET_DIRS_SIMPLE +simple_all: + $(MAKE) -C simple all +simple_debug: + $(MAKE) -C simple debug +simple_smart: + $(MAKE) -C simple smart +simple_release: + $(MAKE) -C simple release +simple_units: + $(MAKE) -C simple units +simple_examples: + $(MAKE) -C simple examples +simple_shared: + $(MAKE) -C simple shared +simple_install: + $(MAKE) -C simple install +simple_sourceinstall: + $(MAKE) -C simple sourceinstall +simple_exampleinstall: + $(MAKE) -C simple exampleinstall +simple_distinstall: + $(MAKE) -C simple distinstall +simple_zipinstall: + $(MAKE) -C simple zipinstall +simple_zipsourceinstall: + $(MAKE) -C simple zipsourceinstall +simple_zipexampleinstall: + $(MAKE) -C simple zipexampleinstall +simple_zipdistinstall: + $(MAKE) -C simple zipdistinstall +simple_clean: + $(MAKE) -C simple clean +simple_distclean: + $(MAKE) -C simple distclean +simple_cleanall: + $(MAKE) -C simple cleanall +simple_info: + $(MAKE) -C simple info +simple_makefiles: + $(MAKE) -C simple makefiles +simple: + $(MAKE) -C simple all +.PHONY: simple_all simple_debug simple_smart simple_release simple_units simple_examples simple_shared simple_install simple_sourceinstall simple_exampleinstall simple_distinstall simple_zipinstall simple_zipsourceinstall simple_zipexampleinstall simple_zipdistinstall simple_clean simple_distclean simple_cleanall simple_info simple_makefiles simple +endif +ifdef TARGET_DIRS_SPRITE_EXTENDED_PALETTES +sprite_extended_palettes_all: + $(MAKE) -C sprite_extended_palettes all +sprite_extended_palettes_debug: + $(MAKE) -C sprite_extended_palettes debug +sprite_extended_palettes_smart: + $(MAKE) -C sprite_extended_palettes smart +sprite_extended_palettes_release: + $(MAKE) -C sprite_extended_palettes release +sprite_extended_palettes_units: + $(MAKE) -C sprite_extended_palettes units +sprite_extended_palettes_examples: + $(MAKE) -C sprite_extended_palettes examples +sprite_extended_palettes_shared: + $(MAKE) -C sprite_extended_palettes shared +sprite_extended_palettes_install: + $(MAKE) -C sprite_extended_palettes install +sprite_extended_palettes_sourceinstall: + $(MAKE) -C sprite_extended_palettes sourceinstall +sprite_extended_palettes_exampleinstall: + $(MAKE) -C sprite_extended_palettes exampleinstall +sprite_extended_palettes_distinstall: + $(MAKE) -C sprite_extended_palettes distinstall +sprite_extended_palettes_zipinstall: + $(MAKE) -C sprite_extended_palettes zipinstall +sprite_extended_palettes_zipsourceinstall: + $(MAKE) -C sprite_extended_palettes zipsourceinstall +sprite_extended_palettes_zipexampleinstall: + $(MAKE) -C sprite_extended_palettes zipexampleinstall +sprite_extended_palettes_zipdistinstall: + $(MAKE) -C sprite_extended_palettes zipdistinstall +sprite_extended_palettes_clean: + $(MAKE) -C sprite_extended_palettes clean +sprite_extended_palettes_distclean: + $(MAKE) -C sprite_extended_palettes distclean +sprite_extended_palettes_cleanall: + $(MAKE) -C sprite_extended_palettes cleanall +sprite_extended_palettes_info: + $(MAKE) -C sprite_extended_palettes info +sprite_extended_palettes_makefiles: + $(MAKE) -C sprite_extended_palettes makefiles +sprite_extended_palettes: + $(MAKE) -C sprite_extended_palettes all +.PHONY: sprite_extended_palettes_all sprite_extended_palettes_debug sprite_extended_palettes_smart sprite_extended_palettes_release sprite_extended_palettes_units sprite_extended_palettes_examples sprite_extended_palettes_shared sprite_extended_palettes_install sprite_extended_palettes_sourceinstall sprite_extended_palettes_exampleinstall sprite_extended_palettes_distinstall sprite_extended_palettes_zipinstall sprite_extended_palettes_zipsourceinstall sprite_extended_palettes_zipexampleinstall sprite_extended_palettes_zipdistinstall sprite_extended_palettes_clean sprite_extended_palettes_distclean sprite_extended_palettes_cleanall sprite_extended_palettes_info sprite_extended_palettes_makefiles sprite_extended_palettes +endif +ifdef TARGET_DIRS_SPRITE_ROTATE +sprite_rotate_all: + $(MAKE) -C sprite_rotate all +sprite_rotate_debug: + $(MAKE) -C sprite_rotate debug +sprite_rotate_smart: + $(MAKE) -C sprite_rotate smart +sprite_rotate_release: + $(MAKE) -C sprite_rotate release +sprite_rotate_units: + $(MAKE) -C sprite_rotate units +sprite_rotate_examples: + $(MAKE) -C sprite_rotate examples +sprite_rotate_shared: + $(MAKE) -C sprite_rotate shared +sprite_rotate_install: + $(MAKE) -C sprite_rotate install +sprite_rotate_sourceinstall: + $(MAKE) -C sprite_rotate sourceinstall +sprite_rotate_exampleinstall: + $(MAKE) -C sprite_rotate exampleinstall +sprite_rotate_distinstall: + $(MAKE) -C sprite_rotate distinstall +sprite_rotate_zipinstall: + $(MAKE) -C sprite_rotate zipinstall +sprite_rotate_zipsourceinstall: + $(MAKE) -C sprite_rotate zipsourceinstall +sprite_rotate_zipexampleinstall: + $(MAKE) -C sprite_rotate zipexampleinstall +sprite_rotate_zipdistinstall: + $(MAKE) -C sprite_rotate zipdistinstall +sprite_rotate_clean: + $(MAKE) -C sprite_rotate clean +sprite_rotate_distclean: + $(MAKE) -C sprite_rotate distclean +sprite_rotate_cleanall: + $(MAKE) -C sprite_rotate cleanall +sprite_rotate_info: + $(MAKE) -C sprite_rotate info +sprite_rotate_makefiles: + $(MAKE) -C sprite_rotate makefiles +sprite_rotate: + $(MAKE) -C sprite_rotate all +.PHONY: sprite_rotate_all sprite_rotate_debug sprite_rotate_smart sprite_rotate_release sprite_rotate_units sprite_rotate_examples sprite_rotate_shared sprite_rotate_install sprite_rotate_sourceinstall sprite_rotate_exampleinstall sprite_rotate_distinstall sprite_rotate_zipinstall sprite_rotate_zipsourceinstall sprite_rotate_zipexampleinstall sprite_rotate_zipdistinstall sprite_rotate_clean sprite_rotate_distclean sprite_rotate_cleanall sprite_rotate_info sprite_rotate_makefiles sprite_rotate +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Sprites/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/Makefile.fpc new file mode 100644 index 0000000000..aa098c4890 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=allocation_test animate_simple bitmap_sprites fire_and_sprites simple sprite_extended_palettes sprite_rotate + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/graphics/Sprites/allocation_test/AllocationTest.pp b/packages/libndsfpc/examples/graphics/Sprites/allocation_test/AllocationTest.pp new file mode 100644 index 0000000000..e2951fca2a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/allocation_test/AllocationTest.pp @@ -0,0 +1,243 @@ +program AllocationTest; + +{$mode objfpc} +uses + ctypes, nds9; + +const + SPRITE_MAX = 128; + +var + sizes: array [0..11] of SpriteSize; + +//this is our game entity. Notice it has a bit more info than +//would fit into OAM. This method is a lot more flexible than trying +//to treat oam as a game object directly. +type + TMySprite = record + x, y, z: integer; + dx, dy: integer; + alive: boolean; + gfx: pcuint16; + format: SpriteColorFormat; + size: SpriteSize; + end; + PMySprite = ^TMySprite; + +var + sprites: array [0..SPRITE_MAX - 1] of TMySprite; + spriteMemoryUsage: cuint32 = 0; + oomCount: cuint32 = 0; + allocationCount: cuint32 = 0; + spriteMemSize: cuint32 = 128 * 1024; + + oom: boolean = false; + oam: POamState = @oamMain; + + i: integer; + +procedure createSprite(var s: TmySprite; x, y, z: integer; size: SpriteSize; format: SpriteColorFormat; dx, dy: integer); +begin + s.alive := true; + s.x := x; + s.y := y; + s.z := z; + s.dx := dx; + s.dy := dy; + s.size := size; + s.format := format; + + //api: allocate a chunk of sprite graphics memory + s.gfx := oamAllocateGfx(oam^, size, format); + + allocationCount := allocationCount + 1; + if (s.gfx <> nil) then + begin + spriteMemoryUsage := spriteMemoryUsage + ((size and $FFF) shl 5); + oom := false; + end else + begin + oom := true; + //only a failure of the allocator if there was enough room + if (spriteMemoryUsage + ((size and $FFF) shl 5) < spriteMemSize) then + oomCount := oomCount + 1; + end; +end; + +procedure killSprite(var s: TMySprite); +begin + s.alive := false; + + //api: free the graphics + if (s.gfx <> nil) then + begin + oamFreeGfx(oam^, s.gfx); + spriteMemoryUsage := spriteMemoryUsage - ((s.size and $FFF) shl 5); + end; + + s.gfx := nil; +end; + +function zsort(const a, b: pointer): integer; +var + first, second: PMySprite; +begin + first := PMySprite(a); + second := PMySprite(b); + + //the trivial case + if (first = second) then + result := 0; + + //handle nulls + if (first = nil) and (second <> nil) then + result := -1; + if (first <> nil) and (second = nil) then + result := 1; + + //a dead sprite is always after a living one in the sort + if (not first^.alive) and (second^.alive) then + result := -1; + if (first^.alive) and (not second^.alive) then + result := 1; + if (not first^.alive) and (not second^.alive) then + result := 0; + + //finally if both are alive and not null sort them by depth + if (first^.z = second^.z) then + result := 0; + if(first^.z < second^.z ) then + result := -1; + if(first^.z > second^.z) then + result := 1; + + result := 0; +end; + +procedure updateSprites(); +var + i: integer; +begin + //sort our sprites on z + //a more efficient way would be to keep a sorted list of sprites + qsort(@sprites, SPRITE_MAX, sizeof(TMySprite), @zsort); + + //set oam to values required by my sprite + for i := 0 to SPRITE_MAX - 1 do + begin + //an api function: void oamSet(int id, SpriteSize size, int x, int y, SpriteColorFormat format, const void* gfxOffset, bool hide); + oamSet(oam^, i, sprites[i].x, sprites[i].y, 0, 0, sprites[i].size, sprites[i].format, sprites[i].gfx, -1, false, not sprites[i].alive, false, false, false); + end; +end; + +procedure randomSprite(var s: TMySprite); +var + c: cuint8; + color: cuint16; +begin + + //pick a random color index + c := random(256); + + //two pixels at a time + color := c or (c shl 8); + + //create a randomly oriented sprite going off in a random direction + createSprite(s, random(256), random(192), 0, integer(sizes[random(12)]), SpriteColorFormat_256Color, random(4) - 2, random(4) - 2); + + //dont let sprites get stuck with 0 velocity + if (s.dx = 0) and (s.dy = 0) then + begin + s.dx := random(3) + 1; + s.dy := random(3) + 1; + end; + + //the size (in pixels) is encoded in the low 12 bits of the Size attribute (shifted left by 5) + //we load new graphics each time as this is as much a test of my allocator as an example of api usage + if (s.gfx <> nil) then + swiCopy(@color, s.gfx, ((s.size and $FFF) shl 4) or COPY_MODE_FILL) + else + s.alive := false; +end; + +procedure moveSprites(); +var + i: integer; +begin + for i := 0 to SPRITE_MAX - 1 do + begin + sprites[i].x := sprites[i].x + sprites[i].dx; + sprites[i].y := sprites[i].y + sprites[i].dy; + + if (sprites[i].x >= 256) or (sprites[i].x < 0) or (sprites[i].y >= 192) or (sprites[i].y < 0) then + begin + killSprite(sprites[i]); + randomSprite(sprites[i]); + end; + end; +end; + +var + memUsageTemp: cint;// = $FFFFFFFF; + +begin + randomize; + sizes[0] := SpriteSize_8x8; + sizes[1] := SpriteSize_8x16; + sizes[2] := SpriteSize_16x8; + sizes[3] := SpriteSize_8x32; + sizes[4] := SpriteSize_16x16; + sizes[5] := SpriteSize_32x8; + sizes[6] := SpriteSize_16x32; + sizes[7] := SpriteSize_32x16; + sizes[8] := SpriteSize_32x32; + sizes[9] := SpriteSize_32x64; + sizes[10] := SpriteSize_64x32; + sizes[11] := SpriteSize_64x64; + + videoSetMode(MODE_0_2D); + videoSetModeSub(MODE_0_2D); + vramSetBankA(VRAM_A_MAIN_SPRITE); + vramSetBankB(VRAM_B_MAIN_SPRITE); + vramSetBankD(VRAM_D_SUB_SPRITE); + + consoleDemoInit(); +// consoleDebugInit(DebugDevice_NOCASH); //send stderr to no$gba debug window + + //api: initialize OAM to 1D mapping with XX byte offsets and no external palette + oamInit(oam^, SpriteMapping_1D_128, false); + + //create some sprites + for i := 0 to SPRITE_MAX - 1 do + randomSprite(sprites[i]); + + //load a randomly colored palette + for i := 0 to 255 do + begin + SPRITE_PALETTE[i] := random((1 shl 15) - 1); + SPRITE_PALETTE_SUB[i] := random((1 shl 15) - 1); + end; + + while true do + begin + moveSprites(); + + updateSprites(); + + swiWaitForVBlank(); + + //api: updates real oam memory + oamUpdate(oam^); + + if oom then + if memUsageTemp > spriteMemoryUsage then + memUsageTemp := spriteMemoryUsage; + + consoleClear(); + + printf('Memory usage: %i %i%% '#10, spriteMemoryUsage, 100 * spriteMemoryUsage div (spriteMemSize)); + printf('Percentage fail: %i%% '#10, oomCount * 100 div allocationCount); + printf('Lowest Usage at fail %i %i%% '#10, memUsageTemp, 100 * memUsageTemp div (spriteMemSize)); + end; +end. + diff --git a/packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile b/packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile new file mode 100644 index 0000000000..b9a1b00e5e --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=AllocationTest +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile.fpc new file mode 100644 index 0000000000..c4a4f9cc67 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/allocation_test/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=AllocationTest + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/animate_simple/AnimateSimple.pp b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/AnimateSimple.pp new file mode 100644 index 0000000000..4b410d2dee --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/AnimateSimple.pp @@ -0,0 +1,265 @@ +(*--------------------------------------------------------------------------------- + +Sprite animation using two naive but common approaches to animating frames. + +Sprites were created by via the sprite tool at: + +http://charas-project.net/ +http://charas-project.net/charas2/index.php + +They were altered from their original 24x32 to 32x32 to make loading of frames simple +for example purposes only. They are converted using grit via the supplied sprite.grit file. + +The man sprite loads new frame graphics every time the animation frame changes. This +has the advantage of only consuming 32x32 bytes of data in sprite video memory and the +disadvantages of having to store the rest of the frames in main memory and having the overhead +of copying the data in each frame. + +The woman sprite loads all animation frames to sprite memory upon initialization. This +has the advantage of allowing main memory to be freed, and causes the animation process +to be significantly faster as only a pointer is changed each frame. The disadvantage is +this single sprite is consuming nearly 10% of available sprite graphics memory for +the sub display. + +If one of these two methods are to be employed I recommend the manly approach as the sprite memory is +a scarce resource while main memory and cpu cycles are comparatively abundant. + +A more advanced approach is to keep track of which frames of which sprites are loaded into memory +during the animation stage, load new graphics frames into memory overwriting the currently unused +frames only when sprite memory is full. Decide which frame to unload by keeping track of how +often they are being used and be sure to mark all a sprites frames as unused when it is "killed" + +This demo is using a very rigid animation engine in that it assumes that each frame of sprite +graphics is the same size, that each sprite can only walk up down left or right and that +each of these states is 3 frames in durration. Significantly more advance animations can be +done by creating data structures to describe an animation sequence. Perhaps more advanced +demos will follow this one. + +-- dovoto (jason rogers) + +---------------------------------------------------------------------------------*) +program AnimateSimple; +{$L build/man.o} +{$L build/woman.o} + +uses + ctypes, nds9; + + +var + manTiles: array [0..3071] of cuint; cvar; external; + manPal: array [0..255] of cushort; cvar; external; + womanTiles: array [0..3071] of cuint; cvar; external; + womanPal: array [0..255] of cushort; cvar; external; + +const + FRAMES_PER_ANIMATION = 3; + +type + //--------------------------------------------------------------------- + // The man sprite + // he needs a single pointer to sprite memory + // and a reference to his frame graphics so they + // can be loaded as needed + //--------------------------------------------------------------------- + TMan = record + x: cint; + y: cint; + sprite_gfx_mem: pcuint16; + frame_gfx: pcuint8; + state: cint; + anim_frame: cint; + end; + PMan = ^TMan; + + //--------------------------------------------------------------------- + // The womman sprite + // she needs an array of pointers to sprite memory since all + // her frames are to be loaded. + // she also needs to keep track of which sprite memory pointer is in use + //--------------------------------------------------------------------- + TWoman = record + x: cint; + y: cint; + sprite_gfx_mem: array [0..11] of pcuint16; + gfx_frame: cint; + state: cint; + anim_frame: cint; + end; + PWoman = ^TWoman; + + +const + //--------------------------------------------------------------------- + // The state of the sprite (which way it is walking) + //--------------------------------------------------------------------- + W_UP = 0; + W_RIGHT = 1; + W_DOWN = 2; + W_LEFT = 3; + + //--------------------------------------------------------------------- + // Screen dimentions + //--------------------------------------------------------------------- + SCREEN_TOP = 0; + SCREEN_BOTTOM = 192; + SCREEN_LEFT = 0; + SCREEN_RIGHT = 256; + +//--------------------------------------------------------------------- +// Animating a man requires us to copy in a new frame of data each time +//--------------------------------------------------------------------- +procedure animateMan(var sprite: TMan); +var + frame: cint; + offset: pcuint8; +begin + frame := sprite.anim_frame + sprite.state * FRAMES_PER_ANIMATION; + offset := sprite.frame_gfx + (frame * 32*32); + dmaCopy(offset, sprite.sprite_gfx_mem, 32*32); +end; + +//--------------------------------------------------------------------- +// Initializing a man requires little work, allocate room for one frame +// and set the frame gfx pointer +//--------------------------------------------------------------------- +procedure initMan(var sprite: TMan; gfx: pcuint8); +begin + sprite.sprite_gfx_mem := oamAllocateGfx(oamMain, SpriteSize_32x32, SpriteColorFormat_256Color); + sprite.frame_gfx := gfx; +end; + +//--------------------------------------------------------------------- +// Animating a woman only requires us to alter which sprite memory pointer +// she is using +//--------------------------------------------------------------------- +procedure animateWoman(var sprite: TWoman); +begin + sprite.gfx_frame := sprite.anim_frame + sprite.state * FRAMES_PER_ANIMATION; +end; + +//--------------------------------------------------------------------- +// Initializing a woman requires us to load all of her graphics frames +// into memory +//--------------------------------------------------------------------- +procedure initWoman(var sprite: TWoman; gfx: pcuint8); +var + i: integer; +begin + for i := 0 to 11 do + begin + sprite.sprite_gfx_mem[i] := oamAllocateGfx(oamSub, SpriteSize_32x32, SpriteColorFormat_256Color); + dmaCopy(gfx, sprite.sprite_gfx_mem[i], 1024); + gfx := gfx + 32*32; + end; +end; + +var + Man: TMan; + Woman: TWoman; + keys: cint; + +begin + Man.x := 0; + Man.y := 0; + Man.state := 0; + Man.anim_frame := 0; + Woman.x := 0; + Woman.y := 0; + Woman.state := 0; + Woman.anim_frame := 0; + + //----------------------------------------------------------------- + // Initialize the graphics engines + //----------------------------------------------------------------- + videoSetMode(MODE_0_2D); + videoSetModeSub(MODE_0_2D); + + vramSetBankA(VRAM_A_MAIN_SPRITE); + vramSetBankD(VRAM_D_SUB_SPRITE); + + oamInit(oamMain, SpriteMapping_1D_128, false); + oamInit(oamSub, SpriteMapping_1D_128, false); + + //----------------------------------------------------------------- + // Initialize the two sprites + //----------------------------------------------------------------- + initMan(man, @manTiles); + initWoMan(woman, @womanTiles); + + dmaCopy(@manPal, SPRITE_PALETTE, 512); + dmaCopy(@womanPal, SPRITE_PALETTE_SUB, 512); + + //----------------------------------------------------------------- + // main loop + //----------------------------------------------------------------- + while true do + begin + scanKeys(); + + keys := keysHeld(); + + if keys <> 0 then + begin + if (keys and KEY_UP) <> 0 then + begin + if man.y >= SCREEN_TOP then dec(man.y); + if woman.y >= SCREEN_TOP then dec(woman.y); + + man.state := W_UP; + woman.state := W_UP; + end; + if (keys and KEY_LEFT) <> 0 then + begin + if man.x >= SCREEN_LEFT then dec(man.x); + if woman.x >= SCREEN_LEFT then dec(woman.x); + + man.state := W_LEFT; + woman.state := W_LEFT; + end; + if (keys and KEY_RIGHT) <> 0 then + begin + if man.x <= SCREEN_RIGHT then inc(man.x); + if woman.x <= SCREEN_RIGHT then inc(woman.x); + + man.state := W_RIGHT; + woman.state := W_RIGHT; + end; + if (keys and KEY_DOWN) <> 0 then + begin + if man.y <= SCREEN_BOTTOM then inc(man.y); + if woman.y <= SCREEN_BOTTOM then inc(woman.y); + + man.state := W_DOWN; + woman.state := W_DOWN; + end; + + inc(man.anim_frame); + inc(woman.anim_frame); + + if man.anim_frame >= FRAMES_PER_ANIMATION then man.anim_frame := 0; + if woman.anim_frame >= FRAMES_PER_ANIMATION then woman.anim_frame := 0; + + end; + + animateMan(man); + animateWoman(woman); + + //----------------------------------------------------------------- + // Set oam attributes, notice the only difference is in the sprite + // graphics memory pointer argument. The man only has one pointer + // while the women has an array of pointers + //----------------------------------------------------------------- + oamSet(oamMain, 0, man.x, man.y, 0, 0, SpriteSize_32x32, SpriteColorFormat_256Color, + man.sprite_gfx_mem, -1, false, false, false, false, false); + + oamSet(oamSub, 0, woman.x, woman.y, 0, 0, SpriteSize_32x32, SpriteColorFormat_256Color, + woman.sprite_gfx_mem[woman.gfx_frame], -1, false, false, false, false, false); + + swiWaitForVBlank(); + + oamUpdate(oamMain); + oamUpdate(oamSub); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile new file mode 100644 index 0000000000..6b12899b87 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +INC = inc +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))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=AnimateSimple +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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) $(SPRITE_FILES) fpc_all +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 +$(SPRITE_FILES): $(wildcard %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) sprites/$(@) -fts -ff sprites/sprite.grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile.fpc new file mode 100644 index 0000000000..ca2f306b85 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=AnimateSimple + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +INC = inc +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))) + +[rules] +.NOTPARALLEL: +clean: dir_delete fpc_clean fpc_cleanall +all: dir_make $(BIN_FILES) $(SPRITE_FILES) fpc_all + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 +# +$(SPRITE_FILES): $(wildcard %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) sprites/$(@) -fts -ff sprites/sprite.grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/man.png b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/man.png new file mode 100644 index 0000000000..d2da9e87ce Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/man.png differ diff --git a/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/sprite.grit b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/sprite.grit new file mode 100644 index 0000000000..616b894aae --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/sprite.grit @@ -0,0 +1,5 @@ +-m! +-gB8 +#metatile +-Mh4 +-Mw4 diff --git a/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/woman.png b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/woman.png new file mode 100644 index 0000000000..a467109f5b Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/woman.png differ diff --git a/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/BitmapSprites.pp b/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/BitmapSprites.pp new file mode 100644 index 0000000000..261e6c08ab --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/BitmapSprites.pp @@ -0,0 +1,124 @@ +program BitmapSprites; + +uses + ctypes, nds9; + +//a simple sprite structure +//it is generally preferred to separate your game object +//from OAM + +type + TMySprite = record + gfx: pcuint16; + size: SpriteSize; + format: SpriteColorFormat; + rotationIndex: integer; + paletteAlpha: integer; + x: integer; + y: integer; + end; + +var + sprites: array [0..2] of TMySprite; + i, angle: integer; + +begin + with Sprites[0] do + begin + gfx := nil; + size := SpriteSize_32x32; + format := SpriteColorFormat_Bmp; + rotationIndex := 0; + paletteAlpha := 15; + x := 20; + y := 15; + end; + + with Sprites[1] do + begin + gfx := nil; + size := SpriteSize_32x32; + format := SpriteColorFormat_256Color; + rotationIndex := -1; + paletteAlpha := 0; + x := 20; + y := 80; + end; + + with Sprites[2] do + begin + gfx := nil; + size := SpriteSize_32x32; + format := SpriteColorFormat_16Color; + rotationIndex := -1; + paletteAlpha := 1; + x := 20; + y := 136; + end; + + videoSetModeSub(MODE_0_2D); + + consoleDemoInit(); + + //initialize the sub sprite engine with 1D mapping 128 byte boundary + //and no external palette support + oamInit(oamSub, SpriteMapping_Bmp_1D_128, false); + + + vramSetBankD(VRAM_D_SUB_SPRITE); + + //allocate some space for the sprite graphics + for i := 0 to 2 do + sprites[i].gfx := oamAllocateGfx(oamSub, sprites[i].size, sprites[i].format); + + //ugly positional printf + iprintf(#27 + '[1;1H' + 'Direct Bitmap:'); + iprintf(#27 + '[9;1H' + '256 color:'); + iprintf(#27 + '[16;1H' + '16 color:'); + + //fill bmp sprite with the color red + dmaFillHalfWords(ARGB16(1,31,0,0), sprites[0].gfx, 32*32*2); + //fill the 256 color sprite with index 1 (2 pixels at a time) + dmaFillHalfWords((1 shl 8) or 1, sprites[1].gfx, 32*32); + //fill the 16 color sprite with index 1 (4 pixels at a time) + dmaFillHalfWords((1 shl 12) or (1 shl 8) or (1 shl 4) or 1, sprites[2].gfx, 32*32 div 2); + + //set index 1 to blue...this will be the 256 color sprite + SPRITE_PALETTE_SUB[1] := RGB15(0,31,0); + //set index 17 to green...this will be the 16 color sprite + SPRITE_PALETTE_SUB[16 + 1] := RGB15(0,0,31); + + angle := 0; + + while true do + begin + for i := 0 to 2 do + begin + oamSet( + oamSub, //sub display + i, //oam entry to set + sprites[i].x, sprites[i].y, //position + 0, //priority + sprites[i].paletteAlpha, //palette for 16 color sprite or alpha for bmp sprite + sprites[i].size, + sprites[i].format, + sprites[i].gfx, + sprites[i].rotationIndex, + true, //double the size of rotated sprites + false, //don't hide the sprite + false, false, //vflip, hflip + false //apply mosaic + ); + end; + + oamRotateScale(oamSub, 0, angle, (1 shl 8), (1 shl 8)); + + angle := angle + 64; + + swiWaitForVBlank(); + + //send the updates to the hardware + oamUpdate(oamSub); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile b/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile new file mode 100644 index 0000000000..979a3bd6ca --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +INC = inc +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))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=BitmapSprites +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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) $(SPRITE_FILES) fpc_all +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 +$(SPRITE_FILES): $(wildcard %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) sprites/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile.fpc new file mode 100644 index 0000000000..1b2e6c673b --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/bitmap_sprites/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=BitmapSprites + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +INC = inc +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))) + +[rules] +.NOTPARALLEL: +clean: dir_delete fpc_clean fpc_cleanall +all: dir_make $(BIN_FILES) $(SPRITE_FILES) fpc_all + +# +# Delete temp directories +# +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 +# +$(SPRITE_FILES): $(wildcard %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) sprites/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/FireAndSprites.pp b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/FireAndSprites.pp new file mode 100644 index 0000000000..a5ceb5dcea --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/FireAndSprites.pp @@ -0,0 +1,233 @@ +program FireAndSprites; +{$L build/ball.pcx.o} + +uses + ctypes, nds9; + +{$include inc/ball.pcx.inc} + +const + NUM_SPRITES = 128; + +var + OAMCopySub: array [0..127] of SpriteEntry; + +type + TSprite = record + x, y: cint; //location + dx, dy: cint; //speed + oam: PSpriteEntry; + gfxID: integer; //graphics location + end; + PSprite = ^TSprite; + + +procedure MoveSprite(var sp: TSprite); +var + x, y: integer; +begin + x := sp.x shr 8; + y := sp.y shr 8; + sp.oam^.y := y; + sp.oam^.x := x; +end; + +procedure initOAM(); +var + i: integer; +begin + for i := 0 to 127 do + OAMCopySub[i].attribute[0] := ATTR0_DISABLED; +end; + +procedure updateOAM(); +begin + memcpy(OAM_SUB, @OAMCopySub, 128 * sizeof(SpriteEntry)); + //dmaCopy(@OAMCopySub, OAM_SUB, 128 * sizeof(SpriteEntry)); +end; + + +var + back, front: pcuint16; + sprites: array [0..NUM_SPRITES - 1] of TSprite; + i, delta: integer; + ix, iy: integer; + screen: integer; + map0, map1: pcuint16; + red: cuint16; + ball: sImage; + +begin + randomize; + back := VRAM_A; + front := VRAM_B; + + i := 0; + delta := 0; + ix := 0; + iy := 0; + screen := 1; + map0 := pcuint16(SCREEN_BASE_BLOCK_SUB(1)); + map1 := pcuint16(SCREEN_BASE_BLOCK_SUB(2)); + + //set main display to render directly from the frame buffer + videoSetMode(MODE_FB1); + + //set up the sub display + videoSetModeSub(MODE_0_2D or + DISPLAY_SPR_1D_LAYOUT or + DISPLAY_SPR_ACTIVE or + DISPLAY_BG0_ACTIVE or + DISPLAY_BG1_ACTIVE ); + + //vram banks are somewhat complex + vramSetMainBanks(VRAM_A_LCD, VRAM_B_LCD, VRAM_C_SUB_BG, VRAM_D_SUB_SPRITE); + + //load our ball pcx file into an image + loadPCX(pcuint8(ball_pcx), @ball); + + //tile it so it is usefull as sprite data + imageTileData(@ball); + + // Sprite initialisation + for i := 0 to 255 do + SPRITE_PALETTE_SUB[i] := cuint32(ball.palette[i]); + + for i := 0 to 32*16 - 1 do + SPRITE_GFX_SUB[i] := cuint32(ball.image.data16[i]); + + //turn off sprites + initOAM(); + + for i := 0 to NUM_SPRITES - 1 do + begin + //random place and speed + sprites[i].x := random($FFFF); + sprites[i].y := random($7FFF); + sprites[i].dx := (random($FF)) + $100; + sprites[i].dy := (random($FF)) + $100; + + if random(2) = 1 then + sprites[i].dx := -sprites[i].dx; + if random(2) = 1 then + sprites[i].dy := -sprites[i].dy; + + sprites[i].oam := @OAMCopySub[i]; + sprites[i].gfxID := 0; + + //set up our sprites OAM entry attributes + sprites[i].oam^.attribute[0] := ATTR0_COLOR_256 or ATTR0_SQUARE; + sprites[i].oam^.attribute[1] := ATTR1_SIZE_32; + sprites[i].oam^.attribute[2] := sprites[i].gfxID; + end; + + //set up two backgrounds to scroll around + REG_BG0CNT_SUB^ := BG_COLOR_256 or (1 shl MAP_BASE_SHIFT); + REG_BG1CNT_SUB^ := BG_COLOR_256 or (2 shl MAP_BASE_SHIFT); + + BG_PALETTE_SUB[0] := RGB15(10,10,10); + BG_PALETTE_SUB[1] := RGB15(0,16,0); + BG_PALETTE_SUB[2] := RGB15(0,0,31); + + //load the maps with alternating tiles (0,1 for bg0 and 0,2 for bg1) + for iy := 0 to 31 do + for ix := 0 to 31 do + begin + map0[iy * 32 + ix] := (ix xor iy) and 1; + map1[iy * 32 + ix] := ((ix xor iy) and 1) shl 1; + end; + + //fill 2 tiles with different colors + for i := 0 to (64 div 2) - 1 do + begin + BG_GFX_SUB[i+32] := $0101; + BG_GFX_SUB[i+32+32] := $0202; + end; + + while (true) do + begin + //scroll the background + REG_BG0HOFS^ := delta; + inc(delta); + REG_BG0VOFS^ := delta; + + //move the sprites + for i := 0 to NUM_SPRITES - 1 do + begin + sprites[i].x := sprites[i].x + sprites[i].dx; + sprites[i].y := sprites[i].y + sprites[i].dy; + + //check for collision with the screen boundries + if (sprites[i].x < (1 shl 8)) or (sprites[i].x > (247 shl 8)) then + sprites[i].dx := -sprites[i].dx; + + if (sprites[i].y < (1 shl 8)) or (sprites[i].y > (182 shl 8)) then + sprites[i].dy := -sprites[i].dy; + + //reposition the sprites + MoveSprite(sprites[i]); + end; + + + + //do the plasma/fire + for ix := 0 to SCREEN_WIDTH - 1 do + begin + back[ix + SCREEN_WIDTH * (SCREEN_HEIGHT - 1)] := random($FFFF); + back[ix + SCREEN_WIDTH * (SCREEN_HEIGHT - 2)] := random($FFFF); + end; + + back := back + 1; + + for iy := 1 to SCREEN_HEIGHT - 3 do + begin + for ix := 1 to SCREEN_WIDTH - 2 do + begin + red := 0; + + red := red + front[0]; + red := red + front[2]; + + front := front + SCREEN_WIDTH; + + red := red + front[0]; + red := red + front[1]; + red := red + front[2]; + + front := front + SCREEN_WIDTH; + + red := red + front[0]; + red := red + front[1]; + red := red + front[2]; + + front := front - ((2 * SCREEN_WIDTH) - 1); + + back[0] := (red shr 3); + back := back + 1; + end; + back := back + 2; + front := front + 2; + + end; + + swiWaitForVBlank(); + + updateOAM(); + + //flip screens + if (screen) <> 0 then + begin + videoSetMode(MODE_FB1); + front := VRAM_B; + back := VRAM_A; + screen := 0; + end else + begin + videoSetMode(MODE_FB0); + front := VRAM_A; + back := VRAM_B; + screen := 1; + end; + end; +end. + diff --git a/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile new file mode 100644 index 0000000000..953170ca0c --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=FireAndSprites +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -O2 +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile.fpc new file mode 100644 index 0000000000..49c160e678 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=FireAndSprites + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm -O2 +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/data/ball.pcx b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/data/ball.pcx new file mode 100644 index 0000000000..d7120162ac Binary files /dev/null and b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/data/ball.pcx differ diff --git a/packages/libndsfpc/examples/graphics/Sprites/simple/Makefile b/packages/libndsfpc/examples/graphics/Sprites/simple/Makefile new file mode 100644 index 0000000000..27efdc26a7 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/simple/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=Simple +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/simple/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/simple/Makefile.fpc new file mode 100644 index 0000000000..13b5c0e432 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/simple/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=Simple + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/simple/Simple.pp b/packages/libndsfpc/examples/graphics/Sprites/simple/Simple.pp new file mode 100644 index 0000000000..348ea1c630 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/simple/Simple.pp @@ -0,0 +1,80 @@ +program Simple; + +uses + ctypes, nds9; + + +var + i: integer; + touch: touchPosition; + gfx, gfxSub: pcuint16; + +begin + videoSetMode(MODE_0_2D); + videoSetModeSub(MODE_0_2D); + + vramSetBankA(VRAM_A_MAIN_SPRITE); + vramSetBankD(VRAM_D_SUB_SPRITE); + + oamInit(oamMain, SpriteMapping_1D_32, false); + oamInit(oamSub, SpriteMapping_1D_32, false); + + gfx := oamAllocateGfx(oamMain, SpriteSize_16x16, SpriteColorFormat_256Color); + gfxSub := oamAllocateGfx(oamSub, SpriteSize_16x16, SpriteColorFormat_256Color); + + for i := 0 to (16 * 16 div 2) - 1 do + begin + gfx[i] := 1 or (1 shl 8); + gfxSub[i] := 1 or (1 shl 8); + end; + + SPRITE_PALETTE[1] := RGB15(31,0,0); + SPRITE_PALETTE_SUB[1] := RGB15(0,31,0); + + while true do + begin + scanKeys(); + + if (keysHeld() and KEY_TOUCH) <> 0 then + touchRead(touch); + + oamSet(oamMain, //main graphics engine context + 0, //oam index (0 to 127) + touch.px, touch.py, //x and y pixle location of the sprite + 0, //priority, lower renders last (on top) + 0, //this is the palette index if multiple palettes or the alpha value if bmp sprite + SpriteSize_16x16, + SpriteColorFormat_256Color, + gfx, //pointer to the loaded graphics + -1, //sprite rotation data + false, //double the size when rotating? + false, //hide the sprite? + false, false, //vflip, hflip + false //apply mosaic + ); + + + oamSet(oamSub, + 0, + touch.px, + touch.py, + 0, + 0, + SpriteSize_16x16, + SpriteColorFormat_256Color, + gfxSub, + -1, + false, + false, + false, false, + false + ); + + swiWaitForVBlank(); + + + oamUpdate(oamMain); + oamUpdate(oamSub); + end; + +end. diff --git a/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile b/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile new file mode 100644 index 0000000000..0533d46145 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=SpriteExtendedPalettes +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile.fpc new file mode 100644 index 0000000000..b4c716d1bf --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=SpriteExtendedPalettes + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/SpriteExtendedPalettes.pp b/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/SpriteExtendedPalettes.pp new file mode 100644 index 0000000000..b742c3f02a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/sprite_extended_palettes/SpriteExtendedPalettes.pp @@ -0,0 +1,85 @@ +program SpriteExtendedPalettes; + +uses + ctypes, nds9; + +var + i: integer; + touch: touchPosition; + gfx1, gfx2: pcuint16; + +begin + videoSetMode(MODE_0_2D); + + vramSetBankA(VRAM_A_MAIN_SPRITE); + + oamInit(oamMain, SpriteMapping_1D_32, true); + + gfx1 := oamAllocateGfx(oamMain, SpriteSize_16x16, SpriteColorFormat_256Color); + gfx2 := oamAllocateGfx(oamMain, SpriteSize_16x16, SpriteColorFormat_256Color); + + //------------------------------------------------------------------ + // notice both sprites are filled with color 1 + //------------------------------------------------------------------ + for i := 0 to (16 * 16 div 2) - 1 do + begin + gfx1[i] := 1 or (1 shl 8); + gfx2[i] := 1 or (1 shl 8); + end; + + //------------------------------------------------------------------ + // unlock vram (cannot write to vram while mapped as palette memory) + //------------------------------------------------------------------ + vramSetBankF(VRAM_F_LCD); + + VRAM_F_EXT_PALETTE[0][1] := RGB15(31,0,0); + VRAM_F_EXT_PALETTE[1][1] := RGB15(0,31,0); + + // set vram to ex palette + vramSetBankF(VRAM_F_SPRITE_EXT_PALETTE); + + while true do + begin + scanKeys(); + + if (keysHeld() and KEY_TOUCH) <> 0 then + touchRead(touch); + + oamSet(oamMain, //main graphics engine context + 0, //oam index (0 to 127) + touch.px, touch.py, //x and y pixle location of the sprite + 0, //priority, lower renders last (on top) + 0, //this is the palette index if multiple palettes or the alpha value if bmp sprite + SpriteSize_16x16, + SpriteColorFormat_256Color, + gfx1, //pointer to the loaded graphics + -1, //sprite rotation data + false, //double the size when rotating? + false, //hide the sprite? + false, false, //vflip, hflip + false //apply mosaic + ); + + + oamSet(oamMain, + 1, + SCREEN_WIDTH - touch.px, + SCREEN_HEIGHT - touch.py, + 0, + 1, //use second palette + SpriteSize_16x16, + SpriteColorFormat_256Color, + gfx2, + -1, + false, + false, + false, false, + false + ); + + swiWaitForVBlank(); + + + oamUpdate(oamMain); + end; +end. diff --git a/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile b/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile new file mode 100644 index 0000000000..5f50890f75 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=SpriteRotate +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile.fpc b/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile.fpc new file mode 100644 index 0000000000..ebd92c67ef --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=SpriteRotate + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/SpriteRotate.pp b/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/SpriteRotate.pp new file mode 100644 index 0000000000..decc5d9ba6 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/sprite_rotate/SpriteRotate.pp @@ -0,0 +1,82 @@ +program SpriteRotate; + +uses + ctypes, nds9; + +var + i: integer; + angle: integer = 0; + gfx: pcuint16; +begin + videoSetMode(MODE_0_2D); + + vramSetBankA(VRAM_A_MAIN_SPRITE); + + oamInit(oamMain, SpriteMapping_1D_32, false); + + gfx := oamAllocateGfx(oamMain, SpriteSize_32x32, SpriteColorFormat_256Color); + + for i := 0 to (32 * 32 div 2) -1 do + gfx[i] := 1 or (1 shl 8); + + SPRITE_PALETTE[1] := RGB15(31,0,0); + + while true do + begin + scanKeys(); + + if (keysHeld() and KEY_LEFT) <> 0 then + angle := angle + degreesToAngle(2); + if (keysHeld() and KEY_RIGHT) <> 0 then + angle := angle - degreesToAngle(2); + + //------------------------------------------------------------------------- + // Set the first rotation/scale matrix + // + // There are 32 rotation/scale matricies that can store sprite rotations + // Any number of sprites can share a sprite rotation matrix or each sprite + // (up to 32) can utilize a seperate rotation. Because this sprite is doubled + // in size we have to adjust its position by subtracting half of its height and + // width (20 - 16, 20 - 16, ) + //------------------------------------------------------------------------- + oamRotateScale(oamMain, 0, angle, intToFixed(1, 8), intToFixed(1, 8)); + + oamSet(oamMain, //main graphics engine context + 0, //oam index (0 to 127) + 20 - 16, 20 - 16, //x and y pixle location of the sprite + 0, //priority, lower renders last (on top) + 0, //this is the palette index if multiple palettes or the alpha value if bmp sprite + SpriteSize_32x32, + SpriteColorFormat_256Color, + gfx, //pointer to the loaded graphics + 0, //sprite rotation/scale matrix index + true, //double the size when rotating? + false, //hide the sprite? + false, false, //vflip, hflip + false //apply mosaic + ); + + //------------------------------------------------------------------------- + // Because the sprite below has size double set to false it can never be larger than + // 32x32 causing it to clip as it rotates. + //------------------------------------------------------------------------- + oamSet(oamMain, //main graphics engine context + 1, //oam index (0 to 127) + 204, 20, //x and y pixle location of the sprite + 0, //priority, lower renders last (on top) + 0, //this is the palette index if multiple palettes or the alpha value if bmp sprite + SpriteSize_32x32, + SpriteColorFormat_256Color, + gfx, //pointer to the loaded graphics + 0, //sprite rotation/scale matrix index + false, //double the size when rotating? + false, //hide the sprite? + false, false, //vflip, hflip + false //apply mosaic + ); + swiWaitForVBlank(); + + + oamUpdate(oamMain); + end; +end. diff --git a/packages/libndsfpc/examples/hello_world/Makefile b/packages/libndsfpc/examples/hello_world/Makefile new file mode 100644 index 0000000000..80bbb9a333 --- /dev/null +++ b/packages/libndsfpc/examples/hello_world/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=helloWorld +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/hello_world/Makefile.fpc b/packages/libndsfpc/examples/hello_world/Makefile.fpc new file mode 100644 index 0000000000..e818572699 --- /dev/null +++ b/packages/libndsfpc/examples/hello_world/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=helloWorld + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/hello_world/helloWorld.pp b/packages/libndsfpc/examples/hello_world/helloWorld.pp new file mode 100644 index 0000000000..d556d20cac --- /dev/null +++ b/packages/libndsfpc/examples/hello_world/helloWorld.pp @@ -0,0 +1,36 @@ +program hello_world; + +uses + ctypes, nds9; + +var + frame: integer; + touchXY: touchPosition; + +procedure Vblank(); +begin + inc(frame); +end; + + +begin + irqSet(IRQ_VBLANK, @Vblank); + + consoleDemoInit(); + + iprintf(' Hello DS dev''rs'#10); + iprintf(#27'[32m' + 'www.devkitpro.org'#10); + iprintf(#27'[32;1m' + 'www.drunkencoders.com'#27'[39m'); + + while true do + begin + swiWaitForVBlank(); + touchRead(touchXY); + + // print at using ansi escape sequence \x1b[line;columnH + iprintf(#27'[10;0H' + 'Frame = %d', frame); + iprintf(#27'[16;0H' + 'Touch x = %04X, %04X'#10, touchXY.rawx, touchXY.px); + iprintf('Touch y = %04X, %04X'#10, touchXY.rawy, touchXY.py); + end; + +end. diff --git a/packages/libndsfpc/examples/input/Makefile b/packages/libndsfpc/examples/input/Makefile new file mode 100644 index 0000000000..1156c67290 --- /dev/null +++ b/packages/libndsfpc/examples/input/Makefile @@ -0,0 +1,1483 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=keyboard Touch_Pad +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_KEYBOARD=1 +TARGET_DIRS_TOUCH_PAD=1 +endif +ifdef TARGET_DIRS_KEYBOARD +keyboard_all: + $(MAKE) -C keyboard all +keyboard_debug: + $(MAKE) -C keyboard debug +keyboard_smart: + $(MAKE) -C keyboard smart +keyboard_release: + $(MAKE) -C keyboard release +keyboard_units: + $(MAKE) -C keyboard units +keyboard_examples: + $(MAKE) -C keyboard examples +keyboard_shared: + $(MAKE) -C keyboard shared +keyboard_install: + $(MAKE) -C keyboard install +keyboard_sourceinstall: + $(MAKE) -C keyboard sourceinstall +keyboard_exampleinstall: + $(MAKE) -C keyboard exampleinstall +keyboard_distinstall: + $(MAKE) -C keyboard distinstall +keyboard_zipinstall: + $(MAKE) -C keyboard zipinstall +keyboard_zipsourceinstall: + $(MAKE) -C keyboard zipsourceinstall +keyboard_zipexampleinstall: + $(MAKE) -C keyboard zipexampleinstall +keyboard_zipdistinstall: + $(MAKE) -C keyboard zipdistinstall +keyboard_clean: + $(MAKE) -C keyboard clean +keyboard_distclean: + $(MAKE) -C keyboard distclean +keyboard_cleanall: + $(MAKE) -C keyboard cleanall +keyboard_info: + $(MAKE) -C keyboard info +keyboard_makefiles: + $(MAKE) -C keyboard makefiles +keyboard: + $(MAKE) -C keyboard all +.PHONY: keyboard_all keyboard_debug keyboard_smart keyboard_release keyboard_units keyboard_examples keyboard_shared keyboard_install keyboard_sourceinstall keyboard_exampleinstall keyboard_distinstall keyboard_zipinstall keyboard_zipsourceinstall keyboard_zipexampleinstall keyboard_zipdistinstall keyboard_clean keyboard_distclean keyboard_cleanall keyboard_info keyboard_makefiles keyboard +endif +ifdef TARGET_DIRS_TOUCH_PAD +Touch_Pad_all: + $(MAKE) -C Touch_Pad all +Touch_Pad_debug: + $(MAKE) -C Touch_Pad debug +Touch_Pad_smart: + $(MAKE) -C Touch_Pad smart +Touch_Pad_release: + $(MAKE) -C Touch_Pad release +Touch_Pad_units: + $(MAKE) -C Touch_Pad units +Touch_Pad_examples: + $(MAKE) -C Touch_Pad examples +Touch_Pad_shared: + $(MAKE) -C Touch_Pad shared +Touch_Pad_install: + $(MAKE) -C Touch_Pad install +Touch_Pad_sourceinstall: + $(MAKE) -C Touch_Pad sourceinstall +Touch_Pad_exampleinstall: + $(MAKE) -C Touch_Pad exampleinstall +Touch_Pad_distinstall: + $(MAKE) -C Touch_Pad distinstall +Touch_Pad_zipinstall: + $(MAKE) -C Touch_Pad zipinstall +Touch_Pad_zipsourceinstall: + $(MAKE) -C Touch_Pad zipsourceinstall +Touch_Pad_zipexampleinstall: + $(MAKE) -C Touch_Pad zipexampleinstall +Touch_Pad_zipdistinstall: + $(MAKE) -C Touch_Pad zipdistinstall +Touch_Pad_clean: + $(MAKE) -C Touch_Pad clean +Touch_Pad_distclean: + $(MAKE) -C Touch_Pad distclean +Touch_Pad_cleanall: + $(MAKE) -C Touch_Pad cleanall +Touch_Pad_info: + $(MAKE) -C Touch_Pad info +Touch_Pad_makefiles: + $(MAKE) -C Touch_Pad makefiles +Touch_Pad: + $(MAKE) -C Touch_Pad all +.PHONY: Touch_Pad_all Touch_Pad_debug Touch_Pad_smart Touch_Pad_release Touch_Pad_units Touch_Pad_examples Touch_Pad_shared Touch_Pad_install Touch_Pad_sourceinstall Touch_Pad_exampleinstall Touch_Pad_distinstall Touch_Pad_zipinstall Touch_Pad_zipsourceinstall Touch_Pad_zipexampleinstall Touch_Pad_zipdistinstall Touch_Pad_clean Touch_Pad_distclean Touch_Pad_cleanall Touch_Pad_info Touch_Pad_makefiles Touch_Pad +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/input/Makefile.fpc b/packages/libndsfpc/examples/input/Makefile.fpc new file mode 100644 index 0000000000..fa9d5a97fd --- /dev/null +++ b/packages/libndsfpc/examples/input/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=keyboard Touch_Pad + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/input/Touch_Pad/Makefile b/packages/libndsfpc/examples/input/Touch_Pad/Makefile new file mode 100644 index 0000000000..07836e4a0b --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/Makefile @@ -0,0 +1,1529 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=touch_area touch_look touch_test +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_TOUCH_AREA=1 +TARGET_DIRS_TOUCH_LOOK=1 +TARGET_DIRS_TOUCH_TEST=1 +endif +ifdef TARGET_DIRS_TOUCH_AREA +touch_area_all: + $(MAKE) -C touch_area all +touch_area_debug: + $(MAKE) -C touch_area debug +touch_area_smart: + $(MAKE) -C touch_area smart +touch_area_release: + $(MAKE) -C touch_area release +touch_area_units: + $(MAKE) -C touch_area units +touch_area_examples: + $(MAKE) -C touch_area examples +touch_area_shared: + $(MAKE) -C touch_area shared +touch_area_install: + $(MAKE) -C touch_area install +touch_area_sourceinstall: + $(MAKE) -C touch_area sourceinstall +touch_area_exampleinstall: + $(MAKE) -C touch_area exampleinstall +touch_area_distinstall: + $(MAKE) -C touch_area distinstall +touch_area_zipinstall: + $(MAKE) -C touch_area zipinstall +touch_area_zipsourceinstall: + $(MAKE) -C touch_area zipsourceinstall +touch_area_zipexampleinstall: + $(MAKE) -C touch_area zipexampleinstall +touch_area_zipdistinstall: + $(MAKE) -C touch_area zipdistinstall +touch_area_clean: + $(MAKE) -C touch_area clean +touch_area_distclean: + $(MAKE) -C touch_area distclean +touch_area_cleanall: + $(MAKE) -C touch_area cleanall +touch_area_info: + $(MAKE) -C touch_area info +touch_area_makefiles: + $(MAKE) -C touch_area makefiles +touch_area: + $(MAKE) -C touch_area all +.PHONY: touch_area_all touch_area_debug touch_area_smart touch_area_release touch_area_units touch_area_examples touch_area_shared touch_area_install touch_area_sourceinstall touch_area_exampleinstall touch_area_distinstall touch_area_zipinstall touch_area_zipsourceinstall touch_area_zipexampleinstall touch_area_zipdistinstall touch_area_clean touch_area_distclean touch_area_cleanall touch_area_info touch_area_makefiles touch_area +endif +ifdef TARGET_DIRS_TOUCH_LOOK +touch_look_all: + $(MAKE) -C touch_look all +touch_look_debug: + $(MAKE) -C touch_look debug +touch_look_smart: + $(MAKE) -C touch_look smart +touch_look_release: + $(MAKE) -C touch_look release +touch_look_units: + $(MAKE) -C touch_look units +touch_look_examples: + $(MAKE) -C touch_look examples +touch_look_shared: + $(MAKE) -C touch_look shared +touch_look_install: + $(MAKE) -C touch_look install +touch_look_sourceinstall: + $(MAKE) -C touch_look sourceinstall +touch_look_exampleinstall: + $(MAKE) -C touch_look exampleinstall +touch_look_distinstall: + $(MAKE) -C touch_look distinstall +touch_look_zipinstall: + $(MAKE) -C touch_look zipinstall +touch_look_zipsourceinstall: + $(MAKE) -C touch_look zipsourceinstall +touch_look_zipexampleinstall: + $(MAKE) -C touch_look zipexampleinstall +touch_look_zipdistinstall: + $(MAKE) -C touch_look zipdistinstall +touch_look_clean: + $(MAKE) -C touch_look clean +touch_look_distclean: + $(MAKE) -C touch_look distclean +touch_look_cleanall: + $(MAKE) -C touch_look cleanall +touch_look_info: + $(MAKE) -C touch_look info +touch_look_makefiles: + $(MAKE) -C touch_look makefiles +touch_look: + $(MAKE) -C touch_look all +.PHONY: touch_look_all touch_look_debug touch_look_smart touch_look_release touch_look_units touch_look_examples touch_look_shared touch_look_install touch_look_sourceinstall touch_look_exampleinstall touch_look_distinstall touch_look_zipinstall touch_look_zipsourceinstall touch_look_zipexampleinstall touch_look_zipdistinstall touch_look_clean touch_look_distclean touch_look_cleanall touch_look_info touch_look_makefiles touch_look +endif +ifdef TARGET_DIRS_TOUCH_TEST +touch_test_all: + $(MAKE) -C touch_test all +touch_test_debug: + $(MAKE) -C touch_test debug +touch_test_smart: + $(MAKE) -C touch_test smart +touch_test_release: + $(MAKE) -C touch_test release +touch_test_units: + $(MAKE) -C touch_test units +touch_test_examples: + $(MAKE) -C touch_test examples +touch_test_shared: + $(MAKE) -C touch_test shared +touch_test_install: + $(MAKE) -C touch_test install +touch_test_sourceinstall: + $(MAKE) -C touch_test sourceinstall +touch_test_exampleinstall: + $(MAKE) -C touch_test exampleinstall +touch_test_distinstall: + $(MAKE) -C touch_test distinstall +touch_test_zipinstall: + $(MAKE) -C touch_test zipinstall +touch_test_zipsourceinstall: + $(MAKE) -C touch_test zipsourceinstall +touch_test_zipexampleinstall: + $(MAKE) -C touch_test zipexampleinstall +touch_test_zipdistinstall: + $(MAKE) -C touch_test zipdistinstall +touch_test_clean: + $(MAKE) -C touch_test clean +touch_test_distclean: + $(MAKE) -C touch_test distclean +touch_test_cleanall: + $(MAKE) -C touch_test cleanall +touch_test_info: + $(MAKE) -C touch_test info +touch_test_makefiles: + $(MAKE) -C touch_test makefiles +touch_test: + $(MAKE) -C touch_test all +.PHONY: touch_test_all touch_test_debug touch_test_smart touch_test_release touch_test_units touch_test_examples touch_test_shared touch_test_install touch_test_sourceinstall touch_test_exampleinstall touch_test_distinstall touch_test_zipinstall touch_test_zipsourceinstall touch_test_zipexampleinstall touch_test_zipdistinstall touch_test_clean touch_test_distclean touch_test_cleanall touch_test_info touch_test_makefiles touch_test +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/input/Touch_Pad/Makefile.fpc b/packages/libndsfpc/examples/input/Touch_Pad/Makefile.fpc new file mode 100644 index 0000000000..f088b669ac --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=touch_area touch_look touch_test + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile b/packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile new file mode 100644 index 0000000000..aeba71588f --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=touchArea +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile.fpc b/packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile.fpc new file mode 100644 index 0000000000..f841278745 --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_area/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=touchArea + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_area/touchArea.pp b/packages/libndsfpc/examples/input/Touch_Pad/touch_area/touchArea.pp new file mode 100644 index 0000000000..bd3ee0ce2c --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_area/touchArea.pp @@ -0,0 +1,40 @@ +program touchArea; + +uses + nds9; + +const + //my experimental value for pen vs finger (higher value == lower area) + threshold = 400; + +var + touch: touchPosition; + area: integer = 0; + +begin + consoleDemoInit(); + + while true do + begin + scanKeys(); + + touchRead(touch); + + area := (touch.px * touch.z2) div (touch.z1 - touch.px); + + iprintf(#27'[10;0H' + 'Touch x = %04i, %04i'#10, touch.rawx, touch.px); + + iprintf('Touch y = %04i, %04i'#10, touch.rawy, touch.py); + + iprintf('Touch Area (pressure) %04i'#10, area); + + if (keysHeld() and KEY_TOUCH) <> 0 then + if area > threshold then + iprintf('Last touched by: pen') + else + iprintf('Last touched by: finger'); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile new file mode 100644 index 0000000000..35794dd1a8 --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile @@ -0,0 +1,1633 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=touchLook +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + @$(DELTREE) $(CURDIR)/$(BUILD) + @$(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile.fpc b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile.fpc new file mode 100644 index 0000000000..8a285c6baa --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/Makefile.fpc @@ -0,0 +1,93 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=touchLook + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[compiler] +options=-g -Xm +#-d__THUMB__ + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin *.map \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + @$(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + @$(MKDIR) $(INC) +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 %.png) + @echo 'Converting $(@) file to asm...' + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + @echo 'Assembling $(@).s file...' + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + @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!' diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/Mud.pcx b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/Mud.pcx new file mode 100644 index 0000000000..a12203ed4a Binary files /dev/null and b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/Mud.pcx differ diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/World.txt b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/World.txt new file mode 100644 index 0000000000..8f645ace69 --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/World.txt @@ -0,0 +1,160 @@ + +NUMPOLLIES 36 + +// Floor 1 +-3.0 0.0 -3.0 0.0 6.0 +-3.0 0.0 3.0 0.0 0.0 + 3.0 0.0 3.0 6.0 0.0 + +-3.0 0.0 -3.0 0.0 6.0 + 3.0 0.0 -3.0 6.0 6.0 + 3.0 0.0 3.0 6.0 0.0 + +// Ceiling 1 +-3.0 1.0 -3.0 0.0 6.0 +-3.0 1.0 3.0 0.0 0.0 + 3.0 1.0 3.0 6.0 0.0 +-3.0 1.0 -3.0 0.0 6.0 + 3.0 1.0 -3.0 6.0 6.0 + 3.0 1.0 3.0 6.0 0.0 + +// A1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-0.5 0.0 -2.0 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-0.5 1.0 -2.0 1.5 1.0 +-0.5 0.0 -2.0 1.5 0.0 + +// A2 + + 2.0 1.0 -2.0 2.0 1.0 + 2.0 0.0 -2.0 2.0 0.0 + 0.5 0.0 -2.0 0.5 0.0 + 2.0 1.0 -2.0 2.0 1.0 + 0.5 1.0 -2.0 0.5 1.0 + 0.5 0.0 -2.0 0.5 0.0 + +// B1 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-0.5 0.0 2.0 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-0.5 1.0 2.0 0.5 1.0 +-0.5 0.0 2.0 0.5 0.0 + +// B2 + + 2.0 1.0 2.0 2.0 1.0 + 2.0 0.0 2.0 2.0 0.0 + 0.5 0.0 2.0 0.5 0.0 + 2.0 1.0 2.0 2.0 1.0 + 0.5 1.0 2.0 0.5 1.0 + 0.5 0.0 2.0 0.5 0.0 + +// C1 + +-2.0 1.0 -2.0 0.0 1.0 +-2.0 0.0 -2.0 0.0 0.0 +-2.0 0.0 -0.5 1.5 0.0 +-2.0 1.0 -2.0 0.0 1.0 +-2.0 1.0 -0.5 1.5 1.0 +-2.0 0.0 -0.5 1.5 0.0 + +// C2 + +-2.0 1.0 2.0 2.0 1.0 +-2.0 0.0 2.0 2.0 0.0 +-2.0 0.0 0.5 0.5 0.0 +-2.0 1.0 2.0 2.0 1.0 +-2.0 1.0 0.5 0.5 1.0 +-2.0 0.0 0.5 0.5 0.0 + +// D1 + +2.0 1.0 -2.0 0.0 1.0 +2.0 0.0 -2.0 0.0 0.0 +2.0 0.0 -0.5 1.5 0.0 +2.0 1.0 -2.0 0.0 1.0 +2.0 1.0 -0.5 1.5 1.0 +2.0 0.0 -0.5 1.5 0.0 + +// D2 + +2.0 1.0 2.0 2.0 1.0 +2.0 0.0 2.0 2.0 0.0 +2.0 0.0 0.5 0.5 0.0 +2.0 1.0 2.0 2.0 1.0 +2.0 1.0 0.5 0.5 1.0 +2.0 0.0 0.5 0.5 0.0 + +// Upper hallway - L +-0.5 1.0 -3.0 0.0 1.0 +-0.5 0.0 -3.0 0.0 0.0 +-0.5 0.0 -2.0 1.0 0.0 +-0.5 1.0 -3.0 0.0 1.0 +-0.5 1.0 -2.0 1.0 1.0 +-0.5 0.0 -2.0 1.0 0.0 + +// Upper hallway - R +0.5 1.0 -3.0 0.0 1.0 +0.5 0.0 -3.0 0.0 0.0 +0.5 0.0 -2.0 1.0 0.0 +0.5 1.0 -3.0 0.0 1.0 +0.5 1.0 -2.0 1.0 1.0 +0.5 0.0 -2.0 1.0 0.0 + +// Lower hallway - L +-0.5 1.0 3.0 0.0 1.0 +-0.5 0.0 3.0 0.0 0.0 +-0.5 0.0 2.0 1.0 0.0 +-0.5 1.0 3.0 0.0 1.0 +-0.5 1.0 2.0 1.0 1.0 +-0.5 0.0 2.0 1.0 0.0 + +// Lower hallway - R +0.5 1.0 3.0 0.0 1.0 +0.5 0.0 3.0 0.0 0.0 +0.5 0.0 2.0 1.0 0.0 +0.5 1.0 3.0 0.0 1.0 +0.5 1.0 2.0 1.0 1.0 +0.5 0.0 2.0 1.0 0.0 + + +// Left hallway - Lw + +-3.0 1.0 0.5 1.0 1.0 +-3.0 0.0 0.5 1.0 0.0 +-2.0 0.0 0.5 0.0 0.0 +-3.0 1.0 0.5 1.0 1.0 +-2.0 1.0 0.5 0.0 1.0 +-2.0 0.0 0.5 0.0 0.0 + +// Left hallway - Hi + +-3.0 1.0 -0.5 1.0 1.0 +-3.0 0.0 -0.5 1.0 0.0 +-2.0 0.0 -0.5 0.0 0.0 +-3.0 1.0 -0.5 1.0 1.0 +-2.0 1.0 -0.5 0.0 1.0 +-2.0 0.0 -0.5 0.0 0.0 + +// Right hallway - Lw + +3.0 1.0 0.5 1.0 1.0 +3.0 0.0 0.5 1.0 0.0 +2.0 0.0 0.5 0.0 0.0 +3.0 1.0 0.5 1.0 1.0 +2.0 1.0 0.5 0.0 1.0 +2.0 0.0 0.5 0.0 0.0 + +// Right hallway - Hi + +3.0 1.0 -0.5 1.0 1.0 +3.0 0.0 -0.5 1.0 0.0 +2.0 0.0 -0.5 0.0 0.0 +3.0 1.0 -0.5 1.0 1.0 +2.0 1.0 -0.5 0.0 1.0 +2.0 0.0 -0.5 0.0 0.0 diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_look/touchLook.pp b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/touchLook.pp new file mode 100644 index 0000000000..84ad81c01d --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/touchLook.pp @@ -0,0 +1,308 @@ +program touchLook; + +{$mode objfpc} +{$L build/Mud.pcx.o} +{$L build/World.txt.o} + +uses + ctypes, nds9; + +{$include inc/Mud.pcx.inc} +{$include inc/World.txt.inc} + +var + heading: integer; + xpos: cint32; + zpos: cint32; + yrot: cint; // Y Rotation + walkbias: cint32 = 0; + walkbiasangle: cint = 0; + lookupdown: cint = 0; + texture: array [0..0] of integer; // Storage For 1 Textures (only going to use 1 on the DS for this demo) + +type + tagVERTEX = record + x, y, z: v16; + u, v: t16; + end; + TVERTEX = tagVERTEX; + + tagTRIANGLE = record + vertex: array [0..2] of TVERTEX; + end; + TTRIANGLE = tagTRIANGLE; + PTRIANGLE = ^tagTRIANGLE; + + tagSECTOR = record + numtriangles: integer; + triangle: PTRIANGLE; + end; + SECTOR = tagSECTOR; + TSECTOR = SECTOR; + +var + sector1: TSECTOR; // Our Model Goes Here: + + MyFile: pchar; + + +function DrawGLScene(): boolean; +var + x_m, y_m, z_m: v16; + u_m, v_m: t16; + xtrans, ztrans, ytrans: cint32; + sceneroty: cint; + numtriangles: integer; + loop_m: integer; +begin + // Reset The View + xtrans := -xpos; + ztrans := -zpos; + ytrans := -walkbias - (1 shl 10); + sceneroty := DEGREES_IN_CIRCLE - yrot; + + glLoadIdentity(); + + glRotatef32i(lookupdown, (1 shl 12), 0, 0); + glRotatef32i( sceneroty, 0, (1 shl 12), 0); + + glTranslate3f32(xtrans, ytrans, ztrans); + glBindTexture(GL_TEXTURE_2D, texture[0]); + + numtriangles := sector1.numtriangles; + + + // Process Each Triangle + for loop_m := 0 to numtriangles - 1 do + begin + glBegin(GL_TRIANGLES); + glNormal(NORMAL_PACK( 0, 0, 1 shl 10)); + x_m := sector1.triangle[loop_m].vertex[0].x; + y_m := sector1.triangle[loop_m].vertex[0].y; + z_m := sector1.triangle[loop_m].vertex[0].z; + u_m := sector1.triangle[loop_m].vertex[0].u; + v_m := sector1.triangle[loop_m].vertex[0].v; + glTexCoord2t16(u_m,v_m); glVertex3v16(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[1].x; + y_m := sector1.triangle[loop_m].vertex[1].y; + z_m := sector1.triangle[loop_m].vertex[1].z; + u_m := sector1.triangle[loop_m].vertex[1].u; + v_m := sector1.triangle[loop_m].vertex[1].v; + glTexCoord2t16(u_m,v_m); glVertex3v16(x_m,y_m,z_m); + + x_m := sector1.triangle[loop_m].vertex[2].x; + y_m := sector1.triangle[loop_m].vertex[2].y; + z_m := sector1.triangle[loop_m].vertex[2].z; + u_m := sector1.triangle[loop_m].vertex[2].u; + v_m := sector1.triangle[loop_m].vertex[2].v; + glTexCoord2t16(u_m,v_m); glVertex3v16(x_m,y_m,z_m); + glEnd(); + end; + result := true; // Everything Went OK +end; + +procedure myGetStr(buff: pchar; size: integer); +begin + buff^ := Myfile^; + inc(MyFile); + + while (buff^ <> #10) and (buff^ <> #13) do + begin + inc(buff); + buff^ := Myfile^; + inc(MyFile); + end; + + buff[0] := #10; + buff[1] := #0; +end; + + +procedure readstr(str: pchar); +begin + repeat + myGetStr(str, 255); + until ((str[0] <> '/') and (str[0] <> #10)); +end; + +procedure SetupWorld(); +var + x, y, z: cfloat; + u, v: cfloat; + numtriangles: integer; + oneline: array [0..254] of char; + loop, vert: integer; +begin + readstr(oneline); + sscanf(oneline, 'NUMPOLLIES %d'#10, @numtriangles); + + GetMem(sector1.triangle, numtriangles * sizeof(TTRIANGLE)); + + sector1.numtriangles := numtriangles; + + for loop := 0 to numtriangles - 1 do + begin + for vert := 0 to 2 do + begin + readstr(oneline); + sscanf(oneline, '%f %f %f %f %f', @x, @y, @z, @u, @v); + sector1.triangle[loop].vertex[vert].x := floattov16(x); + sector1.triangle[loop].vertex[vert].y := floattov16(y); + sector1.triangle[loop].vertex[vert].z := floattov16(z); + sector1.triangle[loop].vertex[vert].u := floattot16(u*128); + sector1.triangle[loop].vertex[vert].v := floattot16(v*128); + end; + end; +end; + +// Load PCX files And Convert To Textures +function LoadGLTextures(): boolean; +var + pcx: sImage; +begin + //load our texture + loadPCX(pcuint8(Mud_pcx), @pcx); + + image8to16(@pcx); + + glGenTextures(1, @texture[0]); + glBindTexture(0, texture[0]); + glTexImage2D(0, 0, GL_RGB, TEXTURE_SIZE_128 , TEXTURE_SIZE_128, 0, TEXGEN_TEXCOORD or GL_TEXTURE_WRAP_S or GL_TEXTURE_WRAP_T, pcx.image.data8); + + imageDestroy(@pcx); + + result := true; +end; + +var + thisXY: touchPosition; + lastXY: touchPosition; + dx, dy: cint16; + +begin + MyFile := pchar(@World_txt); + // Setup the Main screen for 3D + videoSetMode(MODE_0_3D); + vramSetBankA(VRAM_A_TEXTURE); //NEW must set up some memory for textures + + // initialize the 3D engine + glInit(); + + // enable textures + glEnable(GL_TEXTURE_2D); + + // Set our viewport to be the same size as the screen + glViewport(0,0,255,191); + + // setup the projection matrix + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); + + glLight(0, RGB15(31,31,31) , 0, floattov10(-1.0), 0); + + //need to set up some material properties since DS does not have them set by default + glMaterialf(GL_AMBIENT, RGB15(16,16,16)); + glMaterialf(GL_DIFFUSE, RGB15(16,16,16)); + glMaterialf(GL_SPECULAR, BIT(15) or RGB15(8,8,8)); + glMaterialf(GL_EMISSION, RGB15(16,16,16)); + + //ds uses a table for shinyness..this generates a half-ass one + glMaterialShinyness(); + + //ds specific, several attributes can be set here + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_NONE or POLY_FORMAT_LIGHT0); + + // Set the current matrix to be the model matrix + glMatrixMode(GL_MODELVIEW); + + // Specify the Clear Color and Depth + glClearColor(0,0,0,31); + glClearDepth($7FFF); + + // set the vertex color to white + glColor3f(1.0, 1.0, 1.0); + + LoadGLTextures(); + SetupWorld(); + + while true do + begin + //these little button functions are pretty handy + scanKeys(); + + if (keysHeld() and (KEY_LEFT or KEY_Y)) <> 0 then + begin + xpos := xpos - (sinLerp(heading + degreesToAngle(90)) shr 5); + zpos := zpos + (cosLerp(heading + degreesToAngle(90)) shr 5); + end; + if (keysHeld() and (KEY_RIGHT or KEY_A)) <> 0 then + begin + xpos := xpos + (sinLerp(heading + degreesToAngle(90)) shr 5); + zpos := zpos - (cosLerp(heading + degreesToAngle(90)) shr 5); + end; + if (keysHeld() and (KEY_DOWN or KEY_B)) <> 0 then + begin + xpos := xpos - (sinLerp(heading) shr 5); + zpos := zpos + (cosLerp(heading) shr 5); + + walkbiasangle := walkbiasangle + degreesToAngle(5); + + walkbias := sinLerp(walkbiasangle) shr 4; + end; + if (keysHeld() and (KEY_UP or KEY_X)) <> 0 then + begin + xpos := xpos + (sinLerp(heading) shr 5); + zpos := zpos - (cosLerp(heading) shr 5); + + if (walkbiasangle <= 0) then + walkbiasangle := DEGREES_IN_CIRCLE + else + walkbiasangle := walkbiasangle - degreesToAngle(5); + + walkbias := sinLerp(walkbiasangle) shr 4; + end; + + // Camera rotation by touch screen + + if (keysHeld() and KEY_TOUCH) <> 0 then + begin + touchRead(thisXY); + + dx := thisXY.px - lastXY.px; + dy := thisXY.py - lastXY.py; + + // filtering measurement errors + if (dx < 20) and (dx > -20) and (dy < 20) and (dy > -20) then + begin + if (dx > -3) and (dx < 3) then + dx := 0; + + if (dy > -2) and (dy < 2) then + dy := 0; + + lookupdown := lookupdown - degreesToAngle(dy); + + heading := heading + degreesToAngle(dx); + yrot := heading; + end; + + lastXY := thisXY; + end; + + + //Push our original Matrix onto the stack (save state) + glPushMatrix(); + + DrawGLScene(); + + // Pop our Matrix from the stack (restore state) + glPopMatrix(1); + + // flush to screen + glFlush(0); + + end; + +end. diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile new file mode 100644 index 0000000000..761d82a25f --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile @@ -0,0 +1,1630 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +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)/*.bin))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=touchTest +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* $(INC)/* +endif +override INSTALL_FPCPACKAGE=y +ifeq ($(FULL_TARGET),arm-nds) +override COMPILER_OPTIONS+=-g -Xm -d__THUMB__ +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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 +dir_delete: + $(DELTREE) $(CURDIR)/$(BUILD) + $(DELTREE) $(CURDIR)/$(INC) +dir_make: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + $(MKDIR) $(INC) +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 %.png) + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s +$(BIN_FILES): $(wildcard %.bin) + @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!' diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile.fpc b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile.fpc new file mode 100644 index 0000000000..93ac396d00 --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/Makefile.fpc @@ -0,0 +1,90 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=touchTest + +[require] +packages=libndsfpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[compiler] +options=-g -Xm -d__THUMB__ + + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* \ + $(INC)/* +units=* + +[prerules] +BUILD = build +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)/*.bin))) + +[rules] +.NOTPARALLEL: +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) + +# +# Create temp directories +# +dir_make: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +endif +ifneq ($(INC), $(CURDIR)) + $(MKDIR) $(INC) +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 %.png) + $(GRIT) gfx/$(@) -fts -ff gfx/$(basename $(@)).grit -o$(BUILD)/$(@) + $(AS) -o $(BUILD)/$(basename $(@)).o $(BUILD)/$(basename $(@)).s + +# +# Binary files processing rule +# +$(BIN_FILES): $(wildcard %.bin) + @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!' diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/balldata.bin b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/balldata.bin new file mode 100644 index 0000000000..d64909869a Binary files /dev/null and b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/balldata.bin differ diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/ballpalette.bin b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/ballpalette.bin new file mode 100644 index 0000000000..0779dfa99e Binary files /dev/null and b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/ballpalette.bin differ diff --git a/packages/libndsfpc/examples/input/Touch_Pad/touch_test/touchTest.pp b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/touchTest.pp new file mode 100644 index 0000000000..eada0a0ee2 --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/touchTest.pp @@ -0,0 +1,143 @@ +program touchTest; +{$L build/ballpalette.bin.o} +{$L build/balldata.bin.o} + +uses + nds9, ctypes; + +var + OAMCopy: array [0..127] of SpriteEntry; + +{$include inc/ballpalette.bin.inc} +{$include inc/balldata.bin.inc} + +procedure initOAM(); +var + i: integer; +begin + for i := 0 to 127 do + OAMCopy[i].attribute[0] := ATTR0_DISABLED; +end; + +procedure updateOAM(); +begin + Move(OAMCopy, OAM^, 128 * sizeof(SpriteEntry)); +end; + + +type + TTouchType = (ttContinuous, ttSingle); + +var + frame: integer; + TouchType: TTouchType = ttContinuous; + + +procedure Vblank(); +begin + inc(frame); +end; + +var + min_x, min_y, max_x, max_y: integer; + min_px, min_py, max_px, max_py: integer; + touch: touchPosition; + i: integer; + pressed, held: integer; + +begin + min_x := 4096; + min_y := 4096; + max_x := 0; + max_y := 0; + min_px := 4096; + min_py := 4096; + max_px := 0; + max_py := 0; + + // put the main screen on the bottom lcd + lcdMainOnBottom(); + + initOAM(); + //enable vram and map it to the right places + vramSetMainBanks( VRAM_A_MAIN_SPRITE, //A and B maped consecutively as sprite memory + VRAM_B_MAIN_SPRITE, //this gives us 256KB which is the max + VRAM_C_MAIN_BG_0x06000000, //map C to background memory + VRAM_D_LCD //not using D + ); + + //set the video mode + videoSetMode( MODE_0_2D or + DISPLAY_SPR_ACTIVE or //turn on sprites + DISPLAY_BG0_ACTIVE or //turn on background 0 + DISPLAY_SPR_1D //this is used when in tile mode + ); + + // Sprite initialisation + Move(ballpalette_bin, SPRITE_PALETTE^, ballpalette_bin_size); + Move(balldata_bin, SPRITE_GFX^, balldata_bin_size); + + consoleInit(nil, 0, BgType_Text4bpp, BgSize_T_256x256, 31, 0, true, true); + + iprintf(#27'[4;8H' + 'Touch Screen Test'); + iprintf(#27'[15;4H' + 'Right Shoulder toggles'); + + while true do + begin + swiWaitForVBlank(); + updateOAM(); + + // read the button states + scanKeys(); + + // read the touchscreen coordinates + touchRead(touch); + + pressed := keysDown(); // buttons pressed this loop + held := keysHeld(); // buttons currently held + + // Right Shoulder button toggles the mode + if ( pressed and KEY_R) <> 0 then Inc(TouchType); + + if TouchType = ttContinuous then + printf(#27 + '[14;4H' + 'Touch mode: CONTINUOUS ') + else + printf(#27 + '[14;4H' + 'Touch mode: SINGLE SHOT'); + + iprintf(#27'[6;5H' + 'Touch x = %04X, %04X'#10, touch.rawx, touch.px); + iprintf(#27'[7;5H' + 'Touch y = %04X, %04X'#10, touch.rawy, touch.py); + + + iprintf(#27'[0;18H' + 'keys: %08X'#10, keysHeld()); + iprintf(#27'[9;10H' + 'Frame %d'#10, frame); + + if (TouchType = ttSingle) and not ( (pressed and KEY_TOUCH) <> 0) then continue; + + if ((held and KEY_TOUCH) = 0) or (touch.rawx = 0) or (touch.rawy = 0) then continue; + + + iprintf(#27'[12;12H' + '(%d,%d) ', touch.px, touch.py); + + if ( touch.rawx > max_x) then max_x := touch.rawx; + if ( touch.rawy > max_y) then max_y := touch.rawy; + if ( touch.px > max_px) then max_px := touch.px; + if ( touch.py > max_py) then max_py := touch.py; + + if ( touch.rawx < min_x) then min_x := touch.rawx; + if ( touch.rawy < min_y) then min_y := touch.rawy; + if ( touch.px < min_px) then min_px := touch.px; + if ( touch.py < min_py) then min_py := touch.py; + + iprintf(#27'[0;0H' + '(%d,%d) ', min_px, min_py); + iprintf(#27'[1;0H' + '(%d,%d) ', min_x, min_y); + iprintf(#27'[22;21H' + '(%d,%d)', max_x, max_y); + iprintf(#27'[23;23H' + '(%d,%d)', max_px, max_py); + + OAMCopy[0].attribute[2] := 0; + OAMCopy[0].attribute[1] := ATTR1_SIZE_32 or ((touch.px - 16) and $01FF); + OAMCopy[0].attribute[0] := ATTR0_COLOR_256 or ATTR0_SQUARE or ((touch.py - 16) and $00FF); + + end; + +end. + diff --git a/packages/libndsfpc/examples/input/keyboard/Makefile b/packages/libndsfpc/examples/input/keyboard/Makefile new file mode 100644 index 0000000000..6a3f4df102 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/Makefile @@ -0,0 +1,1483 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_DIRS+=keyboard_async keyboard_stdin +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +endif +endif +ifdef TARGET_RSTS +override RSTFILES=$(addsuffix $(RSTEXT),$(TARGET_RSTS)) +override CLEANRSTFILES+=$(RSTFILES) +endif +.PHONY: fpc_clean fpc_cleanall fpc_distclean +ifdef EXEFILES +override CLEANEXEFILES:=$(addprefix $(TARGETDIRPREFIX),$(CLEANEXEFILES)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +ifeq ($(FULL_TARGET),arm-nds) +TARGET_DIRS_KEYBOARD_ASYNC=1 +TARGET_DIRS_KEYBOARD_STDIN=1 +endif +ifdef TARGET_DIRS_KEYBOARD_ASYNC +keyboard_async_all: + $(MAKE) -C keyboard_async all +keyboard_async_debug: + $(MAKE) -C keyboard_async debug +keyboard_async_smart: + $(MAKE) -C keyboard_async smart +keyboard_async_release: + $(MAKE) -C keyboard_async release +keyboard_async_units: + $(MAKE) -C keyboard_async units +keyboard_async_examples: + $(MAKE) -C keyboard_async examples +keyboard_async_shared: + $(MAKE) -C keyboard_async shared +keyboard_async_install: + $(MAKE) -C keyboard_async install +keyboard_async_sourceinstall: + $(MAKE) -C keyboard_async sourceinstall +keyboard_async_exampleinstall: + $(MAKE) -C keyboard_async exampleinstall +keyboard_async_distinstall: + $(MAKE) -C keyboard_async distinstall +keyboard_async_zipinstall: + $(MAKE) -C keyboard_async zipinstall +keyboard_async_zipsourceinstall: + $(MAKE) -C keyboard_async zipsourceinstall +keyboard_async_zipexampleinstall: + $(MAKE) -C keyboard_async zipexampleinstall +keyboard_async_zipdistinstall: + $(MAKE) -C keyboard_async zipdistinstall +keyboard_async_clean: + $(MAKE) -C keyboard_async clean +keyboard_async_distclean: + $(MAKE) -C keyboard_async distclean +keyboard_async_cleanall: + $(MAKE) -C keyboard_async cleanall +keyboard_async_info: + $(MAKE) -C keyboard_async info +keyboard_async_makefiles: + $(MAKE) -C keyboard_async makefiles +keyboard_async: + $(MAKE) -C keyboard_async all +.PHONY: keyboard_async_all keyboard_async_debug keyboard_async_smart keyboard_async_release keyboard_async_units keyboard_async_examples keyboard_async_shared keyboard_async_install keyboard_async_sourceinstall keyboard_async_exampleinstall keyboard_async_distinstall keyboard_async_zipinstall keyboard_async_zipsourceinstall keyboard_async_zipexampleinstall keyboard_async_zipdistinstall keyboard_async_clean keyboard_async_distclean keyboard_async_cleanall keyboard_async_info keyboard_async_makefiles keyboard_async +endif +ifdef TARGET_DIRS_KEYBOARD_STDIN +keyboard_stdin_all: + $(MAKE) -C keyboard_stdin all +keyboard_stdin_debug: + $(MAKE) -C keyboard_stdin debug +keyboard_stdin_smart: + $(MAKE) -C keyboard_stdin smart +keyboard_stdin_release: + $(MAKE) -C keyboard_stdin release +keyboard_stdin_units: + $(MAKE) -C keyboard_stdin units +keyboard_stdin_examples: + $(MAKE) -C keyboard_stdin examples +keyboard_stdin_shared: + $(MAKE) -C keyboard_stdin shared +keyboard_stdin_install: + $(MAKE) -C keyboard_stdin install +keyboard_stdin_sourceinstall: + $(MAKE) -C keyboard_stdin sourceinstall +keyboard_stdin_exampleinstall: + $(MAKE) -C keyboard_stdin exampleinstall +keyboard_stdin_distinstall: + $(MAKE) -C keyboard_stdin distinstall +keyboard_stdin_zipinstall: + $(MAKE) -C keyboard_stdin zipinstall +keyboard_stdin_zipsourceinstall: + $(MAKE) -C keyboard_stdin zipsourceinstall +keyboard_stdin_zipexampleinstall: + $(MAKE) -C keyboard_stdin zipexampleinstall +keyboard_stdin_zipdistinstall: + $(MAKE) -C keyboard_stdin zipdistinstall +keyboard_stdin_clean: + $(MAKE) -C keyboard_stdin clean +keyboard_stdin_distclean: + $(MAKE) -C keyboard_stdin distclean +keyboard_stdin_cleanall: + $(MAKE) -C keyboard_stdin cleanall +keyboard_stdin_info: + $(MAKE) -C keyboard_stdin info +keyboard_stdin_makefiles: + $(MAKE) -C keyboard_stdin makefiles +keyboard_stdin: + $(MAKE) -C keyboard_stdin all +.PHONY: keyboard_stdin_all keyboard_stdin_debug keyboard_stdin_smart keyboard_stdin_release keyboard_stdin_units keyboard_stdin_examples keyboard_stdin_shared keyboard_stdin_install keyboard_stdin_sourceinstall keyboard_stdin_exampleinstall keyboard_stdin_distinstall keyboard_stdin_zipinstall keyboard_stdin_zipsourceinstall keyboard_stdin_zipexampleinstall keyboard_stdin_zipdistinstall keyboard_stdin_clean keyboard_stdin_distclean keyboard_stdin_cleanall keyboard_stdin_info keyboard_stdin_makefiles keyboard_stdin +endif +all: $(addsuffix _all,$(TARGET_DIRS)) +debug: $(addsuffix _debug,$(TARGET_DIRS)) +smart: $(addsuffix _smart,$(TARGET_DIRS)) +release: $(addsuffix _release,$(TARGET_DIRS)) +units: $(addsuffix _units,$(TARGET_DIRS)) +examples: $(addsuffix _examples,$(TARGET_DIRS)) +shared: $(addsuffix _shared,$(TARGET_DIRS)) +install: $(addsuffix _install,$(TARGET_DIRS)) +sourceinstall: $(addsuffix _sourceinstall,$(TARGET_DIRS)) +exampleinstall: $(addsuffix _exampleinstall,$(TARGET_DIRS)) +distinstall: $(addsuffix _distinstall,$(TARGET_DIRS)) +zipinstall: $(addsuffix _zipinstall,$(TARGET_DIRS)) +zipsourceinstall: $(addsuffix _zipsourceinstall,$(TARGET_DIRS)) +zipexampleinstall: $(addsuffix _zipexampleinstall,$(TARGET_DIRS)) +zipdistinstall: $(addsuffix _zipdistinstall,$(TARGET_DIRS)) +clean: $(addsuffix _clean,$(TARGET_DIRS)) +distclean: $(addsuffix _distclean,$(TARGET_DIRS)) +cleanall: $(addsuffix _cleanall,$(TARGET_DIRS)) +info: fpc_info +makefiles: fpc_makefiles $(addsuffix _makefiles,$(TARGET_DIRS)) +.PHONY: all debug smart release units examples shared install sourceinstall exampleinstall distinstall zipinstall zipsourceinstall zipexampleinstall zipdistinstall clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/input/keyboard/Makefile.fpc b/packages/libndsfpc/examples/input/keyboard/Makefile.fpc new file mode 100644 index 0000000000..621a9402c0 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +dirs=keyboard_async keyboard_stdin + +[require] +packages=libndsfpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile b/packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile new file mode 100644 index 0000000000..b34301ac34 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=keyboardAsync +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile.fpc b/packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile.fpc new file mode 100644 index 0000000000..c834a5c4f5 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/keyboard_async/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=keyboardAsync + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/input/keyboard/keyboard_async/keyboardAsync.pp b/packages/libndsfpc/examples/input/keyboard/keyboard_async/keyboardAsync.pp new file mode 100644 index 0000000000..de174f1e62 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/keyboard_async/keyboardAsync.pp @@ -0,0 +1,27 @@ +program keyboardAsync; + +uses + ctypes, nds9; + +var + key: integer; + +begin + consoleDemoInit(); //setup the sub screen for printing + + keyboardDemoInit(); + + keyboardShow(); + + while true do + begin + + key := keyboardUpdate(); + + if (key > 0) then + iprintf('%c', key); + + swiWaitForVBlank(); + end; + +end. diff --git a/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile b/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile new file mode 100644 index 0000000000..fd362dc929 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile @@ -0,0 +1,1599 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02] +# +default: all +MAKEFILETARGETS=arm-nds +BSDs = freebsd netbsd openbsd darwin +UNIXs = linux $(BSDs) solaris qnx +LIMIT83fs = go32v2 os2 emx watcom +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)),) +RUNBATCH=$(COMSPEC) /C +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 +ifneq ($(words $(FPC_COMPILERINFO)),5) +FPC_COMPILERINFO+=$(shell $(FPC) -iSP) +FPC_COMPILERINFO+=$(shell $(FPC) -iTP) +FPC_COMPILERINFO+=$(shell $(FPC) -iSO) +FPC_COMPILERINFO+=$(shell $(FPC) -iTO) +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) +ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),) +TARGETSUFFIX=$(OS_TARGET) +SOURCESUFFIX=$(OS_SOURCE) +else +TARGETSUFFIX=$(FULL_TARGET) +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 +export OS_TARGET OS_SOURCE 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 +ifeq ($(OS_TARGET),darwin) +ifeq ($(OS_SOURCE),darwin) +DARWIN2DARWIN=1 +endif +endif +ifndef BINUTILSPREFIX +ifndef CROSSBINDIR +ifdef CROSSCOMPILE +ifndef DARWIN2DARWIN +BINUTILSPREFIX=$(CPU_TARGET)-$(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) +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) +ifeq ($(FULL_TARGET),arm-nds) +override TARGET_PROGRAMS+=keyboardStdin +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-nds) +override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/* +endif +override INSTALL_FPCPACKAGE=y +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 +ifeq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),go32v1) +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +OEXT=.obj +ASMEXT=.asm +SHAREDLIBEXT=.dll +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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 +endif +ifeq ($(OS_TARGET),emx) +BATCHEXT=.cmd +AOUTEXT=.out +STATICLIBPREFIX= +SHAREDLIBEXT=.dll +SHORTSUFFIX=emx +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +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),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 +endif +ifeq ($(OS_TARGET),netwlibc) +EXEEXT=.nlm +STATICLIBPREFIX= +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +ifeq ($(OS_TARGET),darwin) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=dwn +endif +ifeq ($(OS_TARGET),gba) +EXEEXT=.gba +SHAREDLIBEXT=.so +SHORTSUFFIX=gba +endif +ifeq ($(OS_TARGET),symbian) +SHAREDLIBEXT=.dll +SHORTSUFFIX=symbian +endif +else +ifeq ($(OS_TARGET),go32v1) +PPUEXT=.pp1 +OEXT=.o1 +ASMEXT=.s1 +SMARTEXT=.sl1 +STATICLIBEXT=.a1 +SHAREDLIBEXT=.so1 +STATICLIBPREFIX= +SHORTSUFFIX=v1 +endif +ifeq ($(OS_TARGET),go32v2) +STATICLIBPREFIX= +SHORTSUFFIX=dos +endif +ifeq ($(OS_TARGET),watcom) +STATICLIBPREFIX= +SHORTSUFFIX=wat +endif +ifeq ($(OS_TARGET),linux) +BATCHEXT=.sh +EXEEXT= +HASSHAREDLIB=1 +SHORTSUFFIX=lnx +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) +PPUEXT=.ppw +OEXT=.ow +ASMEXT=.sw +SMARTEXT=.slw +STATICLIBEXT=.aw +SHAREDLIBEXT=.dll +SHORTSUFFIX=w32 +endif +ifeq ($(OS_TARGET),os2) +BATCHEXT=.cmd +PPUEXT=.ppo +ASMEXT=.so2 +OEXT=.oo2 +AOUTEXT=.out +SMARTEXT=.sl2 +STATICLIBPREFIX= +STATICLIBEXT=.ao2 +SHAREDLIBEXT=.dll +SHORTSUFFIX=os2 +ECHO=echo +endif +ifeq ($(OS_TARGET),amiga) +EXEEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.library +SHORTSUFFIX=amg +endif +ifeq ($(OS_TARGET),atari) +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT=.ttp +SHORTSUFFIX=ata +endif +ifeq ($(OS_TARGET),beos) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=be +endif +ifeq ($(OS_TARGET),solaris) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=sun +endif +ifeq ($(OS_TARGET),qnx) +BATCHEXT=.sh +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +SHORTSUFFIX=qnx +endif +ifeq ($(OS_TARGET),netware) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nw +endif +ifeq ($(OS_TARGET),netwlibc) +STATICLIBPREFIX= +PPUEXT=.ppu +OEXT=.o +ASMEXT=.s +SMARTEXT=.sl +STATICLIBEXT=.a +SHAREDLIBEXT=.nlm +EXEEXT=.nlm +SHORTSUFFIX=nwl +endif +ifeq ($(OS_TARGET),macos) +BATCHEXT= +PPUEXT=.ppu +ASMEXT=.s +OEXT=.o +SMARTEXT=.sl +STATICLIBEXT=.a +EXEEXT= +DEBUGSYMEXT=.xcoff +SHORTSUFFIX=mac +endif +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 +ifneq ($(findstring 1.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),win32) +ifeq ($(CROSSBINDIR),) +ASNAME=asw +LDNAME=ldw +ARNAME=arw +endif +endif +endif +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 +AS=$(ASPROG) +LD=$(LDPROG) +RC=$(RCPROG) +AR=$(ARPROG) +PPAS=ppas$(SRCBATCHEXT) +ifdef inUnix +LDCONFIG=ldconfig +else +LDCONFIG= +endif +ifdef DATE +DATESTR:=$(shell $(DATE) +%Y%m%d) +else +DATESTR= +endif +ifndef UPXPROG +ifeq ($(OS_TARGET),go32v2) +UPXPROG:=1 +endif +ifeq ($(OS_TARGET),win32) +UPXPROG:=1 +endif +ifdef UPXPROG +UPXPROG:=$(strip $(wildcard $(addsuffix /upx$(SRCEXEEXT),$(SEARCHPATH)))) +ifeq ($(UPXPROG),) +UPXPROG= +else +UPXPROG:=$(firstword $(UPXPROG)) +endif +else +UPXPROG= +endif +endif +export UPXPROG +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),arm-nds) +REQUIRE_PACKAGES_LIBNDSFPC=1 +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 +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 +endif +ifndef NOCPUDEF +override FPCOPTDEF=$(CPU_TARGET) +endif +ifneq ($(OS_TARGET),$(OS_SOURCE)) +override FPCOPT+=-T$(OS_TARGET) +endif +ifneq ($(CPU_TARGET),$(CPU_SOURCE)) +override FPCOPT+=-P$(CPU_TARGET) +endif +ifeq ($(OS_SOURCE),openbsd) +override FPCOPT+=-FD$(NEW_BINUTILS_PATH) +endif +ifndef CROSSBOOTSTRAP +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-XP$(BINUTILSPREFIX) +endif +ifneq ($(BINUTILSPREFIX),) +override FPCOPT+=-Xr$(RLINKPATH) +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 +ifeq ($(CPU_TARGET),i386) +override FPCOPT+=-Aas +endif +endif +ifeq ($(findstring 2.0.,$(FPC_VERSION)),) +ifeq ($(OS_TARGET),linux) +ifeq ($(CPU_TARGET),x86_64) +override FPCOPT+=-Cg +endif +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:=$(FPC) $(FPCOPT) +ifeq (,$(findstring -s ,$(COMPILER))) +EXECPPAS= +else +ifeq ($(FULL_SOURCE),$(FULL_TARGET)) +ifdef RUNBATCH +EXECPPAS:=@$(RUNBATCH) $(PPAS) +else +EXECPPAS:=@$(PPAS) +endif +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 ALLTARGET+=fpc_exes +override INSTALLEXEFILES+=$(EXEFILES) +override CLEANEXEFILES+=$(EXEFILES) $(EXEOFILES) +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) +ifdef UPXPROG + -$(UPXPROG) $(INSTALLEXEFILES) +endif + $(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)) +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 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 + -$(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) + @$(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) Upx....... $(UPXPROG) + @$(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 +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: +clean: fpc_clean +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 clean distclean cleanall info makefiles +ifneq ($(wildcard fpcmake.loc),) +include fpcmake.loc +endif +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile.fpc b/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile.fpc new file mode 100644 index 0000000000..78d24fd7d7 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/Makefile.fpc @@ -0,0 +1,46 @@ +# +# Makefile.fpc for Free Pascal libndsfpc 2.x.y Examples +# + +[target] +loaders= +programs=keyboardStdin + +[require] +packages=libndsfpc +tools=bin2s mmutil grit +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=nds +fpcdir=../../../../../.. + +[clean] +files=*.elf *.o *.s *.nds *.nef *.h *.bin \ + $(BUILD)/* +units=* + +[prerules] +BUILD = build +AUDIO_FILES = $(foreach dir,$(notdir $(wildcard audio/*.*)),$(CURDIR)/audio/$(dir)) +GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png))) + +[rules] +.NOTPARALLEL: +all: direc fpc_all +direc: +ifneq ($(BUILD), $(CURDIR)) + $(MKDIR) $(BUILD) +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).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 diff --git a/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/keyboardStdin.pp b/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/keyboardStdin.pp new file mode 100644 index 0000000000..1346d08ba7 --- /dev/null +++ b/packages/libndsfpc/examples/input/keyboard/keyboard_stdin/keyboardStdin.pp @@ -0,0 +1,38 @@ +program keyboardStdin; + +uses + ctypes, nds9; + +function OnKeyPressed(key: cint): pointer; +begin + if (key > 0) then + iprintf('%c', key); +end; + +var + kbd: pKeyboard; + myName: array [0..255] of char; +begin + consoleDemoInit(); + + kbd := keyboardDemoInit(); + + kbd^.OnKeyPressed := @OnKeyPressed; + + while true do + begin + iprintf('What is your name?'#10); + + scanf('%s', myName); + + iprintf(#10'Hello %s', myName); + + scanKeys(); + while (keysDown() = 0)do + scanKeys(); + + swiWaitForVBlank(); + consoleClear(); + end; + +end. diff --git a/packages/libndsfpc/examples/libfat/main.pp b/packages/libndsfpc/examples/libfat/main.pp deleted file mode 100644 index 5c1babc3a7..0000000000 --- a/packages/libndsfpc/examples/libfat/main.pp +++ /dev/null @@ -1,47 +0,0 @@ -program main; -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -uses - nds9, fat; - -var - i: integer; - size: u32; - text: string; - handle: P_FILE; -begin - consoleDemoInit(); - videoSetMode(MODE_FB0); - vramSetBankA(VRAM_A_LCD); - - printf('fatInit()...'); - if fatInit(4, true) then - begin - printf(#9 + 'Success' + #10); - - handle := fopen('/test1.txt', 'r'); - if handle = nil then - begin - printf('Cannot open file' + #10); - end else - begin - fseek(handle, 0, SEEK_END); // Go to end of file - size := ftell(handle); // Get current position in file, because it is the end it will be the size - fseek(handle, 0, SEEK_SET); // Go to begining of file - fread(@text, size, 1, handle); // Read all of file into memory - printf(@text); - fclose(handle); // Close file - end; - end else - printf(#9 + 'Failure' + #10); - - for i := 0 to (256 * 192) - 1 do - VRAM_A[i] := RGB15(31,0,0); - - while true do; - - -end. diff --git a/packages/libndsfpc/examples/libfat/test1.txt b/packages/libndsfpc/examples/libfat/test1.txt deleted file mode 100644 index 845b08fe32..0000000000 --- a/packages/libndsfpc/examples/libfat/test1.txt +++ /dev/null @@ -1,2 +0,0 @@ -Hello world from test1.txt. -More text! diff --git a/packages/libndsfpc/examples/libmikmod/data/module.bin.o b/packages/libndsfpc/examples/libmikmod/data/module.bin.o deleted file mode 100644 index 881d268ee4..0000000000 Binary files a/packages/libndsfpc/examples/libmikmod/data/module.bin.o and /dev/null differ diff --git a/packages/libndsfpc/examples/libmikmod/main7.pp b/packages/libndsfpc/examples/libmikmod/main7.pp deleted file mode 100644 index 68e8f36570..0000000000 --- a/packages/libndsfpc/examples/libmikmod/main7.pp +++ /dev/null @@ -1,157 +0,0 @@ -program main7; - -{$apptype arm7} -{$define ARM7} - -{$mode objfpc} - -uses - ctypes, nds7, mikmod7; - -{ $include nds.inc} -{ $include mikmod.inc} - -procedure FIFOHandler(); -var - command: cuint32; -begin - while (REG_IPC_FIFO_CR^ and IPC_FIFO_RECV_EMPTY) = 0 do - begin - command := REG_IPC_FIFO_RX^; - if command >= (1 shl 28) then - MikMod7_ProcessCommand(command); - // process your own fifo messages here - end; -end; - -procedure startSound(sampleRate: cint; const data: pointer; bytes: cuint32; channel, vol, pan, format: cuint8); -var - snd_format: integer; -begin - if format = 1 then - snd_format := SOUND_8BIT - else - snd_format := SOUND_16BIT; - SCHANNEL_TIMER(channel)^ := SOUND_FREQ(sampleRate); - SCHANNEL_SOURCE(channel)^ := cuint32(data^); - SCHANNEL_LENGTH(channel)^ := bytes shr 2; - SCHANNEL_CR(channel)^ := SCHANNEL_ENABLE or SOUND_ONE_SHOT or SOUND_VOL(vol) or SOUND_PAN(pan) or (snd_format); -end; - - -function getFreeSoundChannel(): csint; -var - i: integer; -begin - for i := 0 to 15 do - if ((SCHANNEL_CR(i)^ and SCHANNEL_ENABLE)) = 0 then - result := i; - result := -1; -end; - -var - vcount: integer; - first, tempPos: touchPosition; - lastbut: integer = -1; - -procedure VcountHandler(); -var - but: integer; - x, y, xpx, ypx, z1, z2: cuint16; -begin - but := REG_KEYXY^; - - if (( (but xor lastbut) and (1 shl 6))) = 0 then - begin - tempPos := touchReadXY(); - - x := tempPos.x; - y := tempPos.y; - xpx := tempPos.px; - ypx := tempPos.py; - z1 := tempPos.z1; - z2 := tempPos.z2; - - end else - begin - lastbut := but; - but := but or (1 shl 6); - end; - - if ( vcount = 80 ) then - begin - first := tempPos; - end else - begin - if (abs(xpx - first.px) > 10) or (abs(ypx - first.py) > 10) or ((but and (1 shl 6)) <> 0) then - begin - but := but or (1 shl 6); - lastbut := but; - end else - begin - IPC.mailBusy := 1; - IPC.touchX := x; - IPC.touchY := y; - IPC.touchXpx := xpx; - IPC.touchYpx := ypx; - IPC.touchZ1 := z1; - IPC.touchZ2 := z2; - IPC.mailBusy := 0; - end; - end; - IPC.buttons := but; - vcount := vcount xor (80 xor 130); - SetYtrigger(vcount); -end; - -procedure VblankHandler(); -var - i: integer; - snd: PTransferSound; - chan: csint; -begin - //sound code :) - snd := IPC.soundData; - IPC.soundData := nil; - - if (snd <> nil) then - begin - for i := 0 to snd^.count - 1 do - begin - chan := getFreeSoundChannel(); - if (chan >= 0) then - begin - startSound(snd^.data[i].rate, snd^.data[i].data, snd^.data[i].len, chan, snd^.data[i].vol, snd^.data[i].pan, snd^.data[i].format); - end; - end; - end; -end; - -begin - // init fifo - REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_SEND_CLEAR; - - // Reset the clock if needed - rtcReset(); - - //enable sound - powerON(POWER_SOUND); - SOUND_CR^ := SOUND_ENABLE or SOUND_VOL($7F); - IPC.soundData := nil; - - irqInit(); - irqSet(IRQ_VBLANK, @VblankHandler); - irqEnable(IRQ_VBLANK); - SetYtrigger(80); - vcount := 80; - irqSet(IRQ_VCOUNT, @VcountHandler); - irqEnable(IRQ_VCOUNT); - - // Keep the ARM7 idle - while true do - begin - FIFOHandler(); - swiWaitForVBlank(); - end; -end. - diff --git a/packages/libndsfpc/examples/libmikmod/main9.pp b/packages/libndsfpc/examples/libmikmod/main9.pp deleted file mode 100644 index 7abaad91d8..0000000000 --- a/packages/libndsfpc/examples/libmikmod/main9.pp +++ /dev/null @@ -1,121 +0,0 @@ -program main9; - -{$L data/module.bin.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} - -{$define HW_MIXER} // It works fine on hardware, but on no$gba sound is distorted -{ $define SW_MIXER} // It works fine both on hardware and no$gba -{ $define NO_MIXER} // No mixer, no sound :) - -uses - ctypes, nds9, mikmod9; -{ $include nds.inc} - -{ $include mikmod.inc} - -var - module_bin_end: array [0..0] of cuint8; cvar; external; - module_bin: array [0..0] of cuint8; cvar; external; - module_bin_size: cuint32; cvar; external; - -// called by the drivers in mikmod library -procedure MikMod9_SendCommand(command: cuint); cdecl; export; -begin - while (REG_IPC_FIFO_CR^ and IPC_FIFO_SEND_FULL) <> 0 do; - REG_IPC_FIFO_TX^ := command; -end; - -procedure TimerInterrupt(); -begin - // player tick - MikMod_Update(); - // the bpm can change in the middle of the song - TIMER0_DATA^ := TIMER_FREQ_256((md_bpm * 50) div 125); -end; - -var - song: PModule; - -begin - REG_IPC_FIFO_CR^ := IPC_FIFO_ENABLE or IPC_FIFO_SEND_CLEAR; - - consoleDemoInit(); - irqInit(); - - irqEnable(IRQ_VBLANK); - -{$ifdef HW_MIXER} - MikMod_RegisterDriver(@drv_nds_hw); -{$endif HW_MIXER} - -{$ifdef SW_MIXER} - MikMod_RegisterDriver(@drv_nds_sw); -{$endif HW_MIXER} - -{$ifdef NO_MIXER} - MikMod_RegisterDriver(@drv_nos); -{$endif NO_MIXER} - - // if we don't know what kind of module we're going to load we can register - // all loaders, but that will result in a larger binary - //MikMod_RegisterAllLoaders(); - MikMod_RegisterLoader(@load_it); - - printf('Initializing library' + #10); - if (MikMod_Init('') <> 0) then - begin - printf('Could not initialize sound, reason: ' + #10 + '%s' + #10, MikMod_strerror(MikMod_errno)); - exit; - end; - - printf(#10 + 'Loading module' + #10); - // Player_LoadMemory() loads a module directly from memory - // it could be possible to use Player_Load() to load from FAT, - // but I've never tried this - song := Player_LoadMemory(@module_bin, module_bin_size, 64, 0); - if assigned(song) then - begin - printf('Title: %s' + #10, song^.songname); - printf('Channels: %u' + #10, song^.numchn); - printf('bpm: %u' + #10, md_bpm); - - printf(#10 + 'Starting module' + #10); - - Player_Start(song); - - irqSet(IRQ_TIMER0, @TimerInterrupt); - // call update with correct timing - TIMER0_CR^ := TIMER0_CR^ and not TIMER_ENABLE; - TIMER0_DATA^ := TIMER_FREQ_256(md_bpm * 50 div 125); - TIMER0_CR^ := TIMER_ENABLE or TIMER_DIV_256 or TIMER_IRQ_REQ; - irqEnable(IRQ_TIMER0); - - // save cursor position - printf(#27 + '[s'); - - while (Player_Active() <> 0) do - begin - // when using the software driver we could call update - // here instead - //MikMod_Update(); - - // I need to fix this part, because I get crap values :P - //printf('Time: %i : %02i : %02i' + #27 + '[u', (song^.sngtime div 60000),(song^.sngtime div 1000) mod 60,(song^.sngtime div 10) mod 100); - //printf(#10 + 'Time: %u' + #27 + '[u', [(song^.sngtime div 1000) mod 60]); - - swiWaitForVBlank(); - end; - - printf(#10 + 'Stopping module' + #10); - Player_Stop(); - Player_Free(song); - end else - printf('Could not load module, reason: ' + #10 + '%s' + #10, MikMod_strerror(MikMod_errno)); - - printf(#10 + 'Exit library' + #10); - MikMod_Exit(); -end. diff --git a/packages/libndsfpc/fpmake.pp b/packages/libndsfpc/fpmake.pp index deae00dd4e..66fd566634 100644 --- a/packages/libndsfpc/fpmake.pp +++ b/packages/libndsfpc/fpmake.pp @@ -16,7 +16,7 @@ begin {$ifdef ALLPACKAGES} P.Directory:='libndsfpc'; {$endif ALLPACKAGES} - P.Version:='2.2.2-0'; + P.Version:='2.2.4a'; P.SourcePath.Add('src'); // P.Dependencies.Add('x11'); diff --git a/packages/libndsfpc/src/dswifi/dswifi7.inc b/packages/libndsfpc/src/dswifi/dswifi7.inc deleted file mode 100644 index 9a7e1ed445..0000000000 --- a/packages/libndsfpc/src/dswifi/dswifi7.inc +++ /dev/null @@ -1,60 +0,0 @@ -(* - $Id: dswifi7.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - DSWifi Project - Arm7 Library Header file (dswifi7.h) - (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org - ****************************************************************************** - DSWifi Lib and test materials are licenced under the MIT open source licence: - Copyright (c) 2005-2006 Stephen Stair - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ------------------------------------------------------------------------------ - - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - Comments: - -*) - -{$include dswifi_version.inc} - -{$ifdef NDS_INTERFACE} - -type - WifiSyncHandler = procedure; - -procedure Read_Flash(address: cint; destination: pcchar; length: cint); cdecl; external; -function PowerChip_ReadWrite(cmd, data: cint): cint; cdecl; external; -procedure Wifi_Interrupt(); cdecl; external; -procedure Wifi_Update(); cdecl; external; -procedure Wifi_Init(WifiData: culong); cdecl; external; -procedure Wifi_Deinit(); cdecl; external; -procedure Wifi_Sync(); cdecl; external; -procedure Wifi_SetSyncHandler(sh: WifiSyncHandler); cdecl; external; -//procedure Wifi_SetSyncHandler(sh: pointer); cdecl; external; - -{$endif NDS_INTERFACE} - diff --git a/packages/libndsfpc/src/dswifi/dswifi7.pp b/packages/libndsfpc/src/dswifi/dswifi7.pp index 635142b1a5..a653f0b7d6 100644 --- a/packages/libndsfpc/src/dswifi/dswifi7.pp +++ b/packages/libndsfpc/src/dswifi/dswifi7.pp @@ -21,12 +21,12 @@ uses {$linklib sysbase} {$define NDS_INTERFACE} -{$include dswifi7.inc} +{$include inc/dswifi7.inc} {$undef NDS_INTERFACE} implementation {$define NDS_IMPLEMENTATION} -{$include dswifi7.inc} +{$include inc/dswifi7.inc} {$undef NDS_IMPLEMENTATION} end. diff --git a/packages/libndsfpc/src/dswifi/dswifi9.inc b/packages/libndsfpc/src/dswifi/dswifi9.inc deleted file mode 100644 index 2fdec8a9d8..0000000000 --- a/packages/libndsfpc/src/dswifi/dswifi9.inc +++ /dev/null @@ -1,220 +0,0 @@ -(* - $Id: dswifi9.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - DSWifi Project - Arm9 Library Header File (dswifi9.h) - (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org - ****************************************************************************** - DSWifi Lib and test materials are licenced under the MIT open source licence: - Copyright (c) 2005-2006 Stephen Stair - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ------------------------------------------------------------------------------ - - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - Comments: - -*) - - -{$include dswifi_version.inc} - -{$include sys/socket.inc} -{$include netinet/in.inc} -{$include netdb.inc} - -{$ifdef NDS_INTERFACE} - -const - WIFIINIT_OPTION_USELED = $0002; - - WIFIINIT_OPTION_USEHEAP_128 = $0000; - WIFIINIT_OPTION_USEHEAP_64 = $1000; - WIFIINIT_OPTION_USEHEAP_256 = $2000; - WIFIINIT_OPTION_USEHEAP_512 = $3000; - WIFIINIT_OPTION_USECUSTOMALLOC = $4000; - WIFIINIT_OPTION_HEAPMASK = $F000; - - WFLAG_PACKET_DATA = $0001; - WFLAG_PACKET_MGT = $0002; - WFLAG_PACKET_BEACON = $0004; - WFLAG_PACKET_CTRL = $0008; - - WFLAG_PACKET_ALL = $FFFF; - - - WFLAG_APDATA_ADHOC = $0001; - WFLAG_APDATA_WEP = $0002; - WFLAG_APDATA_WPA = $0004; - WFLAG_APDATA_COMPATIBLE = $0008; - WFLAG_APDATA_EXTCOMPATIBLE = $0010; - WFLAG_APDATA_SHORTPREAMBLE = $0020; - WFLAG_APDATA_ACTIVE = $8000; - -type - TWIFI_RETURN = ( - WIFI_RETURN_OK = 0, - WIFI_RETURN_LOCKFAILED = 1, - WIFI_RETURN_ERROR = 2, - WIFI_RETURN_PARAMERROR = 3 - ); - - TWIFI_STATS = ( - WSTAT_RXQUEUEDPACKETS, - WSTAT_TXQUEUEDPACKETS, - WSTAT_RXQUEUEDBYTES, - WSTAT_TXQUEUEDBYTES, - WSTAT_RXQUEUEDLOST, - WSTAT_TXQUEUEDREJECTED, - WSTAT_RXPACKETS, - WSTAT_RXBYTES, - WSTAT_RXDATABYTES, - WSTAT_TXPACKETS, - WSTAT_TXBYTES, - WSTAT_TXDATABYTES, - - WSTAT_HW_1B0,WSTAT_HW_1B1,WSTAT_HW_1B2,WSTAT_HW_1B3,WSTAT_HW_1B4,WSTAT_HW_1B5,WSTAT_HW_1B6,WSTAT_HW_1B7, - WSTAT_HW_1B8,WSTAT_HW_1B9,WSTAT_HW_1BA,WSTAT_HW_1BB,WSTAT_HW_1BC,WSTAT_HW_1BD,WSTAT_HW_1BE,WSTAT_HW_1BF, - WSTAT_HW_1C0,WSTAT_HW_1C1,WSTAT_HW_1C4,WSTAT_HW_1C5, - WSTAT_HW_1D0,WSTAT_HW_1D1,WSTAT_HW_1D2,WSTAT_HW_1D3,WSTAT_HW_1D4,WSTAT_HW_1D5,WSTAT_HW_1D6,WSTAT_HW_1D7, - WSTAT_HW_1D8,WSTAT_HW_1D9,WSTAT_HW_1DA,WSTAT_HW_1DB,WSTAT_HW_1DC,WSTAT_HW_1DD,WSTAT_HW_1DE,WSTAT_HW_1DF, - - NUM_WIFI_STATS - ); - - TWIFI_MODE = ( - WIFIMODE_DISABLED, - WIFIMODE_NORMAL, - WIFIMODE_SCAN, - WIFIMODE_ASSOCIATE, - WIFIMODE_ASSOCIATED, - WIFIMODE_DISASSOCIATE, - WIFIMODE_CANNOTASSOCIATE - ); - - TWIFI_AUTHLEVEL = ( - WIFI_AUTHLEVEL_DISCONNECTED, - WIFI_AUTHLEVEL_AUTHENTICATED, - WIFI_AUTHLEVEL_ASSOCIATED, - WIFI_AUTHLEVEL_DEASSOCIATED - ); - - TWIFIGETDATA = ( - WIFIGETDATA_MACADDRESS, - WIFIGETDATA_NUMWFCAPS, - MAX_WIFIGETDATA - ); - - - TWEPMODES = ( - WEPMODE_NONE = 0, - WEPMODE_40BIT = 1, - WEPMODE_128BIT = 2 - ); - - TWIFI_ASSOCSTATUS = ( - ASSOCSTATUS_DISCONNECTED, - ASSOCSTATUS_SEARCHING, - ASSOCSTATUS_AUTHENTICATING, - ASSOCSTATUS_ASSOCIATING, - ASSOCSTATUS_ACQUIRINGDHCP, - ASSOCSTATUS_ASSOCIATED, - ASSOCSTATUS_CANNOTCONNECT - ); - - WIFI_TXHEADER = record - enable_flags: cuint16; - unknown: cuint16; - countup: cuint16; - beaconfreq: cuint16; - tx_rate: cuint16; - tx_length: cuint16; - end; - TWIFI_TXHEADER = WIFI_TXHEADER; - PWIFI_TXHEADER = ^WIFI_TXHEADER; - - WIFI_RXHEADER = record - a: cuint16; - b: cuint16; - c: cuint16; - d: cuint16; - byteLength: cuint16; - rssi_: cuint16; - end; - TWIFI_RXHEADER = WIFI_RXHEADER; - PWIFI_RXHEADER = ^WIFI_RXHEADER; - - WIFI_ACCESSPOINT = packed record - ssid: array [0..32] of cchar; - ssid_len: cchar; - bssid: array [0..5] of cuint8; - macaddr: array [0..5] of cuint8; - maxrate: cuint16; - timectr: cuint32; - rssi: cuint16; - flags: cuint16; - spinlock: cuint32; - channel: cuint8; - rssi_past: array [0..7] of cuint8; - base_rates: array [0..15] of cuint8; - end; - TWIFI_ACCESSPOINT = WIFI_ACCESSPOINT; - PWIFI_ACCESSPOINT = ^WIFI_ACCESSPOINT; - - WifiPacketHandler = procedure(packetID, packetlength: cint); - - WifiSyncHandler = procedure; - - -function Wifi_Init(initflags: cint): culong; cdecl; external; -function Wifi_CheckInit(): cint; cdecl; external; -procedure Wifi_DisableWifi(); cdecl; external; -procedure Wifi_EnableWifi(); cdecl; external; -procedure Wifi_SetPromiscuousMode(enable: cint); cdecl; external; -procedure Wifi_ScanMode(); cdecl; external; -procedure Wifi_SetChannel(channel: cint); cdecl; external; -function Wifi_GetNumAP(): cint; cdecl; external; -function Wifi_GetAPData(apnum: cint; apdata: PWifi_AccessPoint): cint; cdecl; external; -function Wifi_FindMatchingAP(numaps: cint; apdata: PWifi_AccessPoint; match_dest: PWifi_AccessPoint): cint; cdecl; external; -function Wifi_ConnectAP(apdata: PWifi_AccessPoint; wepmode, wepkeyid: cint; wepkey: pcuchar): cint; cdecl; external; -procedure Wifi_AutoConnect(); cdecl; external; -function Wifi_AssocStatus(): cint; cdecl; external; -function Wifi_DisconnectAP(): cint; cdecl; external; -procedure Wifi_Timer(num_ms: cint); cdecl; external; -function Wifi_GetIP(): cuint32; cdecl; external; -function Wifi_GetIPInfo(pGateway, pSnmask, pDns1, pDns2: pcuint32): cuint32; cdecl; external; -procedure Wifi_SetIP(IPaddr, gateway, subnetmask, dns1, dns2: u32); cdecl; external; -function Wifi_GetData(datatype, bufferlen: cint; buffer: pcuchar): cint; cdecl; external; -function Wifi_GetStats(statnum: cint): cuint32; cdecl; external; -function Wifi_RawTxFrame(datalen, rate: cuint16; data: pcuint16): cint; cdecl; external; -procedure Wifi_RawSetPacketHandler(wphfunc: WifiPacketHandler); cdecl; external; -function Wifi_RxRawReadPacket(packetID, readlength: cint32; data: pcuint16): cint; cdecl; external; -procedure Wifi_Update(); cdecl; external; -procedure Wifi_Sync(); cdecl; external; -procedure Wifi_SetSyncHandler(sh: WifiSyncHandler); cdecl; external; -//procedure Wifi_SetSyncHandler(sh: pointer); cdecl; external; - -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/dswifi9.pp b/packages/libndsfpc/src/dswifi/dswifi9.pp index dca1b60719..5766c5f13d 100644 --- a/packages/libndsfpc/src/dswifi/dswifi9.pp +++ b/packages/libndsfpc/src/dswifi/dswifi9.pp @@ -21,12 +21,12 @@ uses {$linklib sysbase} {$define NDS_INTERFACE} -{$include dswifi9.inc} +{$include inc/dswifi9.inc} {$undef NDS_INTERFACE} implementation {$define NDS_IMPLEMENTATION} -{$include dswifi9.inc} +{$include inc/dswifi9.inc} {$undef NDS_IMPLEMENTATION} end. diff --git a/packages/libndsfpc/src/dswifi/dswifi_version.inc b/packages/libndsfpc/src/dswifi/dswifi_version.inc deleted file mode 100644 index 5515bb84c0..0000000000 --- a/packages/libndsfpc/src/dswifi/dswifi_version.inc +++ /dev/null @@ -1,7 +0,0 @@ -{$ifdef NDS_INTERFACE} -const - DSWIFI_MAJOR = 0; - DSWIFI_MINOR = 3; - DSWIFI_REVISION = 4; - DSWIFI_VERSION = '0.3.4'; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/inc/dswifi7.inc b/packages/libndsfpc/src/dswifi/inc/dswifi7.inc new file mode 100644 index 0000000000..359218cc99 --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/dswifi7.inc @@ -0,0 +1,60 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + DSWifi Project - Arm7 Library Header file (dswifi7.h) + (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org + ****************************************************************************** + DSWifi Lib and test materials are licenced under the MIT open source licence: + Copyright (c) 2005-2006 Stephen Stair + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + Comments: + +*) + +{$include dswifi_version.inc} + +{$ifdef NDS_INTERFACE} + +type + WifiSyncHandler = procedure; + +procedure Read_Flash(address: cint; destination: pcchar; length: cint); cdecl; external; +function PowerChip_ReadWrite(cmd, data: cint): cint; cdecl; external; +procedure Wifi_Interrupt(); cdecl; external; +procedure Wifi_Update(); cdecl; external; +procedure Wifi_Init(WifiData: culong); cdecl; external; +procedure Wifi_Deinit(); cdecl; external; +procedure Wifi_Sync(); cdecl; external; +procedure Wifi_SetSyncHandler(sh: WifiSyncHandler); cdecl; external; +//procedure Wifi_SetSyncHandler(sh: pointer); cdecl; external; +procedure installWifiFIFO(); cdecl; external; +{$endif NDS_INTERFACE} + diff --git a/packages/libndsfpc/src/dswifi/inc/dswifi9.inc b/packages/libndsfpc/src/dswifi/inc/dswifi9.inc new file mode 100644 index 0000000000..a9c4b0b6d8 --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/dswifi9.inc @@ -0,0 +1,242 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + DSWifi Project - Arm9 Library Header File (dswifi9.h) + (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org + ****************************************************************************** + DSWifi Lib and test materials are licenced under the MIT open source licence: + Copyright (c) 2005-2006 Stephen Stair + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + Comments: + +*) + + +{$include dswifi_version.inc} + +{$include sys/socket.inc} +{$include netinet/in.inc} +{$include netdb.inc} + +{$ifdef NDS_INTERFACE} + +const + WIFIINIT_OPTION_USELED = $0002; + + WIFIINIT_OPTION_USEHEAP_128 = $0000; + WIFIINIT_OPTION_USEHEAP_64 = $1000; + WIFIINIT_OPTION_USEHEAP_256 = $2000; + WIFIINIT_OPTION_USEHEAP_512 = $3000; + WIFIINIT_OPTION_USECUSTOMALLOC = $4000; + WIFIINIT_OPTION_HEAPMASK = $F000; + + WFLAG_PACKET_DATA = $0001; + WFLAG_PACKET_MGT = $0002; + WFLAG_PACKET_BEACON = $0004; + WFLAG_PACKET_CTRL = $0008; + + WFLAG_PACKET_ALL = $FFFF; + + + WFLAG_APDATA_ADHOC = $0001; + WFLAG_APDATA_WEP = $0002; + WFLAG_APDATA_WPA = $0004; + WFLAG_APDATA_COMPATIBLE = $0008; + WFLAG_APDATA_EXTCOMPATIBLE = $0010; + WFLAG_APDATA_SHORTPREAMBLE = $0020; + WFLAG_APDATA_ACTIVE = $8000; + + WFC_CONNECT = true; + INIT_ONLY = false; + +type + TWIFI_RETURN = ( + WIFI_RETURN_OK = 0, + WIFI_RETURN_LOCKFAILED = 1, + WIFI_RETURN_ERROR = 2, + WIFI_RETURN_PARAMERROR = 3 + ); + + TWIFI_STATS = ( + WSTAT_RXQUEUEDPACKETS, + WSTAT_TXQUEUEDPACKETS, + WSTAT_RXQUEUEDBYTES, + WSTAT_TXQUEUEDBYTES, + WSTAT_RXQUEUEDLOST, + WSTAT_TXQUEUEDREJECTED, + WSTAT_RXPACKETS, + WSTAT_RXBYTES, + WSTAT_RXDATABYTES, + WSTAT_TXPACKETS, + WSTAT_TXBYTES, + WSTAT_TXDATABYTES, + + WSTAT_HW_1B0,WSTAT_HW_1B1,WSTAT_HW_1B2,WSTAT_HW_1B3,WSTAT_HW_1B4,WSTAT_HW_1B5,WSTAT_HW_1B6,WSTAT_HW_1B7, + WSTAT_HW_1B8,WSTAT_HW_1B9,WSTAT_HW_1BA,WSTAT_HW_1BB,WSTAT_HW_1BC,WSTAT_HW_1BD,WSTAT_HW_1BE,WSTAT_HW_1BF, + WSTAT_HW_1C0,WSTAT_HW_1C1,WSTAT_HW_1C4,WSTAT_HW_1C5, + WSTAT_HW_1D0,WSTAT_HW_1D1,WSTAT_HW_1D2,WSTAT_HW_1D3,WSTAT_HW_1D4,WSTAT_HW_1D5,WSTAT_HW_1D6,WSTAT_HW_1D7, + WSTAT_HW_1D8,WSTAT_HW_1D9,WSTAT_HW_1DA,WSTAT_HW_1DB,WSTAT_HW_1DC,WSTAT_HW_1DD,WSTAT_HW_1DE,WSTAT_HW_1DF, + + NUM_WIFI_STATS + ); + + TWIFI_MODE = ( + WIFIMODE_DISABLED, + WIFIMODE_NORMAL, + WIFIMODE_SCAN, + WIFIMODE_ASSOCIATE, + WIFIMODE_ASSOCIATED, + WIFIMODE_DISASSOCIATE, + WIFIMODE_CANNOTASSOCIATE + ); + + TWIFI_AUTHLEVEL = ( + WIFI_AUTHLEVEL_DISCONNECTED, + WIFI_AUTHLEVEL_AUTHENTICATED, + WIFI_AUTHLEVEL_ASSOCIATED, + WIFI_AUTHLEVEL_DEASSOCIATED + ); + + TWIFIGETDATA = ( + WIFIGETDATA_MACADDRESS, + WIFIGETDATA_NUMWFCAPS, + MAX_WIFIGETDATA + ); + + + TWEPMODES = ( + WEPMODE_NONE = 0, + WEPMODE_40BIT = 1, + WEPMODE_128BIT = 2 + ); + + + TWIFI_ASSOCSTATUS = ( + ASSOCSTATUS_DISCONNECTED, + ASSOCSTATUS_SEARCHING, + ASSOCSTATUS_AUTHENTICATING, + ASSOCSTATUS_ASSOCIATING, + ASSOCSTATUS_ACQUIRINGDHCP, + ASSOCSTATUS_ASSOCIATED, + ASSOCSTATUS_CANNOTCONNECT + ); + +var + ASSOCSTATUS_STRINGS: array [0..0] of pcchar; cvar; external; + +{ +var + ASSOCSTATUS_STRINGS: array [TWIFI_ASSOCSTATUS] of string = ( + 'ASSOCSTATUS_DISCONNECTED', // not *trying* to connect + 'ASSOCSTATUS_SEARCHING', // data given does not completely specify an AP, looking for AP that matches the data. + 'ASSOCSTATUS_AUTHENTICATING', // connecting... + 'ASSOCSTATUS_ASSOCIATING', // connecting... + 'ASSOCSTATUS_ACQUIRINGDHCP', // connected to AP, but getting IP data from DHCP + 'ASSOCSTATUS_ASSOCIATED', // Connected! + 'ASSOCSTATUS_CANNOTCONNECT' // error in connecting... + ); +} + +type + + WIFI_TXHEADER = record + enable_flags: cuint16; + unknown: cuint16; + countup: cuint16; + beaconfreq: cuint16; + tx_rate: cuint16; + tx_length: cuint16; + end; + TWIFI_TXHEADER = WIFI_TXHEADER; + PWIFI_TXHEADER = ^WIFI_TXHEADER; + + WIFI_RXHEADER = record + a: cuint16; + b: cuint16; + c: cuint16; + d: cuint16; + byteLength: cuint16; + rssi_: cuint16; + end; + TWIFI_RXHEADER = WIFI_RXHEADER; + PWIFI_RXHEADER = ^WIFI_RXHEADER; + + WIFI_ACCESSPOINT = packed record + ssid: array [0..32] of cchar; + ssid_len: cchar; + bssid: array [0..5] of cuint8; + macaddr: array [0..5] of cuint8; + maxrate: cuint16; + timectr: cuint32; + rssi: cuint16; + flags: cuint16; + spinlock: cuint32; + channel: cuint8; + rssi_past: array [0..7] of cuint8; + base_rates: array [0..15] of cuint8; + end; + TWIFI_ACCESSPOINT = WIFI_ACCESSPOINT; + PWIFI_ACCESSPOINT = ^WIFI_ACCESSPOINT; + + WifiPacketHandler = procedure(packetID, packetlength: cint); + + WifiSyncHandler = procedure; + + +function Wifi_Init(initflags: cint): culong; cdecl; external; +function Wifi_CheckInit(): cint; cdecl; external; +procedure Wifi_DisableWifi(); cdecl; external; +procedure Wifi_EnableWifi(); cdecl; external; +procedure Wifi_SetPromiscuousMode(enable: cint); cdecl; external; +procedure Wifi_ScanMode(); cdecl; external; +procedure Wifi_SetChannel(channel: cint); cdecl; external; +function Wifi_GetNumAP(): cint; cdecl; external; +function Wifi_GetAPData(apnum: cint; apdata: PWifi_AccessPoint): cint; cdecl; external; +function Wifi_FindMatchingAP(numaps: cint; apdata: PWifi_AccessPoint; match_dest: PWifi_AccessPoint): cint; cdecl; external; +function Wifi_ConnectAP(apdata: PWifi_AccessPoint; wepmode, wepkeyid: cint; wepkey: pcuchar): cint; cdecl; external; +procedure Wifi_AutoConnect(); cdecl; external; +function Wifi_AssocStatus(): cint; cdecl; external; +function Wifi_DisconnectAP(): cint; cdecl; external; +procedure Wifi_Timer(num_ms: cint); cdecl; external; +function Wifi_GetIP(): cuint32; cdecl; external; +function Wifi_GetIPInfo(pGateway, pSnmask, pDns1, pDns2: pin_addr): cuint32; cdecl; external; +procedure Wifi_SetIP(IPaddr, gateway, subnetmask, dns1, dns2: u32); cdecl; external; +function Wifi_GetData(datatype, bufferlen: cint; buffer: pcuchar): cint; cdecl; external; +function Wifi_GetStats(statnum: cint): cuint32; cdecl; external; +function Wifi_RawTxFrame(datalen, rate: cuint16; data: pcuint16): cint; cdecl; external; +procedure Wifi_RawSetPacketHandler(wphfunc: WifiPacketHandler); cdecl; external; +function Wifi_RxRawReadPacket(packetID, readlength: cint32; data: pcuint16): cint; cdecl; external; +procedure Wifi_Update(); cdecl; external; +procedure Wifi_Sync(); cdecl; external; +procedure Wifi_SetSyncHandler(sh: WifiSyncHandler); cdecl; external; +//procedure Wifi_SetSyncHandler(sh: pointer); cdecl; external; +function Wifi_InitDefault(useWifiSettings: cbool): cbool; cdecl; external; +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/inc/dswifi_version.inc b/packages/libndsfpc/src/dswifi/inc/dswifi_version.inc new file mode 100644 index 0000000000..5f63b54571 --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/dswifi_version.inc @@ -0,0 +1,7 @@ +{$ifdef NDS_INTERFACE} +const + DSWIFI_MAJOR = 0; + DSWIFI_MINOR = 3; + DSWIFI_REVISION = 6; + DSWIFI_VERSION = '0.3.6'; +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/inc/netdb.inc b/packages/libndsfpc/src/dswifi/inc/netdb.inc new file mode 100644 index 0000000000..20de4f838f --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/netdb.inc @@ -0,0 +1,57 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + DSWifi Project - socket emulation layer defines/prototypes (netdb.h) + (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org + ****************************************************************************** + DSWifi Lib and test materials are licenced under the MIT open source licence: + Copyright (c) 2005-2006 Stephen Stair + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + Comments: + +*) + +{$ifdef NDS_INTERFACE} + +type + ppcchar = ^pcchar; + hostent = record + h_name: pcchar; + h_aliases: ppcchar; + h_addrtype: cint; + h_length: cint; + h_addr_list: ppcchar; + end; + phostent = ^hostent; + +function gethostbyname(const name: pchar): phostent; cdecl; external; + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/inc/netinet/in.inc b/packages/libndsfpc/src/dswifi/inc/netinet/in.inc new file mode 100644 index 0000000000..b3023a2f87 --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/netinet/in.inc @@ -0,0 +1,65 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + DSWifi Project - socket emulation layer defines/prototypes (netinet/in.h) + (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org + ****************************************************************************** + DSWifi Lib and test materials are licenced under the MIT open source licence: + Copyright (c) 2005-2006 Stephen Stair + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + Comments: + +*) + +{$ifdef NDS_INTERFACE} +const + INADDR_ANY = $00000000; + INADDR_BROADCAST = $FFFFFFFF; + INADDR_NONE = $FFFFFFFF; + +type + in_addr = packed record + s_addr: culong; + end; + pin_addr = ^in_addr; + + sockaddr_in = packed record + sin_family: cushort; + sin_port: cushort; + sin_addr: in_addr; + sin_zero: array [0..7] of cuchar; + end; + + +function inet_addr(const cp: pchar): culong; cdecl; external; +function inet_aton(const cp: pchar; inp: pin_addr): cint; cdecl; external; +function inet_ntoa(_in: in_addr): pcchar; cdecl; external; +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc b/packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc new file mode 100644 index 0000000000..452779ec3a --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc @@ -0,0 +1,183 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + DSWifi Project - socket emulation layer defines/prototypes (sgIP_errno.h) + (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org + ****************************************************************************** + DSWifi Lib and test materials are licenced under the MIT open source licence: + Copyright (c) 2005-2006 Stephen Stair + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + Comments: + +*) + + +(**** Note: This file is unused unless you need to build in an environment without newlib ****) + +{$ifdef NDS_INTERFACE} + +const + EPERM = 1; (* Operation not permitted *) + ENOENT = 2; (* No such file or directory *) + ESRCH = 3; (* No such process *) + EINTR = 4; (* Interrupted system call *) + EIO = 5; (* I/O error *) + ENXIO = 6; (* No such device or address *) + E2BIG = 7; (* Arg list too long *) + ENOEXEC = 8; (* Exec format error *) + EBADF = 9; (* Bad file number *) + ECHILD = 10; (* No child processes *) + EAGAIN = 11; (* Try again *) + ENOMEM = 12; (* Out of memory *) + EACCES = 13; (* Permission denied *) + EFAULT = 14; (* Bad address *) + ENOTBLK = 15; (* Block device required *) + EBUSY = 16; (* Device or resource busy *) + EEXIST = 17; (* File exists *) + EXDEV = 18; (* Cross-device link *) + ENODEV = 19; (* No such device *) + ENOTDIR = 20; (* Not a directory *) + EISDIR = 21; (* Is a directory *) + EINVAL = 22; (* Invalid argument *) + ENFILE = 23; (* File table overflow *) + EMFILE = 24; (* Too many open files *) + ENOTTY = 25; (* Not a typewriter *) + ETXTBSY = 26; (* Text file busy *) + EFBIG = 27; (* File too large *) + ENOSPC = 28; (* No space left on device *) + ESPIPE = 29; (* Illegal seek *) + EROFS = 30; (* Read-only file system *) + EMLINK = 31; (* Too many links *) + EPIPE = 32; (* Broken pipe *) + EDOM = 33; (* Math argument out of domain of func *) + ERANGE = 34; (* Math result not representable *) + EDEADLK = 35; (* Resource deadlock would occur *) + ENAMETOOLONG = 36; (* File name too long *) + ENOLCK = 37; (* No record locks available *) + ENOSYS = 38; (* Function not implemented *) + ENOTEMPTY = 39; (* Directory not empty *) + ELOOP = 40; (* Too many symbolic links encountered *) + EWOULDBLOCK = EAGAIN; (* Operation would block *) + ENOMSG = 42; (* No message of desired type *) + EIDRM = 43; (* Identifier removed *) + ECHRNG = 44; (* Channel number out of range *) + EL2NSYNC = 45; (* Level 2 not synchronized *) + EL3HLT = 46; (* Level 3 halted *) + EL3RST = 47; (* Level 3 reset *) + ELNRNG = 48; (* Link number out of range *) + EUNATCH = 49; (* Protocol driver not attached *) + ENOCSI = 50; (* No CSI structure available *) + EL2HLT = 51; (* Level 2 halted *) + EBADE = 52; (* Invalid exchange *) + EBADR = 53; (* Invalid request descriptor *) + EXFULL = 54; (* Exchange full *) + ENOANO = 55; (* No anode *) + EBADRQC = 56; (* Invalid request code *) + EBADSLT = 57; (* Invalid slot *) + + EDEADLOCK = EDEADLK; + + EBFONT = 59; (* Bad font file format *) + ENOSTR = 60; (* Device not a stream *) + ENODATA = 61; (* No data available *) + ETIME = 62; (* Timer expired *) + ENOSR = 63; (* Out of streams resources *) + ENONET = 64; (* Machine is not on the network *) + ENOPKG = 65; (* Package not installed *) + EREMOTE = 66; (* Object is remote *) + ENOLINK = 67; (* Link has been severed *) + EADV = 68; (* Advertise error *) + ESRMNT = 69; (* Srmount error *) + ECOMM = 70; (* Communication error on send *) + EPROTO = 71; (* Protocol error *) + EMULTIHOP = 72; (* Multihop attempted *) + EDOTDOT = 73; (* RFS specific error *) + EBADMSG = 74; (* Not a data message *) + EOVERFLOW = 75; (* Value too large for defined data type *) + ENOTUNIQ = 76; (* Name not unique on network *) + EBADFD = 77; (* File descriptor in bad state *) + EREMCHG = 78; (* Remote address changed *) + ELIBACC = 79; (* Can not access a needed shared library *) + ELIBBAD = 80; (* Accessing a corrupted shared library *) + ELIBSCN = 81; (* .lib section in a.out corrupted *) + ELIBMAX = 82; (* Attempting to link in too many shared libraries *) + ELIBEXEC = 83; (* Cannot exec a shared library directly *) + EILSEQ = 84; (* Illegal byte sequence *) + ERESTART = 85; (* Interrupted system call should be restarted *) + ESTRPIPE = 86; (* Streams pipe error *) + EUSERS = 87; (* Too many users *) + ENOTSOCK = 88; (* Socket operation on non-socket *) + EDESTADDRREQ = 89; (* Destination address required *) + EMSGSIZE = 90; (* Message too long *) + EPROTOTYPE = 91; (* Protocol wrong type for socket *) + ENOPROTOOPT = 92; (* Protocol not available *) + EPROTONOSUPPORT= 93; (* Protocol not supported *) + ESOCKTNOSUPPORT= 94; (* Socket type not supported *) + EOPNOTSUPP = 95; (* Operation not supported on transport endpoint *) + EPFNOSUPPORT = 96; (* Protocol family not supported *) + EAFNOSUPPORT = 97; (* Address family not supported by protocol *) + EADDRINUSE = 98; (* Address already in use *) + EADDRNOTAVAIL = 99; (* Cannot assign requested address *) + ENETDOWN = 100; (* Network is down *) + ENETUNREACH = 101; (* Network is unreachable *) + ENETRESET = 102; (* Network dropped connection because of reset *) + ECONNABORTED = 103; (* Software caused connection abort *) + ECONNRESET = 104; (* Connection reset by peer *) + ENOBUFS = 105; (* No buffer space available *) + EISCONN = 106; (* Transport endpoint is already connected *) + ENOTCONN = 107; (* Transport endpoint is not connected *) + ESHUTDOWN = 108; (* Cannot send after transport endpoint shutdown *) + ETOOMANYREFS = 109; (* Too many references: cannot splice *) + ETIMEDOUT = 110; (* Connection timed out *) + ECONNREFUSED = 111; (* Connection refused *) + EHOSTDOWN = 112; (* Host is down *) + EHOSTUNREACH = 113; (* No route to host *) + EALREADY = 114; (* Operation already in progress *) + EINPROGRESS = 115; (* Operation now in progress *) + ESTALE = 116; (* Stale NFS file handle *) + EUCLEAN = 117; (* Structure needs cleaning *) + ENOTNAM = 118; (* Not a XENIX named type file *) + ENAVAIL = 119; (* No XENIX semaphores available *) + EISNAM = 120; (* Is a named type file *) + EREMOTEIO = 121; (* Remote I/O error *) + EDQUOT = 122; (* Quota exceeded *) + + ENOMEDIUM = 123; (* No medium found *) + EMEDIUMTYPE = 124; (* Wrong medium type *) + + +{$ifndef errno} +var + sgIP_errno: cint; cvar; external; + {$define errno := sgIP_errno} +{$endif} + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/inc/sys/socket.inc b/packages/libndsfpc/src/dswifi/inc/sys/socket.inc new file mode 100644 index 0000000000..d5330402c2 --- /dev/null +++ b/packages/libndsfpc/src/dswifi/inc/sys/socket.inc @@ -0,0 +1,166 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + DSWifi Project - socket emulation layer defines/prototypes (sys/socket.h) + (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org + ****************************************************************************** + DSWifi Lib and test materials are licenced under the MIT open source licence: + Copyright (c) 2005-2006 Stephen Stair + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + of the Software, and to permit persons to whom the Software is furnished to do + so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + ****************************************************************************** + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + Comments: + +*) + + +{$ifdef NDS_INTERFACE} + +const +//#include + SOL_SOCKET = $fff; (* options for socket level *) + SOL_TCP = 6; (* TCP level *) + PF_UNSPEC = 0; + PF_INET = 2; + PF_INET6 = 10; + + AF_UNSPEC = PF_UNSPEC; + AF_INET = PF_INET; + AF_INET6 = PF_INET6; + + SOCK_STREAM = 1; + SOCK_DGRAM = 2; + +// need to sync FIO* values with commonly accepted ones sometime + FIONBIO = 1; + FIONREAD = 2; + + SOCKET_ERROR = -1; + +// send()/recv()/etc flags +// at present, only MSG_PEEK is implemented though. + MSG_WAITALL = $40000000; + MSG_TRUNC = $20000000; + MSG_PEEK = $10000000; + MSG_OOB = $08000000; + MSG_EOR = $04000000; + MSG_DONTROUTE = $02000000; + MSG_CTRUNC = $01000000; + +// shutdown() flags: + SHUT_RD = 1; + SHUT_WR = 2; + SHUT_RDWR = 3; + + + SO_DEBUG = $0001; (* turn on debugging info recording *) + SO_ACCEPTCONN = $0002; (* socket has had listen() *) + SO_REUSEADDR = $0004; (* allow local address reuse *) + SO_KEEPALIVE = $0008; (* keep connections alive *) + SO_DONTROUTE = $0010; (* just use interface addresses *) + SO_BROADCAST = $0020; (* permit sending of broadcast msgs *) + SO_USELOOPBACK = $0040; (* bypass hardware when possible *) + SO_LINGER = $0080; (* linger on close if data present *) + SO_OOBINLINE = $0100; (* leave received OOB data in line *) + SO_REUSEPORT = $0200; (* allow local address & port reuse *) + + SO_DONTLINGER = not SO_LINGER; + + SO_SNDBUF = $1001; (* send buffer size *) + SO_RCVBUF = $1002; (* receive buffer size *) + SO_SNDLOWAT = $1003; (* send low-water mark *) + SO_RCVLOWAT = $1004; (* receive low-water mark *) + SO_SNDTIMEO = $1005; (* send timeout *) + SO_RCVTIMEO = $1006; (* receive timeout *) + SO_ERROR = $1007; (* get error status and clear *) + SO_TYPE = $1008; (* get socket type *) +type + sockaddr = record + _sa_family: cushort; + sa_data: array [0..13] of char; + end; + psockaddr = ^sockaddr; + + +function socket(domain, _type, protocol: cint): cint; cdecl; external; +function bind(socket: cint; {const} addr: psockaddr; addr_len: cint): cint; cdecl; external; +function connect(socket: cint; {const} addr: psockaddr; addr_len: cint): cint; cdecl; external; +function send(socket: cint; {const} data: pointer; sendlength, flags: cint): cint; cdecl; external; +function recv(socket: cint; data: pointer; recvlength, flags: cint): cint; cdecl; external; +function sendto(socket: cint; {const} data: pointer; sendlength, flags: cint; const addr: psockaddr; addr_len: cint): cint; cdecl; external; +function recvfrom(socket: cint; data: pointer; recvlength, flags: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; +function listen(socket, max_connections: cint): cint; cdecl; external; +function accept(socket: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; +function shutdown(socket, shutdown_type: cint): cint; cdecl; external; +function closesocket(socket: cint): cint; cdecl; external; + +function ioctl(socket: cint; cmd: clong; arg: pointer): cint; cdecl; external; + +function setsockopt(socket, level, option_name: cint; const data: pointer; data_len: cint): cint; cdecl; external; +function getsockopt(socket, level, option_name: cint; data: pointer; data_len: pcint): cint; cdecl; external; + +function getpeername(socket: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; +function getsockname(socket: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; + +function gethostname(name: pcchar; {size_t} len: cuint): cint; cdecl; external; +function sethostname(const name: pcchar; {size_t} len: cuint): cint; cdecl; external; + +function htons(num: cushort): cushort; cdecl; external; +function htonl(num: culong): culong; cdecl; external; + +function ntohs(num: cushort): cushort; inline; +function ntohl(num: culong): culong; inline; + + +type + fd_set = array [0..7] of clong; + pfd_set = ^fd_set; + + timeval = packed record + sec: clong; + usec: clong; + end; + ptimeval = ^timeval; + + +function select(nfds: cint; readfds, writefds, errorfds: pfd_set; timeout: ptimeval): cint; cdecl; external; +{$endif NDS_INTERFACE} + + +{$ifdef NDS_IMPLEMENTATION} +function ntohs(num: cushort): cushort; inline; +begin + ntohs := htons(num); +end; + +function ntohl(num: culong): culong; inline; +begin + ntohl := htonl(num); +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/dswifi/netdb.inc b/packages/libndsfpc/src/dswifi/netdb.inc deleted file mode 100644 index 0041ecadd5..0000000000 --- a/packages/libndsfpc/src/dswifi/netdb.inc +++ /dev/null @@ -1,57 +0,0 @@ -(* - $Id: netdb.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - DSWifi Project - socket emulation layer defines/prototypes (netdb.h) - (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org - ****************************************************************************** - DSWifi Lib and test materials are licenced under the MIT open source licence: - Copyright (c) 2005-2006 Stephen Stair - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ------------------------------------------------------------------------------ - - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - Comments: - -*) - -{$ifdef NDS_INTERFACE} - -type - ppcchar = ^pcchar; - hostent = record - h_name: pcchar; - h_aliases: ppcchar; - h_addrtype: cint; - h_length: cint; - h_addr_list: ppcchar; - end; - phostent = ^hostent; - -function gethostbyname(const name: pchar): phostent; cdecl; external; - -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/netinet/in.inc b/packages/libndsfpc/src/dswifi/netinet/in.inc deleted file mode 100644 index a43a1367fc..0000000000 --- a/packages/libndsfpc/src/dswifi/netinet/in.inc +++ /dev/null @@ -1,65 +0,0 @@ -(* - $Id: in.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - DSWifi Project - socket emulation layer defines/prototypes (netinet/in.h) - (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org - ****************************************************************************** - DSWifi Lib and test materials are licenced under the MIT open source licence: - Copyright (c) 2005-2006 Stephen Stair - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ------------------------------------------------------------------------------ - - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - Comments: - -*) - -{$ifdef NDS_INTERFACE} -const - INADDR_ANY = $00000000; - INADDR_BROADCAST = $FFFFFFFF; - INADDR_NONE = $FFFFFFFF; - -type - in_addr = packed record - s_addr: culong; - end; - pin_addr = ^in_addr; - - sockaddr_in = packed record - sin_family: cushort; - sin_port: cushort; - sin_addr: in_addr; - sin_zero: array [0..7] of cuchar; - end; - - -function inet_addr(const cp: pchar): culong; cdecl; external; -function inet_aton(const cp: pchar; inp: pin_addr): cint; cdecl; external; -function inet_ntoa(_in: in_addr): pcchar; cdecl; external; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/sgIP_errno.inc b/packages/libndsfpc/src/dswifi/sgIP_errno.inc deleted file mode 100644 index 14cefe7cac..0000000000 --- a/packages/libndsfpc/src/dswifi/sgIP_errno.inc +++ /dev/null @@ -1,183 +0,0 @@ -(* - $Id: sgIP_errno.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - DSWifi Project - socket emulation layer defines/prototypes (sgIP_errno.h) - (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org - ****************************************************************************** - DSWifi Lib and test materials are licenced under the MIT open source licence: - Copyright (c) 2005-2006 Stephen Stair - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ------------------------------------------------------------------------------ - - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - Comments: - -*) - - -(**** Note: This file is unused unless you need to build in an environment without newlib ****) - -{$ifdef NDS_INTERFACE} - -const - EPERM = 1; (* Operation not permitted *) - ENOENT = 2; (* No such file or directory *) - ESRCH = 3; (* No such process *) - EINTR = 4; (* Interrupted system call *) - EIO = 5; (* I/O error *) - ENXIO = 6; (* No such device or address *) - E2BIG = 7; (* Arg list too long *) - ENOEXEC = 8; (* Exec format error *) - EBADF = 9; (* Bad file number *) - ECHILD = 10; (* No child processes *) - EAGAIN = 11; (* Try again *) - ENOMEM = 12; (* Out of memory *) - EACCES = 13; (* Permission denied *) - EFAULT = 14; (* Bad address *) - ENOTBLK = 15; (* Block device required *) - EBUSY = 16; (* Device or resource busy *) - EEXIST = 17; (* File exists *) - EXDEV = 18; (* Cross-device link *) - ENODEV = 19; (* No such device *) - ENOTDIR = 20; (* Not a directory *) - EISDIR = 21; (* Is a directory *) - EINVAL = 22; (* Invalid argument *) - ENFILE = 23; (* File table overflow *) - EMFILE = 24; (* Too many open files *) - ENOTTY = 25; (* Not a typewriter *) - ETXTBSY = 26; (* Text file busy *) - EFBIG = 27; (* File too large *) - ENOSPC = 28; (* No space left on device *) - ESPIPE = 29; (* Illegal seek *) - EROFS = 30; (* Read-only file system *) - EMLINK = 31; (* Too many links *) - EPIPE = 32; (* Broken pipe *) - EDOM = 33; (* Math argument out of domain of func *) - ERANGE = 34; (* Math result not representable *) - EDEADLK = 35; (* Resource deadlock would occur *) - ENAMETOOLONG = 36; (* File name too long *) - ENOLCK = 37; (* No record locks available *) - ENOSYS = 38; (* Function not implemented *) - ENOTEMPTY = 39; (* Directory not empty *) - ELOOP = 40; (* Too many symbolic links encountered *) - EWOULDBLOCK = EAGAIN; (* Operation would block *) - ENOMSG = 42; (* No message of desired type *) - EIDRM = 43; (* Identifier removed *) - ECHRNG = 44; (* Channel number out of range *) - EL2NSYNC = 45; (* Level 2 not synchronized *) - EL3HLT = 46; (* Level 3 halted *) - EL3RST = 47; (* Level 3 reset *) - ELNRNG = 48; (* Link number out of range *) - EUNATCH = 49; (* Protocol driver not attached *) - ENOCSI = 50; (* No CSI structure available *) - EL2HLT = 51; (* Level 2 halted *) - EBADE = 52; (* Invalid exchange *) - EBADR = 53; (* Invalid request descriptor *) - EXFULL = 54; (* Exchange full *) - ENOANO = 55; (* No anode *) - EBADRQC = 56; (* Invalid request code *) - EBADSLT = 57; (* Invalid slot *) - - EDEADLOCK = EDEADLK; - - EBFONT = 59; (* Bad font file format *) - ENOSTR = 60; (* Device not a stream *) - ENODATA = 61; (* No data available *) - ETIME = 62; (* Timer expired *) - ENOSR = 63; (* Out of streams resources *) - ENONET = 64; (* Machine is not on the network *) - ENOPKG = 65; (* Package not installed *) - EREMOTE = 66; (* Object is remote *) - ENOLINK = 67; (* Link has been severed *) - EADV = 68; (* Advertise error *) - ESRMNT = 69; (* Srmount error *) - ECOMM = 70; (* Communication error on send *) - EPROTO = 71; (* Protocol error *) - EMULTIHOP = 72; (* Multihop attempted *) - EDOTDOT = 73; (* RFS specific error *) - EBADMSG = 74; (* Not a data message *) - EOVERFLOW = 75; (* Value too large for defined data type *) - ENOTUNIQ = 76; (* Name not unique on network *) - EBADFD = 77; (* File descriptor in bad state *) - EREMCHG = 78; (* Remote address changed *) - ELIBACC = 79; (* Can not access a needed shared library *) - ELIBBAD = 80; (* Accessing a corrupted shared library *) - ELIBSCN = 81; (* .lib section in a.out corrupted *) - ELIBMAX = 82; (* Attempting to link in too many shared libraries *) - ELIBEXEC = 83; (* Cannot exec a shared library directly *) - EILSEQ = 84; (* Illegal byte sequence *) - ERESTART = 85; (* Interrupted system call should be restarted *) - ESTRPIPE = 86; (* Streams pipe error *) - EUSERS = 87; (* Too many users *) - ENOTSOCK = 88; (* Socket operation on non-socket *) - EDESTADDRREQ = 89; (* Destination address required *) - EMSGSIZE = 90; (* Message too long *) - EPROTOTYPE = 91; (* Protocol wrong type for socket *) - ENOPROTOOPT = 92; (* Protocol not available *) - EPROTONOSUPPORT= 93; (* Protocol not supported *) - ESOCKTNOSUPPORT= 94; (* Socket type not supported *) - EOPNOTSUPP = 95; (* Operation not supported on transport endpoint *) - EPFNOSUPPORT = 96; (* Protocol family not supported *) - EAFNOSUPPORT = 97; (* Address family not supported by protocol *) - EADDRINUSE = 98; (* Address already in use *) - EADDRNOTAVAIL = 99; (* Cannot assign requested address *) - ENETDOWN = 100; (* Network is down *) - ENETUNREACH = 101; (* Network is unreachable *) - ENETRESET = 102; (* Network dropped connection because of reset *) - ECONNABORTED = 103; (* Software caused connection abort *) - ECONNRESET = 104; (* Connection reset by peer *) - ENOBUFS = 105; (* No buffer space available *) - EISCONN = 106; (* Transport endpoint is already connected *) - ENOTCONN = 107; (* Transport endpoint is not connected *) - ESHUTDOWN = 108; (* Cannot send after transport endpoint shutdown *) - ETOOMANYREFS = 109; (* Too many references: cannot splice *) - ETIMEDOUT = 110; (* Connection timed out *) - ECONNREFUSED = 111; (* Connection refused *) - EHOSTDOWN = 112; (* Host is down *) - EHOSTUNREACH = 113; (* No route to host *) - EALREADY = 114; (* Operation already in progress *) - EINPROGRESS = 115; (* Operation now in progress *) - ESTALE = 116; (* Stale NFS file handle *) - EUCLEAN = 117; (* Structure needs cleaning *) - ENOTNAM = 118; (* Not a XENIX named type file *) - ENAVAIL = 119; (* No XENIX semaphores available *) - EISNAM = 120; (* Is a named type file *) - EREMOTEIO = 121; (* Remote I/O error *) - EDQUOT = 122; (* Quota exceeded *) - - ENOMEDIUM = 123; (* No medium found *) - EMEDIUMTYPE = 124; (* Wrong medium type *) - - -{$ifndef errno} -var - sgIP_errno: cint; cvar; external; - {$define errno := sgIP_errno} -{$endif} - -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/sys/socket.inc b/packages/libndsfpc/src/dswifi/sys/socket.inc deleted file mode 100644 index 3f4e6a1988..0000000000 --- a/packages/libndsfpc/src/dswifi/sys/socket.inc +++ /dev/null @@ -1,166 +0,0 @@ -(* - $Id: socket.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - DSWifi Project - socket emulation layer defines/prototypes (sys/socket.h) - (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org - ****************************************************************************** - DSWifi Lib and test materials are licenced under the MIT open source licence: - Copyright (c) 2005-2006 Stephen Stair - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - ****************************************************************************** - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - Comments: - -*) - - -{$ifdef NDS_INTERFACE} - -const -//#include - SOL_SOCKET = $fff; (* options for socket level *) - SOL_TCP = 6; (* TCP level *) - PF_UNSPEC = 0; - PF_INET = 2; - PF_INET6 = 10; - - AF_UNSPEC = PF_UNSPEC; - AF_INET = PF_INET; - AF_INET6 = PF_INET6; - - SOCK_STREAM = 1; - SOCK_DGRAM = 2; - -// need to sync FIO* values with commonly accepted ones sometime - FIONBIO = 1; - FIONREAD = 2; - - SOCKET_ERROR = -1; - -// send()/recv()/etc flags -// at present, only MSG_PEEK is implemented though. - MSG_WAITALL = $40000000; - MSG_TRUNC = $20000000; - MSG_PEEK = $10000000; - MSG_OOB = $08000000; - MSG_EOR = $04000000; - MSG_DONTROUTE = $02000000; - MSG_CTRUNC = $01000000; - -// shutdown() flags: - SHUT_RD = 1; - SHUT_WR = 2; - SHUT_RDWR = 3; - - - SO_DEBUG = $0001; (* turn on debugging info recording *) - SO_ACCEPTCONN = $0002; (* socket has had listen() *) - SO_REUSEADDR = $0004; (* allow local address reuse *) - SO_KEEPALIVE = $0008; (* keep connections alive *) - SO_DONTROUTE = $0010; (* just use interface addresses *) - SO_BROADCAST = $0020; (* permit sending of broadcast msgs *) - SO_USELOOPBACK = $0040; (* bypass hardware when possible *) - SO_LINGER = $0080; (* linger on close if data present *) - SO_OOBINLINE = $0100; (* leave received OOB data in line *) - SO_REUSEPORT = $0200; (* allow local address & port reuse *) - - SO_DONTLINGER = not SO_LINGER; - - SO_SNDBUF = $1001; (* send buffer size *) - SO_RCVBUF = $1002; (* receive buffer size *) - SO_SNDLOWAT = $1003; (* send low-water mark *) - SO_RCVLOWAT = $1004; (* receive low-water mark *) - SO_SNDTIMEO = $1005; (* send timeout *) - SO_RCVTIMEO = $1006; (* receive timeout *) - SO_ERROR = $1007; (* get error status and clear *) - SO_TYPE = $1008; (* get socket type *) -type - sockaddr = record - _sa_family: cushort; - sa_data: array [0..13] of char; - end; - psockaddr = ^sockaddr; - - -function socket(domain, _type, protocol: cint): cint; cdecl; external; -function bind(socket: cint; {const} addr: psockaddr; addr_len: cint): cint; cdecl; external; -function connect(socket: cint; {const} addr: psockaddr; addr_len: cint): cint; cdecl; external; -function send(socket: cint; {const} data: pointer; sendlength, flags: cint): cint; cdecl; external; -function recv(socket: cint; data: pointer; recvlength, flags: cint): cint; cdecl; external; -function sendto(socket: cint; {const} data: pointer; sendlength, flags: cint; const addr: psockaddr; addr_len: cint): cint; cdecl; external; -function recvfrom(socket: cint; data: pointer; recvlength, flags: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; -function listen(socket, max_connections: cint): cint; cdecl; external; -function accept(socket: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; -function shutdown(socket, shutdown_type: cint): cint; cdecl; external; -function closesocket(socket: cint): cint; cdecl; external; - -function ioctl(socket: cint; cmd: clong; arg: pointer): cint; cdecl; external; - -function setsockopt(socket, level, option_name: cint; const data: pointer; data_len: cint): cint; cdecl; external; -function getsockopt(socket, level, option_name: cint; data: pointer; data_len: pcint): cint; cdecl; external; - -function getpeername(socket: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; -function getsockname(socket: cint; addr: psockaddr; addr_len: pcint): cint; cdecl; external; - -function gethostname(name: pcchar; {size_t} len: cuint): cint; cdecl; external; -function sethostname(const name: pcchar; {size_t} len: cuint): cint; cdecl; external; - -function htons(num: cushort): cushort; cdecl; external; -function htonl(num: culong): culong; cdecl; external; - -function ntohs(num: cushort): cushort; inline; -function ntohl(num: culong): culong; inline; - - -type - fd_set = array [0..7] of clong; - pfd_set = ^fd_set; - - timeval = packed record - sec: clong; - usec: clong; - end; - ptimeval = ^timeval; - - -function select(nfds: cint; readfds, writefds, errorfds: pfd_set; timeout: ptimeval): cint; cdecl; external; -{$endif NDS_INTERFACE} - - -{$ifdef NDS_IMPLEMENTATION} -function ntohs(num: cushort): cushort; inline; -begin - ntohs := htons(num); -end; - -function ntohl(num: culong): culong; inline; -begin - ntohl := htonl(num); -end; - -{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/fat/fat.inc b/packages/libndsfpc/src/fat/fat.inc index 83bd8e10bb..95c2e3b755 100644 --- a/packages/libndsfpc/src/fat/fat.inc +++ b/packages/libndsfpc/src/fat/fat.inc @@ -38,51 +38,10 @@ *) {$ifdef NDS_INTERFACE} - -const - FEATURE_MEDIUM_CANREAD = $00000001; - FEATURE_MEDIUM_CANWRITE = $00000002; - FEATURE_SLOT_GBA = $00000010; - FEATURE_SLOT_NDS = $00000020; - -type - FN_MEDIUM_STARTUP = function: cbool; - FN_MEDIUM_ISINSERTED = function: cbool; - FN_MEDIUM_READSECTORS = function(sector, numSectors: cuint32; buffer: pointer): cbool; - FN_MEDIUM_WRITESECTORS = function(sector, numSectors: cuint32; const buffer: pointer): cbool; - FN_MEDIUM_CLEARSTATUS = function: cbool; - FN_MEDIUM_SHUTDOWN = function: cbool; - - IO_INTERFACE_STRUCT = record - ioType: cuint32; - features: cuint32; - fn_startup: FN_MEDIUM_STARTUP; - fn_isInserted: FN_MEDIUM_ISINSERTED; - fn_readSectors: FN_MEDIUM_READSECTORS; - fn_writeSectors: FN_MEDIUM_WRITESECTORS; - fn_clearStatus: FN_MEDIUM_CLEARSTATUS; - fn_shutdown: FN_MEDIUM_SHUTDOWN; - end; - - IO_INTERFACE = IO_INTERFACE_STRUCT; - TIO_INTERFACE_STRUCT = IO_INTERFACE_STRUCT; - PIO_INTERFACE_STRUCT = ^IO_INTERFACE_STRUCT; - - PARTITION_INTERFACE = ( - PI_DEFAULT = 0, - PI_SLOT_1, - PI_SLOT_2, - PI_CUSTOM - ); - - function fatInit(cacheSize: cuint32; setAsDefaultDevice: cbool): cbool; cdecl; external; function fatInitDefault(): cbool; cdecl; external; -function fatMountNormalInterface(partitionNumber: PARTITION_INTERFACE; cacheSize: cuint32): cbool; cdecl; external; -function fatMountCustomInterface(const device: PIO_INTERFACE_STRUCT; cacheSize: cuint32): cbool; cdecl; external; -function fatUnmount(partitionNumber: PARTITION_INTERFACE): cbool; cdecl; external; -function fatUnsafeUnmount(partitionNumber: PARTITION_INTERFACE): cbool; cdecl; external; -function fatSetDefaultInterface(partitionNumber: PARTITION_INTERFACE): cbool; cdecl; external; - +function fatMountSimple (const name: pcchar; const ainterface: PDISC_INTERFACE): cbool; cdecl; external; +function fatMount (const name: pcchar; const ainterface: PDISC_INTERFACE; startSector, cacheSize: cuint32): cbool; cdecl; external; +function fatUnmount(const name: pcchar): cbool; cdecl; external; {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/fat/fat.pp b/packages/libndsfpc/src/fat/fat.pp index 502209f339..9728cca946 100644 --- a/packages/libndsfpc/src/fat/fat.pp +++ b/packages/libndsfpc/src/fat/fat.pp @@ -13,20 +13,28 @@ interface uses ctypes, nds9; +{$linklib fat} {$linklib nds9} -{$linklib libfat.a} {$linklib c} {$linklib gcc} {$linklib sysbase} {$define NDS_INTERFACE} +{$include fathelper.inc} +{$include ../nds/disc_io.inc} {$include fat.inc} {$undef NDS_INTERFACE} implementation {$define NDS_IMPLEMENTATION} +{$include fathelper.inc} +{$include ../nds/disc_io.inc} {$include fat.inc} {$undef NDS_IMPLEMENTATION} +initialization + +finalization + end. diff --git a/packages/libndsfpc/src/fat/fathelper.inc b/packages/libndsfpc/src/fat/fathelper.inc new file mode 100644 index 0000000000..a3aba08b88 --- /dev/null +++ b/packages/libndsfpc/src/fat/fathelper.inc @@ -0,0 +1,129 @@ +{$ifdef NDS_INTERFACE} + +(* + ------------------------------------------------------------------------------ + libc file handling types and routines + ------------------------------------------------------------------------------ +*) + +type + _FILE = record + firstCluster: cuint; + length: cuint; + curPos: cuint; + curClus: cuint; // Current cluster to read from + curSect: integer; // Current sector within cluster + curByte: integer; // Current byte within sector + readBuffer: array [0..511] of byte; // Buffer used for unaligned reads + appClus: cuint; // Cluster to append to + appSect: integer; // Sector within cluster for appending + appByte: integer; // Byte within sector for appending + read: boolean; // Can read from file + write: boolean; // Can write to file + append: boolean; // Can append to file + inUse: boolean; // This file is open + dirEntSector: cuint; // The sector where the directory entry is stored + dirEntOffset: integer; // The offset within the directory sector + end; + P_FILE = ^_FILE; + +const + SEEK_SET = 0; + SEEK_CUR = 1; + SEEK_END = 2; + +(* + ------------------------------------------------------------------------------ + Directory iterator for mantaining state between dir* calls + ------------------------------------------------------------------------------ +*) +type + DIR_ITER = record + device: cint; + dirStruct: pointer; + end; + PDIR_ITER = ^DIR_ITER; + + stat = packed record + st_dev: cint; + st_ino: cuint; + st_mode : cuint; + st_nlink : cushort; + st_uid : cushort; + st_gid : cushort; + st_rdev : cint; + st_size : clong; + st_atime : clong; + + st_spare1: clong; + st_mtime: clong; + st_spare2: clong; + st_ctime: clong; + st_spare3: clong; + st_blksize: clong; + st_blocks: clong; + st_spare4: array [0..1] of clong; + end; + TStat = stat; + PStat = ^stat; + +const + S_IFMT = $F000; + S_IFDIR = $4000; + S_IFCHR = $2000; + S_IFBLK = $6000; + S_IFREG = $8000; + S_IFIFO = $1000; + S_IFLNK = $A000; + S_IFSOCK = $C000; + + S_ISUID = $800; + S_ISGID = $400; + S_ISVTX = $200; + S_IREAD = $100; + S_IWRITE = $80; + S_IEXEC = $40; + NAME_MAX = 767; + +type + dirent = record + d_ino: cint; + d_name: array [0..NAME_MAX] of char; + end; + PDirent = ^dirent; + PPDirent = ^PDirent; + + DIR = record + position: cint32; + dirData: PDIR_ITER; + fileData: dirent; + end; + PDIR = ^DIR; + +function diropen(const path: pchar): PDIR_ITER; cdecl; external; +function dirreset(dirState: PDIR_ITER): cint; cdecl; external; +function dirnext(dirState: PDIR_ITER; filename: pchar; filestat: Pstat): cint; cdecl; external; +function dirclose(dirState: PDIR_ITER): cint; cdecl; external; + +(* File handling *) +function fopen(filename: Pchar; modes: Pchar): P_FILE; cdecl; external; +function fread(ptr: pointer; size: longint; n: longint; stream: P_FILE): longint; cdecl; external; +function fread(var ptr; size: longint; n: longint; var stream: _FILE): longint; cdecl; external; +function fwrite(ptr: pointer; size: longint; n: longint; s: P_FILE): longint; cdecl; external; +function fwrite(var ptr; size: longint; n: longint; var s: _FILE): longint; cdecl; external; +function ftell(stream: P_FILE): longint; cdecl; external; +function ftell(var stream: _FILE): longint; cdecl; external; +function fseek(stream: P_FILE; off: longint; whence: longint): longint; cdecl; external; +function fseek(var stream: _FILE; off: longint; whence: longint): longint; cdecl; external; +function fclose(stream: P_FILE): longint; cdecl; external; +function fclose(var stream: _FILE): longint; cdecl; external; +function isatty(fildes: longint): longint; cdecl; external; +function fileno(para1: P_FILE): longint; cdecl; external; +function fileno(var para1: _FILE): longint; cdecl; external; +function fstat(fildes: longint; buf: PStat): longint; cdecl; external; +function fstat(fildes: longint; var buf: TStat): longint; cdecl; external; +function _stat(__file:Pchar; var __buf:Tstat):longint; cdecl; external name 'stat'; +function ftruncate(fildes: longint; len: longint): longint; cdecl; external; +function unlink(path: Pchar): longint; cdecl; external; +function rename(para1: Pchar; para2: Pchar): longint; cdecl; external; +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/fat/filesystem.inc b/packages/libndsfpc/src/fat/filesystem.inc new file mode 100644 index 0000000000..dacf5ef69c --- /dev/null +++ b/packages/libndsfpc/src/fat/filesystem.inc @@ -0,0 +1,6 @@ +{$ifdef NDS_INTERFACE} + +function nitroFSInit(): cbool; cdecl; external; + +{$endif NDS_INTERFACE} + diff --git a/packages/libndsfpc/src/fat/filesystem.pp b/packages/libndsfpc/src/fat/filesystem.pp new file mode 100644 index 0000000000..60dd9e5ef2 --- /dev/null +++ b/packages/libndsfpc/src/fat/filesystem.pp @@ -0,0 +1,40 @@ +unit filesystem; +{$mode objfpc} +{$apptype arm9} +{$define arm9} + +{$J+} +{$INLINE ON} +{$MACRO ON} +{$PACKRECORDS C} + +interface + +uses + ctypes, nds9; + +{$linklib filesystem} +{$linklib nds9} + +{$linklib c} +{$linklib gcc} +{$linklib sysbase} + +{$define NDS_INTERFACE} +{$include fathelper.inc} +{$include ../nds/disc_io.inc} +{$include filesystem.inc} +{$undef NDS_INTERFACE} + +implementation +{$define NDS_IMPLEMENTATION} +{$include fathelper.inc} +{$include ../nds/disc_io.inc} +{$include filesystem.inc} +{$undef NDS_IMPLEMENTATION} + +initialization + +finalization + +end. diff --git a/packages/libndsfpc/src/fat/gbfs.inc b/packages/libndsfpc/src/fat/gbfs.inc index 027809703f..e0c5501f03 100644 --- a/packages/libndsfpc/src/fat/gbfs.inc +++ b/packages/libndsfpc/src/fat/gbfs.inc @@ -45,7 +45,7 @@ {$define GBFS_SPACE(filename, kbytes) := filename: array [(kbytes)*1024 - 1] of char = 'PinEightGBFSSpace-' + filename + '-' + kbytes} type - GBFS_FILE = packed record + GBFS_FILE = record magic: array [0..15] of char; // "PinEightGBFS\r\n\032\n" total_len: cuint32; // total length of archive dir_off: cuint16; // offset in bytes to directory @@ -54,7 +54,7 @@ type end; PGBFS_FILE = ^GBFS_FILE; - GBFS_ENTRY = packed record + GBFS_ENTRY = record name: array [0..23] of char; // filename, nul-padded len: cuint32; // length of object in bytes data_offset: cuint32; // in bytes from beginning of file diff --git a/packages/libndsfpc/src/libmikmod/inc/mikmod.inc b/packages/libndsfpc/src/libmikmod/inc/mikmod.inc deleted file mode 100644 index d312eabf16..0000000000 --- a/packages/libndsfpc/src/libmikmod/inc/mikmod.inc +++ /dev/null @@ -1,1247 +0,0 @@ -(* MikMod sound library - (c) 1998, 1999, 2000 Miodrag Vallat and others - see file AUTHORS - for complete list. - - This library is free software; you can redistribute it and/or modify - it under the terms of the GNU Library General Public License as - published by the Free Software Foundation; either version 2 of - the License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Library General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA - 02111-1307, USA. -*) - - -{$ifdef NDS_INTERFACE} -(**** CONST *******************************************************************) -const - LIBMIKMOD_VERSION_MAJOR = 3; - LIBMIKMOD_VERSION_MINOR = 2; - LIBMIKMOD_REVISION = 0; - - LIBMIKMOD_VERSION = ( - (LIBMIKMOD_VERSION_MAJOR shl 16) or - (LIBMIKMOD_VERSION_MINOR shl 8) or - (LIBMIKMOD_REVISION) - ); - - SFX_CRITICAL = 1; - - SF_16BITS = $0001; - SF_STEREO = $0002; - SF_SIGNED = $0004; - SF_BIG_ENDIAN = $0008; - SF_DELTA = $0010; - SF_ITPACKED = $0020; - - SF_FORMATMASK = $003F; - - SF_LOOP = $0100; - SF_BIDI = $0200; - SF_REVERSE = $0400; - SF_SUSTAIN = $0800; - - SF_PLAYBACKMASK = $0C00; - - SF_OWNPAN = $1000; - SF_UST_LOOP = $2000; - - SF_EXTRAPLAYBACKMASK = $3000; - - PAN_LEFT = 0; - PAN_HALFLEFT = 64; - PAN_CENTER = 128; - PAN_HALFRIGHT = 192; - PAN_RIGHT = 255; - PAN_SURROUND = 512; - - INSTNOTES = 120; - - ENVPOINTS = 32; - - UF_MAXCHAN = 64; - - UF_XMPERIODS = $0001; - UF_LINEAR = $0002; - UF_INST = $0004; - UF_NNA = $0008; - UF_S3MSLIDES = $0010; - UF_BGSLIDES = $0020; - UF_HIGHBPM = $0040; - UF_NOWRAP = $0080; - UF_ARPMEM = $0100; - UF_FT2QUIRKS = $0200; - UF_PANNING = $0400; - - MUTE_EXCLUSIVE = 32000; - MUTE_INCLUSIVE = 32001; - - DMODE_16BITS = $0001; - DMODE_STEREO = $0002; - DMODE_SOFT_SNDFX = $0004; - DMODE_SOFT_MUSIC = $0008; - DMODE_HQMIXER = $0010; - DMODE_FLOAT = $0020; - DMODE_SURROUND = $0100; - DMODE_INTERP = $0200; - DMODE_REVERSE = $0400; - - OCTAVE = 12; - - UF_MAXMACRO = $10; - UF_MAXFILTER = $100; - - FILT_CUT = $80; - FILT_RESONANT = $81; - - IF_OWNPAN = 1; - IF_PITCHPAN = 2; - - EF_ON = 1; - EF_SUSTAIN = 2; - EF_LOOP = 4; - EF_VOLENV = 8; - - NNA_CUT = 0; - NNA_CONTINUE = 1; - NNA_OFF = 2; - NNA_FADE = 3; - - NNA_MASK = 3; - - DCT_OFF = 0; - DCT_NOTE = 1; - DCT_SAMPLE = 2; - DCT_INST = 3; - - DCA_CUT = 0; - DCA_OFF = 1; - DCA_FADE = 2; - - KEY_KICK = 0; - KEY_OFF = 1; - KEY_FADE = 2; - KEY_KILL = (KEY_OFF or KEY_FADE); - - KICK_ABSENT = 0; - KICK_NOTE = 1; - KICK_KEYOFF = 2; - KICK_ENV = 4; - - AV_IT = 1; - - POS_NONE = (-2); - - LAST_PATTERN = word(-1); - - S3MIT_OLDSTYLE = 1; - S3MIT_IT = 2; - S3MIT_SCREAM = 4; - - MAXSAMPLEHANDLES = 384; - - STM_NTRACKERS = 3; - -(****** Types *****************************************************************) -type - SBYTE = cschar; - PSBYTE = ^cschar; - UBYTE = cuchar; - PUBYTE = ^cuchar; - SWORD = csshort; - PSWORD = ^csshort; - UWORD = cushort; - PUWORD = ^cushort; - SLONG = csint; - PSLONG = ^csint; - ULONG = cuint; - PULONG = ^cuint; - BOOL = cint; - - MikMod_Errors = ( - MMERR_OPENING_FILE = 1, - MMERR_OUT_OF_MEMORY, - MMERR_DYNAMIC_LINKING, - - MMERR_SAMPLE_TOO_BIG, - MMERR_OUT_OF_HANDLES, - MMERR_UNKNOWN_WAVE_TYPE, - - MMERR_LOADING_PATTERN, - MMERR_LOADING_TRACK, - MMERR_LOADING_HEADER, - MMERR_LOADING_SAMPLEINFO, - MMERR_NOT_A_MODULE, - MMERR_NOT_A_STREAM, - MMERR_MED_SYNTHSAMPLES, - MMERR_ITPACK_INVALID_DATA, - - MMERR_DETECTING_DEVICE, - MMERR_INVALID_DEVICE, - MMERR_INITIALIZING_MIXER, - MMERR_OPENING_AUDIO, - MMERR_8BIT_ONLY, - MMERR_16BIT_ONLY, - MMERR_STEREO_ONLY, - MMERR_ULAW, - MMERR_NON_BLOCK, - - MMERR_AF_AUDIO_PORT, - - MMERR_AIX_CONFIG_INIT, - MMERR_AIX_CONFIG_CONTROL, - MMERR_AIX_CONFIG_START, - - MMERR_GUS_SETTINGS, - MMERR_GUS_RESET, - MMERR_GUS_TIMER, - - MMERR_HP_SETSAMPLESIZE, - MMERR_HP_SETSPEED, - MMERR_HP_CHANNELS, - MMERR_HP_AUDIO_OUTPUT, - MMERR_HP_AUDIO_DESC, - MMERR_HP_BUFFERSIZE, - - MMERR_OSS_SETFRAGMENT, - MMERR_OSS_SETSAMPLESIZE, - MMERR_OSS_SETSTEREO, - MMERR_OSS_SETSPEED, - - MMERR_SGI_SPEED, - MMERR_SGI_16BIT, - MMERR_SGI_8BIT, - MMERR_SGI_STEREO, - MMERR_SGI_MONO, - - MMERR_SUN_INIT, - - MMERR_OS2_MIXSETUP, - MMERR_OS2_SEMAPHORE, - MMERR_OS2_TIMER, - MMERR_OS2_THREAD, - - MMERR_DS_PRIORITY, - MMERR_DS_BUFFER, - MMERR_DS_FORMAT, - MMERR_DS_NOTIFY, - MMERR_DS_EVENT, - MMERR_DS_THREAD, - MMERR_DS_UPDATE, - - MMERR_WINMM_HANDLE, - MMERR_WINMM_ALLOCATED, - MMERR_WINMM_DEVICEID, - MMERR_WINMM_FORMAT, - MMERR_WINMM_UNKNOWN, - - MMERR_MAC_SPEED, - MMERR_MAC_START, - - MMERR_OSX_UNKNOWN_DEVICE, - MMERR_OSX_BAD_PROPERTY, - MMERR_OSX_UNSUPPORTED_FORMAT, - MMERR_OSX_SET_STEREO, - MMERR_OSX_BUFFER_ALLOC, - MMERR_OSX_ADD_IO_PROC, - MMERR_OSX_DEVICE_START, - MMERR_OSX_PTHREAD, - - MMERR_DOSWSS_STARTDMA, - MMERR_DOSSB_STARTDMA, - - MMERR_MAX - ); - - SAMPLE = packed record - panning: csshort; - speed: culong; - volume: cuchar; - inflags: cushort; - flags: cushort; - length: cuint; - loopstart: cuint; - loopend: cuint; - susbegin: cuint; - susend: cuint; - globvol: cuchar; - vibflags: cuchar; - vibtype: cuchar; - vibsweep: cuchar; - vibdepth: cuchar; - vibrate: cuchar; - samplename: pcchar; - avibpos: cushort; - divfactor: cuchar; - seekpos: cuint; - handle: csshort; - end; - TSample = SAMPLE; - PSample = ^SAMPLE; - - ENVPT = packed record - pos: csshort; - val: csshort; - end; - TENVPT = ENVPT; - PENVPT = ^ENVPT; - - INSTRUMENT = packed record - insname: pcchar; - flags: cuchar; - samplenumber: array [0..INSTNOTES - 1] of cushort; - samplenote: array [0..INSTNOTES - 1] of cuchar; - nnatype: cuchar; - dca: cuchar; - dct: cuchar; - globvol: cuchar; - volfade: cushort; - panning: csshort; - pitpansep: cuchar; - pitpancenter: cuchar; - rvolvar: cuchar; - rpanvar: cuchar; - volflg: cuchar; - volpts: cuchar; - volsusbeg: cuchar; - volsusend: cuchar; - volbeg: cuchar; - volend: cuchar; - volenv: array [0..ENVPOINTS - 1] of ENVPT; - panflg: cuchar; - panpts: cuchar; - pansusbeg: cuchar; - pansusend: cuchar; - panbeg: cuchar; - panend: cuchar; - panenv: array [0..ENVPOINTS - 1] of ENVPT; - pitflg: cuchar; - pitpts: cuchar; - pitsusbeg: cuchar; - pitsusend: cuchar; - pitbeg: cuchar; - pitend: cuchar; - pitenv: array [0..ENVPOINTS - 1] of ENVPT; - end; - TInstrument = INSTRUMENT; - PInstrument = ^INSTRUMENT; - - MP_CHANNEL = packed record - i: PInstrument; - s: PSample; - sample: cuchar; - note: cuchar; - outvolume: csshort; - chanvol: cschar; - fadevol: cushort; - panning: csshort; - kick: cuchar; - kick_flag: cuchar; - period: cushort; - nna: cuchar; - volflg: cuchar; - panflg: cuchar; - pitflg: cuchar; - keyoff: cuchar; - handle: csshort; - notedelay: cuchar; - start: csint; - end; - TMPChannel = MP_CHANNEL; - PMPChannel = ^MP_CHANNEL; - - ENVPR = packed record - flg: cuchar; - pts: cuchar; - susbeg: cuchar; - susend: cuchar; - beg: cuchar; - _end: cuchar; - p: csshort; - a: cushort; - b: cushort; - env: PENVPT; - end; - TENVPR = ENVPR; - PENVPR = ^ENVPR; - - - PMP_VOICE = ^MP_VOICE; - - MP_CONTROL = packed record - main: MP_CHANNEL; - - slave: PMP_VOICE; - - slavechn: cuchar; - muted: cuchar; - ultoffset: cushort; - anote: cuchar; - oldnote: cuchar; - ownper: csshort; - ownvol: csshort; - dca: cuchar; - dct: cuchar; - row: pcuchar; - retrig: cschar; - speed: cuint; - volume: csshort; - tmpvolume: csshort; - tmpperiod: cushort; - wantedperiod: cushort; - arpmem: cuchar; - pansspd: cuchar; - slidespeed: cushort; - portspeed: cushort; - s3mtremor: cuchar; - s3mtronof: cuchar; - s3mvolslide: cuchar; - sliding: cschar; - s3mrtgspeed: cuchar; - s3mrtgslide: cuchar; - glissando: cuchar; - wavecontrol: cuchar; - vibpos: cschar; - vibspd: cuchar; - vibdepth: cuchar; - - trmpos: cschar; - trmspd: cuchar; - trmdepth: cuchar; - - fslideupspd: cuchar; - fslidednspd: cuchar; - fportupspd: cuchar; - fportdnspd: cuchar; - ffportupspd: cuchar; - ffportdnspd: cuchar; - - hioffset: cuint; - soffset: cushort; - - sseffect: cuchar; - ssdata: cuchar; - chanvolslide: cuchar; - - panbwave: cuchar; - panbpos: cuchar; - panbspd: cschar; - panbdepth: cuchar; - - newsamp: cushort; - voleffect: cuchar; - voldata: cuchar; - - pat_reppos: csshort; - pat_repcnt: cushort; - end; - TMPControl = MP_CONTROL; - PMPControl = ^MP_CONTROL; - - MP_VOICE = packed record - main: MP_CHANNEL; - venv: ENVPR; - penv: ENVPR; - cenv: ENVPR; - avibpos: cushort; - aswppos: cushort; - totalvol: cuint; - mflag: cint; - masterchn: csshort; - masterperiod: cushort; - master: PMPControl; - end; - TMPVoice = MP_VOICE; - PMPVoice = ^MP_VOICE; - - ppcuchar = ^pcuchar; - - MODULE = packed record - songname: pcchar; - modtype: pcchar; - comment: pcchar; - flags: cushort; - numchn: cuchar; - numvoices: cuchar; - numpos: cushort; - numpat: cushort; - numins: cushort; - numsmp: cushort; - instruments: PInstrument; - samples: PSample; - realchn: cuchar; - totalchn: cuchar; - reppos: cushort; - initspeed: cuchar; - inittempo: cushort; - initvolume: cuchar; - panning: array [0..UF_MAXCHAN - 1] of cushort; - chanvol: array [0..UF_MAXCHAN - 1] of cuchar; - bpm: cushort; - sngspd: cushort; - volume: csshort; - extspd: cint; - panflag: cint; - wrap: cint; - loop: cint; - fadeout: cint; - patpos: cushort; - sngpos: csshort; - sngtime: cuint; - relspd: csshort; - numtrk: cushort; - tracks: ppcuchar; - patterns: pcushort; - pattrows: pcushort; - positions: pcushort; - forbid: cint; - numrow: cushort; - vbtick: cushort; - sngremainder: cushort; - control: PMPControl; - voice: PMPVoice; - globalslide: cuchar; - pat_repcrazy: cuchar; - patbrk: cushort; - patdly: cuchar; - patdly2: cuchar; - posjmp: csshort; - bpmlimit: cushort; - end; - TModule = MODULE; - PModule = ^MODULE; - - - VOICEINFO = packed record - i: PInstrument; - s: PSample; - panning: csshort; - volume: cschar; - period: cushort; - kick: cuchar; - end; - TVoiceInfo = VOICEINFO; - PVoiceInfo = ^VOICEINFO; - - - - drvenum1 = ( - MD_MUSIC = 0, - MD_SNDFX - ); - - drvenum2 = ( - MD_HARDWARE = 0, - MD_SOFTWARE - ); - - PMReader = ^MREADER; - TSeek1 = function(value1: PMReader; value2: clong; value3: cint): pcint; - PSeek1 = ^TSeek1; - TTell1 = function(value: PMReader): pclong; - PTell1 = ^TTell1; - TRead = function(value1: PMReader; value2: pointer; value3: cint): pcint; - PRead = ^TRead; - TGet = function(value: PMReader): pcint; - PGet = ^TGet; - TEof = function(value: PMReader): pcint; - PEof = ^TEof; - - MREADER = packed record - Seek: TSeek1; - Tell: TTell1; - Read: TRead; - Get: TGet; - Eof: TEof; - end; - - PMWriter = ^MWRITER; - TSeek2 = function(value1: PMWriter; value2: clong; value3: cint): pcint; - PSeek2 = ^TSeek2; - TTell2 = function(value: PMWriter): pclong; - PTell2 = ^TTell2; - TWrite = function(value1: PMWriter; value2: pointer; value3: cint): pcint; - PWrite = ^TWrite; - TPut = function(value1: PMWriter; value2: cint): pcint; - PPut = ^TPut; - - MWRITER = packed record - Seek: TSeek2; - Tell: TTell2; - Write: TWrite; - Put: TPut; - end; - TMWriter = MWRITER; - - PSampLoad = ^SAMPLOAD; - PPSampLoad = ^PSampLoad; - SAMPLOAD = packed record - next: PSampLoad; - length: cuint; - loopstart: cuint; - loopend: cuint; - infmt, outfmt: cushort; - scalefactor: cint; - sample: PSample; - reader: PMReader; - end; - TSampLoad = SAMPLOAD; - - TMDCommandLine = procedure(value: pcchar); - PMDCommandLine = ^TMDCommandLine; - TMDIsPresent = function(): cint; - PMDIsPresent = ^TMDIsPresent; - TMDSampleLoad = function (value1: PSAMPLOAD; value2: cint): csshort; - PMDSampleLoad = ^TMDSampleLoad; - TMDSampleUnload = procedure(value: csshort); - PMDSampleUnload = ^TMDSampleUnload; - TMDFreeSampleSpace = function(value: cint): cuint; - PMDFreeSampleSpace = ^TMDFreeSampleSpace; - TMDRealSampleLength = function(value1: cint; value2: PSAMPLE): cuint; - PMDRealSampleLength = ^TMDRealSampleLength; - TMDInit = function(): cint; - PMDInit = ^TMDInit; - TMDExit = procedure(); - PMDExit = ^TMDExit; - TMDReset = function(): cint; - PMDReset = ^TMDReset; - TMDSetNumVoices = function(): cint; - PMDSetNumVoices = ^TMDSetNumVoices; - TMDPlayStart = function(): cint; - PMDPlayStart = ^TMDPlayStart; - TMDPlayStop = procedure(); - PMDPlayStop = ^TMDPlayStop; - TMDUpdate = procedure(); - PMDUpdate = ^TMDUpdate; - TMDPause = procedure(); - PMDPause = ^TMDPause; - TMDVoiceSetVolume = procedure(value1: cuchar; value2: cushort); - PMDVoiceSetVolume = ^TMDVoiceSetVolume; - TMDVoiceGetVolume = function(value: cuchar): cushort; - PMDVoiceGetVolume = ^TMDVoiceGetVolume; - TMDVoiceSetFrequency = procedure(value1: cuchar; value2: cuint); - PMDVoiceSetFrequency = ^TMDVoiceSetFrequency; - TMDVoiceGetFrequency = function(value: cuchar): cuint; - PMDVoiceGetFrequency = ^TMDVoiceGetFrequency; - TMDVoiceSetPanning = procedure(value1: cuchar; value2: cuint); - PMDVoiceSetPanning = ^TMDVoiceSetPanning; - TMDVoiceGetPanning = function(value: cuchar): cuint; - PMDVoiceGetPanning = ^TMDVoiceGetPanning; - TMDVoicePlay = procedure(value1: cuchar; value2: csshort; value3, value4, value5, value6: cuint; value7: cushort); - PMDVoicePlay = ^TMDVoicePlay; - TMDVoiceStop = procedure(value: cuchar); - PMDVoiceStop = ^TMDVoiceStop; - TMDVoiceStopped = function(value: cuchar): cint; - PMDVoiceStopped = ^TMDVoiceStopped; - TMDVoiceGetPosition = function(value: cuchar): csint; - PMDVoiceGetPosition = ^TMDVoiceGetPosition; - TMDVoiceRealVolume = function(value: cuchar): cuint; - PMDVoiceRealVolume = ^TMDVoiceRealVolume; - - PMDriver = ^MDRIVER; - MDRIVER = packed record - next: PMdriver; - Name: pcchar; - Version: pcchar; - HardVoiceLimit: cuchar; - SoftVoiceLimit: cuchar; - Alias: pcchar; - CmdLineHelp: pcchar; - CommandLine: TMDCommandLine; - IsPresent: TMDIsPresent; - SampleLoad: TMDSampleLoad; - SampleUnload: TMDSampleUnload; - FreeSampleSpace: TMDFreeSampleSpace; - RealSampleLength: TMDRealSampleLength; - Init: TMDInit; - Exit: TMDExit; - Reset: TMDReset; - SetNumVoices: TMDSetNumVoices; - PlayStart: TMDPlayStart; - PlayStop: TMDPlayStop; - Update: TMDUpdate; - Pause: TMDPause; - VoiceSetVolume: TMDVoiceSetVolume; - VoiceGetVolume: TMDVoiceGetVolume; - VoiceSetFrequency: TMDVoiceSetFrequency; - VoiceGetFrequency: TMDVoiceGetFrequency; - VoiceSetPanning: TMDVoiceSetPanning; - VoiceGetPanning: TMDVoiceGetPanning; - VoicePlay: TMDVoicePlay; - VoiceStop: TMDVoiceStop; - VoiceStopped: TMDVoiceStopped; - VoiceGetPosition: TMDVoiceGetPosition; - VoiceRealVolume: TMDVoiceRealVolume; - end; - TMDriver = MDRIVER; - - MikMod_player = procedure(); - TMikModPlayer = MikMod_player; - MikMod_player_t = ^MikMod_player; - PMikModPlayer = ^MikMod_player; - - uni_fx = ( - UNI_NOTE = 1, - UNI_INSTRUMENT, - UNI_PTEFFECT0, // arpeggio - UNI_PTEFFECT1, // porta up - UNI_PTEFFECT2, // porta down - UNI_PTEFFECT3, // porta to note - UNI_PTEFFECT4, // vibrato - UNI_PTEFFECT5, // dual effect 3+A - UNI_PTEFFECT6, // dual effect 4+A - UNI_PTEFFECT7, // tremolo - UNI_PTEFFECT8, // pan - UNI_PTEFFECT9, // sample offset - UNI_PTEFFECTA, // volume slide - UNI_PTEFFECTB, // pattern jump - UNI_PTEFFECTC, // set volume - UNI_PTEFFECTD, // pattern break - UNI_PTEFFECTE, // extended effects - UNI_PTEFFECTF, // set speed - UNI_S3MEFFECTA, // set speed - UNI_S3MEFFECTD, // volume slide - UNI_S3MEFFECTE, // porta down - UNI_S3MEFFECTF, // porta up - UNI_S3MEFFECTI, // tremor - UNI_S3MEFFECTQ, // retrig - UNI_S3MEFFECTR, // tremolo - UNI_S3MEFFECTT, // set tempo - UNI_S3MEFFECTU, // fine vibrato - UNI_KEYOFF, // note off - UNI_KEYFADE, // note fade - UNI_VOLEFFECTS, // volume column effects - UNI_XMEFFECT4, // vibrato - UNI_XMEFFECT6, // dual effect 4+A - UNI_XMEFFECTA, // volume slide - UNI_XMEFFECTE1, // fine porta up - UNI_XMEFFECTE2, // fine porta down - UNI_XMEFFECTEA, // fine volume slide up - UNI_XMEFFECTEB, // fine volume slide down - UNI_XMEFFECTG, // set global volume - UNI_XMEFFECTH, // global volume slide - UNI_XMEFFECTL, // set envelope position - UNI_XMEFFECTP, // pan slide - UNI_XMEFFECTX1, // extra fine porta up - UNI_XMEFFECTX2, // extra fine porta down - UNI_ITEFFECTG, // porta to note - UNI_ITEFFECTH, // vibrato - UNI_ITEFFECTI, // tremor (xy not incremented) - UNI_ITEFFECTM, // set channel volume - UNI_ITEFFECTN, // slide / fineslide channel volume - UNI_ITEFFECTP, // slide / fineslide channel panning - UNI_ITEFFECTT, // slide tempo - UNI_ITEFFECTU, // fine vibrato - UNI_ITEFFECTW, // slide / fineslide global volume - UNI_ITEFFECTY, // panbrello - UNI_ITEFFECTZ, // resonant filters - UNI_ITEFFECTS0, - UNI_ULTEFFECT9, // Sample fine offset - UNI_MEDSPEED, - UNI_MEDEFFECTF1, // play note twice - UNI_MEDEFFECTF2, // delay note - UNI_MEDEFFECTF3, // play note three times - UNI_OKTARP, // arpeggio - UNI_LAST - ); - - extsound_fx = ( - SS_GLISSANDO = 1, - SS_FINETUNE, - SS_VIBWAVE, - SS_TREMWAVE, - SS_PANWAVE, - SS_FRAMEDELAY, - SS_S7EFFECTS, - SS_PANNING, - SS_SURROUND, - SS_HIOFFSET, - SS_PATLOOP, - SS_NOTECUT, - SS_NOTEDELAY, - SS_PATDELAY - ); - - itcol_fx = ( - VOL_VOLUME = 1, - VOL_PANNING, - VOL_VOLSLIDE, - VOL_PITCHSLIDEDN, - VOL_PITCHSLIDEUP, - VOL_PORTAMENTO, - VOL_VIBRATO - ); - - FILTER = packed record - filter, inf: cuchar; - end; - TFilter = FILTER; - PFilter = ^FILTER; - - TMLInit = function(): cint; - PMLInit = ^TMLInit; - TMLTest = function(): cint; - PMLTest = ^TMLTest; - TMLLoad = function(value: cint): cint; - PMLLoad = ^TMLLoad; - TMLCleanup = procedure(); - PMLCleanup = ^TMLCleanup; - TMLLoadTitle = function(): pcchar; - PMLLoadTitle = ^TMLLoadTitle; - - PMLoader = ^MLOADER; - MLOADER = packed record - next: PMLoader; - _type: pcchar; - version: pcchar; - Init: TMLInit; - Test: TMLTest; - Load: TMLLoad; - Cleanup: TMLCleanup; - LoadTitle: TMLLoadTitle; - end; - TMLoader = MLOADER; - - MikMod_handler = procedure; - MikMod_handler_t = ^MikMod_handler; - TMikModHandler = MikMod_handler; - PMikModHandler = ^TMikModHandler; - - -var - _mm_errno : MikMod_Errors; - _mm_critical : cint; - _mm_errorhandler : MikMod_handler_t; cvar; external; - - unioperands: array [0.. integer(UNI_LAST) - 1] of cushort; cvar; external; - - MikMod_errno: cint; cvar; external; - MikMod_critical: cint; cvar; external; - - load_669: MLOADER; cvar; external; (* 669 and Extended-669 (by Tran/Renaissance) *) - load_amf: MLOADER; cvar; external; (* DMP Advanced Module Format (by Otto Chrons) *) - load_asy: MLOADER; cvar; external; (* ASYLUM Music Format 1.0 *) - load_dsm: MLOADER; cvar; external; (* DSIK internal module format *) - load_far: MLOADER; cvar; external; (* Farandole Composer (by Daniel Potter) *) - load_gdm: MLOADER; cvar; external; (* General DigiMusic (by Edward Schlunder) *) - load_it: MLOADER; cvar; external; (* Impulse Tracker (by Jeffrey Lim) *) - load_imf: MLOADER; cvar; external; (* Imago Orpheus (by Lutz Roeder) *) - load_med: MLOADER; cvar; external; (* Amiga MED modules (by Teijo Kinnunen) *) - load_m15: MLOADER; cvar; external; (* Soundtracker 15-instrument *) - load_mod: MLOADER; cvar; external; (* Standard 31-instrument Module loader *) - load_mtm: MLOADER; cvar; external; (* Multi-Tracker Module (by Renaissance) *) - load_okt: MLOADER; cvar; external; (* Amiga Oktalyzer *) - load_stm: MLOADER; cvar; external; (* ScreamTracker 2 (by Future Crew) *) - load_stx: MLOADER; cvar; external; (* STMIK 0.2 (by Future Crew) *) - load_s3m: MLOADER; cvar; external; (* ScreamTracker 3 (by Future Crew) *) - load_ult: MLOADER; cvar; external; (* UltraTracker (by MAS) *) - load_uni: MLOADER; cvar; external; (* MikMod and APlayer internal module format *) - load_xm: MLOADER; cvar; external; (* FastTracker 2 (by Triton) *) - - md_volume: cuchar; cvar; external; (* global sound volume (0-128) *) - md_musicvolume: cuchar; cvar; external; (* volume of song *) - md_sndfxvolume: cuchar; cvar; external; (* volume of sound effects *) - md_reverb: cuchar; cvar; external; (* 0 = none; 15 = chaos *) - md_pansep: cuchar; cvar; external; (* 0 = mono; 128 == 100% (full left/right) *) - - md_device: cushort; cvar; external; (* device *) - md_mixfreq: cushort; cvar; external; (* mixing frequency *) - md_mode: cushort; cvar; external; (* mode. See DMODE_? flags above *) - - md_driver: PMDRIVER; cvar; external; (* Current driver in use. *) - - drv_nos: MDRIVER; cvar; external; (* no sound *) - drv_nds_sw: MDRIVER; cvar; external; (* Nintendo DS Software driver *) - drv_nds_hw: MDRIVER; cvar; external; (* Nintendo DS Hardware driver *) - - -{$ifdef ARM9} -var - md_bpm: cushort; cvar; - -procedure MikMod9_SendCommand(command: cuint); cdecl; {forward;}external; -function Player_LoadMemory(const buffer: pointer; size: cint; maxchan: cint; curious: cint): PModule; cdecl; external; -{$endif ARM9} - -{$ifdef ARM7} -procedure MikMod7_ProcessCommand(command: cuint); cdecl; external; -{$endif ARM7} - - -function MikMod_GetVersion(): clong; cdecl; external; - -function _mm_malloc(value: cint): pointer; cdecl; external; -function _mm_calloc(value1, value2: cint): pointer; cdecl; external; - -procedure _mm_free(var p: pointer); inline; - -function Player_Init(value: PModule): cint; cdecl; external; -procedure Player_Exit(value: PModule); cdecl; external; -procedure Player_HandleTick(); cdecl; external; - -function _mm_new_file_reader(fp: P_FILE): PMReader; cdecl; external; -procedure _mm_delete_file_reader(value: PMReader); cdecl; external; - -function _mm_new_file_writer(fp: P_FILE): PMWriter; cdecl; external; -procedure _mm_delete_file_writer(value: PMWriter); cdecl; external; - -function _mm_FileExists(fname: pcchar): cint; cdecl; external; - - - - -procedure _mm_iobase_setcur(value: PMReader); cdecl; external; -procedure _mm_iobase_revert(); cdecl; external; -function _mm_fopen(value1, value2: pcchar): P_FILE; cdecl; external; -function _mm_fclose(value: P_FILE): cint; cdecl; external; -procedure _mm_write_string(value1: pcchar; value2: PMWriter); cdecl; external; -function _mm_read_string (value1: pcchar; value2: cint; value3: PMReader): cint; cdecl; external; - -function _mm_read_M_SWORD(value: PMReader): csshort; cdecl; external; -function _mm_read_I_SWORD(value: PMReader): csshort; cdecl; external; -function _mm_read_M_UWORD(value: PMReader): cushort; cdecl; external; -function _mm_read_I_UWORD(value: PMReader): cushort; cdecl; external; - -function _mm_read_M_SLONG(value: PMReader): csint; cdecl; external; -function _mm_read_I_SLONG(value: PMReader): csint; cdecl; external; -function _mm_read_M_ULONG(value: PMReader): cuint; cdecl; external; -function _mm_read_I_ULONG(value: PMReader): cuint; cdecl; external; - -function _mm_read_M_SWORDS(value1: pcsshort; value2: cint; value3: PMReader): cint; cdecl; external; -function _mm_read_I_SWORDS(value1: pcsshort; value2: cint; value3: PMReader): cint; cdecl; external; -function _mm_read_M_UWORDS(value1: pcushort; value2: cint; value3: PMReader): cint; cdecl; external; -function _mm_read_I_UWORDS(value1: pcushort; value2: cint; value3: PMReader): cint; cdecl; external; - -function _mm_read_M_SLONGS(value1: pcsint; value2: cint; value3: PMReader): cint; cdecl; external; -function _mm_read_I_SLONGS(value1: pcsint; value2: cint; value3: PMReader): cint; cdecl; external; -function _mm_read_M_ULONGS(value1: pcuint; value2: cint; value3: PMReader): cint; cdecl; external; -function _mm_read_I_ULONGS(value1: pcuint; value2: cint; value3: PMReader): cint; cdecl; external; - -procedure _mm_write_M_SWORD(value1: csshort; value2: PMWriter); cdecl; external; -procedure _mm_write_I_SWORD(value1: csshort; value2: PMWriter); cdecl; external; -procedure _mm_write_M_UWORD(value1: cushort; value2: PMWriter); cdecl; external; -procedure _mm_write_I_UWORD(value1: cushort; value2: PMWriter); cdecl; external; - -procedure _mm_write_M_SLONG(value1: csint; value2: PMWriter); cdecl; external; -procedure _mm_write_I_SLONG(value1: csint; value2: PMWriter); cdecl; external; -procedure _mm_write_M_ULONG(value1: cuint; value2: PMWriter); cdecl; external; -procedure _mm_write_I_ULONG(value1: cuint; value2: PMWriter); cdecl; external; - -procedure _mm_write_M_SWORDS(value1: pcsshort; value2: cint; value3: PMWriter); cdecl; external; -procedure _mm_write_I_SWORDS(value1: pcsshort; value2: cint; value3: PMWriter); cdecl; external; -procedure _mm_write_M_UWORDS(value1: pcushort; value2: cint; value3: PMWriter); cdecl; external; -procedure _mm_write_I_UWORDS(value1: pcushort; value2: cint; value3: PMWriter); cdecl; external; - -procedure _mm_write_M_SLONGS(value1: pcsint; value2: cint; value3: PMWriter); cdecl; external; -procedure _mm_write_I_SLONGS(value1: pcsint; value2: cint; value3: PMWriter); cdecl; external; -procedure _mm_write_M_ULONGS(value1: pcuint; value2: cint; value3: PMWriter); cdecl; external; -procedure _mm_write_I_ULONGS(value1: pcuint; value2: cint; value3: PMWriter); cdecl; external; - - -procedure SL_HalveSample(value1: PSAMPLOAD; value2: cint); cdecl; external; -procedure SL_Sample8to16(value: PSAMPLOAD); cdecl; external; -procedure SL_Sample16to8(value: PSAMPLOAD); cdecl; external; -procedure SL_SampleSigned(value: PSAMPLOAD); cdecl; external; -procedure SL_SampleUnsigned(value: PSAMPLOAD); cdecl; external; -function SL_LoadSamples(): cint; cdecl; external; -function SL_RegisterSample(value1: PSAMPLE; value2: cint; value3: PMREADER): PSAMPLOAD; cdecl; external; -function SL_Load(value1: pointer; value2: PSAMPLOAD; value3: cuint): cint; cdecl; external; -function SL_Init(value: PSAMPLOAD): cint; cdecl; external; -procedure SL_Exit(value: PSAMPLOAD); cdecl; external; - - - - -procedure UniSetRow(value: pcuchar); cdecl; external; -function UniGetByte(): cuchar; cdecl; external; -function UniGetWord(): cushort; cdecl; external; -function UniFindRow(value1: pcuchar; value2: cushort): pcuchar; cdecl; external; -procedure UniSkipOpcode(); cdecl; external; -procedure UniReset(); cdecl; external; -procedure UniWriteByte(value: cuchar); cdecl; external; -procedure UniWriteWord(value: cushort); cdecl; external; -procedure UniNewline(); cdecl; external; -function UniDup(): pcuchar; cdecl; external; -function UniInit(): cint; cdecl; external; -procedure UniCleanup(); cdecl; external; -procedure UniEffect(value1: cushort; value2: cushort); cdecl; external; -procedure UniInstrument(x: cushort); inline; -procedure UniNote(x: cushort); inline; -procedure UniPTEffect(value1: cuchar; value2: cuchar); cdecl; external; -procedure UniVolEffect(value1: cushort; value2: cuchar); cdecl; external; - - - - - -function MikMod_strerror(value: cint): pcchar; cdecl; external; -function MikMod_RegisterErrorHandler(value: MikMod_handler_t): MikMod_handler_t; cdecl; external; - -procedure MikMod_RegisterAllDrivers(); cdecl; external; - -function MikMod_InfoDriver(): pcchar; cdecl; external; -procedure MikMod_RegisterDriver(value: PMDriver); cdecl; external; -function MikMod_DriverFromAlias(value: pcint): cint; cdecl; external; -function MikMod_DriverByOrdinal(value: cint): PMDriver; cdecl; external; - -function MikMod_Init(value: string): cint; cdecl; external; -procedure MikMod_Exit(); cdecl; external; -function MikMod_Reset(value: pcint): cint; cdecl; external; -function MikMod_SetNumVoices(value1, value2: cint): cint; cdecl; external; -function MikMod_Active(): cint; cdecl; external; -function MikMod_EnableOutput(): cint; cdecl; external; -procedure MikMod_DisableOutput(); cdecl; external; -procedure MikMod_Update(); cdecl; external; - -function MikMod_InitThreads(): cint; cdecl; external; -procedure MikMod_Lock(); cdecl; external; -procedure MikMod_Unlock(); cdecl; external; - -function Sample_Load(value: pcchar): PSAMPLE; cdecl; external; -function Sample_LoadFP(value: P_FILE): PSAMPLE; cdecl; external; -function Sample_LoadGeneric(value: PMREADER): PSAMPLE; cdecl; external; -procedure Sample_Free(value: PSAMPLE); cdecl; external; -function Sample_Play(value1: PSAMPLE; value2: cuint; value3: cuchar): cschar; cdecl; external; - -procedure Voice_SetVolume(value1: cschar; value2: cushort); cdecl; external; -function Voice_GetVolume(value: cschar): cushort; cdecl; external; -procedure Voice_SetFrequency(value1: cschar; value2: cuint); cdecl; external; -function Voice_GetFrequency(value: cschar): cuint; cdecl; external; -procedure Voice_SetPanning(value1: cschar; value2: cuint); cdecl; external; -function Voice_GetPanning(value: cschar): cuint; cdecl; external; -procedure Voice_Play(value1: cschar; value2: PSAMPLE; value3: cuint); cdecl; external; -procedure Voice_Stop(value: cschar); cdecl; external; -function Voice_Stopped(value: cschar): cint; cdecl; external; -function Voice_GetPosition(value: cschar): csint; cdecl; external; -function Voice_RealVolume(value: cschar): cuint; cdecl; external; - -function MikMod_InfoLoader(): pcchar; cdecl; external; -procedure MikMod_RegisterAllLoaders(); cdecl; external; -procedure MikMod_RegisterLoader(value: PMLOADER); cdecl; external; - -function Player_Load(value1: pcchar; value2: cint; value3: cint): PMODULE; cdecl; external; -function Player_LoadFP(value1: P_FILE; value2: cint; value3: cint): PMODULE; cdecl; external; -function Player_LoadGeneric(value1: PMREADER; value2: cint; value3: cint): PMODULE; cdecl; external; -function Player_LoadTitle(value: pcchar): pcchar; cdecl; external; -function Player_LoadTitleFP(value: P_FILE): pcchar; cdecl; external; -procedure Player_Free(value: PMODULE); cdecl; external; -procedure Player_Start(value: PMODULE); cdecl; external; -function Player_Active(): cint; cdecl; external; -procedure Player_Stop(); cdecl; external; -procedure Player_TogglePause(); cdecl; external; -function Player_Paused(): cint; cdecl; external; -procedure Player_NextPosition(); cdecl; external; -procedure Player_PrevPosition(); cdecl; external; -procedure Player_SetPosition(value: cushort); cdecl; external; -function Player_Muted(value: cuchar): cint; cdecl; external; -procedure Player_SetVolume(value: csshort); cdecl; external; -function Player_GetModule(): PMODULE; cdecl; external; -procedure Player_SetSpeed(value: cushort); cdecl; external; -procedure Player_SetTempo(value: cushort); cdecl; external; -procedure Player_Unmute(value: csint; args: array of const); cdecl; external; -procedure Player_Mute(value: csint; args: array of const); cdecl; external; -procedure Player_ToggleMute(value: csint; args: array of const); cdecl; external; -function Player_GetChannelVoice(value: cuchar): cint; cdecl; external; -function Player_GetChannelPeriod(value: cuchar): cushort; cdecl; external; -function Player_QueryVoices(numvoices: cushort; vinfo: PVOICEINFO): cint; cdecl; external; - -function MikMod_RegisterPlayer(value: MikMod_player_t): MikMod_player_t; cdecl; external; - -function VC_Init(): cint; cdecl; external; -procedure VC_Exit(); cdecl; external; -function VC_SetNumVoices(): cint; cdecl; external; -function VC_SampleSpace(value: cint): cuint; cdecl; external; -function VC_SampleLength(value1: cint; value2: PSAMPLE): cuint; cdecl; external; - -function VC_PlayStart(): cint; cdecl; external; -procedure VC_PlayStop(); cdecl; external; - -function VC_SampleLoad(value1: PSAMPLOAD; value2: cint): csshort; cdecl; external; -procedure VC_SampleUnload(value: csshort); cdecl; external; - -function VC_WriteBytes(value1: pcschar; value2: cuint): cuint; cdecl; external; -function VC_SilenceBytes(value1: pcschar; value2: cuint): cuint; cdecl; external; - -procedure VC_VoiceSetVolume(value1: cuchar; value2: cushort); cdecl; external; -function VC_VoiceGetVolume(value: cuchar): cushort; cdecl; external; -procedure VC_VoiceSetFrequency(value1: cuchar; value2: cuint); cdecl; external; -function VC_VoiceGetFrequency(value: cuchar): cuint; cdecl; external; -procedure VC_VoiceSetPanning(value1: cuchar; value2: cuint); cdecl; external; -function VC_VoiceGetPanning(value: cuchar): cuint; cdecl; external; -procedure VC_VoicePlay(value1: cuchar; value2: csshort; value3, value4, value5, value6: cuint; value7: cushort); cdecl; external; - -procedure VC_VoiceStop(value: cuchar); cdecl; external; -function VC_VoiceStopped(value: cuchar): cint; cdecl; external; -function VC_VoiceGetPosition(value: cuchar): csint; cdecl; external; -function VC_VoiceRealVolume(value: cuchar): cuint; cdecl; external; - - -(****** NDS part **************************************************************) -const - NDS_HW_MAXSAMPLES = 128; - NDS_HW_MAXVOICES = 16; - - NDS_HW_CHANGE_START = (1 shl 0); - NDS_HW_CHANGE_STOP = (1 shl 1); - NDS_HW_CHANGE_VOLUME = (1 shl 2); - NDS_HW_CHANGE_FREQUENCY = (1 shl 3); - NDS_HW_CHANGE_PANNING = (1 shl 4); - -type - NDS_SW_IPC = packed record - buffer: pcschar; - prevTimer: cint; - writeCursor: cint; - readCursor: cint; - bufferSize: cint; - sampleRate: cint; - format: cint; - playing: cint; - end; - - NDS_HW_VOICE = packed record - handle: csshort; - start: cuint; - length: cuint; - loopstart: cuint; - loopend: cuint; - flags: cushort; - volume: cushort; - frequency: cuint; - panning: cuint; - playing: cint; - changes: cuchar; - end; - - NDS_HW_IPC = packed record - samples: array [0..NDS_HW_MAXSAMPLES - 1] of pointer; - voices: array [0..NDS_HW_MAXVOICES - 1] of NDS_HW_VOICE; - end; - - NDS_COMMAND = ( - NDS_SW_CMD_INIT = 1, - NDS_SW_CMD_START, - NDS_SW_CMD_UPDATE, - NDS_SW_CMD_STOP, - NDS_SW_CMD_EXIT, - NDS_HW_CMD_INIT, - NDS_HW_CMD_EXIT, - NDS_HW_CMD_PLAY_START, - NDS_HW_CMD_PLAY_STOP, - NDS_HW_CMD_RESET, - NDS_HW_CMD_VOICE_UPDATE - ); - - -var - modreader: PMREADER; cvar; external; - finetune: array [0..15] of cushort; cvar; external; - _of: MODULE; external name 'of'; - npertab: array [0..(7 * OCTAVE) - 1] of cushort; cvar; external; - - remap: array [0..UF_MAXCHAN - 1] of cschar; cvar; external; - poslookup: pcuchar; cvar; external; - - poslookupcnt: cuchar; cvar; external; - origpositions: pcushort; cvar; external; - - filters: cint; cvar; external; - activemacro: cuchar; cvar; external; - filtermacros: array [0..UF_MAXMACRO - 1] of cuchar; cvar; external; - filtersettings: array [0..UF_MAXFILTER - 1] of FILTER; cvar; external; - - noteindex: pcint; cvar; external; - - -function ReadComment(value: cushort): cint; cdecl; external; -function ReadLinedComment(value1: cushort; value2: cushort): cint; cdecl; external; -function AllocPositions(value: cint): cint; cdecl; external; -function AllocPatterns(): cint; cdecl; external; -function AllocTracks(): cint; cdecl; external; -function AllocInstruments(): cint; cdecl; external; -function AllocSamples(): cint; cdecl; external; -function DupStr(value1: pcchar; value2: cushort; value3: cint): pcchar; cdecl; external; - -function AllocLinear(): pcint; cdecl; external; -procedure FreeLinear(); cdecl; external; -function speed_to_finetune(value1: cuint; value2: cint): cint; cdecl; external; -procedure S3MIT_ProcessCmd(value1: cuchar; value2: cuchar; value3: cuint); cdecl; external; -procedure S3MIT_CreateOrders(value: cint); cdecl; external; - -function getlinearperiod(value1: cushort; value2: cuint): cushort; cdecl; external; -function getfrequency(value1: cushort; value2: cuint): cuint; cdecl; external; - -var - STM_Signatures: array [0..STM_NTRACKERS - 1] of pcchar; cvar; external; - md_numchn: cushort; cvar; external; - md_sngchn: cushort; cvar; external; - md_sfxchn: cushort; cvar; external; - md_hardchn: cushort; cvar; external; - md_softchn: cushort; cvar; external; - - -function MD_SampleLoad(value1: PSAMPLOAD; value2: cint): csshort; cdecl; external; -procedure MD_SampleUnload(value: csshort); cdecl; external; -function MD_SampleSpace(value: cint): cuint; cdecl; external; -function MD_SampleLength(value1: cint; value2: PSAMPLE): cuint; cdecl; external; - -procedure unsignedtoulaw(value1: pcchar; value2: cint); cdecl; external; - -function MD_GetAtom(value1, value2: pcchar; value3: cint): pcchar; cdecl; external; - -procedure VC_SetupPointers(); cdecl; external; -function VC1_Init(): cint; cdecl; external; -function VC2_Init(): cint; cdecl; external; - - -procedure _mm_registerdriver(value: PMDRIVER); cdecl; external; -procedure _mm_registerloader(value: PMLOADER); cdecl; external; -function MikMod_Active_internal(): cint; cdecl; external; -procedure MikMod_DisableOutput_internal(); cdecl; external; -function MikMod_EnableOutput_internal(): cint; cdecl; external; -procedure MikMod_Exit_internal(); cdecl; external; -function MikMod_SetNumVoices_internal(value1, value2: cint): cint; cdecl; external; -procedure Player_Exit_internal(value: PMODULE); cdecl; external; -procedure Player_Stop_internal(); cdecl; external; -function Player_Paused_internal(): cint; cdecl; external; -procedure Sample_Free_internal(value: PSAMPLE); cdecl; external; -procedure Voice_Play_internal(value1: cschar; value2: PSAMPLE; value3: cuint); cdecl; external; -procedure Voice_SetFrequency_internal(value1: cschar; value2: cuint); cdecl; external; -procedure Voice_SetPanning_internal(value1: cschar; value2: cuint); cdecl; external; -procedure Voice_SetVolume_internal(value1: cschar; value2: cushort); cdecl; external; -procedure Voice_Stop_internal(value: cschar); cdecl; external; -function Voice_Stopped_internal(value: cschar): cint; cdecl; external; - - -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -{$ifdef ARM9} -//procedure MikMod9_SendCommand(command: cuint); cdecl; forward; -{$endif ARM9} - -procedure _mm_free(var p: pointer); inline; -begin - if p <> nil then - FreeMem(p); - p := nil; -end; - -procedure UniInstrument(x: cushort); inline; -begin - UniEffect(cushort(UNI_INSTRUMENT), x) -end; - -procedure UniNote(x: cushort); inline; -begin - UniEffect(cushort(UNI_NOTE), x) -end; - -{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/libmikmod/mikmod7.pp b/packages/libndsfpc/src/libmikmod/mikmod7.pp deleted file mode 100644 index c228dbf3a9..0000000000 --- a/packages/libndsfpc/src/libmikmod/mikmod7.pp +++ /dev/null @@ -1,32 +0,0 @@ -unit mikmod7; -{$mode objfpc} -{$apptype arm7} -{$define arm7} - -{$J+} -{$INLINE ON} -{$MACRO ON} -{$PACKRECORDS C} - -interface - -uses - ctypes, nds7; - -{$linklib nds7} -{$linklib mikmod7} - -{$linklib c} -{$linklib gcc} -{$linklib sysbase} - -{$define NDS_INTERFACE} -{$include inc/mikmod.inc} -{$undef NDS_INTERFACE} - -implementation -{$define NDS_IMPLEMENTATION} -{$include inc/mikmod.inc} -{$undef NDS_IMPLEMENTATION} - -end. diff --git a/packages/libndsfpc/src/libmikmod/mikmod9.pp b/packages/libndsfpc/src/libmikmod/mikmod9.pp deleted file mode 100644 index e4ac249101..0000000000 --- a/packages/libndsfpc/src/libmikmod/mikmod9.pp +++ /dev/null @@ -1,32 +0,0 @@ -unit mikmod9; -{$mode objfpc} -{$apptype arm9} -{$define arm9} - -{$J+} -{$INLINE ON} -{$MACRO ON} -{$PACKRECORDS C} - -interface - -uses - ctypes, nds9; - -{$linklib nds9} -{$linklib mikmod9} - -{$linklib c} -{$linklib gcc} -{$linklib sysbase} - -{$define NDS_INTERFACE} -{$include inc/mikmod.inc} -{$undef NDS_INTERFACE} - -implementation -{$define NDS_IMPLEMENTATION} -{$include inc/mikmod.inc} -{$undef NDS_IMPLEMENTATION} - -end. diff --git a/packages/libndsfpc/src/maxmod/inc/maxmod.inc b/packages/libndsfpc/src/maxmod/inc/maxmod.inc new file mode 100644 index 0000000000..bded1a0140 --- /dev/null +++ b/packages/libndsfpc/src/maxmod/inc/maxmod.inc @@ -0,0 +1,80 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> = 0) and (layer <= 3), 'Only layers 0 - 3 are supported'); + sassert( (tileBase >= 0) and (tileBase <= 15), 'Background tile base is out of range'); + sassert( (mapBase >=0) and (mapBase <= 31), 'Background Map Base is out of range'); + sassert( (layer <> 0) or not video3DEnabled(), 'Background 0 is currently being used for 3D display'); + sassert( (layer > 1) or (atype = BgType_Text8bpp) or (atype = BgType_Text4bpp), 'Incorrect background type for mode'); + //sassert((size != BgSize_B8_512x1024 && size != BgSize_B8_1024x512) || videoGetMode() == 6, "Incorrect background type for mode"); + sassert( (tileBase = 0) or (atype < BgType_Bmp8), 'Tile base is unused for bitmaps. Can be offset using mapBase * 16KB'); + sassert( ((mapBase = 0) or (atype <> BgType_Bmp8)) or ((size <> BgSize_B8_512x1024) and (size <> BgSize_B8_1024x512)), 'Large Bitmaps cannot be offset'); + result := bgInit_call(layer, atype, size, mapBase, tileBase); +end; + +function bgInitSub(layer: cint; atype: BgType; size: BgSize; mapBase, tileBase: cint): cint; inline; +begin + sassert( (layer >= 0) and (layer <= 3), 'Only layers 0 - 3 are supported'); + sassert( (tileBase >= 0) and (tileBase <= 15), 'Background tile base is out of range'); + sassert( (mapBase >=0) and (mapBase <= 31), 'Background Map Base is out of range'); + sassert( (layer > 1) or (atype = BgType_Text8bpp) or (atype = BgType_Text4bpp), 'Incorrect background type for mode'); + sassert( ((size <> BgSize_B8_512x1024) and (size <> BgSize_B8_1024x512)), 'Sub Display has no large Bitmaps'); + result := bgInitSub_call(layer, atype, size, mapBase, tileBase); +end; + +function bgSetControlBits(id: cint; bits: cuint16): pcuint16; inline; +begin + bgControl[id]^ := bgControl[id]^ or bits; + result := bgControl[id]; +end; + +procedure bgClearControlBits(id: cint; bits: cuint16); inline; +begin + bgControl[id]^ := bgControl[id]^ and not bits; +end; + +procedure bgWrapOn(id: cint); inline; +begin + bgSetControlBits(id, BIT(13)); +end; + +procedure bgWrapOff(id: cint); inline; +begin + bgClearControlBits(id, BIT(13)); +end; + +procedure bgSetPriority(id: cint; priority: cuint); inline; +begin + sassert( (priority < 4), 'Priority must be less than 4'); + bgControl[id]^ := bgControl[id]^ and not 3; + bgControl[id]^ := bgControl[id]^ or priority; +end; + +procedure bgSetMapBase(id: cint; base: cuint); inline; +begin + sassert( (base <= 31), 'Map base cannot exceed 31'); + bgControl[id]^ := bgControl[id]^ and not (31 shl MAP_BASE_SHIFT); + bgControl[id]^ := bgControl[id]^ or (base shl MAP_BASE_SHIFT); +end; + +procedure bgSetTileBase(id: cint; base: cuint); inline; +begin + sassert( (base <= 15), 'Tile base cannot exceed 15'); + bgControl[id]^ := bgControl[id]^ and not (15 shl TILE_BASE_SHIFT); + bgControl[id]^ := bgControl[id]^ or (base shl TILE_BASE_SHIFT); +end; + +procedure bgSetScrollf(id: cint; x, y: cint32); inline; +begin + bgState[id].scrollX := x; + bgState[id].scrollY := y; + bgState[id].dirty := true; +end; + +procedure bgSetScroll(id, x, y: cint); inline; +begin + bgSetScrollf(id, x shl 8, y shl 8); +end; + +procedure bgMosaicEnable(id: cint); inline; +begin + bgControl[id]^ := bgControl[id]^ or BIT(6); +end; + +procedure bgMosaicDisable(id: cint); inline; +begin + bgControl[id]^ := bgControl[id]^ and not BIT(6); +end; + +procedure bgSetMosaic(dx, dy: cuint); inline; +begin + sassert( (dx < 16) and (dy < 16), 'Mosaic range is 0 to 15'); + MOSAIC_CR^ := MOSAIC_CR^ and not $FF; + MOSAIC_CR^ := MOSAIC_CR^ or (dx or (dy shl 4)); +end; + +procedure bgSetMosaicSub(dx, dy: cuint); inline; +begin + sassert( (dx < 16) and (dy < 16), 'Mosaic range is 0 to 15'); + SUB_MOSAIC_CR^ := SUB_MOSAIC_CR^ and not $FF; + SUB_MOSAIC_CR^ := SUB_MOSAIC_CR^ or (dx or (dy shl 4)); +end; + + + +function bgGetPriority(id: cint): cint; inline; +begin + result := bgControl[id]^ and 3; +end; + +function bgGetMapBase(id: cint): cint; inline; +begin + result := (bgControl[id]^ shr MAP_BASE_SHIFT) and 31; +end; + + +function bgGetTileBase(id: cint): cint; inline; +begin + result := (bgControl[id]^ shr TILE_BASE_SHIFT) and 31; +end; + +function bgGetMapPtr(id: cint): pcuint16; inline; +begin + if (id < 4) then + result := pcuint16(BG_MAP_RAM(bgGetMapBase(id))) + else + result := pcuint16(BG_MAP_RAM_SUB(bgGetMapBase(id))); +end; + +function bgGetGfxPtr(id: cint): pcuint16; inline; +begin + if(bgState[id]._type < integer(BgType_Bmp8)) then + begin + if (id < 4) then + result := pcuint16(BG_TILE_RAM(bgGetTileBase(id))) + else + result := pcuint16(BG_TILE_RAM_SUB(bgGetTileBase(id))); + end else + begin + if (id < 4) then + result := pointer(BG_GFX + $2000 * (bgGetMapBase(id))) + else + result := pointer(BG_GFX_SUB + $2000 * (bgGetMapBase(id))); + end; +end; + +procedure bgScrollf(id: cint; dx, dy: cint32); inline; +begin + bgSetScrollf(id, bgState[id].scrollX + dx, bgState[id].scrollY + dy); +end; + +procedure bgScroll(id, dx, dy: cint); inline; +begin + bgSetScrollf(id, dx shl 8, dy shl 8); +end; + +procedure bgShow(id: cint); inline; +begin + if (id < 4) then + videoBgEnable(id) + else + videoBgEnableSub(id and 3); +end; + +procedure bgHide(id: cint); inline; +begin + if (id < 4) then + videoBgDisable(id) + else + videoBgDisableSub(id and 3); +end; + +procedure bgSetCenterf(id: cint; x, y: cint32); inline; +begin + sassert(not bgIsText(id), 'Text Backgrounds have no Center of Rotation'); + bgState[id].centerX := x; + bgState[id].centerY := y; + bgState[id].dirty := true; +end; + +procedure bgSetCenter(id, x, y: cint); inline; +begin + bgSetCenterf(id, x shl 8, y shl 8); +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/arm9/boxtest.inc b/packages/libndsfpc/src/nds/arm9/boxtest.inc index 976e927778..05eb1ff2c6 100644 --- a/packages/libndsfpc/src/nds/arm9/boxtest.inc +++ b/packages/libndsfpc/src/nds/arm9/boxtest.inc @@ -40,11 +40,11 @@ {$ifdef NDS_INTERFACE} -function BoxTest(x, y, z, width, height, depth: {v16}cuint16): cint; cdecl; external; +function BoxTest(x, y, z, width, height, depth: v16): cint; cdecl; external; function BoxTestf(x, y, z, width, height, depth: cfloat): cint; cdecl; external; -procedure BoxTest_Asynch(x, y, z, width, height, depth: {v16}cuint16); cdecl; external; +procedure BoxTest_Asynch(x, y, z, width, height, depth: v16); cdecl; external; procedure BoxTestf_Asynch(x, y, z, width, height, depth: cfloat); cdecl; external; diff --git a/packages/libndsfpc/src/nds/arm9/console.inc b/packages/libndsfpc/src/nds/arm9/console.inc index 0c3421b823..6d0b8f94f9 100644 --- a/packages/libndsfpc/src/nds/arm9/console.inc +++ b/packages/libndsfpc/src/nds/arm9/console.inc @@ -39,13 +39,88 @@ *) {$ifdef NDS_INTERFACE} +//const +// CONSOLE_USE_COLOR255 = 16; + +type + ConsolePrint = function(con: pointer; c: cchar): pcbool; + + ConsoleFont = record + gfx: pcuint16; + pal: pcuint16; + numColors: cuint16; + + bpp: cuint8; + + asciiOffset: cuint16; + numChars: cuint16; + convertSingleColor: cbool; + end; + PConsoleFont = ^ConsoleFont; + TConsoleFont = ConsoleFont; + + PrintConsole = record + font: ConsoleFont; + + fontBgMap: pcuint16; + fontBgGfx: pcuint16; + + mapBase: cuint8; + gfxBase: cuint8; + + bgLayer: cuint8; + bgId: cint; + + cursorX: cint; + cursorY: cint; + + prevCursorX: cint; + prevCursorY: cint; + + consoleWidth: cint; + consoleHeight: cint; + + windowX: cint; + windowY: cint; + windowWidth: cint; + windowHeight: cint; + + tabSize: cint; + + fontCharOffset: cuint16; + + + fontCurPal: cuint16; + + PrintChar: ConsolePrint; + + consoleInitialised: cbool; + loadGraphics: cbool; + end; + PPrintConsole = ^PrintConsole; + TPrintConsole = PrintConsole; + + + +type + DebugDevice = integer; const - CONSOLE_USE_COLOR255 = 16; + DebugDevice_NOCASH: DebugDevice = $01; + DebugDevice_CONSOLE: DebugDevice = $02; + + {$endif NDS_INTERFACE} {$ifdef NDS_INTERFACE} -procedure consoleInit(font: pcuint16; charBase: pcuint16; numCharacters: cuint16; charStart: cuint8; map: pcuint16; pal: cuint8; bitDepth: cuint8); cdecl; external; -procedure consoleInitDefault(map: pcuint16; charBase: pcuint16; bitDepth: cuint8); cdecl; external; -procedure consoleDemoInit(); cdecl; external; + +procedure consoleSetFont(console: PPrintConsole; font: PConsoleFont); cdecl; external; +procedure consoleSetWindow(console: PPrintConsole; x, y, width, height: cint); cdecl; external; +function consoleGetDefault(): PPrintConsole; cdecl; external; +procedure consoleSelect(console: PPrintConsole); cdecl; external; +function consoleInit(console: PPrintConsole; layer: cint; atype: BgType; size: BgSize; mapBase, + tileBase: cint; mainDisplay: cbool; loadGraphics: cbool): pPrintConsole; cdecl; external; +function consoleDemoInit(): PPrintConsole; cdecl; external; procedure consoleClear(); cdecl; external; +procedure consoleDebugInit(device: DebugDevice); cdecl; external; + {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/decompress.inc b/packages/libndsfpc/src/nds/arm9/decompress.inc new file mode 100644 index 0000000000..ce901c18b3 --- /dev/null +++ b/packages/libndsfpc/src/nds/arm9/decompress.inc @@ -0,0 +1,60 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + +{$ifdef NDS_INTERFACE} + +type + getByteCallback = function(source: pcuint8): pcuint8; + getHeaderCallback = function(source: pcuint8; dest: pcuint16; arg: cuint32): pcint; + +type + DecompressType = integer; +const + LZ77 : DecompressType = 0; + LZ77Vram: DecompressType = 1; + HUFF : DecompressType = 2; + RLE : DecompressType = 3; + RLEVram : DecompressType = 4; + +procedure decompress(const data: pointer; dst: pointer; atype: DecompressType); cdecl; external; +procedure decompressStream(const data: pointer; dst: pointer; atype: DecompressType; readCB: getByteCallback; getHeaderCB: getHeaderCallback); cdecl; external; + + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/dldi.inc b/packages/libndsfpc/src/nds/arm9/dldi.inc new file mode 100644 index 0000000000..fb6f761f9d --- /dev/null +++ b/packages/libndsfpc/src/nds/arm9/dldi.inc @@ -0,0 +1,54 @@ +{$ifdef NDS_INTERFACE} + +const + FIX_ALL = $01; + FIX_GLUE = $02; + FIX_GOT = $04; + FIX_BSS = $08; + + DLDI_MAGIC_STRING_LEN = 8; + DLDI_FRIENDLY_NAME_LEN = 48; + +var + DLDI_MAGIC_NUMBER: cuint32; cvar; external; + +type + DLDI_INTERFACE = packed record + magicNumber: cuint32; + magicString: array [0..DLDI_MAGIC_STRING_LEN-1] of cchar; + versionNumber: cuint8; + driverSize: cuint8; + fixSectionsFlags: cuint8; + allocatedSize: cuint8; + + friendlyName: array [0..DLDI_FRIENDLY_NAME_LEN-1]of cchar; + + // Pointers to sections that need address fixing + dldiStart: pointer; + dldiEnd: pointer; + interworkStart: pointer; + interworkEnd: pointer; + gotStart: pointer; + gotEnd: pointer; + bssStart: pointer; + bssEnd: pointer; + // Original I/O interface data + ioInterface: DISC_INTERFACE; + end; + PDLDI_INTERFACE = ^DLDI_INTERFACE; + TDLDI_INTERFACE = DLDI_INTERFACE; + +var + io_dldi_data: PDLDI_INTERFACE; cvar; external; + +function dldiGetInternal(): PDISC_INTERFACE; cdecl; external; + +function dldiIsValid(const io: PDLDI_INTERFACE): cbool; cdecl; external; + +procedure dldiFixDriverAddresses(io: PDLDI_INTERFACE); cdecl; external; + +function dldiLoadFromFile(const path: pcchar): PDLDI_INTERFACE; cdecl; external; + +procedure dldiFree(dldi: PDLDI_INTERFACE); cdecl; external; + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/input.inc b/packages/libndsfpc/src/nds/arm9/input.inc index 821706258d..5a35b8c010 100644 --- a/packages/libndsfpc/src/nds/arm9/input.inc +++ b/packages/libndsfpc/src/nds/arm9/input.inc @@ -58,9 +58,12 @@ const KEY_Y : KEYPAD_BITS = (1 shl 11); // Keypad Y button. KEY_TOUCH : KEYPAD_BITS = (1 shl 12); // Touchscreen pendown. KEY_LID : KEYPAD_BITS = (1 shl 13); // Lid state. + procedure scanKeys(); cdecl; external; +function keysCurrent(): cuint32; cdecl; external; + function keysHeld(): cuint32; cdecl; external; function keysDown(): cuint32; cdecl; external; @@ -72,4 +75,6 @@ procedure keysSetRepeat(setDelay: cuint8; setRepeat: cuint8); cdecl; external; function keysUp(): cuint32; cdecl; external; function touchReadXY(): touchPosition; cdecl; external; + +procedure touchRead(var data: touchPosition); cdecl; external; {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/keyboard.inc b/packages/libndsfpc/src/nds/arm9/keyboard.inc new file mode 100644 index 0000000000..cf64767718 --- /dev/null +++ b/packages/libndsfpc/src/nds/arm9/keyboard.inc @@ -0,0 +1,104 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + + +{$ifdef NDS_INTERFACE} + +type + KeyChangeCallback = function(key: cint): pointer; +// KeyChangeCallback = procedure(key: cint) of object; + PKeyChangeCallback = ^KeyChangeCallback; + + KeyboardState = integer; +const + Lower : KeyboardState = 0; + Upper : KeyboardState = 1; + Numeric : KeyboardState = 2; + Reduced : KeyboardState = 3; + +type + KeyMap = record + mapDataPressed: pcuint16; + mapDataReleased: pcuint16; + keymap: pcint; + width: cint; + height: cint; + end; + TKeyMap = KeyMap; + PKeyMap = ^KeyMap; + + Keyboard = record + background: cint; + keyboardOnSub: cint; + offset_x: cint; + offset_y: cint; + grid_width: cint; + grid_height: cint; + state: KeyboardState; + shifted: cint; + visible: cint; + mappings: array [0..3] of PKeyMap; + tiles: pcuint16; + tileLen: cuint32; + palette: pcuint16; + paletteLen: cuint32; + mapBase: cint; + tileBase: cint; + tileOffset: cint; + scrollSpeed: cuint32; + OnKeyPressed: KeyChangeCallback; + OnKeyReleased: KeyChangeCallback; + end; + TKeyboard = Keyboard; + PKeyboard = ^Keyboard; + + +function keyboardGetDefault(): PKeyboard; cdecl; external; + +function keyboardInit(keyboard: PKeyboard; layer: cint; atype: BgType; size: BgSize; + mapBase, tileBase: cint; mainDisplay: cbool; loadGraphics: cbool): PKeyboard; cdecl; external; +function keyboardDemoInit(): PKeyboard; cdecl; external; +procedure keyboardShow(); cdecl; external; +procedure keyboardHide(); cdecl; external; +function keyboardGetKey(x, y: cint): cint; cdecl; external; +procedure keyboardGetString(buffer: pchar; maxLen: cint); cdecl; external; +function keboardGetChar(): cint; cdecl; external; +function keyboardUpdate(): cint; cdecl; external; +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/math.inc b/packages/libndsfpc/src/nds/arm9/math.inc index 0cf3bfc88f..c551bdd8e3 100644 --- a/packages/libndsfpc/src/nds/arm9/math.inc +++ b/packages/libndsfpc/src/nds/arm9/math.inc @@ -41,20 +41,24 @@ {$ifdef NDS_INTERFACE} // Math coprocessor register definitions const - DIV_CR : pcuint16 = pointer($04000280); - DIV_NUMERATOR64 : pcint64 = pointer($04000290); - DIV_NUMERATOR32 : pcint32 = pointer($04000290); - DIV_DENOMINATOR64 : pcint64 = pointer($04000298); - DIV_DENOMINATOR32 : pcint32 = pointer($04000298); - DIV_RESULT64 : pcint64 = pointer($040002A0); - DIV_RESULT32 : pcint32 = pointer($040002A0); - DIV_REMAINDER64 : pcint64 = pointer($040002A8); - DIV_REMAINDER32 : pcint32 = pointer($040002A8); - - SQRT_CR : pcuint16 = pointer($040002B0); - SQRT_PARAM64 : pcint64 = pointer($040002B8); - SQRT_RESULT32 : pcint32 = pointer($040002B4); - SQRT_PARAM32 : pcint32 = pointer($040002B8); + REG_DIVCNT : pcuint16 = pointer($04000280); + REG_DIV_NUMER : pcint64 = pointer($04000290); + REG_DIV_NUMER_L : pcint32 = pointer($04000290); + REG_DIV_NUMER_H : pcint32 = pointer($04000294); + REG_DIV_DENOM : pcint64 = pointer($04000298); + REG_DIV_DENOM_L : pcint32 = pointer($04000298); + REG_DIV_DENOM_H : pcint32 = pointer($0400029C); + REG_DIV_RESULT : pcint64 = pointer($040002A0); + REG_DIV_RESULT_L : pcint32 = pointer($040002A0); + REG_DIV_RESULT_H : pcint32 = pointer($040002A4); + REG_DIVREM_RESULT : pcint64 = pointer($040002A8); + REG_DIVREM_RESULT_L : pcint32 = pointer($040002A8); + REG_DIVREM_RESULT_H : pcint32 = pointer($040002AC); + REG_SQRTCNT : pcuint16 = pointer($040002B0); + REG_SQRT_PARAM : pcint64 = pointer($040002B8); + REG_SQRT_PARAM_L : pcint32 = pointer($040002B8); + REG_SQRT_PARAM_H : pcint32 = pointer($040002BC); + REG_SQRT_RESULT : pcuint32 = pointer($040002B4); // Math coprocessor modes @@ -66,21 +70,34 @@ const SQRT_64 = 1; SQRT_32 = 0; SQRT_BUSY = (1 shl 15); + +function divf32(num: cint32; den: cint32): cint32; inline; +function mulf32(a, b: cint32): cint32; inline; +function sqrtf32(a: cint32): cint32; inline; +function div32(num, den: cint32): cint32; inline; +function mod32(num, den: cint32): cint32; inline; +function div64(num: cint64; den: cint32): cint32; inline; +function mod64(num: cint64; den: cint32): cint32; inline; +function sqrt32(a: cint32): cuint32; inline; +function sqrt64(a: cint64): cuint32; inline; +procedure crossf32(a: pcint32; b: pcint32; res: pcint32); inline; +function dotf32(a, b: pcint32): cint32; inline; +procedure normalizef32(a: pcint32); inline; {$endif NDS_INTERFACE} {$ifdef NDS_IMPLEMENTATION} function divf32(num: cint32; den: cint32): cint32; inline; begin - DIV_CR^ := DIV_64_32; + REG_DIVCNT^ := DIV_64_32; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - DIV_NUMERATOR64^ := cint64(num) shl 12; - DIV_DENOMINATOR32^ := den; + REG_DIV_NUMER^ := cint64(num) shl 12; + REG_DIV_DENOM_L^ := den; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - divf32 := DIV_RESULT32^; + divf32 := REG_DIV_RESULT_L^; end; function mulf32(a, b: cint32): cint32; inline; @@ -96,15 +113,15 @@ end; // returns the fixed point result function sqrtf32(a: cint32): cint32; inline; begin - SQRT_CR^ := SQRT_64; + REG_SQRTCNT^ := SQRT_64; - while (SQRT_CR^ and SQRT_BUSY) <> 0 do; + while (REG_SQRTCNT^ and SQRT_BUSY) <> 0 do; - SQRT_PARAM64^ := cint64(a) shl 12; + REG_SQRT_PARAM^ := cint64(a) shl 12; - while (SQRT_CR^ and SQRT_BUSY) <> 0 do; + while (REG_SQRTCNT^ and SQRT_BUSY) <> 0 do; - sqrtf32 := SQRT_RESULT32^; + sqrtf32 := REG_SQRT_RESULT^; end; // Integer versions @@ -114,16 +131,16 @@ end; // denominator and returns 32 bit result function div32(num, den: cint32): cint32; inline; begin - DIV_CR^ := DIV_32_32; + REG_DIVCNT^ := DIV_32_32; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - DIV_NUMERATOR32^ := num; - DIV_DENOMINATOR32^ := den; + REG_DIV_NUMER_L^ := num; + REG_DIV_DENOM_L^ := den; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - div32 := DIV_RESULT32^; + div32 := REG_DIV_RESULT_L^; end; // Integer divide @@ -131,16 +148,16 @@ end; // denominator and returns 32 bit result function mod32(num, den: cint32): cint32; inline; begin - DIV_CR^ := DIV_32_32; + REG_DIVCNT^ := DIV_32_32; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - DIV_NUMERATOR32^ := num; - DIV_DENOMINATOR32^ := den; + REG_DIV_NUMER_L^ := num; + REG_DIV_DENOM_L^ := den; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - mod32 := DIV_REMAINDER32^; + mod32 := REG_DIVREM_RESULT_L^; end; // Integer divide @@ -148,16 +165,16 @@ end; // denominator are returns 32 bit result function div64(num: cint64; den: cint32): cint32; inline; begin - DIV_CR^ := DIV_64_32; + REG_DIVCNT^ := DIV_64_32; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - DIV_NUMERATOR64^ := num; - DIV_DENOMINATOR32^ := den; + REG_DIV_NUMER^ := num; + REG_DIV_DENOM_L^ := den; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - div64 := DIV_RESULT32^; + div64 := REG_DIV_RESULT_L^; end; // Integer divide @@ -165,40 +182,47 @@ end; // denominator are returns 32 bit result function mod64(num: cint64; den: cint32): cint32; inline; begin - DIV_CR^ := DIV_64_32; + REG_DIVCNT^ := DIV_64_32; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - DIV_NUMERATOR64^ := num; - DIV_DENOMINATOR32^ := den; + REG_DIV_NUMER^ := num; + REG_DIV_DENOM_L^ := den; - while (DIV_CR^ and DIV_BUSY) <> 0 do; + while (REG_DIVCNT^ and DIV_BUSY) <> 0 do; - mod64 := DIV_REMAINDER32^; + mod64 := REG_DIVREM_RESULT_L^; end; // Integer square root // takes a 32 bit integer and returns // 32 bit result -function sqrt32(a: cint32): cint32; inline; +function sqrt32(a: cint32): cuint32; inline; begin - SQRT_CR^ := SQRT_32; + REG_SQRTCNT^ := SQRT_32; - while(SQRT_CR^ and SQRT_BUSY) <> 0 do; + while(REG_SQRTCNT^ and SQRT_BUSY) <> 0 do; - SQRT_PARAM32^ := a; + REG_SQRT_PARAM_L^ := a; - while(SQRT_CR^ and SQRT_BUSY) <> 0 do; + while(REG_SQRTCNT^ and SQRT_BUSY) <> 0 do; - sqrt32 := SQRT_RESULT32^; + sqrt32 := REG_SQRT_RESULT^; end; -// Trig Functions 1.19.12 fixed point +function sqrt64(a: cint64): cuint32; inline; +begin + REG_SQRTCNT^ := SQRT_64; + + while(REG_SQRTCNT^ and SQRT_BUSY) <> 0 do; + + REG_SQRT_PARAM^ := a; + + while(REG_SQRTCNT^ and SQRT_BUSY) <> 0 do; + + sqrt64 := REG_SQRT_RESULT^; +end; -// Cross product -// x = Ay * Bz - By * Az -// y = Az * Bx - Bz * Ax -// z = Ax * By - Bx * Ay procedure crossf32(a: pcint32; b: pcint32; res: pcint32); inline; begin res[0] := mulf32(a[1], b[2]) - mulf32(b[1], a[2]); @@ -206,40 +230,18 @@ begin res[2] := mulf32(a[0], b[1]) - mulf32(b[0], a[1]); end; -// Dot Product -// result = Ax * Bx + Ay * By + Az * Bz function dotf32(a, b: pcint32): cint32; inline; begin dotf32 := mulf32(a[0], b[0]) + mulf32(a[1], b[1]) + mulf32(a[2], b[2]); end; -// Normalize -// Ax = Ax / mag -// Ay = Ay / mag -// Az = Az / mag procedure normalizef32(a: pcint32); inline; var magnitude: cint32; begin - // magnitude = sqrt ( Ax^2 + Ay^2 + Az^2 ) magnitude := sqrtf32( mulf32(a[0], a[0]) + mulf32(a[1], a[1]) + mulf32(a[2], a[2]) ); - a[0] := divf32(a[0], magnitude); a[1] := divf32(a[1], magnitude); a[2] := divf32(a[2], magnitude); end; {$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -function divf32(num: cint32; den: cint32): cint32; inline; -function mulf32(a, b: cint32): cint32; inline; -function sqrtf32(a: cint32): cint32; inline; -function div32(num, den: cint32): cint32; inline; -function mod32(num, den: cint32): cint32; inline; -function div64(num: cint64; den: cint32): cint32; inline; -function mod64(num: cint64; den: cint32): cint32; inline; -function sqrt32(a: cint32): cint32; inline; -procedure crossf32(a: pcint32; b: pcint32; res: pcint32); inline; -function dotf32(a, b: pcint32): cint32; inline; -procedure normalizef32(a: pcint32); inline; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/sassert.inc b/packages/libndsfpc/src/nds/arm9/sassert.inc new file mode 100644 index 0000000000..3f7a1f927c --- /dev/null +++ b/packages/libndsfpc/src/nds/arm9/sassert.inc @@ -0,0 +1,92 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + + +{$ifdef NDS_INTERFACE} +procedure __sassert(const fileName: pchar; lineNumber: cint; const conditionString: pchar; const amessage: pchar); cdecl; external; +procedure sassert(e: boolean; msg: string); inline; +procedure AssertErrorHandler(const Msg, Filename: string; LineNumber: Integer; ErrorAddr: Pointer); + +{$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} +procedure AssertErrorHandler(const Msg, Filename: string; LineNumber: Integer; ErrorAddr: Pointer); +begin + //ErrorAddr is address Assert will return to + //(i.e. instruction following call to Assert). + //Subtract 1 from it to ensure it refers to part + //of the Assert call, making it more appropriate +// DebugMsg('%s (%s, line %d, address $%x)', +// [Msg, Filename, LineNumber, Pred(Integer(ErrorAddr))]); + __sassert(pchar(@Filename[1]), LineNumber, nil, pchar(@Msg[1])); +end; + + +procedure sassert1(e: boolean; msg: pchar); inline; +begin + if e then + exit + else + //__sassert(__FILE__, __LINE__, nil, msg)); + __sassert('file', 0, nil, msg); +end; + +procedure sassert2(e: boolean; msg: pchar); inline; +var + i: integer; + s: string; +begin + if e then + exit + else + begin + s := {$include %LINE%}; + Str(i, s); + __sassert({$include %FILE%}, i, nil, msg); + end; +end; + +procedure sassert(e: boolean; msg: string); inline; +begin + assert(e, msg); +end; + + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/arm9/sound.inc b/packages/libndsfpc/src/nds/arm9/sound.inc index 58c31f0814..b2cde137ae 100644 --- a/packages/libndsfpc/src/nds/arm9/sound.inc +++ b/packages/libndsfpc/src/nds/arm9/sound.inc @@ -39,45 +39,59 @@ *) {$ifdef NDS_INTERFACE} -var - Snd: TTransferSound; - SndDat: TTransferSoundData; // = { (void *)0 , 0, 11025, 64, 64, 1 }; -procedure playSound(ASound: pTransferSoundData); -procedure setGenericSound(rate: cuint32; vol: cuint8; pan: cuint8; format: cuint8); -procedure playGenericSound(data: pointer; length: cuint32); -{$endif NDS_INTERFACE} +type + MicCallback = procedure(completedBuffer: pointer; length: cint); + + SoundFormat = integer; +const + SoundFormat_8Bit : SoundFormat = 0; + SoundFormat_16Bit : SoundFormat = 1; + SoundFormat_ADPCM : SoundFormat = 2; + SoundFormat_PSG : SoundFormat = 3; + +type + MicFormat = integer; +const + MicFormat_12Bit : MicFormat = 0; + MicFormat_8Bit : MicFormat = 1; + +type + DutyCycle = integer; +const + DutyCycle_12 : DutyCycle = 0; + DutyCycle_25 : DutyCycle = 1; + DutyCycle_37 : DutyCycle = 2; + DutyCycle_50 : DutyCycle = 3; + DutyCycle_62 : DutyCycle = 4; + DutyCycle_75 : DutyCycle = 5; + DutyCycle_87 : DutyCycle = 6; + DutyCycle_0 : DutyCycle = 7; + +procedure soundEnable(); cdecl; external; + +procedure soundDisable(); cdecl; external; + +function soundPlaySample(const data: pointer; format: SoundFormat; dataSize: cuint32; freq: cuint16; volume, pan: cuint8; loop: cbool; loopPoint: cuint16): cint; cdecl; external; + +function soundPlayPSG(cycle: DutyCycle; freq: cuint16; volume, pan: cuint8): cint; cdecl; external; + +function soundPlayNoise(freq: cuint16; volume, pan: cuint8): cint; cdecl; external; + +procedure soundPause(soundId: cint); cdecl; external; -{$ifdef NDS_IMPLEMENTATION} -procedure playSoundBlock(ASnd: PTransferSound); -begin - DC_FlushRange(ASnd, sizeof(TTransferSound)); - IPC^.soundData := ASnd; -end; - -procedure setGenericSound(rate: cuint32; vol: cuint8; pan: cuint8; format: cuint8); -begin - SndDat.rate := rate; - SndDat.vol := vol; - SndDat.pan := pan; - SndDat.format := format; -end; - -procedure playSound(ASound: pTransferSoundData); -begin - Snd.count := 1; - Move(ASound^, Snd.data[0], sizeof(TTransferSoundData) ); - playSoundBlock(@Snd); -end; - -procedure playGenericSound(data: pointer; length: cuint32); -begin - Snd.count := 1; - move(SndDat, Snd.data, sizeof(TTransferSoundData) ); - Snd.data[0].data := data; - Snd.data[0].len := length; - playSoundBlock(@Snd); -end; - - -{$endif NDS_IMPLEMENTATION} +procedure soundKill(soundId: cint); cdecl; external; + +procedure soundResume(soundId: cint); cdecl; external; + +procedure soundSetVolume(soundId: cint; volume: cuint8); cdecl; external; + +procedure soundSetPan(soundId: cint; pan: cuint8); cdecl; external; + +procedure soundSetFreq(soundId: cint; freq: cuint16); cdecl; external; + +function soundMicRecord(buffer: pointer; bufferLength: cuint32; format: MicFormat; freq: cint; callback: MicCallback): cint; cdecl; external; + +procedure soundMicOff(); cdecl; external; + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm9/sprite.inc b/packages/libndsfpc/src/nds/arm9/sprite.inc index 504d71611f..28b532e8ad 100644 --- a/packages/libndsfpc/src/nds/arm9/sprite.inc +++ b/packages/libndsfpc/src/nds/arm9/sprite.inc @@ -44,10 +44,8 @@ {$error Sprites are only available on the ARM9} {$endif ARM9} -// Sprite control defines - {$ifdef NDS_INTERFACE} -// Attribute 0 consists of 8 bits of Y plus the following flags: + const ATTR0_NORMAL = (0 shl 8); ATTR0_ROTSCALE = (1 shl 8); @@ -67,21 +65,11 @@ const ATTR0_SQUARE = (0 shl 14); ATTR0_WIDE = (1 shl 14); ATTR0_TALL = (2 shl 14); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} function OBJ_Y(m: cint): cint; inline; -begin - OBJ_Y := ((m) and $00ff); -end; function ATTR1_ROTDATA(n: cint): cint; inline; -begin - ATTR1_ROTDATA := ((n) shl 9) // note: overlaps with flip flags -end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} const ATTR1_FLIP_X = (1 shl 12); ATTR1_FLIP_Y = (1 shl 13); @@ -89,104 +77,118 @@ const ATTR1_SIZE_16 = (1 shl 14); ATTR1_SIZE_32 = (2 shl 14); ATTR1_SIZE_64 = (3 shl 14); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} function OBJ_X(m: cint): cint; inline; -begin - OBJ_X := ((m) and $01ff); -end; -// Atribute 2 consists of the following: function ATTR2_PRIORITY(n: cint): cint; inline; -begin - ATTR2_PRIORITY := ((n) shl 10); -end; - function ATTR2_PALETTE(n: cint): cint; inline; -begin - ATTR2_PALETTE := ((n) shl 12); -end; - function ATTR2_ALPHA(n: cint): cint; inline; -begin - ATTR2_ALPHA := ((n) shl 12); -end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} type - TObjMode = (OBJMODE_NORMAL, OBJMODE_BLENDED, OBJMODE_WINDOWED, OBJMODE_BITMAP); - TObjShape = (OBJSHAPE_SQUARE, OBJSHAPE_WIDE, OBJSHAPE_TALL, OBJSHAPE_FORBIDDEN); - TObjSize = (OBJSIZE_8, OBJSIZE_16, OBJSIZE_32, OBJSIZE_64); - TObjColMode = (OBJCOLOR_16, OBJCOLOR_256); - TObjPriority = (OBJPRIORITY_0, OBJPRIORITY_1, OBJPRIORITY_2, OBJPRIORITY_3); + ObjBlendMode = ( + BJMODE_NORMAL = 0, + OBJMODE_BLENDED = 1, + OBJMODE_WINDOWED = 2, + OBJMODE_BITMAP = 3 + ); + + ObjShape = ( + OBJSHAPE_SQUARE = 0, + OBJSHAPE_WIDE = 1, + OBJSHAPE_TALL = 2, + OBJSHAPE_FORBIDDEN = 3 + ); + + ObjSize = ( + OBJSIZE_8 = 0, + OBJSIZE_16 = 1, + OBJSIZE_32 = 2, + OBJSIZE_64 = 3 + ); + + ObjColMode = ( + OBJCOLOR_16 = 0, + OBJCOLOR_256 = 1 + ); + + ObjPriority = ( + OBJPRIORITY_0 = 0, + OBJPRIORITY_1 = 1, + OBJPRIORITY_2 = 2, + OBJPRIORITY_3 = 3 + ); - sSpriteEntry = packed record +type + // mimic gcc bitfields behaviour + Unsigned_1 = 0..((1 shl 1) - 1); + Unsigned_2 = 0..((1 shl 2) - 1); + Unsigned_3 = 0..((1 shl 3) - 1); + Unsigned_4 = 0..((1 shl 4) - 1); + Unsigned_5 = 0..((1 shl 5) - 1); + Unsigned_6 = 0..((1 shl 6) - 1); + Unsigned_7 = 0..((1 shl 7) - 1); + Unsigned_8 = 0..((1 shl 8) - 1); + Unsigned_9 = 0..((1 shl 9) - 1); + Unsigned_10 = 0..((1 shl 10) - 1); + + sSpriteEntry = bitpacked record case integer of - 0: (st1: packed record - st1: bitpacked record - posY: 0..8; - case integer of - 0: (st1: bitpacked record - __padding1: 0..1; - isHidden: 0..1; - __padding2: 0..6; - end; - ); - 1: (st2: bitpacked record - isRotoscale: 0..1; - rsDouble: 0..1; - objMode: 0..2; - isMosaic: 0..1; - colMode: 0..1; - objShape: 0..2; - end; - ); - end; - st2: bitpacked record - tileIdx: 0..10; - objPriority: 0..2; - objPal: 0..4; - end; - attribute3: cuint16; - case integer of - 0: (st1: bitpacked record - posX: 0..9; - __padding1: 0..7; - end; - ); - 1: (st2: bitpacked record - __padding1: 0..8; - case integer of - 0: (st1: bitpacked record - __padding1: 0..4; - hFlip: 0..1; - vFlip: 0..1; - __padding2: 0..2; - end; - ); - 1: (st2: bitpacked record - __padding1: 0..1; - rsMatrixIdx: 0..5; - objSize: 0..2; - end; - ); - end; - ); - end; - ); - 1: (st: packed record - attribute: array [0..2] of cuint16; - filler: cuint16; - end; - ); + 0: ( + y: Unsigned_8;//0..8; + case integer of + 0: ( + __padding1: Unsigned_1;//0..1; + isHidden: Unsigned_1;//0..1; + __padding2: Unsigned_6;//0..6; + ); + 1: ( + isRotateScale: Unsigned_1;//0..1; + isSizeDouble: Unsigned_1;//0..1; + blendMode: Unsigned_2;//0..2; + isMosaic: Unsigned_1;//0..1; + colorMode: Unsigned_1;//0..1; + shape: Unsigned_2;//0..2; +// ); + + case integer of + 0: ( + x: Unsigned_9;//0..9; + _padding3: Unsigned_7;//0..7; + ); + 1: ( + __padding4: Unsigned_8;//0..8; + case integer of + 0: ( + __padding5: Unsigned_4;//0..4; + hFlip: Unsigned_1;//0..1; + vFlip: Unsigned_1;//0..1; + __padding6: Unsigned_2;//0..2; + ); + 1: ( + __padding7: Unsigned_1;//0..1; + rotationIndex: Unsigned_5;//0..5; + size: Unsigned_2;//0..2; + // ); + // ); + + gfxIndex: Unsigned_10;//0..10; + priority: Unsigned_2;//0..2; + palette: Unsigned_4;//0..4; + + attribute3: cuint16; + ); + ); + ); + ); + 1: ( + attribute: array [0..2] of cuint16; + filler: cuint16; + ); end; SpriteEntry = sSpriteEntry; TSpriteEntry = sSpriteEntry; PSpriteEntry = ^sSpriteEntry; - sSpriteRotation = record filler1: array [0..2] of cuint16; hdx: cint16; @@ -207,18 +209,163 @@ const MATRIX_COUNT = 32; type - TOAM = record + OAMTable = record case integer of - 0: (spriteBuffer: array [0..SPRITE_COUNT-1] of TSpriteEntry;); - 1: (matrixBuffer: array [0..MATRIX_COUNT-1] of TSpriteRotation;); + 0: ( + oamBuffer: array [0..SPRITE_COUNT - 1] of TSpriteEntry; + ); + 1: ( + matrixBuffer: array [0..MATRIX_COUNT - 1] of TSpriteRotation; + ); end; + TOAMTable = OAMTable; + POAMTable = ^OAMTable; + +type + SpriteSize = integer; +const + SpriteSize_8x8 : SpriteSize = (integer(OBJSIZE_8) shl 14) or (integer(OBJSHAPE_SQUARE) shl 12) or ((8*8) shr 5); + SpriteSize_16x16: SpriteSize = (integer(OBJSIZE_16) shl 14) or (integer(OBJSHAPE_SQUARE) shl 12) or ((16*16) shr 5); + SpriteSize_32x32: SpriteSize = (integer(OBJSIZE_32) shl 14) or (integer(OBJSHAPE_SQUARE) shl 12) or ((32*32) shr 5); + SpriteSize_64x64: SpriteSize = (integer(OBJSIZE_64) shl 14) or (integer(OBJSHAPE_SQUARE) shl 12) or ((64*64) shr 5); + SpriteSize_16x8 : SpriteSize = (integer(OBJSIZE_8) shl 14) or (integer(OBJSHAPE_WIDE) shl 12) or ((16*8) shr 5); + SpriteSize_32x8 : SpriteSize = (integer(OBJSIZE_16) shl 14) or (integer(OBJSHAPE_WIDE) shl 12) or ((32*8) shr 5); + SpriteSize_32x16: SpriteSize = (integer(OBJSIZE_32) shl 14) or (integer(OBJSHAPE_WIDE) shl 12) or ((32*16) shr 5); + SpriteSize_64x32: SpriteSize = (integer(OBJSIZE_64) shl 14) or (integer(OBJSHAPE_WIDE) shl 12) or ((64*32) shr 5); + SpriteSize_8x16 : SpriteSize = (integer(OBJSIZE_8) shl 14) or (integer(OBJSHAPE_TALL) shl 12) or ((8*16) shr 5); + SpriteSize_8x32 : SpriteSize = (integer(OBJSIZE_16) shl 14) or (integer(OBJSHAPE_TALL) shl 12) or ((8*32) shr 5); + SpriteSize_16x32: SpriteSize = (integer(OBJSIZE_32) shl 14) or (integer(OBJSHAPE_TALL) shl 12) or ((16*32) shr 5); + SpriteSize_32x64: SpriteSize = (integer(OBJSIZE_64) shl 14) or (integer(OBJSHAPE_TALL) shl 12) or ((32*64) shr 5); + +function SPRITE_SIZE_SHAPE(size: cint): cuint32; inline; +function SPRITE_SIZE_SIZE(size: cint): cuint32; inline; +function SPRITE_SIZE_PIXELS(size: cint): cuint32; inline; + + +type + SpriteMapping = integer; +const + SpriteMapping_1D_32 : SpriteMapping = integer(DISPLAY_SPR_1D) or integer(DISPLAY_SPR_1D_SIZE_32) or (0 shl 28) or 0; + SpriteMapping_1D_64 : SpriteMapping = integer(DISPLAY_SPR_1D) or integer(DISPLAY_SPR_1D_SIZE_64) or (1 shl 28) or 1; + SpriteMapping_1D_128 : SpriteMapping = integer(DISPLAY_SPR_1D) or integer(DISPLAY_SPR_1D_SIZE_128) or (2 shl 28) or 2; + SpriteMapping_1D_256 : SpriteMapping = integer(DISPLAY_SPR_1D) or integer(DISPLAY_SPR_1D_SIZE_256) or (3 shl 28) or 3; + SpriteMapping_2D : SpriteMapping = integer(DISPLAY_SPR_2D) or (4 shl 28); + SpriteMapping_Bmp_1D_128: SpriteMapping = integer(DISPLAY_SPR_1D) or integer(DISPLAY_SPR_1D_SIZE_128) or integer(DISPLAY_SPR_1D_BMP) or integer(DISPLAY_SPR_1D_BMP_SIZE_128) or (5 shl 28) or 2; + SpriteMapping_Bmp_1D_256: SpriteMapping = integer(DISPLAY_SPR_1D) or integer(DISPLAY_SPR_1D_SIZE_256) or integer(DISPLAY_SPR_1D_BMP) or integer(DISPLAY_SPR_1D_BMP_SIZE_256) or (6 shl 28) or 3; + SpriteMapping_Bmp_2D_128: SpriteMapping = integer(DISPLAY_SPR_2D) or integer(DISPLAY_SPR_2D_BMP_128) or (7 shl 28) or 2; + SpriteMapping_Bmp_2D_256: SpriteMapping = integer(DISPLAY_SPR_2D) or integer(DISPLAY_SPR_2D_BMP_256) or (8 shl 28) or 3; + +type + SpriteColorFormat = integer; +const + SpriteColorFormat_16Color : SpriteColorFormat = integer(OBJCOLOR_16); + SpriteColorFormat_256Color: SpriteColorFormat = integer(OBJCOLOR_256); + SpriteColorFormat_Bmp : SpriteColorFormat = integer(OBJMODE_BITMAP); + + +type + AllocHeader = record + nextFree: cuint16; + size: cuint16; + end; + TAllocHeader = AllocHeader; + PAllocHeader = ^AllocHeader; + + OamState = record + gfxOffsetStep: cint; + firstFree: cint16; + allocBuffer: PAllocHeader; + allocBufferSize: cint16; + case integer of + 0: ( + oamMemory: PSpriteEntry; + ); + 1: ( + oamRotationMemory: PSpriteRotation; + ); + end; + TOamState = OamState; + POamState = ^OamState; + +var + oamMain: OamState; cvar; external; + oamSub: OamState; cvar; external; + +procedure oamInit(var oam: OamState; mapping: SpriteMapping; extPalette: cbool); cdecl; external; +procedure oamDisable(var oam: OamState); cdecl; external; +procedure oamEnable(var oam: OamState); cdecl; external; +function oamGetGfxPtr(var oam: OamState; gfxOffsetIndex: cint): pcuint16; cdecl; external; +function oamAllocateGfx(var oam: OamState; size: SpriteSize; colorFormat: SpriteColorFormat): pcuint16; cdecl; external; +procedure oamFreeGfx(var oam: OamState; const gfxOffset: pointer); cdecl; external; + +procedure oamSetMosaic(dx, dy: cuint); inline; + +procedure oamSet( var oam: OamState; + id, x, y, priority, palette_alpha: cint; + size: SpriteSize; + format: SpriteColorFormat; + const gfxOffset: pointer; + affineIndex: cint; + sizeDouble, hide, hflip, vflip, mosaic: cbool); cdecl; external; +procedure oamClear(var oam: OamState; start, count: cint); cdecl; external; +procedure oamUpdate(var oam: OamState); cdecl; external; +procedure oamRotateScale(var oam: OamState; rotId, angle, sx, sy: cint); cdecl; external; +function oamCountFragments(var oam: OamState): cint; cdecl; external; +procedure oamAllocReset(var oam: OamState); cdecl; external; +function oamGfxPtrToOffset(const offset: pointer): cuint; cdecl; external; {$endif NDS_INTERFACE} -{$ifdef NDS_INTERFACE} +{$ifdef NDS_IMPLEMENTATION} function OBJ_Y(m: cint): cint; inline; +begin + OBJ_Y := ((m) and $00ff); +end; + function ATTR1_ROTDATA(n: cint): cint; inline; +begin + ATTR1_ROTDATA := ((n) shl 9) // note: overlaps with flip flags +end; + function OBJ_X(m: cint): cint; inline; +begin + OBJ_X := ((m) and $01ff); +end; + function ATTR2_PRIORITY(n: cint): cint; inline; +begin + ATTR2_PRIORITY := ((n) shl 10); +end; + function ATTR2_PALETTE(n: cint): cint; inline; +begin + ATTR2_PALETTE := ((n) shl 12); +end; + function ATTR2_ALPHA(n: cint): cint; inline; -{$endif NDS_INTERFACE} +begin + ATTR2_ALPHA := ((n) shl 12); +end; + +function SPRITE_SIZE_SHAPE(size: cint): cuint32; inline; +begin + SPRITE_SIZE_SHAPE := (((size) shr 12) and $3); +end; + +function SPRITE_SIZE_SIZE(size: cint): cuint32; inline; +begin + SPRITE_SIZE_SIZE := (((size) shr 14) and $3); +end; + +function SPRITE_SIZE_PIXELS(size: cint): cuint32; inline; +begin + SPRITE_SIZE_PIXELS := (((size) and $FFF) shl 5); +end; + +procedure oamSetMosaic(dx, dy: cuint); inline; +begin + sassert((dx < 16) and (dy < 16), 'Mosaic range is 0 to 15'); + MOSAIC_CR^ := MOSAIC_CR^ and not ($FF00); + MOSAIC_CR^ := MOSAIC_CR^ or ((dx shl 8) or (dy shl 12)); +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/arm9/trig_lut.inc b/packages/libndsfpc/src/nds/arm9/trig_lut.inc index a054f86f36..8b3bbc389d 100644 --- a/packages/libndsfpc/src/nds/arm9/trig_lut.inc +++ b/packages/libndsfpc/src/nds/arm9/trig_lut.inc @@ -39,12 +39,64 @@ *) {$ifdef NDS_INTERFACE} -var - COS_bin: array [0..0] of cshort; cvar; external; - SIN_bin: array [0..0] of cshort; cvar; external; - TAN_bin: array [0..0] of cshort; cvar; external; - -{$define _COS := COS_bin} -{$define _SIN := SIN_bin} -{$define _TAN := TAN_bin} +const + DEGREES_IN_CIRCLE = (1 shl 15); + +function fixedToInt(n, bits: cint): cint; inline; +function intToFixed(n, bits: cint): cint; inline; + +function floatToFixed(n, bits: cint): cint; inline; +function fixedToFloat(n, bits: cint): cfloat; inline; + +function floorFixed(n, bits: cint): cint; inline; + +function degreesToAngle(degrees: cint): cint; inline; +function angleToDegrees(angle: cint): cint; inline; + +function cosLerp(angle: cint16): cint16; cdecl; external; +function sinLerp(angle: cint16): cint16; cdecl; external; +function tanLerp(angle: cint16): cint32; cdecl; external; +function acosLerp(par: cint16): cint16; cdecl; external; +function asinLerp(par: cint16): cint16; cdecl; external; + {$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} + + +function fixedToInt(n, bits: cint): cint; inline; +begin + result := cint(n shr bits); +end; + +function intToFixed(n, bits: cint): cint; inline; +begin + result := cint(n shl bits); +end; + +function floatToFixed(n, bits: cint): cint; inline; +begin + result := cint(n * cfloat(1 shl bits)); +end; + +function fixedToFloat(n, bits: cint): cfloat; inline; +begin + result := cfloat(n) / cfloat(1 shl bits); +end; + +function floorFixed(n, bits: cint): cint; inline; +begin + result := cint(n and (not ((1 shl bits) - 1))); +end; + +function degreesToAngle(degrees: cint): cint; inline; +begin + result := degrees * DEGREES_IN_CIRCLE div 360; +end; + +function angleToDegrees(angle: cint): cint; inline; +begin + result := angle * 360 div DEGREES_IN_CIRCLE; +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/arm9/video.inc b/packages/libndsfpc/src/nds/arm9/video.inc index 9772a6949d..8eaec5a298 100644 --- a/packages/libndsfpc/src/nds/arm9/video.inc +++ b/packages/libndsfpc/src/nds/arm9/video.inc @@ -42,24 +42,39 @@ {$error Video is only available on the ARM9} {$endif ARM9} -{$ifdef NDS_IMPLEMENTATION} -function RGB15(r, g, b: cint): cuint16; -begin - RGB15 := ((r) or ((g) shl 5) or ((b) shl 10)); -end; - -function RGB5(r, g, b: cint): cuint16; -begin - RGB5 := ((r) or ((g) shl 5) or ((b) shl 10)); -end; - -function RGB8(r, g, b: cint): cuint8; -begin - RGB8 := (((r) shr 3) or (((g) shr 3) shl 5) or (((b) shr 3) shl 10)); -end; -{$endif NDS_IMPLEMENTATION} - {$ifdef NDS_INTERFACE} +const + BG_PALETTE : pcuint16 = pointer($05000000); + BG_PALETTE_SUB : pcuint16 = pointer($05000400); + + SPRITE_PALETTE : pcuint16 = pointer($05000200); + SPRITE_PALETTE_SUB : pcuint16 = pointer($05000600); + + BG_GFX : pcuint16 = pointer($06000000); + BG_GFX_SUB : pcuint16 = pointer($06200000); + SPRITE_GFX : pcuint16 = pointer($06400000); + SPRITE_GFX_SUB : pcuint16 = pointer($06600000); + + VRAM_0 : pcuint16 = pointer($06000000); + VRAM : pcuint16 = pointer($06800000); + VRAM_A : pcuint16 = pointer($06800000); + VRAM_B : pcuint16 = pointer($06820000); + VRAM_C : pcuint16 = pointer($06840000); + VRAM_D : pcuint16 = pointer($06860000); + VRAM_E : pcuint16 = pointer($06880000); + VRAM_F : pcuint16 = pointer($06890000); + VRAM_G : pcuint16 = pointer($06894000); + VRAM_H : pcuint16 = pointer($06898000); + VRAM_I : pcuint16 = pointer($068A0000); + + OAM : pcuint16 = pointer($07000000); + OAM_SUB : pcuint16 = pointer($07000400); + +function RGB15(r, g, b: cint): cuint16; inline; +function RGB5(r, g, b: cint): cuint16; inline; +function RGB8(r, g, b: cint): cuint8; inline; +function ARGB16(a, r, g, b: cint): cuint16; inline; + const SCREEN_HEIGHT = 192; SCREEN_WIDTH = 256; @@ -78,51 +93,44 @@ const VRAM_I_CR : pcuint8 = pointer($04000249); VRAM_ENABLE = (1 shl 7); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} function VRAM_OFFSET(n: cint): cint; inline; -begin - VRAM_OFFSET := ((n) shl 3); -end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} type VRAM_A_TYPE = cint; const - VRAM_A_LCD : VRAM_A_TYPE = 0; - VRAM_A_MAIN_BG : VRAM_A_TYPE = 1; - VRAM_A_MAIN_BG_0x06000000 : VRAM_A_TYPE = 1 or (0 shl 3); - VRAM_A_MAIN_BG_0x06020000 : VRAM_A_TYPE = 1 or (1 shl 3); - VRAM_A_MAIN_BG_0x06040000 : VRAM_A_TYPE = 1 or (2 shl 3); - VRAM_A_MAIN_BG_0x06060000 : VRAM_A_TYPE = 1 or (3 shl 3); - VRAM_A_MAIN_SPRITE : VRAM_A_TYPE = 2; - VRAM_A_MAIN_SPRITE_0x06400000 : VRAM_A_TYPE = 2; - VRAM_A_MAIN_SPRITE_0x06420000 : VRAM_A_TYPE = 2 or (1 shl 3); - VRAM_A_TEXTURE : VRAM_A_TYPE = 3; - VRAM_A_TEXTURE_SLOT0 : VRAM_A_TYPE = 3 or (0 shl 3); - VRAM_A_TEXTURE_SLOT1 : VRAM_A_TYPE = 3 or (1 shl 3); - VRAM_A_TEXTURE_SLOT2 : VRAM_A_TYPE = 3 or (2 shl 3); - VRAM_A_TEXTURE_SLOT3 : VRAM_A_TYPE = 3 or (3 shl 3); + VRAM_A_LCD : VRAM_A_TYPE = 0; + VRAM_A_MAIN_BG : VRAM_A_TYPE = 1; + VRAM_A_MAIN_BG_0x06000000 : VRAM_A_TYPE = 1 or (0 shl 3); + VRAM_A_MAIN_BG_0x06020000 : VRAM_A_TYPE = 1 or (1 shl 3); + VRAM_A_MAIN_BG_0x06040000 : VRAM_A_TYPE = 1 or (2 shl 3); + VRAM_A_MAIN_BG_0x06060000 : VRAM_A_TYPE = 1 or (3 shl 3); + VRAM_A_MAIN_SPRITE : VRAM_A_TYPE = 2; + VRAM_A_MAIN_SPRITE_0x06400000 : VRAM_A_TYPE = 2; + VRAM_A_MAIN_SPRITE_0x06420000 : VRAM_A_TYPE = 2 or (1 shl 3); + VRAM_A_TEXTURE : VRAM_A_TYPE = 3; + VRAM_A_TEXTURE_SLOT0 : VRAM_A_TYPE = 3 or (0 shl 3); + VRAM_A_TEXTURE_SLOT1 : VRAM_A_TYPE = 3 or (1 shl 3); + VRAM_A_TEXTURE_SLOT2 : VRAM_A_TYPE = 3 or (2 shl 3); + VRAM_A_TEXTURE_SLOT3 : VRAM_A_TYPE = 3 or (3 shl 3); type VRAM_B_TYPE = cint; const - VRAM_B_LCD : VRAM_B_TYPE = 0; - VRAM_B_MAIN_BG : VRAM_B_TYPE = 1 or (1 shl 3); - VRAM_B_MAIN_BG_0x06000000 : VRAM_B_TYPE = 1 or (0 shl 3); - VRAM_B_MAIN_BG_0x06020000 : VRAM_B_TYPE = 1 or (1 shl 3); - VRAM_B_MAIN_BG_0x06040000 : VRAM_B_TYPE = 1 or (2 shl 3); - VRAM_B_MAIN_BG_0x06060000 : VRAM_B_TYPE = 1 or (3 shl 3); - VRAM_B_MAIN_SPRITE : VRAM_B_TYPE = 2 or (1 shl 3); - VRAM_B_MAIN_SPRITE_0x06400000 : VRAM_B_TYPE = 2; - VRAM_B_MAIN_SPRITE_0x06420000 : VRAM_B_TYPE = 2 or (1 shl 3); - VRAM_B_TEXTURE : VRAM_B_TYPE = 3 or (1 shl 3); - VRAM_B_TEXTURE_SLOT0 : VRAM_B_TYPE = 3 or (0 shl 3); - VRAM_B_TEXTURE_SLOT1 : VRAM_B_TYPE = 3 or (1 shl 3); - VRAM_B_TEXTURE_SLOT2 : VRAM_B_TYPE = 3 or (2 shl 3); - VRAM_B_TEXTURE_SLOT3 : VRAM_B_TYPE = 3 or (3 shl 3); + VRAM_B_LCD : VRAM_B_TYPE = 0; + VRAM_B_MAIN_BG : VRAM_B_TYPE = 1 or (1 shl 3); + VRAM_B_MAIN_BG_0x06000000 : VRAM_B_TYPE = 1 or (0 shl 3); + VRAM_B_MAIN_BG_0x06020000 : VRAM_B_TYPE = 1 or (1 shl 3); + VRAM_B_MAIN_BG_0x06040000 : VRAM_B_TYPE = 1 or (2 shl 3); + VRAM_B_MAIN_BG_0x06060000 : VRAM_B_TYPE = 1 or (3 shl 3); + VRAM_B_MAIN_SPRITE : VRAM_B_TYPE = 2 or (1 shl 3); + VRAM_B_MAIN_SPRITE_0x06400000 : VRAM_B_TYPE = 2; + VRAM_B_MAIN_SPRITE_0x06420000 : VRAM_B_TYPE = 2 or (1 shl 3); + VRAM_B_TEXTURE : VRAM_B_TYPE = 3 or (1 shl 3); + VRAM_B_TEXTURE_SLOT0 : VRAM_B_TYPE = 3 or (0 shl 3); + VRAM_B_TEXTURE_SLOT1 : VRAM_B_TYPE = 3 or (1 shl 3); + VRAM_B_TEXTURE_SLOT2 : VRAM_B_TYPE = 3 or (2 shl 3); + VRAM_B_TEXTURE_SLOT3 : VRAM_B_TYPE = 3 or (3 shl 3); type @@ -130,18 +138,15 @@ type const VRAM_C_LCD : VRAM_C_TYPE = 0; VRAM_C_MAIN_BG : VRAM_C_TYPE = 1 or (2 shl 3); - VRAM_C_MAIN_BG_0x06000000 : VRAM_C_TYPE = 1 or (0 shl 3); - VRAM_C_MAIN_BG_0x06020000 : VRAM_C_TYPE = 1 or (1 shl 3); - VRAM_C_MAIN_BG_0x06040000 : VRAM_C_TYPE = 1 or (2 shl 3); - VRAM_C_MAIN_BG_0x06060000 : VRAM_C_TYPE = 1 or (3 shl 3); + VRAM_C_MAIN_BG_0x06000000 : VRAM_C_TYPE = 1 or (0 shl 3); + VRAM_C_MAIN_BG_0x06020000 : VRAM_C_TYPE = 1 or (1 shl 3); + VRAM_C_MAIN_BG_0x06040000 : VRAM_C_TYPE = 1 or (2 shl 3); + VRAM_C_MAIN_BG_0x06060000 : VRAM_C_TYPE = 1 or (3 shl 3); VRAM_C_ARM7 : VRAM_C_TYPE = 2; - VRAM_C_ARM7_0x06000000 : VRAM_C_TYPE = 2; - VRAM_C_ARM7_0x06020000 : VRAM_C_TYPE = 2 or (1 shl 3); + VRAM_C_ARM7_0x06000000 : VRAM_C_TYPE = 2; + VRAM_C_ARM7_0x06020000 : VRAM_C_TYPE = 2 or (1 shl 3); VRAM_C_SUB_BG : VRAM_C_TYPE = 4; - VRAM_C_SUB_BG_0x06200000 : VRAM_C_TYPE = 4 or (0 shl 3); - VRAM_C_SUB_BG_0x06220000 : VRAM_C_TYPE = 4 or (1 shl 3); - VRAM_C_SUB_BG_0x06240000 : VRAM_C_TYPE = 4 or (2 shl 3); - VRAM_C_SUB_BG_0x06260000 : VRAM_C_TYPE = 4 or (3 shl 3); + VRAM_C_SUB_BG_0x06200000 : VRAM_C_TYPE = 4 or (0 shl 3); VRAM_C_TEXTURE : VRAM_C_TYPE = 3 or (2 shl 3); VRAM_C_TEXTURE_SLOT0 : VRAM_C_TYPE = 3 or (0 shl 3); VRAM_C_TEXTURE_SLOT1 : VRAM_C_TYPE = 3 or (1 shl 3); @@ -154,13 +159,13 @@ type const VRAM_D_LCD : VRAM_D_TYPE = 0; VRAM_D_MAIN_BG : VRAM_D_TYPE = 1 or (3 shl 3); - VRAM_D_MAIN_BG_0x06000000 : VRAM_D_TYPE = 1 or (0 shl 3); - VRAM_D_MAIN_BG_0x06020000 : VRAM_D_TYPE = 1 or (1 shl 3); - VRAM_D_MAIN_BG_0x06040000 : VRAM_D_TYPE = 1 or (2 shl 3); - VRAM_D_MAIN_BG_0x06060000 : VRAM_D_TYPE = 1 or (3 shl 3); + VRAM_D_MAIN_BG_0x06000000 : VRAM_D_TYPE = 1 or (0 shl 3); + VRAM_D_MAIN_BG_0x06020000 : VRAM_D_TYPE = 1 or (1 shl 3); + VRAM_D_MAIN_BG_0x06040000 : VRAM_D_TYPE = 1 or (2 shl 3); + VRAM_D_MAIN_BG_0x06060000 : VRAM_D_TYPE = 1 or (3 shl 3); VRAM_D_ARM7 : VRAM_D_TYPE = 2 or (1 shl 3); - VRAM_D_ARM7_0x06000000 : VRAM_D_TYPE = 2; - VRAM_D_ARM7_0x06020000 : VRAM_D_TYPE = 2 or (1 shl 3); + VRAM_D_ARM7_0x06000000 : VRAM_D_TYPE = 2; + VRAM_D_ARM7_0x06020000 : VRAM_D_TYPE = 2 or (1 shl 3); VRAM_D_SUB_SPRITE : VRAM_D_TYPE = 4; VRAM_D_TEXTURE : VRAM_D_TYPE = 3 or (3 shl 3); VRAM_D_TEXTURE_SLOT0 : VRAM_D_TYPE = 3 or (0 shl 3); @@ -171,40 +176,51 @@ const type VRAM_E_TYPE = cint; const - VRAM_E_LCD : VRAM_E_TYPE = 0; - VRAM_E_MAIN_BG : VRAM_E_TYPE = 1; - VRAM_E_MAIN_SPRITE : VRAM_E_TYPE = 2; - VRAM_E_TEX_PALETTE : VRAM_E_TYPE = 3; - VRAM_E_BG_EXT_PALETTE : VRAM_E_TYPE = 4; - VRAM_E_OBJ_EXT_PALETTE : VRAM_E_TYPE = 5; + VRAM_E_LCD : VRAM_E_TYPE = 0; + VRAM_E_MAIN_BG : VRAM_E_TYPE = 1; + VRAM_E_MAIN_SPRITE : VRAM_E_TYPE = 2; + VRAM_E_TEX_PALETTE : VRAM_E_TYPE = 3; + VRAM_E_BG_EXT_PALETTE : VRAM_E_TYPE = 4; type VRAM_F_TYPE = cint; const - VRAM_F_LCD : VRAM_F_TYPE = 0; - VRAM_F_MAIN_BG : VRAM_F_TYPE = 1; - VRAM_F_MAIN_SPRITE : VRAM_F_TYPE = 2; - VRAM_F_MAIN_SPRITE_0x06000000 : VRAM_F_TYPE = 2; - VRAM_F_MAIN_SPRITE_0x06004000 : VRAM_F_TYPE = 2 or (1 shl 3); - VRAM_F_MAIN_SPRITE_0x06010000 : VRAM_F_TYPE = 2 or (2 shl 3); - VRAM_F_MAIN_SPRITE_0x06014000 : VRAM_F_TYPE = 2 or (3 shl 3); - VRAM_F_TEX_PALETTE : VRAM_F_TYPE = 3; - VRAM_F_BG_EXT_PALETTE : VRAM_F_TYPE = 4; - VRAM_F_OBJ_EXT_PALETTE : VRAM_F_TYPE = 5; + VRAM_F_LCD : VRAM_F_TYPE = 0; + VRAM_F_MAIN_BG : VRAM_F_TYPE = 1; + VRAM_F_MAIN_BG_0x06000000 : VRAM_F_TYPE = 1; + VRAM_F_MAIN_BG_0x06004000 : VRAM_F_TYPE = 1 or (1 shl 3); + VRAM_F_MAIN_BG_0x06010000 : VRAM_F_TYPE = 1 or (2 shl 3); + VRAM_F_MAIN_BG_0x06014000 : VRAM_F_TYPE = 1 or (3 shl 3); + VRAM_F_MAIN_SPRITE : VRAM_F_TYPE = 2; + VRAM_F_MAIN_SPRITE_0x06400000 : VRAM_F_TYPE = 2; + VRAM_F_MAIN_SPRITE_0x06404000 : VRAM_F_TYPE = 2 or (1 shl 3); + VRAM_F_MAIN_SPRITE_0x06410000 : VRAM_F_TYPE = 2 or (2 shl 3); + VRAM_F_MAIN_SPRITE_0x06414000 : VRAM_F_TYPE = 2 or (3 shl 3); + VRAM_F_TEX_PALETTE : VRAM_F_TYPE = 3; + VRAM_F_BG_EXT_PALETTE : VRAM_F_TYPE = 4; + VRAM_F_BG_EXT_PALETTE_SLOT01 : VRAM_F_TYPE = 4 or (0 shl 3); + VRAM_F_BG_EXT_PALETTE_SLOT23 : VRAM_F_TYPE = 4 or (1 shl 3); + VRAM_F_SPRITE_EXT_PALETTE : VRAM_F_TYPE = 5; type VRAM_G_TYPE = cint; const - VRAM_G_LCD : VRAM_G_TYPE = 0; - VRAM_G_MAIN_BG : VRAM_G_TYPE = 1; - VRAM_G_MAIN_SPRITE : VRAM_G_TYPE = 2; - VRAM_G_MAIN_SPRITE_0x06000000 : VRAM_G_TYPE = 2; - VRAM_G_MAIN_SPRITE_0x06004000 : VRAM_G_TYPE = 2 or (1 shl 3); - VRAM_G_MAIN_SPRITE_0x06010000 : VRAM_G_TYPE = 2 or (2 shl 3); - VRAM_G_MAIN_SPRITE_0x06014000 : VRAM_G_TYPE = 2 or (3 shl 3); - VRAM_G_TEX_PALETTE : VRAM_G_TYPE = 3; - VRAM_G_BG_EXT_PALETTE : VRAM_G_TYPE = 4; - VRAM_G_OBJ_EXT_PALETTE : VRAM_G_TYPE = 5; + VRAM_G_LCD : VRAM_G_TYPE = 0; + VRAM_G_MAIN_BG : VRAM_G_TYPE = 1; + VRAM_G_MAIN_BG_0x06000000 : VRAM_G_TYPE = 1; + VRAM_G_MAIN_BG_0x06004000 : VRAM_G_TYPE = 1 or (1 shl 3); + VRAM_G_MAIN_BG_0x06010000 : VRAM_G_TYPE = 1 or (2 shl 3); + VRAM_G_MAIN_BG_0x06014000 : VRAM_G_TYPE = 1 or (3 shl 3); + VRAM_G_MAIN_SPRITE : VRAM_G_TYPE = 2; + VRAM_G_MAIN_SPRITE_0x06400000 : VRAM_G_TYPE = 2; + VRAM_G_MAIN_SPRITE_0x06404000 : VRAM_G_TYPE = 2 or (1 shl 3); + VRAM_G_MAIN_SPRITE_0x06410000 : VRAM_G_TYPE = 2 or (2 shl 3); + VRAM_G_MAIN_SPRITE_0x06414000 : VRAM_G_TYPE = 2 or (3 shl 3); + VRAM_G_TEX_PALETTE : VRAM_G_TYPE = 3; + VRAM_G_BG_EXT_PALETTE : VRAM_G_TYPE = 4; + VRAM_G_BG_EXT_PALETTE_SLOT01 : VRAM_G_TYPE = 4 or (0 shl 3); + VRAM_G_BG_EXT_PALETTE_SLOT23 : VRAM_G_TYPE = 4 or (1 shl 3); + VRAM_G_SPRITE_EXT_PALETTE : VRAM_G_TYPE = 5; type VRAM_H_TYPE = cint; @@ -217,21 +233,21 @@ type VRAM_I_TYPE = cint; const VRAM_I_LCD : VRAM_I_TYPE = 0; - VRAM_I_SUB_BG : VRAM_I_TYPE = 1; + VRAM_I_SUB_BG_0x06208000 : VRAM_I_TYPE = 1; VRAM_I_SUB_SPRITE : VRAM_I_TYPE = 2; VRAM_I_SUB_SPRITE_EXT_PALETTE : VRAM_I_TYPE = 3; type - TPalette = array [0..255] of cuint16; - TExtPalette = array [0..15] of TPalette; - PPalette = ^TPalette; - PExtPalette = ^TExtPalette; + _palette = array [0..255] of cuint16; + _ext_palette = array [0..15] of _palette; + P_palette = ^_palette; + P_ext_palette = ^_ext_palette; var - VRAM_E_EXT_PALETTE : PExtPalette absolute VRAM_E; - VRAM_F_EXT_PALETTE : PExtPalette absolute VRAM_F; - VRAM_G_EXT_PALETTE : PExtPalette absolute VRAM_G; - VRAM_H_EXT_PALETTE : PExtPalette absolute VRAM_H; + VRAM_E_EXT_PALETTE : P_palette absolute VRAM_E; + VRAM_F_EXT_PALETTE : P_palette absolute VRAM_F; + VRAM_G_EXT_PALETTE : P_palette absolute VRAM_G; + VRAM_H_EXT_PALETTE : P_palette absolute VRAM_H; function vramSetMainBanks(a: VRAM_A_TYPE; b: VRAM_B_TYPE; c: VRAM_C_TYPE; d: VRAM_D_TYPE): cuint32; cdecl; external; procedure vramRestoreMainBanks(vramTemp: cuint32); cdecl; external; @@ -246,25 +262,12 @@ procedure vramSetBankG(g: VRAM_G_TYPE); cdecl; external; procedure vramSetBankH(h: VRAM_H_TYPE); cdecl; external; procedure vramSetBankI(i: VRAM_I_TYPE); cdecl; external; - -// Display control registers const - DISPLAY_CR : pcuint32 = pointer($04000000); - SUB_DISPLAY_CR : pcuint32 = pointer($04001000); - - MODE_0_2D = $10000; - MODE_1_2D = $10001; - MODE_2_2D = $10002; - MODE_3_2D = $10003; - MODE_4_2D = $10004; - MODE_5_2D = $10005; - -// main display only - MODE_6_2D = $10006; - MODE_FIFO = (3 shl 16); + REG_DISPCNT : pcuint32 = pointer($04000000); + REG_DISPCNT_SUB : pcuint32 = pointer($04001000); ENABLE_3D = (1 shl 3); - + DISPLAY_ENABLE_SHIFT = 8; DISPLAY_BG0_ACTIVE = (1 shl 8); DISPLAY_BG1_ACTIVE = (1 shl 9); DISPLAY_BG2_ACTIVE = (1 shl 10); @@ -274,20 +277,29 @@ const DISPLAY_WIN1_ON = (1 shl 14); DISPLAY_SPR_WIN_ON = (1 shl 15); - -// Main display only - MODE_0_3D = (MODE_0_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - MODE_1_3D = (MODE_1_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - MODE_2_3D = (MODE_2_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - MODE_3_3D = (MODE_3_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - MODE_4_3D = (MODE_4_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - MODE_5_3D = (MODE_5_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - MODE_6_3D = (MODE_6_2D or DISPLAY_BG0_ACTIVE or ENABLE_3D); - - MODE_FB0 = ($00020000); - MODE_FB1 = ($00060000); - MODE_FB2 = ($000A0000); - MODE_FB3 = ($000E0000); + +type + VideoMode = integer; +const + MODE_0_2D: VideoMode = $10000; + MODE_1_2D: VideoMode = $10001; + MODE_2_2D: VideoMode = $10002; + MODE_3_2D: VideoMode = $10003; + MODE_4_2D: VideoMode = $10004; + MODE_5_2D: VideoMode = $10005; + MODE_6_2D: VideoMode = $10006; + MODE_0_3D: VideoMode = ($10000 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_1_3D: VideoMode = ($10001 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_2_3D: VideoMode = ($10002 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_3_3D: VideoMode = ($10003 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_4_3D: VideoMode = ($10004 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_5_3D: VideoMode = ($10005 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_6_3D: VideoMode = ($10006 or DISPLAY_BG0_ACTIVE or ENABLE_3D); + MODE_FIFO: VideoMode = (3 shl 16); + MODE_FB0 : VideoMode = ($00020000); + MODE_FB1 : VideoMode = ($00060000); + MODE_FB2 : VideoMode = ($000A0000); + MODE_FB3 : VideoMode = ($000E0000); DISPLAY_SPR_HBLANK = (1 shl 23); @@ -307,237 +319,31 @@ const DISPLAY_SPR_1D_BMP_SIZE_128 = (0 shl 22); DISPLAY_SPR_1D_BMP_SIZE_256 = (1 shl 22); + DISPLAY_SPRITE_ATTR_MASK = ((7 shl 4) or (7 shl 20) or (1 shl 31)); DISPLAY_SPR_EXT_PALETTE = (1 shl 31); DISPLAY_BG_EXT_PALETTE = (1 shl 30); DISPLAY_SCREEN_OFF = (1 shl 7); -{$endif NDS_INTERFACE} - - -{$ifdef NDS_IMPLEMENTATION} -function DISPLAY_CHAR_BASE(n: cuint32): cuint32; inline; -begin - DISPLAY_CHAR_BASE := ((n) and 7) shl 24; -end; +function DISPLAY_CHAR_BASE(n: cuint32): cuint32; inline; function DISPLAY_SCREEN_BASE(n: cuint32): cuint32; inline; -begin - DISPLAY_SCREEN_BASE := ((n) and 7) shl 27; -end; - -procedure videoSetMode(mode: cuint32); inline; -begin - DISPLAY_CR^ := mode; -end; +procedure videoSetMode(mode: cuint32); inline; procedure videoSetModeSub(mode: cuint32); inline; -begin - SUB_DISPLAY_CR^ := mode; -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -const - BRIGHTNESS : pcuint16 = pointer($0400006C); - SUB_BRIGHTNESS : pcuint16 = pointer($0400106C); - - BGCTRL : pcuint16 = pointer($04000008); - BG0_CR : pcuint16 = pointer($04000008); - BG1_CR : pcuint16 = pointer($0400000A); - BG2_CR : pcuint16 = pointer($0400000C); - BG3_CR : pcuint16 = pointer($0400000E); - - BGCTRL_SUB : pcuint16 = pointer($04001008); - SUB_BG0_CR : pcuint16 = pointer($04001008); - SUB_BG1_CR : pcuint16 = pointer($0400100A); - SUB_BG2_CR : pcuint16 = pointer($0400100C); - SUB_BG3_CR : pcuint16 = pointer($0400100E); - - BG_256_COLOR = (1 shl 7); - BG_16_COLOR = (0); - - BG_MOSAIC_ON = (1 shl 6); - BG_MOSAIC_OFF = (0); -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function BG_PRIORITY(n: cint): cint; inline; -begin - BG_PRIORITY := (n); -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -const - BG_PRIORITY_0 = (0); - BG_PRIORITY_1 = (1); - BG_PRIORITY_2 = (2); - BG_PRIORITY_3 = (3); -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function BG_TILE_BASE(base: cint): cint; inline; -begin - BG_TILE_BASE := ((base) shl 2); -end; - -function BG_MAP_BASE(base: cint): cint; inline; -begin - BG_MAP_BASE := ((base) shl 8); -end; - -function BG_BMP_BASE(base: cint): cint; inline; -begin - BG_BMP_BASE := ((base) shl 8); -end; - - -function BG_MAP_RAM(base: cint): cint; inline; -begin - BG_MAP_RAM := (((base) * $800) + $06000000); -end; - -function BG_MAP_RAM_SUB(base: cint): cint; inline; -begin - BG_MAP_RAM_SUB := (((base) * $800) + $06200000); -end; +function videoGetMode(): cint; inline; +function videoGetModeSub(): cint; inline; +function video3DEnabled(): cbool; inline; +procedure videoBgEnable(number: cint); inline; +procedure videoBgEnableSub(number: cint); inline; +procedure videoBgDisable(number: cint); inline; +procedure videoBgDisableSub(number: cint); inline; +procedure setBrightness(screen, level: cint); cdecl; external; -function BG_TILE_RAM(base: cint): cint; inline; -begin - BG_TILE_RAM := (((base) * $4000) + $06000000); -end; - -function BG_TILE_RAM_SUB(base: cint): cint; inline; -begin - BG_TILE_RAM_SUB := (((base) * $4000) + $06200000); -end; - - -function BG_BMP_RAM(base: cint): cint; inline; -begin - BG_BMP_RAM := (((base) * $4000) + $06000000); -end; - -function BG_BMP_RAM_SUB(base: cint): cint; inline; -begin - BG_BMP_RAM_SUB := (((base) * $4000) + $06200000); -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} const - BG_WRAP_OFF = (0); - BG_WRAP_ON = (1 shl 13); - - BG_32x32 = (0 shl 14); - BG_64x32 = (1 shl 14); - BG_32x64 = (2 shl 14); - BG_64x64 = (3 shl 14); - - BG_RS_16x16 = (0 shl 14); - BG_RS_32x32 = (1 shl 14); - BG_RS_64x64 = (2 shl 14); - BG_RS_128x128 = (3 shl 14); - - BG_BMP8_128x128 = (BG_RS_16x16 or BG_256_COLOR); - BG_BMP8_256x256 = (BG_RS_32x32 or BG_256_COLOR); - BG_BMP8_512x256 = (BG_RS_64x64 or BG_256_COLOR); - BG_BMP8_512x512 = (BG_RS_128x128 or BG_256_COLOR); - BG_BMP8_1024x512 = (1 shl 14); - BG_BMP8_512x1024 = 0; - - BG_BMP16_128x128 = (BG_RS_16x16 or BG_256_COLOR or (1 shl 2)); - BG_BMP16_256x256 = (BG_RS_32x32 or BG_256_COLOR or (1 shl 2)); - BG_BMP16_512x256 = (BG_RS_64x64 or BG_256_COLOR or (1 shl 2)); - BG_BMP16_512x512 = (BG_RS_128x128 or BG_256_COLOR or (1 shl 2)); - - BG_PALETTE_SLOT0 = 0; - BG_PALETTE_SLOT1 = 0; - BG_PALETTE_SLOT2 = (1 shl 13); - BG_PALETTE_SLOT3 = (1 shl 13); - -type - bg_scroll = record - x: cuint16; - y: cuint16; - end; - Tbg_scroll = bg_scroll; - Pbg_scroll = ^bg_scroll; - - bg_rotation = record - xdx: cuint16; - xdy: cuint16; - ydx: cuint16; - ydy: cuint16; - centerX: cuint32; - centerY: cuint32; - end; - Tbg_rotation = bg_rotation; - Pbg_rotation = ^bg_rotation; - - bg_attribute = record - control: array [0..3] of cuint16; - scroll: array [0..3] of bg_scroll; - bg2_rotation: bg_rotation; - bg3_rotation: bg_rotation; - end; - Tbg_attribute = bg_attribute; - Pbg_attribute = ^bg_attribute; - - -const - BACKGROUND : Pbg_attribute = pointer($04000008); - BACKGROUND_SUB : Pbg_attribute = pointer($04001008); - - BG_OFFSET : Pbg_scroll = pointer($04000010); - - BG0_X0 : pcuint16 = pointer($04000010); - BG0_Y0 : pcuint16 = pointer($04000012); - BG1_X0 : pcuint16 = pointer($04000014); - BG1_Y0 : pcuint16 = pointer($04000016); - BG2_X0 : pcuint16 = pointer($04000018); - BG2_Y0 : pcuint16 = pointer($0400001A); - BG3_X0 : pcuint16 = pointer($0400001C); - BG3_Y0 : pcuint16 = pointer($0400001E); - - BG2_XDX : pcuint16 = pointer($04000020); - BG2_XDY : pcuint16 = pointer($04000022); - BG2_YDX : pcuint16 = pointer($04000024); - BG2_YDY : pcuint16 = pointer($04000026); - BG2_CX : pcuint32 = pointer($04000028); - BG2_CY : pcuint32 = pointer($0400002C); - - BG3_XDX : pcuint16 = pointer($04000030); - BG3_XDY : pcuint16 = pointer($04000032); - BG3_YDX : pcuint16 = pointer($04000034); - BG3_YDY : pcuint16 = pointer($04000036); - BG3_CX : pcuint32 = pointer($04000038); - BG3_CY : pcuint32 = pointer($0400003C); - - SUB_BG0_X0 : pcuint16 = pointer($04001010); - SUB_BG0_Y0 : pcuint16 = pointer($04001012); - SUB_BG1_X0 : pcuint16 = pointer($04001014); - SUB_BG1_Y0 : pcuint16 = pointer($04001016); - SUB_BG2_X0 : pcuint16 = pointer($04001018); - SUB_BG2_Y0 : pcuint16 = pointer($0400101A); - SUB_BG3_X0 : pcuint16 = pointer($0400101C); - SUB_BG3_Y0 : pcuint16 = pointer($0400101E); - - SUB_BG2_XDX : pcuint16 = pointer($04001020); - SUB_BG2_XDY : pcuint16 = pointer($04001022); - SUB_BG2_YDX : pcuint16 = pointer($04001024); - SUB_BG2_YDY : pcuint16 = pointer($04001026); - SUB_BG2_CX : pcuint32 = pointer($04001028); - SUB_BG2_CY : pcuint32 = pointer($0400102C); - - SUB_BG3_XDX : pcuint16 = pointer($04001030); - SUB_BG3_XDY : pcuint16 = pointer($04001032); - SUB_BG3_YDX : pcuint16 = pointer($04001034); - SUB_BG3_YDY : pcuint16 = pointer($04001036); - SUB_BG3_CX : pcuint32 = pointer($04001038); - SUB_BG3_CY : pcuint32 = pointer($0400103C); + REG_MASTER_BRIGHT : pcuint16 = pointer($0400006C); + REG_MASTER_BRIGHT_SUB : pcuint16 = pointer($0400106C); // Window 0 WIN0_X0 : pcuint8 = pointer($04000041); @@ -546,8 +352,8 @@ const WIN0_Y1 : pcuint8 = pointer($04000044); // Window 1 - WIN1_X0 : pcuint8 = pointer($04000042); - WIN1_X1 : pcuint8 = pointer($04000043); + WIN1_X0 : pcuint8 = pointer($04000043); + WIN1_X1 : pcuint8 = pointer($04000042); WIN1_Y0 : pcuint8 = pointer($04000047); WIN1_Y1 : pcuint8 = pointer($04000046); @@ -561,8 +367,8 @@ const SUB_WIN0_Y1 : pcuint8 = pointer($04001044); // Window 1 - SUB_WIN1_X0 : pcuint8 = pointer($04001042); - SUB_WIN1_X1 : pcuint8 = pointer($04001043); + SUB_WIN1_X0 : pcuint8 = pointer($04001043); + SUB_WIN1_X1 : pcuint8 = pointer($04001042); SUB_WIN1_Y0 : pcuint8 = pointer($04001047); SUB_WIN1_Y1 : pcuint8 = pointer($04001046); @@ -572,13 +378,13 @@ const MOSAIC_CR : pcuint16 = pointer($0400004C); SUB_MOSAIC_CR : pcuint16 = pointer($0400104C); - BLEND_CR : pcuint16 = pointer($04000050); - BLEND_AB : pcuint16 = pointer($04000052); - BLEND_Y : pcuint16 = pointer($04000054); + REG_BLDCNT : pcuint16 = pointer($04000050); + REG_BLDY : pcuint16 = pointer($04000054); + REG_BLDALPHA : pcuint16 = pointer($04000052); - SUB_BLEND_CR : pcuint16 = pointer($04001050); - SUB_BLEND_AB : pcuint16 = pointer($04001052); - SUB_BLEND_Y : pcuint16 = pointer($04001054); + REG_BLDCNT_SUB : pcuint16 = pointer($04001050); + REG_BLDALPHA_SUB : pcuint16 = pointer($04001052); + REG_BLDY_SUB : pcuint16 = pointer($04001054); BLEND_NONE = (0 shl 6); BLEND_ALPHA = (1 shl 6); @@ -599,58 +405,20 @@ const BLEND_DST_SPRITE = (1 shl 12); BLEND_DST_BACKDROP = (1 shl 13); -// Display capture control - REG_DISPCAPCNT: pcuint32 = pointer($04000064); REG_DISP_MMEM_FIFO: pcuint32 = pointer($04000068); DCAP_ENABLE = (1 shl 31); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} function DCAP_MODE(n: cint): cint; inline; -begin - DCAP_MODE := (((n) and 3) shl 29); -end; - function DCAP_DST(n: cint): cint; inline; -begin - DCAP_DST := (((n) and 3) shl 26); -end; - function DCAP_SRC(n: cint): cint; inline; -begin - DCAP_SRC := (((n) and 3) shl 24); -end; - function DCAP_SIZE(n: cint): cint; inline; -begin - DCAP_SIZE := (((n) and 3) shl 20); -end; - function DCAP_OFFSET(n: cint): cint; inline; -begin - DCAP_OFFSET := (((n) and 3) shl 18); -end; - function DCAP_BANK(n: cint): cint; inline; -begin - DCAP_BANK := (((n) and 3) shl 16); -end; - function DCAP_B(n: cint): cint; inline; -begin - DCAP_B := (((n) and $1F) shl 8); -end; - function DCAP_A(n: cint): cint; inline; -begin - DCAP_A := (((n) and $1F) shl 0); -end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} -// 3D core control const GFX_CONTROL : pcuint16 = pointer($04000060); @@ -695,17 +463,11 @@ const GFX_BOX_TEST : pcint32 = pointer($040005C0); GFX_POS_TEST : pcint32 = pointer($040005C4); GFX_POS_RESULT : pcint32 = pointer($04000620); -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function GFX_BUSY: boolean; inline; -begin - GFX_BUSY := GFX_STATUS^ and (1 shl 27) <> 0; -end; -{$endif NDS_IMPLEMENTATION} + GFX_VEC_TEST : pcuint32 = pointer($040005C8); + GFX_VEC_RESULT : pcint16 = pointer($04000630); +function GFX_BUSY: boolean; inline; -{$ifdef NDS_INTERFACE} const GFX_VERTEX_RAM_USAGE : pcuint16 = pointer($04000606); GFX_POLYGON_RAM_USAGE : pcuint16 = pointer($04000604); @@ -733,34 +495,133 @@ const MATRIX_READ_VECTOR : pcint32 = pointer($04000680); POINT_RESULT : pcint32 = pointer($04000620); VECTOR_RESULT : pcuint16 = pointer($04000630); + {$endif NDS_INTERFACE} -{$ifdef NDS_INTERFACE} -function RGB15(r, g, b: cint): cuint16; -function RGB5(r, g, b: cint): cuint16; -function RGB8(r, g, b: cint): cuint8; +{$ifdef NDS_IMPLEMENTATION} +function RGB15(r, g, b: cint): cuint16; inline; +begin + RGB15 := ((r) or ((g) shl 5) or ((b) shl 10)); +end; + +function RGB5(r, g, b: cint): cuint16; inline; +begin + RGB5 := ((r) or ((g) shl 5) or ((b) shl 10)); +end; + +function RGB8(r, g, b: cint): cuint8; inline; +begin + RGB8 := (((r) shr 3) or (((g) shr 3) shl 5) or (((b) shr 3) shl 10)); +end; + +function ARGB16(a, r, g, b: cint): cuint16; inline; +begin + ARGB16 := ((a shl 15) or r or (g shl 5) or (b shl 10)); +end; + function VRAM_OFFSET(n: cint): cint; inline; +begin + VRAM_OFFSET := ((n) shl 3); +end; + +function videoGetMode(): cint; inline; +begin + result := (REG_DISPCNT^ and $30007); +end; + +function videoGetModeSub(): cint; inline; +begin + result := (REG_DISPCNT_SUB^ and $30007); +end; + +function video3DEnabled(): cbool; inline; +begin + result := (REG_DISPCNT^ and ENABLE_3D) <> 0; +end; + +procedure videoBgEnable(number: cint); inline; +begin + REG_DISPCNT^ := REG_DISPCNT^ or (1 shl (DISPLAY_ENABLE_SHIFT + number)); +end; + +procedure videoBgEnableSub(number: cint); inline; +begin + REG_DISPCNT_SUB^ := REG_DISPCNT_SUB^ or (1 shl (DISPLAY_ENABLE_SHIFT + number)); +end; + +procedure videoBgDisable(number: cint); inline; +begin + REG_DISPCNT^ := REG_DISPCNT^ and not (1 shl (DISPLAY_ENABLE_SHIFT + number)); +end; + +procedure videoBgDisableSub(number: cint); inline; +begin + REG_DISPCNT_SUB^ := REG_DISPCNT_SUB^ and not (1 shl (DISPLAY_ENABLE_SHIFT + number)); +end; + function DISPLAY_CHAR_BASE(n: cuint32): cuint32; inline; +begin + DISPLAY_CHAR_BASE := ((n) and 7) shl 24; +end; + function DISPLAY_SCREEN_BASE(n: cuint32): cuint32; inline; +begin + DISPLAY_SCREEN_BASE := ((n) and 7) shl 27; +end; + procedure videoSetMode(mode: cuint32); inline; +begin + REG_DISPCNT^ := mode; +end; + procedure videoSetModeSub(mode: cuint32); inline; -function BG_PRIORITY(n: cint): cint; inline; -function BG_TILE_BASE(base: cint): cint; inline; -function BG_MAP_BASE(base: cint): cint; inline; -function BG_BMP_BASE(base: cint): cint; inline; -function BG_MAP_RAM(base: cint): cint; inline; -function BG_MAP_RAM_SUB(base: cint): cint; inline; -function BG_TILE_RAM(base: cint): cint; inline; -function BG_TILE_RAM_SUB(base: cint): cint; inline; -function BG_BMP_RAM(base: cint): cint; inline; -function BG_BMP_RAM_SUB(base: cint): cint; inline; +begin + REG_DISPCNT_SUB^ := mode; +end; + function DCAP_MODE(n: cint): cint; inline; +begin + DCAP_MODE := (((n) and 3) shl 29); +end; + function DCAP_DST(n: cint): cint; inline; +begin + DCAP_DST := (((n) and 3) shl 26); +end; + function DCAP_SRC(n: cint): cint; inline; +begin + DCAP_SRC := (((n) and 3) shl 24); +end; + function DCAP_SIZE(n: cint): cint; inline; +begin + DCAP_SIZE := (((n) and 3) shl 20); +end; + function DCAP_OFFSET(n: cint): cint; inline; +begin + DCAP_OFFSET := (((n) and 3) shl 18); +end; + function DCAP_BANK(n: cint): cint; inline; +begin + DCAP_BANK := (((n) and 3) shl 16); +end; + function DCAP_B(n: cint): cint; inline; +begin + DCAP_B := (((n) and $1F) shl 8); +end; + function DCAP_A(n: cint): cint; inline; +begin + DCAP_A := (((n) and $1F) shl 0); +end; + function GFX_BUSY: boolean; inline; -{$endif NDS_INTERFACE} +begin + GFX_BUSY := GFX_STATUS^ and (1 shl 27) <> 0; +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/arm9/videoGL.inc b/packages/libndsfpc/src/nds/arm9/videoGL.inc index e7bed53055..4be9d7a90c 100644 --- a/packages/libndsfpc/src/nds/arm9/videoGL.inc +++ b/packages/libndsfpc/src/nds/arm9/videoGL.inc @@ -51,163 +51,61 @@ in other words dont change unless you also change your LUTs ---------------------------------------------------------------------------------*) const - LUT_SIZE = (512); - LUT_MASK = ($1FF); + LUT_SIZE = (1 shl 15); + LUT_MASK = ((1 shl 15) - 1); type GLuint = cuint32; GLfloat = cfloat; +const + MAX_TEXTURES = 2048; //this should be enough ! but feel free to change + ////////////////////////////////////////////////////////////////////// // Fixed point / floating point / integer conversion macros ////////////////////////////////////////////////////////////////////// - +type fixed12d3 = cuint16 ; -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function int_to_12d3(n: cint): fixed12d3; inline; -begin - int_to_12d3 := fixed12d3(n shl 3); -end; -function float_to_12d3(n: cfloat): fixed12d3; inline; -begin - float_to_12d3 := fixed12d3(trunc( n * (1 shl 3))); -end; -{$endif NDS_IMPLEMENTATION} +function int_to_12d3(n: cint): fixed12d3; inline; +function float_to_12d3(n: cfloat): fixed12d3; inline; -{$ifdef NDS_INTERFACE} const GL_MAX_DEPTH = $7FFF; -{$endif NDS_INTERFACE} -////////////////////////////////////////////////////////////////////// - -{$ifdef NDS_IMPLEMENTATION} -function inttof32(n: cint): cint32; inline; -begin - inttof32 := ((n) shl 12); -end; - -function f32toint(n: cint32): cint; inline; -begin - f32toint := ((n) shr 12); -end; - -function floattof32(n: cfloat): cint32; inline; -begin - floattof32 := trunc((n) * (1 shl 12)); -end; - -// check it! -function f32tofloat(n: cint32): cfloat; inline; -begin - f32tofloat := (n * 1.0) / ((1 shl 12) * 1.0); -end; -{$endif NDS_IMPLEMENTATION} +function inttof32(n: cint): cint32; inline; +function f32toint(n: cint32): cint; inline; +function floattof32(n: cfloat): cint32; inline; +function f32tofloat(n: cint32): cfloat; inline; -{$ifdef NDS_INTERFACE} type - t16 = cint16; // text coordinate 12.4 fixed point (or cint?) -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function f32tot16(n: cint32): t16; inline; -begin - f32tot16 := t16(n shr 8); -end; + t16 = cshort;//cint16? // text coordinate 12.4 fixed point (or cint?) +function f32tot16(n: cint32): t16; inline; function inttot16(n: cint): cint32; inline; //??? -begin - inttot16 := (n shl 4); -end; - -function t16toint(n: t16): cint; inline; -begin - t16toint := cint((n) shr 4); -end; - -function floattot16(n: cfloat): t16; inline; -begin - floattot16 := t16(trunc(n * (1 shl 4))); -end; +function t16toint(n: t16): cint; inline; +function floattot16(n: cfloat): t16; inline; +function TEXTURE_PACK(u, v: cint): cint; inline; +//function TEXTURE_PACK(u, v: cshort): cuint; inline; -function TEXTURE_PACK(u, v: cint): cint; inline; -begin - TEXTURE_PACK := (u and $FFFF) or (v shl 16); -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} type - v16 = cuint16; // vertex 4.12 fixed format -{$endif NDS_INTERFACE} + v16 = cuint16; //cshort? // vertex 4.12 fixed format -{$ifdef NDS_IMPLEMENTATION} -function inttov16(n: cint): cint; inline; -begin - inttov16 := (n shl 12); -end; - -function f32tov16(n: cint32): v16; inline; -begin - f32tov16 := v16(n); -end; +function inttov16(n: cint): cint{v16}; inline; +function f32tov16(n: cint32): v16; inline; +function v16toint(n: v16): cint; inline; +function floattov16(n: cfloat): v16; inline; +function VERTEX_PACK(x,y: cint): cint; inline; -function v16toint(n: v16): cint; inline; -begin - v16toint := cint((n) shr 12); -end; - -function floattov16(n: cfloat): v16; inline; -begin - floattov16 := v16(trunc(n * (1 shl 12))); -end; - -function VERTEX_PACK(x,y: cint): cint; inline; -begin - VERTEX_PACK := (x and $FFFF) or (y shl 16); -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} type v10 = cint16; -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function inttov10(n: cint): cint; inline; -begin - inttov10 := ((n) shl 9); -end; - -function f32tov10(n: cint32): cint; inline; -begin - f32tov10 := (n shr 3); -end; - -function v10toint(n: v10): cint; inline; -begin - v10toint := cint((n) shr 9); -end; +function inttov10(n: cint): cint; inline; +function f32tov10(n: cint32): cint; inline; +function v10toint(n: v10): cint; inline; function floattov10(n: cfloat): v10; inline; -begin - if n > 0.998 then - floattov10 := v10($1FF) - else - floattov10 := trunc(n * (1 shl 9)); -end; - -function NORMAL_PACK(x,y,z: cint): cint; inline; -begin - NORMAL_PACK := ((x and $3FF) or ((y and $3FF) shl 10) or (z shl 20)); -end; -{$endif NDS_IMPLEMENTATION} - +function NORMAL_PACK(x,y,z: cint): cint; inline; -{$ifdef NDS_INTERFACE} type rgb = cushort; @@ -215,24 +113,22 @@ type m: array [0..8] of cint32; end; pm3x3 = ^m3x3; - + m4x4 = record m: array [0..15] of cint32; end; pm4x4 = ^m4x4; - + m4x3 = record m: array [0..11] of cint32; end; pm4x3 = ^m4x3; - + GLvector = record x,y,z: cint32; end; PGLvector= ^GLvector; -////////////////////////////////////////////////////////////////////// - const GL_FALSE = 0; GL_TRUE = 1; @@ -280,15 +176,18 @@ const type GL_POLY_FORMAT_ENUM = cint32; const - POLY_DECAL : GL_POLY_FORMAT_ENUM = (1 shl 4); - POLY_TOON_SHADING : GL_POLY_FORMAT_ENUM = (1 shl 5); - POLY_CULL_BACK : GL_POLY_FORMAT_ENUM = (1 shl 7); - POLY_CULL_FRONT : GL_POLY_FORMAT_ENUM = (1 shl 6); - POLY_CULL_NONE : GL_POLY_FORMAT_ENUM = (3 shl 6); - POLY_FORMAT_LIGHT0 : GL_POLY_FORMAT_ENUM = (1 shl 0); - POLY_FORMAT_LIGHT1 : GL_POLY_FORMAT_ENUM = (1 shl 1); - POLY_FORMAT_LIGHT2 : GL_POLY_FORMAT_ENUM = (1 shl 2); - POLY_FORMAT_LIGHT3 : GL_POLY_FORMAT_ENUM = (1 shl 3); + POLY_FORMAT_LIGHT0 : GL_POLY_FORMAT_ENUM = (1 shl 0); + POLY_FORMAT_LIGHT1 : GL_POLY_FORMAT_ENUM = (1 shl 1); + POLY_FORMAT_LIGHT2 : GL_POLY_FORMAT_ENUM = (1 shl 2); + POLY_FORMAT_LIGHT3 : GL_POLY_FORMAT_ENUM = (1 shl 3); + POLY_MODULATION : GL_POLY_FORMAT_ENUM = (0 shl 4); + POLY_DECAL : GL_POLY_FORMAT_ENUM = (1 shl 4); + POLY_TOON_HIGHLIGHT : GL_POLY_FORMAT_ENUM = (2 shl 4); + POLY_SHADOW : GL_POLY_FORMAT_ENUM = (3 shl 4); + POLY_CULL_FRONT : GL_POLY_FORMAT_ENUM = (1 shl 6); + POLY_CULL_BACK : GL_POLY_FORMAT_ENUM = (2 shl 6); + POLY_CULL_NONE : GL_POLY_FORMAT_ENUM = (3 shl 6); + POLY_FOG : GL_POLY_FORMAT_ENUM = (1 shl 15); @@ -346,42 +245,30 @@ const GL_BLEND : DISP3DCNT_ENUM = (1 shl 3); GL_ANTIALIAS : DISP3DCNT_ENUM = (1 shl 4); GL_OUTLINE : DISP3DCNT_ENUM = (1 shl 5); + GL_FOG_ONLY_ALPHA : DISP3DCNT_ENUM = (1 shl 6); + GL_FOG : DISP3DCNT_ENUM = (1 shl 7); GL_COLOR_UNDERFLOW : DISP3DCNT_ENUM = (1 shl 12); GL_POLY_OVERFLOW : DISP3DCNT_ENUM = (1 shl 13); GL_CLEAR_BMP : DISP3DCNT_ENUM = (1 shl 14); - -//////////////////////////////////////////////////////////// -// glGet constants -//////////////////////////////////////////////////////////// - type GL_GET_ENUM = ( - GL_GET_VERTEX_RAM_COUNT, - GL_GET_POLYGON_RAM_COUNT, - GL_GET_MATRIX_VECTOR, - GL_GET_MATRIX_POSITION, - GL_GET_MATRIX_PROJECTION, - GL_GET_MATRIX_CLIP, - GL_GET_TEXTURE_WIDTH, - GL_GET_TEXTURE_HEIGHT + GL_GET_VERTEX_RAM_COUNT = 0, + GL_GET_POLYGON_RAM_COUNT = 1, + GL_GET_MATRIX_VECTOR = 2, + GL_GET_MATRIX_POSITION = 3, + GL_GET_MATRIX_PROJECTION = 4, + GL_GET_MATRIX_CLIP = 5, + GL_GET_TEXTURE_WIDTH = 6, + GL_GET_TEXTURE_HEIGHT = 7 ); - type GLFLUSH_ENUM = cint32; const GL_TRANS_MANUALSORT: GLFLUSH_ENUM = (1 shl 0); GL_WBUFFERING : GLFLUSH_ENUM = (1 shl 1); -//////////////////////////////////////////////////////////// -// Misc. constants -//////////////////////////////////////////////////////////// - -const - MAX_TEXTURES = 2048; //this should be enough ! but feel free to change - GL_LIGHTING = 1; // no idea what this is for / who defined it - type gl_hidden_globals = record matrixMode: GL_MATRIX_MODE_ENUM; // holds the current Matrix Mode @@ -389,6 +276,7 @@ type clearColor: cuint32; // state of clear color register // texture globals textures: array [0..MAX_TEXTURES-1] of cuint32; + texturePtrs: DynamicArray; activeTexture: cuint32; nextBlock: pcuint32; nextPBlock: cuint32; @@ -396,26 +284,245 @@ type end; TGLHiddenGlobals = gl_hidden_globals; PGLHiddenGlobals = ^gl_hidden_globals; - + var + glGlobalData: gl_hidden_globals; cvar; external; // Pointer to global data for videoGL - glGlob: PGLHiddenGlobals = nil; + glGlob: PGLHiddenGlobals = @glGlobalData; + +type + TArr4ofInt = array [0..3] of cint32; + +function FIFO_COMMAND_PACK(c1,c2,c3,c4: cint): cint; inline; +function REG2ID(r: pcuint32): cuint8; inline; +function FIFO_NOP(): cuint8; inline; +function FIFO_STATUS(): cuint8; inline; +function FIFO_COLOR(): cuint8; inline; +function FIFO_VERTEX16(): cuint8; inline; +function FIFO_TEX_COORD(): cuint8; inline; +function FIFO_TEX_FORMAT(): cuint8; inline; +function FIFO_PAL_FORMAT(): cuint8; inline; +function FIFO_CLEAR_COLOR(): cuint8; inline; +function FIFO_CLEAR_DEPTH(): cuint8; inline; +function FIFO_LIGHT_VECTOR(): cuint8; inline; +function FIFO_LIGHT_COLOR(): cuint8; inline; +function FIFO_NORMAL(): cuint8; inline; +function FIFO_DIFFUSE_AMBIENT(): cuint8; inline; +function FIFO_SPECULAR_EMISSION(): cuint8; inline; +function FIFO_SHININESS(): cuint8; inline; +function FIFO_POLY_FORMAT(): cuint8; inline; +function FIFO_BEGIN(): cuint8; inline; +function FIFO_END(): cuint8; inline; +function FIFO_FLUSH(): cuint8; inline; +function FIFO_VIEWPORT(): cuint8; inline; + +procedure glRotatef32i(angle: cint; x, y, z: cint32); cdecl; external; +function glTexImage2D(target, empty1: cint; _type: GL_TEXTURE_TYPE_ENUM; sizeX, sizeY, empty2, param: cint; texture: pcuint8): cint; cdecl; external; +procedure glTexLoadPal(const pal: pcuint16; count: cuint16; addr: cuint32); cdecl; external; +function gluTexLoadPal(const pal: pcuint16; count: cuint16; format: cuint8): cint; cdecl; external; +procedure glTexParameter(sizeX, sizeY: cuint8; const addr: pcuint32; mode: GL_TEXTURE_TYPE_ENUM; param: GL_TEXTURE_PARAM_ENUM); cdecl; external; +function glGetTexParameter(): cuint32; cdecl; external; +function glGetTexturePointer(name: cint): pointer; cdecl; external; +procedure glBindTexture(target, name: cint); cdecl; external; +procedure glColorTable(format: cuint8; addr: cuint32); cdecl; external; +function glGenTextures(n: cint; names: pcint): cint; cdecl; external; +procedure glResetTextures(); cdecl; external; +procedure glTexCoord2f32(u, v: cint32); cdecl; external; +procedure glMaterialf(mode: GL_MATERIALS_ENUM; color: rgb); cdecl; external; +procedure glInit_C(); cdecl; external; +function glGetGlobals(): PGLHiddenGlobals; cdecl; external; + +function POLY_ALPHA(n: cint): cuint32; inline; +function POLY_ID(n: cint): cuint32; inline; +procedure glBegin(mode: GL_GLBEGIN_ENUM); inline; +procedure glEnd(); inline; +procedure glClearDepth(depth: fixed12d3); inline; +procedure glColor3b(red, green, blue: cuint8); inline; +procedure glColor(color: rgb); inline; +procedure glVertex3v16(x, y, z: v16); inline; +procedure glTexCoord2t16(u, v: t16); inline; +procedure glPushMatrix(); inline; +procedure glPopMatrix(num: cint32); inline; +procedure glRestoreMatrix(index: cint32); inline; +procedure glStoreMatrix(index: cint32); inline; +procedure glScalev(const v: PGLvector); inline; +procedure glTranslatev(const v: PGLvector) ; inline; +procedure glTranslate3f32(x, y, z: cint32); inline; +procedure glScalef32(factor: cint32); inline; +procedure glLight(id: cint; color: rgb; x, y, z: v10); inline; +procedure glNormal(normal: cuint32); inline; +procedure glLoadIdentity(); inline; +procedure glMatrixMode(mode: GL_MATRIX_MODE_ENUM); inline; +procedure glViewport(x1, y1, x2, y2: cuint8); inline; +procedure glFlush(mode: cuint32); inline; +procedure glMaterialShinyness(); inline; +procedure glCallList(list: pcuint32); inline; +procedure glPolyFmt(params: cuint32); inline; +procedure glEnable(bits: cint); inline; +procedure glDisable(bits: cint); inline; +procedure glLoadMatrix4x4(const m: pm4x4); inline; +procedure glLoadMatrix4x3(const m: pm4x3); inline; +procedure glMultMatrix4x4(const m: pm4x4); inline; +procedure glMultMatrix4x3(const m: pm4x3); inline; +procedure glMultMatrix3x3(const m: pm3x3); inline; +procedure glRotateXi(angle: cint); inline; +procedure glRotateYi(angle: cint); inline; +procedure glRotateZi(angle: cint); inline; +procedure glOrthof32(left, right, bottom, top, zNear, zFar: cint32); inline; +procedure gluLookAtf32(eyex, eyey, eyez, lookAtx, lookAty, lookAtz, upx, upy, upz: cint32); inline; +procedure glFrustumf32(left, right, bottom, top, zNear, zFar: cint32); inline; +procedure gluPerspectivef32(fovy: cint; aspect, zNear, zFar: cint32); inline; +procedure gluPickMatrix(x, y, width, height: cint32; const viewport: TArr4ofInt); inline; +procedure glResetMatrixStack(); inline; +procedure glSetOutlineColor(id: cint; color: rgb); inline; +procedure glSetToonTable(const table: pcuint16); inline; +procedure glSetToonTableRange(_start, _end: cint; color: rgb); inline; +procedure glGetFixed(const param: GL_GET_ENUM; f: pcint32); inline; +procedure glAlphaFunc(alphaThreshold: cint); inline; +procedure glCutoffDepth(wVal: fixed12d3); inline; +procedure glInit(); inline; +procedure glClearColor(red, green, blue, alpha: cuint8); inline; +procedure glClearPolyID(ID: cuint8); inline; +procedure glGetInt(param: GL_GET_ENUM; var i: cint); inline; +procedure glVertex3f(x, y, z: cfloat); inline; +procedure glRotatef32(angle: cfloat; x, y, z: cint32); inline; +procedure glRotatef(angle, x, y, z: cfloat); inline; +procedure glColor3f(r, g, b: cfloat); inline; +procedure glScalef(x, y, z: cfloat); inline; +procedure glTranslatef(x, y, z: cfloat); inline; +procedure glNormal3f(x, y, z: cfloat); inline; +procedure glRotateX(angle: cfloat); inline; +procedure glRotateY(angle: cfloat); inline; +procedure glRotateZ(angle: cfloat); inline; +procedure glOrtho(left, right, bottom, top, zNear, zFar: cfloat); inline; +procedure gluLookAt(eyex, eyey, eyez, lookAtx, lookAty, lookAtz, upx, upy, upz: cfloat); inline; +procedure glFrustum(left, right, bottom, top, znear, zfar: cfloat); inline; +procedure gluPerspective(fovy, aspect, zNear, zFar: cfloat); inline; +procedure glTexCoord2f(s, t: cfloat); inline; +{$endif NDS_INTERFACE} + + + +{$ifdef NDS_IMPLEMENTATION} +function int_to_12d3(n: cint): fixed12d3; inline; +begin + int_to_12d3 := fixed12d3(n shl 3); +end; + +function float_to_12d3(n: cfloat): fixed12d3; inline; +begin + float_to_12d3 := fixed12d3(trunc( n * (1 shl 3))); +end; + +function inttof32(n: cint): cint32; inline; +begin + inttof32 := ((n) shl 12); +end; + +function f32toint(n: cint32): cint; inline; +begin + f32toint := ((n) shr 12); +end; + +function floattof32(n: cfloat): cint32; inline; +begin + floattof32 := trunc((n) * (1 shl 12)); +end; + +// check it! +function f32tofloat(n: cint32): cfloat; inline; +begin + f32tofloat := cfloat(n * 1.0) / cfloat((1 shl 12) * 1.0); +end; + +function f32tot16(n: cint32): t16; inline; +begin + f32tot16 := t16(n shr 8); +end; + +function inttot16(n: cint): cint32; inline; //??? +begin + inttot16 := (n shl 4); +end; + +function t16toint(n: t16): cint; inline; +begin + t16toint := cint((n) shr 4); +end; + +function floattot16(n: cfloat): t16; inline; +begin + floattot16 := t16(trunc(n * (1 shl 4))); +end; + +function TEXTURE_PACK(u, v: cint): cint; inline; +//function TEXTURE_PACK(u, v: cshort): cuint; inline; +begin + TEXTURE_PACK := (u and $FFFF) or (v shl 16); +end; + +function inttov16(n: cint): cint{v16}; inline; +begin + inttov16 := (n shl 12); +end; + +function f32tov16(n: cint32): v16; inline; +begin + f32tov16 := v16(n); +end; +function v16toint(n: v16): cint; inline; +begin + v16toint := cint((n) shr 12); +end; +function floattov16(n: cfloat): v16; inline; +begin + floattov16 := v16(trunc(n * (1 shl 12))); +end; -{$endif NDS_INTERFACE} +function VERTEX_PACK(x,y: cint): cint; inline; +begin + VERTEX_PACK := (x and $FFFF) or (y shl 16); +end; +function inttov10(n: cint): cint; inline; +begin + inttov10 := ((n) shl 9); +end; + +function f32tov10(n: cint32): cint; inline; +begin + f32tov10 := (n shr 3); +end; + +function v10toint(n: v10): cint; inline; +begin + v10toint := cint((n) shr 9); +end; + +function floattov10(n: cfloat): v10; inline; +begin + if n > 0.998 then + floattov10 := v10($1FF) + else + floattov10 := trunc(n * (1 shl 9)); +end; + +function NORMAL_PACK(x,y,z: cint): cint; inline; +begin + NORMAL_PACK := ((x and $3FF) or ((y and $3FF) shl 10) or (z shl 20)); +end; -{$ifdef NDS_IMPLEMENTATION} //--------------------------------------------------------------------------------- //Fifo commands //--------------------------------------------------------------------------------- -function FIFO_COMMAND_PACK(c1,c2,c3,c4: cint): cint; inline; +function FIFO_COMMAND_PACK(c1,c2,c3,c4: cint): cint; inline; begin FIFO_COMMAND_PACK := (((c4) shl 24) or ((c3) shl 16) or ((c2) shl 8) or (c1)); end; -function REG2ID(r: pcuint32): cuint8; inline; +function REG2ID(r: pcuint32): cuint8; inline; begin REG2ID := cuint8((cuint32(r) - $04000400) shr 2); end; @@ -435,7 +542,6 @@ begin FIFO_COLOR := REG2ID(GFX_COLOR); end; - function FIFO_VERTEX16(): cuint8; inline; begin FIFO_VERTEX16 := REG2ID(GFX_VERTEX16); @@ -448,7 +554,7 @@ end; function FIFO_TEX_FORMAT(): cuint8; inline; begin - FIFO_TEX_FORMAT := REG2ID(GFX_TEX_FORMAT); + FIFO_TEX_FORMAT := REG2ID(GFX_TEX_FORMAT); end; function FIFO_PAL_FORMAT(): cuint8; inline; @@ -456,7 +562,6 @@ begin FIFO_PAL_FORMAT := REG2ID(GFX_PAL_FORMAT); end; - function FIFO_CLEAR_COLOR(): cuint8; inline; begin FIFO_CLEAR_COLOR := REG2ID(GFX_CLEAR_COLOR); @@ -467,7 +572,6 @@ begin FIFO_CLEAR_DEPTH := REG2ID(pcuint32(GFX_CLEAR_DEPTH)); end; - function FIFO_LIGHT_VECTOR(): cuint8; inline; begin FIFO_LIGHT_VECTOR := REG2ID(GFX_LIGHT_VECTOR); @@ -498,13 +602,11 @@ begin FIFO_SHININESS := REG2ID(GFX_SHININESS); end; - function FIFO_POLY_FORMAT(): cuint8; inline; begin FIFO_POLY_FORMAT := REG2ID(GFX_POLY_FORMAT); end; - function FIFO_BEGIN(): cuint8; inline; begin FIFO_BEGIN := REG2ID(GFX_BEGIN); @@ -531,7 +633,7 @@ end; { $define FIFO_VERTEX16 := REG2ID(GFX_VERTEX16)} { $define FIFO_TEX_COORD := REG2ID(GFX_TEX_COORD)} -{ $define FIFO_TEX_FORMAT := REG2ID(GFX_TEX_FORMAT)} +{ $define FIFO_TEX_FORMAT := REG2ID(GFX_TEX_FORMAT)} { $define FIFO_PAL_FORMAT := REG2ID(GFX_PAL_FORMAT)} { $define FIFO_CLEAR_COLOR := REG2ID(GFX_CLEAR_COLOR)} @@ -547,36 +649,10 @@ end; { $define FIFO_POLY_FORMAT := REG2ID(GFX_POLY_FORMAT)} -{ $define FIFO_BEGIN := REG2ID(GFX_BEGIN)} +{ $define FIFO_BEGIN := REG2ID(GFX_BEGIN)} { $define FIFO_END := REG2ID(GFX_END)} { $define FIFO_FLUSH := REG2ID(GFX_FLUSH)} { $define FIFO_VIEWPORT := REG2ID(GFX_VIEWPORT)} -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} - - -//--------------------------------------------------------------------------------- -//float wrappers for porting -//--------------------------------------------------------------------------------- - -procedure glRotatef32i(angle: cint; x, y, z: cint32); cdecl; external; -function glTexImage2D(target, empty1: cint; _type: GL_TEXTURE_TYPE_ENUM; sizeX, sizeY, empty2, param: cint; texture: pcuint8): cint; cdecl; external; -procedure glTexLoadPal(const pal: pcuint16; count: cuint16; addr: cuint32); cdecl; external; -function gluTexLoadPal(const pal: pcuint16; count: cuint16; format: cuint8): cint; cdecl; external; -procedure glTexParameter(sizeX, sizeY: cuint8; const addr: pcuint32; mode: GL_TEXTURE_TYPE_ENUM; param: cuint32); cdecl; external; -function glGetTexParameter(): cuint32; cdecl; external; -function glGetTexturePointer(name: cint): pointer; cdecl; external; -procedure glBindTexture(target, name: cint); cdecl; external; -procedure glColorTable(format: cuint8; addr: cuint32); cdecl; external; -function glGenTextures(n: cint; names: pcint): cint; cdecl; external; -procedure glResetTextures(); cdecl; external; -procedure glTexCoord2f32(u, v: cint32); cdecl; external; -procedure glMaterialf(mode: GL_MATERIALS_ENUM; color: rgb); cdecl; external; -procedure glInit_C(); cdecl; external; -function glGetGlobals(): PGLHiddenGlobals; cdecl; external; -{$endif NDS_INTERFACE} - @@ -598,8 +674,7 @@ function glGetGlobals(): PGLHiddenGlobals; cdecl; external; ////////////////////////////////////////////////////////////////////////////////////////// -{$ifdef NDS_IMPLEMENTATION} -function POLY_ALPHA(n: cint): cuint32; inline; +function POLY_ALPHA(n: cint): cuint32; inline; begin POLY_ALPHA := cuint32((n) shl 16); end; @@ -610,8 +685,8 @@ begin end; procedure glBegin(mode: GL_GLBEGIN_ENUM); inline; -begin - GFX_BEGIN^ := mode; +begin + GFX_BEGIN^ := mode; end; procedure glEnd(); inline; @@ -620,82 +695,82 @@ begin end; procedure glClearDepth(depth: fixed12d3); inline; -begin - GFX_CLEAR_DEPTH^ := depth; +begin + GFX_CLEAR_DEPTH^ := depth; end; procedure glColor3b(red, green, blue: cuint8); inline; -begin - GFX_COLOR^ := cuint32(RGB15(red shr 3, green shr 3, blue shr 3)); +begin + GFX_COLOR^ := cuint32(RGB15(red shr 3, green shr 3, blue shr 3)); end; procedure glColor(color: rgb); inline; -begin - GFX_COLOR^ := cuint32(color); +begin + GFX_COLOR^ := cuint32(color); end; procedure glVertex3v16(x, y, z: v16); inline; -begin +begin GFX_VERTEX16^ := cuint32((y shl 16) or (x and $FFFF)); GFX_VERTEX16^ := cuint32(cuint16(z)); end; procedure glTexCoord2t16(u, v: t16); inline; -begin - GFX_TEX_COORD^ := TEXTURE_PACK(u, v); +begin + GFX_TEX_COORD^ := TEXTURE_PACK(u, v); end; procedure glPushMatrix(); inline; -begin - MATRIX_PUSH^ := 0; +begin + MATRIX_PUSH^ := 0; end; -procedure glPopMatrix(num: cint32); inline; -begin - MATRIX_POP^ := num; +procedure glPopMatrix(num: cint32); inline; +begin + MATRIX_POP^ := num; end; -procedure glRestoreMatrix(index: cint32); inline; -begin - MATRIX_RESTORE^ := index; +procedure glRestoreMatrix(index: cint32); inline; +begin + MATRIX_RESTORE^ := index; end; -procedure glStoreMatrix(index: cint32); inline; -begin - MATRIX_STORE^ := index; +procedure glStoreMatrix(index: cint32); inline; +begin + MATRIX_STORE^ := index; end; -procedure glScalev(const v: PGLvector); inline; -begin +procedure glScalev(const v: PGLvector); inline; +begin MATRIX_SCALE^ := v^.x; MATRIX_SCALE^ := v^.y; MATRIX_SCALE^ := v^.z; end; -procedure glTranslatev(const v: PGLvector) ; inline; -begin +procedure glTranslatev(const v: PGLvector) ; inline; +begin MATRIX_TRANSLATE^ := v^.x; MATRIX_TRANSLATE^ := v^.y; MATRIX_TRANSLATE^ := v^.z; end; -procedure glTranslate3f32(x, y, z: cint32); inline; -begin +procedure glTranslate3f32(x, y, z: cint32); inline; +begin MATRIX_TRANSLATE^ := x; MATRIX_TRANSLATE^ := y; MATRIX_TRANSLATE^ := z; end; -procedure glScalef32(factor: cint32); inline; -begin +procedure glScalef32(factor: cint32); inline; +begin MATRIX_SCALE^ := factor; MATRIX_SCALE^ := factor; MATRIX_SCALE^ := factor; end; -procedure glLight(id: cint; color: rgb; x, y, z: v10); inline; -begin +procedure glLight(id: cint; color: rgb; x, y, z: v10); inline; +begin id := (id and 3) shl 30; GFX_LIGHT_VECTOR^ := id or ((z and $3FF) shl 20) or ((y and $3FF) shl 10) or (x and $3FF); GFX_LIGHT_COLOR^ := id or color; @@ -703,7 +778,7 @@ end; procedure glNormal(normal: cuint32); inline; begin - GFX_NORMAL^ := normal; + GFX_NORMAL^ := normal; end; procedure glLoadIdentity(); inline; @@ -711,65 +786,59 @@ begin MATRIX_IDENTITY^ := 0; end; -procedure glIdentity(); inline; -begin - MATRIX_IDENTITY^ := 0; -end; - procedure glMatrixMode(mode: GL_MATRIX_MODE_ENUM); inline; begin - MATRIX_CONTROL^ := mode; + MATRIX_CONTROL^ := mode; end; procedure glViewport(x1, y1, x2, y2: cuint8); inline; begin - GFX_VIEWPORT^ := (x1) + (y1 shl 8) + (x2 shl 16) + (y2 shl 24); + GFX_VIEWPORT^ := (x1) + (y1 shl 8) + (x2 shl 16) + (y2 shl 24); end; procedure glFlush(mode: cuint32); inline; begin - GFX_FLUSH^ := mode; + GFX_FLUSH^ := mode; end; procedure glMaterialShinyness(); inline; var - shiny32: array [0..31] of cuint32; - shiny8: pcuint8; - i: integer; + shiny32: array [0..31] of cuint32; + shiny8: pcuint8; + i: integer; begin - shiny8 := pcuint8(@shiny32); + shiny8 := pcuint8(@shiny32); i := 0; while i < (128 * 2) do begin - shiny8[i shr 1] := i; - inc(i, 2); - end; + shiny8[i shr 1] := i; + inc(i, 2); + end; - for i := 0 to 31 do - GFX_SHININESS[i] := shiny32[i]; + for i := 0 to 31 do + GFX_SHININESS[i] := shiny32[i]; end; - procedure glCallList(list: pcuint32); inline; var count: cuint32; begin - count := list^; - inc(list); + count := list^; + inc(list); DC_FlushRange(list, count*4); - while ( ((DMA_CR(0)^ and DMA_BUSY) <> 0) or - ((DMA_CR(1)^ and DMA_BUSY) <> 0) or - ((DMA_CR(2)^ and DMA_BUSY) <> 0) or - ((DMA_CR(3)^ and DMA_BUSY) <> 0)) do; + while ( ((DMA_CR(0)^ and DMA_BUSY) <> 0) or + ((DMA_CR(1)^ and DMA_BUSY) <> 0) or + ((DMA_CR(2)^ and DMA_BUSY) <> 0) or + ((DMA_CR(3)^ and DMA_BUSY) <> 0)) do; - DMA_SRC(0)^ := cuint32(list); - DMA_DEST(0)^ := $4000400; - DMA_CR(0)^ := DMA_FIFO or count; - while (DMA_CR(0)^ and DMA_BUSY) <> 0 do; + DMA_SRC(0)^ := cuint32(list); + DMA_DEST(0)^ := $4000400; + DMA_CR(0)^ := DMA_FIFO or count; + while (DMA_CR(0)^ and DMA_BUSY) <> 0 do; end; -procedure glPolyFmt(params: cuint32); inline; +procedure glPolyFmt(params: cuint32); inline; begin GFX_POLY_FORMAT^ := params; end; @@ -787,257 +856,232 @@ end; procedure glLoadMatrix4x4(const m: pm4x4); inline; begin - MATRIX_LOAD4x4^ := m^.m[0]; - MATRIX_LOAD4x4^ := m^.m[1]; - MATRIX_LOAD4x4^ := m^.m[2]; - MATRIX_LOAD4x4^ := m^.m[3]; - - MATRIX_LOAD4x4^ := m^.m[4]; - MATRIX_LOAD4x4^ := m^.m[5]; - MATRIX_LOAD4x4^ := m^.m[6]; - MATRIX_LOAD4x4^ := m^.m[7]; - - MATRIX_LOAD4x4^ := m^.m[8]; - MATRIX_LOAD4x4^ := m^.m[9]; - MATRIX_LOAD4x4^ := m^.m[10]; - MATRIX_LOAD4x4^ := m^.m[11]; - - MATRIX_LOAD4x4^ := m^.m[12]; - MATRIX_LOAD4x4^ := m^.m[13]; - MATRIX_LOAD4x4^ := m^.m[14]; - MATRIX_LOAD4x4^ := m^.m[15]; -end; + MATRIX_LOAD4x4^ := m^.m[0]; + MATRIX_LOAD4x4^ := m^.m[1]; + MATRIX_LOAD4x4^ := m^.m[2]; + MATRIX_LOAD4x4^ := m^.m[3]; + MATRIX_LOAD4x4^ := m^.m[4]; + MATRIX_LOAD4x4^ := m^.m[5]; + MATRIX_LOAD4x4^ := m^.m[6]; + MATRIX_LOAD4x4^ := m^.m[7]; + + MATRIX_LOAD4x4^ := m^.m[8]; + MATRIX_LOAD4x4^ := m^.m[9]; + MATRIX_LOAD4x4^ := m^.m[10]; + MATRIX_LOAD4x4^ := m^.m[11]; + + MATRIX_LOAD4x4^ := m^.m[12]; + MATRIX_LOAD4x4^ := m^.m[13]; + MATRIX_LOAD4x4^ := m^.m[14]; + MATRIX_LOAD4x4^ := m^.m[15]; +end; procedure glLoadMatrix4x3(const m: pm4x3); inline; begin - MATRIX_LOAD4x3^ := m^.m[0]; - MATRIX_LOAD4x3^ := m^.m[1]; - MATRIX_LOAD4x3^ := m^.m[2]; - MATRIX_LOAD4x3^ := m^.m[3]; - - MATRIX_LOAD4x3^ := m^.m[4]; - MATRIX_LOAD4x3^ := m^.m[5]; - MATRIX_LOAD4x3^ := m^.m[6]; - MATRIX_LOAD4x3^ := m^.m[7]; - - MATRIX_LOAD4x3^ := m^.m[8]; - MATRIX_LOAD4x3^ := m^.m[9]; - MATRIX_LOAD4x3^ := m^.m[10]; - MATRIX_LOAD4x3^ := m^.m[11]; -end; + MATRIX_LOAD4x3^ := m^.m[0]; + MATRIX_LOAD4x3^ := m^.m[1]; + MATRIX_LOAD4x3^ := m^.m[2]; + MATRIX_LOAD4x3^ := m^.m[3]; + MATRIX_LOAD4x3^ := m^.m[4]; + MATRIX_LOAD4x3^ := m^.m[5]; + MATRIX_LOAD4x3^ := m^.m[6]; + MATRIX_LOAD4x3^ := m^.m[7]; + + MATRIX_LOAD4x3^ := m^.m[8]; + MATRIX_LOAD4x3^ := m^.m[9]; + MATRIX_LOAD4x3^ := m^.m[10]; + MATRIX_LOAD4x3^ := m^.m[11]; +end; procedure glMultMatrix4x4(const m: pm4x4); inline; begin - MATRIX_MULT4x4^ := m^.m[0]; - MATRIX_MULT4x4^ := m^.m[1]; - MATRIX_MULT4x4^ := m^.m[2]; - MATRIX_MULT4x4^ := m^.m[3]; - - MATRIX_MULT4x4^ := m^.m[4]; - MATRIX_MULT4x4^ := m^.m[5]; - MATRIX_MULT4x4^ := m^.m[6]; - MATRIX_MULT4x4^ := m^.m[7]; - - MATRIX_MULT4x4^ := m^.m[8]; - MATRIX_MULT4x4^ := m^.m[9]; - MATRIX_MULT4x4^ := m^.m[10]; - MATRIX_MULT4x4^ := m^.m[11]; - - MATRIX_MULT4x4^ := m^.m[12]; - MATRIX_MULT4x4^ := m^.m[13]; - MATRIX_MULT4x4^ := m^.m[14]; - MATRIX_MULT4x4^ := m^.m[15]; + MATRIX_MULT4x4^ := m^.m[0]; + MATRIX_MULT4x4^ := m^.m[1]; + MATRIX_MULT4x4^ := m^.m[2]; + MATRIX_MULT4x4^ := m^.m[3]; + + MATRIX_MULT4x4^ := m^.m[4]; + MATRIX_MULT4x4^ := m^.m[5]; + MATRIX_MULT4x4^ := m^.m[6]; + MATRIX_MULT4x4^ := m^.m[7]; + + MATRIX_MULT4x4^ := m^.m[8]; + MATRIX_MULT4x4^ := m^.m[9]; + MATRIX_MULT4x4^ := m^.m[10]; + MATRIX_MULT4x4^ := m^.m[11]; + + MATRIX_MULT4x4^ := m^.m[12]; + MATRIX_MULT4x4^ := m^.m[13]; + MATRIX_MULT4x4^ := m^.m[14]; + MATRIX_MULT4x4^ := m^.m[15]; end; procedure glMultMatrix4x3(const m: pm4x3); inline; begin - MATRIX_MULT4x3^ := m^.m[0]; - MATRIX_MULT4x3^ := m^.m[1]; - MATRIX_MULT4x3^ := m^.m[2]; - MATRIX_MULT4x3^ := m^.m[3]; - - MATRIX_MULT4x3^ := m^.m[4]; - MATRIX_MULT4x3^ := m^.m[5]; - MATRIX_MULT4x3^ := m^.m[6]; - MATRIX_MULT4x3^ := m^.m[7]; - - MATRIX_MULT4x3^ := m^.m[8]; - MATRIX_MULT4x3^ := m^.m[9]; - MATRIX_MULT4x3^ := m^.m[10]; - MATRIX_MULT4x3^ := m^.m[11]; + MATRIX_MULT4x3^ := m^.m[0]; + MATRIX_MULT4x3^ := m^.m[1]; + MATRIX_MULT4x3^ := m^.m[2]; + MATRIX_MULT4x3^ := m^.m[3]; + + MATRIX_MULT4x3^ := m^.m[4]; + MATRIX_MULT4x3^ := m^.m[5]; + MATRIX_MULT4x3^ := m^.m[6]; + MATRIX_MULT4x3^ := m^.m[7]; + + MATRIX_MULT4x3^ := m^.m[8]; + MATRIX_MULT4x3^ := m^.m[9]; + MATRIX_MULT4x3^ := m^.m[10]; + MATRIX_MULT4x3^ := m^.m[11]; end; procedure glMultMatrix3x3(const m: pm3x3); inline; begin - MATRIX_MULT3x3^ := m^.m[0]; - MATRIX_MULT3x3^ := m^.m[1]; - MATRIX_MULT3x3^ := m^.m[2]; - - MATRIX_MULT3x3^ := m^.m[3]; - MATRIX_MULT3x3^ := m^.m[4]; - MATRIX_MULT3x3^ := m^.m[5]; - - MATRIX_MULT3x3^ := m^.m[6]; - MATRIX_MULT3x3^ := m^.m[7]; - MATRIX_MULT3x3^ := m^.m[8]; + MATRIX_MULT3x3^ := m^.m[0]; + MATRIX_MULT3x3^ := m^.m[1]; + MATRIX_MULT3x3^ := m^.m[2]; + + MATRIX_MULT3x3^ := m^.m[3]; + MATRIX_MULT3x3^ := m^.m[4]; + MATRIX_MULT3x3^ := m^.m[5]; + + MATRIX_MULT3x3^ := m^.m[6]; + MATRIX_MULT3x3^ := m^.m[7]; + MATRIX_MULT3x3^ := m^.m[8]; end; procedure glRotateXi(angle: cint); inline; var sine, cosine: cint32; begin - sine := _SIN[angle and LUT_MASK]; - cosine := _COS[angle and LUT_MASK]; - - MATRIX_MULT3x3^ := inttof32(1); - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := 0; - - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := cosine; - MATRIX_MULT3x3^ := sine; - - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := -sine; - MATRIX_MULT3x3^ := cosine; + sine := sinLerp(angle); + cosine := cosLerp(angle); + + MATRIX_MULT3x3^ := inttof32(1); + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := 0; + + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := cosine; + MATRIX_MULT3x3^ := sine; + + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := -sine; + MATRIX_MULT3x3^ := cosine; end; procedure glRotateYi(angle: cint); inline; var sine, cosine: cint32; begin - sine := _SIN[angle and LUT_MASK]; - cosine := _COS[angle and LUT_MASK]; - - MATRIX_MULT3x3^ := cosine; - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := -sine; - - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := inttof32(1); - MATRIX_MULT3x3^ := 0; - - MATRIX_MULT3x3^ := sine; - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := cosine; + sine := sinLerp(angle); + cosine := cosLerp(angle); + + MATRIX_MULT3x3^ := cosine; + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := -sine; + + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := inttof32(1); + MATRIX_MULT3x3^ := 0; + + MATRIX_MULT3x3^ := sine; + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := cosine; end; procedure glRotateZi(angle: cint); inline; var sine, cosine: cint32; begin - sine := _SIN[angle and LUT_MASK]; - cosine := _COS[angle and LUT_MASK]; - - MATRIX_MULT3x3^ := cosine; - MATRIX_MULT3x3^ := sine; - MATRIX_MULT3x3^ := 0; - - MATRIX_MULT3x3^ := -sine; - MATRIX_MULT3x3^ := cosine; - MATRIX_MULT3x3^ := 0; - - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := 0; - MATRIX_MULT3x3^ := inttof32(1); + sine := sinLerp(angle); + cosine := cosLerp(angle); + + MATRIX_MULT3x3^ := cosine; + MATRIX_MULT3x3^ := sine; + MATRIX_MULT3x3^ := 0; + + MATRIX_MULT3x3^ := -sine; + MATRIX_MULT3x3^ := cosine; + MATRIX_MULT3x3^ := 0; + + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := 0; + MATRIX_MULT3x3^ := inttof32(1); end; procedure glOrthof32(left, right, bottom, top, zNear, zFar: cint32); inline; begin - MATRIX_MULT4x4^ := divf32(inttof32(2), right - left); - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := divf32(inttof32(2), top - bottom); - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := divf32(inttof32(2), right - left); + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := divf32(inttof32(-2), zFar - zNear); - MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := divf32(inttof32(2), top - bottom); + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := -divf32(right + left, right - left);//0; - MATRIX_MULT4x4^ := -divf32(top + bottom, top - bottom); //0; - MATRIX_MULT4x4^ := -divf32(zFar + zNear, zFar - zNear);//0; - MATRIX_MULT4x4^ := floattof32(1.0); + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := divf32(inttof32(-2), zFar - zNear); + MATRIX_MULT4x4^ := 0; - //glStoreMatrix(0); + MATRIX_MULT4x4^ := -divf32(right + left, right - left); + MATRIX_MULT4x4^ := -divf32(top + bottom, top - bottom); + MATRIX_MULT4x4^ := -divf32(zFar + zNear, zFar - zNear); + MATRIX_MULT4x4^ := floattof32(1.0); end; procedure gluLookAtf32(eyex, eyey, eyez, lookAtx, lookAty, lookAtz, upx, upy, upz: cint32); inline; var side, forwrd, up, eye: array [0..2] of cint32; begin - - forwrd[0] := eyex - lookAtx; - forwrd[1] := eyey - lookAty; - forwrd[2] := eyez - lookAtz; - - normalizef32(@forwrd); - - up[0] := upx; - up[1] := upy; - up[2] := upz; - eye[0] := eyex; - eye[1] := eyey; - eye[2] := eyez; - - crossf32(@up, @forwrd, @side); - - normalizef32(@side); - - // Recompute local up - crossf32(@forwrd, @side, @up); - - glMatrixMode(GL_MODELVIEW); - - - // should we use MATRIX_MULT4x3? - MATRIX_MULT4x3^ := side[0]; - MATRIX_MULT4x3^ := up[0]; - MATRIX_MULT4x3^ := forwrd[0]; - - MATRIX_MULT4x3^ := side[1]; - MATRIX_MULT4x3^ := up[1]; - MATRIX_MULT4x3^ := forwrd[1]; - - MATRIX_MULT4x3^ := side[2]; - MATRIX_MULT4x3^ := up[2]; - MATRIX_MULT4x3^ := forwrd[2]; - - MATRIX_MULT4x3^ := -dotf32(@eye,@side); - MATRIX_MULT4x3^ := -dotf32(@eye,@up); - MATRIX_MULT4x3^ := -dotf32(@eye,@forwrd); + + forwrd[0] := eyex - lookAtx; + forwrd[1] := eyey - lookAty; + forwrd[2] := eyez - lookAtz; + + normalizef32(@forwrd); + + up[0] := upx; + up[1] := upy; + up[2] := upz; + eye[0] := eyex; + eye[1] := eyey; + eye[2] := eyez; + + crossf32(@up, @forwrd, @side); + + normalizef32(@side); + + // Recompute local up + crossf32(@forwrd, @side, @up); + + glMatrixMode(GL_MODELVIEW); + + + // should we use MATRIX_MULT4x3? + MATRIX_MULT4x3^ := side[0]; + MATRIX_MULT4x3^ := up[0]; + MATRIX_MULT4x3^ := forwrd[0]; + + MATRIX_MULT4x3^ := side[1]; + MATRIX_MULT4x3^ := up[1]; + MATRIX_MULT4x3^ := forwrd[1]; + + MATRIX_MULT4x3^ := side[2]; + MATRIX_MULT4x3^ := up[2]; + MATRIX_MULT4x3^ := forwrd[2]; + + MATRIX_MULT4x3^ := -dotf32(@eye,@side); + MATRIX_MULT4x3^ := -dotf32(@eye,@up); + MATRIX_MULT4x3^ := -dotf32(@eye,@forwrd); end; procedure glFrustumf32(left, right, bottom, top, zNear, zFar: cint32); inline; begin -(* - MATRIX_MULT4x4^ := divf32(2*znear, right - left); - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := divf32(right + left, right - left); - MATRIX_MULT4x4^ := 0; - - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := divf32(2*znear, top - bottom); - MATRIX_MULT4x4^ := divf32(top + bottom, top - bottom); - MATRIX_MULT4x4^ := 0; - - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := -divf32(zfar + znear, zfar - znear); - MATRIX_MULT4x4^ := floattof32(-1.0); - - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := -divf32(2 * mulf32(zfar, znear), zfar - znear); - MATRIX_MULT4x4^ := 0; -*) MATRIX_MULT4x4^ := divf32(2*znear, right - left); MATRIX_MULT4x4^ := 0; MATRIX_MULT4x4^ := 0; @@ -1063,83 +1107,73 @@ procedure gluPerspectivef32(fovy: cint; aspect, zNear, zFar: cint32); inline; var xmin, xmax, ymin, ymax: cint32; begin - ymax := mulf32(zNear, TAN_bin[(fovy shr 1) and LUT_MASK]); - ymin := -ymax; - xmin := mulf32(ymin, aspect); - xmax := mulf32(ymax, aspect); - - glFrustumf32(xmin, xmax, ymin, ymax, zNear, zFar); + ymax := mulf32(zNear, tanLerp(fovy shr 1)); + ymin := -ymax; + xmin := mulf32(ymin, aspect); + xmax := mulf32(ymax, aspect); + + glFrustumf32(xmin, xmax, ymin, ymax, zNear, zFar); end; procedure glTexCoord2f(s, t: cfloat); inline; var x, y: cint; begin - x := ((glGlob^.textures[glGlob^.activeTexture]) shr 20) and 7; - y := ((glGlob^.textures[glGlob^.activeTexture]) shr 23) and 7; - - glTexCoord2t16(floattot16(s*(8 shl x)), floattot16(t*(8 shl y))); -end; - -{$endif NDS_IMPLEMENTATION} - - -{$ifdef NDS_INTERFACE} -type - TArr4ofInt = array [0..3] of cint32; -{$endif NDS_INTERFACE} + x := ((glGlob^.textures[glGlob^.activeTexture]) shr 20) and 7; + y := ((glGlob^.textures[glGlob^.activeTexture]) shr 23) and 7; + glTexCoord2t16(floattot16(s*(8 shl x)), floattot16(t*(8 shl y))); +end; -{$ifdef NDS_IMPLEMENTATION} procedure gluPickMatrix(x, y, width, height: cint32; const viewport: TArr4ofInt); inline; begin - MATRIX_MULT4x4^ := inttof32(viewport[2]) div width; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := inttof32(viewport[2]) div width; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := inttof32(viewport[3]) div height; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := inttof32(viewport[3]) div height; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := inttof32(1); - MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := inttof32(1); + MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := inttof32(viewport[2] + ((viewport[0] - x) shl 1)) div width; - MATRIX_MULT4x4^ := inttof32(viewport[3] + ((viewport[1] - y) shl 1)) div height; - MATRIX_MULT4x4^ := 0; - MATRIX_MULT4x4^ := inttof32(1); + MATRIX_MULT4x4^ := inttof32(viewport[2] + ((viewport[0] - x) shl 1)) div width; + MATRIX_MULT4x4^ := inttof32(viewport[3] + ((viewport[1] - y) shl 1)) div height; + MATRIX_MULT4x4^ := 0; + MATRIX_MULT4x4^ := inttof32(1); end; procedure glResetMatrixStack(); inline; begin - // make sure there are no push/pops that haven't executed yet - while (GFX_STATUS^ and (1 shl 14)) <> 0 do - begin - GFX_STATUS^ := GFX_STATUS^ or (1 shl 15); // clear push/pop errors or push/pop busy bit never clears - end; - - // pop the projection stack to the top; poping 0 off an empty stack causes an error... weird? - if (GFX_STATUS^ and (1 shl 13)) <> 0 then - begin - glMatrixMode(GL_PROJECTION); - glPopMatrix(1); - end; - - // 31 deep modelview matrix; 32nd entry works but sets error flag - glMatrixMode(GL_MODELVIEW); - glPopMatrix((GFX_STATUS^ shr 8) and $1F); - - // load identity to all the matrices - glMatrixMode(GL_MODELVIEW); - glLoadIdentity(); - glMatrixMode(GL_PROJECTION); - glLoadIdentity(); - glMatrixMode(GL_TEXTURE); - glLoadIdentity(); + // make sure there are no push/pops that haven't executed yet + while (GFX_STATUS^ and (1 shl 14)) <> 0 do + begin + GFX_STATUS^ := GFX_STATUS^ or (1 shl 15); // clear push/pop errors or push/pop busy bit never clears + end; + + // pop the projection stack to the top; poping 0 off an empty stack causes an error... weird? + if (GFX_STATUS^ and (1 shl 13)) <> 0 then + begin + glMatrixMode(GL_PROJECTION); + glPopMatrix(1); + end; + + // 31 deep modelview matrix; 32nd entry works but sets error flag + glMatrixMode(GL_MODELVIEW); + glPopMatrix((GFX_STATUS^ shr 8) and $1F); + + // load identity to all the matrices + glMatrixMode(GL_MODELVIEW); + glLoadIdentity(); + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); end; procedure glSetOutlineColor(id: cint; color: rgb); inline; @@ -1151,56 +1185,56 @@ procedure glSetToonTable(const table: pcuint16); inline; var i: integer; begin - for i := 0 to 31 do - GFX_TOON_TABLE[i] := table[i]; + for i := 0 to 31 do + GFX_TOON_TABLE[i] := table[i]; end; procedure glSetToonTableRange(_start, _end: cint; color: rgb); inline; var i: integer; begin - for i := _start to _end do - GFX_TOON_TABLE[i] := cuint16(color); + for i := _start to _end do + GFX_TOON_TABLE[i] := cuint16(color); end; procedure glGetFixed(const param: GL_GET_ENUM; f: pcint32); inline; var i: integer; begin - case param of - GL_GET_MATRIX_VECTOR: - begin - while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes - for i := 0 to 8 do - f[i] := MATRIX_READ_VECTOR[i]; - end; - GL_GET_MATRIX_CLIP: - begin - while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes - for i := 0 to 15 do - f[i] := MATRIX_READ_CLIP[i]; - end; - GL_GET_MATRIX_PROJECTION: - begin - glMatrixMode(GL_POSITION); - glPushMatrix(); // save the current state of the position matrix - glLoadIdentity(); // load an identity matrix into the position matrix so that the modelview matrix = projection matrix - while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes - for i := 0 to 15 do - f[i] := MATRIX_READ_CLIP[i]; // read out the projection matrix - glPopMatrix(1); // restore the position matrix - end; - GL_GET_MATRIX_POSITION: - begin - glMatrixMode(GL_PROJECTION); - glPushMatrix(); // save the current state of the projection matrix - glLoadIdentity(); // load a identity matrix into the projection matrix so that the modelview matrix = position matrix - while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes - for i := 0 to 15 do - f[i] := MATRIX_READ_CLIP[i]; // read out the position matrix - glPopMatrix(1); // restore the projection matrix - end; - end; + case param of + GL_GET_MATRIX_VECTOR: + begin + while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes + for i := 0 to 8 do + f[i] := MATRIX_READ_VECTOR[i]; + end; + GL_GET_MATRIX_CLIP: + begin + while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes + for i := 0 to 15 do + f[i] := MATRIX_READ_CLIP[i]; + end; + GL_GET_MATRIX_PROJECTION: + begin + glMatrixMode(GL_POSITION); + glPushMatrix(); // save the current state of the position matrix + glLoadIdentity(); // load an identity matrix into the position matrix so that the modelview matrix = projection matrix + while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes + for i := 0 to 15 do + f[i] := MATRIX_READ_CLIP[i]; // read out the projection matrix + glPopMatrix(1); // restore the position matrix + end; + GL_GET_MATRIX_POSITION: + begin + glMatrixMode(GL_PROJECTION); + glPushMatrix(); // save the current state of the projection matrix + glLoadIdentity(); // load a identity matrix into the projection matrix so that the modelview matrix = position matrix + while (GFX_BUSY) do; // wait until the graphics engine has stopped to read matrixes + for i := 0 to 15 do + f[i] := MATRIX_READ_CLIP[i]; // read out the position matrix + glPopMatrix(1); // restore the projection matrix + end; + end; end; procedure glAlphaFunc(alphaThreshold: cint); inline; @@ -1215,33 +1249,32 @@ end; procedure glInit(); inline; begin - glGlob := glGetGlobals(); // make sure globals are synced between compilation units - glInit_C(); // actually does the initialization + glInit_C(); // actually does the initialization end; procedure glClearColor(red, green, blue, alpha: cuint8); inline; begin - GFX_CLEAR_COLOR^ := (glGlob^.clearColor and $FFE08000) or ($7FFF and RGB15(red, green, blue)) or ((alpha and $1F) shl 16); - glGlob^.clearColor := GFX_CLEAR_COLOR^; + glGlob^.clearColor := (glGlob^.clearColor and $FFE08000) or ($7FFF and RGB15(red, green, blue)) or ((alpha and $1F) shl 16); + GFX_CLEAR_COLOR^ := glGlob^.clearColor; end; procedure glClearPolyID(ID: cuint8); inline; begin - GFX_CLEAR_COLOR^ := ( glGlob^.clearColor and $C0FFFFFF) or (( ID and $3F ) shl 24 ); - glGlob^.clearColor := GFX_CLEAR_COLOR^; + glGlob^.clearColor := ( glGlob^.clearColor and $C0FFFFFF) or (( ID and $3F ) shl 24 ); + GFX_CLEAR_COLOR^ := glGlob^.clearColor; end; -procedure glGetInt(param: GL_GET_ENUM; var i: cint); inline; +procedure glGetInt(param: GL_GET_ENUM; var i: cint); inline; begin case param of - GL_GET_POLYGON_RAM_COUNT: - i := GFX_POLYGON_RAM_USAGE^; - GL_GET_VERTEX_RAM_COUNT: - i := GFX_VERTEX_RAM_USAGE^; + GL_GET_POLYGON_RAM_COUNT: + i := GFX_POLYGON_RAM_USAGE^; + GL_GET_VERTEX_RAM_COUNT: + i := GFX_VERTEX_RAM_USAGE^; GL_GET_TEXTURE_WIDTH: - i := 8 shl (((glGlob^.textures[glGlob^.activeTexture]) shr 20) and 7); + i := 8 shl (((glGlob^.textures[glGlob^.activeTexture]) shr 20) and 7); GL_GET_TEXTURE_HEIGHT: - i := 8 shl (((glGlob^.textures[glGlob^.activeTexture]) shr 23) and 7); + i := 8 shl (((glGlob^.textures[glGlob^.activeTexture]) shr 23) and 7); end; end; @@ -1250,191 +1283,77 @@ end; procedure glVertex3f(x, y, z: cfloat); inline; begin - glVertex3v16(floattov16(x), floattov16(y), floattov16(z)); + glVertex3v16(floattov16(x), floattov16(y), floattov16(z)); end; procedure glRotatef32(angle: cfloat; x, y, z: cint32); inline; begin - glRotatef32i(trunc(angle * LUT_SIZE / 360.0), x, y, z); + glRotatef32i(trunc(angle * DEGREES_IN_CIRCLE / 360.0), x, y, z); end; procedure glRotatef(angle, x, y, z: cfloat); inline; begin - glRotatef32(angle, floattof32(x), floattof32(y), floattof32(z)); + glRotatef32(angle, floattof32(x), floattof32(y), floattof32(z)); end; procedure glColor3f(r, g, b: cfloat); inline; begin - glColor3b(trunc(r*255), trunc(g*255), trunc(b*255)); + glColor3b(trunc(r*255), trunc(g*255), trunc(b*255)); end; procedure glScalef(x, y, z: cfloat); inline; begin - MATRIX_SCALE^ := floattof32(x); - MATRIX_SCALE^ := floattof32(y); - MATRIX_SCALE^ := floattof32(z); + MATRIX_SCALE^ := floattof32(x); + MATRIX_SCALE^ := floattof32(y); + MATRIX_SCALE^ := floattof32(z); end; procedure glTranslatef(x, y, z: cfloat); inline; begin - MATRIX_TRANSLATE^ := floattof32(x); - MATRIX_TRANSLATE^ := floattof32(y); - MATRIX_TRANSLATE^ := floattof32(z); + MATRIX_TRANSLATE^ := floattof32(x); + MATRIX_TRANSLATE^ := floattof32(y); + MATRIX_TRANSLATE^ := floattof32(z); end; procedure glNormal3f(x, y, z: cfloat); inline; begin - glNormal(NORMAL_PACK(floattov10(x), floattov10(y), floattov10(z))); + glNormal(NORMAL_PACK(floattov10(x), floattov10(y), floattov10(z))); end; procedure glRotateX(angle: cfloat); inline; begin - glRotateXi(trunc(angle * LUT_SIZE / 360.0)); + glRotateXi(trunc(angle * DEGREES_IN_CIRCLE / 360.0)); end; procedure glRotateY(angle: cfloat); inline; begin - glRotateYi(trunc(angle * LUT_SIZE / 360.0)); + glRotateYi(trunc(angle * DEGREES_IN_CIRCLE / 360.0)); end; procedure glRotateZ(angle: cfloat); inline; begin - glRotateZi(trunc(angle * LUT_SIZE / 360.0)); + glRotateZi(trunc(angle * DEGREES_IN_CIRCLE / 360.0)); end; procedure glOrtho(left, right, bottom, top, zNear, zFar: cfloat); inline; begin - glOrthof32(floattof32(left), floattof32(right), floattof32(bottom), floattof32(top), floattof32(zNear), floattof32(zFar)); + glOrthof32(floattof32(left), floattof32(right), floattof32(bottom), floattof32(top), floattof32(zNear), floattof32(zFar)); end; procedure gluLookAt(eyex, eyey, eyez, lookAtx, lookAty, lookAtz, upx, upy, upz: cfloat); inline; begin - gluLookAtf32(floattof32(eyex), floattof32(eyey), floattof32(eyez), - floattof32(lookAtx), floattof32(lookAty), floattof32(lookAtz), - floattof32(upx), floattof32(upy), floattof32(upz)); + gluLookAtf32(floattof32(eyex), floattof32(eyey), floattof32(eyez), + floattof32(lookAtx), floattof32(lookAty), floattof32(lookAtz), + floattof32(upx), floattof32(upy), floattof32(upz)); end; procedure glFrustum(left, right, bottom, top, znear, zfar: cfloat); inline; begin - glFrustumf32(floattof32(left), floattof32(right), floattof32(bottom), floattof32(top), floattof32(znear), floattof32(zfar)); + glFrustumf32(floattof32(left), floattof32(right), floattof32(bottom), floattof32(top), floattof32(znear), floattof32(zfar)); end; procedure gluPerspective(fovy, aspect, zNear, zFar: cfloat); inline; begin - gluPerspectivef32(trunc(fovy * LUT_SIZE / 360.0), floattof32(aspect), floattof32(zNear), floattof32(zFar)); + gluPerspectivef32(trunc(fovy * DEGREES_IN_CIRCLE / 360.0), floattof32(aspect), floattof32(zNear), floattof32(zFar)); end; {$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -function int_to_12d3(n: cint): fixed12d3; inline; -function float_to_12d3(n: cfloat): fixed12d3; inline; -function inttof32(n: cint): cint32; inline; -function f32toint(n: cint32): cint; inline; -function floattof32(n: cfloat): cint32; inline; -function f32tofloat(n: cint32): cfloat; inline; -function f32tot16(n: cint32): t16; inline; -function inttot16(n: cint): cint32; inline; //??? -function t16toint(n: t16): cint; inline; -function floattot16(n: cfloat): t16; inline; -function TEXTURE_PACK(u, v: cint): cint; inline; -function inttov16(n: cint): cint; inline; -function f32tov16(n: cint32): v16; inline; -function v16toint(n: v16): cint; inline; -function floattov16(n: cfloat): v16; inline; -function VERTEX_PACK(x,y: cint): cint; inline; -function inttov10(n: cint): cint; inline; -function f32tov10(n: cint32): cint; inline; -function v10toint(n: v10): cint; inline; -function floattov10(n: cfloat): v10; inline; -function NORMAL_PACK(x,y,z: cint): cint; inline; -function FIFO_COMMAND_PACK(c1,c2,c3,c4: cint): cint; inline; -function REG2ID(r: pcuint32): cuint8; inline; -function FIFO_NOP(): cuint8; inline; -function FIFO_STATUS(): cuint8; inline; -function FIFO_COLOR(): cuint8; inline; -function FIFO_VERTEX16(): cuint8; inline; -function FIFO_TEX_COORD(): cuint8; inline; -function FIFO_TEX_FORMAT(): cuint8; inline; -function FIFO_PAL_FORMAT(): cuint8; inline; -function FIFO_CLEAR_COLOR(): cuint8; inline; -function FIFO_CLEAR_DEPTH(): cuint8; inline; -function FIFO_LIGHT_VECTOR(): cuint8; inline; -function FIFO_LIGHT_COLOR(): cuint8; inline; -function FIFO_NORMAL(): cuint8; inline; -function FIFO_DIFFUSE_AMBIENT(): cuint8; inline; -function FIFO_SPECULAR_EMISSION(): cuint8; inline; -function FIFO_SHININESS(): cuint8; inline; -function FIFO_POLY_FORMAT(): cuint8; inline; -function FIFO_BEGIN(): cuint8; inline; -function FIFO_END(): cuint8; inline; -function FIFO_FLUSH(): cuint8; inline; -function FIFO_VIEWPORT(): cuint8; inline; -function POLY_ALPHA(n: cint): cuint32; inline; -function POLY_ID(n: cint): cuint32; inline; -procedure glBegin(mode: GL_GLBEGIN_ENUM); inline; -procedure glEnd(); inline; -procedure glClearDepth(depth: fixed12d3); inline; -procedure glColor3b(red, green, blue: cuint8); inline; -procedure glColor(color: rgb); inline; -procedure glVertex3v16(x, y, z: v16); inline; -procedure glTexCoord2t16(u, v: t16); inline; -procedure glPushMatrix(); inline; -procedure glPopMatrix(num: cint32); inline; -procedure glRestoreMatrix(index: cint32); inline; -procedure glStoreMatrix(index: cint32); inline; -procedure glScalev(const v: PGLvector); inline; -procedure glTranslatev(const v: PGLvector) ; inline; -procedure glTranslate3f32(x, y, z: cint32); inline; -procedure glScalef32(factor: cint32); inline; -procedure glLight(id: cint; color: rgb; x, y, z: v10); inline; -procedure glNormal(normal: cuint32); inline; -procedure glLoadIdentity(); inline; -procedure glIdentity(); inline; -procedure glMatrixMode(mode: GL_MATRIX_MODE_ENUM); inline; -procedure glViewport(x1, y1, x2, y2: cuint8); inline; -procedure glFlush(mode: cuint32); inline; -procedure glMaterialShinyness(); inline; -procedure glCallList(list: pcuint32); inline; -procedure glPolyFmt(params: cuint32); inline; -procedure glEnable(bits: cint); inline; -procedure glDisable(bits: cint); inline; -procedure glLoadMatrix4x4(const m: pm4x4); inline; -procedure glLoadMatrix4x3(const m: pm4x3); inline; -procedure glMultMatrix4x4(const m: pm4x4); inline; -procedure glMultMatrix4x3(const m: pm4x3); inline; -procedure glMultMatrix3x3(const m: pm3x3); inline; -procedure glRotateXi(angle: cint); inline; -procedure glRotateYi(angle: cint); inline; -procedure glRotateZi(angle: cint); inline; -procedure glOrthof32(left, right, bottom, top, zNear, zFar: cint32); inline; -procedure gluLookAtf32(eyex, eyey, eyez, lookAtx, lookAty, lookAtz, upx, upy, upz: cint32); inline; -procedure glFrustumf32(left, right, bottom, top, zNear, zFar: cint32); inline; -procedure gluPerspectivef32(fovy: cint; aspect, zNear, zFar: cint32); inline; -procedure gluPickMatrix(x, y, width, height: cint32; const viewport: TArr4ofInt); inline; -procedure glResetMatrixStack(); inline; -procedure glSetOutlineColor(id: cint; color: rgb); inline; -procedure glSetToonTable(const table: pcuint16); inline; -procedure glSetToonTableRange(_start, _end: cint; color: rgb); inline; -procedure glGetFixed(const param: GL_GET_ENUM; f: pcint32); inline; -procedure glAlphaFunc(alphaThreshold: cint); inline; -procedure glCutoffDepth(wVal: fixed12d3); inline; -procedure glInit(); inline; -procedure glClearColor(red, green, blue, alpha: cuint8); inline; -procedure glClearPolyID(ID: cuint8); inline; -procedure glGetInt(param: GL_GET_ENUM; var i: cint); inline; -procedure glVertex3f(x, y, z: cfloat); inline; -procedure glRotatef32(angle: cfloat; x, y, z: cint32); inline; -procedure glRotatef(angle, x, y, z: cfloat); inline; -procedure glColor3f(r, g, b: cfloat); inline; -procedure glScalef(x, y, z: cfloat); inline; -procedure glTranslatef(x, y, z: cfloat); inline; -procedure glNormal3f(x, y, z: cfloat); inline; -procedure glRotateX(angle: cfloat); inline; -procedure glRotateY(angle: cfloat); inline; -procedure glRotateZ(angle: cfloat); inline; -procedure glOrtho(left, right, bottom, top, zNear, zFar: cfloat); inline; -procedure gluLookAt(eyex, eyey, eyez, lookAtx, lookAty, lookAtz, upx, upy, upz: cfloat); inline; -procedure glFrustum(left, right, bottom, top, znear, zfar: cfloat); inline; -procedure gluPerspective(fovy, aspect, zNear, zFar: cfloat); inline; -procedure glTexCoord2f(s, t: cfloat); inline; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/bios.inc b/packages/libndsfpc/src/nds/bios.inc index 9796342148..975b75b76d 100644 --- a/packages/libndsfpc/src/nds/bios.inc +++ b/packages/libndsfpc/src/nds/bios.inc @@ -75,7 +75,7 @@ procedure swiWaitForVBlank(); cdecl; external; function swiDivide(numerator, divisor: cint): cint; cdecl; external; function swiRemainder(numerator, divisor: cint): cint; cdecl; external; -procedure swiDivMod(numerator, divisor: cint; result, remainder: pcint); cdecl; external; +procedure swiDivMod(numerator, divisor: cint; var result, remainder: cint); cdecl; external; const COPY_MODE_HWORD = (0); @@ -101,25 +101,23 @@ function swiDecompressHuffman(source, destination: pointer; toGetSize: cuint32; procedure swiDecompressRLEWram(source, destination: pointer); cdecl; external; function swiDecompressRLEVram(source, destination: pointer; toGetSize: cuint32; stream: PDecompressionStream): cint; cdecl; external; -{$endif NDS_INTERFACE} - -{$ifdef NDS_INTERFACE} {$ifdef ARM9} -procedure swiWaitForIRQ(); cdecl; external; -procedure swiSetHaltCR(data: cuint32); cdecl; external; -procedure swiDecodeDelta8(source, destination: pointer); cdecl; external; -procedure swiDecodeDelta16(source, destination: pointer); cdecl; external; + procedure swiWaitForIRQ(); cdecl; external; + procedure swiSetHaltCR(data: cuint32); cdecl; external; + procedure swiDecodeDelta8(source, destination: pointer); cdecl; external; + procedure swiDecodeDelta16(source, destination: pointer); cdecl; external; {$endif ARM9} {$ifdef ARM7} -procedure swiHalt(); cdecl; external; -procedure swiSleep(); cdecl; external; -procedure swiSwitchToGBAMode(); cdecl; external; -procedure swiSetHaltCR(data: cuint8); cdecl; external; -function swiGetSineTable(index: cint): cuint16; cdecl; external; -function swiGetPitchTable(index: cint): cuint16; cdecl; external; -function swiGetVolumeTable(index: cint): cuint8; cdecl; external; -procedure swiChangeSoundBias(enabled, delay: cint); cdecl; external; + procedure swiHalt(); cdecl; external; + procedure swiSleep(); cdecl; external; + procedure swiSwitchToGBAMode(); cdecl; external; + procedure swiSetHaltCR(data: cuint8); cdecl; external; + function swiGetSineTable(index: cint): cuint16; cdecl; external; + function swiGetPitchTable(index: cint): cuint16; cdecl; external; + function swiGetVolumeTable(index: cint): cuint8; cdecl; external; + procedure swiChangeSoundBias(enabled, delay: cint); cdecl; external; {$endif ARM7} + {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/card.inc b/packages/libndsfpc/src/nds/card.inc index 8f399d6ae8..3d659b638e 100644 --- a/packages/libndsfpc/src/nds/card.inc +++ b/packages/libndsfpc/src/nds/card.inc @@ -62,40 +62,86 @@ const // CARD_CR2 register: CARD_ACTIVATE = (1 shl 31); // when writing, get the ball rolling - // 1<<30 + CARD_WR = (1 shl 30); CARD_nRESET = (1 shl 29); // value on the /reset pin (1 = high out, not a reset state, 0 = low out = in reset) - CARD_28 = (1 shl 28); // when writing - CARD_27 = (1 shl 27); // when writing - CARD_26 = (1 shl 26); - CARD_22 = (1 shl 22); - CARD_19 = (1 shl 19); - CARD_ENCRYPTED = (1 shl 14); // when writing, this command should be encrypted - CARD_13 = (1 shl 13); // when writing - CARD_4 = (1 shl 4); // when writing - + CARD_SEC_LARGE = (1 shl 28); // when writing + CARD_CLK_SLOW = (1 shl 27); // when writing + + CARD_SEC_CMD = (1 shl 22); // The command transfer will be hardware encrypted (KEY2) + CARD_SEC_SEED = (1 shl 15); // Apply encryption (KEY2) seed to hardware registers + CARD_SEC_EN = (1 shl 14); // Security enable + CARD_SEC_DAT = (1 shl 13); // The data transfer will be hardware encrypted (KEY2) + + +function CARD_BLK_SIZE(n: cint): cint; inline; +function CARD_DELAY2(n: cint): cint; inline; +function CARD_DELAY1(n: cint): cint; inline; + + + +const // 3 bits in b10..b8 indicate something // read bits CARD_BUSY = (1 shl 31); // when reading, still expecting incomming data? CARD_DATA_READY = (1 shl 23); // when reading, CARD_DATA_RD or CARD_DATA has another word of data and is good to go + // Card commands + CARD_CMD_DUMMY = $9F; + CARD_CMD_HEADER_READ = $00; + CARD_CMD_HEADER_CHIPID = $90; + CARD_CMD_ACTIVATE_BF = $3C; // Go into blowfish (KEY1) encryption mode + CARD_CMD_ACTIVATE_SEC = $40; // Go into hardware (KEY2) encryption mode + CARD_CMD_SECURE_CHIPID = $10; + CARD_CMD_SECURE_READ = $20; + CARD_CMD_DISABLE_SEC = $60; // Leave hardware (KEY2) encryption mode + CARD_CMD_DATA_MODE = $A0; + CARD_CMD_DATA_READ = $B7; + CARD_CMD_DATA_CHIPID = $B8; + -procedure cardWriteCommand(const command: pcuint8); cdecl; external; +procedure cardWriteCommand(const command: pcuint8); cdecl; external; procedure cardPolledTransfer(flags: cuint32; destination: pcuint32; length: cuint32; const command: pcuint8); cdecl; external; procedure cardStartTransfer(const command: pcuint8; destination: pcuint32; channel: cint; flags: cuint32); cdecl; external; function cardWriteAndRead(const command: pcuint8; flags: cuint32): cuint32; cdecl; external; -procedure cardRead00(address: cuint32; destination: pcuint32; length: cuint32; flags: cuint32); cdecl; external; +procedure cardParamCommand(command: cuint8; parameter, flags: cuint32; destination: pcuint32; length: cuint32); cdecl; external; + procedure cardReadHeader(header: pcuint8); cdecl; external; -function cardReadID(flags: cuint32): cint; cdecl; external; +function cardReadID(flags: cuint32): cuint32; cdecl; external; + + + procedure cardReadEeprom(address: cuint32; data: pcuint8; length: cuint32; addrtype: cuint32); cdecl; external; procedure cardWriteEeprom(address: cuint32; data: pcuint8; length: cuint32; addrtype: cuint32); cdecl; external; function cardEepromReadID(i: cuint8): cuint8; cdecl; external; + function cardEepromCommand(command: cuint8; address: cuint32): cuint8; cdecl; external; + function cardEepromGetType({void}): cint; cdecl; external; function cardEepromGetSize(): cuint32; cdecl; external; procedure cardEepromChipErase({void}); cdecl; external; procedure cardEepromSectorErase(address: cuint32); cdecl; external; + {$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} + +function CARD_BLK_SIZE(n: cint): cint; inline; +begin + result := (n and $7) shl 24; +end; + +function CARD_DELAY2(n: cint): cint; inline; +begin + result := (n and $3F) shl 16; +end; + +function CARD_DELAY1(n: cint): cint; inline; +begin + result := (n and $1FFF); +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/debug.inc b/packages/libndsfpc/src/nds/debug.inc new file mode 100644 index 0000000000..ad0e992d0c --- /dev/null +++ b/packages/libndsfpc/src/nds/debug.inc @@ -0,0 +1,45 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + +{$ifdef NDS_INTERFACE} + +procedure nocashMessage(const aMessage: pchar); cdecl; external; + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/disc_io.inc b/packages/libndsfpc/src/nds/disc_io.inc new file mode 100644 index 0000000000..7f6c38d510 --- /dev/null +++ b/packages/libndsfpc/src/nds/disc_io.inc @@ -0,0 +1,85 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + +{$ifdef NDS_INTERFACE} + +const + FEATURE_MEDIUM_CANREAD = $00000001; + FEATURE_MEDIUM_CANWRITE = $00000002; + FEATURE_SLOT_GBA = $00000010; + FEATURE_SLOT_NDS = $00000020; + +type + FN_MEDIUM_STARTUP = function: cbool; + FN_MEDIUM_ISINSERTED = function: cbool; + FN_MEDIUM_READSECTORS = function(sector, numSectors: cuint32; buffer: pointer): cbool; + FN_MEDIUM_WRITESECTORS = function(sector, numSectors: cuint32; const buffer: pointer): cbool; + FN_MEDIUM_CLEARSTATUS = function: cbool; + FN_MEDIUM_SHUTDOWN = function: cbool; + + DISC_INTERFACE_STRUCT = record + ioType: cuint32; + features: cuint32; + startup: FN_MEDIUM_STARTUP; + isInserted: FN_MEDIUM_ISINSERTED; + readSectors: FN_MEDIUM_READSECTORS; + writeSectors: FN_MEDIUM_WRITESECTORS; + clearStatus: FN_MEDIUM_CLEARSTATUS; + shutdown: FN_MEDIUM_SHUTDOWN; + end; + + DISC_INTERFACE = DISC_INTERFACE_STRUCT; + TDISC_INTERFACE = DISC_INTERFACE_STRUCT; + PDISC_INTERFACE = ^DISC_INTERFACE_STRUCT; +(* + PARTITION_INTERFACE = ( + PI_DEFAULT = 0, + PI_SLOT_1, + PI_SLOT_2, + PI_CUSTOM + ); +*) +{$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} + + + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/dma.inc b/packages/libndsfpc/src/nds/dma.inc index 4118bb78f8..808f8f4ac4 100644 --- a/packages/libndsfpc/src/nds/dma.inc +++ b/packages/libndsfpc/src/nds/dma.inc @@ -57,26 +57,15 @@ const DMA3_SRC : pcuint32 = pointer($040000D4); DMA3_DEST : pcuint32 = pointer($040000D8); DMA3_CR : pcuint32 = pointer($040000DC); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} function DMA_SRC(n: cint): pcuint32; inline; -begin - DMA_SRC := pcuint32($040000B0 + (n * 12)); -end; - function DMA_DEST(n: cint): pcuint32; inline; -begin - DMA_DEST := pcuint32($040000B4 + (n * 12)); -end; - function DMA_CR(n: cint): pcuint32; inline; -begin - DMA_CR := pcuint32($040000B8 + (n * 12)); -end; -{$endif NDS_IMPLEMENTATION} +{$ifdef ARM9} +function DMA_FILL(n: cint): pcuint32; inline; +{$endif ARM9} + -{$ifdef NDS_INTERFACE} // DMA control register contents // The defaults are 16-bit, increment source/dest addresses, no irq const @@ -94,9 +83,11 @@ const {$ifdef ARM9} DMA_START_HBL = (1 shl 28); //BIT(28); DMA_START_VBL = (1 shl 27); //BIT(27); - DMA_START_FIFO = (7 shl 27); +// DMA_START_FIFO = (7 shl 27); DMA_DISP_FIFO = (4 shl 27); {$endif ARM9} +DMA_START_FIFO = (7 shl 27); + DMA_16_BIT = 0; DMA_32_BIT = (1 shl 26); //BIT(26); @@ -114,13 +105,45 @@ const DMA_COPY_WORDS = (DMA_ENABLE or DMA_32_BIT or DMA_START_NOW); DMA_COPY_HALFWORDS = (DMA_ENABLE or DMA_16_BIT or DMA_START_NOW); -{$ifdef ARM9} +{ $ifdef ARM9} DMA_FIFO = (DMA_ENABLE or DMA_32_BIT or DMA_DST_FIX or DMA_START_FIFO); -{$endif ARM9} +{ $endif ARM9} + +procedure dmaCopyWords(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; +procedure dmaCopyHalfWords(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; +procedure dmaCopy(const source: pointer; dest: pointer; size: cuint32); inline; +procedure dmaCopyWordsAsynch(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; +procedure dmaCopyHalfWordsAsynch(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; +procedure dmaCopyAsynch(const source: pointer; dest: pointer; size: cuint32); inline; +procedure dmaFillWords(value: cuint32; dest: pointer; size: cuint32); inline; +procedure dmaFillHalfWords(value: cuint16; dest: pointer; size: cuint32); inline; +function dmaBusy(channel: cuint8): cint; inline; + {$endif NDS_INTERFACE} {$ifdef NDS_IMPLEMENTATION} +function DMA_SRC(n: cint): pcuint32; inline; +begin + DMA_SRC := pcuint32($040000B0 + (n * 12)); +end; + +function DMA_DEST(n: cint): pcuint32; inline; +begin + DMA_DEST := pcuint32($040000B4 + (n * 12)); +end; + +function DMA_CR(n: cint): pcuint32; inline; +begin + DMA_CR := pcuint32($040000B8 + (n * 12)); +end; + +{$ifdef ARM9} +function DMA_FILL(n: cint): pcuint32; inline; +begin + DMA_FILL := pcuint32($040000E0 + (n * 4)); +end; +{$endif ARM9} procedure dmaCopyWords(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; begin @@ -167,17 +190,31 @@ begin DMA_CR(3)^ := DMA_COPY_HALFWORDS or (size shr 1); end; -procedure dmaFillWords(const src: pointer; dest: pointer; size: cuint32); inline; +procedure dmaFillWords(value: cuint32; dest: pointer; size: cuint32); inline; begin - DMA_SRC(3)^ := cuint32(src); + {$ifdef ARM7} + pcuint32($027FFE04)^ := value; + DMA_SRC(3)^ := $027FFE04; + {$else ARM7} + DMA_FILL(3)^ := value; +// pcuint32(DMA_SRC(3)^) := pcuint32(DMA_FILL(3)); + DMA_SRC(3)^ := cuint32(DMA_FILL(3)); + {$endif ARM7} DMA_DEST(3)^ := cuint32(dest); DMA_CR(3)^ := DMA_SRC_FIX or DMA_COPY_WORDS or (size shr 2); while (DMA_CR(3)^ and DMA_BUSY) <> 0 do; end; -procedure dmaFillHalfWords(const src: pointer; dest: pointer; size: cuint32); inline; +procedure dmaFillHalfWords(value: cuint16; dest: pointer; size: cuint32); inline; begin - DMA_SRC(3)^ := cuint32(src); + {$ifdef ARM7} + pcuint32($027FFE04)^ := value; + DMA_SRC(3)^ := $027FFE04; + {$else ARM7} + DMA_FILL(3)^ := value; +// pcuint32(DMA_SRC(3)^) := pcuint32(DMA_FILL(3)); + DMA_SRC(3)^ := cuint32(DMA_FILL(3)); + {$endif ARM7} DMA_DEST(3)^ := cuint32(dest); DMA_CR(3)^ := DMA_SRC_FIX or DMA_COPY_HALFWORDS or (size shr 1); while (DMA_CR(3)^ and DMA_BUSY) <> 0 do; @@ -188,19 +225,3 @@ begin dmaBusy := (DMA_CR(channel)^ and DMA_BUSY) shr 31; end; {$endif NDS_IMPLEMENTATION} - - -{$ifdef NDS_INTERFACE} -function DMA_SRC(n: cint): pcuint32; inline; -function DMA_DEST(n: cint): pcuint32; inline; -function DMA_CR(n: cint): pcuint32; inline; -procedure dmaCopyWords(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; -procedure dmaCopyHalfWords(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; -procedure dmaCopy(const source: pointer; dest: pointer; size: cuint32); inline; -procedure dmaCopyWordsAsynch(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; -procedure dmaCopyHalfWordsAsynch(channel: cuint8; const src: pointer; dest: pointer; size: cuint32); inline; -procedure dmaCopyAsynch(const source: pointer; dest: pointer; size: cuint32); inline; -procedure dmaFillWords(const src: pointer; dest: pointer; size: cuint32); inline; -procedure dmaFillHalfWords(const src: pointer; dest: pointer; size: cuint32); inline; -function dmaBusy(channel: cuint8): cint; inline; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/dynamicArray.inc b/packages/libndsfpc/src/nds/dynamicArray.inc new file mode 100644 index 0000000000..e8dd592d13 --- /dev/null +++ b/packages/libndsfpc/src/nds/dynamicArray.inc @@ -0,0 +1,96 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + +{$ifdef NDS_INTERFACE} +type + DynamicArray = record + data: ppointer; // pointer to array of void pointers + cur_size: integer; // currently allocated size of the array + end; + TDynamicArray = DynamicArray; + PDynamicArray = ^TDynamicArray; + + +function DynamicArrayInit(v: PDynamicArray; initialSize: integer): pointer; inline; +procedure DynamicArrayDelete(v: PDynamicArray); inline; +function DynamicArrayGet(v: PDynamicArray; index: integer): pointer; inline; +procedure DynamicArraySet(v: PDynamicArray; index: integer; item: pointer); inline; +{$endif NDS_INTERFACE} + + +{$ifdef NDS_IMPLEMENTATION} +function DynamicArrayInit(v: PDynamicArray; initialSize: integer): pointer; inline; +begin + v^.cur_size := initialSize; +// v^.data := malloc(sizeof(pointer) * initialSize); + GetMem(v^.data, sizeof(pointer) * initialSize); + result := v^.data; +end; + +procedure DynamicArrayDelete(v: PDynamicArray); inline; +begin + if (v^.data) <> nil then + free(v^.data); +end; + +function DynamicArrayGet(v: PDynamicArray; index: integer): pointer; inline; +begin + if (index >= v^.cur_size) then + begin + result := nil; + exit; + end; + result := v^.data + index; +end; + +procedure DynamicArraySet(v: PDynamicArray; index: integer; item: pointer); inline; +var + i: integer; +begin + if (index >= v^.cur_size) then + begin + v^.cur_size := v^.cur_size * 2; + v^.data := ReAllocMem(v^.data, sizeof(pointer) * v^.cur_size); + end; + i := integer(v^.data); + i := i + index; + pointer(i) := item; +end; +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/fifocommon.inc b/packages/libndsfpc/src/nds/fifocommon.inc new file mode 100644 index 0000000000..d92cbe7a16 --- /dev/null +++ b/packages/libndsfpc/src/nds/fifocommon.inc @@ -0,0 +1,376 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + + +{$ifdef NDS_INTERFACE} + +type + FifoChannels = integer; +const + FIFO_PM : FifoChannels = 0; + FIFO_SOUND : FifoChannels = 1; + FIFO_SYSTEM : FifoChannels = 2; + FIFO_RSDV_01: FifoChannels = 3; + FIFO_RSVD_02: FifoChannels = 4; + FIFO_RSVD_03: FifoChannels = 5; + FIFO_DSWIFI : FifoChannels = 6; + FIFO_MAXMOD : FifoChannels = 7; + FIFO_USER_01: FifoChannels = 8; + FIFO_USER_02: FifoChannels = 9; + FIFO_USER_03: FifoChannels = 10; + FIFO_USER_04: FifoChannels = 11; + FIFO_USER_05: FifoChannels = 12; + FIFO_USER_06: FifoChannels = 13; + FIFO_USER_07: FifoChannels = 14; + FIFO_USER_08: FifoChannels = 15; + + +type + FifoSoundCommand = integer; +const + SOUND_SET_PAN : FifoSoundCommand = (0 shl 20); + SOUND_SET_VOLUME : FifoSoundCommand = (1 shl 20); + SOUND_SET_FREQ : FifoSoundCommand = (2 shl 20); + SOUND_MASTER_ENABLE : FifoSoundCommand = (3 shl 20); + SOUND_MASTER_DISABLE : FifoSoundCommand = (4 shl 20); + SOUND_PAUSE : FifoSoundCommand = (5 shl 20); + SOUND_RESUME : FifoSoundCommand = (6 shl 20); + SOUND_KILL : FifoSoundCommand = (7 shl 20); + SOUND_SET_MASTER_VOL : FifoSoundCommand = (8 shl 20); + MIC_STOP : FifoSoundCommand = (9 shl 20); + +type + FifoSystemCommands = integer; +const + SYS_REQ_TOUCH : FifoSystemCommands = 0; + SYS_REQ_KEYS : FifoSystemCommands = 1; + SYS_REQ_TIME : FifoSystemCommands = 2; + +type + FifoPMCommands = integer; +const + PM_REQ_ON : FifoPMCommands = (1 shl 16); + PM_REQ_OFF : FifoPMCommands = (2 shl 16); + PM_REQ_LED : FifoPMCommands = (3 shl 16); + PM_REQ_SLEEP : FifoPMCommands = (4 shl 16); + PM_REQ_SLEEP_DISABLE : FifoPMCommands = (5 shl 16); + PM_REQ_SLEEP_ENABLE : FifoPMCommands = (6 shl 16); + +type + FifoWifiCommands = integer; +const + WIFI_ENABLE : FifoWifiCommands = 0; + WIFI_DISABLE : FifoWifiCommands = 1; + WIFI_SYNC : FifoWifiCommands = 2; + +type + PM_LedBlinkMode = integer; +const + PM_LED_ON: PM_LedBlinkMode = (0 shl 4); + PM_LED_SLEEP: PM_LedBlinkMode = (1 shl 4); + PM_LED_BLINK: PM_LedBlinkMode = (3 shl 4); + +const + FIFO_CHANNEL_BITS = 4; + FIFO_MAX_DATA_BYTES = 128; + +{$ifdef ARM9} + FIFO_BUFFER_ENTRIES = 512; +{$else ARM9} // ARM7 + FIFO_BUFFER_ENTRIES = 256; +{$endif ARM9} + +var + fifo_buffer: array [0..FIFO_BUFFER_ENTRIES*2-1] of cuint32; cvar; external; + + +{$ifdef FIFO_RIGOROUS_ERROR_CHECKING} + function fifoError(value: pchar; array of const): integer; cdecl; external;// expected to be defined externally. +{$endif} + +type // FUNCTION(...):POINTER or PROCEDURE?!? + FifoAddressHandlerFunc = function(address, userdata: pointer): pointer; + FifoValue32HandlerFunc = function(value32: cuint32; userdata: pointer): pointer; + FifoDatamsgHandlerFunc = function(num_bytes: integer; userdata: pointer): pointer; + +function fifoInit(): cbool; cdecl; external; +function fifoSendAddress(channel: integer; address: pointer): cbool; cdecl; external; +function fifoSendValue32(channel: integer; value32: cuint32): cbool; cdecl; external; + +function fifoSendDatamsg(channel, num_bytes: integer; data_array: pcuint8): cbool; cdecl; external; + +function fifoSetAddressHandler(channel: integer; newhandler: FifoAddressHandlerFunc; userdata: pointer): cbool; cdecl; external; +function fifoSetValue32Handler(channel: integer; newhandler: FifoValue32HandlerFunc; userdata: pointer): cbool; cdecl; external; +function fifoSetDatamsgHandler(channel: integer; newhandler: FifoDatamsgHandlerFunc; userdata: pointer): cbool; cdecl; external; + +procedure fifoForceAddressHandler(channel: integer; newhandler: FifoAddressHandlerFunc; userdata: pointer); cdecl; external; +procedure fifoForceValue32Handler(channel: integer; newhandler: FifoValue32HandlerFunc; userdata: pointer); cdecl; external; +procedure fifoForceDatamsgHandler(channel: integer; newhandler: FifoDatamsgHandlerFunc; userdata: pointer); cdecl; external; + +function fifoCheckAddress(channel: integer): cbool; cdecl; external; +function fifoCheckValue32(channel: integer): cbool; cdecl; external; +function fifoCheckDatamsg(channel: integer): cbool; cdecl; external; + +function fifoCheckDatamsgLength(channel: integer): cint; cdecl; external; + +function fifoCountDatamsg(channel: integer): cint; cdecl; external; + +function fifoGetAddress(channel: integer): pointer; cdecl; external; + +function fifoGetValue32(channel: integer): cuint32; cdecl; external; + + +function fifoGetDatamsg(channel, buffersize: cint; destbuffer: pcuint8): cint; cdecl; external; + +function fifoGetBufferUsage(): cint; cdecl; external; + +function fifoGetLostWordCount(): cint; cdecl; external; + + + +procedure fifoInternalSendInterrupt(); cdecl; external; +procedure fifoInternalRecvInterrupt(); cdecl; external; +procedure fifoInternalProtect(); cdecl; external; +procedure fifoInternalUnprotect(); cdecl; external; +function fifoInternalSend(firstword: cuint32; extrawordcount: cint; wordlist: pcuint32): cbool; cdecl; external; +procedure fifoInternalBeginSend(); cdecl; external; +function fifoInternalRecvPeek(): cuint32; cdecl; external; +function fifoInternalRecvPopFirst(): cuint32; cdecl; external; +function fifoInternalRecvWordCount(): cint; cdecl; external; +function fifoInternalRecvPushBack(word: cuint32): cbool; cdecl; external; +function fifoInternalSendEmpty(): cbool; cdecl; external; +function fifoInternalSendDeque(): cuint32; cdecl; external; +function fifoInternalSendEnqueue(word: cuint32): cbool; cdecl; external; +function fifoInternalAllocFreeBlock(): cint; cdecl; external; +procedure fifoInternalFreeBlock(blockid: cint); cdecl; external; +function fifoInternalFreeCheck(num_words: cint): cbool; cdecl; external; + + + + +// And some aspects of the configuration can't be changed +// please don't edit below this line. + +const + FIFO_ADDRESSDATA_SHIFT = 0; + FIFO_MINADDRESSDATABITS = 22; + FIFO_ADDRESSDATA_MASK = $003FFFFF; + FIFO_ADDRESSBASE = $02000000; + FIFO_ADDRESSCOMPATIBLE = $FFC00000; + + FIFO_NUM_CHANNELS = (1 shl FIFO_CHANNEL_BITS); + FIFO_CHANNEL_SHIFT = (32 - FIFO_CHANNEL_BITS); + FIFO_CHANNEL_MASK = ((1 shl FIFO_CHANNEL_BITS) - 1); + + FIFO_ADDRESSBIT_SHIFT = (FIFO_CHANNEL_SHIFT - 1); + FIFO_ADDRESSBIT = (1 shl FIFO_ADDRESSBIT_SHIFT); + + FIFO_IMMEDIATEBIT_SHIFT = (FIFO_CHANNEL_SHIFT - 2); + FIFO_IMMEDIATEBIT = (1 shl FIFO_IMMEDIATEBIT_SHIFT); + + FIFO_EXTRABIT_SHIFT = (FIFO_CHANNEL_SHIFT - 3); + FIFO_EXTRABIT = (1 shl FIFO_EXTRABIT_SHIFT); + + + FIFO_VALUE32_MASK = (FIFO_EXTRABIT - 1); + + + FIFO_BUFFER_TERMINATE = $FFFF; + FIFO_BUFFER_NEXTMASK = $FFFF; + + +{ $IF (FIFO_MINADDRESSDATABITS + FIFO_CHANNEL_BITS + 1) > 32} + { $ERROR Too many channel bits - control word isn't big enough for address packet} +{ $ENDIF} + + + + +function FIFO_PACK_ADDRESS(channel, address: cint): cint; inline; +function FIFO_VALUE32_NEEDEXTRA(value32: cint32): boolean; inline; +function FIFO_PACK_VALUE32(channel, value32: cint): cint; inline; +function FIFO_PACK_VALUE32_EXTRA(channel: cint): cint; inline; +function FIFO_IS_ADDRESS_COMPATIBLE(address: cint): boolean; inline; +function FIFO_PACK_DATAMSG_HEADER(channel, numwords: cint): cint; inline; +function FIFO_IS_ADDRESS(dataword: cint): boolean; inline; +function FIFO_IS_VALUE32(dataword: cint): boolean; inline; +function FIFO_IS_DATA(dataword: cint): boolean; inline; +function FIFO_UNPACK_CHANNEL(dataword: cint): cint; inline; +function FIFO_UNPACK_ADDRESS(dataword: cint): pointer; inline; +function FIFO_UNPACK_VALUE32_NEEDEXTRA(dataword: cint): boolean; inline; +function FIFO_UNPACK_VALUE32_NOEXTRA(dataword: cint): cint; inline; +function FIFO_UNPACK_DATALENGTH(dataword: cint): cint; inline; + +const + FIFO_BUFFERCONTROL_UNUSED = 0; + FIFO_BUFFERCONTROL_SENDWORD = 1; + FIFO_BUFFERCONTROL_RECVWORD = 2; + FIFO_BUFFERCONTROL_ADDRESS = 3; + FIFO_BUFFERCONTROL_VALUE32 = 4; + FIFO_BUFFERCONTROL_DATASTART = 5; + FIFO_BUFFERCONTROL_DATA = 6; + +function FIFO_BUFFER_DATA(index: cint): cint; inline; +function FIFO_BUFFER_DATA_BYTE(index, byteindex: cint): pcuint8; inline; +function FIFO_BUFFER_GETNEXT(index: cint): cint; inline; +function FIFO_BUFFER_GETCONTROL(index: cint): cint; inline; +function FIFO_BUFFER_GETEXTRA(index: cint): cint; inline; +procedure FIFO_BUFFER_SETCONTROL(index,next,control,extra: cint); inline; +procedure FIFO_BUFFER_SETNEXT(index, next: cint); inline; + + +{$endif NDS_INTERFACE} + + + +{$ifdef NDS_IMPLEMENTATION} + +function FIFO_PACK_ADDRESS(channel, address: cint): cint; inline; +begin + result := ((channel) shl FIFO_CHANNEL_SHIFT) or + FIFO_ADDRESSBIT or + ((address shr FIFO_ADDRESSDATA_SHIFT) and FIFO_ADDRESSDATA_MASK); +end; + +function FIFO_VALUE32_NEEDEXTRA(value32: cint32): boolean; inline; +begin + result := (value32 and (not FIFO_VALUE32_MASK)) <> 0; +end; + +function FIFO_PACK_VALUE32(channel, value32: cint): cint; inline; +begin + result := (channel shl FIFO_CHANNEL_SHIFT) or + FIFO_IMMEDIATEBIT or + (value32 and FIFO_VALUE32_MASK); +end; + +function FIFO_PACK_VALUE32_EXTRA(channel: cint): cint; inline; +begin + result := (channel shl FIFO_CHANNEL_SHIFT) or FIFO_IMMEDIATEBIT or FIFO_EXTRABIT; +end; + +function FIFO_IS_ADDRESS_COMPATIBLE(address: cint): boolean; inline; +begin + result := (address and FIFO_ADDRESSCOMPATIBLE) = FIFO_ADDRESSBASE; +end; + +function FIFO_PACK_DATAMSG_HEADER(channel, numwords: cint): cint; inline; +begin + result := (channel shl FIFO_CHANNEL_SHIFT) or (numwords and FIFO_VALUE32_MASK); +end; + +function FIFO_IS_ADDRESS(dataword: cint): boolean; inline; +begin + result := (dataword and FIFO_ADDRESSBIT) <> 0; +end; + +function FIFO_IS_VALUE32(dataword: cint): boolean; inline; +begin + result := ((dataword and FIFO_ADDRESSBIT) = 0) and ((dataword and FIFO_IMMEDIATEBIT) <> 0); +end; + +function FIFO_IS_DATA(dataword: cint): boolean; inline; +begin + result := (dataword and (FIFO_ADDRESSBIT or FIFO_IMMEDIATEBIT)) = 0; +end; + +function FIFO_UNPACK_CHANNEL(dataword: cint): cint; inline; +begin + result := (dataword shr FIFO_CHANNEL_SHIFT) and FIFO_CHANNEL_MASK; +end; + +function FIFO_UNPACK_ADDRESS(dataword: cint): pointer; inline; +begin + result := pointer(((dataword and FIFO_ADDRESSDATA_MASK) shl FIFO_ADDRESSDATA_SHIFT) or FIFO_ADDRESSBASE); +end; + +function FIFO_UNPACK_VALUE32_NEEDEXTRA(dataword: cint): boolean; inline; +begin + result := (dataword and FIFO_EXTRABIT) <> 0; +end; + +function FIFO_UNPACK_VALUE32_NOEXTRA(dataword: cint): cint; inline; +begin + result := (dataword and FIFO_VALUE32_MASK); +end; + +function FIFO_UNPACK_DATALENGTH(dataword: cint): cint; inline; +begin + result := (dataword and FIFO_VALUE32_MASK); +end; + +function FIFO_BUFFER_DATA(index: cint): cint; inline; +begin + result := fifo_buffer[(index)*2+1]; +end; + +function FIFO_BUFFER_DATA_BYTE(index, byteindex: cint): pcuint8; inline; +begin +// ((u8*)(&fifo_buffer[(index)*2+1]))[(byteindex)] +///////// result := pcuint8(pointer(fifo_buffer[index*2+1]))[byteindex]; +end; + + +function FIFO_BUFFER_GETNEXT(index: cint): cint; inline; +begin + result := (fifo_buffer[(index)*2] and FIFO_BUFFER_NEXTMASK); +end; + +function FIFO_BUFFER_GETCONTROL(index: cint): cint; inline; +begin + result := (fifo_buffer[(index)*2] shr 28); +end; + +function FIFO_BUFFER_GETEXTRA(index: cint): cint; inline; +begin + result := ((fifo_buffer[(index)*2] shr 16) and $FFF); +end; + +procedure FIFO_BUFFER_SETCONTROL(index,next,control,extra: cint); inline; +begin + fifo_buffer[(index)*2] := (next and FIFO_BUFFER_NEXTMASK) or (control shl 28) or ((extra and $FFF) shl 16); +end; + +procedure FIFO_BUFFER_SETNEXT(index, next: cint); inline; +begin + fifo_buffer[(index)*2] := (next and FIFO_BUFFER_NEXTMASK) or (fifo_buffer[(index)*2] and (not FIFO_BUFFER_NEXTMASK)); +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/fifomessages.inc b/packages/libndsfpc/src/nds/fifomessages.inc new file mode 100644 index 0000000000..4827b22aa7 --- /dev/null +++ b/packages/libndsfpc/src/nds/fifomessages.inc @@ -0,0 +1,104 @@ +(* + $Id$ + --------------------------------------------------------------------------------- + + Sound Functions + + Copyright (C) 2008 + Jason Rogers (Dovoto) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + +---------------------------------------------------------------------------------*) + +{$ifdef NDS_INTERFACE} + +type + FifoMessageType = integer; +const + SOUND_PLAY_MESSAGE : FifoMessageType = $1234; + SOUND_PSG_MESSAGE : FifoMessageType = $1235; + SOUND_NOISE_MESSAGE : FifoMessageType = $1236; + MIC_RECORD_MESSAGE : FifoMessageType = $1237; + MIC_BUFFER_FULL_MESSAGE : FifoMessageType = $1238; + SYS_INPUT_MESSAGE : FifoMessageType = $1239; + +type +{$PACKRECORDS 4} + FifoMessage = record + _type: cuint16; + empty: array[0..31] of cuint8; + end; + TFifoMessage = FifoMessage; + PFifoMessage = ^FifoMessage; + + SoundPlayMsg = record + _type: cuint16; + data: pointer; + loopPoint: cuint16; + dataSize: cuint16; + freq: cuint16; + volume: cuint8; + pan: cuint8; + loop: cbool; + format: cuint8; + end; + TSoundPlayMsg = SoundPlayMsg; + PSoundPlayMsg = ^SoundPlayMsg; + + SoundPsgMsg = record + _type: cuint16; + freq: cuint16; + dutyCycle: cuint8; + volume: cuint8; + pan: cuint8; + end; + TSoundPsgMsg = SoundPsgMsg; + PSoundPsgMsg = ^SoundPsgMsg; + + MicRecordMsg = record + _type: cuint16; + buffer: pointer; + bufferLength: cuint32; + freq: cuint16; + format: cuint8; + end; + TMicRecordMsg = MicRecordMsg; + PMicRecordMsg = ^MicRecordMsg; + + MicBufferFullMsg = record + _type: cuint16; + buffer: pointer; + length: cuint32; + end; + TMicBufferFullMsg = MicBufferFullMsg; + PMicBufferFullMsg = ^MicBufferFullMsg; + + + SystemInputMsg = record + _type: cuint16; + touch: touchPosition; + keys: cuint16; + end; + TSystemInputMsg = SystemInputMsg; + PSystemInputMsg = ^SystemInputMsg; + +{$PACKRECORDS C} +{$endif NDS_INTERFACE} + diff --git a/packages/libndsfpc/src/nds/helper.inc b/packages/libndsfpc/src/nds/helper.inc index 4664e02e56..6e9e3b837d 100644 --- a/packages/libndsfpc/src/nds/helper.inc +++ b/packages/libndsfpc/src/nds/helper.inc @@ -35,105 +35,57 @@ *) -(* +------------------------------------------------------------------------+ *) -(* Begin Random function *) -(* +------------------------------------------------------------------------+ *) {$ifdef NDS_INTERFACE} -const - QRAN_SHIFT = 15; - QRAN_MASK = ((1 shl QRAN_SHIFT) - 1); - QRAN_MAX = QRAN_MASK; - QRAN_A = 1664525; - QRAN_C = 1013904223; - -var - RandSeed: dword = 42; -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function Randomize(seed: cint): cint; -var - old: cint; -begin - old := RandSeed; - RandSeed := seed; - Randomize := old; -end; - -function Rand(): cint; -begin - RandSeed := QRAN_A * RandSeed + QRAN_C; - Rand := (RandSeed shr 16) and QRAN_MAX; -end; - -function Rand(value: cint): cint; -var - a: cint; -begin - RandSeed := QRAN_A * RandSeed + QRAN_C; - a := (RandSeed shr 16) and QRAN_MAX; - Rand := (a * value) shr 15; -end; -(* +------------------------------------------------------------------------+ *) -(* End Random function *) -(* +------------------------------------------------------------------------+ *) -{$endif NDS_IMPLEMENTATION} +type + time_t = cint; + ptime_t = ^time_t; + + Ptm = ^tm; + tm = record + tm_sec: cint; + tm_min: cint; + tm_hour: cint; + tm_mday: cint; + tm_mon: cint; + tm_year: cint; + tm_wday: cint; + tm_yday: cint; + tm_isdst: cint; + end; -{$ifdef NDS_INTERFACE} (* Some libc functions *) -function printf(format: Pchar; args: array of const): longint; cdecl; external; +//function printf(format: Pchar; args: array of const): longint; cdecl; external; function printf(format: Pchar): longint; cdecl; varargs; external; -function sprintf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; +//function sprintf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; function sprintf(s: Pchar; format: Pchar): longint; varargs; cdecl; external; -function iprintf(format: Pchar; args: array of const): longint; cdecl; external; +//function iprintf(format: Pchar; args: array of const): longint; cdecl; external; function iprintf(format: Pchar): longint; varargs; cdecl; external; -function scanf(format: Pchar; args: array of const): longint; cdecl; external; +//function scanf(format: Pchar; args: array of const): longint; cdecl; external; function scanf(format: Pchar): longint; cdecl; varargs; external; -function sscanf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; +//function sscanf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; function sscanf(s: Pchar; format: Pchar): longint; cdecl; varargs; external; +function strcmp(s1: Pchar; s2: Pchar): longint; cdecl; external; +function malloc(size: integer): pointer; cdecl; external; +function realloc(ptr: pointer; size: integer): pointer; cdecl; external; +procedure free(ptr: pointer); cdecl; external; +function memcpy(dest: pointer; src: pointer; n: integer): pointer; cdecl; external; -(* libc file handling types and routines *) -type - _FILE = record - firstCluster: cuint; - length: cuint; - curPos: cuint; - curClus: cuint; // Current cluster to read from - curSect: integer; // Current sector within cluster - curByte: integer; // Current byte within sector - readBuffer: array [0..511] of byte; // Buffer used for unaligned reads - appClus: cuint; // Cluster to append to - appSect: integer; // Sector within cluster for appending - appByte: integer; // Byte within sector for appending - read: boolean; // Can read from file - write: boolean; // Can write to file - append: boolean;// Can append to file - inUse: boolean; // This file is open - dirEntSector: cuint; // The sector where the directory entry is stored - dirEntOffset: integer; // The offset within the directory sector - end; - P_FILE = ^_FILE; +function gmtime(timer: ptime_t): ptm; cdecl; external; +function time(timer: ptime_t): time_t; cdecl; external; -const - SEEK_SET = 0; - SEEK_CUR = 1; - SEEK_END = 2; +type + TSort = function (const a, b: pointer): integer; +procedure qsort(__base: pointer; __nmemb: integer; __size: integer; __compar: TSort); cdecl; external; -function fopen(filename: Pchar; modes: Pchar): P_FILE; cdecl; external; -function fread(ptr: pointer; size: longint; n: longint; stream: P_FILE): longint; cdecl; external; -function fwrite(ptr: pointer; size: longint; n: longint; s: P_FILE): longint; cdecl; external; -function ftell(stream: P_FILE): longint; cdecl; external; -function fseek(stream: P_FILE; off: longint; whence: longint): longint; cdecl; external; -function fclose(stream: P_FILE): longint; cdecl; external; +function __errno: pcint; cdecl; export; {$endif NDS_INTERFACE} +{$ifdef NDS_IMPLEMENTATION} +function __errno: pcint; cdecl; export; +begin +end; +{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -function Randomize(seed: cint): cint; -function Rand(): cint; -function Rand(value: cint): cint; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/interrupts.inc b/packages/libndsfpc/src/nds/interrupts.inc index 54ae90ab6a..5e0d6f7f23 100644 --- a/packages/libndsfpc/src/nds/interrupts.inc +++ b/packages/libndsfpc/src/nds/interrupts.inc @@ -41,8 +41,7 @@ {$ifdef NDS_INTERFACE} type - IRQ_MASKS = cuint; - IRQ_MASK = IRQ_MASKS; + IRQ_MASK = cuint; const IRQ_VBLANK : IRQ_MASK = (1 shl 0); (* vertical blank interrupt mask *) IRQ_HBLANK : IRQ_MASK = (1 shl 1); (* horizontal blank interrupt mask *) @@ -67,7 +66,10 @@ const IRQ_LID : IRQ_MASK = (1 shl 22); (* interrupt mask *) IRQ_SPI : IRQ_MASK = (1 shl 23); (* SPI interrupt mask *) IRQ_WIFI : IRQ_MASK = (1 shl 24); (* WIFI interrupt mask (ARM7)*) - IRQ_ALL : IRQ_MASK = $FFFFFF {not 0}; + IRQ_ALL : IRQ_MASK = (not 0); //$FFFFFF ? + + +function IRQ_TIMER(n: cint): cint; inline; const MAX_INTERRUPTS = 25; @@ -121,3 +123,13 @@ procedure irqInitHandler(handler: pointer); cdecl; external; procedure irqEnable(irq: cuint32); cdecl; external; procedure irqDisable(irq: cuint32); cdecl; external; {$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} + +function IRQ_TIMER(n: cint): cint; inline; +begin + result := (1 shl (n + 3)); +end; + +{$endif NDS_IMPLEMENTATION} + diff --git a/packages/libndsfpc/src/nds/ipc.inc b/packages/libndsfpc/src/nds/ipc.inc index 42e7586612..9fcff80d44 100644 --- a/packages/libndsfpc/src/nds/ipc.inc +++ b/packages/libndsfpc/src/nds/ipc.inc @@ -53,55 +53,13 @@ type TTransferSoundData = TransferSoundData; PTransferSoundData = ^sTransferSoundData; - sTransferSound = record - data: array [0..15] of TransferSoundData; - count: cuint8; - PADDING: array [0..2] of cuint8; - end; - TransferSound = sTransferSound; - TTransferSound = TransferSound; - PTransferSound = ^sTransferSound; - sTransferRegion = record - touchX, touchY: cint16; // TSC X, Y - touchXpx, touchYpx: cint16; // TSC X, Y pixel values - touchZ1, touchZ2: cint16; // TSC x-panel measurements - tdiode1, tdiode2: cuint16; // TSC temperature diodes - temperature: cuint32; // TSC computed temperature + touchX, touchY: cint16; + touchXpx, touchYpx: cint16; + touchZ1, touchZ2: cint16; - buttons: cuint16; // X, Y, /PENIRQ buttons - - time: record - case integer of - 0: (curtime: array [0..7] of cuint8); // current time response from RTC - 1: (rtc: record - command: cuint8; - year: cuint8; //add 2000 to get 4 digit year - month: cuint8; //1 to 12 - day: cuint8; //1 to (days in month) - - incr: cuint8; - hours: cuint8; //0 to 11 for AM, 52 to 63 for PM - minutes: cuint8; //0 to 59 - seconds: cuint8; //0 to 59 - end; - ); - end; -// unixTime: cint32; // Moved! - - battery: cuint16; // battery life ?? hopefully. :) - aux: cuint16; // i have no idea... + buttons: cuint16; - - // Don't rely on these below, will change or be removed in the future - soundData: PTransferSound; - mailAddr: cuint32; - mailData: cuint32; - mailRead: cuint8; - mailBusy: cuint8; - mailSize: cuint32; - - // unixTime here, because in the old position it breaked nds sound system O_o unixTime: cint32; end; TransferRegion = sTransferRegion; @@ -112,11 +70,6 @@ type const //IPC : pTransferRegion = pointer($027FF000); - IPC_PEN_DOWN = (1 shl 6); - IPC_X = (1 shl 0); - IPC_Y = (1 shl 1); - IPC_LID_CLOSED = (1 shl 7); - //--------------------------------------------------------------------------------- // Synchronization register //--------------------------------------------------------------------------------- @@ -127,33 +80,13 @@ type const IPC_SYNC_IRQ_ENABLE: IPC_SYNC_BITS = (1 shl 14); IPC_SYNC_IRQ_REQUEST: IPC_SYNC_BITS = (1 shl 13); -{$endif NDS_INTERFACE} - - -{$ifdef NDS_IMPLEMENTATION} + + function getIPC(): PTransferRegion; inline; -begin - getIPC := PTransferRegion(pointer($027FF000)); -end; - function IPC(): PTransferRegion; inline; -begin - IPC := getIPC(); -end; - procedure IPC_SendSync(sync: cuint); inline; -begin - REG_IPC_SYNC^ := (REG_IPC_SYNC^ and $f0ff) or (((sync) and $0f) shl 8) or IPC_SYNC_IRQ_REQUEST; -end; - function IPC_GetSync(): cint; inline; -begin - IPC_GetSync := REG_IPC_SYNC^ and $0f; -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} const REG_IPC_FIFO_TX : pcuint32 = pointer($04000188); REG_IPC_FIFO_RX : pcuint32 = pointer($04100000); @@ -174,9 +107,24 @@ const IPC_FIFO_ENABLE : IPC_CONTROL_BITS = (1 shl 15); {$endif NDS_INTERFACE} -{$ifdef NDS_INTERFACE} +{$ifdef NDS_IMPLEMENTATION} function getIPC(): PTransferRegion; inline; +begin + getIPC := PTransferRegion(pointer($027FF000)); +end; + function IPC(): PTransferRegion; inline; +begin + IPC := getIPC(); +end; + procedure IPC_SendSync(sync: cuint); inline; +begin + REG_IPC_SYNC^ := (REG_IPC_SYNC^ and $f0ff) or (((sync) and $0f) shl 8) or IPC_SYNC_IRQ_REQUEST; +end; + function IPC_GetSync(): cint; inline; -{$endif NDS_INTERFACE} +begin + IPC_GetSync := REG_IPC_SYNC^ and $0f; +end; +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/linkedlist.inc b/packages/libndsfpc/src/nds/linkedlist.inc new file mode 100644 index 0000000000..3835628612 --- /dev/null +++ b/packages/libndsfpc/src/nds/linkedlist.inc @@ -0,0 +1,87 @@ +(*--------------------------------------------------------------------------------- + + A simple linked list data structure + + Copyright (C) 2008 + Jason Rogers (dovoto) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + 3. This notice may not be removed or altered from any source + distribution. + + +---------------------------------------------------------------------------------*) + +{$ifdef NDS_INTERFACE} + +type + PLinkedList = ^LinkedList; + PPLinkedList = ^PLinkedList; + LinkedList = record + next: PLinkedList; + prev: PLinkedList; + data: pointer; + end; + TLinkedList = LinkedList; + +function linkedlistAdd(front: PLinkedList; data: pointer): PLinkedList; inline; +procedure linkedlistRemove(node: PLinkedList); inline; + +{$endif NDS_INTERFACE} + + +{$ifdef NDS_IMPLEMENTATION} +function linkedlistAdd(front: PLinkedList; data: pointer): PLinkedList; inline; +var + node: PLinkedList; +begin + GetMem(node, sizeof(LinkedList)); + + node^.prev := nil; + + if (front = nil) then + begin + node^.next := nil; + + node^.data := data; + + front := node; + + result := node; + end; + + node^.next := front; + + front^.prev := node; + + result := node; +end; + + +procedure linkedlistRemove(node: PLinkedList); inline; +begin + if (node = nil) then exit; + + if (node^.prev <> nil) then + node^.prev^.next := node^.next; + + if (node^.next <> nil) then + node^.next^.prev := node^.prev; + + FreeMem(node); +end; + +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/memory.inc b/packages/libndsfpc/src/nds/memory.inc index a5519a1421..2f3f7964ac 100644 --- a/packages/libndsfpc/src/nds/memory.inc +++ b/packages/libndsfpc/src/nds/memory.inc @@ -39,7 +39,7 @@ *) {$ifdef NDS_INTERFACE} -// WAIT_CR: Wait State Control Register + const {$ifdef ARM9} REG_EXMEMCNT : pcuint16 = pointer($04000204); @@ -71,38 +71,6 @@ const SRAM : pcuint8 = pointer($0A000000); - -{$ifdef ARM9} - PALETTE : pcuint16 = pointer($05000000); - PALETTE_SUB : pcuint16 = pointer($05000400); - - BG_PALETTE : pcuint16 = pointer($05000000); - BG_PALETTE_SUB : pcuint16 = pointer($05000400); - - SPRITE_PALETTE : pcuint16 = pointer($05000200); - SPRITE_PALETTE_SUB : pcuint16 = pointer($05000600); - - BG_GFX : pcuint16 = pointer($06000000); - BG_GFX_SUB : pcuint16 = pointer($06200000); - SPRITE_GFX : pcuint16 = pointer($06400000); - SPRITE_GFX_SUB : pcuint16 = pointer($06600000); - - VRAM_0 : pcuint16 = pointer($06000000); - VRAM : pcuint16 = pointer($06800000); - VRAM_A : pcuint16 = pointer($06800000); - VRAM_B : pcuint16 = pointer($06820000); - VRAM_C : pcuint16 = pointer($06840000); - VRAM_D : pcuint16 = pointer($06860000); - VRAM_E : pcuint16 = pointer($06880000); - VRAM_F : pcuint16 = pointer($06890000); - VRAM_G : pcuint16 = pointer($06894000); - VRAM_H : pcuint16 = pointer($06898000); - VRAM_I : pcuint16 = pointer($068A0000); - - OAM : pcuint16 = pointer($07000000); - OAM_SUB : pcuint16 = pointer($07000400); -{$endif ARM9} - {$ifdef ARM7} VRAM : pcuint16 = pointer($06000000); {$endif ARM7} @@ -192,7 +160,7 @@ type pNDSHeader = ^tNDSHeader; const - NDSHeader : pNDSHeader = pointer($027FFE00); + __NDSHeader : pNDSHeader = pointer($027FFE00); type @@ -214,6 +182,10 @@ type const BUS_OWNER_ARM9 = true; BUS_OWNER_ARM7 = false; + +procedure sysSetCartOwner(arm9: cbool); inline; +procedure sysSetCardOwner(arm9: cbool); inline; +procedure sysSetBusOwners(arm9rom, arm9card: cbool); inline; {$endif NDS_INTERFACE} {$ifdef NDS_IMPLEMENTATION} @@ -262,11 +234,3 @@ begin end; {$endif NDS_IMPLEMENTATION} {$endif ARM9} - -{$ifdef NDS_INTERFACE} -{$ifdef ARM9} -procedure sysSetCartOwner(arm9: cbool); inline; -procedure sysSetCardOwner(arm9: cbool); inline; -procedure sysSetBusOwners(arm9rom, arm9card: cbool); inline; -{$endif ARM9} -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/nds.inc b/packages/libndsfpc/src/nds/nds.inc index 42da1454f0..61ace700b0 100644 --- a/packages/libndsfpc/src/nds/nds.inc +++ b/packages/libndsfpc/src/nds/nds.inc @@ -99,6 +99,7 @@ {$include arm9/rumble.inc} {$include arm9/sound.inc} {$include arm9/trig_lut.inc} + {$include arm9/ndsmotion.inc} {$include arm9/video.inc} {$include arm9/videoGL.inc} {$include arm9/sprite.inc} diff --git a/packages/libndsfpc/src/nds/ndsinclude.inc b/packages/libndsfpc/src/nds/ndsinclude.inc index 485cc4856b..7b6531d5bd 100644 --- a/packages/libndsfpc/src/nds/ndsinclude.inc +++ b/packages/libndsfpc/src/nds/ndsinclude.inc @@ -1,39 +1,51 @@ {$include helper.inc} -{$include jtypes.inc} +{$include ndstypes.inc} {$include bios.inc} {$include card.inc} +{$include debug.inc} +{$include disc_io.inc} {$include dma.inc} {$include interrupts.inc} {$include ipc.inc} {$include memory.inc} +{$include touch.inc} +{$include fifocommon.inc} {$include system.inc} {$include timers.inc} -{$include reload.inc} +{$include fifomessages.inc} +{$include linkedlist.inc} +{$include dynamicArray.inc} + {$ifdef ARM9} + {$include arm9/sassert.inc} {$include arm9/background.inc} - {$include arm9/boxtest.inc} {$include arm9/cache.inc} {$include arm9/console.inc} + {$include arm9/keyboard.inc} {$include arm9/exceptions.inc} {$include arm9/image.inc} {$include arm9/input.inc} {$include arm9/math.inc} - {$include arm9/ndsmotion.inc} {$include arm9/pcx.inc} {$include arm9/rumble.inc} {$include arm9/sound.inc} - {$include arm9/sprite.inc} {$include arm9/trig_lut.inc} {$include arm9/video.inc} {$include arm9/videoGL.inc} {$include arm9/postest.inc} + {$include arm9/boxtest.inc} + {$include arm9/sprite.inc} + {$include arm9/decompress.inc} + {$include arm9/ndsmotion.inc} {$endif ARM9} {$ifdef ARM7} {$include arm7/audio.inc} {$include arm7/clock.inc} + {$include arm7/input.inc} {$include arm7/serial.inc} + { $include arm7/system.inc} {$include arm7/touch.inc} {$endif ARM7} diff --git a/packages/libndsfpc/src/nds/ndstypes.inc b/packages/libndsfpc/src/nds/ndstypes.inc new file mode 100644 index 0000000000..7543381245 --- /dev/null +++ b/packages/libndsfpc/src/nds/ndstypes.inc @@ -0,0 +1,160 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + Copyright (C) 2005 + Jason Rogers (dovoto) + Dave Murphy (WinterMute) + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any + damages arising from the use of this software. + + Permission is granted to anyone to use this software for any + purpose, including commercial applications, and to alter it and + redistribute it freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you + must not claim that you wrote the original software. If you use + this software in a product, an acknowledgment in the product + documentation would be appreciated but is not required. + + 2. Altered source versions must be plainly marked as such, and + must not be misrepresented as being the original software. + + 3. This notice may not be removed or altered from any source + distribution. + ------------------------------------------------------------------------------ + + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + Check http://sourceforge.net/projects/libndsfpc for updates + + ------------------------------------------------------------------------------ + + $Log$ + +*) + +//--------------------------------------------------------------------------------- +{ +//--------------------------------------------------------------------------------- +// libgba compatible section macros +//--------------------------------------------------------------------------------- +#define ITCM_CODE __attribute__((section(".itcm"), long_call)) + +#define DTCM_DATA __attribute__((section(".dtcm"))) +#define DTCM_BSS __attribute__((section(".sbss"))) +#define ALIGN(m) __attribute__((aligned (m))) + +#define PACKED __attribute__ ((packed)) +#define packed_struct struct PACKED +} +//--------------------------------------------------------------------------------- +// These are linked to the bin2o macro in the Makefile +//--------------------------------------------------------------------------------- +{ ### To do +#define GETRAW(name) (name) +#define GETRAWSIZE(name) ((int)name##_size) +#define GETRAWEND(name) ((int)name##_end) +} + +{$ifdef NDS_INTERFACE} +type + (* Unsigned types *) + uint8 = cuint8; + uint16 = cuint16; + uint32 = cuint32; + uint64 = cuint64; + puint8 = pcuint8; + puint16 = pcuint16; + puint32 = pcuint32; + puint64 = pcuint64; + + (* Signed types *) + int8 = cint8; + int16 = cint16; + int32 = cint32; + pint8 = pcint8; + pint16 = pcint16; + pint32 = pcint32; + pint64 = pcint64; + + + float32 = cfloat; + +{ +typedef volatile uint8 vuint8; +typedef volatile uint16 vuint16; +typedef volatile uint32 vuint32; +typedef volatile uint64 vuint64; + +typedef volatile int8 vint8; +typedef volatile int16 vint16; +typedef volatile int32 vint32; +typedef volatile int64 vint64; + +typedef volatile float32 vfloat32; +typedef volatile float64 vfloat64; +} + + +{ +typedef volatile int32 vfixed; +} + + u8 = cuint8; + u16 = cuint16; + u32 = cuint32; + u64 = cuint64; + pu8 = pcuint8; + pu16 = pcuint16; + pu32 = pcuint32; + pu64 = pcuint64; + + s8 = cint8; + s16 = cint16; + s32 = cint32; + s64 = cint64; + ps8 = pcint8; + ps16 = pcint16; + ps32 = pcint32; + ps64 = pcint64; + + cbool = boolean; + pcbool = ^cbool; +{ +typedef volatile u8 vu8; +typedef volatile u16 vu16; +typedef volatile u32 vu32; +typedef volatile u64 vu64; + +typedef volatile s8 vs8; +typedef volatile s16 vs16; +typedef volatile s32 vs32; +typedef volatile s64 vs64; +} + + + //IntFn = function: pointer; + VoidFunctionPointer = function: pointer; cdecl; + //fp = function: pointer; + + IntFn = procedure; + //VoidFunctionPointer = procedure; cdecl; + fp = procedure; +{$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} +function BIT(n: cint): cint; inline; +begin + BIT := (1 shl (n)); +end; +{$endif NDS_IMPLEMENTATION} + + +{$ifdef NDS_INTERFACE} +function BIT(n: cint): cint; inline; +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/registers_alt.inc b/packages/libndsfpc/src/nds/registers_alt.inc index 5c36b2a049..3415cfd143 100644 --- a/packages/libndsfpc/src/nds/registers_alt.inc +++ b/packages/libndsfpc/src/nds/registers_alt.inc @@ -43,7 +43,29 @@ type f32 = integer; const - REG_DISPCNT : pcuint32 = pointer($4000000); + DIV_CR = REG_DIVCNT; + + DIV_NUMERATOR64 = REG_DIV_NUMER; + DIV_NUMERATOR32 = REG_DIV_NUMER_L; + + DIV_DENOMINATOR64 = REG_DIV_DENOM; + DIV_DENOMINATOR32 = REG_DIV_DENOM_L; + + DIV_RESULT64 = REG_DIV_RESULT; + DIV_RESULT32 = REG_DIV_RESULT_L; + + DIV_REMAINDER64 = REG_DIVREM_RESULT; + DIV_REMAINDER32 = REG_DIVREM_RESULT_L; + + SQRT_CR = REG_SQRTCNT; + + SQRT_PARAM64 = REG_SQRT_PARAM; + SQRT_PARAM32 = REG_SQRT_PARAM_L; + + SQRT_RESULT32 = REG_SQRT_RESULT; + + + DISPLAY_CR = REG_DISPCNT; {$ifdef ARM9} {$define WAIT_CR := REG_EXMEMCNT} @@ -54,46 +76,33 @@ const {$define DISP_SR := REG_DISPSTAT} {$define DISP_Y := REG_VCOUNT} - REG_BGCTRL : pcuint16 = pointer($4000008); - REG_BG0CNT : pcuint16 = pointer($4000008); - REG_BG1CNT : pcuint16 = pointer($400000A); - REG_BG2CNT : pcuint16 = pointer($400000C); - REG_BG3CNT : pcuint16 = pointer($400000E); - - REG_BGOFFSETS : pcuint16 = pointer($4000010); - REG_BG0HOFS : pcuint16 = pointer($4000010); - REG_BG0VOFS : pcuint16 = pointer($4000012); - REG_BG1HOFS : pcuint16 = pointer($4000014); - REG_BG1VOFS : pcuint16 = pointer($4000016); - REG_BG2HOFS : pcuint16 = pointer($4000018); - REG_BG2VOFS : pcuint16 = pointer($400001A); - REG_BG3HOFS : pcuint16 = pointer($400001C); - REG_BG3VOFS : pcuint16 = pointer($400001E); - - REG_BG2PA : pcuint16 = pointer($4000020); - REG_BG2PB : pcuint16 = pointer($4000022); - REG_BG2PC : pcuint16 = pointer($4000024); - REG_BG2PD : pcuint16 = pointer($4000026); - - REG_BG2X : pcuint32 = pointer($4000028); - REG_BG2X_L : pcuint16 = pointer($4000028); - REG_BG2X_H : pcuint16 = pointer($400002A); - - REG_BG2Y : pcuint32 = pointer($400002C); - REG_BG2Y_L : pcuint16 = pointer($400002C); - REG_BG2Y_H : pcuint16 = pointer($400002E); - - REG_BG3PA : pcuint16 = pointer($4000030); - REG_BG3PB : pcuint16 = pointer($4000032); - REG_BG3PC : pcuint16 = pointer($4000034); - REG_BG3PD : pcuint16 = pointer($4000036); - - REG_BG3X : pcuint32 = pointer($4000038); - REG_BG3X_L : pcuint16 = pointer($4000038); - REG_BG3X_H : pcuint16 = pointer($400003A); - REG_BG3Y : pcuint32 = pointer($400003C); - REG_BG3Y_L : pcuint16 = pointer($400003C); - REG_BG3Y_H : pcuint16 = pointer($400003E); + BG0_CR = REG_BG0CNT; + BG1_CR = REG_BG1CNT; + BG2_CR = REG_BG2CNT; + BG3_CR = REG_BG3CNT; + + BG0_X0 = REG_BG0HOFS; + BG0_Y0 = REG_BG0VOFS; + BG1_X0 = REG_BG1HOFS; + BG1_Y0 = REG_BG1VOFS; + BG2_X0 = REG_BG2HOFS; + BG2_Y0 = REG_BG2VOFS; + BG3_X0 = REG_BG3HOFS; + BG3_Y0 = REG_BG3VOFS; + + BG2_XDX = REG_BG2PA; + BG2_XDY = REG_BG2PB; + BG2_YDX = REG_BG2PC; + BG2_YDY = REG_BG2PD; + BG2_CX = REG_BG2X; + BG2_CY = REG_BG2Y; + + BG3_XDX = REG_BG3PA; + BG3_XDY = REG_BG3PB; + BG3_YDX = REG_BG3PC; + BG3_XDY = REG_BG3PD; + BG3_CX = REG_BG3X; + BG3_CY = REG_BG3Y; REG_WIN0H : pcuint16 = pointer($4000040); REG_WIN1H : pcuint16 = pointer($4000042); @@ -106,9 +115,13 @@ const REG_MOSAIC_L : pcuint32 = pointer($400004C); REG_MOSAIC_H : pcuint32 = pointer($400004E); - REG_BLDMOD : pcuint16 = pointer($4000050); - REG_COLV : pcuint16 = pointer($4000052); - REG_COLY : pcuint16 = pointer($4000054); + BLEND_CR = REG_BLDCNT; + BLEND_AB = REG_BLDALPHA; + BLEND_Y = REG_BLDY; + + SUB_BLEND_CR = REG_BLDCNT_SUB; + SUB_BLEND_AB = REG_BLDALPHA_SUB; + SUB_BLEND_Y = REG_BLDY_SUB; {$ifdef ARM7} {$define SERIAL_CR := REG_SPICNT} @@ -116,43 +129,42 @@ const {$define SIO_CR := REG_SIOCNT} {$define R_CR := REG_RCNT} {$endif ARM7} + + DISP_CAPTURE = REG_DISPCAPCNT; + + BRIGHTNESS = REG_MASTER_BRIGHT; + SUB_BRIGHTNESS = REG_MASTER_BRIGHT_SUB; + (* secondary screen *) - REG_DISPCNT_SUB : pcuint32 = pointer($4001000); - REG_BGCTRL_SUB : pcuint16 = pointer($4001008); - REG_BG0CNT_SUB : pcuint16 = pointer($4001008); - REG_BG1CNT_SUB : pcuint16 = pointer($400100A); - REG_BG2CNT_SUB : pcuint16 = pointer($400100C); - REG_BG3CNT_SUB : pcuint16 = pointer($400100E); - - REG_BGOFFSETS_SUB : pcuint16 = pointer($4001010); - REG_BG0HOFS_SUB : pcuint16 = pointer($4001010); - REG_BG0VOFS_SUB : pcuint16 = pointer($4001012); - REG_BG1HOFS_SUB : pcuint16 = pointer($4001014); - REG_BG1VOFS_SUB : pcuint16 = pointer($4001016); - REG_BG2HOFS_SUB : pcuint16 = pointer($4001018); - REG_BG2VOFS_SUB : pcuint16 = pointer($400101A); - REG_BG3HOFS_SUB : pcuint16 = pointer($400101C); - REG_BG3VOFS_SUB : pcuint16 = pointer($400101E); - - REG_BG2PA_SUB : pcuint16 = pointer($4001020); - REG_BG2PB_SUB : pcuint16 = pointer($4001022); - REG_BG2PC_SUB : pcuint16 = pointer($4001024); - REG_BG2PD_SUB : pcuint16 = pointer($4001026); - - REG_BG2X_SUB : pcuint32 = pointer($4001028); - REG_BG2Y_SUB : pcuint32 = pointer($400102C); - - REG_BG3PA_SUB : pcuint16 = pointer($4001030); - REG_BG3PB_SUB : pcuint16 = pointer($4001032); - REG_BG3PC_SUB : pcuint16 = pointer($4001034); - REG_BG3PD_SUB : pcuint16 = pointer($4001036); - - REG_BG3X_SUB : pcuint32 = pointer($4001038); - REG_BG3X_L_SUB : pcuint16 = pointer($4001038); - REG_BG3X_H_SUB : pcuint16 = pointer($400103A); - REG_BG3Y_SUB : pcuint32 = pointer($400103C); - REG_BG3Y_L_SUB : pcuint16 = pointer($400103C); - REG_BG3Y_H_SUB : pcuint16 = pointer($400103E); + SUB_DISPLAY_CR = REG_DISPCNT_SUB; + + SUB_BG0_CR = REG_BG0CNT_SUB; + SUB_BG1_CR = REG_BG1CNT_SUB; + SUB_BG2_CR = REG_BG2CNT_SUB; + SUB_BG3_CR = REG_BG3CNT_SUB; + + SUB_BG0_X0 = REG_BG0HOFS_SUB; + SUB_BG0_Y0 = REG_BG0VOFS_SUB; + SUB_BG1_X0 = REG_BG1HOFS_SUB; + SUB_BG1_Y0 = REG_BG1VOFS_SUB; + SUB_BG2_X0 = REG_BG2HOFS_SUB; + SUB_BG2_Y0 = REG_BG2VOFS_SUB; + SUB_BG3_X0 = REG_BG3HOFS_SUB; + SUB_BG3_Y0 = REG_BG3VOFS_SUB; + + SUB_BG2_XDX = REG_BG2PA_SUB; + SUB_BG2_XDY = REG_BG2PB_SUB; + SUB_BG2_YDX = REG_BG2PC_SUB; + SUB_BG2_YDY = REG_BG2PD_SUB; + SUB_BG2_CX = REG_BG2X_SUB; + SUB_BG2_CY = REG_BG2Y_SUB; + + SUB_BG3_XDX = REG_BG3PA_SUB; + SUB_BG3_XDY = REG_BG3PB_SUB; + SUB_BG3_YDX = REG_BG3PC_SUB; + SUB_BG3_XDY = REG_BG3PD_SUB; + SUB_BG3_CX = REG_BG3X_SUB; + SUB_BG3_CY = REG_BG3Y_SUB; REG_WIN0H_SUB : pcuint16 = pointer($4001040); REG_WIN1H_SUB : pcuint16 = pointer($4001042); @@ -162,16 +174,15 @@ const REG_WINOUT_SUB : pcuint16 = pointer($400104A); REG_MOSAIC_SUB : pcuint32 = pointer($400104C); - REG_MOSAIC_L_SUB : pcuint32 = pointer($400104C); - REG_MOSAIC_H_SUB : pcuint32 = pointer($400104E); + REG_MOSAIC_L_SUB : pcuint16 = pointer($400104C); + REG_MOSAIC_H_SUB : pcuint16 = pointer($400104E); REG_BLDMOD_SUB : pcuint16 = pointer($4001050); REG_COLV_SUB : pcuint16 = pointer($4001052); REG_COLY_SUB : pcuint16 = pointer($4001054); (*common*) - REG_DMA : pcuint32 = pointer($40000B0); - + REG_DMA0SAD : pcuint32 = pointer($40000B0); REG_DMA0SAD_L : pcuint16 = pointer($40000B0); REG_DMA0SAD_H : pcuint16 = pointer($40000B2); @@ -310,4 +321,8 @@ const REG_CARD_1B4 : pcuint32 = pointer($040001B4); REG_CARD_1B8 : pcuint16 = pointer($040001B8); REG_CARD_1BA : pcuint16 = pointer($040001BA); + + SOUND_CR = REG_SOUNDCNT; + SOUND_MASTER_VOL = REG_MASTER_VOLUME; + SOUND_BIAS = REG_SOUNDBIAS; {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/reload.inc b/packages/libndsfpc/src/nds/reload.inc deleted file mode 100644 index 2af937abb8..0000000000 --- a/packages/libndsfpc/src/nds/reload.inc +++ /dev/null @@ -1,84 +0,0 @@ -(* - $Id: reload.inc 25 2007-12-10 21:06:46Z p4p3r0 $ - ------------------------------------------------------------------------------ - Copyright (C) 2005 - Jason Rogers (dovoto) - Dave Murphy (WinterMute) - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any - damages arising from the use of this software. - - Permission is granted to anyone to use this software for any - purpose, including commercial applications, and to alter it and - redistribute it freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you - must not claim that you wrote the original software. If you use - this software in a product, an acknowledgment in the product - documentation would be appreciated but is not required. - - 2. Altered source versions must be plainly marked as such, and - must not be misrepresented as being the original software. - - 3. This notice may not be removed or altered from any source - distribution. - ------------------------------------------------------------------------------ - - - Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler - (http://www.freepascal.org) - - Copyright (C) 2006 Francesco Lombardi - Check http://sourceforge.net/projects/libndsfpc for updates - - ------------------------------------------------------------------------------ - - $Log$ - -*) - -{$ifdef NDS_INTERFACE} -type - COPYFUNC = function (const value: pcchar): pointer; - QUERYFUNC = function(value: cuint32): pcuint32; - - LOADER_DATA = record - VERSION: cuint32; // contains version information about loader - QUERY: QUERYFUNC; // used to retreive extended information from loader - ARM7FUNC: COPYFUNC; // a pointer to the ARM7 load function - ARM9FUNC: COPYFUNC; // a pointer to the ARM9 load function - PATH: pcchar; // THIS VALUE IS SET FOR YOU, DONT TOUCH IT - RESERVED: cuint32; // reserved for future expansion - end; - TLOADER_DATA = LOADER_DATA; - PLOADER_DATA = ^LOADER_DATA; - -const - LOADNDS : PLOADER_DATA = pointer($02800000-48); - BOOT_NDS = pcchar(-1); -{$endif NDS_INTERFACE} - - - -(* -dump this near the begining of your ARM7's main function - -LOADNDS->PATH = 0; - - -inside of your ARM7's main loop or VBlank IRQ or what-ever, add this code: - -if (LOADNDS->PATH != 0) { - LOADNDS->ARM7FUNC(LOADNDS->PATH); -} - - -////////////////////////////////////// - -in your ARM9 code, to return to the menu, call this function: - -WAIT_CR &= ~0x8080; -LOADNDS->ARM9FUNC(BOOT_NDS); - -*) diff --git a/packages/libndsfpc/src/nds/system.inc b/packages/libndsfpc/src/nds/system.inc index bfc498109f..d2d440d25d 100644 --- a/packages/libndsfpc/src/nds/system.inc +++ b/packages/libndsfpc/src/nds/system.inc @@ -41,89 +41,112 @@ {$ifdef NDS_INTERFACE} const REG_DISPSTAT : pcuint16 = pointer($04000004); - DISP_IN_VBLANK = (1 shl 0); - DISP_IN_HBLANK = (1 shl 1); - DISP_YTRIGGERED = (1 shl 2); - DISP_VBLANK_IRQ = (1 shl 3); - DISP_HBLANK_IRQ = (1 shl 4); - DISP_YTRIGGER_IRQ = (1 shl 5); -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -procedure SetYtrigger(Yvalue: cint); inline; -begin - REG_DISPSTAT^ := (REG_DISPSTAT^ and $007F ) or (Yvalue shl 8) or (( Yvalue and $100 ) shr 2); -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} + +type + DISP_BITS = cint; const + DISP_IN_VBLANK : DISP_BITS = (1 shl 0); + DISP_IN_HBLANK : DISP_BITS = (1 shl 1); + DISP_YTRIGGERED : DISP_BITS = (1 shl 2); + DISP_VBLANK_IRQ : DISP_BITS = (1 shl 3); + DISP_HBLANK_IRQ : DISP_BITS = (1 shl 4); + DISP_YTRIGGER_IRQ : DISP_BITS = (1 shl 5); + REG_VCOUNT : pcuint16 = pointer($04000006); HALT_CR : pcuint16 = pointer($04000300); REG_POWERCNT : pcuint16 = pointer($04000304); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} -procedure powerON(Aon: cint); inline; -begin - REG_POWERCNT^ := REG_POWERCNT^ or Aon; -end; +procedure SetYtrigger(Yvalue: cint); inline; -procedure powerSET(Aon: cint); inline; -begin - REG_POWERCNT^ := Aon; -end; +const + PM_ARM9_DIRECT = (1 shl 16); -procedure powerOFF(off: cint); inline; -begin - REG_POWERCNT^ := REG_POWERCNT^ and (not off); -end; -{$endif NDS_IMPLEMENTATION} +type + PM_Bits = cint; +const + PM_SOUND_AMP : PM_Bits = (1 shl 0); + PM_SOUND_MUTE : PM_Bits = (1 shl 1); + PM_BACKLIGHT_BOTTOM : PM_Bits = (1 shl 2); + PM_BACKLIGHT_TOP : PM_Bits = (1 shl 3); + PM_SYSTEM_PWR : PM_Bits = (1 shl 6); + + POWER_LCD : PM_Bits = PM_ARM9_DIRECT or (1 shl 0); + POWER_2D_A : PM_Bits = PM_ARM9_DIRECT or (1 shl 1); + POWER_MATRIX : PM_Bits = PM_ARM9_DIRECT or (1 shl 2); + POWER_3D_CORE : PM_Bits = PM_ARM9_DIRECT or (1 shl 3); + POWER_2D_B : PM_Bits = PM_ARM9_DIRECT or (1 shl 9); + POWER_SWAP_LCDS: PM_Bits = PM_ARM9_DIRECT or (1 shl 15); + POWER_ALL_2D : PM_Bits = PM_ARM9_DIRECT or (1 shl 0) or (1 shl 1) or (1 shl 9); + POWER_ALL : PM_Bits = PM_ARM9_DIRECT or (1 shl 0) or (1 shl 1) or (1 shl 9) or (1 shl 3) or (1 shl 2); +procedure sleep(); cdecl; external; {$ifdef ARM9} -{$ifdef NDS_INTERFACE} -const - POWER_LCD = (1 shl 0); - POWER_2D_A = (1 shl 1); - POWER_MATRIX = (1 shl 2); - POWER_3D_CORE = (1 shl 3); - POWER_2D_B = (1 shl 9); - POWER_SWAP_LCDS = (1 shl 15); - POWER_ALL_2D = (POWER_LCD or POWER_2D_A or POWER_2D_B); - POWER_ALL = (POWER_ALL_2D or POWER_3D_CORE or POWER_MATRIX); -{$endif NDS_INTERFACE} +procedure powerOn(bits: PM_Bits); cdecl; external; +procedure powerOff(bits: PM_Bits); cdecl; external; +procedure ledBlink(bm: PM_LedBlinkMode); cdecl; external; -{$ifdef NDS_IMPLEMENTATION} -procedure lcdSwap(); inline; -begin - REG_POWERCNT^ := REG_POWERCNT^ xor POWER_SWAP_LCDS; -end; +procedure systemMsgHandler(bytes: cint; user_data: pointer); cdecl; external; +procedure powerValueHandler(value: cuint32; data: pointer); cdecl; external; +procedure lcdSwap(); inline; procedure lcdMainOnTop(); inline; -begin - REG_POWERCNT^ := REG_POWERCNT^ or cint(POWER_SWAP_LCDS); -end; - procedure lcdMainOnBottom(); inline; -begin - REG_POWERCNT^ := REG_POWERCNT^ and (not cint(POWER_SWAP_LCDS)); -end; -{$endif NDS_IMPLEMENTATION} + + +procedure setVectorBase(highVector: cint); cdecl; external; + +type + sysVectors_t = packed record + reset: cuint32; + undefined: cuint32; + swi: cuint32; + prefetch_abort: cuint32; + data_abort: cuint32; + fiq: cuint32; + end; + sysVectors = sysVectors_t; + PsysVectors = ^sysVectors; + +var + SystemVectors: sysVectors; cvar; external; + {$endif ARM9} + {$ifdef ARM7} -{$ifdef NDS_INTERFACE} +type + ARM7_power = cint; const - POWER_SOUND = (1 shl 0); - POWER_UNKNOWN = (1 shl 1); + POWER_SOUND : ARM7_power = (1 shl 0); + PM_CONTROL_REG : ARM7_power = 0; + PM_BATTERY_REG : ARM7_power = 1; + PM_AMPLIFIER_REG: ARM7_power = 2; + PM_READ_REGISTER: ARM7_power = (1 shl 7); + PM_AMP_OFFSET : ARM7_power = 2; + PM_GAIN_OFFSET : ARM7_power = 3; + PM_GAIN_20 : ARM7_power = 0; + PM_GAIN_40 : ARM7_power = 1; + PM_GAIN_80 : ARM7_power = 2; + PM_GAIN_160 : ARM7_power = 3; + PM_AMP_ON : ARM7_power = 1; + PM_AMP_OFF : ARM7_power = 0; + +function PM_LED_CONTROL(m: cint): cint; inline; + +procedure installSystemFIFO(); cdecl; external; +procedure systemSleep(); cdecl; external; +function sleepEnabled(): cint; cdecl; external; +function writePowerManagement(reg, command: cint): cint; cdecl; external; + +function readPowerManagement(reg: cint): cint; inline; + +procedure powerOn(bits: PM_Bits); inline; +procedure powerOff(bits: PM_Bits); inline; procedure readUserSettings(); cdecl; external; -{$endif NDS_INTERFACE} {$endif ARM7} - -{$ifdef NDS_INTERFACE} type tPERSONAL_DATA = bitpacked record RESERVED0: array [0..1] of cuint8; @@ -161,7 +184,7 @@ type gbaScreen: 0..1; defaultBrightness: 0..2; autoMode: 0..1; - RESERVED4: 0..1; + RESERVED1: 0..2; settingsLost: 0..1; RESERVED2: 0..6; end; @@ -179,28 +202,81 @@ const type + ppcchar = ^pcchar; __argv = record argvMagic: cint; // argv magic number, set to 0x5f617267 ('_arg') if valid commandLine: pcchar; // base address of command line, set of null terminated strings length: cint; // total length of command line + argc: integer; + argv: ppcchar; end; Targv = __argv; Pargv = ^Targv; const - libnds_argv: Pargv = pointer($027FFF70); - argvMagic = $5f617267; + __system_argv: Pargv = pointer($027FFF70); + ARGV_MAGIC = $5f617267; + + +type + RTCtime = packed record + year: cuint8; // add 2000 to get 4 digit year + month: cuint8; // 1 to 12 + day: cuint8; // 1 to (days in month) + weekday: cuint8; // day of week + hours: cuint8; // 0 to 11 for AM, 52 to 63 for PM + minutes: cuint8; // 0 to 59 + seconds: cuint8; // 0 to 59 + padding: cuint8; + end; + {$endif NDS_INTERFACE} +{$ifdef NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} procedure SetYtrigger(Yvalue: cint); inline; -procedure powerON(Aon: cint); inline; -procedure powerSET(Aon: cint); inline; -procedure powerOFF(off: cint); inline; -{$ifdef ARM9} +begin + REG_DISPSTAT^ := (REG_DISPSTAT^ and $007F ) or (Yvalue shl 8) or (( Yvalue and $100 ) shr 1); +end; + +{$ifdef ARM9} procedure lcdSwap(); inline; +begin + REG_POWERCNT^ := REG_POWERCNT^ xor POWER_SWAP_LCDS; +end; + procedure lcdMainOnTop(); inline; +begin + REG_POWERCNT^ := REG_POWERCNT^ or cint(POWER_SWAP_LCDS); +end; + procedure lcdMainOnBottom(); inline; -{$endif ARM9} -{$endif NDS_INTERFACE} +begin + REG_POWERCNT^ := REG_POWERCNT^ and (not cint(POWER_SWAP_LCDS)); +end; +{$endif ARM9} + + +{$ifdef ARM7} +function PM_LED_CONTROL(m: cint): cint; inline; +begin + result := (m) shl 4; +end; + +function readPowerManagement(reg: cint): cint; inline; +begin + result := writePowerManagement(reg or PM_READ_REGISTER, 0); +end; + +procedure powerOn(bits: PM_Bits); inline; +begin + REG_POWERCNT^ := REG_POWERCNT^ or bits; +end; + +procedure powerOff(bits: PM_Bits); inline; +begin + REG_POWERCNT^ := REG_POWERCNT^ and not bits; +end; +{$endif ARM7} +{$endif NDS_IMPLEMENTATION} + diff --git a/packages/libndsfpc/src/nds/timers.inc b/packages/libndsfpc/src/nds/timers.inc index 2a601812d1..8e5b051638 100644 --- a/packages/libndsfpc/src/nds/timers.inc +++ b/packages/libndsfpc/src/nds/timers.inc @@ -38,7 +38,81 @@ *) +{$ifdef NDS_INTERFACE} +type + ClockDivider = cint; +const + ClockDivider_1 : ClockDivider = 0; + ClockDivider_64 : ClockDivider = 1; + ClockDivider_256 : ClockDivider = 2; + ClockDivider_1024: ClockDivider = 3; + + +procedure timerStart(channel: cint; divider: ClockDivider; ticks: cuint16; callback: fp); cdecl; external; +function timerElapsed(channel: cint): cuint16; cdecl; external; + +function timerFreqToTicks_1(freq: cint): cuint16; inline; +function timerFreqToTicks_64(freq: cint): cuint16; inline; +function timerFreqToTicks_256(freq: cint): cuint16; inline; +function timerFreqToTicks_1024(freq: cint): cuint16; inline; + +function TIMER_FREQ(n: cint): cint; inline; +function TIMER_FREQ_64(n: cint): cint; inline; +function TIMER_FREQ_256(n: cint): cint; inline; +function TIMER_FREQ_1024(n: cint): cint; inline; + +const + TIMER0_DATA : pcuint16 = pointer($04000100); + TIMER1_DATA : pcuint16 = pointer($04000104); + TIMER2_DATA : pcuint16 = pointer($04000108); + TIMER3_DATA : pcuint16 = pointer($0400010C); +function TIMER_DATA(n: cuint): pcuint16; inline; + + +const + TIMER0_CR : pcuint16 = pointer($04000102); + TIMER1_CR : pcuint16 = pointer($04000106); + TIMER2_CR : pcuint16 = pointer($0400010A); + TIMER3_CR : pcuint16 = pointer($0400010E); +function TIMER_CR(n: cint): pcuint16; inline; + +const + TIMER_ENABLE = (1 shl 7); + TIMER_IRQ_REQ = (1 shl 6); + TIMER_CASCADE = (1 shl 2); + TIMER_DIV_1 = (0); + TIMER_DIV_64 = (1); + TIMER_DIV_256 = (2); + TIMER_DIV_1024 = (3); + +procedure timerStop(channel: cint); inline; + +{$endif NDS_INTERFACE} + + + {$ifdef NDS_IMPLEMENTATION} + +function timerFreqToTicks_1(freq: cint): cuint16; inline; +begin + result := -$2000000 div freq; +end; + +function timerFreqToTicks_64(freq: cint): cuint16; inline; +begin + result := (-$2000000 shr 6) div freq; +end; + +function timerFreqToTicks_256(freq: cint): cuint16; inline; +begin + result := (-$2000000 shr 8) div freq; +end; + +function timerFreqToTicks_1024(freq: cint): cuint16; inline; +begin + result := (-$2000000 shr 10) div freq; +end; + function TIMER_FREQ(n: cint): cint; inline; begin TIMER_FREQ := cint(-$2000000 div (n)); @@ -58,73 +132,19 @@ function TIMER_FREQ_1024(n: cint): cint; inline; begin TIMER_FREQ_1024 := cint(-($2000000 shr 10) div (n)); end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} -const - //! Same as %TIMER_DATA(0). - TIMER0_DATA : pcuint16 = pointer($04000100); - //! Same as %TIMER_DATA(1). - TIMER1_DATA : pcuint16 = pointer($04000104); - //! Same as %TIMER_DATA(2). - TIMER2_DATA : pcuint16 = pointer($04000108); - //! Same as %TIMER_DATA(3). - TIMER3_DATA : pcuint16 = pointer($0400010C); -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} function TIMER_DATA(n: cuint): pcuint16; inline; begin TIMER_DATA := pcuint16($04000100 + (n shl 2)); end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -const -// Timer control registers - //! Same as %TIMER_CR(0). - TIMER0_CR : pcuint16 = pointer($04000102); - //! Same as %TIMER_CR(1). - TIMER1_CR : pcuint16 = pointer($04000106); - //! Same as %TIMER_CR(2). - TIMER2_CR : pcuint16 = pointer($0400010A); - //! Same as %TIMER_CR(3). - TIMER3_CR : pcuint16 = pointer($0400010E); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} function TIMER_CR(n: cint): pcuint16; inline; begin TIMER_CR := pcuint16($04000102 + (n shl 2)); end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} -const - //! Enables the timer. - TIMER_ENABLE = (1 shl 7); - - //! Causes the timer to request an Interupt on overflow. - TIMER_IRQ_REQ = (1 shl 6); - - //! When set will cause the timer to count when the timer below overflows (unavailable for timer 0). - TIMER_CASCADE = (1 shl 2); - - //! Causes the timer to count at 33.514Mhz. - TIMER_DIV_1 = (0); - //! Causes the timer to count at (33.514 / 64) Mhz. - TIMER_DIV_64 = (1); - //! Causes the timer to count at (33.514 / 256) Mhz. - TIMER_DIV_256 = (2); - //! Causes the timer to count at (33.514 / 1024)Mhz. - TIMER_DIV_1024 = (3); -{$endif NDS_INTERFACE} - -{$ifdef NDS_INTERFACE} -function TIMER_FREQ(n: cint): cint; inline; -function TIMER_FREQ_64(n: cint): cint; inline; -function TIMER_FREQ_256(n: cint): cint; inline; -function TIMER_FREQ_1024(n: cint): cint; inline; -function TIMER_DATA(n: cuint): pcuint16; inline; -function TIMER_CR(n: cint): pcuint16; inline; -{$endif NDS_INTERFACE} +procedure timerStop(channel: cint); inline; +begin + TIMER_CR(channel)^ := TIMER_CR(channel)^ and not TIMER_ENABLE; +end; +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/nds/touch.inc b/packages/libndsfpc/src/nds/touch.inc new file mode 100644 index 0000000000..a6dd179a17 --- /dev/null +++ b/packages/libndsfpc/src/nds/touch.inc @@ -0,0 +1,15 @@ +{$ifdef NDS_INTERFACE} + +type + touchPosition = packed record + rawx: cuint16; + rawy: cuint16; + px: cuint16; + py: cuint16; + z1: cuint16; + z2: cuint16; + end; + PtouchPosition = ^touchPosition; + TtouchPosition = touchPosition; + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds7.pp b/packages/libndsfpc/src/nds7.pp index 4318e0754b..1b547763f2 100644 --- a/packages/libndsfpc/src/nds7.pp +++ b/packages/libndsfpc/src/nds7.pp @@ -16,6 +16,7 @@ uses {$linklib nds7} {$linklib c} +{$linklib g} {$linklib gcc} {$linklib sysbase} diff --git a/packages/libndsfpc/src/nds9.pp b/packages/libndsfpc/src/nds9.pp index 540fc72aa4..8ef5a3bdce 100644 --- a/packages/libndsfpc/src/nds9.pp +++ b/packages/libndsfpc/src/nds9.pp @@ -7,7 +7,7 @@ unit nds9; {$INLINE ON} {$MACRO ON} {$PACKRECORDS C} - +{$ASSERTIONS ON} interface uses @@ -16,17 +16,23 @@ uses {$linklib nds9} {$linklib c} +{$linklib g} {$linklib gcc} {$linklib sysbase} + {$define NDS_INTERFACE} {$include nds/ndsinclude.inc} {$undef NDS_INTERFACE} + implementation {$define NDS_IMPLEMENTATION} {$include nds/ndsinclude.inc} {$undef NDS_IMPLEMENTATION} +initialization + AssertErrorProc := @AssertErrorHandler; + end. -- cgit v1.2.1