mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
f31333d40e
If Samba was configured with "--nonshared-binary=winexe" to build winexe as a static binary, and the replacement closefrom() function was used (which is default on most GNU/Linux systems without the libbsd development package installed), then winexe would fail to link with the error message shown below. [2631/3059] Linking bin/default/examples/winexe/winexe source4/heimdal/lib/roken/closefrom.c.1.o: In function `rep_closefrom': closefrom.c:(.text+0x0): multiple definition of `rep_closefrom' lib/replace/closefrom.c.2.o:closefrom.c:(.text+0x292): first defined here collect2: error: ld returned 1 exit status The real problem here was not with the winexe build itself - that was merely the application that I was attempting to build statically when I encountered it. As Andrew Bartlett very helpfully pointed out to me, this regression was introduced when "lib/replace/closefrom.c" was added in commit55529d0f
and, more to the point, when the heimdal build started using it in commit3a7ebd0e
. From that point on, any time that Samba's embedded copy of heimdal was statically linked into an application, it would fail to link because heimdal's own rep_closefrom() function in its "roken" library would conflict with the rep_closefrom() function in the "replace" library used elsewhere in Samba - a library which the "roken" library itself depends on. To further compound the problem, heimdal's own "roken" library is also compiled for the host (a necessary distinction for cross-compiled builds) and linked into a small number of utility applications used during the heimdal build. However, they can't link directly against the "replace" library, unlike the main "roken" library build which carries that dependency, because the "replace" library is _not_ built for the host. I solved this problem by eliminating heimdal's version of rep_closefrom() and making it use the one from "lib/replace" everywhere. That wasn't a problem for the main heimdal library that is built for the target because it was already linking in "lib/replace" (that's what caused this problem in the first place!), but to solve the aforementioned issue with "lib/replace" not being built for the host, I added "lib/replace/closefrom.c" to the list of "source4/heimdal/lib/roken" sources to be built for the host to satisfy heimdal's host utilities. Everyone wins, I think. Signed-off-by: Karl Lenz <xorangekiller@gmail.com> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
983 lines
42 KiB
Python
983 lines
42 KiB
Python
#!/usr/bin/env python
|
|
|
|
import os
|
|
from waflib import Context
|
|
from samba_utils import SET_TARGET_TYPE
|
|
from samba_autoconf import CURRENT_CFLAGS
|
|
from samba_utils import LOAD_ENVIRONMENT
|
|
|
|
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.path.abspath(), 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)}"'
|
|
env = LOAD_ENVIRONMENT()
|
|
if env.ADDRESS_SANITIZER:
|
|
# If address sanitizer is enabled, we need to suppress leak checking
|
|
# in the asn1 tool.
|
|
no_leak_check = " && export ASAN_OPTIONS=detect_leaks=0"
|
|
else:
|
|
no_leak_check = ""
|
|
|
|
asn1_rule = cd_rule + no_leak_check + ' && "${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 = 'c',
|
|
update_outputs = 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.path.abspath(), 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,
|
|
update_outputs=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',
|
|
update_outputs=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',
|
|
update_outputs=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 = 'c',
|
|
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 = 'c',
|
|
update_outputs = 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,
|
|
update_outputs=True,
|
|
ext_out='.c',
|
|
before='c')
|
|
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),
|
|
update_outputs=True,
|
|
before='c',
|
|
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" % (Context.g_module.APPNAME, Context.g_module.VERSION)
|
|
|
|
features = 'c 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 = 'c',
|
|
source = source,
|
|
target = modname,
|
|
samba_cflags = CURRENT_CFLAGS(bld, modname, cflags, allow_warnings=True),
|
|
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 = 'c cprogram symlink_bin install_bin'
|
|
|
|
obj_target = binname + '.objlist'
|
|
|
|
if group == 'build_compilers':
|
|
subsystem_group = 'compiler_libraries'
|
|
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_COMMON_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 = ROKEN_COMMON_SOURCE + '''
|
|
../../lib/replace/closefrom.c
|
|
'''
|
|
else:
|
|
ROKEN_HOSTCC_SOURCE = ROKEN_COMMON_SOURCE
|
|
|
|
ROKEN_SOURCE = ROKEN_COMMON_SOURCE + '''
|
|
lib/roken/resolve.c
|
|
lib/roken/socket.c
|
|
lib/roken/roken_gethostby.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 -D_SAMBA_HOSTCC_',
|
|
group='compiler_libraries',
|
|
deps='LIBREPLACE_HOSTCC',
|
|
)
|
|
|
|
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 com_err HEIMDAL_CONFIG heimbase execinfo samba_intl',
|
|
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_heim_asn1_cflags = ''
|
|
if bld.CONFIG_SET('HAVE_WNO_FORMAT_TRUNCATION'):
|
|
heimdal_heim_asn1_cflags = '-Wno-format-truncation'
|
|
|
|
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',
|
|
cflags=heimdal_heim_asn1_cflags,
|
|
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 samba_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/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 lib/asn1/main.c',
|
|
use_hostcc=True,
|
|
use_global_deps=False,
|
|
cflags='-DSOCKET_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.bldnode.parent.abspath(), '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 -D_SAMBA_HOSTCC_',
|
|
deps='ROKEN_HOSTCC LIBREPLACE_HOSTCC HEIMDAL_VERS_HOSTCC',
|
|
install=False
|
|
)
|
|
bld.env['COMPILE_ET'] = os.path.join(bld.bldnode.parent.abspath(), '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 asn1',
|
|
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')
|