From ecfdf5feb32e5386a0dd460873b05cc323f75a7e Mon Sep 17 00:00:00 2001 From: mccallum Date: Tue, 12 Sep 1995 22:30:13 +0000 Subject: [PATCH] Patched from mail. See ChangeLog git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@608 72102866-910b-0410-8b05-ffd578937521 --- Headers/gnustep/base/LibobjectsMain.h | 2 +- Headers/gnustep/base/fake-main.h | 2 +- Source/NSBundle.m | 1 + Source/NSProcessInfo.m | 2 +- Source/objc-load.c | 2 +- Source/objects/LibobjectsMain.h | 2 +- configure.in | 66 +-------------------------- 7 files changed, 8 insertions(+), 69 deletions(-) diff --git a/Headers/gnustep/base/LibobjectsMain.h b/Headers/gnustep/base/LibobjectsMain.h index e6eb5fdb1..f27610a84 100644 --- a/Headers/gnustep/base/LibobjectsMain.h +++ b/Headers/gnustep/base/LibobjectsMain.h @@ -44,7 +44,7 @@ -mccallum */ -#ifndef __ELF__ +#if !defined(__ELF__) && !defined(SYS_AUTOLOAD) #define main LibobjectsMain extern int LibobjectsMain(/* int argc, char *argv[] */); #endif /* __ELF__ */ diff --git a/Headers/gnustep/base/fake-main.h b/Headers/gnustep/base/fake-main.h index e6eb5fdb1..f27610a84 100644 --- a/Headers/gnustep/base/fake-main.h +++ b/Headers/gnustep/base/fake-main.h @@ -44,7 +44,7 @@ -mccallum */ -#ifndef __ELF__ +#if !defined(__ELF__) && !defined(SYS_AUTOLOAD) #define main LibobjectsMain extern int LibobjectsMain(/* int argc, char *argv[] */); #endif /* __ELF__ */ diff --git a/Source/NSBundle.m b/Source/NSBundle.m index 3b648f371..1534b19ef 100644 --- a/Source/NSBundle.m +++ b/Source/NSBundle.m @@ -42,6 +42,7 @@ #include #endif /* not STDC_HEADERS and HAVE_MEMORY_H */ #define rindex strrchr +#define index strchr #define bcopy(s, d, n) memcpy ((d), (s), (n)) #define bcmp(s1, s2, n) memcmp ((s1), (s2), (n)) #define bzero(s, n) memset ((s), 0, (n)) diff --git a/Source/NSProcessInfo.m b/Source/NSProcessInfo.m index 7b78f927e..db8c078b7 100644 --- a/Source/NSProcessInfo.m +++ b/Source/NSProcessInfo.m @@ -182,7 +182,7 @@ _gnu_process_args(int argc, char *argv[], char *env[]) that it automatically gets called before main with the argument and environment pointers. FIXME: Would like to do something similar for other formats besides ELF. */ -#ifdef __ELF__ +#if defined(__ELF__) || defined(SYS_AUTOLOAD) #ifdef linux /* Under linux the functions in __libc_subinit are called before the diff --git a/Source/objc-load.c b/Source/objc-load.c index 6b90789bf..06d39b281 100644 --- a/Source/objc-load.c +++ b/Source/objc-load.c @@ -162,7 +162,7 @@ objc_load_module( return 1; } -#ifndef __ELF__ +#if !defined(__ELF__) && !defined(SYS_AUTOLOAD) /* Get the constructor list and load in the objects */ ctor_list = (void_fn *)__objc_dynamic_find_symbol(handle, CTOR_LIST); if (!ctor_list) { diff --git a/Source/objects/LibobjectsMain.h b/Source/objects/LibobjectsMain.h index e6eb5fdb1..f27610a84 100644 --- a/Source/objects/LibobjectsMain.h +++ b/Source/objects/LibobjectsMain.h @@ -44,7 +44,7 @@ -mccallum */ -#ifndef __ELF__ +#if !defined(__ELF__) && !defined(SYS_AUTOLOAD) #define main LibobjectsMain extern int LibobjectsMain(/* int argc, char *argv[] */); #endif /* __ELF__ */ diff --git a/configure.in b/configure.in index 289a745ae..d1ebec1e7 100644 --- a/configure.in +++ b/configure.in @@ -166,72 +166,10 @@ AC_SUBST(NeXT_runtime) AC_SUBST(NeXT_cc) AC_SUBST(NEXT_INCLUDES) - #-------------------------------------------------------------------- -# Check for dynamic linking -# -# the name we assign to DYNAMIC_LINKER cooresponds to the interface that -# is inluded in objc-load.c (i.e. #include "${DYNAMIC_LINKER}-load.h") +# Setup dynamic linking #-------------------------------------------------------------------- -DYNAMIC_LINKER=null -AC_CHECK_LIB(dl, dlopen, DYNAMIC_LINKER=simple LIBS="${LIBS} -ldl") - -DLD_INCLUDE='' -if test $DYNAMIC_LINKER = null; then - AC_CHECK_LIB(dld, main, DYNAMIC_LINKER=dld LIBS="${LIBS} -ldld") - AC_CHECK_HEADER(dld/defs.h, found_dld_defs=yes, found_dld_defs=no) - # Try to distinguish between GNU dld and HPUX dld - AC_CHECK_HEADER(dl.h, DYNAMIC_LINKER=hpux) - # Check in non-standard places - if test $ac_cv_lib_dld = no; then - AC_MSG_CHECKING(for dld in user directory) - if test -f ${srcdir}/../dld/libdld.a; then - DYNAMIC_LINKER=dld - found_dld_defs=yes - DLD_INCLUDE="-I$(OSDIR)/.." - LIBS="${LIBS} -L$(OSDIR)/../dld -ldld" - AC_MSG_RESULT(yes) - else - AC_MSG_RESULT(no) - fi - fi - if test $ac_cv_lib_dld = yes && test $found_dld_defs = no && test $ac_cv_header_dl_h = no; then - AC_MSG_WARN(Could not find dld/defs.h header) - echo - echo "objc-load needs the the dld/defs.h header to get information" - echo "about how to use GNU dld" - echo - fi -fi -AC_SUBST(DYNAMIC_LINKER) -AC_SUBST(DLD_INCLUDE) - -# These determine how the NSBundle example makefile is setup -# They don't always work... -if test $DYNAMIC_LINKER = dld; then - DYNAMIC_BUNDLER_LINKER="ld -r" - DYNAMIC_LDFLAGS="-static" - DYNAMIC_CFLAGS="" -elif test $DYNAMIC_LINKER = simple; then - DYNAMIC_BUNDLER_LINKER="$(CC) -nostdlib" - DYNAMIC_LDFLAGS="" - DYNAMIC_CFLAGS="-fPIC" -elif test $DYNAMIC_LINKER = hpux; then - DYNAMIC_BUNDLER_LINKER="$(CC) -nostdlib -Xlinker -b" - DYNAMIC_LDFLAGS="-Xlinker -E" - DYNAMIC_CFLAGS="-fPIC" -elif test $DYNAMIC_LINKER = null; then - DYNAMIC_BUNDLER_LINKER="$(CC) -nostdlib -Xlinker -r" - DYNAMIC_LDFLAGS="" - DYNAMIC_CFLAGS="" -else - DYNAMIC_BUNDLER_LINKER="$(CC) -nostdlib -Xlinker -r" - DYNAMIC_LDFLAGS="" - DYNAMIC_CFLAGS="" -fi -AC_SUBST(DYNAMIC_BUNDLER_LINKER) -AC_SUBST(DYNAMIC_LDFLAGS) -AC_SUBST(DYNAMIC_CFLAGS) +OBJC_SYS_DYNAMIC_FLAGS() #-------------------------------------------------------------------- # Find some programs