Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 17 Nov 2000 14:01:47 +0000
From:      Josef Karthauser <joe@pavilion.net>
To:        freebsd-small@FreeBSD.ORG
Subject:   Help required with a make file.
Message-ID:  <20001117140147.B33511@pavilion.net>

next in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20001117140147.B33511>