Author: vedge Date: 2008-08-19 07:57:22 -0300 (Tue, 19 Aug 2008) New Revision: 720
Added: trunk/BSDBuild/dlopen.pm trunk/BSDBuild/dyld.pm trunk/BSDBuild/shl_load.pm Log: test for various dynamic linker interfaces. Added: trunk/BSDBuild/dlopen.pm =================================================================== --- trunk/BSDBuild/dlopen.pm (rev 0) +++ trunk/BSDBuild/dlopen.pm 2008-08-19 10:57:22 UTC (rev 720) @@ -0,0 +1,74 @@ +# vim:ts=4 +# +# Copyright (c) 2008 Hypertriton, Inc. <http://hypertriton.com/> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution.. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.. + +sub Test +{ + my $code = << 'EOF'; +#ifdef HAVE_DLFCN_H +#include <dlfcn.h> +#endif + +int +main(int argc, char *argv[]) +{ + void *handle; + char *error; + handle = dlopen("foo.so", 0); + error = dlerror(); + (void)dlsym(handle, "foo"); + return (0); +} +EOF + + MkDefine('DSO_CFLAGS', ''); + MkDefine('DSO_LIBS', ''); + + BeginTestHeaders(); + DetectHeaderC('HAVE_DLFCN_H', '<dlfcn.h>'); + TryCompile('HAVE_DLOPEN', $code); + MkIf('"${HAVE_DLOPEN}" != "yes"'); + MkPrintN('checking for dlopen() in -ldl...'); + TryCompileFlagsC('HAVE_DLOPEN', '-ldl', $code); + MkIf('"${HAVE_DLOPEN}" = "yes"'); + MkDefine('DSO_CFLAGS', ''); + MkDefine('DSO_LIBS', '-ldl'); + MkEndif; + MkEndif; + + EndTestHeaders(); + + MkSaveMK('DSO_CFLAGS', 'DSO_LIBS'); + MkSaveDefine('DSO_CFLAGS', 'DSO_LIBS'); +} + +BEGIN +{ + $DESCR{'dlopen'} = 'dlopen() interface'; + $TESTS{'dlopen'} = \&Test; + $EMUL{'dlopen'} = undef; + $DEPS{'dlopen'} = 'cc'; +} + +;1 Added: trunk/BSDBuild/dyld.pm =================================================================== --- trunk/BSDBuild/dyld.pm (rev 0) +++ trunk/BSDBuild/dyld.pm 2008-08-19 10:57:22 UTC (rev 720) @@ -0,0 +1,94 @@ +# vim:ts=4 +# +# Copyright (c) 2008 Hypertriton, Inc. <http://hypertriton.com/> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution.. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.. + +sub Test +{ + MkDefine('DSO_CFLAGS', ''); + MkDefine('DSO_LIBS', ''); + + BeginTestHeaders(); + DetectHeaderC('HAVE_MACH_O_DYLD_H', '<mach-o/dyld.h>'); + + TryCompile 'HAVE_DYLD', << 'EOF'; +#ifdef HAVE_MACH_O_DYLD_H +#include <mach-o/dyld.h> +#endif +int +main(int argc, char *argv[]) +{ + NSObjectFileImage img; + NSObjectFileImageReturnCode rv; + + rv = NSCreateObjectFileImageFromFile("foo", &img); + return (rv == NSObjectFileImageSuccess); +} +EOF + + MkIf('"${HAVE_DYLD}" = "Yes"'); + MkPrint('checking for NSLINKMODULE_OPTION_RETURN_ON_ERROR'); + TryCompile 'HAVE_DYLD_RETURN_ON_ERROR', << 'EOF'; +#ifdef HAVE_MACH_O_DYLD_H +#include <mach-o/dyld.h> +#endif +int +main(int argc, char *argv[]) +{ + NSObjectFileImage img; + NSObjectFileImageReturnCode rv; + void *handle; + + rv = NSCreateObjectFileImageFromFile("foo", &img); + handle = (void *)NSLinkModule(img, "foo", + NSLINKMODULE_OPTION_RETURN_ON_ERROR| + NSLINKMODULE_OPTION_NONE); + if (handle == NULL) { + NSLinkEditErrors errs; + int n; + const char *f, *s = NULL; + NSLinkEditError(&errs, &n, &f, &s); + } + return (0); +} +EOF + MkElse; + MkDefine('HAVE_DYLD_RETURN_ON_ERROR', 'no'); + MkSaveUndef('HAVE_DYLD_RETURN_ON_ERROR'); + MkEndif; + + EndTestHeaders(); + + MkSaveMK('DSO_CFLAGS', 'DSO_LIBS'); + MkSaveDefine('DSO_CFLAGS', 'DSO_LIBS'); +} + +BEGIN +{ + $DESCR{'dyld'} = 'dyld interface'; + $TESTS{'dyld'} = \&Test; + $EMUL{'dyld'} = undef; + $DEPS{'dyld'} = 'cc'; +} + +;1 Added: trunk/BSDBuild/shl_load.pm =================================================================== --- trunk/BSDBuild/shl_load.pm (rev 0) +++ trunk/BSDBuild/shl_load.pm 2008-08-19 10:57:22 UTC (rev 720) @@ -0,0 +1,71 @@ +# vim:ts=4 +# +# Copyright (c) 2008 Hypertriton, Inc. <http://hypertriton.com/> +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# 1. Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# 2. Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution.. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR +# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE +# USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.. + +sub Test +{ + MkDefine('DSO_CFLAGS', ''); + MkDefine('DSO_LIBS', ''); + + BeginTestHeaders(); + DetectHeaderC('HAVE_DL_H', '<dl.h>'); + + TryCompileFlagsC 'HAVE_SHL_LOAD', '-ldld', << 'EOF'; +#ifdef HAVE_DL_H +#include <dl.h> +#endif + +int +main(int argc, char *argv[]) +{ + void *handle; + void **p; + + handle = shl_load("foo.so", BIND_IMMEDIATE, 0); + (void)shl_findsym((shl_t *)&handle, "foo", TYPE_PROCEDURE, p); + (void)shl_findsym((shl_t *)&handle, "foo", TYPE_DATA, p); + shl_unload((shl_t)handle); + return (0); +} +EOF + MkIf('"${HAVE_SHL_LOAD}" = "yes"'); + MkDefine('DSO_CFLAGS', ''); + MkDefine('DSO_LIBS', '-ldld'); + MkEndif; + + EndTestHeaders(); + + MkSaveMK('DSO_CFLAGS', 'DSO_LIBS'); + MkSaveDefine('DSO_CFLAGS', 'DSO_LIBS'); +} + +BEGIN +{ + $DESCR{'shl_load'} = 'shl_load() interface'; + $TESTS{'shl_load'} = \&Test; + $EMUL{'shl_load'} = undef; + $DEPS{'shl_load'} = 'cc'; +} + +;1 _______________________________________________ BSDBuild-Commits mailing list [email protected] http://mail231.csoft.net/mailman/listinfo/bsdbuild-commits
