Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Include version info for methods in GAPI XML output #22

Merged
merged 12 commits into from
Jan 10, 2015
Merged

Include version info for methods in GAPI XML output #22

merged 12 commits into from
Jan 10, 2015

Conversation

riccioclista
Copy link
Collaborator

This PR

  • makes the XSLT proc to also copy the version number of library elements to enable the generation of bindings that respect different library versions, in which elements have been introduced or declared deprecated. Those elements are:
    • method/function (2d0a662)
    • interface, object, struct, class_struct, boxed, callback, constructor, signal, enum, property (9714252)
  • adds a --build-libversions option and a version number extraction preprocessing step in bindinate (see commit message for details: b9928a5)
  • removes the superfluous 'all' target in Makefile.am.template
  • adds support for generation of multiple build profiles based on library version (Details: 2b40ef1)
  • adds an option --list-versions to query all version numbers in GIR file (8f34f9d, 573c0a5)
  • adds a variable PROFILES in target bindings build that facilitates the build of specific build profiles instead of all profiles, which is the default (ef8ee3b)
  • adds support for xbuild files generation for all build profiles and a Makefile target 'csproj' to the generated bindings project build system that can be used to inject generated source files into the csproj files of all build profiles (373babf, a0a17d6)

@shana
Copy link
Owner

shana commented Jan 7, 2015

Hey hey! This branch is giving conflicts with the var-fixes branch merge from PR #21 :/

@riccioclista
Copy link
Collaborator Author

Thank you for reviewing it. I'll rebase the branch on the weekend as I'm
currently away from my computer.
On Jan 8, 2015 12:45 AM, "Andreia Gaita" notifications@github.com wrote:

Hey hey! This branch is giving conflicts with the var-fixes branch merge
from PR #21 #21 :/


Reply to this email directly or view it on GitHub
#22 (comment).

Antonius Riha added 12 commits January 9, 2015 20:15
to enable the generation of bindings that respect the different
library versions, in which methods have been introduced or
declared deprecated.
This commit
 * adds an option 'build-libversions' that enables the user to specify the
   library versions, for which to create bidnings. This enables creating
   bindings that expose version-correct API.
 * adds a XSLT preprocessing step, in which all version numbers of library
   API elements are extracted. Those version numbers are intended to be used
   for the generation of DEFINE flags to enable conditional builds of the
   binding. Builds will be created only vor versions that are specified in the
   'build-libversions' argument.

NOTE: The generation of DEFINE flags will be implemented in a future commit.
This commit
 * introduces support of Makefile generation with multiple build profiles that
   are based on different versions of the bound library. The profiles to
   generate can be specified via the command line option '--build-libversions'
   that has been added in a previous commit.
   The profiles follow this naming schema: 'V_<version_number>', e.g.: 'V_1_4'.

 * changes the build output directory from '/out' to '/out/<profile>',
   e.g.: '/out/V_1_4'.

 * changes the directory, where the template dllmap file is generated into,
   from '/out' to '/source'.

 * disables broken install/uninstall targets.
Those elements are:
 * class_struct
 * struct
 * boxed
 * callback
 * constructor
 * signal
 * enum
 * property
The PROFILES variable enables the user to define, which build profiles to
build. The build profiles must be specified as string using double quotes (")
and with white space as delimiter. E.g.:

make PROFILES="V_1_4 V_2_0 V_2_2 V_2_12 V_2_14"
This commit
 * adds support for generation of xbuild files for all build profiles as
   specified via the --build-libversions option. The *.csproj files also
   contain the appropriate DEFINE constants.
 * changes the generation behavior for *.csproj and *.sln files to overwrite
   existing files
When maintaining a binding project with multiple build profiles, keeping all
source file entries in all csproj files up-to-date can be a lot of work. To
make csproj file maintenance easier, the bindings maintainer can now
automatically add generated source files to all csproj files by invoking
'make csproj'.

Implementation notes:
 * The injection of source files is done using XSLT (new dependency xsltproc).
 * To minimize formatting changes in the csproj and compatibility with
   MonoDevelop, injected csproj files are post-processed with mdtool (another
   new dependency)
 * To have consistent line endings (CRLF) all csproj files are post-processed
   with unix2dos (again: new dependency)
@riccioclista
Copy link
Collaborator Author

branch has been rebased. ready for merge :)

shana added a commit that referenced this pull request Jan 10, 2015
Include version info for methods in GAPI XML output
@shana shana merged commit 4b28b16 into shana:master Jan 10, 2015
@shana
Copy link
Owner

shana commented Jan 10, 2015

Merged! 👍

@riccioclista
Copy link
Collaborator Author

Thanks! :)

@riccioclista riccioclista deleted the version_support branch January 10, 2015 11:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants