This is a utility to create:
- following pragma statements for certain C compilers: amicall, libcall,
flibcall, tagcall and syscall
- proto files for C compilers
- offset (LVO) files for assembler programs
- stub functions for either tag-functions or all library functions
- stub functions as assembler text
- stub functions as useable link library file
- FD files out of pragma files
- stubs for C++ compilers (SPECIAL 11, 12 and CLIB)
- the files with your own headers inserted
- files for using local pointers for shared library bases in compilers
which do not support this normally
- stub functions for Pascal compilers
- inline files for GCC
- inline, pragma and stub libraries using FPU registers
- files needed to develop for Phase5's PowerUP boards
- unit texts for FPC Pascal compiler
- BMAP files for AmigaBASIC and MaxonBASIC
- VBCC assembler inline files
- VBCC WOS stub texts and link library
- VBCC PowerUP stub texts and link library
- VBCC MorphOS stub texts and link library
- Modules for AmigaE
- FD files
- CLIB files
- SFD files
- auto library open files for VBCC
- MorphOS files
- OS4 XML files
- OS4 cross-call code stubs
Therefor only the FD file giving the library information is needed. For
some SPECIAL options you may additionally supply the CLIB keyword (or you
need to supply it) giving fd2pragma the prototypes file in clib directory.
Better is to supply the all-in-one SFD format as input.
The command template you get with fd2pragma ? .
Calling the program seems to be (is) very difficult, but it offers you a
large set of functions. A lot of options need a lot of abilities to turn
them on/off!
The documentation contains lots of information about related topics, so
read it!
Short history (full history see source code):
2.172 09.05.04 : (phx) fixed clib-parsing problem with splitted function
name and arguments over two lines, more flexible "base,sysv"
recognition for MorphOS, never use "Device *" pointer in a proto file
- should be "Library *"
2.173 10.05.04 : fixed MOS-base,sysv to allow autodetected Tag-Functions
2.174 23.05.04 : some fixes for MorphOS and VBCC
2.175 11.07.04 : (phx) has to recognize and skip 'extern "C" {', as a
result of my modifications in 2.172.
2.176 21.09.04 : added new MorphOS VBCC inlines and some other OS4 fixes
2.177 23.09.04 : minor bugfix
2.178 09.10.04 : (phx) vbcc: use __linearvarargs instead of __aos4varargs
2.179 09.11.04 : (phx) make it compile natively under AmigaOS 4.x
2.180 07.12.04 : (phx) don't create vbcc inlines for MUI_NewObject &
PM_MakeItem - otherwise the preprocessor gets confused
2.181 20.12.04 : made test for MUI_NewObject and PM_MakeItem based on a field
containing the names - allows easier expansion
2.182 16.01.05 : (phx) experimental MorphOS "(sysv)" support, which doesn't
need a base-register passed as first argument
2.183 24.01.05 : added support for long long types, nevertheless files using
that will not produce correct results for now
2.184 07.02.05 : (phx) Fixed FuncVBCCWOSCode() (special 73) to read the
function ptr from (bias-2) instead from (bias) for PPC0/2-ABI.
Picasso96 support.
2.185 08.02.05 : (phx) Special 38 (proto with vbcc inline) always generates
an inline-include now, and is no longer restricted to MorphOS & 68k.
Special Warp3DPPC support.
Marked some powerpc.library functions, which were erroneously
detected as tag functions.
2.186 17.02.05 : fixed PPC0-mode VBCC WOS stubs
2.187 26.03.05 : (phx) "(sysv,r12base)" in MorphOS FD-files is supported.
I made it identical to (sysv), which both load the library base
to r12 (correct in (sysv,r12base) mode and can't hurt in (sysv) mode).
Allow "(void)" instead of "()" as parameter list.
Function-pointer types can extend over multiple lines now (does
this make sense for other types too?).
New SDL-types: FPSmanager, Mix_Chunk, Mix_Music, Mix_MusicType,
Mix_EffectFunc_t, Mix_EffectDone_t, Mix_Fading, IPaddress,
TCPsocket, UDPpacket, UDPsocket, SDLNet_SocketSet,
SDLNet_GenericSocket, TTF_Font.
Put some of SDL-gfx functions ("...RGBA()") in the exceptions list.
2.188 30.03.05 : (phx) Put NewObject() into the NoInline-list.
2.189 21.05.05 : (phx) Always include emul/emulregs.h in vbcc/MOS inlines.
2.190 23.08.05 : (phx) Use ".file <name>.o" in assembler sources, HUNK_NAME
and ELF ST_FILE symbols. It was "<name>.s" before, which is wrong.
2.191 01.11.05 : (phx) Rewrote FuncVBCCWOSInline() based on the MOSInline-
function, to be able to handle varargs functions correctly.
Also fixed WOS-text and -code generation for PPC0-ABI.
2.192 06.01.10 : (phx) Do vbcc MorphOS OS-calls with BCTRL instead of BLRL
to avoid messing up the LR-stack of more recent PowerPCs (G4+).
2.193 18.09.10 : (phx) GLContext type (tinygl).
2.194 03.01.11 : (mazze) Fix for building it on CYGWIN.
Added AROS support in the proto file.
2.195 24.05.15 : (phx) Merge data-register pairs from the FD file for
64-bit data types when generating vbcc 68k assembler inlines.
2.196 06.02.16 : (phx) Varargs function for rtEZRequestA() is
rtEZRequestTags(). rtEZRequest() has swapped arguments and needs
to be implemented in amiga.lib.
2.197 09.10.16 : (phx) ShortBaseName must not be enforced as lower case.
Some libraries, like Warp3D and Picasso96API, have upper case letters
in their FD, proto and clib file names.
2.198 27.10.18 : (sba) For special 42 format, don't put used registers in the
clobber list as newer GCC complain about this.
This program is in the public domain. Use it as you want, but WITHOUT ANY
WARRANTY!
Original author of the program:
*********************************************************************
* snail-mail: * e-mail: *
* Dirk Stoecker * stoecker@epost.de *
* Geschwister-Scholl-Str. 10 * dirk@dstoecker.de *
* 01877 Bischofswerda * world wide web: *
* GERMANY * http://www.dstoecker.de/ *
* phone: * pgp key: *
* GERMANY +49 (0)3594/706666 * get from WWW pages or keyservers *
*********************************************************************
|