[EROS-Arch] Re: links deprecated

Jonathan S. Shapiro shap@eros-os.org
Sun, 26 Nov 2000 17:04:18 -0500


> How about this:
>
> (Note that there is already a -Ibase/sys/arch/i486/include in the build,
as
> well as -Ibase/sys.)
> Remove the symlinks base/sys/eros/machine and base/sys/machine.
> Add symlinks base/sys/arch/i486/include/machine ->
base/sys/arch/i486/machine
> and base/sys/arch/i486/include/erosMachine -> base/sys/eros/i486.
> Change the ten files that have #include <eros/machine/...> to #include
> <erosMachine/...>.

Unfortunately, your solution won't work. It will work fine in the kernel
tree, but it will screw up the library builds something awful, because they
need to be able to pull in machine-specific headers too.

I've gone ahead and made some changes in the build tree (I'm checking them
in as I type this -- be patient). I'm unhappy about them, because the "make
all" target is now even more broken then it was before (actually, at this
point 'make all' should almost certainly be retired), but the changes
eliminate all but one of the symlinks. The last symlink is created only down
in the per-configuration kernel build directory, so that one shouldn't be a
big problem. I can eliminate that one by renaming a directory if it becomes
an issue, but renaming directories is a sufficient pain in the butt that I
didn't want to do it from home over a slow link.

The way things work now is:

1. Headers for a given architecture (e.g. i486)  now get installed in
$(EROS_ROOT)/include/eros/i486/ (a directory)

2. Headers for the target of compilation ALSO get installed into
$(EROS_ROOT)/include/eros/machine/ (a directory)

To support separate target builds, we're going to need to change the logic
of the EROS_ROOT variable throughout, because we need to have a distinct
target of installation for each build. The current tree really isn't set up
for this, but it isn't a conceptually difficult change. I recommend that we
defer this until we actually *have* a second architecture, however. As it
happens, I may be about to start one.