Commit 4903382e authored by Matthias Klumpp's avatar Matthias Klumpp

New upstream version 3.6.5

parent 1567645a

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

[submodule "wrap"]
path = wrap
url =
module Build;
import core.stdc.stdlib: exit;
import std.algorithm;
import std.array;
import std.file;
......@@ -33,32 +35,29 @@ int main(string[] args)
if ( args.length == 0 )
args = ["gtkd", "gtkdgl", "sv"];
args = ["gtkd", "sv"];
if ( args.canFind("all") )
args = ["gtkd", "gtkdgl", "sv", "gstreamer", "vte"];
args = ["gtkd", "sv", "gstreamer", "peas"];
foreach ( arg; args )
switch ( arg )
case "gtkd":
build("src", "gtkd");
build("generated\\gtkd", "gtkd");
case "gtkdgl":
build("srcgl", "gtkdgl");
build("generated\\gtkdgl", "gtkdgl");
case "sv":
build("srcsv", "gtkdsv");
build("generated\\sourceview", "gtkdsv");
case "gstreamer":
build("srcgstreamer", "gstreamerd");
case "vte":
build("srcvte", "vted");
build("generated\\gstreamer", "gstreamerd");
case "peas":
build("srcpeas", "peasd");
build("generated\\peas", "peasd");
......@@ -73,34 +72,33 @@ void build(string dir, string lib)
std.file.write("build.rf", format("-m64 -c -lib %s %s -Isrc -of%s.lib %s", dcflags, ldflags, lib, dFiles(dir)));
executeShell("dmd @build.rf");
std.file.write("build.rf", format("-m64 -c -lib %s %s -Igenerated/gtkd -of%s.lib %s", dcflags, ldflags, lib, dFiles(dir)));
auto pid = spawnProcess(["dmd", "@build.rf"]);
if ( wait(pid) != 0 )
if (lib == "gtkd")
string files = dFiles(dir);
int pivot = indexOf(files, ' ', files.length / 2);
string[] subDirs = ["atk", "cairo", "gdk", "gdkpixbuf", "gio", "glib", "gobject", "gthread", "gtk", "gtkc", "gtkd", "pango", "rsvg"];
string files2 = files[pivot .. $];
files = files [0 .. pivot];
foreach(directory; subDirs)
buildObj(dFiles("generated\\gtkd\\"~ directory), directory);
std.file.write("build.rf", format("-c %s -Isrc -ofgtkd1.obj %s", dcflags, files));
executeShell("dmd @build.rf");
std.file.write("build.rf", format("-c %s -Isrc -ofgtkd2.obj %s", dcflags, files2));
executeShell("dmd @build.rf");
string objects;
foreach(directory; subDirs)
objects ~= directory ~".obj ";
executeShell(format("dmd -lib %s -of%s.lib gtkd1.obj gtkd2.obj", ldflags, lib));
executeShell(format("dmd -lib %s -of%s.lib %s", ldflags, lib, objects));
foreach(directory; subDirs)
std.file.remove(directory ~".obj");
std.file.write("build.rf", format("-c %s -Isrc -of%s.obj %s", dcflags, lib, dFiles(dir)));
executeShell("dmd @build.rf");
buildObj(dFiles(dir), lib);
executeShell(format("dmd -lib %s -of%s.lib %s.obj", ldflags, lib, lib));
std.file.remove(lib ~".obj");
......@@ -109,6 +107,14 @@ void build(string dir, string lib)
void buildObj(string files, string objName)
std.file.write("build.rf", format("-c %s -Igenerated/gtkd -of%s.obj %s", dcflags, objName, files));
auto pid = spawnProcess(["dmd", "@build.rf"]);
if ( wait(pid) != 0 )
string dFiles(string sourceDir)
string files;
GtkD ChangeLog
Release: 3.6.5
-Fix the Windows build script.
-Fix the 64bit Windows workaround.
Release: 3.6.4
-Don't add deprecation warnings in a bugfix release.
Release: 3.6.3
-Fix the destroyNotify error when destroying an object with unref.
-Retrieve the library names from the gir files instead of gtkd.paths.
Release: 3.6.2
-Fix dub.json.
-Call free in the destructors of classes not derived from ObjectG.
Release: 3.6.1
-Fix the GNUMakefile. #196
Release: 3.6.0
-Update the libraries to the latest versions.
-Add librsvg. #193
-Allow for not using the runtime linker when generating the binding.
-Add mixin templates to generate the boilerplate needed to implement Gtk interfaces
or overrideing Gtk functions.
Release: 3.5.1
- Set the correct path for the pkgconfig files. #181
-Set the correct path for the pkgconfig files. #181
Release: 3.5.0
This diff is collapsed.
GtkD is the Digital Mars D programing language OO wrapper for Gtk+ 3.10.
GtkD is release on the LGPL license with additional exceptions.
Please view COPYING for GtkD's license.
- Linux, Windows(2000, XP), or Mac
- Gtk libs
- dmd, gdc or ldc installation
- OpenGL libs (mesa is fine on linux)
- GtkGLext 3
Who are you?
If you want to write some wicked cool D and Gtk+ apps, grab the gtkD release
archive at
If you want to tweak the automatic wrapper or help with it, use git...
The installation depends on the setup of your development environment.
This means that to release your project you must include the gtkD lib
on your deliverable or statically link to gtkD - please pay attention
to the license.
Compile the lib and the test programs:
Linux / Posix:
Using the GNU make to compile GtkD on these Operating systems, calling make
with no options will build GtkD, GtkD-Sourceview and one of the demos.
Optionaly these options are available:
* all = build everything.
* [shared-]gtkd = build gtkd.
* [shared-]gtkdsv = build gtkd-sourceview.
* [shared-]gda = build gda.
* [shared-]gstreamer = build gstreamer.
* shared = build gtkd and gtkd-sourceview as shared libraries.
* install and uninstall options are also available for the options
mentioned above.
Or you can use one of the build options also available for Windows.
The build options are the same as for Linux.
If on OSX GtkD is unable to find the GTK libraries.
Some environment variables can be set to override the search path.
To build on Windows you can use the build script in combination with rdmd.
rdmd Build.d
By default this builds gtkd, gtkdgl and gtkdsv to compile only one of these
or gstreamerd you can pass the following options to the build file:
* gtkd = build GtkD.
* gtkdgl = build GtkDGL.
* sv = build gtkd-sourceview
* gstreamer = build gstreamer.
* all = build everything.
For all the abobe packages there a two option avalable to specify aditional
compiler and linker flags:
* --dcflags="your compiler flags"
* --ldflags="your linker flags"
To specify if it should build for 64 or 32 bits, pass either
the -m32 or -m64 flag to rdmd.
rdmd -m64 Build.d
Wraped Versions:
GtkD wraps Gtk+ 3.22 the versions of the associated libraries are:
Gtk+ 3.22
Gdk 3.22
Glib 2.50
GObject 2.50
Gio 2.50
Pango 1.40
Gdk-pixbuf 2.36
Cairo 1.12.2
GtksourceView 3.22
GStreamer 1.10
Vte3 0.46
# GtkD
GtkD is the Digital Mars D programming language OO wrapper for Gtk+ 3.10. GtkD
is release on the LGPL license with additional exceptions.
Please view COPYING for GtkD's license.
## Requirements