Point taken in regards to the shell, although busybox which is pretty standard on embedded devices and that can run configure scripts. I was referring to obscure platforms such as a DEC workstation. Anyway, in regards to autotools, this is typically how you cross compile (this is assuming ideal conditions, which is extremely rare with cross-compiling with autotoos):

$> ./configure --build=i686-apple-darwin8.7.0 --host=armeb-unknown-linux
(build on Mac OS X 10.4.7. Intel. Resuting binaries should be for ARM big-endian Linux (this is an actual device I own))

Configure will print stuff like this (this is from memory, I don't have a cross-compiler installed at the moment since I just reformatted)
check if we are cross-compiling ... no
checking build system type... i686-apple-darwin8.7.1
checking target system type... armeb-unknown-linux
checking host system type... armeb-unknown-linux
...
checking for armeb-linux-gcc... yes
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking if armeb-linux-gcc is a cross-compiler... yes
checking whether we are cross compiling... yes
checking for gcc ... yes
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
(... includes special tests for cross-compiling)
config.status: creating Makefile

$> make
gcc some-tool-needed-during-build.c -o some-tool-needed-during-build
armeb-iinux-gcc -c file-to-be-crossbuilt.c -o file-to-be-crossbuilt
./some-tool-needed-during-build *blah*

You get my point. Unfortunately, it doesn't work like this very often, and in fact the only package I've even seen properly generate build tools natively and cross-compile the rest is binutils and GCC itself. Anyway, the point of cross-compiling is that you don't need to run the compile on said device, so autotools in its current form fits all three scenarios, the only reason I brought it up was that / bin/sh on UNIX-like systems is pretty much a universal standard, and configure knows how to handle quite a few obscure compilers.

On Sep 6, 2006, at 5:15 PM, Sean McBride wrote
I'd just like to mention that the Mac community would dearly love to see
cross-compilation support in cmake.

Are you familiar with Apple's concept of a "Universal Binary":
<http://en.wikipedia.org/wiki/Universal_binary>

Basically, it's a kind of cross compilation.  On a PowerPC Mac you can
compile your executable for both PPC and Intel Macs, and vice versa.
CMake does support Universal Binaries actually, you may want to see this
bug for background:
<http://www.vtk.org/Bug/bug.php?op=show&bugid=2492>

This works fine with CMake. Add C/CXX flags -march ppc -march i386 (I think, been awhile, I can look this up), and gcc will spit out a university binary. Rosetta works for command line tools, so it will work perfectly. I've done this with a few other packages that don't use autotoos.
Michael




On Sep 6, 2006, at 4:21 PM, William A. Hoffman wrote:

At 03:55 PM 9/6/2006, Brandon J. Van Every wrote:
Michael Casadevall wrote:

My intent here is not to start a flamewar between autotools and cmake, In some cases, autotools is the proper tool vs cmake due to cross-compiling (which will hopefully fixed) and the fact that you need the cmake executable to build any CMake package. autotools configure script merely needs a shell interpreter,

What do you mean "merely" needs a shell interpreter? For a fair chunk of embedded devices out there, that's tantamount to saying that the Titanic "merely" needs to pull into port. There are 3 cases for embedded devices:

- systems with a Bourne shell and ccmake available
- systems with a Bourne shell available
- systems without any kind of shell, or really any kind of resources

Yes, Autoconf has more cross-compilation reach than CMake at present, but it hardly covers everything.
Autoconf may need only shell, but CMake only needs a C++ compiler. Which if you are building a c++ program, you should already have, but you are not always
going to have a shell.

As for cross-compilation support, I have never done much with it, what tools does autoconf provide to support cross-compiling? If someone who has used autoconf for cross compiling could explain how it works with autoconf, it would be helpful when
we add support in CMake.

-Bill

_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to