AIMK(1PVM) PVM Version 3.4 AIMK(1PVM)
aimk - Portable make wrapper script
aimk [ -here ] [ make arguments ]
aimk is a wrapper program for make, used to portably select options to
build PVM and PVM applications on various machines. Each port of PVM
is assigned an architecture name. The name is used both during compi-
lation (to conditionally switch in code) and at runtime (to select an
executable or host).
aimk uses the value of environment variable $PVM_ARCH if it is set,
otherwise it calls $PVM_ROOT/pvmgetarch to determine the architecture
name. pvmgetarch is a script that sniffs at various parts of the sys-
tem to determine the correct architecture name. It is updated as new
PVM ports are defined, and can be augmented locally.
aimk determines the machine architecture and execs make, passing it the
architecture and a configuration file along with arguments supplied to
aimk. It runs make in a subdirectory to prevent executables from
becoming intermixed and to permit overlapping compiles. A different
makefile can be placed in each subdirectory or a single makefile, Make-
file.aimk, can be shared between architectures. Per-architecture defi-
nitions from the $PVM_ROOT/conf directory are appended to the common
makefile. aimk calls make is called in one of three ways, depending on
what makefiles are present:
i. If $PVM_ARCH/Makefile or $PVM_ARCH/makefile exists, change direc-
tory to $PVM_ARCH and exec make there:
(cd $PVM_ARCH ; make PVM_ARCH=$PVM_ARCH < aimk args >)
ii. Else if Makefile.aimk exists, create $PVM_ARCH directory if it
doesn’t exist, then:
(cd $PVM_ARCH ; \
make -f $PVM_ROOT/conf/$PVM_ARCH.def \
-f ../Makefile.aimk PVM_ARCH=$PVM_ARCH < aimk args >)
iii. Else just exec make in current directory:
make PVM_ARCH=$PVM_ARCH < aimk args >
If aimk succeeds in calling make, the exit status is that of make, oth-
erwise it is 1.
-here Forces aimk to run make in the current directory, e.g. converts
case i. to case iii.
The following Makefile.aimk file builds and installs hello, creating
the PVM binary directory if it doesn’t exist. It can be run concur-
rently on machines of different types, sharing the same source direc-
LDIR = -L$(PVM_ROOT)/lib/$(PVM_ARCH)
PVMLIB = -lpvm3
SDIR = ..
BDIR = $(HOME)/pvm3/bin
XDIR = $(BDIR)/$(PVM_ARCH)
CFLAGS = -g -I$(PVM_ROOT)/include
LIBS = $(LDIR) $(PVMLIB) $(ARCHLIB)
- mkdir $(BDIR) $(XDIR)
hello: $(SDIR)/hello.c $(XDIR)
$(CC) $(CFLAGS) -o $@ $(SDIR)/$@.c $(LIBS)
mv $@ $(XDIR)
$PVM_ROOT Root path of PVM installation.
$PVM_ARCH PVM architecture name for machine.
$PVM_ROOT/lib/aimk The aimk program
$PVM_ROOT/conf/$PVM_ARCH.def Arch config file
02 May, 1994 AIMK(1PVM)
Man(1) output converted with