I am trying to extend Boost Build to compile C# files using csc.exe on Windows and msc (Mono compiler) on Linux and OS X.
First, for backward compatibility reasons, I am using version 1.49.0 of boost and building Boost Build v2 using the source provided in that distribution.
The main issues I'm running into are the following:
1) How do I set up platform-dependent compiler names and option delimiters (/ for windows and - for other OS's)?
2) How do I create a "library" that is called <library name>.dll on all platforms rather than, say, lib<library name>.dylib on OS X?
3) Most importantly, how do I get the right path to the output of a target? When I do the following on OS X:
feature cs-reference : : free dependency path ;
flags mcs.make-exe CS_REFERENCE <cs-reference> ;
actions make-exe
{
mcs -target:exe -r:$(CS_REFERENCE) -out:$(<) $(>)
}
and my Jamfile has
lib cslib : cs_source
;
exe test : test.cs
: <cs-reference>cslib
;
and I do "bjam -n", I get
mcs -target:exe -r:<pbin/darwin-4.2.1/debug/address-model-64/threading-multi>libcslib.dylib -out:bin/darwin-4.2.1/debug/address-model-64/threading-multi/test test.cs
Note the spurious "<p" and ">" in the option "-r:". How do I get rid of that?