Hi Ciprian:
On 23 Jan 2013, at 22:06, Stefan Marr wrote:
> Well, if I add all the headers manually to the generation, I run into the
> trouble of the non-existing classes again.
After working around the order issue, I am still running into more issues.
Some of the classes for which methods are generated are completely missing in
the list of generated classes, and other changes in the list result in
colliding renames of callback classes.
I will try to generate the bindings step by step, seeing what I actually need.
But if you would have a chance to look into these problems, that would be great.
Below I added the methods I used to generate the bindings.
Thanks a lot
Stefan
!CLForeign2NBGenerator class methodsFor: 'libgit2' stamp: 'StefanMarr 1/23/2013
22:04'!
libgit2Headers
^ {'git2.h'.
'git2/version.h'.
'git2/common.h'.
'git2/threads.h'.
'git2/errors.h'.
'git2/types.h'.
'git2/oid.h'.
'git2/signature.h'.
'git2/odb.h'.
'git2/repository.h'.
'git2/revwalk.h'.
'git2/merge.h'.
'git2/graph.h'.
'git2/refs.h'.
'git2/reflog.h'.
'git2/revparse.h'.
'git2/object.h'.
'git2/blob.h'.
'git2/commit.h'.
'git2/tag.h'.
'git2/tree.h'.
'git2/diff.h'.
'git2/index.h'.
'git2/config.h'.
'git2/transport.h'.
'git2/remote.h'.
'git2/clone.h'.
'git2/checkout.h'.
'git2/push.h'.
'git2/attr.h'.
'git2/ignore.h'.
'git2/branch.h'.
'git2/refspec.h'.
'git2/net.h'.
'git2/status.h'.
'git2/indexer.h'.
'git2/submodule.h'.
'git2/notes.h'.
'git2/reset.h'.
'git2/message.h'.
'git2/pack.h'.
'git2/stash.h'.}! !
!CLForeign2NBGenerator class methodsFor: 'libgit2' stamp: 'StefanMarr 1/3/2013
19:41'!
libgit2Mapping
| path includeDir options builder hFiles |
path := self libgit2Path.
includeDir := path / 'include'.
options := {('-I' , (path / 'include') fullName).
'-D__STDC_CONSTANT_MACROS'.
'-D__STDC_LIMIT_MACROS'}.
hFiles := self libgit2Headers.
builder := (CLForeign2NBGenerator for: #LibGit2)
platform: NativeBoostConstants mac32PlatformId libPath: (path /
'build/libgit2.dylib') fullName;
compilationOptions: options;
includeDir: includeDir;
addHeaderFiles: hFiles;
classPrefix: 'LG2';
ffiSelectorBlock: [ :selector |
(selector beginsWith: 'git_')
ifTrue: [ (selector copyFrom: 4
to: selector size) withFirstCharacterDownshifted ]
ifFalse: [ selector
withFirstCharacterDownshifted ] ];
ignoreUnsupported;
generate;
openChanges! !
!CLForeign2NBGenerator class methodsFor: 'libgit2' stamp: 'StefanMarr 1/23/2013
15:06'!
libgit2Path
^ FileReference / 'Users/smarr/tmp/libgit/libgit2'! !
--
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