Hi,

On Wed, Jan 23, 2013 at 10:06 PM, Stefan Marr <[email protected]>wrote:

> Hi:
>
> On 23 Jan 2013, at 18:51, Ciprian Teodorov wrote:
>
> > The libs should be 32 bits... but it seems it is not this the issue...
> > I have compiled clang+llvm from sources using the source distribution
> at: http://www.llvm.org/releases/
> >
> > then I have built the whole llvm distribution (using the getting started
> guide):
> > ../src/configure --prefix=<path-to-install-dir> --enable-optimized
> --enable-jit --target=i686-apple-darwin10
>
> I don't know what the issue is, but building it myself was indeed the
> solution.
>
> cool...

> So, for everyone who likes to use it: (from memory)
>
>   wget http://www.llvm.org/releases/3.1/llvm-3.1.src.tar.gz
>   wget http://www.llvm.org/releases/3.1/clang-3.1.src.tar.gz
>
>   tar xvf llvm-3.1.src.tar.gz
>   tar xvf clang-3.1.src.tar.gz
>
>   mv clang-3.1.src llvm-3.1.src/tools/clang
>
>   cd llvm-3.1.src
>   mkdir build
>   cd build
>   ../configure --enable-optimized --enable-jit --target=i686-apple-darwin10
>   make -j2 # or -j or -j8 or so, compiling takes quite a while...
>
> thank you for putting it all down

>
> If everything compiles well, you'll have a compatible
> `llvm-3.1.src/build/Release+Asserts/lib/libclang.dylib`
>
> Now I am running in some bugs, I think.
> I get a change browser which tells me that it is going to create a class
> with stuff.
> But then I get a RBAddMethodChange, which doesn't have a `changeClass`.
> The reason is that the class is not actually created before the method is
> supposed to be added, I think.
>
> If I manually create the class, it seems to work properly.
>
> This is a problem with Pharo 2.0 ChangesBrowser which does not keep the
items Ordered. My quick fix is to change the underlying structure used by
PickListModel.
In
PickListModel>>initialize
replace:
*pickedItemsHolder := Set new asValueHolder.*
by:
        *pickedItemsHolder := **OrderedCollection new asValueHolder.*
 and it will work.

Beside that cosmetic problem:
> How is the generator supposed to work exactly, does it also load
> indirectly referenced header classes?
> Doesn't seem to do that.
>
No it doesn't... at least not for now. The C to AST conversion supports
that, however I've run into some problems with system includes, which use
"bizzare" constructs.
Besides in my opinion, recursivelly visiting all includes is not a good
idea since It my pull lots of definitions that are not necessary.

But if you really want it, you can do it by changing
CLForeignLibInterfaceGenerator>>wrapperForHeader: aHeaderSpec  to send the
#everything message to the CLHeaderParser. Such as:

CLForeignLibInterfaceGenerator>>wrapperForHeader: aHeaderSpec
 headerAST := (CLHeaderParser builder: CLNodeBuilder new)
headerFile: aHeaderSpec fileName;
 compilationOptions: aHeaderSpec compilationOptions;
everything ;
 parseHeader.

But then will really get everything, getc, time, lchmod ??? you know
everything...

The example I am experimenting with is:
> https://github.com/libgit2/libgit2/blob/development/include/git2.h which
> includes all the required stuff.
>
> Well, if I add all the headers manually to the generation, I run into the
> trouble of the non-existing classes again.
>

So in my opinion the nicest way to do it is just create a list of the
headers we really want, and use that such in my LLVM example

Happy hacking,
Ciprian

>
> Will try to work around that.
>
> Thanks so far
> Stefan
>
>
>
> --
> Stefan Marr
> Software Languages Lab
> Vrije Universiteit Brussel
> Pleinlaan 2 / B-1050 Brussels / Belgium
> http://soft.vub.ac.be/~smarr
> Phone: +32 2 629 2974
> Fax:   +32 2 629 3525
>
>
>


-- 
Dr. Ciprian TEODOROV
Ingénieur Développement CAO

tél : 06 08 54 73 48
mail : [email protected]
www.teodorov.ro

Reply via email to