aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2015-11-01 21:07:12 -0800
committerJakob Odersky <jodersky@gmail.com>2015-11-16 23:27:53 -0800
commit628debc2a1d04dc367e5e76858b754f1ddb6141f (patch)
treef32b2b8776f363147f1fb380adc3e15cd9912296
parent9328cb2b61751472b6abe9c57502ecef79d3d069 (diff)
downloadakka-serial-cygwin.tar.gz
akka-serial-cygwin.tar.bz2
akka-serial-cygwin.zip
Enable build for Cygwincygwin
-rw-r--r--flow-native/configure.ac15
-rw-r--r--flow-native/src/Makefile.am8
-rw-r--r--project/native.scala26
3 files changed, 43 insertions, 6 deletions
diff --git a/flow-native/configure.ac b/flow-native/configure.ac
index 1b622c4..4841b67 100644
--- a/flow-native/configure.ac
+++ b/flow-native/configure.ac
@@ -43,6 +43,21 @@ AC_ARG_ENABLE([versioned-lib],
AM_CONDITIONAL([ENABLE_VERSIONED_LIB], [test "$enable_versioned_lib" = "yes"])
+EXTRA_CFLAGS=""
+EXTRA_LDFLAGS=""
+
+case "$host_os" in
+ cygwin*)
+ EXTRA_CFLAGS="-D __int64=int64_t"
+ EXTRA_LDFLAGS="-no-undefined"
+ ;;
+ *)
+ ;;
+esac
+
+AC_SUBST([EXTRA_CFLAGS])
+AC_SUBST([EXTRA_LDFLAGS])
+
AC_CONFIG_FILES([Makefile])
AC_CONFIG_FILES([src/Makefile])
AC_OUTPUT
diff --git a/flow-native/src/Makefile.am b/flow-native/src/Makefile.am
index 9fefbd1..da5989f 100644
--- a/flow-native/src/Makefile.am
+++ b/flow-native/src/Makefile.am
@@ -3,7 +3,9 @@ lib_LTLIBRARIES = libflow3.la
libflow3_la_SOURCES = flow_jni.c platform/posix/flow.c flow.h com_github_jodersky_flow_internal_NativeSerial.h
if ENABLE_VERSIONED_LIB
-libflow3_la_LDFLAGS = -version-info 0:1:0
+libflow3_la_LDFLAGS = -version-info 0:1:0 $(EXTRA_LDFLAGS)
else
-libflow3_la_LDFLAGS = -avoid-version
-endif \ No newline at end of file
+libflow3_la_LDFLAGS = -avoid-version $(EXTRA_LDFLAGS)
+endif
+
+AM_CFLAGS = $(EXTRA_CFLAGS)
diff --git a/project/native.scala b/project/native.scala
index b6e4c19..5fb87ce 100644
--- a/project/native.scala
+++ b/project/native.scala
@@ -48,6 +48,26 @@ object NativeKeys {
}
+//windows, as usual, needs special treatment
+object CygwinUtil {
+
+ def onCygwin: Boolean = {
+ val uname = Process("uname").lines.headOption
+ uname map {
+ _.toLowerCase.startsWith("cygwin")
+ } getOrElse {
+ false
+ }
+ }
+
+ def toUnixPath(path: String): String = if (onCygwin) {
+ Process(s"cygpath ${path}").lines.head
+ } else {
+ path
+ }
+
+}
+
/** Provides implementations of wrapper tasks suitable for projects using Autotools */
object Autotools {
import NativeKeys._
@@ -64,14 +84,14 @@ object Autotools {
val log = streams.value.log
val src = (sourceDirectory in Native).value
val out = (target in Native).value
- val outPath = out.getAbsolutePath
+ val outPath = CygwinUtil.toUnixPath(out.getAbsolutePath)
val configure = if ((src / "config.status").exists) {
- Process("./config.status", src)
+ Process("sh ./config.status", src)
} else {
Process(
//Disable producing versioned library files, not needed for fat jars.
- s"./configure --prefix=$outPath --libdir=$outPath --disable-versioned-lib",
+ s"sh ./configure --prefix=$outPath --libdir=$outPath --disable-versioned-lib",
src
)
}