From owner-freebsd-small Fri Nov 17 5:59:13 2000 Delivered-To: freebsd-small@freebsd.org Received: from genius.systems.pavilion.net (genesis.tao.org.uk [194.242.131.254]) by hub.freebsd.org (Postfix) with ESMTP id 5261C37B4CF for ; Fri, 17 Nov 2000 05:58:08 -0800 (PST) Received: by genius.systems.pavilion.net (Postfix, from userid 100) id BDB459B2D; Fri, 17 Nov 2000 14:01:47 +0000 (GMT) Date: Fri, 17 Nov 2000 14:01:47 +0000 From: Josef Karthauser To: freebsd-small@FreeBSD.ORG Subject: Help required with a make file. Message-ID: <20001117140147.B33511@pavilion.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5i X-NCC-RegID: uk.pavilion Organisation: Pavilion Internet plc, Lees House, 21-23 Dyke Road, Brighton, England Phone: +44-845-333-5000 Fax: +44-845-333-5001 Mobile: +44-403-596893 Sender: owner-freebsd-small@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG I've come a bit unstuck with a make file generated by crunchgen. I found a problem last night with some stale object files which eventually pointed to the fact that my recent changes to crunchgen don't quite do what I'd expect. If you track the making of 'sps' below, crunchgen tries to make 'sps.lo', which depends upon all of it's object files $(sps_OBJPATHS). Problem is that these don't exist until sps_make has been run and done a 'make obj' and populated them with .o's. I can fix this by rewriting it as: sps.lo: sps_stub.o sps_make Strangely the sps_make target appears to rebuild the .o's anyway, whether they've already been built or not. i.e. if I run the sps_make run by hand in a shell the objects get build once and subsequent invokations don't rebuild them, but if I run: 'make -f z.mk sps_make' the o's get rebuild everytime. Can anyone shed a light on this for me. My make knowledge isn't as strong as it could be. Joe # z.mk - generated from z.conf by crunchgen 0.2 LIBS= BUILDOPTS+= -DNOPAM -DRELEASE_CRUNCH -DNOSECURE -DNOCRYPT -DNONETGRAPH -DNOIPSEC CRUNCHED_OBJS= sps.lo vm.lo ns.lo ls.lo zls.lo SUBMAKE_TARGETS= sps_make vm_make ns_make ls_make zls_make SUBCLEAN_TARGETS= sps_clean vm_clean ns_clean ls_clean zls_clean z: z.o $(CRUNCHED_OBJS) $(CC) -static -o z z.o $(CRUNCHED_OBJS) $(LIBS) strip z all: objs exe objs: $(SUBMAKE_TARGETS) exe: z realclean: clean subclean clean: rm -f z *.lo *.o *_stub.c subclean: $(SUBCLEAN_TARGETS) # -------- sps sps_SRCDIR=/usr/src/release/picobsd/tinyware/sps sps_OBJS= sps.o sps_make: (export MAKEOBJDIRPREFIX=/usr/obj/picobsd/netz; \ cd $(sps_SRCDIR) && make obj && \ make $(BUILDOPTS) $(sps_OPTS) depend && \ make $(BUILDOPTS) $(sps_OPTS) $(sps_OBJS)) sps_clean: (cd $(sps_SRCDIR) && make clean) sps_OBJPATHS= /usr/obj/picobsd/netz/usr/src/release/picobsd/tinyware/sps/sps.o sps_stub.c: echo "int _crunched_sps_stub(int argc, char **argv, char **envp){return main(argc,argv,envp);}" >sps_stub.c sps.lo: sps_stub.o $(sps_OBJPATHS) ld -dc -r -o sps.lo sps_stub.o $(sps_OBJPATHS) crunchide -k _crunched_sps_stub sps.lo # -------- vm vm_SRCDIR=/usr/src/release/picobsd/tinyware/vm vm_OBJS= vm.o vm_make: (export MAKEOBJDIRPREFIX=/usr/obj/picobsd/netz; \ cd $(vm_SRCDIR) && make obj && \ make $(BUILDOPTS) $(vm_OPTS) depend && \ make $(BUILDOPTS) $(vm_OPTS) $(vm_OBJS)) vm_clean: (cd $(vm_SRCDIR) && make clean) vm_OBJPATHS= /usr/obj/picobsd/netz/usr/src/release/picobsd/tinyware/vm/vm.o vm_stub.c: echo "int _crunched_vm_stub(int argc, char **argv, char **envp){return main(argc,argv,envp);}" >vm_stub.c vm.lo: vm_stub.o $(vm_OBJPATHS) ld -dc -r -o vm.lo vm_stub.o $(vm_OBJPATHS) crunchide -k _crunched_vm_stub vm.lo # -------- ns ns_SRCDIR=/usr/src/release/picobsd/tinyware/ns ns_OBJS= ns.o ns_make: (export MAKEOBJDIRPREFIX=/usr/obj/picobsd/netz; \ cd $(ns_SRCDIR) && make obj && \ make $(BUILDOPTS) $(ns_OPTS) depend && \ make $(BUILDOPTS) $(ns_OPTS) $(ns_OBJS)) ns_clean: (cd $(ns_SRCDIR) && make clean) ns_OBJPATHS= /usr/obj/picobsd/netz/usr/src/release/picobsd/tinyware/ns/ns.o ns_stub.c: echo "int _crunched_ns_stub(int argc, char **argv, char **envp){return main(argc,argv,envp);}" >ns_stub.c ns.lo: ns_stub.o $(ns_OBJPATHS) ld -dc -r -o ns.lo ns_stub.o $(ns_OBJPATHS) crunchide -k _crunched_ns_stub ns.lo # -------- ls ls_SRCDIR=/usr/src/bin/ls ls_OBJS= cmp.o ls.o print.o util.o ls_make: (export MAKEOBJDIRPREFIX=/usr/obj/picobsd/netz; \ cd $(ls_SRCDIR) && make obj && \ make $(BUILDOPTS) $(ls_OPTS) depend && \ make $(BUILDOPTS) $(ls_OPTS) $(ls_OBJS)) ls_clean: (cd $(ls_SRCDIR) && make clean) ls_OBJPATHS= /usr/obj/picobsd/netz/usr/src/bin/ls/cmp.o /usr/obj/picobsd/netz/usr/src/bin/ls/ls.o /usr/obj/picobsd/netz/usr/src/bin/ls/print.o /usr/obj/picobsd/netz/usr/src/bin/ls/util.o ls_stub.c: echo "int _crunched_ls_stub(int argc, char **argv, char **envp){return main(argc,argv,envp);}" >ls_stub.c ls.lo: ls_stub.o $(ls_OBJPATHS) ld -dc -r -o ls.lo ls_stub.o $(ls_OBJPATHS) crunchide -k _crunched_ls_stub ls.lo # -------- zls zls_SRCDIR=/tmp/zls zls_OBJS= cmp.o ls.o print.o util.o zls_make: (export MAKEOBJDIRPREFIX=/usr/obj/picobsd/netz; \ cd $(zls_SRCDIR) && make obj && \ make $(BUILDOPTS) $(zls_OPTS) depend && \ make $(BUILDOPTS) $(zls_OPTS) $(zls_OBJS)) zls_clean: (cd $(zls_SRCDIR) && make clean) zls_OBJPATHS= /usr/obj/picobsd/netz/tmp/zls/cmp.o /usr/obj/picobsd/netz/tmp/zls/ls.o /usr/obj/picobsd/netz/tmp/zls/print.o /usr/obj/picobsd/netz/tmp/zls/util.o zls_stub.c: echo "int _crunched_zls_stub(int argc, char **argv, char **envp){return main(argc,argv,envp);}" >zls_stub.c zls.lo: zls_stub.o $(zls_OBJPATHS) ld -dc -r -o zls.lo zls_stub.o $(zls_OBJPATHS) crunchide -k _crunched_zls_stub zls.lo # ======== -- Josef Karthauser FreeBSD: How many times have you booted today? Technical Manager Viagra for your server (http://www.uk.freebsd.org) Pavilion Internet plc. [joe@pavilion.net, joe@uk.freebsd.org, joe@tao.org.uk] To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-small" in the body of the message