On Wed, May 02, 2001 at 11:54:10PM -0700, Jeff Bailey wrote: > On Thu, May 03, 2001 at 02:23:08PM +1000, Glenn McGrath wrote: > > > I was going to do this > > > > ifeq ($(strip $(shell uname)),Linux) > > LIBBB_CSRC+= interface.c module_syscalls.c syscalls.c > > endif
Parsing the output of uname in this way is barely aceptable for postinst scripts. This should be done in a config.guess file and the output of config.guess can be checked. You can use the config.guess of automake, or better use autoconf for the whole thing. If you look at /usr/share/automake/config.guess, you will see how careful it is to allow cross-compiling. You will also see that it uses various uname invocations to assemble the system configuration, but with some post procession. > > to isolate linux specific code, but im told this wont work under a cross > > compiler. > > > > I dont know much about setting up cross compilers... anyone have a > > better suggestion for modifying a makefile (it doesnt use a configure) > > to switch behaviour if compiling for linux or the Hurd ? > > In general, if you're not using autoconf and automake, your Makefile > probably won't usefully cross-compile anyway. (Unless you've very > intentionally made this possible) Stressing "probably". Setting CC can do wonders. > Are you doing this in the context of a Debian package? If yes, look for > $(DEB_BUILD_GNU_TYPE) > to be 'i386-linux' or 'i386-gnu' Please do $(DEB_BUILD_GNU_SYSTEM) comparison with linux or gnu, so you match non-i386, too (unless you don't want to). > Failing that, your uname trick is just as good as any others. If this is upstream software, it should provide a proper mechanism to maintain portability. As a quick hack, just to get things rolling, the above hack will work. Another idea is to add this as a feature. Something like configure --with-linux-syscalls, where this is default on linux, but disabled on all other platforms. Thanks, Marcus

