1 | Notes on porting Jam - revised 12/31/2000 |
---|
2 | |
---|
3 | 1) 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 | |
---|
35 | 2) 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 | |
---|
46 | 3) 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 | |
---|
52 | 4) Yacc troubles |
---|
53 | |
---|
54 | The generated files jamgram.h and jamgram.c are distributed for the |
---|
55 | poor souls without yacc. |
---|
56 | |
---|
57 | 5) 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 | |
---|
65 | 6) 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. |
---|