[opensuse-programming] Building for i386 on a x86_64 system?
All, our production environment is AMD64, so x86_64. Our test environment is still old i386, and will likely be for a while. How do you guys go about building for an i386 target on your x86_64 workstations? In plain practical terms - I know how to build 32bit objects, but how do you organise source code, builds etc? A typical project would involve one or more binaries, some of our own libraries and some external ditto. /Per Jessen, Zürich --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming+help@opensuse.org
On 08/26/2008 07:52 AM, Per Jessen wrote:
our production environment is AMD64, so x86_64. Our test environment is still old i386, and will likely be for a while. How do you guys go about building for an i386 target on your x86_64 workstations? In plain practical terms - I know how to build 32bit objects, but how do you organise source code, builds etc? A typical project would involve one or more binaries, some of our own libraries and some external ditto.
My company's product is built for a 32-bit environment. We actually have a very complex build environment because we build for RHEL, SUSE, Solaris, and AIX. One of the things we do is to maintain a directory where we have all the specific compilers, such as gcc-4.1.2. Under that we have directories for the appropriate OS, such as sles-i686-9.0 or rhel-i686-4.0. Then each of our makefiles include another file, that has a macro, in my build envoronment it is DIR=/nfsmounts/tools/gcc-4.1.2/rhel-i686-4.0 In another make include file, we specify the OS, and the appropriate CFLAGS and CXXFLAGS. One of the defines is -D__rhel_i686__. Most of the source code is reasonably generic with some ifdefs for some header differences. But, when I was building code of IA64, I had to create some makefiles. A lot of the system specifics are actually in makefiles where they have some specific makefiles for the different platforms. The company uses Rational Clearcase in their development build environments, but we use CVS in this office. Both allow for branches. I've never worked in our company's Toronto office, and I don't know the specifics of how the source control is arranged. -- Jerry Feldman <gaf@blu.org> Treasurer Boston Linux and Unix user group http://www.blu.org PGP key id: 537C5846 PGP Key fingerprint: 3D1B 8377 A3C0 A5F2 ECBB CA3B 4607 4319 537C 5846
Hi! Per Jessen wrote:
our production environment is AMD64, so x86_64. Our test environment is still old i386, and will likely be for a while.
We have a similar situation in our company. Most of the time, we still build 32-bit executables for the various OS we have to support (all i386 and x86_64 RHEL-based, I have to admit). We also have a 64-bit build but that's hardly ever used in production for various reasons.
How do you guys go about building for an i386 target on your x86_64 workstations? In plain practical terms - I know how to build 32bit objects, but how do you organise source code, builds etc? A typical project would involve one or more binaries, some of our own libraries and some external ditto.
We have dedicated build hosts for the various platforms and OS. The source code and various other files are kept in an SVN repository (which is hosted by a special server). The master Makefile simply includes a <hostname>.mk file which contains all the host-dependent (i.e. system- and OS-dependent) settings. Very simple, but very effective. The build hosts also have the required MPI libraries and other tools installed. We can trigger automatic nightly builds on all build hosts. The latest source code (trunk) and the source code for bugfix releases are stored in different branches in the SVN. The releases for one OS are built separately but on the same build host. We're running a full suite of automatic tests to identify obvious problems with a certain build and/or release. We have our own R&D cluster to fully test the various executables on all supported platforms (i386 and x86_64). Our experience shows that dedicated build hosts are simpler to handle and operate than, for instance, building 32-bit and 64-bit executables on the same machine running a 64-bit OS. Our company has developed software for the last 36 years. Take care, Thomas --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming+help@opensuse.org
Thomas Hertweck wrote:
Hi!
Per Jessen wrote:
our production environment is AMD64, so x86_64. Our test environment is still old i386, and will likely be for a while.
We have a similar situation in our company. Most of the time, we still build 32-bit executables for the various OS we have to support (all i386 and x86_64 RHEL-based, I have to admit). We also have a 64-bit build but that's hardly ever used in production for various reasons.
We did consider just running 32bit executables, but as the production environment is highly likely to remain on AMD64, we have pretty much decided to move to 64bit. I think we'll have to upgrade the test-systems any way, but until we do, we're running in 32+64 mode.
How do you guys go about building for an i386 target on your x86_64 workstations? In plain practical terms - I know how to build 32bit objects, but how do you organise source code, builds etc? A typical project would involve one or more binaries, some of our own libraries and some external ditto.
We have dedicated build hosts for the various platforms and OS. The source code and various other files are kept in an SVN repository (which is hosted by a special server). The master Makefile simply includes a <hostname>.mk file which contains all the host-dependent (i.e. system- and OS-dependent) settings. Very simple, but very effective.
Yep, I can see how that would work. Not sure if we will want to establish separate build-systems - our code is only used internally, we don't ship it anywhere.
Our experience shows that dedicated build hosts are simpler to handle and operate than, for instance, building 32-bit and 64-bit executables on the same machine running a 64-bit OS.
Thanks, I'll bear that in mind. /Per Jessen, Zürich --------------------------------------------------------------------- To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming+help@opensuse.org
participants (3)
-
Jerry Feldman
-
Per Jessen
-
Thomas Hertweck