	@(#)README	1.2 01/20/98 CERN IT-PDP/DM Jean-Philippe Baud

                     imake and SHIFT
                     ---------------

The SHIFT software generation has been modified to use imake.
This will ease the port to new platforms, the customization for a specific
project or site and an easy selection of a specific component. For example,
one can choose to build only the "portable tape software", all needed
components like the msgdaemon will be automatically build.
Furthermore the type of platform is normally selected without manual
intervention.

Implementation
--------------

Two directories have been added to the SHIFT source structure: imake and
config. The first one contains the source of the imake program which is part
of the X11 distribution, the second one contains templates:

   Imake.tmpl			does platform selection and includes
	site.def		site selected defaults
	'platform'.cf		platform specific template
	Imake.rules		project specific rules
   Library.tmpl			selects the list of libraries to put in 
				libshift.a
   Project.tmpl			selects the list of directories from
				the site selected defaults.

Setting the defaults
--------------------

Only the file site.def should be edited.
It contains the pathnames for the configuration files, the logfiles
and the directories where to install the commands, libraries and man pages.
Be careful: put only one tab between variable name and value, otherwise cpp
will crash on certain platforms.
You specify there which components you want to be built:

   BuildCommands	Commands: newacct
   BuildCommon		Common library routines: getacct...
   BuildCopytapeClient	copytape program
   BuildCopytapeServer	copytape daemon
   BuildDpm		Disk Pool Manager
   BuildExamples	Examples: how to use rfio routines
   BuildFhs		Foreign Host Server interface (3495 robot)
   BuildMsg		msgdaemon
   BuildRfioClient	Remote File I/O: librfio, rfcp, rfstat
   BuildRfioServer	Remote File I/O: rfiod
   BuildRtcopyClient	tpread and tpwrite
   BuildRtcopyServer	rtcopy daemon, cptpdsk and cpdsktp
   BuildScripts		assign, DPMstagein, DPMstageout
   BuildStageClient	stagecat, stageclr, stagein, stageout, stageput,
			stageqry, stageupdc, stagewrt
   BuildStageDaemon	stgdaemon, cleaner, cpdskdsk, stageinit, stager
   BuildStage4TapeServer stageupdc (mandatory on a tape server if the requests
			come from a stager)
   BuildSysreq		SYSREQ interface
   BuildTape		Portable tape software
   BuildTms		Tape Management System interface
   BuildTpusage		tape statistics program

You specify there also special options like

   HasCDK		link to StorageTek toolkit
   UseDMSCapi		link to SONY DMSC library
   HasNis		to use NIS (formerly Yellow Pages)
   HasNroff		to use the nroff program to format the man pages
   HasUltra		to use the Ultranet interface
   UseFhs		to use the FHS interface to the 3495 robot
   UseTms		to use the Tape Management System

   ADSTAR		to select Adstar Tape driver for 3570 & 3590 (aix only)
   RS6000PCTA		to select Parallel Channel Tape Attachment (aix only)


Software build
--------------

When defaults are correctly set up in site.def, you may build the software.
If you are on a Unix platform, you use:

	make

On Windows/NT, you should say:

	make -f Makefile.ini.Win32

(the program imake is automatically build if necessary).

If you just want to create the makefiles without compiling,
you should say at the top directory:

	make Makefiles (under Unix)
or
	make -f Makefile.ini.Win32 Makefiles (under Windows/NT)

Then you may simply type:

	make (under Unix)
or
	nmake (under Windows/NT)

in any subdirectory.

If the Makefile at the top directory gets corrupted, you may restore
a working version by typing:

	cp Makefile.ini Makefile  (under Unix)
or
	cp Makefile.ini.Win32 Makefile (under Windows/NT)

Then you can execute make as indicated above.
