Provided by: pvm-dev_3.4.6-2build2_amd64 bug

NAME

       aimk - Portable make wrapper script

SYNOPSIS

       aimk [ -here ] [ make arguments ]

DESCRIPTION

       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
       compilation (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  system  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, Makefile.aimk, can be shared between architectures.  Per-architecture
       definitions 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 directory 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, otherwise it is 1.

FLAGS

       -here Forces aimk to run make in the current directory, e.g.  converts case i. to case iii.

EXAMPLES

       The following Makefile.aimk file builds and installs hello, creating  the  PVM  binary  directory  if  it
       doesn't  exist.   It  can  be  run  concurrently  on machines of different types, sharing the same source
       directory.

             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)

             $(XDIR):
                     - mkdir $(BDIR) $(XDIR)

             hello: $(SDIR)/hello.c $(XDIR)
                     $(CC) $(CFLAGS) -o $@ $(SDIR)/$@.c $(LIBS)
                     mv $@ $(XDIR)

ENVIRONMENT

           $PVM_ROOT   Root path of PVM installation.
           $PVM_ARCH   PVM architecture name for machine.

FILES

           $PVM_ROOT/lib/aimk                  The aimk program
           $PVM_ROOT/conf/$PVM_ARCH.def        Arch config file

SEE ALSO

       pvm_intro(1PVM)

                                                  02 May, 1994                                        AIMK(1PVM)