One thing related to this is the sepeartion of the SDK part.
Curently the SDK is integral part of the whole source tree. One minor
change can cause massive rebuilds even if not needed. The import
libraries are even part of the modules that export the functions which
is stupid, because the interfaces are expected to be stable.
Separating the SDK completely from the sources is not possible atm, but
I suggest separating it from the main folder.
It could be done similar to how rosapps and rostets are managed. As a
sepeate checkout. But instead of putting it into the hardcoded modules
subfolder, I would suggest a configurable path. So that multiple reactos
checkouts could use one SDK checkout. Each of the main checkouts
contains a config file with the sdk path. A default path could be set by
RosBE or in the config-template. I would suggest to do that with rosapps
and rostests, too. So you only need one checkout of rostests for
multiple base checkouts. You can probably do that with hardlinks but not
everyone can/wants to do that.
The libraries would only be rebuild if you update the SDK.
Sources\
\reactos-trunk\...
\reactos-amd64\...
\reactos-arwinss\...
\reactos-sdk\
\include\
\lib\ <- static libs (crt, nt, ...) here
\import\ <- spec files here
\rosapps\
\rostests\
It would probably be a good idea to sync our headers / libs with
mingw-w64 as much as possible, so maybe some day we could actually
outsource the whole SDK.
Other seperations like core / win32 / wine etc can be done in a similar way.
It would require to have multiple checkouts to compile, but I think
that's a reasonable efford.
Or all parts could be put into trunk/source/... then you can checkout
the whole folder if you don't want to hassle with multiple checkouts or
trunk/source/sdk/ and trunk/source/reactos seperately if you like.
I would also suggest that "clean" command gets fixed. Currently it
always deletes all stuff from the specified source folder. Even if I am
executing it from a different checkout folder. That sucks. It should
only clean everything in the current folder. That way modules / the sdk
would not automatically be cleaned. Because that's in most cases not
what you want. A "clean all" could be used to clean all dependencies as
well.
Regards,
Timo