diff options
author | Legolas <Legolas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-05-31 12:15:24 +0000 |
---|---|---|
committer | Legolas <Legolas@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2009-05-31 12:15:24 +0000 |
commit | f803d950d1e95ecefe2fbe8fac65331ddfbd264c (patch) | |
tree | 69273c288fa395af5b38ab6aab26b61ae95fa9b2 | |
parent | e4116efa7a366ee63355627bcdff3974fc6e4628 (diff) | |
download | fpc-f803d950d1e95ecefe2fbe8fac65331ddfbd264c.tar.gz |
* 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
473 files changed, 177896 insertions, 9000 deletions
diff --git a/compiler/systems/i_gba.pas b/compiler/systems/i_gba.pas index 4ab4b21d15..76913175d4 100644 --- a/compiler/systems/i_gba.pas +++ b/compiler/systems/i_gba.pas @@ -57,8 +57,6 @@ unit i_gba; staticClibext : '.a'; staticClibprefix : 'lib'; sharedClibprefix : 'lib'; - importlibprefix : 'libimp'; - importlibext : '.a'; Cprefix : ''; newline : #10; dirsep : '/'; @@ -77,14 +75,14 @@ unit i_gba; loopalign : 4; jumpalign : 0; constalignmin : 0; - constalignmax : 4; + constalignmax : 8; varalignmin : 0; - varalignmax : 4; + varalignmax : 8; localalignmin : 4; localalignmax : 8; recordalignmin : 0; - recordalignmax : 4; - maxCrecordalign : 4 + recordalignmax : 8; + maxCrecordalign : 8 ); first_parm_offset : 8; stacksize : 16384; diff --git a/compiler/systems/i_nds.pas b/compiler/systems/i_nds.pas index cf81413b55..782824bfd0 100644 --- a/compiler/systems/i_nds.pas +++ b/compiler/systems/i_nds.pas @@ -34,13 +34,12 @@ unit i_nds; system : system_arm_nds; name : 'Nintendo DS'; shortname : 'nds'; - flags : [tf_needs_symbol_size,tf_files_case_sensitive, - tf_use_function_relative_addresses,tf_requires_proper_alignment, - tf_smartlink_sections]; + flags : [tf_needs_symbol_size,tf_files_case_sensitive,tf_use_function_relative_addresses + ,tf_requires_proper_alignment,tf_smartlink_sections]; cpu : cpu_arm; unit_env : ''; - extradefines : 'CPUARMEL'; - exeext : '.nef';//'.bin'; + extradefines : ''; + exeext : '.bin'; defext : '.def'; scriptext : '.sh'; smartext : '.sl'; @@ -58,8 +57,6 @@ unit i_nds; staticClibext : '.a'; staticClibprefix : 'lib'; sharedClibprefix : 'lib'; - importlibprefix : 'libimp'; - importlibext : '.a'; Cprefix : ''; newline : #10; dirsep : '/'; @@ -68,7 +65,7 @@ unit i_nds; link : nil; linkextern : nil; ar : ar_gnu_ar; - res : res_elf; + res : res_none; dbg : dbg_stabs; script : script_unix; endian : endian_little; @@ -89,7 +86,7 @@ unit i_nds; ); first_parm_offset : 8; stacksize : $3CFF; //15615? or 16384?; - abi : abi_eabi + abi : abi_default ); implementation diff --git a/compiler/systems/t_gba.pas b/compiler/systems/t_gba.pas index 2084e95f73..4f3097c784 100644 --- a/compiler/systems/t_gba.pas +++ b/compiler/systems/t_gba.pas @@ -31,7 +31,7 @@ implementation uses SysUtils, - cutils,cfileutl,cclasses, + cutils,cfileutils,cclasses, globtype,globals,systems,verbose,script,fmodule,i_gba,link; type @@ -414,7 +414,7 @@ begin add(' *(.data)'); add(' *(.data.*)'); add(' *(.gnu.linkonce.d*)'); - add(' *(.fpc*)'); + add(' *(.fpc*)'); add(' CONSTRUCTORS'); add(' . = ALIGN(4);'); add(' } >iwram = 0xff'); diff --git a/compiler/systems/t_nds.pas b/compiler/systems/t_nds.pas index 353e279d7b..06374a7af9 100644 --- a/compiler/systems/t_nds.pas +++ b/compiler/systems/t_nds.pas @@ -31,7 +31,7 @@ implementation uses SysUtils, - cutils,cfileutl,cclasses, + cutils,cfileutils,cclasses, globtype,globals,systems,verbose,script,fmodule,i_nds,link; type @@ -251,7 +251,7 @@ begin add(' rom : ORIGIN = 0x08000000, LENGTH = 32M'); add(' ewram : ORIGIN = 0x02000000, LENGTH = 4M - 4k'); add(' dtcm : ORIGIN = 0x0b000000, LENGTH = 16K'); - add(' vectors : ORIGIN = 0x00000000, LENGTH = 256'); + add(' vectors : ORIGIN = 0x01000000, LENGTH = 256'); add(' itcm : ORIGIN = 0x01000100, LENGTH = 32K - 256'); add('}'); add(''); @@ -717,10 +717,6 @@ begin app_arm7: preName:='.nlf'; end; - - if (cs_link_map in current_settings.globalswitches) then - StripStr:='-Map '+maybequoted(ChangeFileExt(current_module.exefilename^,'.map')); - GCSectionsStr:='--gc-sections'; if not(cs_link_nolink in current_settings.globalswitches) then Message1(exec_i_linking,current_module.exefilename^); diff --git a/packages/libgbafpc/Makefile b/packages/libgbafpc/Makefile index c13cfb800a..4fdc63873b 100644 --- a/packages/libgbafpc/Makefile +++ b/packages/libgbafpc/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,181 +254,166 @@ UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) endif PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) override PACKAGE_NAME=libgbafpc -override PACKAGE_VERSION=2.2.2 +override PACKAGE_VERSION=2.2.4a BINUTILSPREFIX=arm-eabi- ifeq ($(FULL_TARGET),i386-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_UNITS+=gba -endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-qnx) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-macos) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_UNITS+=gba -endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_UNITS+=gba -endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_UNITS+=gba -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_UNITS+=gba -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_UNITS+=gba +override TARGET_UNITS+=gba maxmod endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_LOADERS+=core_asm @@ -459,9 +433,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_LOADERS+=core_asm endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_LOADERS+=core_asm -endif ifeq ($(FULL_TARGET),i386-netbsd) override TARGET_LOADERS+=core_asm endif @@ -579,9 +550,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override TARGET_LOADERS+=core_asm endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_LOADERS+=core_asm -endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_LOADERS+=core_asm endif @@ -606,15 +574,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override TARGET_LOADERS+=core_asm endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_LOADERS+=core_asm -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_LOADERS+=core_asm -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_LOADERS+=core_asm -endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_EXAMPLEDIRS+=examples endif @@ -633,9 +592,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_EXAMPLEDIRS+=examples endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_EXAMPLEDIRS+=examples -endif ifeq ($(FULL_TARGET),i386-netbsd) override TARGET_EXAMPLEDIRS+=examples endif @@ -753,9 +709,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override TARGET_EXAMPLEDIRS+=examples endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_EXAMPLEDIRS+=examples -endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_EXAMPLEDIRS+=examples endif @@ -780,189 +733,165 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override TARGET_EXAMPLEDIRS+=examples endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_EXAMPLEDIRS+=examples -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_EXAMPLEDIRS+=examples -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_EXAMPLEDIRS+=examples -endif override INSTALL_FPCPACKAGE=y ifeq ($(FULL_TARGET),i386-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-go32v2) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-win32) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-os2) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-freebsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-beos) -override COMPILER_INCLUDEDIR+=src -endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-netbsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-solaris) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-qnx) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-netware) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-openbsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-wdosx) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-darwin) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-emx) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-watcom) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-netwlibc) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-wince) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-symbian) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-freebsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-netbsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-amiga) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-atari) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-openbsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-palmos) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),m68k-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-amiga) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-macos) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-darwin) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-morphos) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),sparc-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),sparc-netbsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),sparc-solaris) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),sparc-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),x86_64-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),x86_64-darwin) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),x86_64-win64) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),x86_64-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-palmos) -override COMPILER_INCLUDEDIR+=src -endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-wince) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-gba) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-nds) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),arm-symbian) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc64-linux) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override COMPILER_INCLUDEDIR+=src -endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_INCLUDEDIR+=src -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_INCLUDEDIR+=src -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_INCLUDEDIR+=src +override COMPILER_INCLUDEDIR+=src src/maxmod endif ifeq ($(FULL_TARGET),i386-linux) override COMPILER_SOURCEDIR+=src tests @@ -982,9 +911,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 @@ -1102,9 +1028,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 @@ -1129,15 +1052,6 @@ 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 ifdef REQUIRE_UNITSDIR override UNITSDIR+=$(REQUIRE_UNITSDIR) endif @@ -1427,11 +1341,6 @@ BATCHEXT=.sh EXEEXT= SHORTSUFFIX=be endif -ifeq ($(OS_TARGET),haiku) -BATCHEXT=.sh -EXEEXT= -SHORTSUFFIX=hai -endif ifeq ($(OS_TARGET),solaris) BATCHEXT=.sh EXEEXT= @@ -1891,13 +1800,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) @@ -2522,9 +2431,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) TARGET_EXAMPLEDIRS_EXAMPLES=1 endif -ifeq ($(FULL_TARGET),i386-haiku) -TARGET_EXAMPLEDIRS_EXAMPLES=1 -endif ifeq ($(FULL_TARGET),i386-netbsd) TARGET_EXAMPLEDIRS_EXAMPLES=1 endif @@ -2642,9 +2548,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) TARGET_EXAMPLEDIRS_EXAMPLES=1 endif -ifeq ($(FULL_TARGET),arm-darwin) -TARGET_EXAMPLEDIRS_EXAMPLES=1 -endif ifeq ($(FULL_TARGET),arm-wince) TARGET_EXAMPLEDIRS_EXAMPLES=1 endif @@ -2669,15 +2572,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) TARGET_EXAMPLEDIRS_EXAMPLES=1 endif -ifeq ($(FULL_TARGET),avr-embedded) -TARGET_EXAMPLEDIRS_EXAMPLES=1 -endif -ifeq ($(FULL_TARGET),armeb-linux) -TARGET_EXAMPLEDIRS_EXAMPLES=1 -endif -ifeq ($(FULL_TARGET),armeb-embedded) -TARGET_EXAMPLEDIRS_EXAMPLES=1 -endif ifdef TARGET_EXAMPLEDIRS_EXAMPLES examples_all: $(MAKE) -C examples all diff --git a/packages/libgbafpc/Makefile.fpc b/packages/libgbafpc/Makefile.fpc index 71c98e3465..1eb8b68168 100644 --- a/packages/libgbafpc/Makefile.fpc +++ b/packages/libgbafpc/Makefile.fpc @@ -4,17 +4,17 @@ [package] name=libgbafpc -version=2.2.2 +version=2.2.4a [target] loaders=core_asm -units=gba +units=gba maxmod exampledirs=examples [compiler] options= -includedir=src +includedir=src src/maxmod sourcedir=src tests [prerules] diff --git a/packages/libgbafpc/examples/Makefile b/packages/libgbafpc/examples/Makefile index 409b70f8c9..2b2012da18 100644 --- a/packages/libgbafpc/examples/Makefile +++ b/packages/libgbafpc/examples/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/05/24] # 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=arm-gba BSDs = freebsd netbsd openbsd darwin UNIXs = linux $(BSDs) solaris qnx LIMIT83fs = go32v2 os2 emx watcom @@ -171,17 +171,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) @@ -203,7 +192,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)),) @@ -262,179 +251,8 @@ ifeq ($(UNITSDIR),) UNITSDIR:=$(wildcard $(FPCDIR)/units/$(OS_TARGET)) endif PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages $(FPCDIR)/packages/base $(FPCDIR)/packages/extra) -ifeq ($(FULL_TARGET),i386-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-win32) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-os2) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-beos) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-qnx) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-netware) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-emx) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-wince) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-macos) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-wince) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-nds) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_DIRS+=devkitPro/audio/PlayBoyScout devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll devkitPro/template +override TARGET_DIRS+=audio graphics template endif override INSTALL_FPCPACKAGE=y ifdef REQUIRE_UNITSDIR @@ -726,11 +544,6 @@ BATCHEXT=.sh EXEEXT= SHORTSUFFIX=be endif -ifeq ($(OS_TARGET),haiku) -BATCHEXT=.sh -EXEEXT= -SHORTSUFFIX=hai -endif ifeq ($(OS_TARGET),solaris) BATCHEXT=.sh EXEEXT= @@ -1190,180 +1003,9 @@ TAROPT=vz TAREXT=.tar.gz endif override REQUIRE_PACKAGES=libgbafpc -ifeq ($(FULL_TARGET),i386-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-go32v2) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-win32) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-os2) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-freebsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-beos) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-haiku) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-netbsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-solaris) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-qnx) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-netware) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-openbsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-wdosx) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-darwin) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-emx) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-watcom) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-netwlibc) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-wince) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),i386-symbian) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-freebsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-netbsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-amiga) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-atari) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-openbsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-palmos) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),m68k-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-netbsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-amiga) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-macos) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-darwin) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-morphos) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),sparc-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),sparc-netbsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),sparc-solaris) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),sparc-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),x86_64-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),x86_64-freebsd) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),x86_64-darwin) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),x86_64-win64) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),x86_64-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),arm-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),arm-palmos) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),arm-darwin) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),arm-wince) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif ifeq ($(FULL_TARGET),arm-gba) REQUIRE_PACKAGES_LIBGBAFPC=1 endif -ifeq ($(FULL_TARGET),arm-nds) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),arm-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),arm-symbian) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc64-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc64-darwin) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),powerpc64-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),avr-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),armeb-linux) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif -ifeq ($(FULL_TARGET),armeb-embedded) -REQUIRE_PACKAGES_LIBGBAFPC=1 -endif ifdef REQUIRE_PACKAGES_LIBGBAFPC PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) ifneq ($(PACKAGEDIR_LIBGBAFPC),) @@ -1391,13 +1033,13 @@ override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) endif 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) @@ -1720,636 +1362,145 @@ 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_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-go32v2) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-win32) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-os2) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-freebsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-beos) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-haiku) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-netbsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-solaris) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-qnx) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-netware) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-openbsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-wdosx) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-darwin) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-emx) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-watcom) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-netwlibc) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-wince) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),i386-symbian) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-freebsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-netbsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-amiga) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-atari) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-openbsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-palmos) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),m68k-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-netbsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-amiga) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-macos) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-darwin) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-morphos) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),sparc-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),sparc-netbsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),sparc-solaris) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),sparc-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),x86_64-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),x86_64-freebsd) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),x86_64-darwin) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),x86_64-win64) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),x86_64-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-palmos) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-darwin) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-wince) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif ifeq ($(FULL_TARGET),arm-gba) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-nds) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),arm-symbian) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc64-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc64-darwin) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),powerpc64-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),avr-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),armeb-linux) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifeq ($(FULL_TARGET),armeb-embedded) -TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW=1 -TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL=1 -TARGET_DIRS_DEVKITPRO/TEMPLATE=1 -endif -ifdef TARGET_DIRS_DEVKITPRO/AUDIO/PLAYBOYSCOUT -devkitPro/audio/PlayBoyScout_all: - $(MAKE) -C devkitPro/audio/PlayBoyScout all -devkitPro/audio/PlayBoyScout_debug: - $(MAKE) -C devkitPro/audio/PlayBoyScout debug -devkitPro/audio/PlayBoyScout_smart: - $(MAKE) -C devkitPro/audio/PlayBoyScout smart -devkitPro/audio/PlayBoyScout_release: - $(MAKE) -C devkitPro/audio/PlayBoyScout release -devkitPro/audio/PlayBoyScout_units: - $(MAKE) -C devkitPro/audio/PlayBoyScout units -devkitPro/audio/PlayBoyScout_examples: - $(MAKE) -C devkitPro/audio/PlayBoyScout examples -devkitPro/audio/PlayBoyScout_shared: - $(MAKE) -C devkitPro/audio/PlayBoyScout shared -devkitPro/audio/PlayBoyScout_install: - $(MAKE) -C devkitPro/audio/PlayBoyScout install -devkitPro/audio/PlayBoyScout_sourceinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout sourceinstall -devkitPro/audio/PlayBoyScout_exampleinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout exampleinstall -devkitPro/audio/PlayBoyScout_distinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout distinstall -devkitPro/audio/PlayBoyScout_zipinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout zipinstall -devkitPro/audio/PlayBoyScout_zipsourceinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout zipsourceinstall -devkitPro/audio/PlayBoyScout_zipexampleinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout zipexampleinstall -devkitPro/audio/PlayBoyScout_zipdistinstall: - $(MAKE) -C devkitPro/audio/PlayBoyScout zipdistinstall -devkitPro/audio/PlayBoyScout_clean: - $(MAKE) -C devkitPro/audio/PlayBoyScout clean -devkitPro/audio/PlayBoyScout_distclean: - $(MAKE) -C devkitPro/audio/PlayBoyScout distclean -devkitPro/audio/PlayBoyScout_cleanall: - $(MAKE) -C devkitPro/audio/PlayBoyScout cleanall -devkitPro/audio/PlayBoyScout_info: - $(MAKE) -C devkitPro/audio/PlayBoyScout info -devkitPro/audio/PlayBoyScout_makefiles: - $(MAKE) -C devkitPro/audio/PlayBoyScout makefiles -devkitPro/audio/PlayBoyScout: - $(MAKE) -C devkitPro/audio/PlayBoyScout all -.PHONY: devkitPro/audio/PlayBoyScout_all devkitPro/audio/PlayBoyScout_debug devkitPro/audio/PlayBoyScout_smart devkitPro/audio/PlayBoyScout_release devkitPro/audio/PlayBoyScout_units devkitPro/audio/PlayBoyScout_examples devkitPro/audio/PlayBoyScout_shared devkitPro/audio/PlayBoyScout_install devkitPro/audio/PlayBoyScout_sourceinstall devkitPro/audio/PlayBoyScout_exampleinstall devkitPro/audio/PlayBoyScout_distinstall devkitPro/audio/PlayBoyScout_zipinstall devkitPro/audio/PlayBoyScout_zipsourceinstall devkitPro/audio/PlayBoyScout_zipexampleinstall devkitPro/audio/PlayBoyScout_zipdistinstall devkitPro/audio/PlayBoyScout_clean devkitPro/audio/PlayBoyScout_distclean devkitPro/audio/PlayBoyScout_cleanall devkitPro/audio/PlayBoyScout_info devkitPro/audio/PlayBoyScout_makefiles devkitPro/audio/PlayBoyScout -endif -ifdef TARGET_DIRS_DEVKITPRO/GRAPHICS/ANSI_CONSOLE -devkitPro/graphics/ansi_console_all: - $(MAKE) -C devkitPro/graphics/ansi_console all -devkitPro/graphics/ansi_console_debug: - $(MAKE) -C devkitPro/graphics/ansi_console debug -devkitPro/graphics/ansi_console_smart: - $(MAKE) -C devkitPro/graphics/ansi_console smart -devkitPro/graphics/ansi_console_release: - $(MAKE) -C devkitPro/graphics/ansi_console release -devkitPro/graphics/ansi_console_units: - $(MAKE) -C devkitPro/graphics/ansi_console units -devkitPro/graphics/ansi_console_examples: - $(MAKE) -C devkitPro/graphics/ansi_console examples -devkitPro/graphics/ansi_console_shared: - $(MAKE) -C devkitPro/graphics/ansi_console shared -devkitPro/graphics/ansi_console_install: - $(MAKE) -C devkitPro/graphics/ansi_console install -devkitPro/graphics/ansi_console_sourceinstall: - $(MAKE) -C devkitPro/graphics/ansi_console sourceinstall -devkitPro/graphics/ansi_console_exampleinstall: - $(MAKE) -C devkitPro/graphics/ansi_console exampleinstall -devkitPro/graphics/ansi_console_distinstall: - $(MAKE) -C devkitPro/graphics/ansi_console distinstall -devkitPro/graphics/ansi_console_zipinstall: - $(MAKE) -C devkitPro/graphics/ansi_console zipinstall -devkitPro/graphics/ansi_console_zipsourceinstall: - $(MAKE) -C devkitPro/graphics/ansi_console zipsourceinstall -devkitPro/graphics/ansi_console_zipexampleinstall: - $(MAKE) -C devkitPro/graphics/ansi_console zipexampleinstall -devkitPro/graphics/ansi_console_zipdistinstall: - $(MAKE) -C devkitPro/graphics/ansi_console zipdistinstall -devkitPro/graphics/ansi_console_clean: - $(MAKE) -C devkitPro/graphics/ansi_console clean -devkitPro/graphics/ansi_console_distclean: - $(MAKE) -C devkitPro/graphics/ansi_console distclean -devkitPro/graphics/ansi_console_cleanall: - $(MAKE) -C devkitPro/graphics/ansi_console cleanall -devkitPro/graphics/ansi_console_info: - $(MAKE) -C devkitPro/graphics/ansi_console info -devkitPro/graphics/ansi_console_makefiles: - $(MAKE) -C devkitPro/graphics/ansi_console makefiles -devkitPro/graphics/ansi_console: - $(MAKE) -C devkitPro/graphics/ansi_console all -.PHONY: devkitPro/graphics/ansi_console_all devkitPro/graphics/ansi_console_debug devkitPro/graphics/ansi_console_smart devkitPro/graphics/ansi_console_release devkitPro/graphics/ansi_console_units devkitPro/graphics/ansi_console_examples devkitPro/graphics/ansi_console_shared devkitPro/graphics/ansi_console_install devkitPro/graphics/ansi_console_sourceinstall devkitPro/graphics/ansi_console_exampleinstall devkitPro/graphics/ansi_console_distinstall devkitPro/graphics/ansi_console_zipinstall devkitPro/graphics/ansi_console_zipsourceinstall devkitPro/graphics/ansi_console_zipexampleinstall devkitPro/graphics/ansi_console_zipdistinstall devkitPro/graphics/ansi_console_clean devkitPro/graphics/ansi_console_distclean devkitPro/graphics/ansi_console_cleanall devkitPro/graphics/ansi_console_info devkitPro/graphics/ansi_console_makefiles devkitPro/graphics/ansi_console -endif -ifdef TARGET_DIRS_DEVKITPRO/GRAPHICS/PCXVIEW -devkitPro/graphics/PCXView_all: - $(MAKE) -C devkitPro/graphics/PCXView all -devkitPro/graphics/PCXView_debug: - $(MAKE) -C devkitPro/graphics/PCXView debug -devkitPro/graphics/PCXView_smart: - $(MAKE) -C devkitPro/graphics/PCXView smart -devkitPro/graphics/PCXView_release: - $(MAKE) -C devkitPro/graphics/PCXView release -devkitPro/graphics/PCXView_units: - $(MAKE) -C devkitPro/graphics/PCXView units -devkitPro/graphics/PCXView_examples: - $(MAKE) -C devkitPro/graphics/PCXView examples -devkitPro/graphics/PCXView_shared: - $(MAKE) -C devkitPro/graphics/PCXView shared -devkitPro/graphics/PCXView_install: - $(MAKE) -C devkitPro/graphics/PCXView install -devkitPro/graphics/PCXView_sourceinstall: - $(MAKE) -C devkitPro/graphics/PCXView sourceinstall -devkitPro/graphics/PCXView_exampleinstall: - $(MAKE) -C devkitPro/graphics/PCXView exampleinstall -devkitPro/graphics/PCXView_distinstall: - $(MAKE) -C devkitPro/graphics/PCXView distinstall -devkitPro/graphics/PCXView_zipinstall: - $(MAKE) -C devkitPro/graphics/PCXView zipinstall -devkitPro/graphics/PCXView_zipsourceinstall: - $(MAKE) -C devkitPro/graphics/PCXView zipsourceinstall -devkitPro/graphics/PCXView_zipexampleinstall: - $(MAKE) -C devkitPro/graphics/PCXView zipexampleinstall -devkitPro/graphics/PCXView_zipdistinstall: - $(MAKE) -C devkitPro/graphics/PCXView zipdistinstall -devkitPro/graphics/PCXView_clean: - $(MAKE) -C devkitPro/graphics/PCXView clean -devkitPro/graphics/PCXView_distclean: - $(MAKE) -C devkitPro/graphics/PCXView distclean -devkitPro/graphics/PCXView_cleanall: - $(MAKE) -C devkitPro/graphics/PCXView cleanall -devkitPro/graphics/PCXView_info: - $(MAKE) -C devkitPro/graphics/PCXView info -devkitPro/graphics/PCXView_makefiles: - $(MAKE) -C devkitPro/graphics/PCXView makefiles -devkitPro/graphics/PCXView: - $(MAKE) -C devkitPro/graphics/PCXView all -.PHONY: devkitPro/graphics/PCXView_all devkitPro/graphics/PCXView_debug devkitPro/graphics/PCXView_smart devkitPro/graphics/PCXView_release devkitPro/graphics/PCXView_units devkitPro/graphics/PCXView_examples devkitPro/graphics/PCXView_shared devkitPro/graphics/PCXView_install devkitPro/graphics/PCXView_sourceinstall devkitPro/graphics/PCXView_exampleinstall devkitPro/graphics/PCXView_distinstall devkitPro/graphics/PCXView_zipinstall devkitPro/graphics/PCXView_zipsourceinstall devkitPro/graphics/PCXView_zipexampleinstall devkitPro/graphics/PCXView_zipdistinstall devkitPro/graphics/PCXView_clean devkitPro/graphics/PCXView_distclean devkitPro/graphics/PCXView_cleanall devkitPro/graphics/PCXView_info devkitPro/graphics/PCXView_makefiles devkitPro/graphics/PCXView -endif -ifdef TARGET_DIRS_DEVKITPRO/GRAPHICS/SIMPLEBGSCROLL -devkitPro/graphics/SimpleBGScroll_all: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll all -devkitPro/graphics/SimpleBGScroll_debug: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll debug -devkitPro/graphics/SimpleBGScroll_smart: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll smart -devkitPro/graphics/SimpleBGScroll_release: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll release -devkitPro/graphics/SimpleBGScroll_units: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll units -devkitPro/graphics/SimpleBGScroll_examples: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll examples -devkitPro/graphics/SimpleBGScroll_shared: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll shared -devkitPro/graphics/SimpleBGScroll_install: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll install -devkitPro/graphics/SimpleBGScroll_sourceinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll sourceinstall -devkitPro/graphics/SimpleBGScroll_exampleinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll exampleinstall -devkitPro/graphics/SimpleBGScroll_distinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll distinstall -devkitPro/graphics/SimpleBGScroll_zipinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll zipinstall -devkitPro/graphics/SimpleBGScroll_zipsourceinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll zipsourceinstall -devkitPro/graphics/SimpleBGScroll_zipexampleinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll zipexampleinstall -devkitPro/graphics/SimpleBGScroll_zipdistinstall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll zipdistinstall -devkitPro/graphics/SimpleBGScroll_clean: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll clean -devkitPro/graphics/SimpleBGScroll_distclean: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll distclean -devkitPro/graphics/SimpleBGScroll_cleanall: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll cleanall -devkitPro/graphics/SimpleBGScroll_info: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll info -devkitPro/graphics/SimpleBGScroll_makefiles: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll makefiles -devkitPro/graphics/SimpleBGScroll: - $(MAKE) -C devkitPro/graphics/SimpleBGScroll all -.PHONY: devkitPro/graphics/SimpleBGScroll_all devkitPro/graphics/SimpleBGScroll_debug devkitPro/graphics/SimpleBGScroll_smart devkitPro/graphics/SimpleBGScroll_release devkitPro/graphics/SimpleBGScroll_units devkitPro/graphics/SimpleBGScroll_examples devkitPro/graphics/SimpleBGScroll_shared devkitPro/graphics/SimpleBGScroll_install devkitPro/graphics/SimpleBGScroll_sourceinstall devkitPro/graphics/SimpleBGScroll_exampleinstall devkitPro/graphics/SimpleBGScroll_distinstall devkitPro/graphics/SimpleBGScroll_zipinstall devkitPro/graphics/SimpleBGScroll_zipsourceinstall devkitPro/graphics/SimpleBGScroll_zipexampleinstall devkitPro/graphics/SimpleBGScroll_zipdistinstall devkitPro/graphics/SimpleBGScroll_clean devkitPro/graphics/SimpleBGScroll_distclean devkitPro/graphics/SimpleBGScroll_cleanall devkitPro/graphics/SimpleBGScroll_info devkitPro/graphics/SimpleBGScroll_makefiles devkitPro/graphics/SimpleBGScroll -endif -ifdef TARGET_DIRS_DEVKITPRO/TEMPLATE -devkitPro/template_all: - $(MAKE) -C devkitPro/template all -devkitPro/template_debug: - $(MAKE) -C devkitPro/template debug -devkitPro/template_smart: - $(MAKE) -C devkitPro/template smart -devkitPro/template_release: - $(MAKE) -C devkitPro/template release -devkitPro/template_units: - $(MAKE) -C devkitPro/template units -devkitPro/template_examples: - $(MAKE) -C devkitPro/template examples -devkitPro/template_shared: - $(MAKE) -C devkitPro/template shared -devkitPro/template_install: - $(MAKE) -C devkitPro/template install -devkitPro/template_sourceinstall: - $(MAKE) -C devkitPro/template sourceinstall -devkitPro/template_exampleinstall: - $(MAKE) -C devkitPro/template exampleinstall -devkitPro/template_distinstall: - $(MAKE) -C devkitPro/template distinstall -devkitPro/template_zipinstall: - $(MAKE) -C devkitPro/template zipinstall -devkitPro/template_zipsourceinstall: - $(MAKE) -C devkitPro/template zipsourceinstall -devkitPro/template_zipexampleinstall: - $(MAKE) -C devkitPro/template zipexampleinstall -devkitPro/template_zipdistinstall: - $(MAKE) -C devkitPro/template zipdistinstall -devkitPro/template_clean: - $(MAKE) -C devkitPro/template clean -devkitPro/template_distclean: - $(MAKE) -C devkitPro/template distclean -devkitPro/template_cleanall: - $(MAKE) -C devkitPro/template cleanall -devkitPro/template_info: - $(MAKE) -C devkitPro/template info -devkitPro/template_makefiles: - $(MAKE) -C devkitPro/template makefiles -devkitPro/template: - $(MAKE) -C devkitPro/template all -.PHONY: devkitPro/template_all devkitPro/template_debug devkitPro/template_smart devkitPro/template_release devkitPro/template_units devkitPro/template_examples devkitPro/template_shared devkitPro/template_install devkitPro/template_sourceinstall devkitPro/template_exampleinstall devkitPro/template_distinstall devkitPro/template_zipinstall devkitPro/template_zipsourceinstall devkitPro/template_zipexampleinstall devkitPro/template_zipdistinstall devkitPro/template_clean devkitPro/template_distclean devkitPro/template_cleanall devkitPro/template_info devkitPro/template_makefiles devkitPro/template +TARGET_DIRS_AUDIO=1 +TARGET_DIRS_GRAPHICS=1 +TARGET_DIRS_TEMPLATE=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_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_TEMPLATE +template_all: + $(MAKE) -C template all +template_debug: + $(MAKE) -C template debug +template_smart: + $(MAKE) -C template smart +template_release: + $(MAKE) -C template release +template_units: + $(MAKE) -C template units +template_examples: + $(MAKE) -C template examples +template_shared: + $(MAKE) -C template shared +template_install: + $(MAKE) -C template install +template_sourceinstall: + $(MAKE) -C template sourceinstall +template_exampleinstall: + $(MAKE) -C template exampleinstall +template_distinstall: + $(MAKE) -C template distinstall +template_zipinstall: + $(MAKE) -C template zipinstall +template_zipsourceinstall: + $(MAKE) -C template zipsourceinstall +template_zipexampleinstall: + $(MAKE) -C template zipexampleinstall +template_zipdistinstall: + $(MAKE) -C template zipdistinstall +template_clean: + $(MAKE) -C template clean +template_distclean: + $(MAKE) -C template distclean +template_cleanall: + $(MAKE) -C template cleanall +template_info: + $(MAKE) -C template info +template_makefiles: + $(MAKE) -C template makefiles +template: + $(MAKE) -C template all +.PHONY: template_all template_debug template_smart template_release template_units template_examples template_shared template_install template_sourceinstall template_exampleinstall template_distinstall template_zipinstall template_zipsourceinstall template_zipexampleinstall template_zipdistinstall template_clean template_distclean template_cleanall template_info template_makefiles template endif all: $(addsuffix _all,$(TARGET_DIRS)) debug: $(addsuffix _debug,$(TARGET_DIRS)) diff --git a/packages/libgbafpc/examples/Makefile.fpc b/packages/libgbafpc/examples/Makefile.fpc index ea069f2778..d5ae9f901c 100644 --- a/packages/libgbafpc/examples/Makefile.fpc +++ b/packages/libgbafpc/examples/Makefile.fpc @@ -3,9 +3,7 @@ # [target] -dirs= devkitPro/audio/PlayBoyScout \ - devkitPro/graphics/ansi_console devkitPro/graphics/PCXView devkitPro/graphics/SimpleBGScroll \ - devkitPro/template +dirs=audio graphics template [require] packages=libgbafpc diff --git a/packages/libgbafpc/examples/audio/Makefile b/packages/libgbafpc/examples/audio/Makefile new file mode 100644 index 0000000000..32e5b5c195 --- /dev/null +++ b/packages/libgbafpc/examples/audio/Makefile @@ -0,0 +1,1437 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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-gba) +override TARGET_DIRS+=PlayBoyScout +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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-gba) +TARGET_DIRS_PLAYBOYSCOUT=1 +endif +ifdef TARGET_DIRS_PLAYBOYSCOUT +PlayBoyScout_all: + $(MAKE) -C PlayBoyScout all +PlayBoyScout_debug: + $(MAKE) -C PlayBoyScout debug +PlayBoyScout_smart: + $(MAKE) -C PlayBoyScout smart +PlayBoyScout_release: + $(MAKE) -C PlayBoyScout release +PlayBoyScout_units: + $(MAKE) -C PlayBoyScout units +PlayBoyScout_examples: + $(MAKE) -C PlayBoyScout examples +PlayBoyScout_shared: + $(MAKE) -C PlayBoyScout shared +PlayBoyScout_install: + $(MAKE) -C PlayBoyScout install +PlayBoyScout_sourceinstall: + $(MAKE) -C PlayBoyScout sourceinstall +PlayBoyScout_exampleinstall: + $(MAKE) -C PlayBoyScout exampleinstall +PlayBoyScout_distinstall: + $(MAKE) -C PlayBoyScout distinstall +PlayBoyScout_zipinstall: + $(MAKE) -C PlayBoyScout zipinstall +PlayBoyScout_zipsourceinstall: + $(MAKE) -C PlayBoyScout zipsourceinstall +PlayBoyScout_zipexampleinstall: + $(MAKE) -C PlayBoyScout zipexampleinstall +PlayBoyScout_zipdistinstall: + $(MAKE) -C PlayBoyScout zipdistinstall +PlayBoyScout_clean: + $(MAKE) -C PlayBoyScout clean +PlayBoyScout_distclean: + $(MAKE) -C PlayBoyScout distclean +PlayBoyScout_cleanall: + $(MAKE) -C PlayBoyScout cleanall +PlayBoyScout_info: + $(MAKE) -C PlayBoyScout info +PlayBoyScout_makefiles: + $(MAKE) -C PlayBoyScout makefiles +PlayBoyScout: + $(MAKE) -C PlayBoyScout all +.PHONY: PlayBoyScout_all PlayBoyScout_debug PlayBoyScout_smart PlayBoyScout_release PlayBoyScout_units PlayBoyScout_examples PlayBoyScout_shared PlayBoyScout_install PlayBoyScout_sourceinstall PlayBoyScout_exampleinstall PlayBoyScout_distinstall PlayBoyScout_zipinstall PlayBoyScout_zipsourceinstall PlayBoyScout_zipexampleinstall PlayBoyScout_zipdistinstall PlayBoyScout_clean PlayBoyScout_distclean PlayBoyScout_cleanall PlayBoyScout_info PlayBoyScout_makefiles PlayBoyScout +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/libgbafpc/examples/audio/Makefile.fpc b/packages/libgbafpc/examples/audio/Makefile.fpc new file mode 100644 index 0000000000..b3a11bc37a --- /dev/null +++ b/packages/libgbafpc/examples/audio/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +dirs=PlayBoyScout + +[require] +packages=libgbafpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libgbafpc/examples/audio/PlayBoyScout/Makefile b/packages/libgbafpc/examples/audio/PlayBoyScout/Makefile new file mode 100644 index 0000000000..83766fcbfa --- /dev/null +++ b/packages/libgbafpc/examples/audio/PlayBoyScout/Makefile @@ -0,0 +1,1626 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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=gba +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-gba) +override TARGET_PROGRAMS+=PlayBoyScout +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_FILES+=*.elf *.o *.s *.gba *.h *.bin *.map $(BUILD)/* $(INC)/* +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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 +$(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/libgbafpc/examples/audio/PlayBoyScout/Makefile.fpc b/packages/libgbafpc/examples/audio/PlayBoyScout/Makefile.fpc new file mode 100644 index 0000000000..e25feee7ed --- /dev/null +++ b/packages/libgbafpc/examples/audio/PlayBoyScout/Makefile.fpc @@ -0,0 +1,81 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +loaders= +programs=PlayBoyScout + +[require] +packages=libgbafpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=gba +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.gba *.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 + +# +# 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/libgbafpc/examples/audio/PlayBoyScout/PlayBoyScout.pp b/packages/libgbafpc/examples/audio/PlayBoyScout/PlayBoyScout.pp new file mode 100644 index 0000000000..3cdeff68a4 --- /dev/null +++ b/packages/libgbafpc/examples/audio/PlayBoyScout/PlayBoyScout.pp @@ -0,0 +1,68 @@ +program PlayBoyScout; + +{$l build/ScoutSplash.pcx.o} +{$l build/tune.bgf.o} + +uses + ctypes, gba; + +{$include inc/ScoutSplash.pcx.inc} +{$include inc/tune.bgf.inc} + + +var + PaletteBuffer: array [0..255] of cuint16; + frame: cuint; + nBSSongSize: cuint; + +procedure VblankInterrupt(); +begin + BoyScoutUpdateSong(); + frame := frame + 1; +end; + + +begin + // Set up the interrupt handlers + irqInit(); + + // Initialize BoyScout + BoyScoutInitialize(); + + // Get needed song memory + nBSSongSize := BoyScoutGetNeededSongMemory(tune_bgf); + + // Allocate and set BoyScout memory area + BoyScoutSetMemoryArea(cuint32(GetMem(nBSSongSize))); + + // Open song + BoyScoutOpenSong(tune_bgf); + + // Play song and loop + BoyScoutPlaySong(1); + + irqSet(IRQ_VBLANK, @VblankInterrupt); + + // Enable Vblank Interrupt to allow VblankIntrWait + irqEnable(IRQ_VBLANK); + // Allow Interrupts + REG_IME^ := 1; + + SetMode( MODE_4 or BG2_ON ); // screen mode & background to display + + DecodePCX(@ScoutSplash_pcx, pcuint16(VRAM), PaletteBuffer); + + FadeToPalette( PaletteBuffer, 60); + + + while true do + VBlankIntrWait(); + + // This part will never be reached but just for completion + // Free memory + free(@BoyScoutGetMemoryArea); + + +end. + + diff --git a/packages/libgbafpc/examples/audio/PlayBoyScout/data/ScoutSplash.pcx b/packages/libgbafpc/examples/audio/PlayBoyScout/data/ScoutSplash.pcx Binary files differnew file mode 100644 index 0000000000..e75ce72429 --- /dev/null +++ b/packages/libgbafpc/examples/audio/PlayBoyScout/data/ScoutSplash.pcx diff --git a/packages/libgbafpc/examples/audio/PlayBoyScout/data/tune.bgf b/packages/libgbafpc/examples/audio/PlayBoyScout/data/tune.bgf Binary files differnew file mode 100644 index 0000000000..8eae1a2ad3 --- /dev/null +++ b/packages/libgbafpc/examples/audio/PlayBoyScout/data/tune.bgf diff --git a/packages/libgbafpc/examples/graphics/Makefile b/packages/libgbafpc/examples/graphics/Makefile new file mode 100644 index 0000000000..323e58d412 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/Makefile @@ -0,0 +1,1529 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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-gba) +override TARGET_DIRS+=ansi_console PCXView SimpleBGScroll +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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-gba) +TARGET_DIRS_ANSI_CONSOLE=1 +TARGET_DIRS_PCXVIEW=1 +TARGET_DIRS_SIMPLEBGSCROLL=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_PCXVIEW +PCXView_all: + $(MAKE) -C PCXView all +PCXView_debug: + $(MAKE) -C PCXView debug +PCXView_smart: + $(MAKE) -C PCXView smart +PCXView_release: + $(MAKE) -C PCXView release +PCXView_units: + $(MAKE) -C PCXView units +PCXView_examples: + $(MAKE) -C PCXView examples +PCXView_shared: + $(MAKE) -C PCXView shared +PCXView_install: + $(MAKE) -C PCXView install +PCXView_sourceinstall: + $(MAKE) -C PCXView sourceinstall +PCXView_exampleinstall: + $(MAKE) -C PCXView exampleinstall +PCXView_distinstall: + $(MAKE) -C PCXView distinstall +PCXView_zipinstall: + $(MAKE) -C PCXView zipinstall +PCXView_zipsourceinstall: + $(MAKE) -C PCXView zipsourceinstall +PCXView_zipexampleinstall: + $(MAKE) -C PCXView zipexampleinstall +PCXView_zipdistinstall: + $(MAKE) -C PCXView zipdistinstall +PCXView_clean: + $(MAKE) -C PCXView clean +PCXView_distclean: + $(MAKE) -C PCXView distclean +PCXView_cleanall: + $(MAKE) -C PCXView cleanall +PCXView_info: + $(MAKE) -C PCXView info +PCXView_makefiles: + $(MAKE) -C PCXView makefiles +PCXView: + $(MAKE) -C PCXView all +.PHONY: PCXView_all PCXView_debug PCXView_smart PCXView_release PCXView_units PCXView_examples PCXView_shared PCXView_install PCXView_sourceinstall PCXView_exampleinstall PCXView_distinstall PCXView_zipinstall PCXView_zipsourceinstall PCXView_zipexampleinstall PCXView_zipdistinstall PCXView_clean PCXView_distclean PCXView_cleanall PCXView_info PCXView_makefiles PCXView +endif +ifdef TARGET_DIRS_SIMPLEBGSCROLL +SimpleBGScroll_all: + $(MAKE) -C SimpleBGScroll all +SimpleBGScroll_debug: + $(MAKE) -C SimpleBGScroll debug +SimpleBGScroll_smart: + $(MAKE) -C SimpleBGScroll smart +SimpleBGScroll_release: + $(MAKE) -C SimpleBGScroll release +SimpleBGScroll_units: + $(MAKE) -C SimpleBGScroll units +SimpleBGScroll_examples: + $(MAKE) -C SimpleBGScroll examples +SimpleBGScroll_shared: + $(MAKE) -C SimpleBGScroll shared +SimpleBGScroll_install: + $(MAKE) -C SimpleBGScroll install +SimpleBGScroll_sourceinstall: + $(MAKE) -C SimpleBGScroll sourceinstall +SimpleBGScroll_exampleinstall: + $(MAKE) -C SimpleBGScroll exampleinstall +SimpleBGScroll_distinstall: + $(MAKE) -C SimpleBGScroll distinstall +SimpleBGScroll_zipinstall: + $(MAKE) -C SimpleBGScroll zipinstall +SimpleBGScroll_zipsourceinstall: + $(MAKE) -C SimpleBGScroll zipsourceinstall +SimpleBGScroll_zipexampleinstall: + $(MAKE) -C SimpleBGScroll zipexampleinstall +SimpleBGScroll_zipdistinstall: + $(MAKE) -C SimpleBGScroll zipdistinstall +SimpleBGScroll_clean: + $(MAKE) -C SimpleBGScroll clean +SimpleBGScroll_distclean: + $(MAKE) -C SimpleBGScroll distclean +SimpleBGScroll_cleanall: + $(MAKE) -C SimpleBGScroll cleanall +SimpleBGScroll_info: + $(MAKE) -C SimpleBGScroll info +SimpleBGScroll_makefiles: + $(MAKE) -C SimpleBGScroll makefiles +SimpleBGScroll: + $(MAKE) -C SimpleBGScroll all +.PHONY: SimpleBGScroll_all SimpleBGScroll_debug SimpleBGScroll_smart SimpleBGScroll_release SimpleBGScroll_units SimpleBGScroll_examples SimpleBGScroll_shared SimpleBGScroll_install SimpleBGScroll_sourceinstall SimpleBGScroll_exampleinstall SimpleBGScroll_distinstall SimpleBGScroll_zipinstall SimpleBGScroll_zipsourceinstall SimpleBGScroll_zipexampleinstall SimpleBGScroll_zipdistinstall SimpleBGScroll_clean SimpleBGScroll_distclean SimpleBGScroll_cleanall SimpleBGScroll_info SimpleBGScroll_makefiles SimpleBGScroll +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/libgbafpc/examples/graphics/Makefile.fpc b/packages/libgbafpc/examples/graphics/Makefile.fpc new file mode 100644 index 0000000000..fbbcf6a6be --- /dev/null +++ b/packages/libgbafpc/examples/graphics/Makefile.fpc @@ -0,0 +1,18 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +dirs=ansi_console PCXView SimpleBGScroll + +[require] +packages=libgbafpc + +[install] +fpcpackage=y + +[default] +fpcdir=../../../.. + +[rules] +.NOTPARALLEL: diff --git a/packages/libgbafpc/examples/graphics/PCXView/Makefile b/packages/libgbafpc/examples/graphics/PCXView/Makefile new file mode 100644 index 0000000000..1b1b550060 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/PCXView/Makefile @@ -0,0 +1,1626 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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=gba +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-gba) +override TARGET_PROGRAMS+=PcxView +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_FILES+=*.elf *.o *.s *.gba *.h *.bin *.map $(BUILD)/* $(INC)/* +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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 +$(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/libgbafpc/examples/graphics/PCXView/Makefile.fpc b/packages/libgbafpc/examples/graphics/PCXView/Makefile.fpc new file mode 100644 index 0000000000..2c874ea3d8 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/PCXView/Makefile.fpc @@ -0,0 +1,81 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +loaders= +programs=PcxView + +[require] +packages=libgbafpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=gba +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.gba *.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 + +# +# 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/libgbafpc/examples/graphics/PCXView/PcxView.pp b/packages/libgbafpc/examples/graphics/PCXView/PcxView.pp new file mode 100644 index 0000000000..a2ee725107 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/PCXView/PcxView.pp @@ -0,0 +1,45 @@ +program PcxView; + +uses + ctypes, gba; + +{$l build/splash.pcx.o} + + +{$include inc/splash.pcx.inc} + +var + PaletteBuffer: array [0..255] of cuint16; + frame: cuint; + + +procedure VblankInterrupt(); +begin + frame := frame + 1; + scanKeys(); +end; + + + +begin + // Set up the interrupt handlers + irqInit(); + irqSet(IRQ_VBLANK, @VblankInterrupt); + + // Enable Vblank Interrupt to allow VblankIntrWait + irqEnable(IRQ_VBLANK); + + // Allow Interrupts + REG_IME^ := 1; + + SetMode(MODE_4 or BG2_ON); // screen mode & background to display + + DecodePCX(@splash_pcx, pcuint16(VRAM), @PaletteBuffer); + + FadeToPalette(PaletteBuffer, 60); + + while true do + VBlankIntrWait(); +end. + + diff --git a/packages/libgbafpc/examples/graphics/PCXView/data/ScoutSplash.pcx b/packages/libgbafpc/examples/graphics/PCXView/data/ScoutSplash.pcx Binary files differnew file mode 100644 index 0000000000..e75ce72429 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/PCXView/data/ScoutSplash.pcx diff --git a/packages/libgbafpc/examples/graphics/PCXView/data/splash.pcx b/packages/libgbafpc/examples/graphics/PCXView/data/splash.pcx Binary files differnew file mode 100644 index 0000000000..908f659459 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/PCXView/data/splash.pcx diff --git a/packages/libgbafpc/examples/graphics/SimpleBGScroll/Makefile b/packages/libgbafpc/examples/graphics/SimpleBGScroll/Makefile new file mode 100644 index 0000000000..450bd1f0a7 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/SimpleBGScroll/Makefile @@ -0,0 +1,1626 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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=gba +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-gba) +override TARGET_PROGRAMS+=SimpleBGScroll +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_FILES+=*.elf *.o *.s *.gba *.h *.bin *.map $(BUILD)/* $(INC)/* +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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 +$(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/libgbafpc/examples/graphics/SimpleBGScroll/Makefile.fpc b/packages/libgbafpc/examples/graphics/SimpleBGScroll/Makefile.fpc new file mode 100644 index 0000000000..6e9dff6671 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/SimpleBGScroll/Makefile.fpc @@ -0,0 +1,81 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +loaders= +programs=SimpleBGScroll + +[require] +packages=libgbafpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=gba +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.gba *.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 + +# +# 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/libgbafpc/examples/graphics/SimpleBGScroll/SimpleBGScroll.pp b/packages/libgbafpc/examples/graphics/SimpleBGScroll/SimpleBGScroll.pp new file mode 100644 index 0000000000..205567eff3 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/SimpleBGScroll/SimpleBGScroll.pp @@ -0,0 +1,160 @@ +program SimpleBGScroll; + +uses + ctypes, gba; + +{$l build\r6502_portfont.bin.o} + +{$include inc\r6502_portfont.bin.inc} + +var + MAPADDRESS: pcuint16; + +const + DELAY = 2; // slow things down + TILEWIDTH = 8; // how much to scroll + ROW = 10; // what row to place text at + +// -------------------------------------------------------------------- + +var + palette: array [0..6] of cuint16; + +// -------------------------------------------------------------------- + +const + message = ' ' + + 'Hello, this is an example of an oldschool simple tile scroller ' + + 'not unlike how it was done in days of yore. The ''@'' symbol ' + + 'at the top of your screen is intentional, to dispel the illusion ' + + 'of this scroller, to demonstrate the simple concept behind it. ' + + 'Check out the source to learn how it works. It is very simple! ' + + 'This exercise brought to you by r6502... ' + + 'Text is about to restart... '; + + + +procedure updatescrolltext(idx: cuint32); +var + i: integer; + temppointer: pcuint16; +begin + temppointer := pcuint16(MAPADDRESS + (ROW * 32)); + + // write out a whole row of text to the map + for i := 0 to 31 do + begin + // check for end of message so we can wrap around properly + if (message[idx] = #0) then + idx := 0; + + // write a character - we subtract 32, because the font graphics + // start at tile 0, but our text is in ascii (starting at 32 and up) + // in other words, tile 0 is a space in our font, but in ascii a + // space is 32 so we must account for that difference between the two. + temppointer^ := Ord(message[idx]) - 32; + inc(temppointer); + inc(idx); + end; +end; + + +var + i, scrollx, scrolldelay, textindex: integer; + temppointer: pcuint16; + +begin + MAPADDRESS := MAP_BASE_ADR(31); // our base map address + + palette[0] := RGB8($40,$80,$c0); + palette[1] := RGB8($FF,$FF,$FF); + palette[2] := RGB8($F5,$FF,$FF); + palette[3] := RGB8($DF,$FF,$F2); + palette[4] := RGB8($CA,$FF,$E2); + palette[5] := RGB8($B7,$FD,$D8); + palette[6] := RGB8($2C,$4F,$8B); + + // Set up the interrupt handlers + irqInit(); + // Enable Vblank Interrupt to allow VblankIntrWait + irqEnable(IRQ_VBLANK); + + // Allow Interrupts + REG_IME^ := 1; + + // load the palette for the background, 7 colors + temppointer := BG_COLORS; + + for i := 0 to 6 do + begin + temppointer^ := cuint32(palette[i]); // u32 cast avoids u8 memory writing + inc(temppointer); + end; + + // load the font into gba video mem (48 characters, 4bit tiles) + + CpuFastSet(@r6502_portfont_bin, pcuint16(VRAM), (r6502_portfont_bin_size div 4) or COPY32); + + // clear screen map with tile 0 ('space' tile) (256x256 halfwords) + + //MAP_BASE_ADR(31) := nil; + CpuFastSet( MAP_BASE_ADR(31), MAP_BASE_ADR(31), FILL or COPY32 or ($800 div 4)); + + // set screen H and V scroll positions + BG_OFFSET[0].x := 0; + BG_OFFSET[0].y := 0; + + // initialize our variables + scrollx := 0; + textindex := 0; + scrolldelay := 0; + + // put the '@' symbol on the top of the screen to show how + // the screen is only scrolling 7 pixels - to reveal the + // illusion of how the scroller works + pcuint16((MAPADDRESS + 1))^ := $20; // 0x20 == '@' + + // draw a row of text from beginning of message + updatescrolltext(0); + + // set the screen base to 31 (0x600F800) and char base to 0 (0x6000000) + BGCTRL[0] := SCREEN_BASE(31); + + // screen mode & background to display + SetMode( MODE_0 or BG0_ON ); + + while true do + begin + VBlankIntrWait(); + + // check if we reached our delay + if (scrolldelay = DELAY) then + begin + // yes, the delay is complete, so let's reset it + scrolldelay := 0; + + // check if we reached our scrollcount + if (scrollx = (TILEWIDTH-1)) then + begin + // yes, we've scrolled enough, so let's reset the count + scrollx := 0; + + // check if we reached the end of our scrolltext + // and if so we need to restart our index + if (message[textindex] = #0) then + textindex := 0 + else + inc(textindex); + + // finally, let's update the scrolltext with the current text index + updatescrolltext(textindex); + end else + inc(scrollx); + end else + inc(scrolldelay); + + // update the hardware horizontal scroll register + BG_OFFSET[0].x := scrollx; + end; +end. + diff --git a/packages/libgbafpc/examples/graphics/SimpleBGScroll/data/r6502_portfont.bin b/packages/libgbafpc/examples/graphics/SimpleBGScroll/data/r6502_portfont.bin Binary files differnew file mode 100644 index 0000000000..19033760ae --- /dev/null +++ b/packages/libgbafpc/examples/graphics/SimpleBGScroll/data/r6502_portfont.bin diff --git a/packages/libgbafpc/examples/graphics/SimpleBGScroll/readme.txt b/packages/libgbafpc/examples/graphics/SimpleBGScroll/readme.txt new file mode 100644 index 0000000000..04a94758c2 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/SimpleBGScroll/readme.txt @@ -0,0 +1,26 @@ + + +A demonstration of a simple background tile scroller for the Gameboy Advance. +Very oldschool. Every once in a while someone comes along and either wonders +how to do it or has a problem with theirs, so I wrote this to help them out +a bit, or rather, help them understand the concept. The source is commented +(hopefully well enough). + +This was built using Wintermute's GCC toolchain for win32 environment, and +that can be found here: + +http://www.devkit.tk/ + +or + +http://homepage.ntlworld.com/wintermute2002/ + +Yes, you should be using this, NOT outdated toolchains. +It is leaner, faster, up to date and uses MingW env. + + + Code and font by: + r6502 (r6502ATphokos.com) + 2004-04-02 + + Happy Coding!
\ No newline at end of file diff --git a/packages/libgbafpc/examples/graphics/ansi_console/Makefile b/packages/libgbafpc/examples/graphics/ansi_console/Makefile new file mode 100644 index 0000000000..d3842172bb --- /dev/null +++ b/packages/libgbafpc/examples/graphics/ansi_console/Makefile @@ -0,0 +1,1626 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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=gba +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-gba) +override TARGET_PROGRAMS+=console +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_FILES+=*.elf *.o *.s *.gba *.h *.bin *.map $(BUILD)/* $(INC)/* +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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 +$(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/libgbafpc/examples/graphics/ansi_console/Makefile.fpc b/packages/libgbafpc/examples/graphics/ansi_console/Makefile.fpc new file mode 100644 index 0000000000..ae9ed77b47 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/ansi_console/Makefile.fpc @@ -0,0 +1,81 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +loaders= +programs=console + +[require] +packages=libgbafpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=gba +fpcdir=../../../../.. + +[clean] +files=*.elf *.o *.s *.gba *.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 + +# +# 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/libgbafpc/examples/graphics/ansi_console/console.pp b/packages/libgbafpc/examples/graphics/ansi_console/console.pp new file mode 100644 index 0000000000..c8cf3d5935 --- /dev/null +++ b/packages/libgbafpc/examples/graphics/ansi_console/console.pp @@ -0,0 +1,61 @@ +program console; + +uses + gba; + +begin + // the vblank interrupt must be enabled for VBlankIntrWait() to work + // since the default dispatcher handles the bios flags no vblank handler + // is required + + irqInit(); + + irqEnable(IRQ_VBLANK); + + // initialise the console + // setting NULL & 0 for the font address & size uses the default font + // The font should be a complete 1bit 8x8 ASCII font + consoleInit( 0, // charbase + 4, // mapbase + 0, // background number + nil, // font + 0, // font size + 15 // 16 color palette + ); + + // set the screen colors, color 0 is the background color + // the foreground color is index 1 of the selected 16 color palette + BG_COLORS[0] := RGB8(58,110,165); + BG_COLORS[241] := RGB5(31,31,31); + + SetMode(MODE_0 or BG0_ON); + + // 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'[10;10H' + 'Hello World!'); + + // ansi escape sequence to move cursor up + // /x1b[linesA + iprintf(#27'[10A' + 'Line 0'); + + // ansi escape sequence to move cursor left + // /x1b[columnsD + iprintf(#27'[28D' + 'Column 0'); + + // ansi escape sequence to move cursor down + // /x1b[linesB + iprintf(#27'[19B' + 'Line 19'); + + // ansi escape sequence to move cursor right + // /x1b[columnsC + iprintf(#27'[5C' + 'Column 20'); + + while true do + VBlankIntrWait(); + +end. + diff --git a/packages/libgbafpc/examples/template/Makefile b/packages/libgbafpc/examples/template/Makefile new file mode 100644 index 0000000000..247c484a0c --- /dev/null +++ b/packages/libgbafpc/examples/template/Makefile @@ -0,0 +1,1626 @@ +# +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/05/24] +# +default: all +MAKEFILETARGETS=arm-gba +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=gba +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-gba) +override TARGET_PROGRAMS+=template +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_UNITS+=* +endif +ifeq ($(FULL_TARGET),arm-gba) +override CLEAN_FILES+=*.elf *.o *.s *.gba *.h *.bin *.map $(BUILD)/* $(INC)/* +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=libgbafpc +ifeq ($(FULL_TARGET),arm-gba) +REQUIRE_PACKAGES_LIBGBAFPC=1 +endif +ifdef REQUIRE_PACKAGES_LIBGBAFPC +PACKAGEDIR_LIBGBAFPC:=$(firstword $(subst /Makefile.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Makefile.fpc,$(PACKAGESDIR)))))) +ifneq ($(PACKAGEDIR_LIBGBAFPC),) +ifneq ($(wildcard $(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX)),) +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC)/units/$(TARGETSUFFIX) +else +UNITDIR_LIBGBAFPC=$(PACKAGEDIR_LIBGBAFPC) +endif +ifdef CHECKDEPEND +$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE): + $(MAKE) -C $(PACKAGEDIR_LIBGBAFPC) $(FPCMADE) +override ALLDEPENDENCIES+=$(PACKAGEDIR_LIBGBAFPC)/$(FPCMADE) +endif +else +PACKAGEDIR_LIBGBAFPC= +UNITDIR_LIBGBAFPC:=$(subst /Package.fpc,,$(strip $(wildcard $(addsuffix /libgbafpc/Package.fpc,$(UNITSDIR))))) +ifneq ($(UNITDIR_LIBGBAFPC),) +UNITDIR_LIBGBAFPC:=$(firstword $(UNITDIR_LIBGBAFPC)) +else +UNITDIR_LIBGBAFPC= +endif +endif +ifdef UNITDIR_LIBGBAFPC +override COMPILER_UNITDIR+=$(UNITDIR_LIBGBAFPC) +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 +$(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/libgbafpc/examples/template/Makefile.fpc b/packages/libgbafpc/examples/template/Makefile.fpc new file mode 100644 index 0000000000..4470d44a1e --- /dev/null +++ b/packages/libgbafpc/examples/template/Makefile.fpc @@ -0,0 +1,81 @@ +# +# Makefile.fpc for Free Pascal libgbafpc 2.x.y Examples +# + +[target] +loaders= +programs=template + +[require] +packages=libgbafpc +tools=bin2s mmutil grit rmdir +nortl=y + +[install] +fpcpackage=y + +[default] +cpu=arm +target=gba +fpcdir=../../../.. + +[clean] +files=*.elf *.o *.s *.gba *.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 + +# +# 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/libgbafpc/examples/template/template.pp b/packages/libgbafpc/examples/template/template.pp new file mode 100644 index 0000000000..811d9cc1e5 --- /dev/null +++ b/packages/libgbafpc/examples/template/template.pp @@ -0,0 +1,23 @@ +program template; + +uses + ctypes, gba; + +begin + + // the vblank interrupt must be enabled for VBlankIntrWait() to work + // since the default dispatcher handles the bios flags no vblank handler + // is required + irqInit(); + irqEnable(IRQ_VBLANK); + + consoleDemoInit(); + + // ansi escape sequence to set print co-ordinates + // /x1b[line;columnH + iprintf(#$1b'[10;10HHello World!'#10); + + while true do + VBlankIntrWait(); + +end. diff --git a/packages/libgbafpc/fpmake.pp b/packages/libgbafpc/fpmake.pp index 326066fa46..82a7f19016 100644 --- a/packages/libgbafpc/fpmake.pp +++ b/packages/libgbafpc/fpmake.pp @@ -16,7 +16,7 @@ begin {$ifdef ALLPACKAGES} P.Directory:='libgbafpc'; {$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/libgbafpc/src/gba/disc.inc b/packages/libgbafpc/src/gba/disc.inc new file mode 100644 index 0000000000..36543f549d --- /dev/null +++ b/packages/libgbafpc/src/gba/disc.inc @@ -0,0 +1,3 @@ +{$ifdef GBA_INTERFACE} +function discGetInterface(): PDISC_INTERFACE; cdecl; external; +{$endif GBA_INTERFACE} diff --git a/packages/libgbafpc/src/gba/disc_io.inc b/packages/libgbafpc/src/gba/disc_io.inc new file mode 100644 index 0000000000..4bc413709a --- /dev/null +++ b/packages/libgbafpc/src/gba/disc_io.inc @@ -0,0 +1,32 @@ +{$ifdef GBA_INTERFACE} + +const + FEATURE_MEDIUM_CANREAD = $00000001; + FEATURE_MEDIUM_CANWRITE = $00000002; + FEATURE_SLOT_GBA = $00000010; + FEATURE_SLOT_NDS = $00000020; + + +type + FN_MEDIUM_STARTUP = function: boolean; + FN_MEDIUM_ISINSERTED = function: boolean; + FN_MEDIUM_READSECTORS = function(sector, numSectors: cint32; buffer: pointer): boolean; + FN_MEDIUM_WRITESECTORS = function(sector, numSectors: cint32; const buffer: pointer): boolean; + FN_MEDIUM_CLEARSTATUS = function: boolean; + FN_MEDIUM_SHUTDOWN = function: boolean; + + 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; + +{$endif GBA_INTERFACE} diff --git a/packages/libgbafpc/src/gba/dldi.inc b/packages/libgbafpc/src/gba/dldi.inc new file mode 100644 index 0000000000..075b7aac4c --- /dev/null +++ b/packages/libgbafpc/src/gba/dldi.inc @@ -0,0 +1,51 @@ +{$ifdef GBA_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; + +// I/O interface with DLDI extensions +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 GBA_INTERFACE} diff --git a/packages/libgbafpc/src/gba/gba.inc b/packages/libgbafpc/src/gba/gba.inc index cc0b671db6..55709b376b 100644 --- a/packages/libgbafpc/src/gba/gba.inc +++ b/packages/libgbafpc/src/gba/gba.inc @@ -1,6 +1,6 @@ {$include gba_types.inc} {$include gba_base.inc} -{$include helper.inc} +{$include gba_helper.inc} {$include boyscout.inc} diff --git a/packages/libgbafpc/src/gba/gba_console.inc b/packages/libgbafpc/src/gba/gba_console.inc index 9a52460f28..2834319602 100644 --- a/packages/libgbafpc/src/gba/gba_console.inc +++ b/packages/libgbafpc/src/gba/gba_console.inc @@ -37,65 +37,62 @@ *) {$ifdef GBA_INTERFACE} -(* -function CON_CLS(): string; inline; -function CON_POS(_x, _y: integer): string; inline; -function CON_UP(_dy: integer): string; inline; -function CON_DOWN(_dy: integer): string; inline; -function CON_RIGHT(_dx: integer): string; inline; -function CON_LEFT(_dx: integer): string; inline; -function CON_ERASE(): string; inline; -procedure CON_CLL(_y: integer); inline; -*) +// Make console interaction a little less eye-crossing -procedure consoleInit(charBase, mapBase, background: integer; - const font: pu8; fontsize, palette: integer); cdecl; external; +function CON_CLS(): pchar; inline; +function CON_ERASE(): pchar; inline; +function CON_POS(_x, _y: cint): pchar; inline; +function CON_UP(_dy: cint): pchar; inline; +function CON_DOWN(_dy: cint): pchar; inline; +function CON_RIGHT(_dx: cint): pchar; inline; +function CON_LEFT(_dx: cint): pchar; inline; +function CON_CLL(_y: cint): pchar; inline; +procedure consoleInit(charBase, mapBase, background: cint; + const font: pcuint8; fontsize, palette: cint); cdecl; external; +procedure consoleDemoInit(); cdecl; external; {$endif GBA_INTERFACE} {$ifdef GBA_IMPLEMENTATION} -(* -function CON_CLS(): string; inline; +function CON_CLS(): pchar; inline; begin - CON_CLS := #51'[2J'; + CON_CLS := #27'[2J'; end; - -function CON_POS(_x, _y: integer): string; inline; + +function CON_ERASE(): pchar; inline; begin - CON_POS := format(#51'[%i;%iH', [_y, _x]); + CON_ERASE := #27'[K'; end; - -function CON_UP(_dy: integer): string; inline; + +function CON_POS(_x, _y: cint): pchar; inline; begin - CON_UP := format(#51'[%iA', [_dy]); + CON_POS := pchar(#27'[' + (GBAIntToStr(_y)) +';' + (GBAIntToStr(_x)) + 'H'); end; -function CON_DOWN(_dy: integer): string; inline; +function CON_UP(_dy: cint): pchar; inline; begin - CON_DOWN := format(#51'[%iB', [_dy]); + CON_UP := pchar(#27'[' + GBAIntToStr(_dy) +'A'); end; -function CON_RIGHT(_dx: integer): string; inline; +function CON_DOWN(_dy: cint): pchar; inline; begin - CON_RIGHT := format(#51'[%iC', [_dx]); + CON_DOWN := pchar(#27'[' + GBAIntToStr(_dy) + 'B'); end; -function CON_LEFT(_dx: integer): string; inline; +function CON_RIGHT(_dx: cint): pchar; inline; begin - CON_LEFT := format(#51'[%iD', [_dx]); -end; + CON_RIGHT := pchar(#27'[' + GBAIntToStr(_dx) + 'C'); +end; -function CON_ERASE(): string; inline; +function CON_LEFT(_dx: cint): pchar; inline; begin - CON_ERASE := #51'[K'; + CON_LEFT := pchar(#27'[' + GBAIntToStr(_dx) + 'D'); end; -procedure CON_CLL(_y: integer); inline; +function CON_CLL(_y: cint): pchar; inline; begin - CON_POS(1,_y); - CON_ERASE(); + CON_CLL := pchar(concat(CON_POS(1, _y), CON_ERASE())); end; -*) {$endif GBA_IMPLEMENTATION} diff --git a/packages/libgbafpc/src/gba/gba_helper.inc b/packages/libgbafpc/src/gba/gba_helper.inc new file mode 100644 index 0000000000..78d76887f5 --- /dev/null +++ b/packages/libgbafpc/src/gba/gba_helper.inc @@ -0,0 +1,192 @@ +(* + $Id$ + ------------------------------------------------------------------------------ + This lib is a raw porting of tonclib library for gba (you can find it at + http://user.chem.tue.nl/jakvijn/index.htm). + + As this is a direct port from c, I'm pretty sure that something could not work + as you expect. I am even more sure that this code could be written better, so + if you think that I have made some mistakes or you have some better + implemented functions, let me know [francky74 (at) gmail (dot) com] + Enjoy! + + Conversion by Legolas (http://itaprogaming.free.fr) for freepascal compiler + (http://www.freepascal.org) + + Copyright (C) 2006 Francesco Lombardi + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library 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 + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + + ------------------------------------------------------------------------------ + + + 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 GBA_INTERFACE} +{$H+} + +procedure memset16(dest: pointer; hw: word; hwcount: dword); cdecl; external; +procedure memcpy16(dest: pointer; const src: pointer; hwcount: dword); cdecl; external; + +procedure memset32(dest: pointer; wd: dword; wcount: dword); cdecl; external; +procedure memcpy32(dest: pointer; const src: pointer; wcount: dword); 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): longint; varargs; 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): longint; cdecl; varargs; 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 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; + +const + SEEK_SET = 0; + SEEK_CUR = 1; + SEEK_END = 2; + +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; + +(* 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: qword; + __pad1: word; + __align_pad1: word; + st_ino: dword; + st_mode : dword; + st_nlink : dword; + st_uid : dword; + st_gid : dword; + st_rdev : qword; + __pad2 : word; + __align_pad2 : word; + st_size : longint; + st_blksize : longint; + st_blocks : longint; + st_atime : longint; + __unused1 : dword; + st_mtime : longint; + __unused2 : dword; + st_ctime : longint; + __unused3 : dword; + __unused4 : dword; + __unused5 : dword; + end; + 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; + +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; + +procedure DebugPrint(s: string); assembler; inline; +function GBAIntToStr(i: integer): string; + +{$endif GBA_INTERFACE} + + +{$ifdef GBA_IMPLEMENTATION} + +// memory handling routines +// these are in ASM and optimized; use when possible +{$l core_asm.o} + +procedure DebugPrint(s: string); assembler; inline; +asm + mov r0,s + swi #0xff0000 +end['r0']; + +function GBAIntToStr(i: integer): string; +var + s: string; +begin + str(i, s); + GBAIntToStr := s; +end; + + + +{$endif GBA_IMPLEMENTATION} diff --git a/packages/libgbafpc/src/gba/gba_interrupt.inc b/packages/libgbafpc/src/gba/gba_interrupt.inc index 9ee6693587..c888fb3968 100644 --- a/packages/libgbafpc/src/gba/gba_interrupt.inc +++ b/packages/libgbafpc/src/gba/gba_interrupt.inc @@ -1,38 +1,38 @@ (* $Id$ ------------------------------------------------------------------------------ - Header file for libgba interrupt handling + Header file for libgba interrupt handling - Copyright 2003-2006 by Dave Murphy. + Copyright 2003-2006 by Dave Murphy. - 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 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 library 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. + This library 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. + 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. - Please report all bugs and problems through the bug tracker at - "http://sourceforge.net/tracker/?group_id=114505&atid=668551". + Please report all bugs and problems through the bug tracker at + "http://sourceforge.net/tracker/?group_id=114505&atid=668551". ------------------------------------------------------------------------------ - - + + 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$ @@ -43,49 +43,51 @@ {$ifdef GBA_INTERFACE} type - IntFn = procedure; +// IntFn = procedure; + IntFn = procedure of object; TVoidFunctionPointer = procedure of object; - + IntTable = record - handler: IntFn; + handler: IntFn; mask: u32; end; - PIntTable = ^IntTable; + PIntTable = ^IntTable; -const +const MAX_INTS = 15; -// INT_VECTOR : IntFn = pointer($03007ffc); // BIOS Interrupt vector +// INT_VECTOR : IntFn = pointer($03007ffc); // BIOS Interrupt vector var - INT_VECTOR : IntFn absolute $03007ffc; // BIOS Interrupt vector + INT_VECTOR : IntFn absolute $03007ffc; // BIOS Interrupt vector - REG_IME : pu16 = pointer(REG_BASE + $208); // Interrupt Master Enable - REG_IE : pu16 = pointer(REG_BASE + $200); // Interrupt Enable - REG_IF : pu16 = pointer(REG_BASE + $202); // Interrupt Request + REG_IME : pu16 = pointer(REG_BASE + $208); // Interrupt Master Enable + REG_IE : pu16 = pointer(REG_BASE + $200); // Interrupt Enable + REG_IF : pu16 = pointer(REG_BASE + $202); // Interrupt Request type irqMASKS = integer; - irqMASK = irqMASKS; + irqMASK = irqMASKS; const - IRQ_VBLANK: irqMASK = (1 shl 0); - IRQ_HBLANK: irqMASK = (1 shl 1); - IRQ_VCOUNT: irqMASK = (1 shl 2); - IRQ_TIMER0: irqMASK = (1 shl 3); - IRQ_TIMER1: irqMASK = (1 shl 4); - IRQ_TIMER2: irqMASK = (1 shl 5); - IRQ_TIMER3: irqMASK = (1 shl 6); - IRQ_SERIAL: irqMASK = (1 shl 7); - IRQ_DMA0: irqMASK = (1 shl 8); - IRQ_DMA1: irqMASK = (1 shl 9); - IRQ_DMA2: irqMASK = (1 shl 10); - IRQ_DMA3: irqMASK = (1 shl 11); - IRQ_KEYPAD: irqMASK = (1 shl 12); - IRQ_GAMEPAK: irqMASK = (1 shl 13); + IRQ_VBLANK : irqMASK = (1 shl 0); + IRQ_HBLANK : irqMASK = (1 shl 1); + IRQ_VCOUNT : irqMASK = (1 shl 2); + IRQ_TIMER0 : irqMASK = (1 shl 3); + IRQ_TIMER1 : irqMASK = (1 shl 4); + IRQ_TIMER2 : irqMASK = (1 shl 5); + IRQ_TIMER3 : irqMASK = (1 shl 6); + IRQ_SERIAL : irqMASK = (1 shl 7); + IRQ_DMA0 : irqMASK = (1 shl 8); + IRQ_DMA1 : irqMASK = (1 shl 9); + IRQ_DMA2 : irqMASK = (1 shl 10); + IRQ_DMA3 : irqMASK = (1 shl 11); + IRQ_KEYPAD : irqMASK = (1 shl 12); + IRQ_GAMEPAK: irqMASK = (1 shl 13); var - IntrTable: array [0..MAX_INTS-1] of IntTable; cvar; // cvar used in order to gain access from assembly unit +// IntrTable: array [0..MAX_INTS-1] of IntTable; cvar; // cvar used in order to gain access from assembly unit + IntrTable: array [0..0] of IntTable; cvar; external; procedure irqInit(); cdecl; external; @@ -96,4 +98,3 @@ procedure irqDisable(mask: cint); cdecl; external; procedure IntrMain(); cdecl; external; {$endif GBA_INTERFACE} - 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 Binary files differnew file mode 100644 index 0000000000..0090da863e --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/keyg-subtonal.xm 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 Binary files differnew file mode 100644 index 0000000000..e0b5e6274b --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/purple_motion-inspiration.s3m 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 Binary files differnew file mode 100644 index 0000000000..f3f1d9d714 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/audio_modes/audio/rez-monday.mod 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 Binary files differnew file mode 100644 index 0000000000..e3efc25b9c --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Ambulance.wav diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav Binary files differnew file mode 100644 index 0000000000..1d8665bc5e --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/Boom.wav diff --git a/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod Binary files differnew file mode 100644 index 0000000000..7b06f97a85 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/basic_sound/audio/FlatOutLies.mod 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 Binary files differnew file mode 100644 index 0000000000..9656cdcd4a --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/reverb/audio/tempest-zen_bowling.mod 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 Binary files differnew file mode 100644 index 0000000000..de216918b4 --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example/gfx/ball.png 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 Binary files differnew file mode 100644 index 0000000000..ab42fb4cef --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example/music/example.it 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 Binary files differnew file mode 100644 index 0000000000..b8137d862b --- /dev/null +++ b/packages/libndsfpc/examples/audio/maxmod/song_events_example2/audio/example2.it 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/devkitPro/debugging/exceptionTest/main.pp b/packages/libndsfpc/examples/debugging/exceptionTest/exceptionTest.pp index 957e4f2dca..086a1c6307 100644 --- a/packages/libndsfpc/examples/devkitPro/debugging/exceptionTest/main.pp +++ b/packages/libndsfpc/examples/debugging/exceptionTest/exceptionTest.pp @@ -1,7 +1,6 @@ program main; -{$apptype arm9} -{$define ARM9} +{$apptype arm9} {$mode objfpc} uses @@ -14,16 +13,13 @@ uses // 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; + // install the default exception handler + defaultExceptionHandler(); - while true do + // generate an exception + pu32(250)^ := 100; + + while true do swiWaitForVBlank(); end. 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/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/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 Binary files differdeleted file mode 100644 index 6a5fb61a46..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/palette.bin.o +++ /dev/null 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.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 Binary files differdeleted file mode 100644 index bc6ca47475..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/rotscale_text/data/font.bmp +++ /dev/null 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/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/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/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/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/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/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/nehe/lesson11/drunkenlogo.pcx.o b/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o Binary files differdeleted file mode 100644 index f24743fd17..0000000000 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/drunkenlogo.pcx.o +++ /dev/null diff --git a/packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o b/packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o Binary files differdeleted file mode 100644 index 50fc3aba31..0000000000 --- a/packages/libndsfpc/examples/devkitPro/input/TouchTest/balldata.bin.o +++ /dev/null diff --git a/packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o b/packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o Binary files differdeleted file mode 100644 index 5a8f857c0f..0000000000 --- a/packages/libndsfpc/examples/devkitPro/input/TouchTest/ballpalette.bin.o +++ /dev/null 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 Binary files differdeleted file mode 100644 index edc8f9b82f..0000000000 --- a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/blaster.raw.o +++ /dev/null diff --git a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o b/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o Binary files differdeleted file mode 100644 index 656d0ba6fb..0000000000 --- a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/ion.raw.o +++ /dev/null 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 Binary files differdeleted file mode 100644 index 65ca2b4773..0000000000 --- a/packages/libndsfpc/examples/devkitPro/sound/SimpleSound/saberoff.raw.o +++ /dev/null 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 Binary files differnew file mode 100644 index 0000000000..a12203ed4a --- /dev/null +++ b/packages/libndsfpc/examples/filesystem/embedded_gbfs/GBFS/Mud.pcx 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/libfat/main.pp b/packages/libndsfpc/examples/filesystem/libfat/access_file/access_file.pp index 5c1babc3a7..49832b2715 100644 --- a/packages/libndsfpc/examples/libfat/main.pp +++ b/packages/libndsfpc/examples/filesystem/libfat/access_file/access_file.pp @@ -1,25 +1,22 @@ -program main; -{$apptype arm9} -{$define ARM9} +program access_file; {$mode objfpc} uses - nds9, fat; + ctypes, nds9, fat; var i: integer; - size: u32; + size: cuint32; text: string; handle: P_FILE; begin - consoleDemoInit(); - videoSetMode(MODE_FB0); - vramSetBankA(VRAM_A_LCD); + consoleDemoInit(); printf('fatInit()...'); - if fatInit(4, true) then - begin + + if (fatInitDefault()) then + begin printf(#9 + 'Success' + #10); handle := fopen('/test1.txt', 'r'); @@ -38,9 +35,6 @@ begin end else printf(#9 + 'Failure' + #10); - for i := 0 to (256 * 192) - 1 do - VRAM_A[i] := RGB15(31,0,0); - while true do; diff --git a/packages/libndsfpc/examples/libfat/test1.txt b/packages/libndsfpc/examples/filesystem/libfat/access_file/test1.txt index 845b08fe32..845b08fe32 100644 --- a/packages/libndsfpc/examples/libfat/test1.txt +++ b/packages/libndsfpc/examples/filesystem/libfat/access_file/test1.txt 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 <dir>'#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/devkitPro/Graphics/3D/Misc/Display_List_2/data/teapot.bin b/packages/libndsfpc/examples/graphics/3D/Display_List_2/data/teapot.bin Binary files differindex 5fb08a6ac6..5fb08a6ac6 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Display_List_2/data/teapot.bin +++ b/packages/libndsfpc/examples/graphics/3D/Display_List_2/data/teapot.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/EnvMapping.pp index a7982062d2..14bddced35 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/EnvMapping.pp @@ -1,27 +1,17 @@ -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 +program EnvMapping; +{$L build/teapot.bin.o} +{$L build/cafe.bin.o} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; + +{$include inc/teapot.bin.inc} +{$include inc/cafe.bin.inc} 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; @@ -31,16 +21,16 @@ begin if (keys and KEY_TOUCH) <> 0 then begin - touchXY := touchReadXY(); + touchRead(touchXY); if (prev_pen[0] <> $7FFFFFFF) then begin - dx^ := (prev_pen[0] - touchXY.x); - dy^ := (prev_pen[1] - touchXY.y); + dx^ := (prev_pen[0] - touchXY.rawx); + dy^ := (prev_pen[1] - touchXY.rawy); end; - prev_pen[0] := touchXY.x; - prev_pen[1] := touchXY.y; + prev_pen[0] := touchXY.rawx; + prev_pen[1] := touchXY.rawy; end else begin prev_pen[0] := $7FFFFFFF; @@ -50,25 +40,19 @@ begin end; end; + var - rotateX: Integer = 0; - rotateY: Integer = 0; + 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(); @@ -81,12 +65,11 @@ begin glClearDepth($7FFF); //this should work the same as the normal gl call - glViewPort(0,0,255,191); + 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)); @@ -95,27 +78,27 @@ begin //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); + 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); - glIdentity(); + 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 shr 3); //rotate texture-matrix to match the camera - glRotateYi(rotateY shr 3); - + glRotateXi(rotateX); //rotate texture-matrix to match the camera + glRotateYi(rotateY); glMatrixMode(GL_POSITION); - glIdentity(); + glLoadIdentity(); glTranslate3f32(0, 0, floattof32(-3)); - glRotateXi(rotateX shr 3); - glRotateYi(rotateY shr 3); + glRotateXi(rotateX); + glRotateYi(rotateY); glMaterialf(GL_EMISSION, RGB15(31,31,31)); @@ -128,8 +111,8 @@ begin 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]; @@ -139,6 +122,5 @@ begin glCallList(@teapot_bin); glFlush(0); - end; - + 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/devkitPro/Graphics/3D/Misc/Env_Mapping/data/cafe.bin b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/cafe.bin Binary files differindex 3a3dc3975f..3a3dc3975f 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/cafe.bin +++ b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/cafe.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/teapot.bin b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/teapot.bin Binary files differindex 423968b900..423968b900 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Env_Mapping/data/teapot.bin +++ b/packages/libndsfpc/examples/graphics/3D/Env_Mapping/data/teapot.bin 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/devkitPro/Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx b/packages/libndsfpc/examples/graphics/3D/Ortho/data/drunkenlogo.pcx Binary files differindex 610722bec6..610722bec6 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Ortho/data/drunkenlogo.pcx +++ b/packages/libndsfpc/examples/graphics/3D/Ortho/data/drunkenlogo.pcx 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/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture.bin index 423699d1f7..423699d1f7 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_pal.bin index e9b04b72bf..e9b04b72bf 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_tex.bin Binary files differindex 03068e687d..03068e687d 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture1_RGB16_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture1_RGB16_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_pal.bin Binary files differindex 9b1d466d21..9b1d466d21 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_tex.bin Binary files differindex 1e4cd1c853..1e4cd1c853 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture2_RGB16_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture2_RGB16_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_pal.bin Binary files differindex 174ed18640..174ed18640 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_tex.bin Binary files differindex 5254cb965d..5254cb965d 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture3_RGB16_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture3_RGB16_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_pal.bin Binary files differindex 0d7b385707..0d7b385707 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_tex.bin Binary files differindex ade6231da9..ade6231da9 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture4_RGB16_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture4_RGB16_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_pal.bin index 0ee8f0fa71..0ee8f0fa71 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_tex.bin Binary files differindex 036f1a1bec..036f1a1bec 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture5_RGB16_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture5_RGB16_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_pal.bin index 18a6bc0b4f..18a6bc0b4f 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_tex.bin Binary files differindex 0acb3a4efd..0acb3a4efd 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture6_RGB4_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture6_RGB4_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_pal.bin index 2664fc4571..2664fc4571 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_tex.bin Binary files differindex b6d1e38795..b6d1e38795 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture7_RGB4_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture7_RGB4_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_pal.bin Binary files differindex d770464540..d770464540 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_tex.bin Binary files differindex 7084002f86..7084002f86 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture8_RGB32_A3_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture8_RGB32_A3_tex.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_pal.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_pal.bin Binary files differindex f855ce6411..f855ce6411 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_pal.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_pal.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_tex.bin b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_tex.bin Binary files differindex 8ca2cfe3b0..8ca2cfe3b0 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Paletted_Cube/data/texture9_RGB32_A3_tex.bin +++ b/packages/libndsfpc/examples/graphics/3D/Paletted_Cube/data/texture9_RGB32_A3_tex.bin 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/devkitPro/Graphics/3D/Misc/Picking/main.pp b/packages/libndsfpc/examples/graphics/3D/Picking/Picking.pp index 86bfefd0c2..419d30712c 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/Picking/Picking.pp @@ -1,62 +1,25 @@ -(*--------------------------------------------------------------------------------- -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 +program picking; +{$L build/cone.bin.o} +{$L build/cylinder.bin.o} +{$L build/sphere.bin.o} uses - ctypes, nds9; // required by nds headers! - + ctypes, nds9; + +{$include inc/cone.bin.inc} +{$include inc/cylinder.bin.inc} +{$include inc/sphere.bin.inc} 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(); +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 @@ -80,44 +43,38 @@ begin 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() + viewport: array [0..3] of cint32 = (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); + // initialize gl + glInit(); //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 + 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 @@ -130,16 +87,16 @@ begin 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); + gluPerspective(60, 256.0 / 192.0, 0.1, 20); glMatrixMode(GL_MODELVIEW); // use the modelview matrix while drawing @@ -154,45 +111,43 @@ begin 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 + 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 + 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 + 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); + 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 + 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 @@ -200,19 +155,19 @@ begin 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; diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cone.bin b/packages/libndsfpc/examples/graphics/3D/Picking/data/cone.bin Binary files differindex 577dd5649b..577dd5649b 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cone.bin +++ b/packages/libndsfpc/examples/graphics/3D/Picking/data/cone.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cylinder.bin b/packages/libndsfpc/examples/graphics/3D/Picking/data/cylinder.bin Binary files differindex 8f38f8f02c..8f38f8f02c 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/cylinder.bin +++ b/packages/libndsfpc/examples/graphics/3D/Picking/data/cylinder.bin diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/sphere.bin b/packages/libndsfpc/examples/graphics/3D/Picking/data/sphere.bin Binary files differindex 008e7fec60..008e7fec60 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Picking/data/sphere.bin +++ b/packages/libndsfpc/examples/graphics/3D/Picking/data/sphere.bin 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/devkitPro/Graphics/3D/Misc/Textured_Cube/data/texture.bin b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/data/texture.bin index 423699d1f7..423699d1f7 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Cube/data/texture.bin +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Cube/data/texture.bin 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/devkitPro/Graphics/3D/Misc/Textured_Quad/data/texture.bin b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/data/texture.bin index 423699d1f7..423699d1f7 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Textured_Quad/data/texture.bin +++ b/packages/libndsfpc/examples/graphics/3D/Textured_Quad/data/texture.bin 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/devkitPro/Graphics/3D/Misc/Toon_Shading/main.pp b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/ToonShading.pp index c684925071..4588ba003e 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/ToonShading.pp @@ -1,24 +1,21 @@ -program main; -{$L statue.o} +program ToonShading; +//NB: This would look better if the object had a bit of texturing too (eyes, nose etc) -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation +{$L build/statue.bin.o} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; -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; +{$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: u32; + keys: cuint32; touchXY: touchPosition; begin keys := keysHeld(); @@ -29,12 +26,12 @@ begin if ( prev_pen[0] <> $7FFFFFFF ) then begin - dx := (prev_pen[0] - touchXY.x); - dy := (prev_pen[1] - touchXY.y); + dx := (prev_pen[0] - touchXY.rawx); + dy := (prev_pen[1] - touchXY.rawy); end; - prev_pen[0] := touchXY.x; - prev_pen[1] := touchXY.y; + prev_pen[0] := touchXY.rawx; + prev_pen[1] := touchXY.rawy; end else begin prev_pen[0] := $7FFFFFFF; @@ -47,19 +44,13 @@ end; var rotateX: integer = 0; rotateY: integer = 0; - keys: u32; + keys: cuint32; 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(); @@ -72,7 +63,7 @@ begin glClearDepth($7FFF); //this should work the same as the normal gl call - glViewPort(0,0,255,191); + 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 @@ -82,7 +73,7 @@ begin //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); + 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 @@ -107,7 +98,7 @@ begin 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); + glPolyFmt(POLY_ALPHA(31) or POLY_CULL_BACK or POLY_FORMAT_LIGHT0 or POLY_FORMAT_LIGHT1 or POLY_TOON_HIGHLIGHT); scanKeys(); diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/data/statue.bin b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/data/statue.bin Binary files differindex 3c5bba2c5e..3c5bba2c5e 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/Misc/Toon_Shading/data/statue.bin +++ b/packages/libndsfpc/examples/graphics/3D/Toon_Shading/data/statue.bin 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/devkitPro/Graphics/3D/nehe/lesson01/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/lesson01.pp index d54c23d0cd..1be7294919 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson01/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson01/lesson01.pp @@ -3,15 +3,12 @@ * Author: Dovoto * ****************************************) -program main; +program Lesson01; -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; function DrawGLScene(): boolean; begin @@ -19,20 +16,13 @@ begin //floating point hardware. For real life use the built in fixed point types. //this is where the magic happens glLoadIdentity(); - DrawGLScene := TRUE; + result := 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(); @@ -45,12 +35,12 @@ begin glClearDepth($7FFF); // Set our viewport to be the same size as the screen - glViewPort(0, 0, 255, 191); + glViewport(0, 0, 255, 191); // setup the view glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + 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); 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/devkitPro/Graphics/3D/nehe/lesson02/main1.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/lesson02.pp index 53030bf443..a4b6219fc2 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson02/main1.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson02/lesson02.pp @@ -3,10 +3,7 @@ * Author: Dovoto * ****************************************) -program main1; - -{$apptype arm9} -{$define ARM9} +program Lesson02; {$mode objfpc} @@ -16,6 +13,7 @@ uses 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 @@ -31,20 +29,14 @@ begin glVertex3f(-1.0,-1.0, 0.0); // Bottom Left glEnd(); // Done Drawing The Quad - DrawGLScene := TRUE; // Keep Going + result := 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(); 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/devkitPro/Graphics/3D/nehe/lesson03/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/lesson03.pp index 99b33da711..0f3cc63fb9 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson03/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson03/lesson03.pp @@ -3,19 +3,15 @@ * Author: Dovoto * ****************************************) -program main; +program Lesson03; -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + 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 @@ -34,33 +30,31 @@ begin 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 + result := 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); + // 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); - // 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); + 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); 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/devkitPro/Graphics/3D/nehe/lesson04/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/lesson04.pp index cd1dc0fd1d..b10c115908 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson04/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson04/lesson04.pp @@ -3,24 +3,21 @@ * Author: Dovoto * ****************************************) -program main; +program Lesson04; -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; var - rtri: cfloat = 0.0; // Angle For The Triangle ( NEW ) - rquad: cfloat = 0.0; // Angle For The Quad ( NEW ) + 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 + 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 @@ -32,7 +29,7 @@ begin 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 + 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 @@ -44,25 +41,15 @@ begin 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 + result := 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(); @@ -81,7 +68,7 @@ begin glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); //ds specific, several attributes can be set here @@ -92,10 +79,13 @@ begin while true do begin + // draw the scene DrawGLScene(); - //a handy little built in function to wait for a screen refresh - swiWaitForVBlank(); + // 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/devkitPro/Graphics/3D/nehe/lesson05/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/lesson05.pp index 4f14b1d674..d8e770ef15 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson05/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson05/lesson05.pp @@ -3,19 +3,16 @@ * Author: Dovoto * ****************************************) -program main; +program Lesson05; -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype - -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; var - rtri: cfloat = 0.0; // Angle For The Triangle ( NEW ) - rquad: cfloat = 0.0; // Angle For The Quad ( NEW ) + rtri: cfloat = 0.0; + rquad: cfloat = 0.0; function DrawGLScene(): boolean; @@ -88,21 +85,14 @@ begin 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 + result := 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(); @@ -119,7 +109,7 @@ begin glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + 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); 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/devkitPro/Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/data/drunkenlogo.pcx Binary files differindex f24743fd17..610722bec6 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/drunkenlogo.pcx.o +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/data/drunkenlogo.pcx diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/lesson06.pp index e11b1826e2..3d508f759f 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson06/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson06/lesson06.pp @@ -2,22 +2,17 @@ * NDS NeHe Lesson 06 * * Author: Dovoto * ****************************************) -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype +program Lesson06; +{$L build/drunkenlogo.pcx.o} -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; +{$include inc/drunkenlogo.pcx.inc} 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 ) @@ -73,7 +68,7 @@ begin xrot:=xrot+0.3; yrot:=yrot+0.2; zrot:=zrot+0.4; - DrawGLScene := TRUE; + result := true; end; @@ -82,7 +77,7 @@ var pcx: sImage; //////////////(NEW) and different from nehe. begin //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); image8to16(@pcx); @@ -92,21 +87,15 @@ begin imageDestroy(@pcx); - result := TRUE; + 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(); @@ -122,13 +111,13 @@ begin glClearDepth($7FFF); // Set our viewport to be the same size as the screen - glViewPort(0,0,255,191); + glViewport(0,0,255,191); LoadGLTextures(); glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + gluPerspective(70, 256.0 / 192.0, 0.1, 100); // Set the current matrix to be the model matrix glMatrixMode(GL_MODELVIEW); 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/devkitPro/Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/data/drunkenlogo.pcx Binary files differindex f24743fd17..610722bec6 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/drunkenlogo.pcx.o +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/data/drunkenlogo.pcx diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/lesson07.pp index c0b5b08e88..6e348e43f7 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson07/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson07/lesson07.pp @@ -1,39 +1,34 @@ (**************************************** - * NDS NeHe Lesson 04 * + * NDS NeHe Lesson 07 * * Author: Ethos * ****************************************) -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype +program Lesson07; +{$L build/drunkenlogo.pcx.o} -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; +{$include inc/drunkenlogo.pcx.inc} 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 + 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 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 ); + 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 ); @@ -90,7 +85,7 @@ begin yrot:=yrot+yspeed; - DrawGLScene := TRUE; + result := true; end; @@ -99,7 +94,7 @@ var pcx: sImage; //////////////(NEW) and different from nehe. begin //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); image8to16(@pcx); @@ -109,21 +104,14 @@ begin imageDestroy(@pcx); - result := TRUE; + 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(); @@ -145,7 +133,7 @@ begin glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + 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 @@ -189,14 +177,11 @@ begin 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 + 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); - end; DrawGLScene(); 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/devkitPro/Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/data/drunkenlogo.pcx Binary files differindex f24743fd17..610722bec6 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/drunkenlogo.pcx.o +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/data/drunkenlogo.pcx diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/lesson08.pp index 84841f1146..e422d2bad5 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson08/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson08/lesson08.pp @@ -1,38 +1,34 @@ (**************************************** - * NDS NeHe Lesson 04 * + * NDS NeHe Lesson 08 * * Author: Ethos * ****************************************) -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype +program Lesson08; +{$L build/drunkenlogo.pcx.o} -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! + ctypes, nds9; + +{$include inc/drunkenlogo.pcx.inc} 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 + 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 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 ); + 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 @@ -94,7 +90,7 @@ begin xrot := xrot+xspeed; yrot := yrot+yspeed; - DrawGLScene := TRUE; + result := true; end; @@ -103,7 +99,7 @@ var pcx: sImage; //////////////(NEW) and different from nehe. begin //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); + loadPCX(pcuint8(drunkenlogo_pcx), @pcx); image8to16(@pcx); @@ -113,22 +109,16 @@ begin imageDestroy(@pcx); - result := TRUE; + 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(); @@ -152,7 +142,7 @@ begin glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + 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 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/devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/data/Star.pcx Binary files differindex 2f8299a83b..fe6196808d 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/Star.pcx.o +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/data/Star.pcx diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/lesson09.pp index 2fb3dcefd7..1daa9817a9 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson09/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson09/lesson09.pp @@ -5,30 +5,26 @@ the features needed for this demo ****************************************) -program main; -{$L Star.pcx.o} -{$apptype arm9} //...or arm7 -{$define ARM9} //...or arm7, according to apptype +program Lesson09; +{$L build/star.pcx.o} -{$mode objfpc} // required for some libc funcs implementation +{$mode objfpc} uses - ctypes, nds9; // required by nds headers! - + ctypes, nds9; type TStars = record // Create A Structure For Star - r, g, b: integer; // Stars Color + r, g, b: cint; // Stars Color dist: cfloat; // Stars Distance From Center angle: cfloat; // Stars Current Angle end; +{$include inc/star.pcx.inc} + + 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? @@ -38,9 +34,9 @@ const 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 + 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 @@ -53,7 +49,7 @@ var pcx: sImage; //////////////(NEW) and different from nehe. begin //load our texture - loadPCX(pu8(Star_pcx), @pcx); + loadPCX(pcuint8(Star_pcx), @pcx); image8to16(@pcx); @@ -63,7 +59,7 @@ begin imageDestroy(@pcx); - result := TRUE; + result := true; end; function DrawGLScene(): boolean; // Here's Where We Do All The Drawing @@ -103,33 +99,27 @@ begin glEnd(); spin := spin + 0.01; - star[loop].angle := star[loop].angle + (loop / num); + 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 :=rand(256); - star[loop].g :=rand(256); - star[loop].b :=rand(256); + star[loop].r := random(256); + star[loop].g := random(256); + star[loop].b := random(256); end; end; - result := TRUE; // Keep Going + result := true; // Keep Going end; begin - // Turn on everything - powerON(POWER_ALL); - + Randomize; // 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(); @@ -159,7 +149,7 @@ begin //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)); + 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)); 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 Binary files differnew file mode 100644 index 0000000000..a12203ed4a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10/data/Mud.pcx 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 Binary files differnew file mode 100644 index 0000000000..a12203ed4a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson10b/data/Mud.pcx 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 Binary files differnew file mode 100644 index 0000000000..610722bec6 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/data/drunkenlogo.pcx diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/main.pp b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/lesson11.pp index 5db0e790e9..c19eb28427 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/3D/nehe/lesson11/main.pp +++ b/packages/libndsfpc/examples/graphics/3D/nehe/lesson11/lesson11.pp @@ -1,36 +1,44 @@ -(**************************************** - * NDS NeHe Lesson 11 * - * Author: Dovoto * - ****************************************) -program main; -{$L drunkenlogo.pcx.o} -{$apptype arm9} -{$define ARM9} +program Lesson11; +{$L build/drunkenlogo.pcx.o} {$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; +{$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: GLfloat; // X Rotation ( NEW ) - yrot: GLfloat; // Y Rotation ( NEW ) - zrot: GLfloat; // Z Rotation ( NEW ) - hold: v16; // Temporarily Holds A Floating Point Value + 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; + x, y: integer; + float_x, float_y, float_xb, float_yb: t16; begin glColor3b(255,255,255); // set the vertex color @@ -90,7 +98,7 @@ begin yrot:=yrot+0.2; zrot:=zrot+0.4; - drawGLScene := TRUE; // Everything Went OK + result := true; // Everything Went OK end; @@ -101,33 +109,24 @@ var pcx: sImage; //////////////(NEW) and different from nehe. begin //load our texture - loadPCX(pu8(drunkenlogo_pcx), @pcx); - + 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; + 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(); @@ -150,7 +149,7 @@ begin glMatrixMode(GL_PROJECTION); glLoadIdentity(); - gluPerspective(35, 256.0 / 192.0, 0.1, 100); + 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)); @@ -171,7 +170,7 @@ begin 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]; + points[x][y][2] := sinLerp(x * (DEGREES_IN_CIRCLE div 32)); end; 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/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.git b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.grit index bc83d8b33c..1f3eee344a 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.git +++ b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.grit @@ -1,3 +1,4 @@ +-W3 # disable alpha and set opaque bit for all pixels -gT! diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.png b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.png Binary files differindex a99f433e87..a99f433e87 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/16bit_color_bmp/data/drunkenlogo.png +++ b/packages/libndsfpc/examples/graphics/Backgrounds/16bit_color_bmp/gfx/drunkenlogo.png 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/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.git b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.grit index f3358514b8..f3358514b8 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.git +++ b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.grit diff --git a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.png b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.png Binary files differindex ea66c9e42f..ea66c9e42f 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/256_color_bmp/data/drunkenlogo.png +++ b/packages/libndsfpc/examples/graphics/Backgrounds/256_color_bmp/gfx/drunkenlogo.png 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 Binary files differnew file mode 100644 index 0000000000..864ec9312a --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/layers.pew 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 Binary files differnew file mode 100644 index 0000000000..5c7f41b3af --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/all_in_one/gfx/tiles.png 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/devkitPro/Graphics/2D/BG_Rotation/drunkenlogo.bin.o b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/drunkenlogo.bin Binary files differindex ce9052e475..64b34518ef 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/BG_Rotation/drunkenlogo.bin.o +++ b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/drunkenlogo.bin diff --git a/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin Binary files differnew file mode 100644 index 0000000000..1841883765 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Backgrounds/rotation/data/palette.bin 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 Binary files differnew file mode 100644 index 0000000000..12ad598049 --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Printing/custom_font/gfx/font.bmp 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/devkitPro/Graphics/2D/custom_font/data/font.bmp b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.bmp Binary files differindex bc6ca47475..bc6ca47475 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/custom_font/data/font.bmp +++ b/packages/libndsfpc/examples/graphics/Printing/rotscale_text/gfx/font.bmp 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 Binary files differnew file mode 100644 index 0000000000..d2da9e87ce --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/man.png 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 Binary files differnew file mode 100644 index 0000000000..a467109f5b --- /dev/null +++ b/packages/libndsfpc/examples/graphics/Sprites/animate_simple/sprites/woman.png 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/devkitPro/Graphics/2D/Complex_2D/main.pp b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/FireAndSprites.pp index 5a5231fcec..a5ceb5dcea 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/main.pp +++ b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/FireAndSprites.pp @@ -1,19 +1,10 @@ -program main; -{$L ball.pcx.o} - -{$apptype arm9} -{$define ARM9} - -{$mode objfpc} +program FireAndSprites; +{$L build/ball.pcx.o} 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; - + +{$include inc/ball.pcx.inc} const NUM_SPRITES = 128; @@ -22,48 +13,40 @@ 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 + x, y: cint; //location + dx, dy: cint; //speed + oam: PSpriteEntry; + gfxID: integer; //graphics location end; PSprite = ^TSprite; -procedure MoveSprite(sp: PSprite); +procedure MoveSprite(var sp: TSprite); 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; + x := sp.x shr 8; + y := sp.y shr 8; + sp.oam^.y := y; + sp.oam^.x := x; +end; -procedure initOAM(); +procedure initOAM(); var i: integer; begin for i := 0 to 127 do - OAMCopySub[i].st.attribute[0] := ATTR0_DISABLED; + OAMCopySub[i].attribute[0] := ATTR0_DISABLED; end; procedure updateOAM(); begin - dmaCopy(@OAMCopySub, OAM_SUB, sizeof(OAMCopySub)); + memcpy(OAM_SUB, @OAMCopySub, 128 * sizeof(SpriteEntry)); + //dmaCopy(@OAMCopySub, OAM_SUB, 128 * sizeof(SpriteEntry)); end; -function irqVBlank(): pointer; -begin -end; - var back, front: pcuint16; sprites: array [0..NUM_SPRITES - 1] of TSprite; @@ -74,7 +57,8 @@ var red: cuint16; ball: sImage; -begin +begin + randomize; back := VRAM_A; front := VRAM_B; @@ -85,78 +69,73 @@ begin 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 ); - + 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); - + 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] := u32(ball.palette[i]); + SPRITE_PALETTE_SUB[i] := cuint32(ball.palette[i]); for i := 0 to 32*16 - 1 do - SPRITE_GFX_SUB[i] := u32(ball.image.data16[i]); - + 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 := 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].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 (rand() and 1) <> 0 then + 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^.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; + 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 - SUB_BG0_CR^ := BG_COLOR_256 or (1 shl SCREEN_SHIFT); - SUB_BG1_CR^ := BG_COLOR_256 or (2 shl SCREEN_SHIFT); + 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); - 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; + end; //fill 2 tiles with different colors for i := 0 to (64 div 2) - 1 do @@ -168,38 +147,38 @@ begin while (true) do begin //scroll the background - SUB_BG0_X0^ := delta; + REG_BG0HOFS^ := delta; inc(delta); - SUB_BG0_Y0^ := 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]); + 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; + back[ix + SCREEN_WIDTH * (SCREEN_HEIGHT - 1)] := random($FFFF); + back[ix + SCREEN_WIDTH * (SCREEN_HEIGHT - 2)] := random($FFFF); end; - inc(back); - + back := back + 1; + for iy := 1 to SCREEN_HEIGHT - 3 do begin for ix := 1 to SCREEN_WIDTH - 2 do @@ -208,31 +187,31 @@ begin 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); + front := front - ((2 * SCREEN_WIDTH) - 1); - back[0] := (red shr 3); - inc(back); + back[0] := (red shr 3); + back := back + 1; end; - inc(back,2); - inc(front,2); - + back := back + 2; + front := front + 2; + end; swiWaitForVBlank(); - + updateOAM(); //flip screens @@ -242,13 +221,13 @@ begin front := VRAM_B; back := VRAM_A; screen := 0; - end else + end else begin - videoSetMode(MODE_FB0); + videoSetMode(MODE_FB0); front := VRAM_A; back := VRAM_B; screen := 1; end; - 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/devkitPro/Graphics/2D/Complex_2D/data/ball.pcx b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/data/ball.pcx Binary files differindex d7120162ac..d7120162ac 100644 --- a/packages/libndsfpc/examples/devkitPro/Graphics/2D/Complex_2D/data/ball.pcx +++ b/packages/libndsfpc/examples/graphics/Sprites/fire_and_sprites/data/ball.pcx 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 Binary files differnew file mode 100644 index 0000000000..a12203ed4a --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_look/data/Mud.pcx 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 Binary files differnew file mode 100644 index 0000000000..d64909869a --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/balldata.bin 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 Binary files differnew file mode 100644 index 0000000000..0779dfa99e --- /dev/null +++ b/packages/libndsfpc/examples/input/Touch_Pad/touch_test/data/ballpalette.bin 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/libmikmod/data/module.bin.o b/packages/libndsfpc/examples/libmikmod/data/module.bin.o Binary files differdeleted file mode 100644 index 881d268ee4..0000000000 --- a/packages/libndsfpc/examples/libmikmod/data/module.bin.o +++ /dev/null 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.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.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/dswifi7.inc b/packages/libndsfpc/src/dswifi/inc/dswifi7.inc index 9a7e1ed445..359218cc99 100644 --- a/packages/libndsfpc/src/dswifi/dswifi7.inc +++ b/packages/libndsfpc/src/dswifi/inc/dswifi7.inc @@ -1,5 +1,5 @@ (* - $Id: dswifi7.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ DSWifi Project - Arm7 Library Header file (dswifi7.h) (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org @@ -55,6 +55,6 @@ 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/dswifi9.inc b/packages/libndsfpc/src/dswifi/inc/dswifi9.inc index 2fdec8a9d8..a9c4b0b6d8 100644 --- a/packages/libndsfpc/src/dswifi/dswifi9.inc +++ b/packages/libndsfpc/src/dswifi/inc/dswifi9.inc @@ -1,5 +1,5 @@ (* - $Id: dswifi9.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ DSWifi Project - Arm9 Library Header File (dswifi9.h) (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org @@ -74,6 +74,9 @@ const WFLAG_APDATA_SHORTPREAMBLE = $0020; WFLAG_APDATA_ACTIVE = $8000; + WFC_CONNECT = true; + INIT_ONLY = false; + type TWIFI_RETURN = ( WIFI_RETURN_OK = 0, @@ -135,6 +138,7 @@ type WEPMODE_128BIT = 2 ); + TWIFI_ASSOCSTATUS = ( ASSOCSTATUS_DISCONNECTED, ASSOCSTATUS_SEARCHING, @@ -145,6 +149,24 @@ type 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; @@ -205,7 +227,7 @@ 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; +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; @@ -216,5 +238,5 @@ 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/dswifi_version.inc b/packages/libndsfpc/src/dswifi/inc/dswifi_version.inc index 5515bb84c0..5f63b54571 100644 --- a/packages/libndsfpc/src/dswifi/dswifi_version.inc +++ b/packages/libndsfpc/src/dswifi/inc/dswifi_version.inc @@ -2,6 +2,6 @@ const DSWIFI_MAJOR = 0; DSWIFI_MINOR = 3; - DSWIFI_REVISION = 4; - DSWIFI_VERSION = '0.3.4'; + DSWIFI_REVISION = 6; + DSWIFI_VERSION = '0.3.6'; {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/dswifi/netdb.inc b/packages/libndsfpc/src/dswifi/inc/netdb.inc index 0041ecadd5..20de4f838f 100644 --- a/packages/libndsfpc/src/dswifi/netdb.inc +++ b/packages/libndsfpc/src/dswifi/inc/netdb.inc @@ -1,5 +1,5 @@ (* - $Id: netdb.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ DSWifi Project - socket emulation layer defines/prototypes (netdb.h) (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org diff --git a/packages/libndsfpc/src/dswifi/netinet/in.inc b/packages/libndsfpc/src/dswifi/inc/netinet/in.inc index a43a1367fc..b3023a2f87 100644 --- a/packages/libndsfpc/src/dswifi/netinet/in.inc +++ b/packages/libndsfpc/src/dswifi/inc/netinet/in.inc @@ -1,5 +1,5 @@ (* - $Id: in.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ DSWifi Project - socket emulation layer defines/prototypes (netinet/in.h) (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org diff --git a/packages/libndsfpc/src/dswifi/sgIP_errno.inc b/packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc index 14cefe7cac..452779ec3a 100644 --- a/packages/libndsfpc/src/dswifi/sgIP_errno.inc +++ b/packages/libndsfpc/src/dswifi/inc/sgIP_errno.inc @@ -1,5 +1,5 @@ (* - $Id: sgIP_errno.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ DSWifi Project - socket emulation layer defines/prototypes (sgIP_errno.h) (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org diff --git a/packages/libndsfpc/src/dswifi/sys/socket.inc b/packages/libndsfpc/src/dswifi/inc/sys/socket.inc index 3f4e6a1988..d5330402c2 100644 --- a/packages/libndsfpc/src/dswifi/sys/socket.inc +++ b/packages/libndsfpc/src/dswifi/inc/sys/socket.inc @@ -1,5 +1,5 @@ (* - $Id: socket.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ DSWifi Project - socket emulation layer defines/prototypes (sys/socket.h) (C) 2005-2006 Stephen Stair - sgstair@akkit.org - http://www.akkit.org 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/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 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / * + * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ * + * * + * ARM7 Definitions * + * * + * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + * * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * + ****************************************************************************) + +{$ifdef NDS_INTERFACE} +const + // precalculated mix buffer lengths (in bytes) + MM_MIXLEN_8KHZ = 544; // (8121 hz) + MM_MIXLEN_10KHZ = 704; // (10512 hz) + MM_MIXLEN_13KHZ = 896; // (13379 hz) + MM_MIXLEN_16KHZ = 1056; // (15768 hz) + MM_MIXLEN_18KHZ = 1216; // (18157 hz) + MM_MIXLEN_21KHZ = 1408; // (21024 hz) + MM_MIXLEN_27KHZ = 1792; // (26758 hz) + MM_MIXLEN_31KHZ = 2112; // (31536 hz) + + // measurements of channel types (bytes) + MM_SIZEOF_MODCH = 40; + MM_SIZEOF_ACTCH = 28; + MM_SIZEOF_MIXCH = 24; + +procedure mmInitDefault(soundbank: mm_addr; number_of_channels: mm_word); cdecl; external; +procedure mmInit(var setup: mm_gba_system); cdecl; external; +procedure mmVBlank(); cdecl; external; +procedure mmSetVBlankHandler(func: pointer); cdecl; external; +procedure mmSetEventHandler(handler: mm_callback); cdecl; external; +procedure mmFrame(); cdecl; external; //__attribute((long_call)) ??? +procedure mmStart(id: mm_word; mode: mm_pmode); cdecl; external; +procedure mmPause(); cdecl; external; +procedure mmResume(); cdecl; external; +procedure mmStop(); cdecl; external; +procedure mmPosition(position: mm_word); cdecl; external; +function mmActive(): cint; cdecl; external; +procedure mmJingle(module_ID: mm_word); cdecl; external; +function mmActiveSub(): cint; cdecl; external; +procedure mmSetModuleVolume(volume: mm_word); cdecl; external; +procedure mmSetJingleVolume(volume: mm_word); cdecl; external; +procedure mmSetModuleTempo(tempo: mm_word); cdecl; external; +procedure mmSetModulePitch(pitch: mm_word); cdecl; external; +procedure mmPlayModule(address, mode, layer: mm_word); cdecl; external; +function mmEffect(sample_ID: mm_word): mm_sfxhand; cdecl; external; +function mmEffectEx(sound: pmm_sound_effect): mm_sfxhand; cdecl; external; +procedure mmEffectVolume(handle: mm_sfxhand; volume: mm_word); cdecl; external; +procedure mmEffectPanning(handle: mm_sfxhand; panning: mm_byte); cdecl; external; +procedure mmEffectRate(handle: mm_sfxhand; rate: mm_word); cdecl; external; +procedure mmEffectScaleRate(handle: mm_sfxhand; factor: mm_word); cdecl; external; +procedure mmEffectCancel(handle: mm_sfxhand); cdecl; external; +procedure mmEffectRelease(handle: mm_sfxhand); cdecl; external; +procedure mmSetEffectsVolume(volume: mm_word); cdecl; external; +procedure mmEffectCancelAll(); cdecl; external; + +const + MMCB_SONGMESSAGE = $2A; + MMCB_SONGFINISHED = $2B; + +var + mp_mix_seg: mm_byte; cvar; external; // current mixing segment + mp_writepos: mm_word; cvar; external; // mixer's write position + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/maxmod/inc/maxmod7.inc b/packages/libndsfpc/src/maxmod/inc/maxmod7.inc new file mode 100644 index 0000000000..4445b4b079 --- /dev/null +++ b/packages/libndsfpc/src/maxmod/inc/maxmod7.inc @@ -0,0 +1,91 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / * + * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ * + * * + * ARM7 Definitions * + * * + * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + * * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * + ****************************************************************************) + +{$ifdef ARM9} + {$error maxmod7 is for ARM7!} +{$endif ARM9} + + +{$ifdef NDS_INTERFACE} + +procedure mmInstall(fifo_channel: cint); cdecl; external; +procedure mmLockChannels(bitmask: mm_word); cdecl; external; +procedure mmUnlockChannels(bitmask: mm_word); cdecl; external; +function mmIsInitialized(): mm_bool; cdecl; external; +procedure mmSelectMode(mode: mm_mode_enum); cdecl; external; +procedure mmFrame(); cdecl; external; +procedure mmStart(module_ID: mm_word; mode: mm_pmode); cdecl; external; +procedure mmPause(); cdecl; external; +procedure mmResume(); cdecl; external; +procedure mmStop(); cdecl; external; +procedure mmPosition(position: mm_word); cdecl; external; +function mmActive(): mm_bool; cdecl; external; +procedure mmJingle(module_ID: mm_word); cdecl; external; +function mmActiveSub(): mm_bool; cdecl; external; +procedure mmSetModuleVolume(volume: mm_word); cdecl; external; +procedure mmSetJingleVolume(volume: mm_word); cdecl; external; +procedure mmPlayModule(address, mode, layer: mm_word); cdecl; external; + +function mmEffect(sample_ID: mm_word): mm_sfxhand; cdecl; external; +function mmEffectEx(sound: pmm_sound_effect): mm_sfxhand; cdecl; external; +procedure mmEffectVolume(handle: mm_sfxhand; volume: mm_word); cdecl; external; +procedure mmEffectPanning(handle: mm_sfxhand; panning: mm_byte); cdecl; external; +procedure mmEffectRate(handle: mm_sfxhand; rate: mm_word); cdecl; external; +procedure mmEffectScaleRate(handle: mm_sfxhand; factor: mm_word); cdecl; external; +procedure mmEffectCancel(handle: mm_sfxhand); cdecl; external; +procedure mmEffectRelease(handle: mm_sfxhand); cdecl; external; +procedure mmSetEffectsVolume(volume: mm_word); cdecl; external; +procedure mmEffectCancelAll(); cdecl; external; + +procedure mmStreamOpen(stream: pmm_stream; memory: mm_addr); cdecl; external; +procedure mmStreamUpdate(); cdecl; external; +procedure mmCloseStream(); cdecl; external; + +procedure mmReverbEnable(); cdecl; external; +procedure mmReverbConfigure(config: pmm_reverb_cfg); cdecl; external; +procedure mmReverbStart(channels: mm_reverbch); cdecl; external; +procedure mmReverbStop(channels: mm_reverbch); cdecl; external; +function mmReverbBufferSize(bit_depth, sampling_rate, delay: mm_word): mm_word; inline; +procedure mmReverbDisable(); cdecl; external; + +const + MMCB_SONGMESSAGE = $2A; + MMCB_SONGFINISHED = $2B; + +var + mmLayerMain: mm_modlayer; cvar; external; + mmLayerSub: mm_modlayer; cvar; external; +{$endif NDS_INTERFACE} + + + +{$ifdef NDS_IMPLEMENTATION} +function mmReverbBufferSize(bit_depth, sampling_rate, delay: mm_word): mm_word; inline; +begin + if bit_depth = 16 then + result := ((((sampling_rate * delay * 2) div 1000) + 3) and (not 3)) div 4 + else + result := ((((sampling_rate * delay) div 1000) + 3) and (not 3)) div 4; +end; +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/maxmod/inc/maxmod9.inc b/packages/libndsfpc/src/maxmod/inc/maxmod9.inc new file mode 100644 index 0000000000..21958109fc --- /dev/null +++ b/packages/libndsfpc/src/maxmod/inc/maxmod9.inc @@ -0,0 +1,137 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / * + * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ * + * * + * ARM9 Definitions * + * * + * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + * * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * + ****************************************************************************) + +{$ifdef ARM7} + {$error maxmod9 is for ARM9!} +{$endif} + + +{$ifdef NDS_INTERFACE} +procedure mmInitDefault(soundbank_file: pcchar); cdecl; external; + +procedure mmInitDefaultMem(soundbank: mm_addr); cdecl; external; + +procedure mmInit(system: pmm_ds_system); cdecl; external; + +procedure mmSelectMode(mode: mm_mode_enum); cdecl; external; + +procedure mmLoad(module_ID: mm_word); cdecl; external; + +procedure mmUnload(module_ID: mm_word); cdecl; external; + +procedure mmLoadEffect(sample_ID: mm_word); cdecl; external; + +procedure mmUnloadEffect(sample_ID: mm_word); cdecl; external; + +procedure mmLockChannels(bitmask: mm_word); cdecl; external; + +procedure mmUnlockChannels(bitmask: mm_word); cdecl; external; + +procedure mmSetEventHandler(handler: mm_callback); cdecl; external; + +procedure mmSoundBankInMemory(address: mm_addr); cdecl; external; +procedure mmSoundBankInFiles(filename: pcchar); cdecl; external; +procedure mmSetCustomSoundBankHandler(p_loader: mm_callback); cdecl; external; + + +procedure mmStart(module_ID: mm_word; mode: mm_pmode); cdecl; external; + +procedure mmPause(); cdecl; external; + +procedure mmResume(); cdecl; external; + +procedure mmStop(); cdecl; external; + +procedure mmPosition(position: mm_word); cdecl; external; + +procedure mmJingle(module_ID: mm_word); cdecl; external; + +procedure mmSetModuleVolume(volume: mm_word); cdecl; external; +procedure mmSetJingleVolume(volume: mm_word); cdecl; external; + +procedure mmSetModuleTempo(tempo: mm_word); cdecl; external; + +procedure mmSetModulePitch(pitch: mm_word); cdecl; external; + +function mmActive(): mm_bool; cdecl; external; + +function mmEffect(sample_ID: mm_word): mm_sfxhand; cdecl; external; + +function mmEffectEx(sound: pmm_sound_effect): mm_sfxhand; cdecl; external; + +procedure mmEffectVolume(handle: mm_sfxhand; volume: mm_word); cdecl; external; + +procedure mmEffectPanning(handle: mm_sfxhand; panning: mm_byte); cdecl; external; + +procedure mmEffectRate(handle: mm_sfxhand; rate: mm_word); cdecl; external; + +procedure mmEffectScaleRate(handle: mm_sfxhand; factor: mm_word); cdecl; external; + +procedure mmEffectCancel(handle: mm_sfxhand); cdecl; external; + +procedure mmEffectRelease(handle: mm_sfxhand); cdecl; external; + +function mmEffectExt(sound: pmm_sound_effect; sample: pmm_ds_sample): mm_sfxhand; cdecl; external; + +procedure mmSetEffectsVolume(volume: mm_word); cdecl; external; + +procedure mmEffectCancelAll(); cdecl; external; + +procedure mmStreamOpen(stream: pmm_stream); cdecl; external; + +procedure mmStreamUpdate(); cdecl; external; + +procedure mmStreamClose(); cdecl; external; + +procedure mmReverbEnable(); cdecl; external; + +procedure mmReverbConfigure(config: pmm_reverb_cfg); cdecl; external; + +procedure mmReverbStart(channels: mm_reverbch); cdecl; external; + +procedure mmReverbStop(channels: mm_reverbch); cdecl; external; + +function mmReverbBufferSize(bit_depth, sampling_rate, delay: mm_word): mm_word; inline; + +procedure mmReverbDisable(); cdecl; external; + +const + MMCB_SONGREQUEST = $1A; + MMCB_SAMPREQUEST = $1B; + MMCB_DELETESONG = $1C; + MMCB_DELETESAMPLE = $1D; + + MMCB_SONGMESSAGE = $2A; + MMCB_SONGFINISHED = $2B; +{$endif NDS_INTERFACE} + +{$ifdef NDS_IMPLEMENTATION} +function mmReverbBufferSize(bit_depth, sampling_rate, delay: mm_word): mm_word; inline; +begin + if bit_depth = 16 then + result := ((((sampling_rate * delay * 2) div 1000) + 3) and (not 3)) div 4 + else + result := ((((sampling_rate * delay) div 1000) + 3) and (not 3)) div 4; +end; +{$endif NDS_IMPLEMENTATION} diff --git a/packages/libndsfpc/src/maxmod/inc/mm_mas.inc b/packages/libndsfpc/src/maxmod/inc/mm_mas.inc new file mode 100644 index 0000000000..440fd1b28b --- /dev/null +++ b/packages/libndsfpc/src/maxmod/inc/mm_mas.inc @@ -0,0 +1,167 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / * + * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ * + * * + * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + * * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * + ****************************************************************************) + + +{$ifdef NDS_INTERFACE} + +{$define _____badbear_____} + +type + tmm_mas_prefix = record + size : mm_word; + _type : mm_byte; + version : mm_byte; + reserved : array [0..1] of mm_byte; + end; + mm_mas_prefix = tmm_mas_prefix; + pmm_mas_prefix = ^tmm_mas_prefix; + + tmm_mas_head = record + order_count : mm_byte; + instr_count : mm_byte; + sampl_count : mm_byte; + pattn_count : mm_byte; + flags : mm_byte; + global_volume : mm_byte; + initial_speed : mm_byte; + initial_tempo : mm_byte; + repeat_position : mm_byte; + reserved : array [0..2] of mm_byte; + channel_volume : array [0..31] of mm_byte; + channel_panning : array [0..31] of mm_byte; + sequence : array [0..199] of mm_byte; + + {$ifdef _____badbear_____} + tables : array [0..0] of mm_addr; + {$endif} + // ::instrument table + // ::sample info table + // ::pattern table + end; + mm_mas_head = tmm_mas_head; + pmm_mas_head = ^tmm_mas_head; + + tmm_mas_instrument = record + global_volume: mm_byte; + fadeout: mm_byte; + random_volume: mm_byte; + nna: mm_byte; + dct: mm_byte; + dca: mm_byte; + env_flags: mm_byte; + panning: mm_byte; + note_map: array [0..119] of mm_hword; + {$ifdef _____badbear_____} + envelopes: array [0..0] of mm_byte; + {$endif} + // ::envelopes + end; + mm_mas_instrument = tmm_mas_instrument; + pmm_mas_instrument = ^tmm_mas_instrument; + + tmm_mas_envelope = record + size: mm_byte; + loop_start: mm_byte; + loop_end: mm_byte; + sus_start: mm_byte; + sus_end: mm_byte; + node_count: mm_byte; + is_filter: mm_byte; // (maybe supported someday :) + wasted: mm_byte; + {$ifdef _____badbear_____} + env_nodes: array [0..0] of mm_byte; + {$endif} + // ::envelope nodes + end; + mm_mas_envelope = tmm_mas_envelope; + pmm_mas_envelope = ^tmm_mas_envelope; + + tmm_mas_sample_info = record + global_volume: mm_byte; + default_volume: mm_byte; + frequency: mm_hword; + av_type: mm_byte; // (auto vibrato) + av_depth: mm_byte; + av_speed: mm_byte; + panning: mm_byte; + av_rate: mm_hword; + msl_id: mm_hword; + {$ifdef _____badbear_____} + data: array [0..0] of mm_byte; + {$endif} + // ::sample may follow + end; + mm_mas_sample_info = tmm_mas_sample_info; + pmm_mas_sample_info = ^tmm_mas_sample_info; + + tmm_mas_pattern = record + row_count: mm_byte; + {$ifdef _____badbear_____} + pattern_data: array [0..0] of mm_byte; + {$endif} + // ::pattern data + end; + mm_mas_pattern = tmm_mas_pattern; + pmm_mas_pattern = ^tmm_mas_pattern; + + tmm_mas_gba_sample = record + length: mm_word; + loop_length: mm_word; + reserved: mm_hword; + default_frequency: mm_hword; + {$ifdef _____badbear_____} + data: array [0..0] of mm_byte; + {$endif} + // ::8-bit sample data + end; + mm_mas_gba_sample = tmm_mas_gba_sample; + pmm_mas_gba_sample = ^tmm_mas_gba_sample; + + tmm_mas_ds_sample = record + loop_start: mm_word; + format: mm_byte; + repeat_mode: mm_byte; + default_frequency: mm_hword; + {$ifdef _____badbear_____} + data: array [0..0] of mm_byte; + {$endif} + // ::sample data + case integer of + 0: (loop_length: mm_word;); + 1: (length: mm_word;); + end; + mm_mas_ds_sample = tmm_mas_ds_sample; + pmm_mas_ds_sample = ^tmm_mas_ds_sample; + +const + MM_SFORMAT_8BIT = 0; + MM_SFORMAT_16BIT = 1; + MM_SFORMAT_ADPCM = 2; + + MM_SREPEAT_FORWARD = 1; + MM_SREPEAT_OFF = 2; + + + + +{$endif NDS_INTERFACE} + diff --git a/packages/libndsfpc/src/maxmod/inc/mm_msl.inc b/packages/libndsfpc/src/maxmod/inc/mm_msl.inc new file mode 100644 index 0000000000..8362ac75f3 --- /dev/null +++ b/packages/libndsfpc/src/maxmod/inc/mm_msl.inc @@ -0,0 +1,38 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / * + * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ * + * * + * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + * * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * + ****************************************************************************) + + +{$ifdef NDS_INTERFACE} +type + tmslhead = record + sampleCount : mm_hword; + moduleCount : mm_hword; + reserved : array [0..1] of mm_word; + sampleTable : array [0..MSL_NSAMPS-1] of mm_addr; + moduleTable : array [0..MSL_NSONGS-1] of mm_addr; + end; + msl_head = tmslhead; + pmsl_head = ^tmslhead; + + +{$endif NDS_INTERFACE} + diff --git a/packages/libndsfpc/src/maxmod/inc/mm_types.inc b/packages/libndsfpc/src/maxmod/inc/mm_types.inc new file mode 100644 index 0000000000..120133b1be --- /dev/null +++ b/packages/libndsfpc/src/maxmod/inc/mm_types.inc @@ -0,0 +1,234 @@ +(**************************************************************************** + * __ * + * ____ ___ ____ __ ______ ___ ____ ____/ / * + * / __ `__ \/ __ `/ |/ / __ `__ \/ __ \/ __ / * + * / / / / / / /_/ /> </ / / / / / /_/ / /_/ / * + * /_/ /_/ /_/\__,_/_/|_/_/ /_/ /_/\____/\__,_/ * + * * + * Copyright (c) 2008, Mukunda Johnson (mukunda@maxmod.org) * + * * + * Permission to use, copy, modify, and/or distribute this software for any * + * purpose with or without fee is hereby granted, provided that the above * + * copyright notice and this permission notice appear in all copies. * + * * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES * + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR * + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF * + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * + ****************************************************************************) + + +{$ifdef NDS_INTERFACE} +type + mm_word = cuint; + pmm_word = ^mm_word; + + mm_hword = cushort; + pmm_hword = ^mm_hword; + + mm_byte = cuchar; + pmm_byte = ^mm_byte; + + mm_sfxhand = cushort; + pmm_sfxhand = ^mm_sfxhand; + + mm_bool = cuchar; + + mm_addr = pointer; + mm_reg = pointer; + +type + mm_mode_enum = integer; +const + MM_MODE_A: mm_mode_enum = 0; + MM_MODE_B: mm_mode_enum = 1; + MM_MODE_C: mm_mode_enum = 2; + +type + mm_stream_formats = integer; +const + MM_STREAM_8BIT_MONO : mm_stream_formats = $0; + MM_STREAM_8BIT_STEREO : mm_stream_formats = $1; + MM_STREAM_16BIT_MONO : mm_stream_formats = $2; + MM_STREAM_16BIT_STEREO: mm_stream_formats = $3; + + +type + mm_callback = function (msg, param: mm_word): mm_word; + mm_stream_func = function (length: mm_word; dest: mm_addr; format: mm_stream_formats): mm_word; + + +type + mm_reverbflags = integer; +const + MMRF_MEMORY : mm_reverbflags = $01; + MMRF_DELAY : mm_reverbflags = $02; + MMRF_RATE : mm_reverbflags = $04; + MMRF_FEEDBACK : mm_reverbflags = $08; + MMRF_PANNING : mm_reverbflags = $10; + MMRF_LEFT : mm_reverbflags = $20; + MMRF_RIGHT : mm_reverbflags = $40; + MMRF_BOTH : mm_reverbflags = $60; + + MMRF_INVERSEPAN : mm_reverbflags = $80; + MMRF_NODRYLEFT : mm_reverbflags = $100; + MMRF_NODRYRIGHT : mm_reverbflags = $200; + MMRF_8BITLEFT : mm_reverbflags = $400; + MMRF_16BITLEFT : mm_reverbflags = $800; + MMRF_8BITRIGHT : mm_reverbflags = $1000; + MMRF_16BITRIGHT : mm_reverbflags = $2000; + MMRF_DRYLEFT : mm_reverbflags = $4000; + MMRF_DRYRIGHT : mm_reverbflags = $8000; + +type + mm_reverbch = integer; +const + MMRC_LEFT : mm_reverbch = 1; + MMRC_RIGHT : mm_reverbch = 2; + MMRC_BOTH : mm_reverbch = 3; + +type + mmreverbcfg = record + flags : mm_word; + memory : mm_addr; + delay : mm_hword; + rate : mm_hword; + feedback : mm_hword; + panning : mm_byte; + end; + mm_reverb_cfg = mmreverbcfg; + pmm_reverb_cfg = ^mm_reverb_cfg; + +type + mm_pmode = integer; +const + MM_PLAY_LOOP: mm_pmode = 0; + MM_PLAY_ONCE: mm_pmode = 1; + +type + mm_mixmode = integer; +const + MM_MIX_8KHZ : mm_mixmode = 0; + MM_MIX_10KHZ: mm_mixmode = 1; + MM_MIX_13KHZ: mm_mixmode = 2; + MM_MIX_16KHZ: mm_mixmode = 3; + MM_MIX_18KHZ: mm_mixmode = 4; + MM_MIX_21KHZ: mm_mixmode = 5; + MM_MIX_27KHZ: mm_mixmode = 6; + MM_MIX_31KHZ: mm_mixmode = 7; + +type + mm_stream_timer = integer; +const + MM_TIMER0: mm_stream_timer = 0; + MM_TIMER1: mm_stream_timer = 1; + MM_TIMER2: mm_stream_timer = 2; + MM_TIMER3: mm_stream_timer = 3; + +type + t_mmdssample = record + loop_start : mm_word; + case integer of + 0: (loop_length : mm_word); + 1: (length : mm_word; + format : mm_byte; + repeat_mode : mm_byte; + base_rate : mm_hword; + data : mm_addr; + ); + end; + mm_ds_sample = t_mmdssample; + pmm_ds_sample = ^t_mmdssample; + + t_mmsoundeffect = record + case integer of + 0: (id : mm_word); + 1: (sample : pmm_ds_sample; + rate : mm_hword; + handle : mm_sfxhand; + volume : mm_byte; + panning : mm_byte; + ); + end; + mm_sound_effect = t_mmsoundeffect; + pmm_sound_effect = ^t_mmsoundeffect; + + t_mmgbasystem = record + mixing_mode : mm_mixmode; + mod_channel_count : mm_word; + mix_channel_count : mm_word; + module_channels : mm_addr; + active_channels : mm_addr; + mixing_channels : mm_addr; + mixing_memory : mm_addr; + wave_memory : mm_addr; + soundbank : mm_addr; + end; + mm_gba_system = t_mmgbasystem; + pmm_gba_system = ^t_mmgbasystem; + + t_mmdssystem = record + mod_count : mm_word; + samp_count : mm_word; + mem_bank : pmm_word; + fifo_channel : mm_word; + end; + mm_ds_system = t_mmdssystem; + pmm_ds_system = ^t_mmdssystem; + + t_mmstream = record + sampling_rate : mm_word; + buffer_length : mm_word; + callback : mm_stream_func; + format : mm_word; + timer : mm_word; + manual : mm_bool; + end; + mm_stream = t_mmstream; + pmm_stream = ^t_mmstream; + + + t_mmlayer = record + tick : mm_byte; + row : mm_byte; + position : mm_byte; + nrows : mm_byte; + global_volume : mm_byte; + speed : mm_byte; + active : mm_byte; + bpm : mm_byte; + end; + mm_modlayer = t_mmlayer; + pmm_modlayer = ^t_mmlayer; + + + + tmm_voice = record + source : mm_addr; + length : mm_word; + loop_start : mm_hword; + timer : mm_hword; + flags : mm_byte; + format : mm_byte; + rept : mm_byte; + volume : mm_byte; + divider : mm_byte; + panning : mm_byte; + index : mm_byte; + reserved : array [0..0] of mm_byte; + end; + mm_voice = tmm_voice; + pmm_voice = ^tmm_voice; + +const + MMVF_FREQ = 2; + MMVF_VOLUME = 4; + MMVF_PANNING = 8; + MMVF_SOURCE = 16; + MMVF_STOP = 32; + +{$endif NDS_INTERFACE} + diff --git a/packages/libndsfpc/src/libmikmod/mikmod7.pp b/packages/libndsfpc/src/maxmod/maxmod7.pp index c228dbf3a9..8b4baee886 100644 --- a/packages/libndsfpc/src/libmikmod/mikmod7.pp +++ b/packages/libndsfpc/src/maxmod/maxmod7.pp @@ -1,4 +1,4 @@ -unit mikmod7; +unit maxmod7; {$mode objfpc} {$apptype arm7} {$define arm7} @@ -14,19 +14,20 @@ uses ctypes, nds7; {$linklib nds7} -{$linklib mikmod7} +{$linklib mm7} {$linklib c} {$linklib gcc} {$linklib sysbase} {$define NDS_INTERFACE} -{$include inc/mikmod.inc} +{$include inc/mm_types.inc} +{$include inc/maxmod7.inc} {$undef NDS_INTERFACE} implementation {$define NDS_IMPLEMENTATION} -{$include inc/mikmod.inc} +{$include inc/maxmod7.inc} {$undef NDS_IMPLEMENTATION} end. diff --git a/packages/libndsfpc/src/libmikmod/mikmod9.pp b/packages/libndsfpc/src/maxmod/maxmod9.pp index e4ac249101..c7b581f5c2 100644 --- a/packages/libndsfpc/src/libmikmod/mikmod9.pp +++ b/packages/libndsfpc/src/maxmod/maxmod9.pp @@ -1,4 +1,4 @@ -unit mikmod9; +unit maxmod9; {$mode objfpc} {$apptype arm9} {$define arm9} @@ -11,22 +11,23 @@ unit mikmod9; interface uses - ctypes, nds9; + ctypes, nds9; {$linklib nds9} -{$linklib mikmod9} +{$linklib mm9} {$linklib c} {$linklib gcc} {$linklib sysbase} {$define NDS_INTERFACE} -{$include inc/mikmod.inc} +{$include inc/mm_types.inc} +{$include inc/maxmod9.inc} {$undef NDS_INTERFACE} implementation {$define NDS_IMPLEMENTATION} -{$include inc/mikmod.inc} +{$include inc/maxmod9.inc} {$undef NDS_IMPLEMENTATION} end. diff --git a/packages/libndsfpc/src/nds/arm7/audio.inc b/packages/libndsfpc/src/nds/arm7/audio.inc index e06f7954a6..6bfa6e64f2 100644 --- a/packages/libndsfpc/src/nds/arm7/audio.inc +++ b/packages/libndsfpc/src/nds/arm7/audio.inc @@ -42,19 +42,11 @@ {$error Audio is only available on the ARM7} {$endif ARM7} -{$ifdef NDS_IMPLEMENTATION} -function SOUND_VOL(n: cint): cint; inline; -begin - SOUND_VOL := (n); -end; +{$ifdef NDS_INTERFACE} +function SOUND_VOL(n: cint): cint; inline; function SOUND_FREQ(n: cint): cint; inline; -begin - SOUND_FREQ := ((-$1000000 div (n))); -end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} const SOUND_ENABLE = (1 shl 15); SOUND_REPEAT = (1 shl 27); @@ -63,26 +55,72 @@ const SOUND_FORMAT_8BIT = (0 shl 29); SOUND_FORMAT_PSG = (3 shl 29); SOUND_FORMAT_ADPCM = (2 shl 29); - SOUND_16BIT = (1 shl 29); - SOUND_8BIT = (0); + +function SOUND_PAN(n: cint): cint; inline; + +const + SCHANNEL_ENABLE = (1 shl 31); + + REG_MASTER_VOLUME: pcuint8 = pointer($04000500); + REG_SOUNDCNT : pcuint16 = pointer($04000500); + REG_SOUNDBIAS : pcuint32 = pointer($04000504); + + +function SCHANNEL_CR(n: cint): pcuint32; inline; +function SCHANNEL_VOL(n: cint): pcuint8; inline; +function SCHANNEL_PAN(n: cint): pcuint8; inline; +function SCHANNEL_SOURCE(n: cint): pcuint32; inline; +function SCHANNEL_TIMER(n: cint): pcuint16; inline; +function SCHANNEL_REPEAT_POINT(n: cint): pcuint16; inline; +function SCHANNEL_LENGTH(n: cint): pcuint32; inline; + +const + REG_SNDCAP0CNT : pcuint8 = pointer($04000508); + REG_SNDCAP1CNT : pcuint8 = pointer($04000509); + + REG_SNDCAP0DAD : pcuint32 = pointer($04000510); + REG_SNDCAP0LEN : pcuint16 = pointer($04000514); + REG_SNDCAP1DAD : pcuint32 = pointer($04000518); + REG_SNDCAP1LEN : pcuint16 = pointer($0400051C); + +type + MIC_BUF_SWAP_CB = procedure(completedBuffer: pcuint8; length: cint); + +function micReadData8(): cuint8; cdecl; external; +function micReadData12(): cuint16; cdecl; external; + +procedure micStartRecording(buffer: pcuint8; length, freq, timer: cint; eightBitSample: cbool; bufferSwapCallback: MIC_BUF_SWAP_CB); cdecl; external; + +function micStopRecording(): cint; cdecl; external; + +procedure micTimerHandler(); cdecl; external; + +procedure micSetAmp(control, gain: cuint8); cdecl; external; + +procedure micOn(); inline; +procedure micOff(); inline; + +procedure installSoundFIFO(); cdecl; external; {$endif NDS_INTERFACE} + {$ifdef NDS_IMPLEMENTATION} +function SOUND_VOL(n: cint): cint; inline; +begin + SOUND_VOL := (n); +end; + +function SOUND_FREQ(n: cint): cint; inline; +begin + SOUND_FREQ := ((-$1000000 div (n))); +end; + function SOUND_PAN(n: cint): cint; inline; begin SOUND_PAN := ((n) shl 16); end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} -const - SCHANNEL_ENABLE = (1 shl 31); -{$endif NDS_INTERFACE} -{$ifdef NDS_IMPLEMENTATION} -//--------------------------------------------------------------------------------- -// registers -//--------------------------------------------------------------------------------- function SCHANNEL_CR(n: cint): pcuint32; inline; begin SCHANNEL_CR := pcuint32($04000400 + ((n) shl 4)); @@ -117,84 +155,14 @@ function SCHANNEL_LENGTH(n: cint): pcuint32; inline; begin SCHANNEL_LENGTH := pcuint32($0400040C + ((n) shl 4)); end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} -const - SOUND_CR : pcuint16 = pointer($04000500); - SOUND_MASTER_VOL : pcuint8 = pointer($04000500); - -//--------------------------------------------------------------------------------- -// not sure on the following -//--------------------------------------------------------------------------------- - SOUND_BIAS : pcuint16 = pointer($04000504); - SOUND508 : pcuint16 = pointer($04000508); - SOUND510 : pcuint16 = pointer($04000510); - SOUND514 : pcuint16 = pointer($04000514); - SOUND518 : pcuint16 = pointer($04000518); - SOUND51C : pcuint16 = pointer($0400051C); - - -(*--------------------------------------------------------------------------------- - microphone code based on neimod's microphone example. - See: http://neimod.com/dstek/ - Chris Double (chris.double@double.co.nz) - http://www.double.co.nz/nintendo_ds ----------------------------------------------------------------------------------*) - - -(*--------------------------------------------------------------------------------- - Read a byte from the microphone ----------------------------------------------------------------------------------*) -function MIC_ReadData(): cuint8; cdecl; external; - -(*--------------------------------------------------------------------------------- - Fill the buffer with data from the microphone. The buffer will be - signed sound data at 16kHz. Once the length of the buffer is - reached, no more data will be stored. Uses ARM7 timer 0. ----------------------------------------------------------------------------------*) -procedure StartRecording(buffer: pcuint8; length: cint); cdecl; external; - -(*--------------------------------------------------------------------------------- - Stop recording data, and return the length of data recorded. ----------------------------------------------------------------------------------*) -function StopRecording(): cint; cdecl; external; - -(* This must be called during IRQ_TIMER0 *) -procedure ProcessMicrophoneTimerIRQ(); cdecl; external; - -procedure PM_SetAmp(control: cuint8); cdecl; external; -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -//--------------------------------------------------------------------------------- -// Turn the microphone on -//--------------------------------------------------------------------------------- -procedure MIC_On(); inline; +procedure micOn(); inline; begin - PM_SetAmp(PM_AMP_ON); + micSetAmp(PM_AMP_ON, PM_GAIN_160); end; -//--------------------------------------------------------------------------------- -// Turn the microphone off -//--------------------------------------------------------------------------------- -procedure MIC_Off(); inline; +procedure micOff(); inline; begin - PM_SetAmp(PM_AMP_OFF); + micSetAmp(PM_AMP_OFF, 0); end; {$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -function SOUND_VOL(n: cint): cint; inline; -function SOUND_FREQ(n: cint): cint; inline; -function SOUND_PAN(n: cint): cint; inline; -function SCHANNEL_CR(n: cint): pcuint32; inline; -function SCHANNEL_VOL(n: cint): pcuint8; inline; -function SCHANNEL_PAN(n: cint): pcuint8; inline; -function SCHANNEL_SOURCE(n: cint): pcuint32; inline; -function SCHANNEL_TIMER(n: cint): pcuint16; inline; -function SCHANNEL_REPEAT_POINT(n: cint): pcuint16; inline; -function SCHANNEL_LENGTH(n: cint): pcuint32; inline; -procedure MIC_On(); inline; -procedure MIC_Off(); inline; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm7/clock.inc b/packages/libndsfpc/src/nds/arm7/clock.inc index d95d4be2d1..18bea363f1 100644 --- a/packages/libndsfpc/src/nds/arm7/clock.inc +++ b/packages/libndsfpc/src/nds/arm7/clock.inc @@ -95,13 +95,13 @@ procedure rtcReset(); cdecl; external; procedure rtcTransaction(command: pcuint8; commandLength: cuint32; result: pcuint8; resultLength: cuint32); cdecl; external; procedure rtcGetTime(time: pcuint8); cdecl; external; procedure rtcSetTime(time: pcuint8); cdecl; external; -procedure rtcGetData(data: pcuint8; size: cuint32); cdecl; external; procedure rtcGetTimeAndDate(time: pcuint8); cdecl; external; procedure rtcSetTimeAndDate(time: pcuint8); cdecl; external; -procedure BCDToInteger(data: pcuint8; length: cuint32); cdecl; external; -procedure integerToBCD(data: pcuint8; length: uint32); cdecl; external; +procedure rtcGetData(var data: cuint8; size: cuint32); cdecl; external; +procedure BCDToInteger(var data: cuint8; length: cuint32); cdecl; external; +procedure integerToBCD(var data: cuint8; length: cuint32); cdecl; external; procedure initClockIRQ(); cdecl; external; {$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm7/input.inc b/packages/libndsfpc/src/nds/arm7/input.inc new file mode 100644 index 0000000000..234140796b --- /dev/null +++ b/packages/libndsfpc/src/nds/arm7/input.inc @@ -0,0 +1,5 @@ +{$ifdef NDS_INTERFACE} + +procedure inputGetAndSend(); cdecl; external; + +{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm7/serial.inc b/packages/libndsfpc/src/nds/arm7/serial.inc index 8a30b9c7f5..5650318553 100644 --- a/packages/libndsfpc/src/nds/arm7/serial.inc +++ b/packages/libndsfpc/src/nds/arm7/serial.inc @@ -94,44 +94,7 @@ const // i.e. when we're part of a continuous transfer SPI_CONTINUOUS = (1 shl 11); -// Fixme: does this stuff really belong in serial.h? - -// Power management registers - PM_CONTROL_REG = 0; - PM_BATTERY_REG = 1; - PM_AMPLIFIER_REG = 2; - PM_READ_REGISTER = (1 shl 7); - -// PM control register bits - power control - PM_SOUND_AMP = (1 shl 0); // Power the sound hardware (needed to hear stuff in GBA mode too) - PM_SOUND_MUTE = (1 shl 1); // Mute the main speakers, headphone output will still work. - PM_BACKLIGHT_BOTTOM = (1 shl 2); // Enable the top backlight if set - PM_BACKLIGHT_TOP = (1 shl 3); // Enable the bottom backlight if set - PM_SYSTEM_PWR = (1 shl 6); // Turn the power *off* if set - PM_POWER_DOWN = (1 shl 6); // Same thing, I like this name better tho -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -// PM control register bits - LED control -function PM_LED_CONTROL(m: cint): cint; inline; -begin - PM_LED_CONTROL := m shl 4; // ? -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} const - PM_LED_ON = (0 shl 4); // Steady on - PM_LED_SLEEP = (1 shl 4); // Blinking, mostly off - PM_LED_BLINK = (3 shl 4); // Blinking, mostly on - - - PM_AMP_OFFSET = 2; - PM_AMP_ON = 1; - PM_AMP_OFF = 0; - -// Fixme: does this stuff really belong in serial.h? - // Firmware commands FIRMWARE_WREN = $06; FIRMWARE_WRDI = $04; @@ -145,6 +108,9 @@ const FIRMWARE_SE = $D8; FIRMWARE_DP = $B9; FIRMWARE_RDP = $AB; + +procedure SerialWaitBusy(); inline; +procedure readFirmware(address: cuint32; destination: pointer; size: cuint32); cdecl; external; {$endif NDS_INTERFACE} @@ -155,31 +121,3 @@ begin swiDelay(1); end; {$endif NDS_IMPLEMENTATION} - -// Warning: These functions use the SPI chain, and are thus 'critical' -// sections, make sure to disable interrupts during the call if you've -// got a VBlank IRQ polling the touch screen, etc... - -// Read/write a power management register - -{$ifdef NDS_INTERFACE} -function writePowerManagement(reg: cint; command: cint): cint; cdecl; external; -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function readPowerManagement(reg: cint): cint; inline; -begin - readPowerManagement := writePowerManagement(reg or PM_READ_REGISTER, 0); -end; -{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -// Read the firmware -procedure readFirmware(address: cuint32; destination: pointer; size: cuint32); cdecl; external; -{$endif NDS_INTERFACE} - -{$ifdef NDS_INTERFACE} -function PM_LED_CONTROL(m: cint): cint; inline; -procedure SerialWaitBusy(); inline; -function readPowerManagement(reg: cint): cint; inline; -{$endif NDS_INTERFACE} diff --git a/packages/libndsfpc/src/nds/arm7/touch.inc b/packages/libndsfpc/src/nds/arm7/touch.inc index 5230a74152..fe11a89d9b 100644 --- a/packages/libndsfpc/src/nds/arm7/touch.inc +++ b/packages/libndsfpc/src/nds/arm7/touch.inc @@ -58,8 +58,7 @@ const TSC_MEASURE_TEMP2 = $F4; - -function touchReadXY(): touchPosition; cdecl; external; +procedure touchReadXY(var touchPos: touchPosition); cdecl; external; function touchRead(command: cuint32): cuint16; cdecl; external; function touchReadTemperature(t1: pcint; t2: pcint): cuint32; cdecl; external; diff --git a/packages/libndsfpc/src/nds/arm9/background.inc b/packages/libndsfpc/src/nds/arm9/background.inc index f4453dc7f9..4d50611514 100644 --- a/packages/libndsfpc/src/nds/arm9/background.inc +++ b/packages/libndsfpc/src/nds/arm9/background.inc @@ -38,59 +38,574 @@ *) +{$ifdef NDS_INTERFACE} +type + bg_scroll = record + x: cuint16; + y: cuint16; + end; + Tbg_scroll = bg_scroll; + Pbg_scroll = ^bg_scroll; -// Background control defines + bg_transform = record + xdx: cint16; + xdy: cint16; + ydx: cint16; + ydy: cint16; + dx: cint32; + dy: cint32; + end; + Tbg_transform = bg_transform; + Pbg_transform = ^bg_transform; -{$ifdef NDS_INTERFACE} -// BGxCNT defines /// + bg_attribute = record + control: array [0..3] of cuint16; + scroll: array [0..3] of bg_scroll; + bg2_rotation: bg_transform; + bg3_rotation: bg_transform; + end; + Tbg_attribute = bg_attribute; + Pbg_attribute = ^bg_attribute; + + +const + MAP_BASE_SHIFT = 8; + TILE_BASE_SHIFT = 2; + +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_PRIORITY(n: cint): cint; inline; +function TILE_PALETTE(n: cint): cint; inline; + +const + TILE_FLIP_H = (1 shl 10); + TILE_FLIP_V = (1 shl 11); + +type + BackgroundControl = cint; +const + BG_32x32: BackgroundControl = (0 shl 14); + BG_64x32: BackgroundControl = (1 shl 14); + BG_32x64: BackgroundControl = (2 shl 14); + BG_64x64: BackgroundControl = (3 shl 14); + + BG_RS_16x16: BackgroundControl = (0 shl 14); + BG_RS_32x32: BackgroundControl = (1 shl 14); + BG_RS_64x64: BackgroundControl = (2 shl 14); + BG_RS_128x128: BackgroundControl = (3 shl 14); + + BG_BMP8_128x128: BackgroundControl = ((0 shl 14) or (1 shl 7)); + BG_BMP8_256x256: BackgroundControl = ((1 shl 14) or (1 shl 7)); + BG_BMP8_512x256: BackgroundControl = ((2 shl 14) or (1 shl 7)); + BG_BMP8_512x512: BackgroundControl = ((3 shl 14) or (1 shl 7)); + BG_BMP8_1024x512: BackgroundControl = (1 shl 14); + BG_BMP8_512x1024: BackgroundControl = 0; + + BG_BMP16_128x128: BackgroundControl = ((0 shl 14) or (1 shl 7) or (1 shl 2)); + BG_BMP16_256x256: BackgroundControl = ((1 shl 14) or (1 shl 7) or (1 shl 2)); + BG_BMP16_512x256: BackgroundControl = ((2 shl 14) or (1 shl 7) or (1 shl 2)); + BG_BMP16_512x512: BackgroundControl = ((3 shl 14) or (1 shl 7) or (1 shl 2)); + + BG_MOSAIC_ON: BackgroundControl = ((1 shl 6)); + BG_MOSAIC_OFF: BackgroundControl = (0); + + BG_PRIORITY_0: BackgroundControl = (0); + BG_PRIORITY_1: BackgroundControl = (1); + BG_PRIORITY_2: BackgroundControl = (2); + BG_PRIORITY_3: BackgroundControl = (3); + + BG_WRAP_OFF: BackgroundControl = (0); + BG_WRAP_ON: BackgroundControl = (1 shl 13); + + BG_PALETTE_SLOT0: BackgroundControl = 0; + BG_PALETTE_SLOT1: BackgroundControl = 0; + BG_PALETTE_SLOT2: BackgroundControl = (1 shl 13); + BG_PALETTE_SLOT3: BackgroundControl = (1 shl 13); + + BG_COLOR_256: BackgroundControl = $80; + BG_COLOR_16: BackgroundControl = $00; + + BACKGROUND: Pbg_attribute = pointer($04000008); + BG_OFFSET: Pbg_scroll = pointer($04000010); + +function BG_MAP_RAM(base: cint): pcuint16; inline; +function BG_TILE_RAM(base: cint): pcuint16; inline; +function BG_BMP_RAM(base: cint): pcuint16; inline; +function CHAR_BASE_BLOCK(n: cint): pcuint16; inline; +function SCREEN_BASE_BLOCK(n: cint): pcuint16; inline; + +const + BGCTRL: pcuint16 = pointer($04000008); + 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 : pcint16 = pointer($4000020); + REG_BG2PB : pcint16 = pointer($4000022); + REG_BG2PC : pcint16 = pointer($4000024); + REG_BG2PD : pcint16 = pointer($4000026); + + REG_BG2X : pcint32 = pointer($4000028); + REG_BG2Y : pcint32 = pointer($400002C); + + REG_BG3PA : pcint16 = pointer($4000030); + REG_BG3PB : pcint16 = pointer($4000032); + REG_BG3PC : pcint16 = pointer($4000034); + REG_BG3PD : pcint16 = pointer($4000036); + + REG_BG3X : pcint32 = pointer($4000038); + REG_BG3Y : pcint32 = pointer($400003C); + + BACKGROUND_SUB : Pbg_attribute = pointer($04001008); + BG_OFFSET_SUB: Pbg_scroll = pointer($04001010); + +function BG_MAP_RAM_SUB(base: cint): pcuint16; inline; +function BG_TILE_RAM_SUB(base: cint): pcuint16; inline; +function BG_BMP_RAM_SUB(base: cint): pcuint16; inline; +function SCREEN_BASE_BLOCK_SUB(n: cint): pcuint16; inline; +function CHAR_BASE_BLOCK_SUB(n: cint): pcuint16; inline; + + +const + 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 : pcint16 = pointer($4001020); + REG_BG2PB_SUB : pcint16 = pointer($4001022); + REG_BG2PC_SUB : pcint16 = pointer($4001024); + REG_BG2PD_SUB : pcint16 = pointer($4001026); + + REG_BG2X_SUB : pcint32 = pointer($4001028); + REG_BG2Y_SUB : pcint32 = pointer($400102C); + + REG_BG3PA_SUB : pcint16 = pointer($4001030); + REG_BG3PB_SUB : pcint16 = pointer($4001032); + REG_BG3PC_SUB : pcint16 = pointer($4001034); + REG_BG3PD_SUB : pcint16 = pointer($4001036); + + REG_BG3X_SUB : pcint32 = pointer($4001038); + REG_BG3Y_SUB : pcint32 = pointer($400103C); + +type + //background state + TBgState = record + angle: cint; + centerX, centerY: cint32; + scaleX, scaleY: cint32; + scrollX, scrollY: cint32; + size: cint; + _type: cint; + dirty: cbool; + end; + PBgState = ^TBgState; + +var + bgControl: array [0..7] of pcuint16; cvar; external; + bgScrollTable: array [0..7] of Pbg_scroll; cvar; external; + bgTransform: array [0..7] of Pbg_transform; cvar; external; + bgState: array [0..7] of TBgState; cvar; external; + + +type + BgType = integer; +const + BgType_Text8bpp = 0; + BgType_Text4bpp = 1; + BgType_Rotation = 2; + BgType_ExRotation = 3; + BgType_Bmp8 = 4; + BgType_Bmp16 = 5; + +type + BgSize = integer; const - BG_MOSAIC_ENABLE = $40; - BG_COLOR_256 = $80; - BG_COLOR_16 = $00; + BgSize_R_128x128 : BgSize = (0 shl 14); + BgSize_R_256x256 : BgSize = (1 shl 14); + BgSize_R_512x512 : BgSize = (2 shl 14); + BgSize_R_1024x1024 : BgSize = (3 shl 14); + BgSize_T_256x256 : BgSize = (0 shl 14) or (1 shl 16); + BgSize_T_512x256 : BgSize = (1 shl 14) or (1 shl 16); + BgSize_T_256x512 : BgSize = (2 shl 14) or (1 shl 16); + BgSize_T_512x512 : BgSize = (3 shl 14) or (1 shl 16); + BgSize_ER_128x128 : BgSize = (0 shl 14) or (2 shl 16); + BgSize_ER_256x256 : BgSize = (1 shl 14) or (2 shl 16); + BgSize_ER_512x512 : BgSize = (2 shl 14) or (2 shl 16); + BgSize_ER_1024x1024 : BgSize = (3 shl 14) or (2 shl 16); + BgSize_B8_128x128 : BgSize = (0 shl 14) or (1 shl 7) or (3 shl 16); + BgSize_B8_256x256 : BgSize = (1 shl 14) or (1 shl 7) or (3 shl 16); + BgSize_B8_512x256 : BgSize = (2 shl 14) or (1 shl 7) or (3 shl 16); + BgSize_B8_512x512 : BgSize = (3 shl 14) or (1 shl 7) or (3 shl 16); + BgSize_B8_1024x512 : BgSize = (1 shl 14) or (3 shl 16); + BgSize_B8_512x1024 : BgSize = (0 or (3 shl 16)); + BgSize_B16_128x128 : BgSize = (0 shl 14) or (1 shl 7) or (1 shl 2) or (4 shl 16); + BgSize_B16_256x256 : BgSize = (1 shl 14) or (1 shl 7) or (1 shl 2) or (4 shl 16); + BgSize_B16_512x256 : BgSize = (2 shl 14) or (1 shl 7) or (1 shl 2) or (4 shl 16); + BgSize_B16_512x512 : BgSize = (3 shl 14) or (1 shl 7) or (1 shl 2) or (4 shl 16); + +function bgIsText(id: cint): cbool; cdecl; external; +function bgInit_call(layer: cint; atype: BgType; size: BgSize; mapBase, tileBase: cint): cint; cdecl; external; +function bgInitSub_call(layer: cint; atype: BgType; size: BgSize; mapBase, tileBase: cint): cint; cdecl; external; + +procedure bgUpdate(); cdecl; external; + +procedure bgSetRotate(id, angle: cint); inline; +procedure bgRotate(id, angle: cint); inline; +procedure bgSet(id, angle: cint; sx, sy, scrollX, scrollY, rotCenterX, rotCenterY: cint32); inline; +procedure bgSetRotateScale(id, angle: cint; sx, sy: cint32); inline; +procedure bgSetScale(id: cint; sx, sy: cint32); inline; +function bgInit(layer: cint; atype: BgType; size: BgSize; mapBase, tileBase: cint): cint; inline; +function bgInitSub(layer: cint; atype: BgType; size: BgSize; mapBase, tileBase: cint): cint; inline; +function bgSetControlBits(id: cint; bits: cuint16): pcuint16; inline; +procedure bgClearControlBits(id: cint; bits: cuint16); inline; +procedure bgWrapOn(id: cint); inline; +procedure bgWrapOff(id: cint); inline; +procedure bgSetPriority(id: cint; priority: cuint); inline; +procedure bgSetMapBase(id: cint; base: cuint); inline; +procedure bgSetTileBase(id: cint; base: cuint); inline; +procedure bgSetScrollf(id: cint; x, y: cint32); inline; +procedure bgSetScroll(id, x, y: cint); inline; +procedure bgMosaicEnable(id: cint); inline; +procedure bgMosaicDisable(id: cint); inline; +procedure bgSetMosaic(dx, dy: cuint); inline; +procedure bgSetMosaicSub(dx, dy: cuint); inline; +function bgGetPriority(id: cint): cint; inline; +function bgGetMapBase(id: cint): cint; inline; +function bgGetTileBase(id: cint): cint; inline; +function bgGetMapPtr(id: cint): pcuint16; inline; +function bgGetGfxPtr(id: cint): pcuint16; inline; +procedure bgScrollf(id: cint; dx, dy: cint32); inline; +procedure bgScroll(id, dx, dy: cint); inline; +procedure bgShow(id: cint); inline; +procedure bgHide(id: cint); inline; +procedure bgSetCenterf(id: cint; x, y: cint32); inline; +procedure bgSetCenter(id, x, y: cint); inline; + {$endif NDS_INTERFACE} {$ifdef NDS_IMPLEMENTATION} -function CHAR_BASE_BLOCK(n: cint): cint; inline; +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_PRIORITY(n: cint): cint; inline; +begin + BG_PRIORITY := (n); +end; + +function TILE_PALETTE(n: cint): cint; inline; +begin + TILE_PALETTE := ((n) shl 12); +end; + +function BG_MAP_RAM(base: cint): pcuint16; inline; +begin + BG_MAP_RAM := pcuint16(((base) * $800) + $06000000); +end; + +function BG_MAP_RAM_SUB(base: cint): pcuint16; inline; +begin + BG_MAP_RAM_SUB := pcuint16(((base) * $800) + $06200000); +end; + + +function BG_TILE_RAM(base: cint): pcuint16; inline; +begin + BG_TILE_RAM := pcuint16(((base) * $4000) + $06000000); +end; + +function BG_TILE_RAM_SUB(base: cint): pcuint16; inline; +begin + BG_TILE_RAM_SUB := pcuint16(((base) * $4000) + $06200000); +end; + + +function BG_BMP_RAM(base: cint): pcuint16; inline; +begin + BG_BMP_RAM := pcuint16(((base) * $4000) + $06000000); +end; + +function BG_BMP_RAM_SUB(base: cint): pcuint16; inline; +begin + BG_BMP_RAM_SUB := pcuint16(((base) * $4000) + $06200000); +end; + +function CHAR_BASE_BLOCK(n: cint): pcuint16; inline; begin - CHAR_BASE_BLOCK := (n * $4000)+ $06000000; + CHAR_BASE_BLOCK := pcuint16((n * $4000)+ $06000000); end; -function CHAR_BASE_BLOCK_SUB(n: cint): cint; inline; +function CHAR_BASE_BLOCK_SUB(n: cint): pcuint16; inline; begin - CHAR_BASE_BLOCK_SUB := (n * $4000)+ $06200000; + CHAR_BASE_BLOCK_SUB := pcuint16((n * $4000)+ $06200000); end; -function SCREEN_BASE_BLOCK(n: cint): cint; inline; +function SCREEN_BASE_BLOCK(n: cint): pcuint16; inline; begin - SCREEN_BASE_BLOCK := (n * $800) + $06000000; + SCREEN_BASE_BLOCK := pcuint16((n * $800) + $06000000); end; -function SCREEN_BASE_BLOCK_SUB(n: cint): cint; inline; +function SCREEN_BASE_BLOCK_SUB(n: cint): pcuint16; inline; begin - SCREEN_BASE_BLOCK_SUB := (n * $800) + $06200000; + SCREEN_BASE_BLOCK_SUB := pcuint16((n * $800) + $06200000); end; -{$endif NDS_IMPLEMENTATION} -{$ifdef NDS_INTERFACE} -const - CHAR_SHIFT = 2; - SCREEN_SHIFT = 8; - TEXTBG_SIZE_256x256 = $0; - TEXTBG_SIZE_256x512 = $8000; - TEXTBG_SIZE_512x256 = $4000; - TEXTBG_SIZE_512x512 = $C000; - - ROTBG_SIZE_128x128 = $0; - ROTBG_SIZE_256x256 = $4000; - ROTBG_SIZE_512x512 = $8000; - ROTBG_SIZE_1024x1024 = $C000; - - WRAPAROUND = $1; -{$endif NDS_INTERFACE} +procedure bgSetRotate(id, angle: cint); inline; +begin + bgState[id].angle := angle; + bgState[id].dirty := true; +end; -{$ifdef NDS_INTERFACE} -function CHAR_BASE_BLOCK(n: cint): cint; inline; -function CHAR_BASE_BLOCK_SUB(n: cint): cint; inline; -function SCREEN_BASE_BLOCK(n: cint): cint; inline; -function SCREEN_BASE_BLOCK_SUB(n: cint): cint; inline; -{$endif NDS_INTERFACE} +procedure bgRotate(id, angle: cint); inline; +begin + sassert(not bgIsText(id), 'Cannot Rotate a Text Background'); + bgSetRotate(id, angle + bgState[id].angle); +end; + +procedure bgSet(id, angle: cint; sx, sy, scrollX, scrollY, rotCenterX, rotCenterY: cint32); inline; +begin + bgState[id].scaleX := sx; + bgState[id].scaleY := sy; + bgState[id].scrollX := scrollX; + bgState[id].scrollY := scrollY; + bgState[id].centerX := rotCenterX; + bgState[id].centerY := rotCenterY; + bgState[id].angle := angle; + bgState[id].dirty := true; +end; + +procedure bgSetRotateScale(id, angle: cint; sx, sy: cint32); inline; +begin + bgState[id].scaleX := sx; + bgState[id].scaleY := sy; + bgState[id].angle := angle; + bgState[id].dirty := true; +end; + +procedure bgSetScale(id: cint; sx, sy: cint32); inline; +begin + sassert( not bgIsText(id), 'Cannot Scale a Text Background'); + bgState[id].scaleX := sx; + bgState[id].scaleY := sy; + bgState[id].dirty := true; +end; + +function bgInit(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 <> 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,25 +42,40 @@ {$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 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 floattot16(n: cfloat): t16; inline; -begin - floattot16 := t16(trunc(n * (1 shl 4))); -end; - -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} - -{$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; + v16 = cuint16; //cshort? // vertex 4.12 fixed format -function v16toint(n: v16): cint; inline; -begin - v16toint := cint((n) shr 12); -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 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; + +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; + //--------------------------------------------------------------------------------- //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/reload.inc b/packages/libndsfpc/src/nds/disc_io.inc index 2af937abb8..7f6c38d510 100644 --- a/packages/libndsfpc/src/nds/reload.inc +++ b/packages/libndsfpc/src/nds/disc_io.inc @@ -1,5 +1,5 @@ (* - $Id: reload.inc 25 2007-12-10 21:06:46Z p4p3r0 $ + $Id$ ------------------------------------------------------------------------------ Copyright (C) 2005 Jason Rogers (dovoto) @@ -38,47 +38,48 @@ *) -{$ifdef NDS_INTERFACE} +{$ifdef NDS_INTERFACE} + +const + FEATURE_MEDIUM_CANREAD = $00000001; + FEATURE_MEDIUM_CANWRITE = $00000002; + FEATURE_SLOT_GBA = $00000010; + FEATURE_SLOT_NDS = $00000020; + 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 + 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; - TLOADER_DATA = LOADER_DATA; - PLOADER_DATA = ^LOADER_DATA; - -const - LOADNDS : PLOADER_DATA = pointer($02800000-48); - BOOT_NDS = pcchar(-1); -{$endif NDS_INTERFACE} - - + DISC_INTERFACE = DISC_INTERFACE_STRUCT; + TDISC_INTERFACE = DISC_INTERFACE_STRUCT; + PDISC_INTERFACE = ^DISC_INTERFACE_STRUCT; (* -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); - + 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/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. diff --git a/rtl/gba/Makefile b/rtl/gba/Makefile index 9199b7c665..595d00a89d 100644 --- a/rtl/gba/Makefile +++ b/rtl/gba/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)),) @@ -296,9 +285,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl -endif ifeq ($(FULL_TARGET),i386-netbsd) override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl endif @@ -416,9 +402,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl -endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl endif @@ -443,15 +426,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl -endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_LOADERS+=prt0 cprt0 endif @@ -470,9 +444,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_LOADERS+=prt0 cprt0 endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_LOADERS+=prt0 cprt0 -endif ifeq ($(FULL_TARGET),i386-netbsd) override TARGET_LOADERS+=prt0 cprt0 endif @@ -590,9 +561,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override TARGET_LOADERS+=prt0 cprt0 endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_LOADERS+=prt0 cprt0 -endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_LOADERS+=prt0 cprt0 endif @@ -617,15 +585,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override TARGET_LOADERS+=prt0 cprt0 endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_LOADERS+=prt0 cprt0 -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_LOADERS+=prt0 cprt0 -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_LOADERS+=prt0 cprt0 -endif override INSTALL_FPCPACKAGE=y ifeq ($(FULL_TARGET),i386-linux) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) @@ -645,9 +604,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif ifeq ($(FULL_TARGET),i386-netbsd) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif @@ -765,9 +721,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif ifeq ($(FULL_TARGET),arm-wince) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif @@ -792,15 +745,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif ifeq ($(FULL_TARGET),i386-linux) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif @@ -819,9 +763,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif ifeq ($(FULL_TARGET),i386-netbsd) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif @@ -939,9 +880,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif ifeq ($(FULL_TARGET),arm-wince) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif @@ -966,15 +904,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif ifdef REQUIRE_UNITSDIR override UNITSDIR+=$(REQUIRE_UNITSDIR) endif @@ -1264,11 +1193,6 @@ BATCHEXT=.sh EXEEXT= SHORTSUFFIX=be endif -ifeq ($(OS_TARGET),haiku) -BATCHEXT=.sh -EXEEXT= -SHORTSUFFIX=hai -endif ifeq ($(OS_TARGET),solaris) BATCHEXT=.sh EXEEXT= @@ -1728,13 +1652,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) diff --git a/rtl/gba/cprt0.as b/rtl/gba/cprt0.as index 0ad7b27cfd..80b3e2d1c3 100644 --- a/rtl/gba/cprt0.as +++ b/rtl/gba/cprt0.as @@ -168,14 +168,14 @@ CEW0Skip: @ global constructors @--------------------------------------------------------------------------------- ldr r3, =__libc_init_array - bl _call_via_r3 + bl _blx_r3_stub @--------------------------------------------------------------------------------- @ Jump to user code @--------------------------------------------------------------------------------- mov r0, #0 @ int argc mov r1, #0 @ char *argv[] ldr r3, =main - bl _call_via_r3 + bl _blx_r3_stub @--------------------------------------------------------------------------------- @ Clear memory to 0x00 if length != 0 @--------------------------------------------------------------------------------- @@ -203,6 +203,11 @@ ClearMX: bx lr @--------------------------------------------------------------------------------- +_blx_r3_stub: +@--------------------------------------------------------------------------------- + bx r3 + +@--------------------------------------------------------------------------------- @ Copy memory if length != 0 @--------------------------------------------------------------------------------- @ r1 = Source Address diff --git a/rtl/gba/prt0.as b/rtl/gba/prt0.as index 80457a0468..8a21790cc4 100644 --- a/rtl/gba/prt0.as +++ b/rtl/gba/prt0.as @@ -170,7 +170,7 @@ CEW0Skip: mov r0, #0 @ int argc mov r1, #0 @ char *argv[] ldr r3,=main - bx r3 + bl _blx_r3_stub nop @ This nop is here to allow unmapped memory to be used as @ as a delay of almost 1 sec with a 1 cycle resolution. @ Read this for technical info: @@ -202,6 +202,11 @@ ClearMX: bx lr @--------------------------------------------------------------------------------- +_blx_r3_stub: +@--------------------------------------------------------------------------------- + bx r3 + +@--------------------------------------------------------------------------------- @ Copy memory if length != 0 @--------------------------------------------------------------------------------- @ r1 = Source Address diff --git a/rtl/gba/systhrd.inc b/rtl/gba/systhrd.inc new file mode 100644 index 0000000000..a2350329cd --- /dev/null +++ b/rtl/gba/systhrd.inc @@ -0,0 +1,25 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2002 by Peter Vreman, + member of the Free Pascal development team. + + Linux (pthreads) threading support implementation + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + 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. + + **********************************************************************} + +Procedure InitSystemThreads; +begin + { This should be changed to a real value during + thread driver initialization if appropriate. } + ThreadID := 1; + SetNoThreadManager; +end; + + diff --git a/rtl/nds/Makefile b/rtl/nds/Makefile index 29a966e6bc..227553ff09 100644 --- a/rtl/nds/Makefile +++ b/rtl/nds/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)),) @@ -278,178 +267,163 @@ endif OBJPASDIR=$(RTL)/objpas GRAPHDIR=$(INC)/graph ifeq ($(FULL_TARGET),i386-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-go32v2) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-win32) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-os2) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-beos) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo -endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-solaris) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-qnx) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-netware) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-wdosx) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-emx) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-watcom) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-netwlibc) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-wince) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-symbian) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-amiga) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-atari) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-palmos) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),m68k-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-amiga) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-macos) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-morphos) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),sparc-solaris) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),sparc-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),x86_64-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),x86_64-win64) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),x86_64-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-palmos) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo -endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-wince) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-gba) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-nds) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),arm-symbian) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc64-darwin) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),powerpc64-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo -endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil fgl lineinfo +override TARGET_UNITS+=$(SYSTEMUNIT) objpas macpas strings sysutils classes math typinfo varutils fmtbcd ctypes charset ucomplex getopts matrix variants types rtlconsts sysconst dateutil lineinfo fgl endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 @@ -469,9 +443,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 endif -ifeq ($(FULL_TARGET),i386-haiku) -override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 -endif ifeq ($(FULL_TARGET),i386-netbsd) override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 endif @@ -589,9 +560,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 endif -ifeq ($(FULL_TARGET),arm-darwin) -override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 -endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 endif @@ -616,15 +584,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 endif -ifeq ($(FULL_TARGET),avr-embedded) -override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 -endif -ifeq ($(FULL_TARGET),armeb-linux) -override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override TARGET_LOADERS+=prt07 prt09 cprt07 cprt09 -endif override INSTALL_FPCPACKAGE=y ifeq ($(FULL_TARGET),i386-linux) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) @@ -644,9 +603,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif ifeq ($(FULL_TARGET),i386-netbsd) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif @@ -764,9 +720,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif ifeq ($(FULL_TARGET),arm-wince) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif @@ -791,15 +744,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_INCLUDEDIR+=$(INC) $(PROCINC) -endif ifeq ($(FULL_TARGET),i386-linux) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif @@ -818,9 +762,6 @@ endif ifeq ($(FULL_TARGET),i386-beos) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif -ifeq ($(FULL_TARGET),i386-haiku) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif ifeq ($(FULL_TARGET),i386-netbsd) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif @@ -938,9 +879,6 @@ endif ifeq ($(FULL_TARGET),arm-palmos) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif -ifeq ($(FULL_TARGET),arm-darwin) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif ifeq ($(FULL_TARGET),arm-wince) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif @@ -965,15 +903,6 @@ endif ifeq ($(FULL_TARGET),powerpc64-embedded) override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) endif -ifeq ($(FULL_TARGET),avr-embedded) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif -ifeq ($(FULL_TARGET),armeb-linux) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif -ifeq ($(FULL_TARGET),armeb-embedded) -override COMPILER_SOURCEDIR+=$(INC) $(PROCINC) $(COMMON) -endif ifdef REQUIRE_UNITSDIR override UNITSDIR+=$(REQUIRE_UNITSDIR) endif @@ -1263,11 +1192,6 @@ BATCHEXT=.sh EXEEXT= SHORTSUFFIX=be endif -ifeq ($(OS_TARGET),haiku) -BATCHEXT=.sh -EXEEXT= -SHORTSUFFIX=hai -endif ifeq ($(OS_TARGET),solaris) BATCHEXT=.sh EXEEXT= @@ -1727,13 +1651,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) diff --git a/rtl/nds/Makefile.fpc b/rtl/nds/Makefile.fpc index 7c53951598..59040e970d 100644 --- a/rtl/nds/Makefile.fpc +++ b/rtl/nds/Makefile.fpc @@ -12,7 +12,7 @@ units=$(SYSTEMUNIT) objpas macpas strings \ sysutils \
classes math typinfo varutils fmtbcd ctypes \
charset ucomplex getopts matrix \
- variants types rtlconsts sysconst dateutil fgl lineinfo \
+ variants types rtlconsts sysconst dateutil lineinfo fgl \
# exec timer doslib utility hardware inputevent graphics layers \
# these can be moved to packages later
# clipboard datatypes asl ahi tinygl get9 muihelper \
@@ -170,7 +170,7 @@ dateutil$(PPUEXT) : $(OBJPASDIR)/dateutil.pp # Mac Pascal Model
#
-macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT) +macpas$(PPUEXT) : $(INC)/macpas.pp objpas$(PPUEXT) math$(PPUEXT)
$(COMPILER) $(INC)/macpas.pp $(REDIR)
#
diff --git a/rtl/nds/cprt09.as b/rtl/nds/cprt09.as index 2aeb509e3c..c07815165e 100644 --- a/rtl/nds/cprt09.as +++ b/rtl/nds/cprt09.as @@ -155,11 +155,9 @@ _start: bl CopyMemCheck ldr r1, =__vectors_lma @ Copy reserved vectors area (itcm section) from LMA to VMA - ldr r2, =__itcm_start @ alternate vectors based accessed via itcm mirror - mov r2,r2,lsr #15 @ rounded to 32k boundary - mov r2,r2,lsl #15 + ldr r2, =__vectors_start ldr r4, =__vectors_end - add r4,r4,r2 + bl CopyMemCheck ldr r1, =__dtcm_lma @ Copy data tightly coupled memory (dtcm section) from LMA to VMA diff --git a/rtl/nds/ndsh.inc b/rtl/nds/ndsh.inc index 617c9bbb2b..6af49ef62b 100644 --- a/rtl/nds/ndsh.inc +++ b/rtl/nds/ndsh.inc @@ -13,7 +13,8 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *****************************************************************************} - + +(* type TStat = packed record st_dev: qword; @@ -40,8 +41,9 @@ type __unused5 : dword; end; PStat = ^TStat; - +*) (* libc file handling types and routines *) +(* _FILE = record firstCluster: longword; length: longword; @@ -61,6 +63,7 @@ type dirEntOffset: integer; // The offset within the directory sector end; P_FILE = ^_FILE; +*) type TDoOpen = procedure (var f; p: pchar; flags: longint); @@ -113,12 +116,9 @@ type PFileIODevice = ^TFileIODevice; +function IsARM9(): boolean; - - - -function IsARM9(): boolean; procedure AssignDevice(const FIOD: TFileIODevice); var diff --git a/rtl/nds/prt09.as b/rtl/nds/prt09.as index 41986d481c..f1bfbc4ca7 100644 --- a/rtl/nds/prt09.as +++ b/rtl/nds/prt09.as @@ -155,11 +155,9 @@ _start: bl CopyMemCheck ldr r1, =__vectors_lma @ Copy reserved vectors area (itcm section) from LMA to VMA - ldr r2, =__itcm_start @ alternate vectors based accessed via itcm mirror - mov r2,r2,lsr #15 @ rounded to 32k boundary - mov r2,r2,lsl #15 + ldr r2, =__vectors_start ldr r4, =__vectors_end - add r4,r4,r2 + bl CopyMemCheck ldr r1, =__dtcm_lma @ Copy data tightly coupled memory (dtcm section) from LMA to VMA diff --git a/rtl/nds/system.pp b/rtl/nds/system.pp index b5303333bf..e28174a065 100644 --- a/rtl/nds/system.pp +++ b/rtl/nds/system.pp @@ -24,12 +24,12 @@ interface {$define FPC_HAS_FEATURE_TEXTIO} {$define FPC_HAS_FEATURE_FILEIO} - {$i systemh.inc} {$i ndsbiosh.inc} {$i ndsh.inc} + {$define fpc_softfpu_interface} {$i softfpu.pp} {$undef fpc_softfpu_interface} @@ -65,7 +65,7 @@ var argc: LongInt = 0; argv: PPChar; envp: PPChar; - errno: integer; +// errno: integer; fake_heap_end: ^byte; cvar; external; irq_vector: integer; external name '__irq_vector'; @@ -94,6 +94,7 @@ implementation {$i nds.inc} + {$ifdef FPC_HAS_FEATURE_PROCESSES} function GetProcessID: SizeUInt; begin diff --git a/rtl/nds/systhrd.inc b/rtl/nds/systhrd.inc new file mode 100644 index 0000000000..a2350329cd --- /dev/null +++ b/rtl/nds/systhrd.inc @@ -0,0 +1,25 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2002 by Peter Vreman, + member of the Free Pascal development team. + + Linux (pthreads) threading support implementation + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + 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. + + **********************************************************************} + +Procedure InitSystemThreads; +begin + { This should be changed to a real value during + thread driver initialization if appropriate. } + ThreadID := 1; + SetNoThreadManager; +end; + + |