- 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.
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#3 | 486 | Perforce staff | Jam 2.3. See RELNOTES for a list of changes from 2.2.x. Just about every source... file was touched when jam got ANSI-fied. « |
24 years ago | |
#2 | 211 | Perforce staff | Jeff Sickel's Mac OS X port. | 26 years ago | |
#1 | 2 | laura | Add Jam/MR 2.2 source | 26 years ago |