mirror of
https://github.com/samba-team/samba.git
synced 2024-12-27 03:21:53 +03:00
c6673b96a5
Build groups are used in Samba to ensure that even if the dependency chain for a target is not perfect, that it builds reliably. This matters most in the early build stages, where we are building the asn1 compiler and autogenerating files. Once we get to the main stage, dependencies between C files, libraries and binaries are much clearer, because the C compiler and linker takes these as inputs anyway. Groups were added to our waf build for stability during early development, as dependency information was first imported from the previous autoconf/perl based build system. I don't think we need this distinction in the main build of C files into .o, and when linking these into binaries, because the invocation of these tools is very well defined, and we will find any missing inputs very quickly. As such, I've removed the libraries and binaries targets, consolidating them with 'main' By making this change, a build of smbtorture only on a clean tree drops from 3778 to 2489 targets, and much of the expensive linker stage is skipped. The time for a null build of smbtorture only also drops from 4.673s to as low as 2.499s on my laptop. Andrew Bartlett Reviewed-by: Jelmer Vernooij <jelmer@samba.org>
967 lines
41 KiB
Python
967 lines
41 KiB
Python
#!/usr/bin/env python
|
|
|
|
import os, Utils
|
|
from samba_utils import SET_TARGET_TYPE
|
|
from samba_autoconf import CURRENT_CFLAGS
|
|
|
|
def to_list(str):
|
|
'''Split a list, preserving quoted strings and existing lists'''
|
|
if str is None:
|
|
return []
|
|
if isinstance(str, list):
|
|
return str
|
|
return str.split(None)
|
|
|
|
def heimdal_path(p, absolute=False):
|
|
hpath = os.path.join("../heimdal", p)
|
|
if not absolute:
|
|
return hpath
|
|
return os.path.normpath(os.path.join(bld.curdir, hpath))
|
|
|
|
def heimdal_paths(ps):
|
|
return [heimdal_path(p) for p in to_list(ps)]
|
|
|
|
# waf build tool for building .et files with compile_et
|
|
def HEIMDAL_ASN1(name, source,
|
|
options='',
|
|
directory='',
|
|
option_file=None,
|
|
includes=''):
|
|
'''Build a ASN1 file using the asn1 compiler.
|
|
This will produce 2 output files'''
|
|
source = heimdal_path(source)
|
|
bname = os.path.basename(source)[0:-5];
|
|
dname = os.path.dirname(source)
|
|
asn1name = "%s_asn1" % bname
|
|
|
|
if option_file:
|
|
option_file = heimdal_path(option_file)
|
|
|
|
if not SET_TARGET_TYPE(bld, name, 'ASN1'):
|
|
return
|
|
|
|
# for ASN1 compilation, I always put it in build_source, as it doesn't make
|
|
# sense elsewhere
|
|
bld.set_group('build_source')
|
|
|
|
out_files = heimdal_paths([
|
|
"%s/asn1_%s_asn1.x" % (directory, bname),
|
|
"%s/%s_asn1.hx" % (directory, bname),
|
|
"%s/%s_asn1-priv.hx" % (directory, bname),
|
|
])
|
|
|
|
# the ${TGT[0].parent.abspath(env)} expression gives us the parent directory of
|
|
# the first target in the build directory
|
|
# SRC[0].abspath(env) gives the absolute path to the source directory for the first
|
|
# source file. Note that in the case of a option_file, we have more than
|
|
# one source file
|
|
cd_rule = 'cd "${TGT[0].parent.abspath(env)}"'
|
|
asn1_rule = cd_rule + ' && "${ASN1_COMPILE}" ${OPTION_FILE} ${ASN1OPTIONS} --one-code-file "${SRC[0].abspath(env)}" ${ASN1NAME}'
|
|
|
|
source = to_list(source)
|
|
|
|
if option_file is not None:
|
|
source.append(option_file)
|
|
|
|
deps = ''
|
|
if not bld.CONFIG_SET('USING_SYSTEM_ASN1_COMPILE'):
|
|
deps = 'asn1_compile'
|
|
|
|
t = bld(rule=asn1_rule,
|
|
ext_out = '.x',
|
|
before = 'cc',
|
|
on_results = True,
|
|
shell = True,
|
|
source = source,
|
|
target = out_files,
|
|
depends_on = deps,
|
|
name=name + '_ASN1')
|
|
|
|
t.env.ASN1NAME = asn1name
|
|
t.env.ASN1OPTIONS = options
|
|
t.env.BLDBIN = os.path.normpath(os.path.join(bld.srcnode.abspath(bld.env), '..'))
|
|
if option_file is not None:
|
|
t.env.OPTION_FILE = "--option-file='%s'" % os.path.normpath(os.path.join(bld.curdir, option_file))
|
|
|
|
cfile = out_files[0][0:-2] + '.c'
|
|
hfile = out_files[1][0:-3] + '.h'
|
|
hpriv = out_files[2][0:-3] + '.h'
|
|
|
|
# now generate a .c file from the .x file
|
|
t = bld(rule='''( echo '#include "config.h"' && cat ${SRC} ) > ${TGT}''',
|
|
source = out_files[0],
|
|
target = cfile,
|
|
shell = True,
|
|
on_results=True,
|
|
ext_out = '.c',
|
|
ext_in = '.x',
|
|
depends_on = name + '_ASN1',
|
|
name = name + '_C')
|
|
|
|
# and generate a .h file from the .hx file
|
|
t = bld(rule='cp ${SRC} ${TGT}',
|
|
source = out_files[1],
|
|
ext_out = '.c',
|
|
ext_in = '.x',
|
|
on_results=True,
|
|
target = hfile,
|
|
depends_on = name + '_ASN1',
|
|
name = name + '_H')
|
|
|
|
# and generate a .h file from the .hx file
|
|
t = bld(rule='cp ${SRC} ${TGT}',
|
|
source = out_files[2],
|
|
ext_out = '.c',
|
|
ext_in = '.x',
|
|
on_results=True,
|
|
target = hpriv,
|
|
depends_on = name + '_ASN1',
|
|
name = name + '_PRIV_H')
|
|
|
|
bld.set_group('main')
|
|
|
|
includes = to_list(includes)
|
|
includes.append(os.path.dirname(out_files[0]))
|
|
|
|
t = bld(features = 'cc',
|
|
source = cfile,
|
|
target = name,
|
|
samba_cflags = CURRENT_CFLAGS(bld, name, ''),
|
|
depends_on = '',
|
|
samba_deps = to_list('roken replace'),
|
|
samba_includes = includes + ["/usr/include/heimdal"],
|
|
local_include = True)
|
|
|
|
|
|
def HEIMDAL_ERRTABLE(name, source):
|
|
'''Build a heimdal errtable from a .et file'''
|
|
|
|
source = heimdal_path(source)
|
|
|
|
bname = source[0:-3]; # strip off the .et suffix
|
|
|
|
if not SET_TARGET_TYPE(bld, name, 'ET'):
|
|
return
|
|
|
|
bld.set_group('build_source')
|
|
|
|
out_files = []
|
|
out_files.append('%s.c' % bname)
|
|
out_files.append('%s.h' % bname)
|
|
|
|
sources = [source, 'et_compile_wrapper.sh']
|
|
|
|
deps = ''
|
|
if not bld.CONFIG_SET('USING_SYSTEM_COMPILE_ET'):
|
|
deps = 'compile_et'
|
|
|
|
t = bld(rule='"${SRC[1].abspath(env)}" "${TGT[0].parent.abspath(env)}" "${COMPILE_ET}" "${SRC[0].abspath(env)}" ${TGT[0].bldpath(env)}',
|
|
ext_out = '.c',
|
|
before = 'cc',
|
|
on_results = True,
|
|
shell = True,
|
|
source = sources,
|
|
target = out_files,
|
|
depends_on = deps,
|
|
name = name)
|
|
|
|
def HEIMDAL_AUTOPROTO(header, source, options=None, group='prototypes'):
|
|
'''rule for heimdal prototype generation'''
|
|
header = heimdal_path(header)
|
|
bld.set_group(group)
|
|
if options is None:
|
|
options='-q -P comment -o'
|
|
SET_TARGET_TYPE(bld, header, 'PROTOTYPE')
|
|
source = heimdal_paths(source)
|
|
t = bld(rule='${PERL} "${HEIMDAL}/cf/make-proto.pl" ${OPTIONS} "${TGT[0].abspath(env)}" ${SRC}',
|
|
source=source,
|
|
target=header,
|
|
on_results=True,
|
|
ext_out='.c',
|
|
before='cc')
|
|
t.env.HEIMDAL = os.path.join(bld.srcnode.abspath(), 'source4/heimdal')
|
|
t.env.OPTIONS = options
|
|
|
|
|
|
def HEIMDAL_AUTOPROTO_PRIVATE(header, source):
|
|
'''rule for private heimdal prototype generation'''
|
|
HEIMDAL_AUTOPROTO(header, source, options='-q -P comment -p')
|
|
|
|
|
|
def HEIMDAL_GENERATOR(name, rule, source='', target='',
|
|
group='generators'):
|
|
'''A generic source generator target'''
|
|
|
|
if not SET_TARGET_TYPE(bld, name, 'GENERATOR'):
|
|
return
|
|
|
|
bld.set_group(group)
|
|
return bld(
|
|
rule=rule,
|
|
source=source,
|
|
target=target,
|
|
shell=isinstance(rule, str),
|
|
on_results=True,
|
|
before='cc',
|
|
ext_out='.c',
|
|
vars=[rule],
|
|
samba_type='GENERATOR',
|
|
name=name)
|
|
|
|
|
|
def HEIMDAL_LIBRARY(libname, source, deps, vnum, version_script, includes=''):
|
|
'''define a Heimdal library'''
|
|
|
|
obj_target = libname + '.objlist'
|
|
|
|
# first create a target for building the object files for this library
|
|
# by separating in this way, we avoid recompiling the C files
|
|
# separately for the install library and the build library
|
|
HEIMDAL_SUBSYSTEM(obj_target,
|
|
source = source,
|
|
deps = deps,
|
|
includes = includes,
|
|
group = 'main')
|
|
|
|
if not SET_TARGET_TYPE(bld, libname, "LIBRARY"):
|
|
return
|
|
|
|
# the library itself will depend on that object target
|
|
deps = to_list(deps)
|
|
deps.append(obj_target)
|
|
|
|
ldflags = []
|
|
|
|
# FIXME: When building upstream heimdal, we should not be adding this
|
|
# suffix.
|
|
bundled_build = True
|
|
if bundled_build:
|
|
bundled_name = libname + '-samba4'
|
|
else:
|
|
bundled_name = libname
|
|
version = "%s_%s" % (Utils.g_module.APPNAME, Utils.g_module.VERSION)
|
|
|
|
features = 'cc cshlib symlink_lib install_lib'
|
|
|
|
bld.set_group('main')
|
|
t = bld(
|
|
features = features,
|
|
source = [],
|
|
target = bundled_name,
|
|
samba_deps = deps,
|
|
samba_includes = includes,
|
|
vnum = vnum,
|
|
install_path = None,
|
|
name = libname,
|
|
ldflags = ldflags,
|
|
vars = [version],
|
|
private_library = bundled_build,
|
|
version_script = heimdal_path(version_script, absolute=True),
|
|
)
|
|
|
|
|
|
def HEIMDAL_SUBSYSTEM(modname, source,
|
|
deps='',
|
|
includes='',
|
|
cflags='',
|
|
group='main',
|
|
use_hostcc=False,
|
|
use_global_deps=True):
|
|
'''define a Heimdal subsystem'''
|
|
|
|
if not SET_TARGET_TYPE(bld, modname, 'SUBSYSTEM'):
|
|
return
|
|
|
|
source = heimdal_paths(source)
|
|
|
|
bld.set_group(group)
|
|
|
|
return bld(
|
|
features = 'cc',
|
|
source = source,
|
|
target = modname,
|
|
samba_cflags = CURRENT_CFLAGS(bld, modname, cflags),
|
|
depends_on = '',
|
|
samba_deps = to_list(deps),
|
|
samba_includes = includes,
|
|
local_include = True,
|
|
local_include_first = True,
|
|
samba_use_hostcc = use_hostcc,
|
|
samba_use_global_deps = use_global_deps
|
|
)
|
|
|
|
|
|
def HEIMDAL_BINARY(binname, source,
|
|
deps='',
|
|
includes='',
|
|
cflags='',
|
|
use_hostcc=False,
|
|
use_global_deps=True,
|
|
compiler=None,
|
|
group='main',
|
|
install=True,
|
|
install_path=None):
|
|
'''define a Samba binary'''
|
|
|
|
if not SET_TARGET_TYPE(bld, binname, 'BINARY'):
|
|
return
|
|
|
|
features = 'cc cprogram symlink_bin install_bin'
|
|
|
|
obj_target = binname + '.objlist'
|
|
|
|
if group == 'binaries':
|
|
subsystem_group = 'main'
|
|
else:
|
|
subsystem_group = group
|
|
|
|
# first create a target for building the object files for this binary
|
|
# by separating in this way, we avoid recompiling the C files
|
|
# separately for the install binary and the build binary
|
|
HEIMDAL_SUBSYSTEM(obj_target,
|
|
source = source,
|
|
deps = deps,
|
|
includes = includes,
|
|
cflags = cflags,
|
|
group = subsystem_group,
|
|
use_hostcc = use_hostcc,
|
|
use_global_deps= use_global_deps)
|
|
|
|
bld.set_group(group)
|
|
|
|
# the binary itself will depend on that object target
|
|
deps = to_list(deps)
|
|
deps.append(obj_target)
|
|
|
|
t = bld(
|
|
features = features,
|
|
source = [],
|
|
target = binname,
|
|
samba_deps = deps,
|
|
samba_includes = includes,
|
|
local_include = True,
|
|
top = True,
|
|
install_path = None,
|
|
samba_install = install
|
|
)
|
|
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_ROKEN'):
|
|
|
|
if not bld.CONFIG_SET('HAVE_IFADDRS_H'):
|
|
HEIMDAL_GENERATOR(
|
|
name="HEIMDAL_IFADDRS_H",
|
|
rule="rm -f ${TGT} && ln ${SRC} ${TGT}",
|
|
source = 'ifaddrs.hin',
|
|
target = 'ifaddrs.h',
|
|
)
|
|
|
|
if not bld.CONFIG_SET('HAVE_ERR_H'):
|
|
HEIMDAL_GENERATOR(
|
|
group='build_compiler_source',
|
|
name="HEIMDAL_ERR_H",
|
|
rule="rm -f ${TGT} && ln ${SRC} ${TGT}",
|
|
source = '../heimdal/lib/roken/err.hin',
|
|
target = '../heimdal/lib/roken/err.h',
|
|
)
|
|
|
|
ROKEN_HOSTCC_SOURCE = '''
|
|
lib/roken/base64.c
|
|
lib/roken/ct.c
|
|
lib/roken/hex.c
|
|
lib/roken/bswap.c
|
|
lib/roken/dumpdata.c
|
|
lib/roken/emalloc.c
|
|
lib/roken/ecalloc.c
|
|
lib/roken/getarg.c
|
|
lib/roken/get_window_size.c
|
|
lib/roken/getdtablesize.c
|
|
lib/roken/h_errno.c
|
|
lib/roken/issuid.c
|
|
lib/roken/net_read.c
|
|
lib/roken/net_write.c
|
|
lib/roken/parse_time.c
|
|
lib/roken/parse_units.c
|
|
lib/roken/vis.c
|
|
lib/roken/strlwr.c
|
|
lib/roken/strsep_copy.c
|
|
lib/roken/strsep.c
|
|
lib/roken/strupr.c
|
|
lib/roken/strpool.c
|
|
lib/roken/estrdup.c
|
|
lib/roken/erealloc.c
|
|
lib/roken/simple_exec.c
|
|
lib/roken/strcollect.c
|
|
lib/roken/rtbl.c
|
|
lib/roken/rand.c
|
|
lib/roken/cloexec.c
|
|
lib/roken/xfree.c
|
|
../heimdal_build/replace.c
|
|
'''
|
|
|
|
if not bld.CONFIG_SET('HAVE_CLOSEFROM'):
|
|
ROKEN_HOSTCC_SOURCE += '''
|
|
lib/roken/closefrom.c
|
|
'''
|
|
|
|
ROKEN_SOURCE = ROKEN_HOSTCC_SOURCE + '''
|
|
lib/roken/resolve.c
|
|
lib/roken/socket.c
|
|
lib/roken/roken_gethostby.c
|
|
lib/roken/strerror_r.c
|
|
'''
|
|
|
|
HEIMDAL_LIBRARY('roken',
|
|
ROKEN_SOURCE,
|
|
includes='../heimdal/lib/roken ../heimdal/include',
|
|
deps='resolv util replace',
|
|
vnum='19.0.1',
|
|
version_script='lib/roken/version-script.map',
|
|
)
|
|
|
|
HEIMDAL_SUBSYSTEM('ROKEN_HOSTCC',
|
|
ROKEN_HOSTCC_SOURCE,
|
|
use_hostcc=True,
|
|
use_global_deps=False,
|
|
includes='../heimdal/lib/roken',
|
|
cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
|
|
group='compiler_libraries',
|
|
deps='LIBREPLACE_HOSTCC',
|
|
)
|
|
|
|
HEIMDAL_BINARY('rkpty', 'lib/roken/rkpty.c',
|
|
deps='roken',
|
|
install=False
|
|
)
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_KDC"):
|
|
HEIMDAL_ASN1('HEIMDAL_KX509_ASN1',
|
|
'lib/asn1/kx509.asn1',
|
|
directory='lib/asn1'
|
|
)
|
|
HEIMDAL_ASN1('HEIMDAL_DIGEST_ASN1',
|
|
'lib/asn1/digest.asn1',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
KDC_SOURCE='kdc/default_config.c kdc/kerberos5.c kdc/krb5tgs.c kdc/pkinit.c kdc/log.c kdc/misc.c kdc/digest.c kdc/process.c kdc/windc.c kdc/kx509.c'
|
|
|
|
HEIMDAL_LIBRARY('kdc', source=KDC_SOURCE,
|
|
includes='../heimdal/kdc',
|
|
deps='roken krb5 hdb asn1 HEIMDAL_DIGEST_ASN1 HEIMDAL_KX509_ASN1 heimntlm hcrypto com_err wind heimbase',
|
|
vnum='2.0.0',
|
|
version_script='kdc/version-script.map')
|
|
HEIMDAL_AUTOPROTO('kdc/kdc-protos.h', KDC_SOURCE)
|
|
HEIMDAL_AUTOPROTO_PRIVATE('kdc/kdc-private.h', KDC_SOURCE)
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_HEIMNTLM"):
|
|
HEIMDAL_ERRTABLE('HEIMNTLM_ET',
|
|
'lib/ntlm/ntlm_err.et')
|
|
|
|
HEIMNTLM_SOURCE = 'lib/ntlm/ntlm.c'
|
|
HEIMDAL_LIBRARY('heimntlm',
|
|
source=HEIMNTLM_SOURCE,
|
|
includes='../heimdal/lib/ntlm',
|
|
deps='roken hcrypto krb5',
|
|
vnum='1.0.1',
|
|
version_script='lib/ntlm/version-script.map',
|
|
)
|
|
HEIMDAL_AUTOPROTO('lib/ntlm/heimntlm-protos.h', HEIMNTLM_SOURCE)
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_HDB"):
|
|
HEIMDAL_ASN1('HEIMDAL_HDB_ASN1', 'lib/hdb/hdb.asn1',
|
|
directory='lib/asn1',
|
|
options="--sequence=HDB-Ext-KeySet --sequence=Keys",
|
|
includes='../heimdal/lib/asn1')
|
|
|
|
HEIMDAL_SUBSYSTEM('HEIMDAL_HDB_KEYS',
|
|
'lib/hdb/keys.c',
|
|
includes='../heimdal/lib/hdb',
|
|
deps='roken hcrypto krb5 HEIMDAL_HDB_ASN1'
|
|
)
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_HDB_ERR_ET', 'lib/hdb/hdb_err.et')
|
|
|
|
HDB_SOURCE = '''lib/hdb/db.c lib/hdb/dbinfo.c lib/hdb/hdb.c
|
|
lib/hdb/ext.c lib/hdb/keytab.c lib/hdb/hdb-keytab.c
|
|
lib/hdb/mkey.c lib/hdb/ndbm.c lib/hdb/hdb_err.c
|
|
../heimdal_build/hdb-glue.c'''
|
|
|
|
HEIMDAL_LIBRARY('hdb',
|
|
version_script='lib/hdb/version-script.map',
|
|
source=HDB_SOURCE,
|
|
includes='../heimdal/lib/hdb',
|
|
deps='krb5 HEIMDAL_HDB_KEYS roken hcrypto com_err HEIMDAL_HDB_ASN1 wind',
|
|
vnum='11.0.2',
|
|
)
|
|
HEIMDAL_AUTOPROTO('lib/hdb/hdb-protos.h', HDB_SOURCE)
|
|
HEIMDAL_AUTOPROTO_PRIVATE('lib/hdb/hdb-private.h', HDB_SOURCE)
|
|
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_GSSAPI"):
|
|
HEIMDAL_ERRTABLE('HEIMDAL_GKRB5_ERR_ET', 'lib/gssapi/krb5/gkrb5_err.et')
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_GSSAPI_ASN1',
|
|
'lib/gssapi/mech/gssapi.asn1',
|
|
includes='../heimdal/lib/asn1',
|
|
directory='lib/gssapi'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_SPNEGO_ASN1',
|
|
source='lib/gssapi/spnego/spnego.asn1',
|
|
options='--sequence=MechTypeList',
|
|
includes='../heimdal/lib/asn1',
|
|
directory='lib/gssapi'
|
|
)
|
|
|
|
HEIMDAL_GSSAPI_SPNEGO_SOURCE = '''
|
|
lib/gssapi/spnego/init_sec_context.c
|
|
lib/gssapi/spnego/external.c
|
|
lib/gssapi/spnego/compat.c
|
|
lib/gssapi/spnego/context_stubs.c
|
|
lib/gssapi/spnego/cred_stubs.c
|
|
lib/gssapi/spnego/accept_sec_context.c
|
|
'''
|
|
|
|
HEIMDAL_AUTOPROTO_PRIVATE('lib/gssapi/spnego/spnego-private.h',
|
|
HEIMDAL_GSSAPI_SPNEGO_SOURCE)
|
|
|
|
HEIMDAL_GSSAPI_KRB5_SOURCE = '''
|
|
lib/gssapi/krb5/copy_ccache.c
|
|
lib/gssapi/krb5/delete_sec_context.c
|
|
lib/gssapi/krb5/init_sec_context.c
|
|
lib/gssapi/krb5/context_time.c
|
|
lib/gssapi/krb5/init.c
|
|
lib/gssapi/krb5/address_to_krb5addr.c
|
|
lib/gssapi/krb5/get_mic.c
|
|
lib/gssapi/krb5/inquire_context.c
|
|
lib/gssapi/krb5/add_cred.c
|
|
lib/gssapi/krb5/inquire_cred.c
|
|
lib/gssapi/krb5/inquire_cred_by_oid.c
|
|
lib/gssapi/krb5/inquire_cred_by_mech.c
|
|
lib/gssapi/krb5/inquire_mechs_for_name.c
|
|
lib/gssapi/krb5/inquire_names_for_mech.c
|
|
lib/gssapi/krb5/indicate_mechs.c
|
|
lib/gssapi/krb5/inquire_sec_context_by_oid.c
|
|
lib/gssapi/krb5/export_sec_context.c
|
|
lib/gssapi/krb5/import_sec_context.c
|
|
lib/gssapi/krb5/duplicate_name.c
|
|
lib/gssapi/krb5/import_name.c
|
|
lib/gssapi/krb5/compare_name.c
|
|
lib/gssapi/krb5/export_name.c
|
|
lib/gssapi/krb5/canonicalize_name.c
|
|
lib/gssapi/krb5/unwrap.c
|
|
lib/gssapi/krb5/wrap.c
|
|
lib/gssapi/krb5/release_name.c
|
|
lib/gssapi/krb5/cfx.c
|
|
lib/gssapi/krb5/8003.c
|
|
lib/gssapi/krb5/arcfour.c
|
|
lib/gssapi/krb5/encapsulate.c
|
|
lib/gssapi/krb5/display_name.c
|
|
lib/gssapi/krb5/sequence.c
|
|
lib/gssapi/krb5/display_status.c
|
|
lib/gssapi/krb5/release_buffer.c
|
|
lib/gssapi/krb5/external.c
|
|
lib/gssapi/krb5/compat.c
|
|
lib/gssapi/krb5/creds.c
|
|
lib/gssapi/krb5/acquire_cred.c
|
|
lib/gssapi/krb5/release_cred.c
|
|
lib/gssapi/krb5/store_cred.c
|
|
lib/gssapi/krb5/set_cred_option.c
|
|
lib/gssapi/krb5/decapsulate.c
|
|
lib/gssapi/krb5/verify_mic.c
|
|
lib/gssapi/krb5/accept_sec_context.c
|
|
lib/gssapi/krb5/set_sec_context_option.c
|
|
lib/gssapi/krb5/process_context_token.c
|
|
lib/gssapi/krb5/prf.c
|
|
lib/gssapi/krb5/aeap.c
|
|
lib/gssapi/krb5/pname_to_uid.c
|
|
lib/gssapi/krb5/authorize_localname.c
|
|
'''
|
|
|
|
HEIMDAL_AUTOPROTO_PRIVATE('lib/gssapi/krb5/gsskrb5-private.h',
|
|
HEIMDAL_GSSAPI_KRB5_SOURCE)
|
|
|
|
HEIMDAL_LIBRARY('gssapi',
|
|
HEIMDAL_GSSAPI_SPNEGO_SOURCE + HEIMDAL_GSSAPI_KRB5_SOURCE + '''
|
|
lib/gssapi/mech/context.c lib/gssapi/mech/gss_krb5.c lib/gssapi/mech/gss_mech_switch.c
|
|
lib/gssapi/mech/gss_process_context_token.c lib/gssapi/mech/gss_buffer_set.c
|
|
lib/gssapi/mech/gss_aeap.c lib/gssapi/mech/gss_add_cred.c lib/gssapi/mech/gss_cred.c
|
|
lib/gssapi/mech/gss_add_oid_set_member.c lib/gssapi/mech/gss_compare_name.c lib/gssapi/mech/gss_release_oid_set.c
|
|
lib/gssapi/mech/gss_create_empty_oid_set.c lib/gssapi/mech/gss_decapsulate_token.c lib/gssapi/mech/gss_inquire_cred_by_oid.c
|
|
lib/gssapi/mech/gss_canonicalize_name.c lib/gssapi/mech/gss_inquire_sec_context_by_oid.c lib/gssapi/mech/gss_inquire_names_for_mech.c
|
|
lib/gssapi/mech/gss_inquire_mechs_for_name.c lib/gssapi/mech/gss_wrap_size_limit.c lib/gssapi/mech/gss_names.c
|
|
lib/gssapi/mech/gss_verify.c lib/gssapi/mech/gss_display_name.c
|
|
lib/gssapi/mech/gss_duplicate_oid.c lib/gssapi/mech/gss_display_status.c lib/gssapi/mech/gss_release_buffer.c
|
|
lib/gssapi/mech/gss_release_oid.c lib/gssapi/mech/gss_test_oid_set_member.c
|
|
lib/gssapi/mech/gss_release_cred.c
|
|
lib/gssapi/mech/gss_set_sec_context_option.c lib/gssapi/mech/gss_export_name.c lib/gssapi/mech/gss_seal.c
|
|
lib/gssapi/mech/gss_acquire_cred.c lib/gssapi/mech/gss_unseal.c lib/gssapi/mech/gss_verify_mic.c
|
|
lib/gssapi/mech/gss_accept_sec_context.c lib/gssapi/mech/gss_inquire_cred_by_mech.c lib/gssapi/mech/gss_indicate_mechs.c
|
|
lib/gssapi/mech/gss_delete_sec_context.c lib/gssapi/mech/gss_sign.c lib/gssapi/mech/gss_utils.c
|
|
lib/gssapi/mech/gss_init_sec_context.c lib/gssapi/mech/gss_oid_equal.c lib/gssapi/mech/gss_oid.c
|
|
lib/gssapi/mech/gss_oid_to_str.c lib/gssapi/mech/gss_mo.c
|
|
lib/gssapi/mech/gss_context_time.c lib/gssapi/mech/gss_encapsulate_token.c lib/gssapi/mech/gss_get_mic.c
|
|
lib/gssapi/mech/gss_import_sec_context.c lib/gssapi/mech/gss_inquire_cred.c lib/gssapi/mech/gss_wrap.c
|
|
lib/gssapi/mech/gss_import_name.c lib/gssapi/mech/gss_duplicate_name.c lib/gssapi/mech/gss_unwrap.c
|
|
lib/gssapi/mech/gss_export_sec_context.c lib/gssapi/mech/gss_inquire_context.c lib/gssapi/mech/gss_release_name.c
|
|
lib/gssapi/mech/gss_set_cred_option.c lib/gssapi/mech/gss_pseudo_random.c ../heimdal_build/gssapi-glue.c''',
|
|
includes='../heimdal/lib/gssapi ../heimdal/lib/gssapi/gssapi ../heimdal/lib/gssapi/spnego ../heimdal/lib/gssapi/krb5 ../heimdal/lib/gssapi/mech',
|
|
deps='hcrypto asn1 HEIMDAL_SPNEGO_ASN1 HEIMDAL_GSSAPI_ASN1 roken krb5 com_err wind',
|
|
vnum='2.0.0',
|
|
version_script='lib/gssapi/version-script.map',
|
|
)
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_KRB5"):
|
|
# expand_path.c needs some of the install paths
|
|
HEIMDAL_SUBSYSTEM('HEIMDAL_CONFIG',
|
|
'lib/krb5/expand_path.c lib/krb5/plugin.c lib/krb5/context.c',
|
|
includes='../heimdal/lib/krb5 ../heimdal/lib/asn1 ../heimdal/include',
|
|
cflags=bld.dynconfig_cflags('LIBDIR BINDIR LIBEXECDIR SBINDIR'),
|
|
deps='hcrypto heimbase wind hx509 com_err'
|
|
)
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_KRB5_ERR_ET', 'lib/krb5/krb5_err.et')
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_KRB_ERR_ET', 'lib/krb5/krb_err.et')
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_K524_ERR_ET', 'lib/krb5/k524_err.et')
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_HEIM_ERR_ET', 'lib/krb5/heim_err.et')
|
|
|
|
KRB5_SOURCE = [os.path.join('lib/krb5/', x) for x in to_list(
|
|
'''acache.c add_et_list.c
|
|
addr_families.c appdefault.c
|
|
asn1_glue.c auth_context.c
|
|
build_ap_req.c build_auth.c cache.c
|
|
changepw.c codec.c config_file.c
|
|
constants.c convert_creds.c
|
|
copy_host_realm.c crc.c creds.c
|
|
crypto.c crypto-aes.c crypto-algs.c
|
|
crypto-arcfour.c crypto-des3.c crypto-des.c
|
|
crypto-des-common.c crypto-evp.c
|
|
crypto-null.c crypto-pk.c crypto-rand.c
|
|
data.c eai_to_heim_errno.c
|
|
error_string.c expand_hostname.c
|
|
fcache.c free.c free_host_realm.c
|
|
generate_seq_number.c generate_subkey.c
|
|
get_addrs.c get_cred.c
|
|
get_default_principal.c
|
|
get_default_realm.c get_for_creds.c
|
|
get_host_realm.c get_in_tkt.c
|
|
get_port.c init_creds.c init_creds_pw.c
|
|
kcm.c keyblock.c keytab.c keytab_any.c
|
|
keytab_file.c keytab_memory.c
|
|
keytab_keyfile.c krbhst.c log.c
|
|
mcache.c misc.c mk_error.c mk_priv.c
|
|
mk_rep.c mk_req.c mk_req_ext.c
|
|
mit_glue.c n-fold.c padata.c pkinit.c
|
|
principal.c prog_setup.c pac.c
|
|
pcache.c prompter_posix.c rd_cred.c rd_error.c
|
|
rd_priv.c rd_rep.c rd_req.c replay.c
|
|
salt.c salt-aes.c salt-arcfour.c salt-des3.c salt-des.c
|
|
send_to_kdc.c set_default_realm.c
|
|
store.c store-int.c store_emem.c store_fd.c
|
|
store_mem.c ticket.c time.c transited.c
|
|
version.c warn.c krb5_err.c
|
|
aname_to_localname.c kuserok.c
|
|
heim_err.c k524_err.c krb_err.c''')] + ["../heimdal_build/krb5-glue.c"]
|
|
|
|
HEIMDAL_LIBRARY('krb5', KRB5_SOURCE,
|
|
version_script='lib/krb5/version-script.map',
|
|
includes='../heimdal/lib/krb5 ../heimdal/lib/asn1 ../heimdal/include',
|
|
deps='roken wind asn1 hx509 hcrypto intl com_err HEIMDAL_CONFIG heimbase execinfo',
|
|
vnum='26.0.0',
|
|
)
|
|
KRB5_PROTO_SOURCE = KRB5_SOURCE + ['lib/krb5/expand_path.c', 'lib/krb5/plugin.c', 'lib/krb5/context.c']
|
|
|
|
HEIMDAL_AUTOPROTO_PRIVATE('lib/krb5/krb5-private.h', KRB5_PROTO_SOURCE)
|
|
HEIMDAL_AUTOPROTO('lib/krb5/krb5-protos.h', KRB5_PROTO_SOURCE,
|
|
options='-E KRB5_LIB -q -P comment -o')
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_ASN1"):
|
|
HEIMDAL_HEIM_ASN1_DER_SOURCE = '''
|
|
lib/asn1/der_get.c
|
|
lib/asn1/der_put.c
|
|
lib/asn1/der_free.c
|
|
lib/asn1/der_format.c
|
|
lib/asn1/der_length.c
|
|
lib/asn1/der_copy.c
|
|
lib/asn1/der_cmp.c
|
|
'''
|
|
|
|
HEIMDAL_AUTOPROTO('lib/asn1/der-protos.h',
|
|
HEIMDAL_HEIM_ASN1_DER_SOURCE,
|
|
group = 'compiler_prototypes',
|
|
options="-q -P comment -o")
|
|
|
|
|
|
HEIMDAL_AUTOPROTO('lib/asn1/der-private.h',
|
|
HEIMDAL_HEIM_ASN1_DER_SOURCE,
|
|
group = 'compiler_prototypes',
|
|
options="-q -P comment -p")
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_ASN1_ERR_ET', 'lib/asn1/asn1_err.et')
|
|
|
|
HEIMDAL_SUBSYSTEM('HEIMDAL_HEIM_ASN1',
|
|
HEIMDAL_HEIM_ASN1_DER_SOURCE + 'lib/asn1/extra.c lib/asn1/timegm.c lib/asn1/asn1_err.c',
|
|
includes='../heimdal/lib/asn1',
|
|
deps='roken com_err'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_RFC2459_ASN1',
|
|
'lib/asn1/rfc2459.asn1',
|
|
options='--preserve-binary=TBSCertificate --preserve-binary=TBSCRLCertList --preserve-binary=Name --sequence=GeneralNames --sequence=Extensions --sequence=CRLDistributionPoints',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_KRB5_ASN1',
|
|
'lib/asn1/krb5.asn1',
|
|
option_file='lib/asn1/krb5.opt',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_PKINIT_ASN1',
|
|
'lib/asn1/pkinit.asn1',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_CMS_ASN1',
|
|
'lib/asn1/cms.asn1',
|
|
option_file='lib/asn1/cms.opt',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
HEIMDAL_LIBRARY('asn1',
|
|
version_script='lib/asn1/version-script.map',
|
|
deps="HEIMDAL_HEIM_ASN1 HEIMDAL_RFC2459_ASN1 HEIMDAL_KRB5_ASN1 HEIMDAL_PKINIT_ASN1 HEIMDAL_CMS_ASN1",
|
|
source='',
|
|
vnum='8.0.0')
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_HCRYPTO'):
|
|
if not bld.CONFIG_SET("USING_SYSTEM_TOMMATH"):
|
|
HEIMDAL_SUBSYSTEM('tommath',
|
|
'lib/hcrypto/libtommath/bncore.c lib/hcrypto/libtommath/bn_mp_init.c lib/hcrypto/libtommath/bn_mp_clear.c lib/hcrypto/libtommath/bn_mp_exch.c lib/hcrypto/libtommath/bn_mp_grow.c lib/hcrypto/libtommath/bn_mp_shrink.c lib/hcrypto/libtommath/bn_mp_clamp.c lib/hcrypto/libtommath/bn_mp_zero.c lib/hcrypto/libtommath/bn_mp_zero_multi.c lib/hcrypto/libtommath/bn_mp_set.c lib/hcrypto/libtommath/bn_mp_set_int.c lib/hcrypto/libtommath/bn_mp_init_size.c lib/hcrypto/libtommath/bn_mp_copy.c lib/hcrypto/libtommath/bn_mp_init_copy.c lib/hcrypto/libtommath/bn_mp_abs.c lib/hcrypto/libtommath/bn_mp_neg.c lib/hcrypto/libtommath/bn_mp_cmp_mag.c lib/hcrypto/libtommath/bn_mp_cmp.c lib/hcrypto/libtommath/bn_mp_cmp_d.c lib/hcrypto/libtommath/bn_mp_rshd.c lib/hcrypto/libtommath/bn_mp_lshd.c lib/hcrypto/libtommath/bn_mp_mod_2d.c lib/hcrypto/libtommath/bn_mp_div_2d.c lib/hcrypto/libtommath/bn_mp_mul_2d.c lib/hcrypto/libtommath/bn_mp_div_2.c lib/hcrypto/libtommath/bn_mp_mul_2.c lib/hcrypto/libtommath/bn_s_mp_add.c lib/hcrypto/libtommath/bn_s_mp_sub.c lib/hcrypto/libtommath/bn_fast_s_mp_mul_digs.c lib/hcrypto/libtommath/bn_s_mp_mul_digs.c lib/hcrypto/libtommath/bn_fast_s_mp_mul_high_digs.c lib/hcrypto/libtommath/bn_s_mp_mul_high_digs.c lib/hcrypto/libtommath/bn_fast_s_mp_sqr.c lib/hcrypto/libtommath/bn_s_mp_sqr.c lib/hcrypto/libtommath/bn_mp_add.c lib/hcrypto/libtommath/bn_mp_sub.c lib/hcrypto/libtommath/bn_mp_karatsuba_mul.c lib/hcrypto/libtommath/bn_mp_mul.c lib/hcrypto/libtommath/bn_mp_karatsuba_sqr.c lib/hcrypto/libtommath/bn_mp_sqr.c lib/hcrypto/libtommath/bn_mp_div.c lib/hcrypto/libtommath/bn_mp_mod.c lib/hcrypto/libtommath/bn_mp_add_d.c lib/hcrypto/libtommath/bn_mp_sub_d.c lib/hcrypto/libtommath/bn_mp_mul_d.c lib/hcrypto/libtommath/bn_mp_div_d.c lib/hcrypto/libtommath/bn_mp_mod_d.c lib/hcrypto/libtommath/bn_mp_expt_d.c lib/hcrypto/libtommath/bn_mp_addmod.c lib/hcrypto/libtommath/bn_mp_submod.c lib/hcrypto/libtommath/bn_mp_mulmod.c lib/hcrypto/libtommath/bn_mp_sqrmod.c lib/hcrypto/libtommath/bn_mp_gcd.c lib/hcrypto/libtommath/bn_mp_lcm.c lib/hcrypto/libtommath/bn_fast_mp_invmod.c lib/hcrypto/libtommath/bn_mp_invmod.c lib/hcrypto/libtommath/bn_mp_reduce.c lib/hcrypto/libtommath/bn_mp_montgomery_setup.c lib/hcrypto/libtommath/bn_fast_mp_montgomery_reduce.c lib/hcrypto/libtommath/bn_mp_montgomery_reduce.c lib/hcrypto/libtommath/bn_mp_exptmod_fast.c lib/hcrypto/libtommath/bn_mp_exptmod.c lib/hcrypto/libtommath/bn_mp_2expt.c lib/hcrypto/libtommath/bn_mp_n_root.c lib/hcrypto/libtommath/bn_mp_jacobi.c lib/hcrypto/libtommath/bn_reverse.c lib/hcrypto/libtommath/bn_mp_count_bits.c lib/hcrypto/libtommath/bn_mp_read_unsigned_bin.c lib/hcrypto/libtommath/bn_mp_read_signed_bin.c lib/hcrypto/libtommath/bn_mp_to_unsigned_bin.c lib/hcrypto/libtommath/bn_mp_to_signed_bin.c lib/hcrypto/libtommath/bn_mp_unsigned_bin_size.c lib/hcrypto/libtommath/bn_mp_signed_bin_size.c lib/hcrypto/libtommath/bn_mp_xor.c lib/hcrypto/libtommath/bn_mp_and.c lib/hcrypto/libtommath/bn_mp_or.c lib/hcrypto/libtommath/bn_mp_rand.c lib/hcrypto/libtommath/bn_mp_montgomery_calc_normalization.c lib/hcrypto/libtommath/bn_mp_prime_is_divisible.c lib/hcrypto/libtommath/bn_prime_tab.c lib/hcrypto/libtommath/bn_mp_prime_fermat.c lib/hcrypto/libtommath/bn_mp_prime_miller_rabin.c lib/hcrypto/libtommath/bn_mp_prime_is_prime.c lib/hcrypto/libtommath/bn_mp_prime_next_prime.c lib/hcrypto/libtommath/bn_mp_find_prime.c lib/hcrypto/libtommath/bn_mp_isprime.c lib/hcrypto/libtommath/bn_mp_dr_reduce.c lib/hcrypto/libtommath/bn_mp_dr_is_modulus.c lib/hcrypto/libtommath/bn_mp_dr_setup.c lib/hcrypto/libtommath/bn_mp_reduce_setup.c lib/hcrypto/libtommath/bn_mp_toom_mul.c lib/hcrypto/libtommath/bn_mp_toom_sqr.c lib/hcrypto/libtommath/bn_mp_div_3.c lib/hcrypto/libtommath/bn_s_mp_exptmod.c lib/hcrypto/libtommath/bn_mp_reduce_2k.c lib/hcrypto/libtommath/bn_mp_reduce_is_2k.c lib/hcrypto/libtommath/bn_mp_reduce_2k_setup.c lib/hcrypto/libtommath/bn_mp_reduce_2k_l.c lib/hcrypto/libtommath/bn_mp_reduce_is_2k_l.c lib/hcrypto/libtommath/bn_mp_reduce_2k_setup_l.c lib/hcrypto/libtommath/bn_mp_radix_smap.c lib/hcrypto/libtommath/bn_mp_read_radix.c lib/hcrypto/libtommath/bn_mp_toradix.c lib/hcrypto/libtommath/bn_mp_radix_size.c lib/hcrypto/libtommath/bn_mp_fread.c lib/hcrypto/libtommath/bn_mp_fwrite.c lib/hcrypto/libtommath/bn_mp_cnt_lsb.c lib/hcrypto/libtommath/bn_error.c lib/hcrypto/libtommath/bn_mp_init_multi.c lib/hcrypto/libtommath/bn_mp_clear_multi.c lib/hcrypto/libtommath/bn_mp_exteuclid.c lib/hcrypto/libtommath/bn_mp_toradix_n.c lib/hcrypto/libtommath/bn_mp_prime_random_ex.c lib/hcrypto/libtommath/bn_mp_get_int.c lib/hcrypto/libtommath/bn_mp_sqrt.c lib/hcrypto/libtommath/bn_mp_is_square.c lib/hcrypto/libtommath/bn_mp_init_set.c lib/hcrypto/libtommath/bn_mp_init_set_int.c lib/hcrypto/libtommath/bn_mp_invmod_slow.c lib/hcrypto/libtommath/bn_mp_prime_rabin_miller_trials.c lib/hcrypto/libtommath/bn_mp_to_signed_bin_n.c lib/hcrypto/libtommath/bn_mp_to_unsigned_bin_n.c',
|
|
includes='../heimdal/lib/hcrypto/libtommath'
|
|
)
|
|
|
|
HEIMDAL_LIBRARY('hcrypto',
|
|
'lib/hcrypto/aes.c lib/hcrypto/bn.c lib/hcrypto/dh.c lib/hcrypto/dh-ltm.c lib/hcrypto/des.c lib/hcrypto/dsa.c lib/hcrypto/engine.c lib/hcrypto/md2.c lib/hcrypto/md4.c lib/hcrypto/md5.c lib/hcrypto/rsa.c lib/hcrypto/rsa-ltm.c lib/hcrypto/rc2.c lib/hcrypto/rc4.c lib/hcrypto/rijndael-alg-fst.c lib/hcrypto/rnd_keys.c lib/hcrypto/sha.c lib/hcrypto/sha256.c lib/hcrypto/sha512.c lib/hcrypto/ui.c lib/hcrypto/evp.c lib/hcrypto/evp-hcrypto.c lib/hcrypto/pkcs5.c lib/hcrypto/pkcs12.c lib/hcrypto/rand.c lib/hcrypto/rand-egd.c lib/hcrypto/rand-unix.c lib/hcrypto/rand-fortuna.c lib/hcrypto/rand-timer.c lib/hcrypto/hmac.c lib/hcrypto/camellia.c lib/hcrypto/camellia-ntt.c lib/hcrypto/common.c lib/hcrypto/validate.c',
|
|
includes='../heimdal/lib/hcrypto ../heimdal/lib ../heimdal/include',
|
|
deps='roken asn1 tommath replace',
|
|
version_script='lib/hcrypto/version-script.map',
|
|
vnum='5.0.1',
|
|
)
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_HEIMBASE'):
|
|
HEIMDAL_LIBRARY('heimbase',
|
|
'base/array.c base/bool.c base/dict.c base/heimbase.c base/string.c base/number.c base/null.c',
|
|
includes='../heimdal/base ../heimdal/include',
|
|
deps='roken replace',
|
|
version_script='base/version-script.map',
|
|
vnum='1.0.0',
|
|
)
|
|
|
|
|
|
if not bld.CONFIG_SET("USING_SYSTEM_HX509"):
|
|
HEIMDAL_ASN1('HEIMDAL_OCSP_ASN1',
|
|
'lib/hx509/ocsp.asn1',
|
|
options='--preserve-binary=OCSPTBSRequest --preserve-binary=OCSPResponseData',
|
|
includes='../heimdal/lib/asn1',
|
|
directory='lib/hx509'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_PKCS8_ASN1',
|
|
'lib/asn1/pkcs8.asn1',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_PKCS9_ASN1',
|
|
'lib/asn1/pkcs9.asn1',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_PKCS12_ASN1',
|
|
'lib/asn1/pkcs12.asn1',
|
|
directory='lib/asn1'
|
|
)
|
|
|
|
HEIMDAL_ASN1('HEIMDAL_PKCS10_ASN1',
|
|
'lib/hx509/pkcs10.asn1',
|
|
options='--preserve-binary=CertificationRequestInfo',
|
|
includes='../heimdal/lib/asn1',
|
|
directory='lib/hx509'
|
|
)
|
|
|
|
HEIMDAL_ERRTABLE('HEIMDAL_HX509_ERR_ET',
|
|
'lib/hx509/hx509_err.et')
|
|
|
|
HEIMDAL_HX509_OBJH_SOURCE = '''
|
|
lib/hx509/ca.c
|
|
lib/hx509/cert.c
|
|
lib/hx509/cms.c
|
|
lib/hx509/collector.c
|
|
lib/hx509/crypto.c
|
|
lib/hx509/error.c
|
|
lib/hx509/env.c
|
|
lib/hx509/file.c
|
|
lib/hx509/keyset.c
|
|
lib/hx509/ks_dir.c
|
|
lib/hx509/ks_file.c
|
|
lib/hx509/ks_keychain.c
|
|
lib/hx509/ks_mem.c
|
|
lib/hx509/ks_null.c
|
|
lib/hx509/ks_p11.c
|
|
lib/hx509/ks_p12.c
|
|
lib/hx509/lock.c
|
|
lib/hx509/name.c
|
|
lib/hx509/peer.c
|
|
lib/hx509/print.c
|
|
lib/hx509/req.c
|
|
lib/hx509/revoke.c
|
|
lib/hx509/sel.c
|
|
lib/hx509/hx509_err.c
|
|
'''
|
|
|
|
HEIMDAL_AUTOPROTO('lib/hx509/hx509-protos.h',
|
|
HEIMDAL_HX509_OBJH_SOURCE,
|
|
options="-R '^(_|^C)' -E HX509_LIB -q -P comment -o")
|
|
|
|
HEIMDAL_AUTOPROTO('lib/hx509/hx509-private.h',
|
|
HEIMDAL_HX509_OBJH_SOURCE,
|
|
options="-q -P comment -p")
|
|
|
|
HEIMDAL_LIBRARY('hx509',
|
|
'lib/hx509/ca.c lib/hx509/cert.c lib/hx509/cms.c lib/hx509/collector.c lib/hx509/crypto.c lib/hx509/error.c lib/hx509/env.c lib/hx509/file.c lib/hx509/keyset.c lib/hx509/ks_dir.c lib/hx509/ks_file.c lib/hx509/ks_keychain.c lib/hx509/ks_mem.c lib/hx509/ks_null.c lib/hx509/ks_p11.c lib/hx509/ks_p12.c lib/hx509/lock.c lib/hx509/name.c lib/hx509/peer.c lib/hx509/print.c lib/hx509/req.c lib/hx509/revoke.c lib/hx509/sel.c lib/hx509/hx509_err.c lib/hx509/sel-lex.c lib/hx509/sel-gram.c',
|
|
includes='../heimdal/lib/hx509',
|
|
deps='roken com_err asn1 hcrypto asn1 HEIMDAL_OCSP_ASN1 HEIMDAL_PKCS8_ASN1 HEIMDAL_PKCS9_ASN1 HEIMDAL_PKCS12_ASN1 HEIMDAL_PKCS10_ASN1 wind',
|
|
vnum='5.0.0',
|
|
version_script='lib/hx509/version-script.map',
|
|
)
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_WIND'):
|
|
HEIMDAL_ERRTABLE('WIND_ERR_ET',
|
|
'lib/wind/wind_err.et')
|
|
|
|
HEIMDAL_GENERATOR(
|
|
name="HEIMDAL_ERRORLIST",
|
|
rule="${PYTHON} '${SRC[0].abspath()}' '${SRC[1].abspath()}' '${SRC[1].parent.abspath(env)}'",
|
|
source = '../heimdal/lib/wind/gen-errorlist.py ../heimdal/lib/wind/rfc3454.txt ../heimdal/lib/wind/stringprep.py',
|
|
target = '../heimdal/lib/wind/errorlist_table.c ../heimdal/lib/wind/errorlist_table.h'
|
|
)
|
|
|
|
|
|
HEIMDAL_GENERATOR(
|
|
name = 'HEIMDAL_NORMALIZE_TABLE',
|
|
rule="${PYTHON} '${SRC[0].abspath()}' '${SRC[1].abspath()}' '${SRC[2].abspath()}' '${SRC[1].parent.abspath(env)}'",
|
|
source = '../heimdal/lib/wind/gen-normalize.py ../heimdal/lib/wind/UnicodeData.txt ../heimdal/lib/wind/CompositionExclusions-3.2.0.txt',
|
|
target = '../heimdal/lib/wind/normalize_table.h ../heimdal/lib/wind/normalize_table.c'
|
|
)
|
|
|
|
HEIMDAL_GENERATOR(
|
|
name = 'HEIMDAL_COMBINING_TABLE',
|
|
rule="${PYTHON} '${SRC[0].abspath()}' '${SRC[1].abspath()}' '${SRC[1].parent.abspath(env)}'",
|
|
source = '../heimdal/lib/wind/gen-combining.py ../heimdal/lib/wind/UnicodeData.txt',
|
|
target = '../heimdal/lib/wind/combining_table.h ../heimdal/lib/wind/combining_table.c'
|
|
)
|
|
|
|
HEIMDAL_GENERATOR(
|
|
name = 'HEIMDAL_BIDI_TABLE',
|
|
rule="${PYTHON} '${SRC[0].abspath()}' '${SRC[1].abspath()}' '${SRC[1].parent.abspath(env)}'",
|
|
source = '../heimdal/lib/wind/gen-bidi.py ../heimdal/lib/wind/rfc3454.txt',
|
|
target = '../heimdal/lib/wind/bidi_table.h ../heimdal/lib/wind/bidi_table.c'
|
|
)
|
|
|
|
|
|
HEIMDAL_GENERATOR(
|
|
name = 'HEIMDAL_MAP_TABLE',
|
|
rule="${PYTHON} '${SRC[0].abspath()}' '${SRC[2].abspath()}' '${SRC[2].parent.abspath(env)}'",
|
|
source = '../heimdal/lib/wind/gen-map.py ../heimdal/lib/wind/stringprep.py ../heimdal/lib/wind/rfc3454.txt',
|
|
target = '../heimdal/lib/wind/map_table.h ../heimdal/lib/wind/map_table.c'
|
|
)
|
|
|
|
HEIMDAL_LIBRARY('wind',
|
|
'lib/wind/wind_err.c lib/wind/stringprep.c lib/wind/errorlist.c lib/wind/errorlist_table.c lib/wind/normalize.c lib/wind/normalize_table.c lib/wind/combining.c lib/wind/combining_table.c lib/wind/utf8.c lib/wind/bidi.c lib/wind/bidi_table.c lib/wind/ldap.c lib/wind/map.c lib/wind/map_table.c',
|
|
includes='../heimdal/lib/wind',
|
|
deps='roken com_err',
|
|
vnum='0.0.0',
|
|
version_script='lib/wind/version-script.map',
|
|
)
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_COM_ERR'):
|
|
HEIMDAL_LIBRARY('com_err',
|
|
'lib/com_err/com_err.c lib/com_err/error.c',
|
|
includes='../heimdal/lib/com_err',
|
|
deps='roken intl',
|
|
vnum='0.25',
|
|
version_script='lib/com_err/version-script.map',
|
|
)
|
|
|
|
HEIMDAL_SUBSYSTEM('HEIMDAL_VERS_HOSTCC',
|
|
'lib/vers/print_version.c ../heimdal_build/version.c',
|
|
group='build_compilers',
|
|
deps='LIBREPLACE_HOSTCC ROKEN_HOSTCC',
|
|
use_global_deps=False,
|
|
use_hostcc=True)
|
|
|
|
HEIMDAL_SUBSYSTEM('HEIMDAL_VERS',
|
|
'lib/vers/print_version.c ../heimdal_build/version.c',
|
|
group='build_compilers',
|
|
deps='roken replace')
|
|
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_ASN1_COMPILE'):
|
|
# here is the asn1 compiler build rule
|
|
HEIMDAL_BINARY('asn1_compile',
|
|
'lib/asn1/main.c lib/asn1/gen.c lib/asn1/gen_copy.c lib/asn1/gen_decode.c lib/asn1/gen_encode.c lib/asn1/gen_free.c lib/asn1/gen_glue.c lib/asn1/gen_length.c lib/asn1/gen_seq.c lib/asn1/gen_template.c lib/asn1/hash.c lib/asn1/symbol.c lib/asn1/asn1parse.c lib/asn1/lex.c',
|
|
use_hostcc=True,
|
|
use_global_deps=False,
|
|
cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
|
|
includes='../heimdal/lib/asn1',
|
|
group='build_compilers',
|
|
deps='ROKEN_HOSTCC LIBREPLACE_HOSTCC HEIMDAL_VERS_HOSTCC',
|
|
install=False
|
|
)
|
|
bld.env['ASN1_COMPILE'] = os.path.join(bld.env['BUILD_DIRECTORY'], 'asn1_compile')
|
|
|
|
|
|
if not bld.CONFIG_SET('USING_SYSTEM_COMPILE_ET'):
|
|
HEIMDAL_BINARY('compile_et',
|
|
'lib/com_err/parse.c lib/com_err/lex.c lib/com_err/compile_et.c',
|
|
use_hostcc=True,
|
|
use_global_deps=False,
|
|
includes='../heimdal/lib/com_err',
|
|
group='build_compilers',
|
|
cflags='-DSOCKET_WRAPPER_DISABLE=1 -DNSS_WRAPPER_DISABLE=1 -D_SAMBA_HOSTCC_',
|
|
deps='ROKEN_HOSTCC LIBREPLACE_HOSTCC HEIMDAL_VERS_HOSTCC',
|
|
install=False
|
|
)
|
|
bld.env['COMPILE_ET'] = os.path.join(bld.env['BUILD_DIRECTORY'], 'compile_et')
|
|
|
|
HEIMDAL_BINARY('samba4kinit',
|
|
'kuser/kinit.c',
|
|
deps='krb5 heimntlm roken HEIMDAL_VERS hcrypto',
|
|
install=False
|
|
)
|
|
|
|
HEIMDAL_BINARY('samba4kgetcred',
|
|
'kuser/kgetcred.c',
|
|
deps='krb5 heimntlm roken HEIMDAL_VERS hcrypto',
|
|
install=False
|
|
)
|
|
|
|
HEIMDAL_BINARY('samba4kpasswd',
|
|
'kpasswd/kpasswd.c',
|
|
deps='krb5 heimntlm roken HEIMDAL_VERS hcrypto',
|
|
install=False
|
|
)
|
|
|
|
# Alias subsystem to allow common kerberos code that will
|
|
# otherwise link against MIT's gssapi_krb5 and k5crypto
|
|
#
|
|
# Note: that we also need this if we use system heimdal libraries
|
|
HEIMDAL_SUBSYSTEM('gssapi_krb5', '', deps='gssapi')
|
|
HEIMDAL_SUBSYSTEM('k5crypto', '', deps='krb5')
|