Previous Contents Next

Chapter 9   The dependency generator (jcdep)

The jcdep command scans a set of source files (.j and .ji files) for references to external compilation units, and outputs dependency lines in a format suitable for the make utility. This ensures that make will compile the source files in the correct order, and recompile those files that need to when a source file is modified.

The typical usage is:
        jcdep options *.ji *.j > .depend
where *.ji *.j expands to all source files in the current directory and .depend is the file that should contain the dependencies.

9.1   Options

The following command-line option is recognized by jcdep.

-I directory
Add the given directory to the list of directories searched for source files. If a source file foo.j mentions an external compilation unit bar, a dependency on that unit's interface is generated only if the source for bar is found in the current directory or in one of the directories specified with -I. Otherwise, bar is assumed to be a module form the standard library, and no dependencies are generated. For programs that span multiple directories, it is recommended to pass jcdep the same -I options that are passed to the compiler.

9.2   A typical Makefile

Here is a template Makefile for a join-calculus program.

INCLUDES=               #all relevant -I options here
JCCFLAGS=$(INCLUDES)    #add other options for jcc here

# prog  is composed of three units: mod1, mod2 and mod3.

# The list of object files for prog

prog: $(PROG1_OBJS)
       $(JCC) -o prog $(JCFLAGS) $(PROG_OBJS)

# Common rules
.SUFFIXES: .j .ji .jo .jio
       $(JCC) $(JCFLAGS) -c $<
       $(JCC) $(JCFLAGS) -c $<

# Clean up
       rm -f prog
       rm -f *.jo *.jio

# Dependencies
        $(JCDEP) $(INCLUDES) *.ji *.j > .depend

include .depend

Previous Contents Next