From 613e03f908bc0ff9e877f0eaf5fbcff0adbaf742 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 16 Oct 2010 00:31:10 +0200 Subject: heimdal_build: Allow using system wind. Please note that to use the system wind library the user explicitly has to specify --bundled-library=!wind . Without that option we will always use the included wind library. --- source4/heimdal_build/wscript_build | 94 ++++++++++++++++----------------- source4/heimdal_build/wscript_configure | 20 +++++++ 2 files changed, 67 insertions(+), 47 deletions(-) (limited to 'source4') diff --git a/source4/heimdal_build/wscript_build b/source4/heimdal_build/wscript_build index ac6575ad0f..632a3f17da 100644 --- a/source4/heimdal_build/wscript_build +++ b/source4/heimdal_build/wscript_build @@ -323,44 +323,6 @@ def HEIMDAL_BINARY(binname, source, ) -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_ASN1('HEIMDAL_SPNEGO_ASN1', source='../heimdal/lib/gssapi/spnego/spnego.asn1', options='--sequence=MechTypeList', @@ -485,9 +447,6 @@ HEIMDAL_ERRTABLE('HEIMDAL_HX509_ERR_ET', '../heimdal/lib/hx509/hx509_err.et') -HEIMDAL_ERRTABLE('WIND_ERR_ET', - '../heimdal/lib/wind/wind_err.et') - ROKEN_HOSTCC_SOURCE = ''' ../heimdal/lib/roken/base64.c ../heimdal/lib/roken/ct.c @@ -628,7 +587,7 @@ HEIMDAL_LIBRARY('gssapi', ../heimdal/lib/gssapi/mech/gss_export_sec_context.c ../heimdal/lib/gssapi/mech/gss_inquire_context.c ../heimdal/lib/gssapi/mech/gss_release_name.c ../heimdal/lib/gssapi/mech/gss_set_cred_option.c ../heimdal/lib/gssapi/mech/gss_pseudo_random.c gssapi-glue.c''', includes='../heimdal/lib/gssapi ../heimdal/lib/gssapi/gssapi ../heimdal/lib/gssapi/spnego ../heimdal/lib/gssapi/krb5 ../heimdal/lib/gssapi/mech', - deps='HEIMDAL_HCRYPTO HEIMDAL_HEIM_ASN1 HEIMDAL_SPNEGO_ASN1 HEIMDAL_GSSAPI_ASN1 roken krb5 com_err', + deps='HEIMDAL_HCRYPTO HEIMDAL_HEIM_ASN1 HEIMDAL_SPNEGO_ASN1 HEIMDAL_GSSAPI_ASN1 roken krb5 com_err wind', vnum='2.0.0', ) @@ -733,13 +692,54 @@ HEIMDAL_LIBRARY('hx509', ) -HEIMDAL_LIBRARY('wind', - '../heimdal/lib/wind/wind_err.c ../heimdal/lib/wind/stringprep.c ../heimdal/lib/wind/errorlist.c ../heimdal/lib/wind/errorlist_table.c ../heimdal/lib/wind/normalize.c ../heimdal/lib/wind/normalize_table.c ../heimdal/lib/wind/combining.c ../heimdal/lib/wind/combining_table.c ../heimdal/lib/wind/utf8.c ../heimdal/lib/wind/bidi.c ../heimdal/lib/wind/bidi_table.c ../heimdal/lib/wind/ldap.c ../heimdal/lib/wind/map.c ../heimdal/lib/wind/map_table.c', - includes='../heimdal/lib/wind', - deps='roken com_err', - vnum='0.0.0', +if not bld.CONFIG_SET('USING_SYSTEM_WIND'): + HEIMDAL_ERRTABLE('WIND_ERR_ET', + '../heimdal/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', + '../heimdal/lib/wind/wind_err.c ../heimdal/lib/wind/stringprep.c ../heimdal/lib/wind/errorlist.c ../heimdal/lib/wind/errorlist_table.c ../heimdal/lib/wind/normalize.c ../heimdal/lib/wind/normalize_table.c ../heimdal/lib/wind/combining.c ../heimdal/lib/wind/combining_table.c ../heimdal/lib/wind/utf8.c ../heimdal/lib/wind/bidi.c ../heimdal/lib/wind/bidi_table.c ../heimdal/lib/wind/ldap.c ../heimdal/lib/wind/map.c ../heimdal/lib/wind/map_table.c', + includes='../heimdal/lib/wind', + deps='roken com_err', + vnum='0.0.0', + ) + HEIMDAL_SUBSYSTEM('ROKEN_HOSTCC', ROKEN_HOSTCC_SOURCE, use_hostcc=True, diff --git a/source4/heimdal_build/wscript_configure b/source4/heimdal_build/wscript_configure index 78b0df5063..e0c435dc5e 100644 --- a/source4/heimdal_build/wscript_configure +++ b/source4/heimdal_build/wscript_configure @@ -1,5 +1,7 @@ #!/usr/bin/env python +import Logs, sys + conf.CHECK_TYPE('u_char', 'uint8_t') conf.CHECK_TYPE('u_int32_t', 'uint32_t') @@ -63,6 +65,24 @@ conf.DEFINE('SAMBA4_INTERNAL_HEIMDAL', 1) if conf.CHECK_BUNDLED_SYSTEM('com_err', checkfunctions='com_right_r com_err', headers='com_err.h'): conf.define('USING_SYSTEM_COM_ERR', 1) +def check_bundled_heimdal_lib(name, functions, headers): + # Only use system library if the user requested the bundled one not be used. + if conf.LIB_MAY_BE_BUNDLED(name): + return + lib = name + setattr(conf.env, "CPPPATH_%s" % name.upper(), ["/usr/include/heimdal"]) + setattr(conf.env, "LIBPATH_%s" % name.upper(), ["/usr/lib/heimdal"]) + if not conf.CHECK_HEADERS(headers, lib=lib): + Logs.error('ERROR: Unable to find missing header %s' % headers) + sys.exit(1) + if not conf.CHECK_LIB([lib], mandatory=True, set_target=True): + Logs.error('ERROR: Unable to find missing library %s' % lib) + sys.exit(1) + conf.define('USING_SYSTEM_%s' % name.upper(), 1) + + +check_bundled_heimdal_lib("wind", "wind_stringprep", "wind.h") + # disable trying to use an external compile_et until we have a configure # test that checks that the system one actually works. On some systems it # results in missing symbols (eg. OpenSUSE 10.2 'opi' in the build farm) -- cgit