BCD and OpenSSL

Regan Heath regan at netmail.co.nz
Mon Jun 4 02:00:33 PDT 2007


Bill Baxter Wrote:
> Gregor Richards wrote:
> > Regan Heath wrote:
> >> Hi all,
> >>
> >> I decided to have another crack at BCD and the openssl headers.  I 
> >> found a windows bcdgen binary package, mentioned in the dsource 
> >> forums, but am having a little trouble using it.
> >>
> >> So far I have a copy of the openssl headers in a directory:
> >>
> >> G:\Src\openssl\h\openssl
> >>
> >> and plan to port them to D files in:
> >>
> >> G:\Src\openssl\d\
> >>
> >> so, I fire up bcdgen like so:
> >>
> >> G:\Src\openssl\h>bcdgen openssl\ssl.h openssl -b -C
> >> openssl/ssl.h:173:27: openssl/e_os2.h: No such file or directory
> >> openssl/ssl.h:176:26: openssl/comp.h: No such file or directory
> >> openssl/ssl.h:179:25: openssl/bio.h: No such file or directory
> >> openssl/ssl.h:183:26: openssl/x509.h: No such file or directory
> >> openssl/ssl.h:185:28: openssl/crypto.h: No such file or directory
> >> openssl/ssl.h:186:27: openssl/lhash.h: No such file or directory
> >> openssl/ssl.h:187:28: openssl/buffer.h: No such file or directory
> >> openssl/ssl.h:189:25: openssl/pem.h: No such file or directory
> >> openssl/ssl.h:191:26: openssl/kssl.h: No such file or directory
> >> openssl/ssl.h:192:31: openssl/safestack.h: No such file or directory
> >> openssl/ssl.h:193:30: openssl/symhacks.h: No such file or directory
> >> openssl/ssl.h:982:26: openssl/ssl2.h: No such file or directory
> >> openssl/ssl.h:983:26: openssl/ssl3.h: No such file or directory
> >> openssl/ssl.h:984:71: openssl/tls1.h: No such file or directory
> >> openssl/ssl.h:985:46: openssl/dtls1.h: No such file or directory
> >> openssl/ssl.h:986:27: openssl/ssl23.h: No such file or directory
> >>
> >> I tried various permutations of the -I option but I dont think it 
> >> applies here as I am converting C headers, not C++. 
> >> Anyone have a suggestion?  bcdgen seems to need an option for 
> >> specifying import paths or something.
> >>
> >> Hopefully I am not being too dense, any help is appreciated.
> >>
> >> Regan Heath
> > 
> > (WTF? People use BCD?)
> > 
> > You need to put the include path in CFLAGS for C, or CXXFLAGS for C++. 
> > That is: set CFLAGS=-I<your_favorite_path>
> > 
> > The -I flag to bcd.gen should be -Iopenssl/ (it's the path prepended to 
> > the header names in #include lines)
> > 
> > Yeah, I know, bcd.gen isn't well documented ... if people actually use 
> > it I may have to get back around to developing it :P
> > 
> 
> I was looking into using it to wrap SuperLU after looking at SuperLU's 
> headers and realizing that the API was going to take a lot of work to 
> wrap by hand.  However I only managed to get most of the way through 
> installing BCD's prerequisites so far.  But I'll probably get back to it 
> before too long.

Yeah, the prereqs almost stopped me from trying it in the first place.  First try and I got the prereqs installed, I thought, but the compile wouldn't work (I'm on windows).  Next try and half way thru I realised there was a binary package I could download to avoid all this jumping through hoops, so I took it.

Ages ago I started writing a BCD program myself, but without the foresight to use an existing compiler front end and XML as an intermediate format.  That and I thought writing a compiler might be fun, and enlightening.  I managed to write the lexer/tokenizer for C and was working on the C preprocessor when I went away to South America for 6 months.  When I got back Gregor had beaten me to it!

I think BCD is (and could be much more) hugely useful in D gaining traction, especially if you consider the huge number of C/C++ libraries we could be offering.  The web/install idea is genius, that in itself could make people switch.

Regan Heath



More information about the Digitalmars-d mailing list