Sconstruct for win32

Here is the pre-pre-pre alpha of the file, llease be kind <g>

I give up on TableGen... cannot build the flex/bison emitted files ;-(
With my hacked version of the checkout the script build Fibonacci.exe and HowToUseJIT.exe among with the proper libraries.

I included also a demo version of the HowToUseJIT Visual studio project generated by the script.
You can debug the program in the usual way with VS, stepping betweeen the source code. Keep in mind that the VS project is updated automatically by scons, so if you want to modify some flags do it via the script.

Enjoy.

llvm.zip (23.8 KB)

Hi Paolo,

I quickly went over your SConstruct file. So here are a few comments:

* It would be nice if it is broken down to smaller files (I see you
mention this in the comments). Also a file per tool/library can give us
what make cannot: cd into a tools subdir and run scons: this will build
the tool and all its dependances.
* It seems that a lot of the configure checks are missing. If we ever
use scons I believe we are going to use it for unix builds as well
(instead of maintaining both Makefiles and Sconstruct files), so it
needs to be complete in that respect. Note that configure can still be
used with scons. Using it will make this transition easier.
* Compiling TableGen is a must!
* One of the more involved pieces that need to make it into scons to be
a viable alternative is rules (or Builders in scons lingo) that build
llvm bytecode files, libraries, executables. This is currently missing.

After the above are resolved... there are a couple of more issues to be
solved:

* interfacing with our test suite
* interfacing with our projects

In other words scons should provide us with at least the current
functionality of the build system. If you need more information, feel
free to ask questions!

Thanks for your efforts!

* It would be nice if it is broken down to smaller files (I see you
mention this in the comments). Also a file per tool/library can give us
what make cannot: cd into a tools subdir and run scons: this will build
the tool and all its dependances.

Thats true, splitting it is a must. I simply feel more confortable during early stage of
development to keep all compact.
But note that you can currently select what target you want to build via the command line.
Every builded target can be supplied.

* It seems that a lot of the configure checks are missing. If we ever
use scons I believe we are going to use it for unix builds as well
(instead of maintaining both Makefiles and Sconstruct files), so it
needs to be complete in that respect. Note that configure can still be
used with scons. Using it will make this transition easier.

True. I've never used written unix configure or autoconf files, so I'm a stranger
in a strange land there. Note that's it's also the first time I try to use the scons
configure context, and I'm feeling that I've not grasped them totally.

My primary goal is to be able to use LLVM under VC in windows, and I took scons
for it's ability of keeping the projects file updated. I'm not pushing for a replace of the
standard configure/make dance... but can be an interesting target for the future.

* Compiling TableGen is a must!

The problem is the flex bison stuff ;-(
So along with TableGen is a problem compiling also all the other tools that use them.
Thanks to what you pointed out to me, I was able to generate the proper files from
.l and .y, but I'm not able to compile them with VC.

* One of the more involved pieces that need to make it into scons to be
a viable alternative is rules (or Builders in scons lingo) that build
llvm bytecode files, libraries, executables. This is currently missing.

Writing builders in scons it's easy, as It's python under the wood. That's an easy part.

* interfacing with our test suite
* interfacing with our projects

The test suite is pretty a must...

Actually, supporting llvm-test is not a must: it can be done later, and
remain makefiles until it needs to be dealt with. This is one of the
advantages of splitting it out from the main repository. Projects however
are a must :slight_smile:

-Chris