# Generating Sources ## Overview This is a quick overview of some of the commands to run when updating the sources for a new gtk version ### Linux You may need to install the following package for generating the source under Linux ``` sudo apt-get install libxml-libxml-perl ``` ### Windows So far I've only managed to get this working in ubuntu, not Windows due to the way the .net app launches the perl script via libc i.e. [DllImport ("libc")] It looks like we need to use the 32bit version of MinGW if we do try it this way. The following path statements are needed in the console at the very least ``` PATH=$PATH:/c/Program\ Files\ \(x86\)/Microsoft\ SDKs/Windows/v10.0A/bin/NETFX\ 4.6\ Tools/ PATH=$PATH:/c/Windows/Microsoft.NET/Framework/v4.0.30319/ ``` Also the parser can be rebuilt via ``` ./autogen.sh --prefix=/tmp/install cd parser make clean make ``` Also it's important to make sure MSYS2 is uptodate with ``` pacman -Syuu ``` To search for a package that's been install (to see what version it is for example) ``` pacman -Ss gtk3 ``` ## Editing Files for Downloaded Source ### Configure.ac version number First change the version number in configure.ac to match that of the gtk version we're moving to ``` AC_INIT(gtk-sharp, 3.22.1) ``` ### Sources/Makefile.am Next change the version number in sources/Makefile.am to match ``` TARGET_GTK_VERSION=3.22.1 TARGET_GTK_API=3.22 ``` Next update the orher url's in Makefile.am, the version numbers should match those in use on the system (such as MSYS2) ``` GTK_DOWNLOADS = \ http://ftp.gnome.org/pub/GNOME/sources/glib/2.50/glib-2.50.0.tar.xz \ http://ftp.gnome.org/pub/GNOME/sources/pango/1.40/pango-1.40.3.tar.xz \ http://ftp.gnome.org/pub/GNOME/sources/atk/2.22/atk-2.22.0.tar.xz \ http://ftp.gnome.org/pub/GNOME/sources/gdk-pixbuf/2.36/gdk-pixbuf-2.36.0.tar.xz \ http://ftp.gnome.org/pub/GNOME/sources/gtk+/$(TARGET_GTK_API)/gtk+-$(TARGET_GTK_VERSION).tar.xz ``` ### Patches As part of the source code download, some of the files will be patched so you need to look at and check that all the patches apply correctly to the downloaded source when running make get-source-code ## Download the sources Next we're going to download the source ``` ./autogen.sh --prefix=/tmp/install cd sources make get-source-code ``` At this stage the sources should now be extracted within the sources sub directory ### Update sources.xml One last file to update is the sources/sources.xml file all directories in this file need to match the extracted directories ## Generate the API Code ### Generate the XML Files Next to generate the xml files needed for the generation of code ``` make api ``` This should result in the following files * gdk/gdk-api.raw * gio/gio-api.raw * gtk/gtk-api.raw * pango/pango-api.raw ### Generate the API Code from the XML Files TODO we need to use generator/gapi_codegen.exe on each of the xml files to generate the .cs code within the generated sub directories