1. Sort -L flags to unbreak linking when any other version of Samba is installed. 2. Use -Wl,-no-undefined as on other platforms. Index: buildtools/wafsamba/samba_autoconf.py --- buildtools/wafsamba/samba_autoconf.py.orig +++ buildtools/wafsamba/samba_autoconf.py @@ -936,6 +936,27 @@ def ADD_LDFLAGS(conf, flags, testflags=False): if not 'EXTRA_LDFLAGS' in conf.env: conf.env['EXTRA_LDFLAGS'] = [] conf.env['EXTRA_LDFLAGS'].extend(TO_LIST(flags)) + + ''' Make sure things go in order: + 1. Local -L and -rpath flags + 2. External -L and -rpath flags + 3. Others + ''' + localL = [] + extL = [] + other = [] + for f in conf.env['EXTRA_LDFLAGS']: + if f.startswith("-L%s" % "/usr/ports"): + localL.extend( [ f ] ) + elif f.startswith("-L"): + extL.extend( [ f ] ) + else: + other.extend( [ f ] ) + conf.env['EXTRA_LDFLAGS'] = [] + conf.env['EXTRA_LDFLAGS'].extend(localL) + conf.env['EXTRA_LDFLAGS'].extend(extL) + conf.env['EXTRA_LDFLAGS'].extend(other) + return flags @@ -1007,7 +1028,7 @@ def SAMBA_CHECK_UNDEFINED_SYMBOL_FLAGS(conf): # symbols used for fuzzers are only defined by compiler wrappers. return - if not sys.platform.startswith("openbsd"): + if True: # we don't want any libraries or modules to rely on runtime # resolution of symbols conf.env.undefined_ldflags = conf.ADD_LDFLAGS('-Wl,-no-undefined', testflags=True)