The version of Apache log4j used by SoundHelix.

[[ 🗃 ^aEp6o apache-log4j ]] :: [📥 Inbox] [📤 Outbox] [🐤 Followers] [🤝 Collaborators] [🛠 Commits]

Clone

HTTPS: git clone https://vervis.peers.community/repos/aEp6o

SSH: git clone USERNAME@vervis.peers.community:aEp6o

Branches

Tags

v_1_1b5 :: make /

TUTORIAL


This package is a step by step tutorial on using the log4j make
environment.

First, it will show you how to adapt the make environment to your
particular settings.  Once you adapt the make environment for your
particular system setting, you can compile a few java source files and
watch the make environment in action.

Then, the tutorial will proceed to show you how to write your own
Makefiles so that others can compile your code without effort.

Master Rules file
=================

The master rules file defines the rules that the gnu-make uses in
order compile your source code. It is located in "make/make.inc".  You
need not change this file.

The master rules file searches for a file called "make/make.loc" which
tells it how to resolve local system dependencies.

Local System dependencies
=========================

The system dependencies are localized into a file called "make.loc"
located under the "make" directory.

The file make.loc is not part of the log4j distribution. YOU MUST
CREATE THIS FILE YOURSELF. See make/README on how to do this.

Compiling with gnu-make
=======================

After you created the make/make.loc file and set the JAVAC,
JAVAC_FLAGS and CLASS_DIR variables, you can try to compile the java
files under the "test" directory.

You can test your make environment by issuing the make command form
within the make directory. Issue the command:

> make lib

which should compile test source code and place the resulting class
files in CLASS_DIR.  Make sure that Hello.class and X.class were
created and places in CLASS_DIR/make/test and respectively
CLASS_DIR/make/test/subdir.

If your compiler complains that "X" cannot be found, it is likely that
your CLASSPATH is misconfigured.

Remember that your CLASSPATH should contain the the CLASS_DIR
directory in addition to your *source tree* path.  Otherwise, your
java compiler will not be able to resolve dependencies in your source
code.

You can issue the "make lib" command from either from the make or from
the "test" directory under it.  The make environment is capable of
recursing into subdirectories.

You probably noticed that "make/test/subdir/X.java" was compiled when
Hello.java was compiled. The ability to automatically compile required
classes is a common feature of most java compilers.

Now modify the "X.java" file in test/subdir, for example by adding an
empty line.  If you issue a "make lib" command, you will see that the
GNU-make will recurse into the make/test/subdir directory and correctly
compile X.java.  It will not compile "Hello.java" because it was not
changed.


Compiling the Entire Source Code
================================

You can compile the entire source code from the directory where you
extracted the distribution by issuing the command "make lib."

Makefiles
=========

It is quite easy to add your own code so that it gets automatically
gets compiled with make.  This is done by adding a Makefile to each
package of your source code. In java, where each directory corresponds
to a package, there should be a Makefile in each directory in the
source code.

This tutorial comes with an "examples" directory containing incomplete
Makefiles. You should complete these Makefiles as indicated below.

Our Makefiles have the following structure:

# Start Makefile ==================================
PKG_DIR :=name/of/package/separated/by/forward/slashes 
DEPTH   :=the_depth_of_your_make_file: e.g. ../.. (for 2 levels deep)
JSOURCES:=Your.java Sources.java 
SUBDIRS :=space separated list of subdirs that should be recursed into
JRMI    :=files.java that.java require.java rmic.java compilation.java
# include master-rule file
include $(DEPTH)/make/make.inc
# End Makefile ====================================

The PKG_DIR variable should be set to the name of the package with
dots replaced by forward slashes, e.g. for package x.y.z the PKG_DIR
variable should be set to x/y/z.

The rule for setting the DEPTH variable is as follows:

.         for the top level Makefile
..        for level 1 packages
../..     for level 2 packages
../../..  for level 3 packages, etc.
          
The JSOURCES variables should be a space separated list of the java
source files that you want compiled. If the list of files is too long
you can place a backward-slash on the end of the line and continue on
the next line. The continues lines should all contain a space--but not
a tabulation since tabulation characters have special meaning in make.

For example,

JSOURCES:= XYZ1.java XYZ2.java XYZ3.java XYZ4.java \
 XYZ5.java XYZ6.java XYZ7.java XYZ8.java \
 XYZ9.java XYZ10.java XYZ11.java XYZ12.java \
 XYZ13.java XYZ14.java XYZ15.java\
 
The SUBDIRS variable tell make to recurse into the listed
subdirectories. Make will apply the make rules in each of those
directories. The list should be space separated.

The JRMI variable is the space separated list of java files that
should be compiled by RMI. The sources files in JRMI variable should
also be repeated in the JSOURCES variable.
	  

The Makefile for the test package follows:
# Start Makefile for ackage test====================
PKG_DIR :=test
DEPTH   :=..
JSOURCES:=Hello.java 
JRMI    :=
SUBDIRS :=subdir

# include master-rule file
include $(DEPTH)/make/make.inc
# End Makefile ====================================


As an exercise try to complete the Makefiles in the exercise,
make/exercise/echo, make/exercise/echo/client,
make/exercise/echo/server directories.  The correct solutions can be
found in Makefile.sol files in the respective directories.
  
In case you have trouble with your settings, please contact
cgu@urbanet.ch.




 

[See repo JSON]