123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- News
- ====
-
- 2001/04/16 armin:
- - implemented CRT and SYSUTILS
- - nwimp/convertimp to convert .imp files to unix
- General
- =======
- Currently generating NetWare-NLM's only work under Linux. (may be under bsd also)
- This is because nlmconv from binutils does not work with i.e. win32 coff object files.
- It works fine with ELF-Objects.
-
-
- Binutils with netware-support needed
- ====================================
-
- You need a version of binutils compiled with netware-support. (nlmconv has to be present)
- Unfortunately in the Linux distibutions this component of the binutils is not included
- so you have to compile it. So download the latest stable binutils package from your
- favourite GNU mirror, decompress it ('tar xfz binutils-x.yy.z.tar.gz' on unices
- with GNU tar), change to the binutils-x.yy.z directory and configure:
-
- ./configure --prefix=/usr --enable-shared --enable-targets=i386-netware,i386-linux
-
- I used the prefix /usr because thats the default location on redhat (thats what I'm using)
-
- and use
-
- make
- make install
-
- to build and install binutils. To check that netware is supported by the version of binutils
- installed, use ld --version. The emulation 'i386nw' must be present. Also check that nlmconv
- is present and can be started without specifying the complete path of nlmconv.
-
- You can find more information and a binary version of binutils with netware-support for
- linux on:
- http://home.sch.bme.hu/~keresztg/novell/howto/NLM-Linux-HOWTO.html.
-
-
- Building the freepascal runtime-library for netware
- ===================================================
-
- Install the current fpc sources from ftp.freepascal.org and change to the directory
- rtl/netware under the freepascal sourcetree. Verify the path of your units in
- Makefile. The default is /usr/lib/fpc/1.1/units/netware/rtl.
- Compile and install the rtl with
-
- make install
-
- Settings and needed files to compile for netware
- ================================================
-
- Edit your /etc/ppc386.cfg and add the rtl source path for netware. This are my settings,
- you may paste it to your ppc386.cfg:
-
- #IFDEF Netware
- -Fu/usr/lib/fpc/1.1/units/netware/rtl
- -Fl/usr/lib/fpc/1.1/units/netware/rtl
- #ENDIF
-
- This adds the search path for the rtl-units as well as for the needed import-files.
- You can use the import files from the rtl/netware directory, they are automaticly
- installed. If you want to use import files from novell, be aware that you have to
- convert the files to unix format (i.e. with dos2unix).
-
- Building the first nlm
- ======================
-
- Ok, now you have installed all needed files, try the following program and compile it
- with
-
- ppc386 -Tnetware hello.pas
-
- PROGRAM Hello;
- {$Description The FreePascal HelloWorld for Netware}
- {$Version 1.0.0}
-
- BEGIN
- WriteLn ('This is open source ! FreePascal for netware');
- END.
-
- Hints on using freepascal for nlm's
- ===================================
- - Compiler Switches
- -----------------
- The following compiler-swiches are supported for NetWare:
- $DESCRIPTION : NLM-Description, will be displayed at load-time
- $M : For Stack-Size. Heap-Size will be ignored
- $VERSION x.x.x : Sets Major, Minor and Revision, Revision 0 is nothing, 1=a, 2=b ...
- Sorry, Displaying copyright does not work with nlmconv from gnu bunutils. There is a patch
- available for nlmconv but currently there is no compiler switch in fpc. Implementing the
- compiler switch is on my todo list. This is also valid for the screen-name.
-
- - Exports
- -------
- Exports will be handled like in win32:
- procedure bla; CDECL; EXPORT;
- begin
- end;
- exports bla name 'bla';
- Be aware that without Name 'bla' this will be exported in upper-case.
-
- - Netware import (.imp) files
- ---------------------------
- Import files are needed by nlmconv as with other netware linkers. FreePascal is
- searching import files via the specified library path (-Fl). If you plan to use
- import files from novell be aware that they have to be converted from CR/LF to
- LF only. The script 'convertimp' in rtl/netware/nwimp will do that.
- If a module name is specified in an import, the module is automaticly
- declared as autoload by FreePascal.
-
- I.e. the following declaration needs nlmlib.imp and sets nlmlib.nlm as autoload:
-
- FUNCTION rmdir (path : PCHAR) : LONGINT; CDECL; EXTERNAL 'nlmlib.nlm' NAME 'rmdir';
-
- while the following declaration only imports the symbol without autoloading:
-
- FUNCTION rmdir (path : PCHAR) : LONGINT; CDECL; EXTERNAL;
-
- If nlmlib.nlm is not loaded while loading yout nlm, you will get an error abount
- unknown symbols.
-
- - Debugging
- ---------
-
- Thats currently a problem. There is no source level debugger available. The only way
- to debug is using the netware internal debugger or nwdbg. nwdbg is a debugger on
- assembler level written by Jan Beulich. Symbols are supported. You can get nwdbg for
- netware 4.11,5.0 or 5.1 at developer.novell.com.
-
- I read about plans to adapt gdb to current netware versions. As soon as i have news
- about gdb i will change this document.
-
- - Netware SDK
- -----------
-
- Delphi declarations for the multiplattform api is available at
- http://developer.novell.com. You can download the sdk after registering as a developer.
- The files are designed for win32 so they will not work off the box. I think changing
- the dll-name to the corrosponding nlm-name will work.
- i.e. in calwin32.imp the following declaration:
-
- function NWAbortServicingQueueJob2; StdCall; external 'calwin32.dll' index 231;
-
- has to be changed to
-
- function NWAbortServicingQueueJob2; CDecl; external 'calwin32.nlm';
-
- - FreePascal RTL
- --------------
-
- Currently the following units are available for netware:
-
- - SYSTEM
- - CRT
- - DOS
- - SYSUTILS
- - STRINGS
- - KEYBOARD
- - VIDEO
- - MATH
- - TYPINFO
- - OBJECTS
- - GETOPTS
- - HEAPTRC
- - VARUTILS
- - CPU
- - MMX
-
|