diff mbox

qemu-doc.texi: Add information on compiling source code on Mac OS X

Message ID 6D2243E1-9AB5-43A1-B6B1-A99C71A48B69@gmail.com
State New
Headers show

Commit Message

Programmingkid Aug. 6, 2015, 3:35 p.m. UTC
Add information on compiling source code on Mac OS X
to the documentation.

Signed-off-by: John Arbuckle <programmingkidx@gmail.com>

---
This patch may depend on the other patch I sent in for the qemu-doc.texi file. 

 qemu-doc.texi |   41 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 38 insertions(+), 3 deletions(-)

Comments

Peter Maydell Aug. 7, 2015, 5 p.m. UTC | #1
On 6 August 2015 at 16:35, Programmingkid <programmingkidx@gmail.com> wrote:
> Add information on compiling source code on Mac OS X
> to the documentation.
>
> Signed-off-by: John Arbuckle <programmingkidx@gmail.com>
>
> ---
> This patch may depend on the other patch I sent in for the qemu-doc.texi
> file.
>
>  qemu-doc.texi |   41 ++++++++++++++++++++++++++++++++++++++---
>  1 files changed, 38 insertions(+), 3 deletions(-)
>
> diff --git a/qemu-doc.texi b/qemu-doc.texi
> index 9a8f353..eb4ce8d 100644
> --- a/qemu-doc.texi
> +++ b/qemu-doc.texi
> @@ -3024,9 +3024,44 @@ and all other qemu-system-@var{target}.exe compiled
> for Win32.
>  @node Mac OS X
>  @section Mac OS X
>
>
>
> -The Mac OS X patches are not fully merged in QEMU, so you should look
> -at the QEMU mailing list archive to have all the necessary
> -information.

Heh, that's laughably ancient. Thanks for writing a fix for this.

At the top of this section is probably a good place to say

# QEMU should run on Mac OS X versions 10.5 and later.

> +After downloading the QEMU source code, double-click it to expand it.
> +
> +Then configure QEMU to build the emulator you want using the --target-list
> option:
> +@example
> +./configure --target-list=ppc-softmmu,i386-softmmu --disable-sdl
> --disable-gtk
> +@end example

I think it would be better to just make configure disable
SDL and GTK automatically when building the OSX binary.
I'll write a patch for this...

Suggestions like --target-list= belong in a host-OS-agnostic
section of the documentation; they're not OSX specific.

> +
> +@smalldisplay
> +*Disabling SDL and GTK support is suggested because QEMU runs poorly with
> them.
> +@end smalldisplay
> +
> +Start building QEMU using the make command:
> +@example
> +make
> +@end example
> +
> +Note: Apple supplied versions of gcc may not work with QEMU. If after the
> configure

I think the first and most important thing we should say is:

# If you have a recent version of Mac OS X (OSX 10.7 or better
# with Xcode 4.2 or better) we recommend building QEMU with the
# default compiler provided by Apple for your version of OSX as
# part of Xcode (which will be 'clang'). The configure script will
# automatically pick this.

That will cover almost everybody who wants to build QEMU
(on the assumption that most people are running a new OSX).

Then after that you can have the information about older
OSX which don't have a working compiler:

# Apple supplied versions of GCC do not work with QEMU.
# If after the configure step ....

(https://trac.macports.org/wiki/UsingTheRightCompiler
suggests that XCode 3.2 for OSX 10.6 provided a non-default
'clang'; I don't have a 10.6 + 3.2 system to check whether that
clang will build QEMU though. If it does then we should
recommend using it rather than building gcc. 10.5 users
are definitely stuck with finding or building a non-Apple
compiler, though.)

> +step you see a message like this:
> +@example
> +ERROR: Your compiler does not support the __thread specifier for
> +       Thread-Local Storage (TLS). Please upgrade to a version that does.
> +@end example
> +You may have to build your own version of gcc from source. Expect that to
> take
> +several hours. GCC 4.3 or above would work. More information can be found
> here:
> +https://gcc.gnu.org/install/ @*
> +
> +These are some of the third party binaries of gcc available for download:
> +@itemize
> +@item Homebrew http://brew.sh/
> +@item https://www.litebeam.net/gcc/gcc_472.pkg
> +@item http://www.macports.org/ports.php?by=name&substr=gcc
> +@end itemize
> +
> +You can have several versions of GCC on your system. To specify a certain
> version,
> +use the --cc and --cxx options.
> +@example
> +./configure --cxx=<path of your c++ compiler> --cc=<path of your c
> compiler> <other options>
> +@end example
>

thanks
-- PMM
Programmingkid Aug. 7, 2015, 8:32 p.m. UTC | #2
On Aug 7, 2015, at 1:00 PM, Peter Maydell wrote:

>> -The Mac OS X patches are not fully merged in QEMU, so you should look
>> -at the QEMU mailing list archive to have all the necessary
>> -information.
> 
> Heh, that's laughably ancient. Thanks for writing a fix for this.
Your welcome. 

> 
> At the top of this section is probably a good place to say
> 
> # QEMU should run on Mac OS X versions 10.5 and later.
Good suggestion. Will include a system requirement section.

> 
>> +After downloading the QEMU source code, double-click it to expand it.
>> +
>> +Then configure QEMU to build the emulator you want using the --target-list
>> option:
>> +@example
>> +./configure --target-list=ppc-softmmu,i386-softmmu --disable-sdl
>> --disable-gtk
>> +@end example
> 
> I think it would be better to just make configure disable
> SDL and GTK automatically when building the OSX binary.
> I'll write a patch for this...

If you are certain this patch will fix the problem, then removing the SDL and GTK info would be fine.

> 
> Suggestions like --target-list= belong in a host-OS-agnostic
> section of the documentation; they're not OSX specific.
OK.

> 
>> +
>> +@smalldisplay
>> +*Disabling SDL and GTK support is suggested because QEMU runs poorly with
>> them.
>> +@end smalldisplay
>> +
>> +Start building QEMU using the make command:
>> +@example
>> +make
>> +@end example
>> +
>> +Note: Apple supplied versions of gcc may not work with QEMU. If after the
>> configure
> 
> I think the first and most important thing we should say is:
> 
> # If you have a recent version of Mac OS X (OSX 10.7 or better
> # with Xcode 4.2 or better) we recommend building QEMU with the
> # default compiler provided by Apple for your version of OSX as
> # part of Xcode (which will be 'clang'). The configure script will
> # automatically pick this.
> 
> That will cover almost everybody who wants to build QEMU
> (on the assumption that most people are running a new OSX).
> 
> Then after that you can have the information about older
> OSX which don't have a working compiler:
> 
> # Apple supplied versions of GCC do not work with QEMU.
> # If after the configure step ....
> 
> (https://trac.macports.org/wiki/UsingTheRightCompiler
> suggests that XCode 3.2 for OSX 10.6 provided a non-default
> 'clang'; I don't have a 10.6 + 3.2 system to check whether that
> clang will build QEMU though. If it does then we should
> recommend using it rather than building gcc. 10.5 users
> are definitely stuck with finding or building a non-Apple
> compiler, though.)

I just checked and my system does include clang. Didn't even know about it. Too bad it didn't work to compile QEMU. It doesn't support Thread-Local Storage. It is probably too old (version 3.0).
Peter Maydell Aug. 7, 2015, 11:13 p.m. UTC | #3
On 7 August 2015 at 21:32, Programmingkid <programmingkidx@gmail.com> wrote:
>
> On Aug 7, 2015, at 1:00 PM, Peter Maydell wrote:
>> (https://trac.macports.org/wiki/UsingTheRightCompiler
>> suggests that XCode 3.2 for OSX 10.6 provided a non-default
>> 'clang'; I don't have a 10.6 + 3.2 system to check whether that
>> clang will build QEMU though. If it does then we should
>> recommend using it rather than building gcc. 10.5 users
>> are definitely stuck with finding or building a non-Apple
>> compiler, though.)
>
> I just checked and my system does include clang. Didn't even know
> about it. Too bad it didn't work to compile QEMU. It doesn't support
> Thread-Local Storage. It is probably too old (version 3.0).

Thanks for testing that -- you're running OSX 10.6, right?
I guess the TLS stuff got added to clang for the version
that's in Xcode 4.2. So it looks like we have a fairly
straightforward
 * 10.5 and 10.6 -> compile a gcc or download a third-party build
 * 10.7 and above -> use Xcode's clang
division.

-- PMM
Programmingkid Aug. 8, 2015, 1:06 a.m. UTC | #4
On Aug 7, 2015, at 7:13 PM, Peter Maydell wrote:

> On 7 August 2015 at 21:32, Programmingkid <programmingkidx@gmail.com> wrote:
>> 
>> On Aug 7, 2015, at 1:00 PM, Peter Maydell wrote:
>>> (https://trac.macports.org/wiki/UsingTheRightCompiler
>>> suggests that XCode 3.2 for OSX 10.6 provided a non-default
>>> 'clang'; I don't have a 10.6 + 3.2 system to check whether that
>>> clang will build QEMU though. If it does then we should
>>> recommend using it rather than building gcc. 10.5 users
>>> are definitely stuck with finding or building a non-Apple
>>> compiler, though.)
>> 
>> I just checked and my system does include clang. Didn't even know
>> about it. Too bad it didn't work to compile QEMU. It doesn't support
>> Thread-Local Storage. It is probably too old (version 3.0).
> 
> Thanks for testing that -- you're running OSX 10.6, right?
Yes.

> I guess the TLS stuff got added to clang for the version
> that's in Xcode 4.2. So it looks like we have a fairly
> straightforward
> * 10.5 and 10.6 -> compile a gcc or download a third-party build
> * 10.7 and above -> use Xcode's clang
> division.

Sounds right.
diff mbox

Patch

diff --git a/qemu-doc.texi b/qemu-doc.texi
index 9a8f353..eb4ce8d 100644
--- a/qemu-doc.texi
+++ b/qemu-doc.texi
@@ -3024,9 +3024,44 @@  and all other qemu-system-@var{target}.exe compiled for Win32.
 @node Mac OS X
 @section Mac OS X
 
-The Mac OS X patches are not fully merged in QEMU, so you should look
-at the QEMU mailing list archive to have all the necessary
-information.
+After downloading the QEMU source code, double-click it to expand it.
+
+Then configure QEMU to build the emulator you want using the --target-list option:
+@example
+./configure --target-list=ppc-softmmu,i386-softmmu --disable-sdl --disable-gtk
+@end example
+
+@smalldisplay
+*Disabling SDL and GTK support is suggested because QEMU runs poorly with them.
+@end smalldisplay
+
+Start building QEMU using the make command:
+@example
+make
+@end example
+
+Note: Apple supplied versions of gcc may not work with QEMU. If after the configure
+step you see a message like this:
+@example
+ERROR: Your compiler does not support the __thread specifier for
+       Thread-Local Storage (TLS). Please upgrade to a version that does.
+@end example
+You may have to build your own version of gcc from source. Expect that to take
+several hours. GCC 4.3 or above would work. More information can be found here:
+https://gcc.gnu.org/install/ @*
+
+These are some of the third party binaries of gcc available for download:
+@itemize
+@item Homebrew http://brew.sh/
+@item https://www.litebeam.net/gcc/gcc_472.pkg
+@item http://www.macports.org/ports.php?by=name&substr=gcc
+@end itemize
+
+You can have several versions of GCC on your system. To specify a certain version,
+use the --cc and --cxx options.
+@example
+./configure --cxx=<path of your c++ compiler> --cc=<path of your c compiler> <other options>
+@end example
 
 @node Make targets
 @section Make targets