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
.
PREDIRS
DIRS
OPTDIRS
dirname/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.
NODEBUG
VENDORMOD
You should not have to play with the settings in this section. They are here for completeness.
APPVER
TARGETOS
TARGETLANG
_WIN32_IE
NO_DEBUG_CRT
TUNE
PROFILE
Note: 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.
NAME
TARGETTYPE
NAME
,
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.
TARGETSS
OBJS
DEF_FILE
RES
PLACE
NO_PLACE
NO_EXTERNAL_DEPS
USE_EXTERNAL_DEPS
INCLUDES
;
-delimtited (e.g.,
INCLUDES=..\include;..\foo\inc;"..\annoying path with
spaces\inc"
).
LIB_PATHS
LIB_PATHS=..\lib;..\foo\lib
).
LIBS
LIBS=foo.lib bar.lib ..\baz\$(O)\baz.lib
or
LIBS=$(STD_LIBS)
).
DEP_LIBS
LIBS
line too. (e.g.,
LIBS=subcomponent/a.lib ../other/component.lib
).
USE_DEFAULTLIB
LIBS
).
UNICODE
USE_MFC
USE_MFC_STATIC
USE_LIBC_STD
USE_LIBC_MT
USE_LIBC_DLL
NO_LIBC
NO_LIBC_LINK
USE_PCH
USE_MINIMAL
NO_MINIMAL
USE_MINIMAL
).
USE_CPP_RTTI
USE_CPP_EH
PCH_FILE
USE_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_BSC
NO_BSC
GEN_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.