Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 5 Dec 2001 13:08:21 -0500
From:      The Anarcat <anarcat@anarcat.dyndns.org>
To:        Libh <freebsd-libh@freebsd.org>
Subject:   MAKEOBJDIR
Message-ID:  <20011205180820.GA24937@shall.anarcat.dyndns.org>

next in thread | raw e-mail | index | archive | help

--gKMricLos+KVdGMg
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

At last!!!

I digged a bit in /usr/share/mk/*.mk to see how the makeworld process
was doing to put compiled versions in /usr/obj instead of ${.CURDIR}.

It's all related to the *environment* variable MAKEOBJDIR.

In other words:

anarcat@shall[~/libh/bin/tclh]% make
Warning: Object directory not changed from original /u/anarcat/libh/bin/tclh
c++  -g -fpic -DPIC -I/usr/local/include/tcl8.3    -DHSYSTEM_FILE -DHSYSTEM=
_DISK -DHSYSTEM_HUI -DHSYSTEM_SYSINSTALL -DHSYSTEM_DATABASE -DSTATIC -c tcl=
h.cc
=2E..
anarcat@shall[~/libh/bin/tclh]% ls
CVS/      Makefile  tclh.cc   tclh.o	tclh.static
anarcat@shall[~/libh/bin/tclh]%=20

But:

anarcat@shall[~/libh/bin/tclh]% rm ../../compile/none/tclh.o=20
anarcat@shall[~/libh/bin/tclh]% MAKEOBJDIR=3D../../compile/none make
c++  -g -fpic -DPIC -I/usr/local/include/tcl8.3    -DHSYSTEM_FILE -DHSYSTEM=
_DISK -DHSYSTEM_HUI -DHSYSTEM_SYSINSTALL -DHSYSTEM_DATABASE -DSTATIC -c /u/=
anarcat/libh/bin/tclh/tclh.cc
=2E..
anarcat@shall[~/libh/bin/tclh]% ll ../../compile/none/tclh.o
-rw-r--r--  1 anarcat  anarcat  41028  5 d=E9c 12:54 ../../compile/none/tcl=
h.o
anarcat@shall[~/libh/bin/tclh]%=20

Neat, uh?

So I think I will start hacking the build process to adopt a 'make
world'-like method. That is, a "make" in compile/ will call a:

@cd .. && MAKEOBJDIR=3D${.CURDIR}/${UITYPE} make

so that we can scrap the compile/*/Makefiles and use compile/Makefile as
a director. libh/Makefile will then *not* direct the build to compile/
but to bin/ and lib/.

Ideally, we would need a src/ directory. Because the current setup is
nice, if you:

cd libh && make

you get what's expected: a regular build.=20

On the other hand, if I make the MAKEOBJDIR modifs, "cd libh && make"
will do a build in each bin/ and lib/ subdirectories, *not* storing the
binaries in compile/ but in the individual directories. There could be a
special target (all/world) that would DTRT, however.

Putting the source (bin & lib) in a seperate directory will allow the
libh/Makefile to DTRT, that is, call make with the MAKEOBJDIR env in
src/.

This has the advantage that some gross hacks in compile/Makefile.inc can
now be removed. The compiled directories now do not depend on
compile/Makefile.inc, but on the individual lib and bin Makefiles.

I will put that into code and send a patch here for review, since this
is rather unusual.

And I really think moving everything to src/ would not be a bad idea.
That would involve repo-surgery, which thing I cannot do.

What do you people think about that?

A.

--gKMricLos+KVdGMg
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.6 (FreeBSD)
Comment: For info see http://www.gnupg.org

iEYEARECAAYFAjwOYpMACgkQttcWHAnWiGeUBgCbBWN8RTvHvv6YH2BcCdFO08Hz
mrQAn0roK2Ab/Ks9Tq+uXJ0tw3N9vzGH
=MWQ/
-----END PGP SIGNATURE-----

--gKMricLos+KVdGMg--

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-libh" in the body of the message




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