sections on %unified_info and build-file templates further down).
The variables PROGRAMS, LIBS, ENGINES and SCRIPTS are used to declare
-end products.
+end products. There are variants for them with '_NO_INST' as suffix
+(PROGRAM_NO_INST etc) to specify end products that shouldn't get
+installed.
-The variables SOURCE, DEPEND, INCLUDE and ORDINALS are indexed by a
-produced file, and their values are the source used to produce that
-particular produced file, extra dependencies, include directories
-needed, and ordinal files (explained further below.
+The variables SOURCE, DEPEND and INCLUDE are indexed by a produced
+file, and their values are the source used to produce that particular
+produced file, extra dependencies, and include directories needed.
All their values in all the build.info throughout the source tree are
collected together and form a set of programs, libraries, engines and
# build.info
LIBS=libcrypto libssl
- ORDINALS[libcrypto]=crypto
- ORDINALS[libssl]=ssl
INCLUDE[libcrypto]=include
INCLUDE[libssl]=include
DEPEND[libssl]=libcrypto
This is the top directory build.info file, and it tells us that two
-libraries are to be built, there are some ordinals to be used to
-declare what symbols in those libraries are seen as public, the
-include directory 'include/' shall be used throughout when building
-anything that will end up in each library, and that the library
-'libssl' depend on the library 'libcrypto' to function properly.
+libraries are to be built, the include directory 'include/' shall be
+used throughout when building anything that will end up in each
+library, and that the library 'libssl' depend on the library
+'libcrypto' to function properly.
# apps/build.info
PROGRAMS=openssl
library 'libssl' is built from the source file 'ssl/tls.c'.
# engines/build.info
- ENGINES=libossltest
- SOURCE[libossltest]=e_ossltest.c
- DEPEND[libossltest]=../libcrypto
- INCLUDE[libossltest]=../include
-
-This is the build.info file in 'engines/', telling us that an engine
-called 'engines/libossltest' shall be built, that it's source is
+ ENGINES=dasync
+ SOURCE[dasync]=e_dasync.c
+ DEPEND[dasync]=../libcrypto
+ INCLUDE[dasync]=../include
+
+ ENGINES_NO_INST=ossltest
+ SOURCE[ossltest]=e_ossltest.c
+ DEPEND[ossltest]=../libcrypto.a
+ INCLUDE[ossltest]=../include
+
+This is the build.info file in 'engines/', telling us that two engines
+called 'engines/dasync' and 'engines/ossltest' shall be built, that
+dasync's source is 'engines/e_dasync.c' and ossltest's source is
'engines/e_ossltest.c' and that the include directory 'include/' may
-be used when building anything that will be part of this engine.
-Finally, the engine 'engines/libossltest' depends on the library
-'libcrypto' to function properly.
+be used when building anything that will be part of these engines.
+Also, both engines depend on the library 'libcrypto' to function
+properly. ossltest is explicitly linked with the static variant of
+the library 'libcrypto'. Finally, only dasync is being installed, as
+ossltest is only for internal testing.
When Configure digests these build.info files, the accumulated
information comes down to this:
LIBS=libcrypto libssl
- ORDINALS[libcrypto]=crypto
SOURCE[libcrypto]=crypto/aes.c crypto/evp.c crypto/cversion.c
DEPEND[crypto/cversion.o]=crypto/buildinf.h
INCLUDE[libcrypto]=include
- ORDINALS[libssl]=ssl
SOURCE[libssl]=ssl/tls.c
INCLUDE[libssl]=include
DEPEND[libssl]=libcrypto
INCLUDE[apps/openssl]=. include
DEPEND[apps/openssl]=libssl
- ENGINES=engines/ossltest
+ ENGINES=engines/dasync
+ SOURCE[engines/dasync]=engines/e_dasync.c
+ DEPEND[engines/dasync]=libcrypto
+ INCLUDE[engines/dasync]=include
+
+ ENGINES_NO_INST=engines/ossltest
SOURCE[engines/ossltest]=engines/e_ossltest.c
- DEPEND[engines/ossltest]=libcrypto
+ DEPEND[engines/ossltest]=libcrypto.a
INCLUDE[engines/ossltest]=include
GENERATE[crypto/buildinf.h]=util/mkbuildinf.pl "$(CC) $(CFLAGS)" "$(PLATFORM)"
ENGINES may be used to declare engines only.
-The indexes for SOURCE and ORDINALS must only be end product files,
-such as libraries, programs or engines. The values of SOURCE
-variables must only be source files (possibly generated)
+The indexes for SOURCE must only be end product files, such as
+libraries, programs or engines. The values of SOURCE variables must
+only be source files (possibly generated).
INCLUDE and DEPEND shows a relationship between different files
(usually produced files) or between files and directories, such as a
pairs. These are directly inferred from the INCLUDE
variables in build.info files.
+ install => a hash table containing 'type' => [ 'file' ... ] pairs.
+ The types are 'programs', 'libraries', 'engines' and
+ 'scripts', and the array of files list the files of
+ that type that should be installed.
+
libraries => a list of libraries. These are directly inferred from
the LIBS variable in build.info files.
- ordinals => a hash table containing 'file' => [ 'word', 'ordfile' ]
- pairs. 'file' and 'word' are directly inferred from
- the ORDINALS variables in build.info files, while the
- file 'ofile' comes from internal knowledge in
- Configure.
-
programs => a list of programs. These are directly inferred from
the PROGRAMS variable in build.info files.
[
"crypto/buildinf.h",
],
- "engines/ossltest" =>
+ "engines/dasync" =>
[
"libcrypto",
],
+ "engines/ossltest" =>
+ [
+ "libcrypto.a",
+ ],
"libssl" =>
[
"libcrypto",
},
"engines" =>
[
+ "engines/dasync",
"engines/ossltest",
],
"generate" =>
"util",
],
}
- "libraries" =>
- [
- "libcrypto",
- "libssl",
- ],
- "ordinals" =>
+ "install" =>
{
- "libcrypto" =>
+ "engines" =>
[
- "crypto",
- "util/libcrypto.num",
+ "engines/dasync",
],
- "libssl" =>
+ "libraries" =>
[
- "ssl",
- "util/libssl.num",
+ "libcrypto",
+ "libssl",
],
- },
+ "programs" =>
+ [
+ "apps/openssl",
+ ],
+ },
+ "libraries" =>
+ [
+ "libcrypto",
+ "libssl",
+ ],
"programs" =>
[
"apps/openssl",
[
"crypto/evp.c",
],
+ "engines/e_dasync.o" =>
+ [
+ "engines/e_dasync.c",
+ ],
+ "engines/dasync" =>
+ [
+ "engines/e_dasync.o",
+ ],
"engines/e_ossltest.o" =>
[
"engines/e_ossltest.c",
libobj2shlib(shlib => "PATH/TO/shlibfile",
lib => "PATH/TO/libfile",
objs => [ "PATH/TO/objectfile", ... ],
- deps => [ "PATH/TO/otherlibfile", ... ],
- ordinals => [ "word", "/PATH/TO/ordfile" ]);
+ deps => [ "PATH/TO/otherlibfile", ... ]);
'lib' has the intended library file name *without*
extension, libobj2shlib is expected to add that.
libraries (also *without* extension) this library
needs to be linked with. 'objs' has the list of
object files (also *without* extension) to build
- this library. 'ordinals' MAY be present, and when
- it is, its value is an array where the word is
- "crypto" or "ssl" and the file is one of the ordinal
- files util/libcrypto.num or util/libssl.num in the
- source directory.
+ this library.
This function has a choice; it can use the
corresponding static library as input to make the
libobj2shlib(shlib => "libcrypto",
lib => "libcrypto",
objs => [ "crypto/aes", "crypto/evp", "crypto/cversion" ],
- deps => [ ]
- ordinals => [ "crypto", "util/libcrypto.num" ]);
+ deps => [ ]);
obj2lib(lib => "libcrypto"
objs => [ "crypto/aes", "crypto/evp", "crypto/cversion" ]);