File: README

package info (click to toggle)
mmake 2.2.1-2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 224 kB
  • ctags: 75
  • sloc: perl: 304; makefile: 242; sh: 169; java: 17
file content (101 lines) | stat: -rw-r--r-- 3,320 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
QUICK START
-----------

This readme serves as a quick start, please use `man mmake' for
documentation on the mmake script.


Installation:
-------------

  -  ./configure
  -  make install
  -  man mmake

This will install mmake and the man-file in /usr/local/bin and
/usr/local/man/man1 respectively. If you want another location than
/usr/local, run configure with the prefix options, like so:
./configure --prefix=<dir>

Using the script:
-----------------

If you have structured your java files into packages, run mmake in
the topmost directory:

`-- src          <-- Run mmake in this directory
    `-- org      <-- Package structure starts here
        `-- acme
            |-- package1
            |-- package2
            `-- package3

If you don't use packages, simply run mmake in the same directory as
your java files.

mmake will give you one Makefile for managing your Java files and
package-structure. Although it's easy to setup and use mmake in a
recursive make-file context, you really don't want that. To see why,
read the excellent article: 'Recursive Make Considered Harmful' at
http://www.canb.auug.org.au/~millerp/rmch/recu-make-cons-harm.html


Compiling:
----------

Before you conduct a build you may have to set the CLASSPATH
environment variable. This could be done in the shell from where you
run make, or inserted explicit into the Makefile. Here's an example of
how to set the CLASSPATH variable in the Makefile.

#
# Example: Append Java Servlet Development Kit and current dir.
#          to the CLASSPATH environment variable
#
export CLASSPATH := $(CLASSPATH):/usr/local/libjava/servlet22/servlet.jar:.

Testing mmake:
--------------

See the README file in the tildeslash sub-directory


Dependencies:
-------------

With the current dependency strategy the (dang*) built-in dependency
check in the java compiler will kick in and compile depending
java-files in the "background" before make can get a chance to compile
the file. This is not a problem, (on the contrary) but can give the
impression that make forget to compile classes, when looking at the
output from make. (A Java compiler can compile more than one file in a
swoop if it wants to).


Notes:
------

- We use GNU xargs when building the jar file for a reason - to avoid
a situation where the shells command buffer is exceeded. This could
happen if lots of stuff is going into the jar file and the build
command was something like (it looks nicer though):

%.jar: $(JAVA_OBJS) $(RESOURCE_OBJS)
	$(JAR) $(JAR_FLAGS) $(JAR_FILE) $(JAVA_OBJS) $(RESOURCE_OBJS)

GNU xargs has a default command-line buffer that defaults up to 20k,
while a POSIX.1 system is only guaranteed to have a 4k shell
command-line buffer (although it's usually larger).  This is also the
reason why xargs is used in the clean target together with find.

- Intermediate .java files produced from .xjava files are not deleted
after a build is conducted. This is not a bug, but a feature - because
it's then not necessary to run CPP if there is a dependency between a
regular .java file and a .xjava file and the .xjava file was not
changed.

- The uninstall target does only remove the installed files, not the
installed directories. At the moment I can't see a _simple_ generic
solution for doing this (safe). Let me know if you have a solution.

#