Patchwork [U-Boot] tools/os_support: add OS X Lion support

login
register
mail settings
Submitter Andreas Bießmann
Date Nov. 24, 2011, 9:36 p.m.
Message ID <1322170576-50858-1-git-send-email-andreas.devel@googlemail.com>
Download mbox | patch
Permalink /patch/127609/
State Accepted
Commit 6f26185435fa196ab6ca605575fc880d2d0b3e27
Headers show

Comments

Andreas Bießmann - Nov. 24, 2011, 9:36 p.m.
OS X Lion's c-library implements getline(), therefore prevent including the old
helper implementation for __DARWIN_C_LEVEL < 200809L.

Without this patch following error occours:

---8<---
In file included from os_support.h:32,
                 from img2srec.c:55:
getline.h:1: error: conflicting types for ‘getline’
/usr/include/stdio.h:449: error: previous declaration of ‘getline’ was
here
--->8---

Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
---
total: 0 errors, 0 warnings, 15 lines checked

NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE

0001-tools-os_support-add-OS-X-Lion-support.patch has no obvious style problems and is ready for submission.

 tools/os_support.c |    2 +-
 tools/os_support.h |    2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)
Marek Vasut - Nov. 25, 2011, 8:23 a.m.
> OS X Lion's c-library implements getline(), therefore prevent including the
> old helper implementation for __DARWIN_C_LEVEL < 200809L.
> 
> Without this patch following error occours:
> 
> ---8<---
> In file included from os_support.h:32,
>                  from img2srec.c:55:
> getline.h:1: error: conflicting types for ‘getline’
> /usr/include/stdio.h:449: error: previous declaration of ‘getline’ was
> here
> --->8---
> 
> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
> ---
> total: 0 errors, 0 warnings, 15 lines checked
> 
> NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX
> MULTISTATEMENT_MACRO_USE_DO_WHILE
> 
> 0001-tools-os_support-add-OS-X-Lion-support.patch has no obvious style
> problems and is ready for submission.
> 
>  tools/os_support.c |    2 +-
>  tools/os_support.h |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tools/os_support.c b/tools/os_support.c
> index 1ed89e6..319c0fe 100644
> --- a/tools/os_support.c
> +++ b/tools/os_support.c
> @@ -23,6 +23,6 @@
>  #ifdef __MINGW32__
>  #include "mingw_support.c"
>  #endif
> -#ifdef __APPLE__
> +#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
>  #include "getline.c"
>  #endif
> diff --git a/tools/os_support.h b/tools/os_support.h
> index 7dcbee4..5bf7add 100644
> --- a/tools/os_support.h
> +++ b/tools/os_support.h
> @@ -28,7 +28,7 @@
>  #include "mingw_support.h"
>  #endif
> 
> -#ifdef __APPLE__
> +#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
>  #include "getline.h"
>  #endif

Acked-by: Marek Vasut <marek.vasut@gmail.com>
Marek Vasut - Nov. 25, 2011, 8:25 a.m.
> > OS X Lion's c-library implements getline(), therefore prevent including
> > the old helper implementation for __DARWIN_C_LEVEL < 200809L.
> > 
> > Without this patch following error occours:
> > 
> > ---8<---
> > In file included from os_support.h:32,
> > 
> >                  from img2srec.c:55:
> > getline.h:1: error: conflicting types for ‘getline’
> > /usr/include/stdio.h:449: error: previous declaration of ‘getline’ was
> > here
> > --->8---
> > 
> > Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
> > ---
> > total: 0 errors, 0 warnings, 15 lines checked
> > 
> > NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX
> > MULTISTATEMENT_MACRO_USE_DO_WHILE
> > 
> > 0001-tools-os_support-add-OS-X-Lion-support.patch has no obvious style
> > problems and is ready for submission.
> > 
> >  tools/os_support.c |    2 +-
> >  tools/os_support.h |    2 +-
> >  2 files changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/tools/os_support.c b/tools/os_support.c
> > index 1ed89e6..319c0fe 100644
> > --- a/tools/os_support.c
> > +++ b/tools/os_support.c
> > @@ -23,6 +23,6 @@
> > 
> >  #ifdef __MINGW32__
> >  #include "mingw_support.c"
> >  #endif
> > 
> > -#ifdef __APPLE__
> > +#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
> > 
> >  #include "getline.c"
> >  #endif
> > 
> > diff --git a/tools/os_support.h b/tools/os_support.h
> > index 7dcbee4..5bf7add 100644
> > --- a/tools/os_support.h
> > +++ b/tools/os_support.h
> > @@ -28,7 +28,7 @@
> > 
> >  #include "mingw_support.h"
> >  #endif
> > 
> > -#ifdef __APPLE__
> > +#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
> > 
> >  #include "getline.h"
> >  #endif
> 
> Acked-by: Marek Vasut <marek.vasut@gmail.com>

Picked to:
u-boot-staging.git / marek.vasut@gmail.com
Andy Fleming - Nov. 25, 2011, 7:29 p.m.
I've been trying to get the compiler to run on Mac OS X for a bit, but
haven't managed to get it to build (let alone get U-Boot to build).
Any chance you could send me some pointers to how you got one up and
running?

On Thu, Nov 24, 2011 at 3:36 PM, Andreas Bießmann
<andreas.devel@googlemail.com> wrote:
> OS X Lion's c-library implements getline(), therefore prevent including the old
> helper implementation for __DARWIN_C_LEVEL < 200809L.
>
> Without this patch following error occours:
>
> ---8<---
> In file included from os_support.h:32,
>                 from img2srec.c:55:
> getline.h:1: error: conflicting types for ‘getline’
> /usr/include/stdio.h:449: error: previous declaration of ‘getline’ was
> here
> --->8---
>
> Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com>
> ---
> total: 0 errors, 0 warnings, 15 lines checked
>
> NOTE: Ignored message types: COMPLEX_MACRO CONSIDER_KSTRTO MINMAX MULTISTATEMENT_MACRO_USE_DO_WHILE
>
> 0001-tools-os_support-add-OS-X-Lion-support.patch has no obvious style problems and is ready for submission.
>
>  tools/os_support.c |    2 +-
>  tools/os_support.h |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/tools/os_support.c b/tools/os_support.c
> index 1ed89e6..319c0fe 100644
> --- a/tools/os_support.c
> +++ b/tools/os_support.c
> @@ -23,6 +23,6 @@
>  #ifdef __MINGW32__
>  #include "mingw_support.c"
>  #endif
> -#ifdef __APPLE__
> +#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
>  #include "getline.c"
>  #endif
> diff --git a/tools/os_support.h b/tools/os_support.h
> index 7dcbee4..5bf7add 100644
> --- a/tools/os_support.h
> +++ b/tools/os_support.h
> @@ -28,7 +28,7 @@
>  #include "mingw_support.h"
>  #endif
>
> -#ifdef __APPLE__
> +#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
>  #include "getline.h"
>  #endif
>
> --
> 1.7.7.4
>
> _______________________________________________
> U-Boot mailing list
> U-Boot@lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot
>
Andreas Bießmann - Nov. 26, 2011, 10:52 a.m.
Dear Andy Fleming,

Am 25.11.2011 um 20:29 schrieb Andy Fleming:

> I've been trying to get the compiler to run on Mac OS X for a bit, but
> haven't managed to get it to build (let alone get U-Boot to build).

Well building sandbox will (currently) not work. But having a (self compiled) GNU cross toolchain for some architecture you can build u-boot for boards with that arch. I've tested some arm devices and can successfully build u-boot for at91rm9200ek, at91sam9260ek, dockstar and devkit8000 on my OS X box (since 10.5). Last upgrade to 10.7 broke the mentioned getline() in tools.

> Any chance you could send me some pointers to how you got one up and
> running?

Getting a cross toolchain running on OS X is (nearly) the same effort than using a linux box as host system. You need to get the tools for building the toolchain, the sources for the toolchain itself and some receipts to build it.
I use fink [1] to get the base system (gnu coreutils, flex/bison, awk, sed, …) and then build my toolchain from scratch with some self built makefiles (I could provide them but they are rather outdated). You can also use macports [2], AFAIK they have some ports for at least gnu arm cross chains.

If you like to build your toolchain for your own I recommend reading some about 'How to build a cross toolchain'. Dan Kegel's (outdated) 'Building and Testing gcc toolchain' [3] has some pointers for OS X as host system and is in general a good starting point for toolchain building. LFS [4] has some general pointers about building a toolchain from scratch and CLFS [5] considers special cases for cross compilation.
Another starting point could be crosstool-ng [6], ELDK [7], buildroot [8] and a lot of other collections of receipts to build your toolchain (note I have used none of them on OS X but it may work).
I'm currently trying to get pengutronix ptxdist [9] working on OS X to build my toolchain with that tool (OSELAS toolchain [10]). We use these toolchain at work, using it at home too would be great.

I hope I could answer your question, if not feel free to ask ...

best regards

Andreas Bießmann

[1] http://www.finkproject.org/
[2] http://www.macports.org/
[3] http://kegel.com/crosstool/crosstool-0.43/doc/crosstool-howto.html
[4] http://www.linuxfromscratch.org/
[5] http://trac.cross-lfs.org/
[6] http://crosstool-ng.org/
[7] http://www.denx.de/wiki/DULG/ELDK
[8] http://buildroot.uclibc.org/
[9] http://ptxdist.org/software/ptxdist/index_en.html
[10] http://www.ptxdist.org/oselas/toolchain/index_en.html
Mike Frysinger - Nov. 26, 2011, 11:55 p.m.
On Friday 25 November 2011 14:29:02 Andy Fleming wrote:
> I've been trying to get the compiler to run on Mac OS X for a bit, but
> haven't managed to get it to build (let alone get U-Boot to build).
> Any chance you could send me some pointers to how you got one up and
> running?

i don't recall having any problems when compiling binutils/gcc to run on OS X.  
i had to disable nls, but that was easy enough.
-mike

Patch

diff --git a/tools/os_support.c b/tools/os_support.c
index 1ed89e6..319c0fe 100644
--- a/tools/os_support.c
+++ b/tools/os_support.c
@@ -23,6 +23,6 @@ 
 #ifdef __MINGW32__
 #include "mingw_support.c"
 #endif
-#ifdef __APPLE__
+#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
 #include "getline.c"
 #endif
diff --git a/tools/os_support.h b/tools/os_support.h
index 7dcbee4..5bf7add 100644
--- a/tools/os_support.h
+++ b/tools/os_support.h
@@ -28,7 +28,7 @@ 
 #include "mingw_support.h"
 #endif
 
-#ifdef __APPLE__
+#if defined(__APPLE__) && __DARWIN_C_LEVEL < 200809L
 #include "getline.h"
 #endif