summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2010-10-16 00:31:10 +0200
committerJelmer Vernooij <jelmer@samba.org>2010-10-15 22:38:07 +0000
commit613e03f908bc0ff9e877f0eaf5fbcff0adbaf742 (patch)
tree177553bc927174e3d859098948c83afde5ac4b34
parent5339bad942759f8daa4ff04b0c204247478ed579 (diff)
downloadsamba-613e03f908bc0ff9e877f0eaf5fbcff0adbaf742.tar.gz
samba-613e03f908bc0ff9e877f0eaf5fbcff0adbaf742.tar.bz2
samba-613e03f908bc0ff9e877f0eaf5fbcff0adbaf742.zip
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.
-rw-r--r--source4/heimdal_build/wscript_build94
-rw-r--r--source4/heimdal_build/wscript_configure20
2 files changed, 67 insertions, 47 deletions
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)