#DS	three example library build architectures, set up, and mgt.
#: /*^ instal -d ^(@_DestDir_)/bin/Dirsetup.dir/^R ^F

#:	SID	@(#)qeglibeg.ds	8.5 - 00/04/25

#F libflat/flat/flat.h
-extern int	example(void);
#F libflat/flat/qeffile
-set Suffixes h
-
-Begin
-
-# install header files
-instfls -d _DestDir_/hdrs/flat @argv
#F libflat/glib/qeffile
-preamble
-	options DEBUGGING
-endpreamble
-
-# splice .. into SrcPath
-addpath SrcPath -s \100(paths ../lib)
-
-Begin
-
-library -V libflat -n flat_g @argv
#F libflat/lib/example.c
-#include	<flat/flat.h>
-
-int
-example()
-{
-	return 43;
-}
#F libflat/lib/flat.shl
-# /*^ ^{mksolib}
-# LIBS: libflat.a
-
-# used to build symbol table linked with library to build solib
-example		int \100()
#F libflat/lib/qeffile
-Begin
-
-library -v -n flat @argv
-mksolib -k flat.shl
#F libflat/plib/qeffile
-preamble
-	options PROFILING
-endpreamble
-
-# splice .. into SrcPath
-addpath SrcPath -s \100(paths ../lib)
-
-Begin
-
-library -V libflat -n flat_p @argv
#F libflat/qeffile
-#:	SID	\045W\045 - \045E\045
-
-Begin	qefdirs
-
-flat		I
-+
-lib		IL	# the standard installation
-glib		IL	# the debugging version
-plib		IL	# the profiling version
#F libflat/read.me
-This example qef file system illustrates the use of qef to create a
-standard static library, and the shared, debugging, and profiling
-versions.
-
-Significant files and directories:
-
-	flat/		header file directoriy
-	flat/flat.h	example header file
-	flat/qeffile
-	glib/		debugging library construction
-	glib/qeffile
-	lib/		standard and shared library construction
-	lib/example.c	example source
-	lib/flat.shl	mksolib input file
-	lib/qeffile
-	plib/		profiling library contruction
-	plib/qeffile
-	qeffile
-	read.me		this file
-	tree.vrs	set common paths
#F libflat/tree.vrs
-suspend
-
-# add this directory to InclPath.
-# Note use of Dots so that path is relative to current directory.
-
-addpath InclPath \100(paths @Dots)
#F libmerge/libone/glib/qeffile
-preamble
-	options DEBUGGING
-endpreamble
-
-# Splice .. into SrcPath
-addpath SrcPath -s \100(paths ..)
-
-Begin
-
-mkobjlist @argv
#F libmerge/libone/qeffile
-Begin
-
-mkobjlist @argv
-
-if ! \100(option NO_DEBUGLIBS) && ! \100(option DEBUGGING)
-        subdir -IL glib
-fi
#F libmerge/libone/tcinit.c
-#include	<merge/merge.h>
-
-int
-one()
-{
-	return 1;
-}
#F libmerge/libtwo/glib/qeffile
-preamble
-	options DEBUGGING
-endpreamble
-
-addpath SrcPath -s \100(paths ..)
-
-Begin
-
-mkobjlist @argv
#F libmerge/libtwo/long_test_name.c
-#include	<merge/merge.h>
-
-int
-two()
-{
-	return 2;
-}
#F libmerge/libtwo/qeffile
-Begin
-
-mkobjlist @argv
-
-if ! \100(option NO_DEBUGLIBS) && ! \100(option DEBUGGING)
-        subdir -IL glib
-fi
#F libmerge/merge/merge.h
-#ifndef _MERGE_H
-#define	_MERGE_H
-
-extern int	one(void);
-extern int	two(void);
-
-#endif	_MERGE_H
#F libmerge/mergelib/qeffile
-Begin qsg
-
-# Merge ../lib{one,two} object lists and master lib from Qtree
-# into library in this directory.
-# The -Dglib forces ../lib{one,two}/glib objects to
-# be merged into libtc_g.a in current directory
-
-libmerge -Dglib -ltc -m @{QTREE}/lib libone libtwo
#F libmerge/qeffile
-Begin qefdirs
-
-All = Install
-
-libone		L
-libtwo		L
-+
-mergelib	IL libone libtwo
#F libmerge/read.me
-The merge architecture is used for large if not huge libraries in
-which the source is partitioned into multiple sub-directories (libone
-and libtwo in this example).  Each directory's qeffile compiles its
-source modules and creates a list of its object modules.  The
-mergelib/qeffile then uses these object lists to create the standard
-and debugging libraries.  An optional extension is to allow the
-specification of a master library that is also combined with the local
-modules to create the new library.  This scheme has the advantage that
-a developer need only build those subsets (i.e., sub-directories) in
-which changes are being made.  The balance of the library is extracted
-from the production version maintained by the project administrator or
-librarian. The example given illustrates this architecture, albeit
-with a very small library, using a masterlibrary from the Q-Tree
-itself.
#F libmerge/tree.vrs
-suspend
-
-addpath InclPath \100(paths @Dots)
#F libnested/lib/example.c
-#include	<nested/nested.h>
-
-int
-example()
-{
-	return 43;
-}
#F libnested/lib/glib/qeffile
-preamble
-	options DEBUGGING
-endpreamble
-
-addpath SrcPath -s \100(paths ..)
-
-Begin
-
-library -V libnested -n nested_g @argv
#F libnested/lib/plib/qeffile
-preamble
-	options PROFILING
-endpreamble
-
-addpath SrcPath -s \100(paths ..)
-
-Begin
-
-library -V libnested -n nested_p @argv
#F libnested/lib/qeffile
-Begin
-
-library -v -n nested @argv
-
-if ! \100(option NO_DEBUGLIBS) && ! \100(option DEBUGGING)
-	subdir -IL glib
-fi
-
-if ! \100(option NO_PROFLIBS)
-	subdir -IL plib
-fi
#F libnested/nested/nested.h
-extern int	example(void);
#F libnested/qeffile
-#:	SID	\045W\045 - \045E\045
-
-Begin	qefdirs
-
-lib		IL	# the standard installation
#F libnested/read.me
-This example qef file system illustrates the use of qef to create a
-standard static library, and the shared, debugging, and profiling
-versions.
-
-Significant files and directories:
-
-	nested/			header file directoriy
-	nested/nested.h		example header file
-	nested/qeffile
-	lib/			standard and shared library construction
-	lib/example.c		example source
-	lib/qeffile
-	lib/lib_g/		debugging library construction
-	lib/lib_g/qeffile
-	lib/lib_p/		profiling library contruction
-	lib/lib_p/qeffile
-	qeffile
-	read.me			this file
-	tree.vrs		set common paths
-
-Note:	The debugging and profiling libraries are not done if
-	the NO_DEBUGLIBS or NO_PROFLIBS are set respectively.
#F libnested/tree.vrs
-suspend
-
-addpath InclPath \100(paths @Dots)
#F qeffile
-Begin	qefdirs
-
-All = Install
-
-libflat		IL
-libnested	IL
-libmerge	IL
#F read.me
-This dirset contains three prototype library directory structures.
-
-libflat -- example of flat library structure using sibling
-	directories with spliced SrcPaths to build the debugging
-	and profiling libraries
-
-libnested -- example of nested library structure using sub-directories
-	with spliced SrcPaths to build the debugging and profiling
-	libraries
-
-libmerge -- example of library with partitioned source and a mergelib
-	directory that merges object lists and a master library to
-	create single library.
