mirror of
https://review.haiku-os.org/buildtools
synced 2024-11-23 07:18:49 +01:00
69 lines
2.1 KiB
Plaintext
69 lines
2.1 KiB
Plaintext
|
Notes on porting Jam - revised 12/31/2000
|
||
|
|
||
|
1) Working out system dependencies in the Jam code.
|
||
|
|
||
|
Jam's OS footprint is fairly small. For OS independent work Jam
|
||
|
liberally uses standard libc functions like stdio, malloc, and
|
||
|
string. The OS dependent interfaces are:
|
||
|
|
||
|
From filesys.h:
|
||
|
|
||
|
file_parse() - split a file name into dir/base/suffix/member
|
||
|
file_build() - build a filename given dir/base/suffix/member
|
||
|
file_dirscan() - scan a directory for files
|
||
|
file_archscan() - scan an archive for files
|
||
|
file_time() - get the timestamp of a file, if not already
|
||
|
done by file_dirscan().
|
||
|
|
||
|
From execcmd.h:
|
||
|
|
||
|
execcmd() - execute a shell script
|
||
|
execwait() - wait for any outstanding execcmd()'s.
|
||
|
|
||
|
The current implementations are:
|
||
|
|
||
|
filemac.c - mac MPW
|
||
|
filent.c - NT
|
||
|
fileos2.c - OS/2
|
||
|
fileunix.c - all UNIX
|
||
|
filevms.c - VMS
|
||
|
|
||
|
execmac.c - mac MPW
|
||
|
execunix.c - UNIX, OS/2, NT
|
||
|
execvms.c - VMS
|
||
|
|
||
|
2) Defining OSMAJOR, OSMINOR in jam.h
|
||
|
|
||
|
So that the Jambase and Jamfile know their host, Jam defines $(OS)
|
||
|
to be something useful for each platform. Make sure that there is
|
||
|
code in jam.h to generate a useful value for $(OS), and key it off
|
||
|
the platform specific C-preprocessor symbol. If the C-preprocessor
|
||
|
doesn't itself defines such a symbol, add a define to the Makefile.
|
||
|
|
||
|
In addition to $(OS), you can also set $(OSPLAT) if the OS runs on
|
||
|
multiple platforms (like Linux or NT).
|
||
|
|
||
|
3) Working out system dependencies in the Jambase
|
||
|
|
||
|
With the value of $(OS) available, the Jambase can be extended to
|
||
|
support special variables or rules for new platforms. See the
|
||
|
current support for VMS, NT, and Mac.
|
||
|
|
||
|
4) Yacc troubles
|
||
|
|
||
|
The generated files jamgram.h and jamgram.c are distributed for the
|
||
|
poor souls without yacc.
|
||
|
|
||
|
5) Known problematic systems:
|
||
|
|
||
|
- Pyramid has no malloc.h, memory.h
|
||
|
|
||
|
- Encore has no stdlib.h
|
||
|
|
||
|
- Bull DPX has sys/file.h problems
|
||
|
|
||
|
6) Send the results back.
|
||
|
|
||
|
If you do porting work, the result can be integrated into future
|
||
|
releases if you send it back to the author's address in the README.
|