jon@csvax.caltech.edu (04/18/86)
Does anyone have suggestions on producing makefiles which are portable between BSD and Sys{III,V}? I am stuggling with this due to our recent acquisition of some Sys V machines. The most obvious problems I have found are: use of MFLAGS in BSD as opposed to MAKEFLAGS different options accepted by lint, cc, etc. need to define SHELL= or SHELL=/bin/sh to Sys V make (if the environment variable SHELL is not sh) in order to get sh constructs in make targets to work The obvious approach is to put #ifdefs in makefiles just like in C code and run makefiles through cpp, but this is inelegant (especially to the person who receives a copy of your code and just wants to type 'make'). In addition, there's no guarantee cpp will be available everywhere (say if the functionality is built into the C compiler). Jon Leech (jon@csvax.caltech.edu || ...seismo!cit-vax!jon) Caltech Computer Science Graphics Group __@/
moss@BRL.ARPA (04/18/86)
What I do, is set things up in the Makefile like so: BSD_CFLAGS=-g -O -DBSD S52_CFLAGS=-O BSD_LIBES=-lfb -lrt S52_LIBES=${S5_LIBDIR}/libfb.a ${S5_LIBDIR}/librt.a CFLAGS=${S52_CFLAGS} #default is System V Rev. 2 LIBES=${S52_LIBES} SHELL=/usr/5bin/sh ... Then I have a shell script called "make_bsd" which looks like: #!/bin/sh make CC=/bin/cc LIBES=\${BSD_LIBES} CFLAGS=\${BSD_CFLAGS} SHELL=/bin/sh $* If BSD make doesn't recognize MAKEFLAGS, and MFLAGS isn't recognized by Sys V, it shouldn't hurt to define both in the makefile. My complaint is that the Gould UTX loader requires a "-m" option to increase the stack allocation, and other loaders barf on it. This makes things even messier. -moss