The tree uses the Pismere build script, build.pl. This
script is known to work with ActivePerl builds 517 and 522 (www.activestate.com). Older
builds of ActivePerl had subtle incompatibility problems. Newer
builds probably work...try them at your own risk.
The build works under Windows NT. It should work under Windows 95, but we do not test it regularly under that OS. You should use the default command-line shell for those OSes, or something fairly compatible.
Go to the directory you want to build and invoke the build script. The invocation will vary depending on how your system is set up. Here are the most common ways to build:
build.pl -? - show usage information.
build.pl --docs - show this documentation.
build.pl (or build.pl all)- builds debug target.
build.pl NODEBUG=1 (or build.pl all NODEBUG=1)
- builds release target.
build.pl clean - cleans debug target.
build.pl clean NODEBUG=1 - cleans release target.
You may need to put perl at the start of each of the
above commands, depending on whether your shell knows how to execute a
.pl file.
The build script works by entering a directory, and looking for a
Makefile.src, a Makefile.dir, or a
Makefile file.
If the Makefile.src is present, the script will try to
create the target defined by this file. Therefore, only one target
can be created per directory. The target cannot consist of source
files from other directories. If this is necessary, you should first
build the other directory, creating a library, and then include that
library as part of the target you're trying to build. If you need to
create multiple targets from a set of source files, you can simply
create additional directories that link in the object or library files
created by the sources.
If the Makefile.dir is present, the script will try to
build the directories indicated in this file. The directories can be
build before and/or after the current directory.
If neither of the above files exist, the script will simply
invoke the make utility on Makefile.
First, go to the directory where the component is located. Then,
create a Makefile.src as described below.
You will then be able to run build.pl in a variety of
ways to get the most common types of builds. See Running the Build above for information on how to
run build.pl.
If you need to build subdirectories, create a
Makefile.dir in the directory. At least one of these
variables must be defined in Makefile.dir.
PREDIRSDIRSOPTDIRSdirname/Makefile.src,
dirname/Makefile.dir, or dirname/Makefile
exists).
DIRS=dir_1 dir_2Where
dir_n is the name of the subdirectory you want to
build. The build will first build the current directory then the
subdirectories.
Below are the options that control the build. These are in addition
to any flags shown when you do a build.pl -?.
These are some of the common options you may want to use in building.
You can set any option at the build.pl command-line. The
default build is a debug build.
NODEBUGSELF_REGISTERSELF_REGISTERABLE (see below).
VENDORMODYou should not have to play with the settings in this section. They are here for completeness.
APPVERTARGETOSTARGETLANG_WIN32_IENO_DEBUG_CRTTUNEPROFILENote: NODEBUG, TUNE, and
PROFILE are mutually exclusive.
At this point, $(O) is the output directory. NODEBUG will indicate whether you're doing a release or debug build. STD_LIBS consists of standard Win32 libraries.
NAMETARGETTYPENAME,
TARGETSS, or OBJS. NONE is very useful as a
means to use PLACE when not doing any kind of build at
all, when building files that the build does not yet support (e.g.,
help files), or when trying to integrate with a package with its own
separate build.
TARGETSSOBJSDEF_FILERES
PLACEPLACE_OPTIONALNO_PLACENO_EXTERNAL_DEPSUSE_EXTERNAL_DEPS
INCLUDES;-delimtited (e.g.,
INCLUDES=..\include;..\foo\inc;"..\annoying path with
spaces\inc").
LIB_PATHSLIB_PATHS=..\lib;..\foo\lib).
LIBSLIBS=foo.lib bar.lib ..\baz\$(O)\baz.lib or
LIBS=$(STD_LIBS)).
DEP_LIBSLIBS line too. (e.g.,
LIBS=subcomponent/a.lib ../other/component.lib).
USE_DEFAULTLIBLIBS).
UNICODE
USE_MFCUSE_MFC_STATIC
USE_LIBC_STDUSE_LIBC_MTUSE_LIBC_DLLNO_LIBCNO_LIBC_LINK
USE_PCHUSE_MINIMALNO_MINIMALUSE_MINIMAL).
USE_CPP_RTTIUSE_CPP_EHPCH_FILEUSE_PCH). Note that this
option is not needed if you want the compiler to automatically handle
pre-compiled headers. It's only needed if you need to control how
pre-compiled headers are handled.
GEN_BSCNO_BSCGEN_BSC).
KEEP_SBRS
GEN_MAP
C_DEFINE-D style
definitions to pass to the C/C++ compiler.
RC_DEFINE-D style
definitions to pass to the resource compiler.
C_FLAGS-D definition, put it in
C_DEFINE.
RC_FLAGS-D definition, put it in
RC_DEFINE.
USE_SUFFIX_CP.cp files to be treated as C++ source files.
SELF_REGISTERABLE