1Notes on porting Jam - revised 12/31/2000 2 31) Working out system dependencies in the Jam code. 4 5 Jam's OS footprint is fairly small. For OS independent work Jam 6 liberally uses standard libc functions like stdio, malloc, and 7 string. The OS dependent interfaces are: 8 9 From filesys.h: 10 11 file_parse() - split a file name into dir/base/suffix/member 12 file_build() - build a filename given dir/base/suffix/member 13 file_dirscan() - scan a directory for files 14 file_archscan() - scan an archive for files 15 file_time() - get the timestamp of a file, if not already 16 done by file_dirscan(). 17 18 From execcmd.h: 19 20 execcmd() - execute a shell script 21 execwait() - wait for any outstanding execcmd()'s. 22 23 The current implementations are: 24 25 filemac.c - mac MPW 26 filent.c - NT 27 fileos2.c - OS/2 28 fileunix.c - all UNIX 29 filevms.c - VMS 30 31 execmac.c - mac MPW 32 execunix.c - UNIX, OS/2, NT 33 execvms.c - VMS 34 352) Defining OSMAJOR, OSMINOR in jam.h 36 37 So that the Jambase and Jamfile know their host, Jam defines $(OS) 38 to be something useful for each platform. Make sure that there is 39 code in jam.h to generate a useful value for $(OS), and key it off 40 the platform specific C-preprocessor symbol. If the C-preprocessor 41 doesn't itself defines such a symbol, add a define to the Makefile. 42 43 In addition to $(OS), you can also set $(OSPLAT) if the OS runs on 44 multiple platforms (like Linux or NT). 45 463) Working out system dependencies in the Jambase 47 48 With the value of $(OS) available, the Jambase can be extended to 49 support special variables or rules for new platforms. See the 50 current support for VMS, NT, and Mac. 51 524) Yacc troubles 53 54 The generated files jamgram.h and jamgram.c are distributed for the 55 poor souls without yacc. 56 575) Known problematic systems: 58 59 - Pyramid has no malloc.h, memory.h 60 61 - Encore has no stdlib.h 62 63 - Bull DPX has sys/file.h problems 64 656) Send the results back. 66 67 If you do porting work, the result can be integrated into future 68 releases if you send it back to the author's address in the README. 69