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

Reply via email to