From 519e3960fc8717810d18a8480696cae72bfb8033 Mon Sep 17 00:00:00 2001 From: Mike Sinkovsky Date: Fri, 7 Dec 2018 01:55:50 +0500 Subject: [PATCH] Samples: gitchurn and gtk for Windows (#2434) --- samples/gitchurn/README.md | 6 ++- samples/gitchurn/build.gradle | 11 ++++- .../src/nativeInterop/cinterop/libgit2.def | 3 +- samples/gtk/README.md | 5 +++ samples/gtk/build.gradle | 41 ++++++++++++++++--- .../gtk/src/nativeInterop/cinterop/gtk3.def | 1 + samples/settings.gradle | 4 +- 7 files changed, 61 insertions(+), 10 deletions(-) diff --git a/samples/gitchurn/README.md b/samples/gitchurn/README.md index d3f920b54db..47d0fddcc88 100644 --- a/samples/gitchurn/README.md +++ b/samples/gitchurn/README.md @@ -1,7 +1,11 @@ # GIT frequency analyzer This example shows how one could perform statistics on Git repository. -libgit2 is required for this to work (`apt-get install libgit2-dev`). + +Install libgit2 development files. +For Debian-like Linux - use `apt-get install libgit2-dev`. +For Windows - `pacman -S mingw-w64-x86_64-libgit2` in MinGW64 console, if you do +not have MSYS2-MinGW64 installed - install it first as described in http://www.msys2.org To build use `../gradlew assemble`. diff --git a/samples/gitchurn/build.gradle b/samples/gitchurn/build.gradle index 9f939a67df5..79f5489a286 100644 --- a/samples/gitchurn/build.gradle +++ b/samples/gitchurn/build.gradle @@ -3,7 +3,7 @@ plugins { } // Determine host preset. -def hostPreset = MPPTools.defaultHostPreset(project, [kotlin.presets.macosX64, kotlin.presets.linuxX64]) +def hostPreset = MPPTools.defaultHostPreset(project) kotlin { targets { @@ -19,13 +19,22 @@ kotlin { case presets.linuxX64: includeDirs.headerFilterOnly '/usr/include' break + case presets.mingwX64: + includeDirs.headerFilterOnly "${MPPTools.mingwPath()}/include" + break } } } + if (presets.mingwX64 == hostPreset) { + compilations.main.linkerOpts "-L${MPPTools.mingwPath()}/lib" + } } } } MPPTools.createRunTask(project, 'runProgram', kotlin.targets.gitChurn) { + if (kotlin.presets.mingwX64 == hostPreset) { + environment 'PATH': "${MPPTools.mingwPath()}/bin" + } args project.getRootProject().getRootDir().toString() + '/..' } diff --git a/samples/gitchurn/src/nativeInterop/cinterop/libgit2.def b/samples/gitchurn/src/nativeInterop/cinterop/libgit2.def index 334202a3f08..377332016f4 100644 --- a/samples/gitchurn/src/nativeInterop/cinterop/libgit2.def +++ b/samples/gitchurn/src/nativeInterop/cinterop/libgit2.def @@ -1,4 +1,5 @@ headers = git2.h +headerFilter = git2/** git2.h linkerOpts.osx = -L/opt/local/lib -L/usr/local/lib -lgit2 linkerOpts.linux = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -lgit2 -headerFilter = git2/** git2.h +linkerOpts.mingw = -lgit2 diff --git a/samples/gtk/README.md b/samples/gtk/README.md index 4395f4ada52..172a0f8e189 100644 --- a/samples/gtk/README.md +++ b/samples/gtk/README.md @@ -32,3 +32,8 @@ on Debian flavours of Linux on Fedora sudo dnf install gtk3-devel + +on Windows in MinGW64 console, if you do +not have MSYS2-MinGW64 installed - install it first as described in http://www.msys2.org + + pacman -S mingw-w64-x86_64-gtk3 diff --git a/samples/gtk/build.gradle b/samples/gtk/build.gradle index 1b1ad0e69ee..f9cee5829f3 100644 --- a/samples/gtk/build.gradle +++ b/samples/gtk/build.gradle @@ -3,7 +3,7 @@ plugins { } // Determine host preset. -def hostPreset = MPPTools.defaultHostPreset(project, [kotlin.presets.macosX64, kotlin.presets.linuxX64]) +def hostPreset = MPPTools.defaultHostPreset(project) kotlin { targets { @@ -12,14 +12,45 @@ kotlin { compilations.main.entryPoint 'sample.gtk.main' compilations.main.cinterops { gtk3 { - ['/opt/local/include', '/usr/include', '/usr/local/include'].each { - includeDirs "$it/atk-1.0", "$it/gdk-pixbuf-2.0", "$it/cairo", "$it/pango-1.0", "$it/gtk-3.0", "$it/glib-2.0" + switch (hostPreset) { + case presets.macosX64: + case presets.linuxX64: + ['/opt/local/include', + '/usr/include', + '/usr/local/include' + ].each { + includeDirs "$it/atk-1.0", + "$it/gdk-pixbuf-2.0", + "$it/cairo", + "$it/pango-1.0", + "$it/gtk-3.0", + "$it/glib-2.0" + } + includeDirs '/opt/local/lib/glib-2.0/include', + '/usr/lib/x86_64-linux-gnu/glib-2.0/include', + '/usr/local/lib/glib-2.0/include' + break + case presets.mingwX64: + includeDirs "${MPPTools.mingwPath()}/include/atk-1.0", + "${MPPTools.mingwPath()}/include/gdk-pixbuf-2.0", + "${MPPTools.mingwPath()}/include/cairo", + "${MPPTools.mingwPath()}/include/pango-1.0", + "${MPPTools.mingwPath()}/include/gtk-3.0", + "${MPPTools.mingwPath()}/include/glib-2.0", + "${MPPTools.mingwPath()}/lib/glib-2.0/include" + break } - includeDirs '/opt/local/lib/glib-2.0/include', '/usr/lib/x86_64-linux-gnu/glib-2.0/include', '/usr/local/lib/glib-2.0/include' } } + if (presets.mingwX64 == hostPreset) { + compilations.main.linkerOpts "-L${MPPTools.mingwPath()}/lib" + } } } } -MPPTools.createRunTask(project, 'runProgram', kotlin.targets.gtk) +MPPTools.createRunTask(project, 'runProgram', kotlin.targets.gtk) { + if (kotlin.presets.mingwX64 == hostPreset) { + environment 'PATH': "${MPPTools.mingwPath()}/bin" + } +} diff --git a/samples/gtk/src/nativeInterop/cinterop/gtk3.def b/samples/gtk/src/nativeInterop/cinterop/gtk3.def index fd5c45fc82b..51c5e6f6d23 100644 --- a/samples/gtk/src/nativeInterop/cinterop/gtk3.def +++ b/samples/gtk/src/nativeInterop/cinterop/gtk3.def @@ -6,3 +6,4 @@ compilerOpts.osx = -I/usr/local/include/gtk-3.0 -I/usr/local/include/glib-2.0 -I compilerOpts.linux = -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/local/lib/glib-2.0/include -I/usr/lib64/glib-2.0/include linkerOpts.osx = -L/opt/local/lib -L/usr/local/lib -lglib-2.0 -lgdk-3.0 -lgtk-3 -lgio-2.0 -lgobject-2.0 linkerOpts.linux = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -lglib-2.0 -lgdk-3 -lgtk-3 -lgio-2.0 -lgobject-2.0 +linkerOpts.mingw = -lglib-2.0 -lgdk-3 -lgtk-3 -lgio-2.0 -lgobject-2.0 diff --git a/samples/settings.gradle b/samples/settings.gradle index 39a15c66782..bc3074fd53e 100644 --- a/samples/settings.gradle +++ b/samples/settings.gradle @@ -23,7 +23,9 @@ if (MPPTools.isMacos() || MPPTools.isLinux() || MPPTools.isWindows()) { include ':csvparser' include ':curl' include ':echoServer' + include ':gitchurn' include ':globalState' + include ':gtk' include ':html5Canvas' include ':libcurl' include ':tetris' @@ -32,8 +34,6 @@ if (MPPTools.isMacos() || MPPTools.isLinux() || MPPTools.isWindows()) { } if (MPPTools.isMacos() || MPPTools.isLinux()) { - include ':gitchurn' - include ':gtk' include ':nonBlockingEchoServer' include ':tensorflow' include ':torch'