gnustep-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Compile issues


From: David Chisnall
Subject: Re: Compile issues
Date: Sat, 17 Mar 2012 20:21:42 +0000

Hi Ivan,

On 17 Mar 2012, at 20:08, Ivan Vučica wrote:

> So I've been playing with compiling GNUstep for Android a little this 
> evening. I'd love David's input, since reflecting back on his status report 
> for a WebOS port, he mentioned he worked on solving the precise problem I'm 
> having ('configure' not running test programs when cross-compiling).
> 
> My setup:
> 0. OS X Lion
> 1. Installed Android SDK into /Applications/android-sdk-mac_x86
> 2. Installed android-ndk-r5c into 
> /Applications/android-sdk-mac_x86/android-ndk-r5c
> 3. Installed an Objective-C-supporting toolchain into 
> /Applications/android-sdk-mac_x86/ndk-objc - January 2010 download from:
> http://code.google.com/p/android-gcc-objc2-0/downloads/list
> 4. Wrote the following script, intended to be placed into .../core/make and 
> .../core/base

For WebOS, I didn't use gcc - it's a pain to use for cross-compilation, and 
clang manages it out of the box.

> David, in the previous mail from a few months ago, in a different thread, you 
> mentioned you had removed all tests that ran test programs from 'configure' 
> when cross-compiling is detected. Did you commit these changes to 
> 'configure.ac' and 'configure'? If so, how do I use them?

I didn't get around to committing them.  I've attached my changes to 
configure.ac at the end of this mail.

> Did you manage to run base on WebOS?

Yup, it works nicely on my TouchPad.

> Just to note, I'm aware that some of the hacky changes I've made above should 
> actually be done in 'configure.ac' and should depend on a new target OS 
> called 'android'. I don't have autotools on the Mac, so it was easier to 
> directly edit 'configure'.

Not ideal, as it makes merging changes back difficult.  To be honest, the 
configure.ac needs some serious attention.  It's full of stuff that isn't 
needed, and we can skip most of the tests in most cases.

> /home/jackie/Development/Code/GnuStep/core/base/Headers/Foundation/NSException.h:44:2:
> error: #error The current setting for native-objc-exceptions does not
> match that of gnustep-base ... please correct this.

I think we should remove this test in the headers.  

David

-- Sent from my STANTEC-ZEBRA
Index: configure.ac
===================================================================
--- configure.ac        (revision 33897)
+++ configure.ac        (working copy)
@@ -1631,13 +1631,20 @@
 else
   strclass_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS -fconstant-string-class=FooConstantString"
+  # If we're cross-compiling, then just assume that we're using a recent
+  # compiler.
   AC_MSG_CHECKING(if the compiler supports -fconstant-string-class)
-  AC_CACHE_VAL(objc_compiler_supports_constant_string_class,
-    AC_TRY_RUN([#include "$srcdir/config/config.constant-string-class.m"],
-    objc_compiler_supports_constant_string_class=yes,
-    objc_compiler_supports_constant_string_class=no,
-    objc_compiler_supports_constant_string_class=no)
-  )
+  if test "$cross_compiling" = yes; then
+    objc_compiler_supports_constant_string_class=yes
+      AC_MSG_WARN([Cross-compiling, so we will assume you are using a modern 
compiler.])
+  else
+    AC_CACHE_VAL(objc_compiler_supports_constant_string_class,
+      AC_TRY_RUN([#include "$srcdir/config/config.constant-string-class.m"],
+      objc_compiler_supports_constant_string_class=yes,
+      objc_compiler_supports_constant_string_class=no,
+      objc_compiler_supports_constant_string_class=no)
+    )
+  fi
   if test $objc_compiler_supports_constant_string_class = yes; then
     NX_CONST_STRING_OBJCFLAGS="-fconstant-string-class=NSConstantString"
     NX_CONST_STRING_CLASS=NSConstantString
@@ -1730,8 +1737,14 @@
   saved_CPPFLAGS="$CPPFLAGS"
   CPPFLAGS="$CPPFLAGS $OBJCFLAGS -fobjc-nonfragile-abi -x objective-c"
   AC_MSG_CHECKING(for non-fragile-abi support)
-  AC_RUN_IFELSE([#include "$srcdir/config/config.non-fragile-ivars.m"],
-    non_fragile=yes, non_fragile=no)
+  # compiler.
+  if test "$cross_compiling" = yes; then
+    non_fragile=yes
+      AC_MSG_WARN([Cross-compiling, so we will assume you are using a modern 
compiler.])
+  else
+    AC_RUN_IFELSE([#include "$srcdir/config/config.non-fragile-ivars.m"],
+      non_fragile=yes, non_fragile=no)
+  fi
   CPPFLAGS="$saved_CPPFLAGS"
   if test $non_fragile = yes; then
     OBJCFLAGS="$OBJCFLAGS -fobjc-nonfragile-abi"
@@ -1819,8 +1832,13 @@
 # Don't revert any Objective-C flags as they are used in the next test
 
 AC_MSG_CHECKING(for _objc_unexpected_exception in runtime)
-AC_RUN_IFELSE([#include "$srcdir/config/config.unexpected.m"],
-       have_unexpected=yes, have_unexpected=no)
+if test "$cross_compiling" = yes; then
+  have_unexpected=yes
+  AC_MSG_WARN([Cross-compiling, so we will assume you are using a modern 
runtime.])
+else
+  AC_RUN_IFELSE([#include "$srcdir/config/config.unexpected.m"],
+      have_unexpected=yes, have_unexpected=no)
+fi
 if test $have_unexpected = yes; then
   AC_DEFINE(HAVE_UNEXPECTED,1,
            [Define if libobjc has the _objc_unexpected_exception callback])
@@ -1869,8 +1887,13 @@
 # Don't revert any Objective-C flags as they are used in the next test
 
 AC_MSG_CHECKING(for thread-safe +initialize in runtime)
-AC_RUN_IFELSE([#include "$srcdir/config/config.initialize.m"],
+if test "$cross_compiling" = yes; then
+  safe_initialize=yes
+  AC_MSG_WARN([Cross-compiling, so we will assume you are using a modern 
runtime.])
+else
+  AC_RUN_IFELSE([#include "$srcdir/config/config.initialize.m"],
        safe_initialize=yes, safe_initialize=no)
+fi 
 if test $safe_initialize = yes; then
   AC_DEFINE(HAVE_INITIALIZE,1,
            [Define if libobjc has thread-safe +initialize support])
@@ -1993,6 +2016,13 @@
 #--------------------------------------------------------------------
 # These headers/functions needed by NSRunLoop.m
 #--------------------------------------------------------------------
+AC_ARG_WITH(poll,
+  [  --with-poll
+     Explicitly enable or disable the use of the poll() system call.  This
+     option is ignored when not cross compiling: poll usage will be
+     automatically detected. ],, )
+
+
 AC_CHECK_HEADERS(poll.h)
 AC_CHECK_FUNCS(poll)
 have_poll=no
@@ -2000,11 +2030,15 @@
   have_poll=yes
   AC_MSG_CHECKING(for poll emulation)
   AC_EGREP_CPP(emulating_poll, [#include "config/config.poll.c"], 
-       have_poll=no,)
+    have_poll=no,)
   if test $have_poll = yes; then
     AC_MSG_RESULT(no)
-    AC_MSG_CHECKING([if poll supports devices])
-    AC_TRY_RUN([#include "$srcdir/config/config.poll-dev.c"], ,have_poll=no, )
+    if test "$cross_compiling" = yes; then
+      have_poll=$with_poll
+    else
+      AC_MSG_CHECKING([if poll supports devices])
+      AC_TRY_RUN([#include "$srcdir/config/config.poll-dev.c"], ,have_poll=no, 
)
+    fi
     if test $have_poll = yes; then
       AC_MSG_RESULT(yes)
       AC_DEFINE(HAVE_POLL_F,1, [ Define if poll is NOT emulated via select])
@@ -2017,27 +2051,6 @@
 fi
 
 #--------------------------------------------------------------------
-# This function needed by StdioStream.m
-#--------------------------------------------------------------------
-AC_CHECK_FUNCS(vsprintf vasprintf snprintf vsnprintf)
-if test $ac_cv_func_vsprintf = yes ; then
-    AC_TRY_RUN([#include "$srcdir/config/config.vsprintf.c"],
-               VSPRINTF_RETURNS_LENGTH=1,
-               VSPRINTF_RETURNS_LENGTH=0,
-               VSPRINTF_RETURNS_LENGTH=1)
-    AC_DEFINE_UNQUOTED(VSPRINTF_RETURNS_LENGTH, $VSPRINTF_RETURNS_LENGTH,
-                       [Define if vsprintf returns the length printed])
-fi
-if test $ac_cv_func_vasprintf = yes ; then
-    AC_TRY_RUN([#include "$srcdir/config/config.vasprintf.c"],
-               VASPRINTF_RETURNS_LENGTH=1,
-               VASPRINTF_RETURNS_LENGTH=0,
-               VASPRINTF_RETURNS_LENGTH=1)
-    AC_DEFINE_UNQUOTED(VASPRINTF_RETURNS_LENGTH, $VASPRINTF_RETURNS_LENGTH,
-                       [Define if vasprintf returns the length printed])
-fi
-
-#--------------------------------------------------------------------
 # This function needed by NSFileManager.m
 #--------------------------------------------------------------------
 AC_CHECK_FUNCS(getcwd)
@@ -2070,10 +2083,7 @@
 #--------------------------------------------------------------------
 # These functions needed by NSTask.m
 #--------------------------------------------------------------------
-AC_CHECK_FUNCS(killpg setpgrp setpgid setsid)
-if test "x$ac_cv_func_setpgrp" = xyes; then
-  AC_FUNC_SETPGRP
-fi
+AC_CHECK_FUNCS(killpg setpgid setsid)
 
 HAVE_PTS_STREAM_MODULES=0
 case "${target}" in
@@ -2973,7 +2983,10 @@
   [  --with-openssl-library=PATH  library path for openssl libraries],
   openssl_libdir="$withval", openssl_libdir="no")
 
-AC_CONFIG_SUBDIRS(SSL)
+## FIXME: The SSL bundle's configure is broken when cross compiling.  Ignore 
it for now.
+if test "$cross_compiling" = no; then
+  AC_CONFIG_SUBDIRS(SSL)
+fi
 
 #--------------------------------------------------------------------
 # Record the version




reply via email to

[Prev in Thread] Current Thread [Next in Thread]