public inbox for crossgcc@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0 of 4 v2] No static link on Darwin
@ 2011-06-28 21:57 Yann E. MORIN
  2011-06-28 21:57 ` [PATCH 2 of 4 v2] configure: disable static linking " Yann E. MORIN
                   ` (5 more replies)
  0 siblings, 6 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-06-28 21:57 UTC (permalink / raw)
  To: crossgcc; +Cc: Bryan Hundven, Titus von Boxberg

Hello All!

This patch series tries to fix the various static linking issues
seen on Darwin /MacOS-X.

First patch is mostly cosmetics, but the result is used by the second
patch.

Second patch disables all static linking options in the menuconfig
if the host can't link statically. Applies to hosts where a trivial
static-link test fails. Unconditionnaly applies to Darwin.

Third patch paves the way for fourth patch.

Fourth patch removes the check for static libs if host can't
link statically (as determined in patch 2).

 configure                 |  19 +++++++++++
 config/cc/gcc.in.2        |   1 +
 config/debug/gdb.in.cross |   1 +
 config/toolchain.in       |   1 +
 configure                 |  24 +++++++++++++++
 configure                 |  75 ++++++++++++++++++++++++----------------------
 configure                 |  43 +++++++++++++++++++-------
 7 files changed, 116 insertions(+), 48 deletions(-)

Regards,
Yann E. MORIN.

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 1 of 4 v2] configure: check host system
  2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
  2011-06-28 21:57 ` [PATCH 2 of 4 v2] configure: disable static linking " Yann E. MORIN
@ 2011-06-28 21:57 ` Yann E. MORIN
  2011-07-03  7:52   ` Titus von Boxberg
  2011-06-28 21:57 ` [PATCH 3 of 4 v2] configure: pass the allowed lib extensions to check_for() Yann E. MORIN
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Yann E. MORIN @ 2011-06-28 21:57 UTC (permalink / raw)
  To: crossgcc; +Cc: Bryan Hundven, Titus von Boxberg

 configure |  19 +++++++++++++++++++
 1 files changed, 19 insertions(+), 0 deletions(-)


# HG changeset patch
# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
# Date 1309274702 -7200
# Node ID 355696b27bc33908a25bade22d917ce6fa99da5d
# Parent  aa833630f29c780332bc43b87e03a49b37bd700a
configure: check host system

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>

diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -435,6 +435,25 @@
 has_or_abort prog=readelf var=readelf
 has_or_abort prog=patch var=patch
 
+# Host system checks
+
+printf "Checking for host system... "
+host="$( uname -s )"
+printf "%s\n" "${host}"
+case "${host}" in
+    Linux)  ;;
+    Cygwin) ;;
+    Darwin)
+        printf " * Runing under Darwin is not fully supported\n"
+        printf " * Although not strictly required, using MacPorts is highly recommended\n"
+        printf " * Even though, you may encounter some weird behavior\n"
+        ;;
+    *)
+        printf " * Runing under %s is not fully tested\n" "${host}"
+        printf " * You may encounter some weird behavior\n"
+        ;;
+esac
+
 ncurses_hdrs="ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h"
 ncurses_libs="$( for l in ncursesw ncurses curses; do   \
                      for x in so a dylib; do            \

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 3 of 4 v2] configure: pass the allowed lib extensions to check_for()
  2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
  2011-06-28 21:57 ` [PATCH 2 of 4 v2] configure: disable static linking " Yann E. MORIN
  2011-06-28 21:57 ` [PATCH 1 of 4 v2] configure: check host system Yann E. MORIN
@ 2011-06-28 21:57 ` Yann E. MORIN
  2011-06-28 22:04 ` [PATCH 4 of 4 v2] configure: do not test for static libs if static link is impossible Yann E. MORIN
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-06-28 21:57 UTC (permalink / raw)
  To: crossgcc; +Cc: Bryan Hundven, Titus von Boxberg

 configure |  75 ++++++++++++++++++++++++++++++++------------------------------
 1 files changed, 39 insertions(+), 36 deletions(-)


# HG changeset patch
# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
# Date 1309213742 -7200
# Node ID c1a75083d135ef092e9b5711a278fbca49d5b3c8
# Parent  1d66ee93a9a4cc963cad0ba2e245fa4a19e31af8
configure: pass the allowed lib extensions to check_for()

Rather than building all possible library names in the caller,
lets just do it once in check_for.

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>

diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -104,6 +104,10 @@
 #     for each 'prog', test if $(prog --version) matches 'regexp'
 #     optional
 #       eg: ver='^GNU bash, version [34]\.'
+# $*: lib_exts=<extension[ extension...]>
+#     the list of allowed library extension
+#     mandatory
+#       eg: lib_exts="so dylib"     lib_exts="so dylib a"
 # $*: err=<error_message>
 #     the error message to print if tool is missing
 #     optional, defaults to: '${prog}: none found'
@@ -115,19 +119,21 @@
 #     optional, defaults to none
 #       eg: kconfig=has_libncurses
 check_for() {
+    local lib_exts
     local val
     local item
     local where
     local status
+    local ext
 
     # Note: prog/inc/lib and var/kconfig/ver/err are set here,
     # but declared by the caller (because it needs it)
     for item in "${@}"; do
         case "${item}" in
-            prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*)
+            prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*|lib_exts=*)
                 eval ${item%%=*}=\"${item#*=}\"
                 ;;
-            *)  do_error "check_for: incorrect parameters: '$@'";;
+            *)  do_error "check_for: incorrect parameters: '${item}'";;
         esac
     done
 
@@ -198,15 +204,20 @@
     fi
 
     if [ -n "${lib}" ]; then
+        if [ -z "${lib_exts}" ]; then
+            do_error "check_for: no library extension specified for '${lib}'"
+        fi
         for item in ${lib}; do
-            printf "Checking for '${item}'... "
-            where="$( gcc -print-file-name="${item}" )"
-            if [ "${where}" != "${item}" ]; then
-                where="$( readlink "${where}" )"
-                status=yes
-                break;
-            fi
-            printf "no\n"
+            for ext in ${lib_exts}; do
+                printf "Checking for '${item}.${ext}'... "
+                where="$( gcc -print-file-name="${item}.${ext}" )"
+                if [ "${where}" != "${item}.${ext}" ]; then
+                    where="$( readlink "${where}" )"
+                    status=yes
+                    break 2;
+                fi
+                printf "no\n"
+            done
         done
         if [ -z "${status}" ]; then
             return 1
@@ -478,38 +489,31 @@
 add_to_kconfig_list static_link_ok
 
 # Library checks
+libs_exts="so dylib a"
+
 ncurses_hdrs="ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h"
-ncurses_libs="$( for l in ncursesw ncurses curses; do   \
-                     for x in so a dylib; do            \
-                         printf "lib$l.$x ";            \
-                     done;                              \
-                 done                                   \
-               )"
+ncurses_libs="libncursesw libncurses libcurses"
 has_or_abort lib="${ncurses_libs}"                                          \
+             lib_exts="${libs_exts}"                                        \
              inc="${ncurses_hdrs}"                                          \
              err="The 'ncurses' library is needed fo the menuconfig frontend"
 
-stdcxx_libs="$( for x in so dylib a; do \
-                   printf "libstdc++.$x "; \
-               done \
-             )"
-has_or_abort lib="${stdcxx_libs}" \
+has_or_abort lib="libstdc++"            \
+             lib_exts="${libs_exts}"    \
              err="The 'libstdc++' library is needed to build gcc"
 
 # Yes, we may be checking twice for libstdc++.a
 # The first is because we need one instance of libstdc++ (shared or static)
 # because it is needed for PPL; the second is because the static version is
 # required for static-linking, and if missing, the option is removed.
-has_or_warn  lib="libstdc++.a" \
+has_or_warn  lib="libstdc++"    \
+             lib_exts="a"       \
              err="static 'libstdc++' is needed to statically link the toolchain's executables" \
              kconfig=has_static_libstdcxx
 
-expat_libs="$( for x in so dylib a; do \
-                   printf "libexpat.$x "; \
-               done \
-             )"
-has_or_warn  inc="expat.h" \
-             lib="${expat_libs}" \
+has_or_warn  inc="expat.h"              \
+             lib="libexpat"             \
+             lib_exts="${libs_exts}"    \
              err="The 'expat' header file and library are needed to link cross-gdb's executables" \
              kconfig=has_expat
 
@@ -517,19 +521,18 @@
 # The first is because we need one instance of libexpat (shared or static)
 # because it is needed for cross-gdb; the second is because the static version
 # is required for static-linking, and if missing, the option is removed.
-has_or_warn  lib="libexpat.a" \
+has_or_warn  lib="libexpat" \
+             lib_exts="a"   \
              err="static 'expat' is needed to statically link cross-gdb's executables" \
              kconfig=has_static_expat
 
 for v in 7 6 5 4; do
-    python_incs="${python_incs}$( printf "python2.$v/Python.h " )"
-    python_libs="${python_libs}$( for x in so dylib a; do \
-                                      printf "libpython2.$v.$x "; \
-                                  done \
-                                )"
+    python_incs="${python_incs} python2.${v}/Python.h"
+    python_libs="${python_libs} libpython2.${v}"
 done
-has_or_warn  inc="${python_incs}" \
-             lib="${python_libs}" \
+has_or_warn  inc="${python_incs}"       \
+             lib="${python_libs}"       \
+             lib_exts="${libs_exts}"    \
              err="The 'python' header file and library are needed for some features of cross-gdb"
 
 #---------------------------------------------------------------------

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 2 of 4 v2] configure: disable static linking on Darwin
  2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
@ 2011-06-28 21:57 ` Yann E. MORIN
  2011-07-03  9:09   ` Titus von Boxberg
  2011-06-28 21:57 ` [PATCH 1 of 4 v2] configure: check host system Yann E. MORIN
                   ` (4 subsequent siblings)
  5 siblings, 1 reply; 12+ messages in thread
From: Yann E. MORIN @ 2011-06-28 21:57 UTC (permalink / raw)
  To: crossgcc; +Cc: Bryan Hundven, Titus von Boxberg

 config/cc/gcc.in.2        |   1 +
 config/debug/gdb.in.cross |   1 +
 config/toolchain.in       |   1 +
 configure                 |  24 ++++++++++++++++++++++++
 4 files changed, 27 insertions(+), 0 deletions(-)


# HG changeset patch
# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
# Date 1309201420 -7200
# Node ID 1d66ee93a9a4cc963cad0ba2e245fa4a19e31af8
# Parent  355696b27bc33908a25bade22d917ce6fa99da5d
configure: disable static linking on Darwin

Static liunking is not supported on Darwin, so hide the corresponding
options when the build machine is Darwin.

Reported-by: Andrea Franceschini <therealmorpheu5@gmail.com>
Reported-by: Bryan Hundven <bryanhundven@gmail.com>
Reported-by: "Titus von Boxberg" <titus@v9g.de>
Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>

diff --git a/config/cc/gcc.in.2 b/config/cc/gcc.in.2
--- a/config/cc/gcc.in.2
+++ b/config/cc/gcc.in.2
@@ -44,6 +44,7 @@
     bool
     prompt "Link libstdc++ statically into the gcc binary"
     default y
+    depends on CONFIGURE_static_link_ok
     depends on CONFIGURE_has_static_libstdcxx
     depends on CC_GCC_4_4_or_later
     help
diff --git a/config/debug/gdb.in.cross b/config/debug/gdb.in.cross
--- a/config/debug/gdb.in.cross
+++ b/config/debug/gdb.in.cross
@@ -24,6 +24,7 @@
 config GDB_CROSS_STATIC
     bool
     prompt "Build a static cross gdb"
+    depends on CONFIGURE_static_link_ok
     depends on CONFIGURE_has_static_expat
     help
       A static cross gdb can be usefull if you debug on a machine that is
diff --git a/config/toolchain.in b/config/toolchain.in
--- a/config/toolchain.in
+++ b/config/toolchain.in
@@ -51,6 +51,7 @@
 config STATIC_TOOLCHAIN_POSSIBLE
     bool
     default y
+    depends on CONFIGURE_static_link_ok
     depends on CONFIGURE_has_static_libstdcxx
     # Add new deps here! :-)
 
diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -454,6 +454,30 @@
         ;;
 esac
 
+printf "Checking if static linking is possible... "
+static_link_ok=""
+case "${host}" in
+    Darwin) ;;
+    *)  tmp=.static.tmp
+        if gcc -xc - -static -o "${tmp}" >/dev/null 2>&1<<-_EOF_
+				int main() { return 0; }
+			_EOF_
+        then
+            static_link_ok="y"
+        fi
+        rm -f "${tmp}"
+        ;;
+esac
+if [ "${static_link_ok}" = "y" ]; then
+    printf "yes\n"
+else
+    printf "no\n"
+    printf " * An optional host feature is missing, some features will be disabled\n"
+    printf " * It will not be possible to link binaries statically\n"
+fi
+add_to_kconfig_list static_link_ok
+
+# Library checks
 ncurses_hdrs="ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h"
 ncurses_libs="$( for l in ncursesw ncurses curses; do   \
                      for x in so a dylib; do            \

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH 4 of 4 v2] configure: do not test for static libs if static link is impossible
  2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
                   ` (2 preceding siblings ...)
  2011-06-28 21:57 ` [PATCH 3 of 4 v2] configure: pass the allowed lib extensions to check_for() Yann E. MORIN
@ 2011-06-28 22:04 ` Yann E. MORIN
  2011-06-28 22:23 ` [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
  2011-07-03  8:55 ` Titus von Boxberg
  5 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-06-28 22:04 UTC (permalink / raw)
  To: crossgcc; +Cc: Bryan Hundven, Titus von Boxberg

 configure |  43 +++++++++++++++++++++++++++++++------------
 1 files changed, 31 insertions(+), 12 deletions(-)


# HG changeset patch
# User "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
# Date 1309215153 -7200
# Node ID acd0a5d28a3a941dee8fa472d65dc1bed111a249
# Parent  c1a75083d135ef092e9b5711a278fbca49d5b3c8
configure: do not test for static libs if static link is impossible

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>

diff --git a/configure b/configure
--- a/configure
+++ b/configure
@@ -118,8 +118,15 @@
 #     the prog/inc/lib was found
 #     optional, defaults to none
 #       eg: kconfig=has_libncurses
+# $*: skip=[y|n|]
+#     if set to 'y', skip the test, but still register the
+#     kconfig and var variables; if 'n' or empty, do the
+#     test.
+#     optional, default to 'n'
+#       eg: skip="${static_link_ko}"
 check_for() {
     local lib_exts
+    local skip
     local val
     local item
     local where
@@ -130,7 +137,7 @@
     # but declared by the caller (because it needs it)
     for item in "${@}"; do
         case "${item}" in
-            prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*|lib_exts=*)
+            prog=*|inc=*|lib=*|var=*|ver=*|err=*|kconfig=*|lib_exts=*|skip=*)
                 eval ${item%%=*}=\"${item#*=}\"
                 ;;
             *)  do_error "check_for: incorrect parameters: '${item}'";;
@@ -146,19 +153,25 @@
         ::) do_error "check_for: [prog|inc|lib] is mandatory";;
     esac
 
+    if [ -n "${var}" ]; then
+        add_to_var_list "${var}"
+    fi
     if [ -n "${kconfig}" ]; then
         add_to_kconfig_list "${kconfig}"
     fi
 
+    if [ "${skip}" = "y" ]; then
+        return 0
+    fi
+
     if [ -n "${prog}" ]; then
         for item in ${prog}; do
             printf "Checking for '${item}'... "
             if [ -n "${var}" ]; then
                 eval val="\${${var}}"
                 if [ -n "${val}" ]; then
-                    printf "${val} (cached)\n"
-                    add_to_var_list "${var}"
-                    return 0
+                    status="${val} (cached)\n"
+                    break
                 fi
             fi
             where="$( which "${item}" 2>/dev/null )"
@@ -228,7 +241,6 @@
 
     if [ -n "${var}" ]; then
         eval ${var}='"'"${where}"'"'
-        add_to_var_list "${var}"
     fi
     if [ -n "${kconfig}" ]; then
         eval ${kconfig}=y
@@ -480,8 +492,10 @@
         ;;
 esac
 if [ "${static_link_ok}" = "y" ]; then
+    static_link_ko=""
     printf "yes\n"
 else
+    static_link_ko="y"
     printf "no\n"
     printf " * An optional host feature is missing, some features will be disabled\n"
     printf " * It will not be possible to link binaries statically\n"
@@ -489,7 +503,10 @@
 add_to_kconfig_list static_link_ok
 
 # Library checks
-libs_exts="so dylib a"
+libs_exts="so dylib"
+if [ "${static_link_ok}" = "y" ]; then
+    libs_exts+=" a"
+fi
 
 ncurses_hdrs="ncurses/ncurses.h ncurses/curses.h ncurses.h curses.h"
 ncurses_libs="libncursesw libncurses libcurses"
@@ -506,10 +523,11 @@
 # The first is because we need one instance of libstdc++ (shared or static)
 # because it is needed for PPL; the second is because the static version is
 # required for static-linking, and if missing, the option is removed.
-has_or_warn  lib="libstdc++"    \
-             lib_exts="a"       \
+has_or_warn  lib="libstdc++"                \
+             lib_exts="a"                   \
              err="static 'libstdc++' is needed to statically link the toolchain's executables" \
-             kconfig=has_static_libstdcxx
+             kconfig=has_static_libstdcxx   \
+             skip="${static_link_ko}"
 
 has_or_warn  inc="expat.h"              \
              lib="libexpat"             \
@@ -521,10 +539,11 @@
 # The first is because we need one instance of libexpat (shared or static)
 # because it is needed for cross-gdb; the second is because the static version
 # is required for static-linking, and if missing, the option is removed.
-has_or_warn  lib="libexpat" \
-             lib_exts="a"   \
+has_or_warn  lib="libexpat"             \
+             lib_exts="a"               \
              err="static 'expat' is needed to statically link cross-gdb's executables" \
-             kconfig=has_static_expat
+             kconfig=has_static_expat   \
+             skip="${static_link_ko}"
 
 for v in 7 6 5 4; do
     python_incs="${python_incs} python2.${v}/Python.h"

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0 of 4 v2] No static link on Darwin
  2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
                   ` (3 preceding siblings ...)
  2011-06-28 22:04 ` [PATCH 4 of 4 v2] configure: do not test for static libs if static link is impossible Yann E. MORIN
@ 2011-06-28 22:23 ` Yann E. MORIN
  2011-07-03  8:55 ` Titus von Boxberg
  5 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-06-28 22:23 UTC (permalink / raw)
  To: crossgcc; +Cc: Bryan Hundven, Titus von Boxberg

All,

On Tuesday 28 June 2011 23:56:19 Yann E. MORIN wrote:
> This patch series tries to fix the various static linking issues
> seen on Darwin /MacOS-X.
[--SNIP--]

This is mostly an RFC. If you can test on MacOS-X, I'd be interested in
reading about your opinions.

This is not intended to be a fix-it-all series, but mostly a starting
point taking care of the low-hanging fruits. Then we can add more fixes
and/or workarounds step-by-step...

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1 of 4 v2] configure: check host system
  2011-06-28 21:57 ` [PATCH 1 of 4 v2] configure: check host system Yann E. MORIN
@ 2011-07-03  7:52   ` Titus von Boxberg
  2011-07-03  9:57     ` Yann E. MORIN
  0 siblings, 1 reply; 12+ messages in thread
From: Titus von Boxberg @ 2011-07-03  7:52 UTC (permalink / raw)
  To: crossgcc maillist


Am 28.06.2011 um 23:56 schrieb Yann E. MORIN:
> +case "${host}" in
> +    Linux)  ;;
> +    Cygwin) ;;
> +    Darwin)
> +        printf " * Runing under Darwin is not fully supported\n"
> +        printf " * Although not strictly required, using MacPorts is highly recommended\n"
> +        printf " * Even though, you may encounter some weird behavior\n"
> +        ;;
> +    *)
> +        printf " * Runing under %s is not fully tested\n" "${host}"
> +        printf " * You may encounter some weird behavior\n"
> +        ;;

I don't like the wording for Darwin.
What does "fully supported" mean?
There is no "using MacPorts". What has to be done is given in docs/C.txt
And macports can in no way prevent "weird behaviour".

If you do want to print a message on Darwin, the message for *) is better suited.

Regards
Titus


--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0 of 4 v2] No static link on Darwin
  2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
                   ` (4 preceding siblings ...)
  2011-06-28 22:23 ` [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
@ 2011-07-03  8:55 ` Titus von Boxberg
  2011-07-03  9:48   ` Yann E. MORIN
  5 siblings, 1 reply; 12+ messages in thread
From: Titus von Boxberg @ 2011-07-03  8:55 UTC (permalink / raw)
  To: Yann E. MORIN; +Cc: crossgcc maillist

Am 28.06.2011 um 23:56 schrieb Yann E. MORIN:

> Hello All!
> 
> This patch series tries to fix the various static linking issues
> seen on Darwin /MacOS-X.
> 
> First patch is mostly cosmetics, but the result is used by the second
> patch.
> 
> Second patch disables all static linking options in the menuconfig
> if the host can't link statically. Applies to hosts where a trivial
> static-link test fails. Unconditionnaly applies to Darwin.
> 
> Third patch paves the way for fourth patch.
> 
> Fourth patch removes the check for static libs if host can't
> link statically (as determined in patch 2).

Looks good to me.
My config/configure.in looks reasonable
(nothing is equivalent to 'default n'?):

# Generated file, do not edit
# Default values as found by ./configure

config CONFIGURE_static_link_ok
    bool

config CONFIGURE_has_static_libstdcxx
    bool

config CONFIGURE_has_expat
    bool
    default y

config CONFIGURE_has_static_expat
    bool
-----------------


When I manually edit the configure.in to allow static
libstdc++ and static linking the diff of the .config files looks like this.
To me it looks OK.

--- .config	2011-07-03 10:45:06.000000000 +0200
+++ config-static	2011-07-03 10:44:43.000000000 +0200
@@ -1,8 +1,10 @@
 #
 # Automatically generated make config: don't edit
 # The crosstool-NG configuration menu
-# Sun Jul  3 10:45:06 2011
+# Sun Jul  3 10:44:15 2011
 #
+CT_CONFIGURE_static_link_ok=y
+CT_CONFIGURE_has_static_libstdcxx=y
 CT_CONFIGURE_has_expat=y
 CT_MODULES=y
 
@@ -149,6 +151,8 @@
 CT_USE_SYSROOT=y
 CT_SYSROOT_NAME="sysroot"
 CT_SYSROOT_DIR_PREFIX=""
+CT_STATIC_TOOLCHAIN_POSSIBLE=y
+# CT_STATIC_TOOLCHAIN is not set
 CT_TOOLCHAIN_PKGVERSION="test"
 CT_TOOLCHAIN_BUGURL=""
 
@@ -310,6 +314,7 @@
 CT_CC_ENABLE_CXX_FLAGS=""
 CT_CC_CORE_EXTRA_CONFIG_ARRAY=""
 CT_CC_EXTRA_CONFIG_ARRAY=""
+CT_CC_STATIC_LIBSTDCXX=y
 
 #
 # Optimisation features
----------------------


Regards
Titus


--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2 of 4 v2] configure: disable static linking on Darwin
  2011-06-28 21:57 ` [PATCH 2 of 4 v2] configure: disable static linking " Yann E. MORIN
@ 2011-07-03  9:09   ` Titus von Boxberg
  2011-07-03  9:55     ` Yann E. MORIN
  0 siblings, 1 reply; 12+ messages in thread
From: Titus von Boxberg @ 2011-07-03  9:09 UTC (permalink / raw)
  To: Yann E. MORIN; +Cc: crossgcc maillist

Am 28.06.2011 um 23:56 schrieb Yann E. MORIN:
> +if [ "${static_link_ok}" = "y" ]; then
> +    printf "yes\n"
> +else
> +    printf "no\n"
> +    printf " * An optional host feature is missing, some features will be disabled\n"
> +    printf " * It will not be possible to link binaries statically\n"
make the message more precise:
"It will not be possible to statically link the tool chain's binaries"

I'd also find those messages clearer if you'd replace the second asterisk
by indenting space and put a colon after the "An optional ...is missing...".
Then the user understands immediately that the second message is
giving the detail for the first general hint.

Regards
Titus


--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 0 of 4 v2] No static link on Darwin
  2011-07-03  8:55 ` Titus von Boxberg
@ 2011-07-03  9:48   ` Yann E. MORIN
  0 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-07-03  9:48 UTC (permalink / raw)
  To: Titus von Boxberg; +Cc: crossgcc maillist

Titus, All,

On Sunday 03 July 2011 10:55:11 Titus von Boxberg wrote:
> Am 28.06.2011 um 23:56 schrieb Yann E. MORIN:
> > This patch series tries to fix the various static linking issues
> > seen on Darwin /MacOS-X.
[-SNIP--]
> Looks good to me.
> My config/configure.in looks reasonable
> (nothing is equivalent to 'default n'?):

Indeed, 'n' is the default if there is no explicit value.

> When I manually edit the configure.in to allow static
> libstdc++ and static linking the diff of the .config files looks like this.
> To me it looks OK.
[--SNIP--]

OK, thank you for testing!

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 2 of 4 v2] configure: disable static linking on Darwin
  2011-07-03  9:09   ` Titus von Boxberg
@ 2011-07-03  9:55     ` Yann E. MORIN
  0 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-07-03  9:55 UTC (permalink / raw)
  To: Titus von Boxberg; +Cc: crossgcc maillist

Titus, All,

On Sunday 03 July 2011 11:09:29 Titus von Boxberg wrote:
> Am 28.06.2011 um 23:56 schrieb Yann E. MORIN:
> > +if [ "${static_link_ok}" = "y" ]; then
> > +    printf "yes\n"
> > +else
> > +    printf "no\n"
> > +    printf " * An optional host feature is missing, some features will be disabled\n"
> > +    printf " * It will not be possible to link binaries statically\n"
> make the message more precise:
> "It will not be possible to statically link the tool chain's binaries"
> 
> I'd also find those messages clearer if you'd replace the second asterisk
> by indenting space and put a colon after the "An optional ...is missing...".
> Then the user understands immediately that the second message is
> giving the detail for the first general hint.

OK, both good ideas. Will do.

Thanks for testing.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH 1 of 4 v2] configure: check host system
  2011-07-03  7:52   ` Titus von Boxberg
@ 2011-07-03  9:57     ` Yann E. MORIN
  0 siblings, 0 replies; 12+ messages in thread
From: Yann E. MORIN @ 2011-07-03  9:57 UTC (permalink / raw)
  To: crossgcc; +Cc: Titus von Boxberg

Titus, All,

On Sunday 03 July 2011 09:52:31 Titus von Boxberg wrote:
> 
> Am 28.06.2011 um 23:56 schrieb Yann E. MORIN:
> > +case "${host}" in
> > +    Linux)  ;;
> > +    Cygwin) ;;
> > +    Darwin)
> > +        printf " * Runing under Darwin is not fully supported\n"
> > +        printf " * Although not strictly required, using MacPorts is highly recommended\n"
> > +        printf " * Even though, you may encounter some weird behavior\n"
> > +        ;;
> > +    *)
> > +        printf " * Runing under %s is not fully tested\n" "${host}"
> > +        printf " * You may encounter some weird behavior\n"
> > +        ;;
> 
> I don't like the wording for Darwin.
> What does "fully supported" mean?
> There is no "using MacPorts". What has to be done is given in docs/C.txt
> And macports can in no way prevent "weird behaviour".
> 
> If you do want to print a message on Darwin, the message for *) is better
> suited.

OK, I'll remove the Darwin special case.

Regards,
Yann E. MORIN.

-- 
.-----------------.--------------------.------------------.--------------------.
|  Yann E. MORIN  | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software  Designer | \ / CAMPAIGN     |  ___               |
| +33 223 225 172 `------------.-------:  X  AGAINST      |  \e/  There is no  |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL    |   v   conspiracy.  |
'------------------------------^-------^------------------^--------------------'

--
For unsubscribe information see http://sourceware.org/lists.html#faq

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2011-07-03  9:57 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-06-28 21:57 [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
2011-06-28 21:57 ` [PATCH 2 of 4 v2] configure: disable static linking " Yann E. MORIN
2011-07-03  9:09   ` Titus von Boxberg
2011-07-03  9:55     ` Yann E. MORIN
2011-06-28 21:57 ` [PATCH 1 of 4 v2] configure: check host system Yann E. MORIN
2011-07-03  7:52   ` Titus von Boxberg
2011-07-03  9:57     ` Yann E. MORIN
2011-06-28 21:57 ` [PATCH 3 of 4 v2] configure: pass the allowed lib extensions to check_for() Yann E. MORIN
2011-06-28 22:04 ` [PATCH 4 of 4 v2] configure: do not test for static libs if static link is impossible Yann E. MORIN
2011-06-28 22:23 ` [PATCH 0 of 4 v2] No static link on Darwin Yann E. MORIN
2011-07-03  8:55 ` Titus von Boxberg
2011-07-03  9:48   ` Yann E. MORIN

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).