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)
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
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"
Those elements are: * class_struct * struct * boxed * callback * constructor * signal * enum * property
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.
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.
to enable the generation of bindings that respect the different library versions, in which methods have been introduced or declared deprecated.
* m4 dependency macros are now created automatically * bindinate usage change: '--dependencies' option is gone in favor of possibly multiple uses of '-d' or '--dependency', e.g.: -d=GLIB_SHARP,glib-sharp-3.0 -d=MONO_CAIRO,mono-cairo * DEP_CFLAGS will be added to CodeGen build cmd * README updated
Fixes issue #7.