Samples: libcurl for Windows with dynamic linking (#2348)

This commit is contained in:
Dmitriy Dolovov
2018-11-21 16:35:55 +07:00
committed by GitHub
parent f68f7028b1
commit dfa82430d5
6 changed files with 22 additions and 6 deletions
+1 -1
View File
@@ -38,13 +38,13 @@ task buildSh(type: Exec) {
task buildSamplesWithPlatformLibs() {
dependsOn ':csvparser:assemble'
dependsOn ':curl:assemble'
dependsOn ':echoServer:assemble'
dependsOn ':globalState:assemble'
dependsOn ':html5Canvas:assemble'
dependsOn ':workers:assemble'
if (MPPTools.isMacos() || MPPTools.isLinux()) {
dependsOn ':curl:assemble'
dependsOn ':nonBlockingEchoServer:assemble'
dependsOn ':tensorflow:assemble'
}
+9 -1
View File
@@ -9,13 +9,18 @@ repositories {
}
// Determine host preset.
def hostPreset = MPPTools.defaultHostPreset(project, [kotlin.presets.macosX64, kotlin.presets.linuxX64])
def hostPreset = MPPTools.defaultHostPreset(project, [kotlin.presets.macosX64, kotlin.presets.linuxX64, kotlin.presets.mingwX64])
kotlin {
targets {
fromPreset(hostPreset, 'curl') {
compilations.main.outputKinds 'EXECUTABLE'
compilations.main.entryPoint 'sample.curl.main'
if (presets.mingwX64 == hostPreset) {
// Add lib path to `libcurl` and its dependencies:
compilations.main.linkerOpts "-L${MPPTools.mingwPath()}/lib"
}
}
}
@@ -29,6 +34,9 @@ kotlin {
}
MPPTools.createRunTask(project, 'runProgram', kotlin.targets.curl) {
if (kotlin.presets.mingwX64 == hostPreset) {
environment 'PATH': "${MPPTools.mingwPath()}/bin"
}
args 'https://www.jetbrains.com/'
}
+5 -1
View File
@@ -1,7 +1,11 @@
# Curl interop library
This example shows how to build and publish an interop library to communicate with the libcurl,
HTTP/HTTPS/FTP/etc client library. Debian-like distros may need to `apt-get install libcurl4-openssl-dev`.
HTTP/HTTPS/FTP/etc client library.
Install libcurl development files. For Mac - `brew install curl`. For Debian-like Linux - use `apt-get install libcurl4-openssl-dev` or `apt-get install libcurl4-gnutls-dev`.
For Windows - `pacman -S mingw-w64-x86_64-curl` 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`.
+4 -1
View File
@@ -21,7 +21,7 @@ task cleanLocalRepo(type: Delete) {
}
// Determine host preset.
def hostPreset = MPPTools.defaultHostPreset(project, [kotlin.presets.macosX64, kotlin.presets.linuxX64])
def hostPreset = MPPTools.defaultHostPreset(project, [kotlin.presets.macosX64, kotlin.presets.linuxX64, kotlin.presets.mingwX64])
kotlin {
targets {
@@ -35,6 +35,9 @@ kotlin {
case presets.linuxX64:
includeDirs.headerFilterOnly '/usr/include', '/usr/include/x86_64-linux-gnu'
break
case presets.mingwX64:
includeDirs.headerFilterOnly "${MPPTools.mingwPath()}/include"
break
}
}
}
@@ -2,3 +2,4 @@ headers = curl/curl.h
headerFilter = curl/*
linkerOpts.osx = -L/opt/local/lib -L/usr/local/opt/curl/lib -lcurl
linkerOpts.linux = -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu -lcurl
linkerOpts.mingw = -lcurl
+2 -2
View File
@@ -21,19 +21,19 @@ enableFeaturePreview('GRADLE_METADATA')
*/
if (MPPTools.isMacos() || MPPTools.isLinux() || MPPTools.isWindows()) {
include ':csvparser'
include ':curl'
include ':echoServer'
include ':globalState'
include ':html5Canvas'
include ':libcurl'
include ':tetris'
include ':videoplayer'
include ':workers'
}
if (MPPTools.isMacos() || MPPTools.isLinux()) {
include ':curl'
include ':gitchurn'
include ':gtk'
include ':libcurl'
include ':nonBlockingEchoServer'
include ':tensorflow'
include ':torch'