path: root/jmake/README
diff options
authorManoj Srivastava <>2003-12-01 17:11:15 +0000
committerManoj Srivastava <>2003-12-01 17:11:15 +0000
commit371472d9fb6a936149b105a6563a0550d35bdf1a (patch)
tree6d23751e44a7dddf4e29918551f1ea0513352622 /jmake/README
Initial import of upstream branch
Initial import of upstream branch git-archimport-id:
Diffstat (limited to 'jmake/README')
1 files changed, 70 insertions, 0 deletions
diff --git a/jmake/README b/jmake/README
new file mode 100644
index 0000000..636cc8f
--- /dev/null
+++ b/jmake/README
@@ -0,0 +1,70 @@
+This is the root directory for jmake.
+The jmake program is a Makefile generator. It comes from 'imake' one
+may find in the X11R4 distribution, but it produces a Makefile.SH
+instead of a Makefile. Jmake has a template which knows some metaconfig
+symbols and has built-in commands which make it more powerful than imake.
+The jmkmf script may be used to produce the Makefile.SH from a Jmakefile.
+Once the bootstrap is done, you can run 'make Makefile.SH' to rebuild the
+Makefile.SH in the current directory, or 'make Makefiles.SH' to build the
+Makefiles in a recursive manner.
+All the rules used by jmake are listed in an automatically built index.
+The jmake's cryptic syntax is documented in file NOTES. You may also
+have a look at the sample Jmakefiles that come with this package.
+Usually, you do not include them in the release, but I kept them so
+that you may have a real example and see how things are organized.
+If you choose to use jmake, then you will have to use metaconfig, in
+order to get a meaningful value for all the needed symbol. Thus, each
+time you change your Jmakefiles, it may be necessary to update the
+Configure script.
+Here is how to use jmake...
+First, you have to write a Jmakefile for each directory where you want
+to put a Makefile. Be sure to declare all the sub-directories with the
+SetSubdirs rule. Usually, the order of the rules is not significant,
+but you should make sure the Makefile begins with an 'all::' target,
+so that a default 'make' does not run a clean for instance.
+Then, if this is the first time, you have to bootstrap. Go to the main
+directory of your package and run:
+ jmkmf
+ make Makefiles.SH
+which will first produce the main makefile and then recursively build
+all the makefiles.
+Once you have bootstrapped once, you can edit a Jmakefile and rebuild
+the local makefile with
+ make Makefile
+or all the hierachy below with:
+ make Makefiles.SH
+If you want to extract all the makefiles, you may run
+ sh Makefile.SH
+ make Makefiles
+in the top-level directory. Finally, if you only want to test the
+generated Makefile.SH without disturbing the Makefile, run
+ make Makefile.SH
+which will stop before running the produced file through sh.
+On machines whose cpp eats up tabs in macro expansion, the Makefile.SH
+produced might not be indented properly inside rules.
+Perl 4.0 PL10 sometimes dumps core, while PL3 does not. Thus, perl 4.0
+PL10 should NOT be used with jmake, at least on a MIPS.