Provided by: pvm-dev_3.4.6-3.2_amd64 bug


       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 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.


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


       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)

                     - 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)