Notes on porting Jam - revised 12/31/20001) Working out system dependencies in the Jam code.Jam's OS footprint is fairly small. For OS independent work Jamliberally uses standard libc functions like stdio, malloc, andstring. The OS dependent interfaces are:From filesys.h:file_parse() - split a file name into dir/base/suffix/memberfile_build() - build a filename given dir/base/suffix/memberfile_dirscan() - scan a directory for filesfile_archscan() - scan an archive for filesfile_time() - get the timestamp of a file, if not alreadydone by file_dirscan().From execcmd.h:execcmd() - execute a shell scriptexecwait() - wait for any outstanding execcmd()'s.The current implementations are:filemac.c - mac MPWfilent.c - NTfileos2.c - OS/2fileunix.c - all UNIXfilevms.c - VMSexecmac.c - mac MPWexecunix.c - UNIX, OS/2, NTexecvms.c - VMS2) Defining OSMAJOR, OSMINOR in jam.hSo that the Jambase and Jamfile know their host, Jam defines $(OS)to be something useful for each platform. Make sure that there iscode in jam.h to generate a useful value for $(OS), and key it offthe platform specific C-preprocessor symbol. If the C-preprocessordoesn'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 onmultiple platforms (like Linux or NT).3) Working out system dependencies in the JambaseWith the value of $(OS) available, the Jambase can be extended tosupport special variables or rules for new platforms. See thecurrent support for VMS, NT, and Mac.4) Yacc troublesThe generated files jamgram.h and jamgram.c are distributed for thepoor 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 problems6) Send the results back.If you do porting work, the result can be integrated into futurereleases if you send it back to the author's address in the README.