diff options
-rwxr-xr-x | dynconfig/wscript | 5 | ||||
-rw-r--r-- | source3/build/dynconfig.py | 72 | ||||
-rw-r--r-- | source3/build/wscript | 60 | ||||
-rw-r--r-- | source3/wscript | 34 | ||||
-rwxr-xr-x | source3/wscript_build | 2 |
5 files changed, 36 insertions, 137 deletions
diff --git a/dynconfig/wscript b/dynconfig/wscript index 35af13db7e..d6b07efb5d 100755 --- a/dynconfig/wscript +++ b/dynconfig/wscript @@ -107,9 +107,12 @@ Build.BuildContext.dynconfig_cflags = dynconfig_cflags def build(bld): cflags = bld.dynconfig_cflags() + version_header = 'version.h' + if not os.getenv('TOPLEVEL_BUILD'): + version_header = 'include/version.h' bld.SAMBA_SUBSYSTEM('DYNCONFIG', 'dynconfig.c', deps='replace talloc', - public_headers=os_path_relpath(os.path.join(Options.launch_dir, 'version.h'), bld.curdir), + public_headers=os_path_relpath(os.path.join(Options.launch_dir, version_header), bld.curdir), header_path='samba', cflags=cflags) diff --git a/source3/build/dynconfig.py b/source3/build/dynconfig.py deleted file mode 100644 index 65436b982d..0000000000 --- a/source3/build/dynconfig.py +++ /dev/null @@ -1,72 +0,0 @@ -import string, Utils - -# list of directory options to offer in configure -dir_options = { - 'with-cachedir' : [ '${PREFIX}/var/locks', 'where to put temporary cache files' ], - 'with-codepagedir' : [ '${PREFIX}/lib/samba', 'where to put codepages' ], - 'with-configdir' : [ '${PREFIX}/etc/samba', 'Where to put configuration files' ], - 'with-lockdir' : [ '${PREFIX}/var/locks', 'where to put lock files' ], - 'with-logfilebase' : [ '${PREFIX}/var/log/samba', 'Where to put log files' ], - 'with-ncalrpcdir' : [ '${PREFIX}/var/ncalrpc', 'where to put ncalrpc sockets' ], - 'with-nmbdsocketdir' : [ '${PREFIX}/var/locks/.nmbd', 'Where to put the nmbd socket directory' ], - 'with-ntp-signd-socket-dir' : [ '${PREFIX}/var/run/ntp_signd', 'NTP signed directory'], - 'with-pammodulesdir' : [ '', 'Which directory to use for PAM modules' ], - 'with-piddir' : [ '${PREFIX}/var/locks', 'where to put pid files' ], - 'with-privatedir' : [ '${PREFIX}/private', 'where to put smbpasswd' ], - 'with-selftest-prefix' : [ '', 'The prefix where make test will be run' ], - 'with-selftest-shrdir' : [ '', 'The share directory that make test will be run against' ], - 'with-statedir' : [ '${PREFIX}/var/locks', 'where to put persistent state files' ], - 'with-swatdir' : [ '${PREFIX}/swat', 'Where to put SWAT files' ], - 'with-winbindd-privileged-socket-dir' : [ '${PREFIX}/var/lib/winbindd_privileged', 'winbind privileged socket directory'], - 'with-winbindd-socket-dir' : [ '${PREFIX}/var/lib/winbindd', 'winbind socket directory' ], - } - -# list of cflags to use for dynconfig.c -dyn_cflags = { - 'BINDIR' : '${BINDIR}', - 'CACHEDIR' : '${CACHEDIR}', - 'CODEPAGEDIR' : '${CODEPAGEDIR}', - 'CONFIGDIR' : '${SYSCONFDIR}', - 'CONFIGFILE' : '${SYSCONFDIR}/smb.conf', - 'DATADIR' : '${DATADIR}', - 'LIBDIR' : '${LIBDIR}', - 'LOCALEDIR' : '${LOCALEDIR}', - 'LMHOSTSFILE' : '${SYSCONFDIR}/lmhosts', - 'LOCKDIR' : '${LOCALSTATEDIR}/locks', - 'LOGFILEBASE' : '${LOCALSTATEDIR}', - 'MODULESDIR' : '${PREFIX}/modules', - 'NCALRPCDIR' : '${LOCALSTATEDIR}/ncalrpc', - 'NMBDSOCKETDIR' : '${LOCKDIR}/.nmbd', - 'NTP_SIGND_SOCKET_DIR' : '${NTP_SIGND_SOCKET_DIR}', - 'PIDDIR' : '${LOCALSTATEDIR}/run', - 'PKGCONFIGDIR' : '${LIBDIR}/pkgconfigdir', - 'PRIVATE_DIR' : '${PRIVATEDIR}', - 'SBINDIR' : '${SBINDIR}', - 'SETUPDIR' : '${DATADIR}/setup', - 'SMB_PASSWD_FILE' : '${PRIVATEDIR}/smbpasswd', - 'STATEDIR' : '${LOCALSTATEDIR}', - 'SWATDIR' : '${PREFIX}/swat', - 'WINBINDD_PRIVILEGED_SOCKET_DIR' : '${WINBINDD_PRIVILEGED_SOCKET_DIR}', - 'WINBINDD_SOCKET_DIR' : '${WINBINDD_SOCKET_DIR}', - } - -def get_varname(v): - '''work out a variable name from a configure option name''' - if v.startswith('with-'): - v = v[5:] - v = v.upper() - v = string.replace(v, '-', '_') - return v - - -def dynconfig_cflags(bld): - '''work out the extra CFLAGS for dynconfig.c''' - cflags = [] - for f in dyn_cflags.keys(): - # substitute twice, as we could have substitutions containing variables - v = Utils.subst_vars(dyn_cflags[f], bld.env) - v = Utils.subst_vars(v, bld.env) - bld.ASSERT(v != '', "Empty dynconfig value for %s" % f) - bld.ASSERT(v.find('${') == -1, "Unsubstituted variable in %s : %s : %s" % (f, dyn_cflags[f], v)) - cflags.append('-D%s="%s"' % (f, v)) - return cflags diff --git a/source3/build/wscript b/source3/build/wscript deleted file mode 100644 index b9c6bd264c..0000000000 --- a/source3/build/wscript +++ /dev/null @@ -1,60 +0,0 @@ -#!/usr/bin/env python - -import string, Utils, Options -from dynconfig import * - -def set_options(opt): - # get all the basic GNU options from the gnu_dirs tool - opt.tool_options('gnu_dirs') - for option in dir_options.keys(): - default = dir_options[option][0] - help = dir_options[option][1] - varname = get_varname(option) - opt.add_option('--%s' % option, - help=(help + ' [%s]' % default), - action="store", dest=varname, default=default) - - -cflags_vars = [ 'CONFIGFILE' ] - -def configure(conf): - # get all the basic GNU options from the gnu_dirs tool - conf.check_tool('gnu_dirs') - for option in dir_options.keys(): - varname = get_varname(option) - value = getattr(Options.options, varname, None) - value = Utils.subst_vars(value, conf.env) - conf.ASSERT(value is not None, "Missing configure option %s" % varname) - conf.ASSERT(varname not in conf.env, "Variable %s already defined" % varname) - conf.env[varname] = value - - for f in dyn_cflags.keys(): - # substitute twice, as we could have substitutions containing variables - v = Utils.subst_vars(dyn_cflags[f], conf.env) - v = Utils.subst_vars(v, conf.env) - conf.ASSERT(v != '', "Empty dynconfig value for %s" % f) - conf.ASSERT(v.find('${') == -1, "Unsubstituted variable in %s : %s : %s" % (f, dyn_cflags[f], v)) - if f not in conf.env: - conf.env[f] = v - if f in cflags_vars: - conf.DEFINE(f, v, quote=True) - -def build(bld): - cflags = dynconfig_cflags(bld) - bld.SAMBA3_SUBSYSTEM('DYNCONFIG', - '../../dynconfig/dynconfig.c', - deps='replace talloc tdb popt', - cflags=cflags) - - -def dynconfig_cflags(bld): - '''work out the extra CFLAGS for dynconfig.c''' - cflags = [] - for f in dyn_cflags.keys(): - # substitute twice, as we could have substitutions containing variables - v = Utils.subst_vars(dyn_cflags[f], bld.env) - v = Utils.subst_vars(v, bld.env) - bld.ASSERT(v != '', "Empty dynconfig value for %s" % f) - bld.ASSERT(v.find('${') == -1, "Unsubstituted variable in %s : %s : %s" % (f, dyn_cflags[f], v)) - cflags.append('-D%s="%s"' % (f, v)) - return cflags diff --git a/source3/wscript b/source3/wscript index d88faa2104..be011af232 100644 --- a/source3/wscript +++ b/source3/wscript @@ -15,12 +15,14 @@ import build.charset import samba_utils, samba_version import samba3 +Options.default_prefix = '/usr/local/samba' + def set_options(opt): if not os.getenv('TOPLEVEL_BUILD'): opt.BUILTIN_DEFAULT('NONE') opt.PRIVATE_EXTENSION_DEFAULT('s3') opt.RECURSE('../lib/replace') - opt.RECURSE('build') + opt.RECURSE('../dynconfig') opt.RECURSE('selftest') opt.RECURSE('../lib/nss_wrapper') opt.RECURSE('../lib/socket_wrapper') @@ -90,8 +92,29 @@ def configure(conf): conf.env['build_swat'] = True if not conf.env.toplevel_build: + conf.RECURSE('../lib/replace') - conf.RECURSE('build') + + conf.find_program('python', var='PYTHON', mandatory=True) + conf.find_program('perl', var='PERL', mandatory=True) + conf.find_program('xsltproc', var='XSLTPROC') + + # enable tool to build python extensions + conf.check_tool('python') + conf.check_python_version((2,4,2)) + conf.SAMBA_CHECK_PYTHON_HEADERS(mandatory=True) + + if sys.platform == 'darwin' and not conf.env['HAVE_ENVIRON_DECL']: + # Mac OSX needs to have this and it's also needed that the python is compiled with this + # otherwise you face errors about common symbols + if not conf.CHECK_SHLIB_W_PYTHON("Checking if -fno-common is needed"): + conf.ADD_CFLAGS('-fno-common') + if not conf.CHECK_SHLIB_W_PYTHON("Checking if -undefined dynamic_lookup is not need"): + conf.env.append_value('shlib_LINKFLAGS', ['-undefined', 'dynamic_lookup']) + if int(conf.env['PYTHON_VERSION'][0]) >= 3: + raise Utils.WafError('Python version 3.x is not supported by Samba yet') + + conf.RECURSE('../dynconfig') conf.RECURSE('../lib/ccan') conf.RECURSE('../lib/tdb_compat') conf.RECURSE('../lib/talloc') @@ -308,7 +331,6 @@ utimensat vsyslog _write __write __xstat # FIXME: these should be tests for features, but the old build system just # checks for OSes. - import sys host_os = sys.platform Logs.info("building on %s" % host_os) @@ -1795,6 +1817,12 @@ main() { conf.DEFINE('%s_init' % entry, 'init_samba_module') conf.env[shared_env].append('%s' % entry) + if not os.getenv('TOPLEVEL_BUILD'): + # we don't want PYTHONDIR in config.h, as otherwise changing + # --prefix causes a complete rebuild + del(conf.env.defines['PYTHONDIR']) + del(conf.env.defines['PYTHONARCHDIR']) + conf.SAMBA_CONFIG_H('include/config.h') def ctags(ctx): diff --git a/source3/wscript_build b/source3/wscript_build index 7e009fb473..974749ab10 100755 --- a/source3/wscript_build +++ b/source3/wscript_build @@ -645,7 +645,7 @@ if not bld.env.toplevel_build: samba_version.load_version(bld.env) bld.SAMBA_MKVERSION('include/version.h') bld.RECURSE('../lib/replace') - bld.RECURSE('build') + bld.RECURSE('../dynconfig') bld.env.suffix3 = '' |