File: make_buildsystem.diff

package info (click to toggle)
libnative-platform-java 0.3~rc2-3
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 488 kB
  • ctags: 583
  • sloc: java: 1,652; cpp: 884; sh: 122; makefile: 78
file content (90 lines) | stat: -rw-r--r-- 3,343 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
Description: Use make as buildsystem instead of Gradle to
 avoid a circular dependencies between gradle and native-platform.
Author: Damien Raude-Morvan <drazzib@debian.org>
Author: gil cattaneo <puntogil@libero.it>
Last-Update: 2014-01-19
Forwarded: no
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,81 @@
+#  Description: Use make as buildsystem instead of Gradle to
+#  avoid a circular dependencies between gradle and native-platform.
+#  This is very minimalistic Makefile so it will only work for
+#  Debian use case for now.
+#  Author: Damien Raude-Morvan <drazzib@debian.org>
+#  Adapted for Fedora by: gil cattaneo <puntogil@libero.it>
+CXX ?= g++
+STRIP ?= strip
+JAVA_HOME ?= /usr/lib/default-java
+JOPT_JAR ?= $(shell locate jopt-simple.jar)
+JTARGET ?= 1.5
+JSOURCE ?= 1.5
+
+IDIR=src/main/headers
+SRCDIR=src/main/cpp
+JSRCDIR=src/main/java
+BUILD=build
+IGEN=$(BUILD)/headers
+JCLASSESDIR=$(BUILD)/classes
+JDOCDIR=$(BUILD)/docs/javadoc
+ODIR=$(BUILD)/binaries
+JAR=$(BUILD)/native-platform.jar
+JAR_ARCH=$(BUILD)/native-platform-linux.jar
+
+INCLUDE=-I$(IDIR) -I$(IGEN) -I/usr/include -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux
+
+_OBJ_STD = generic.o generic_posix.o linux.o osx.o posix.o win.o
+_OBJ_CURSES = generic.o generic_posix.o curses.o
+OBJ_STD = $(patsubst %,$(ODIR)/%,$(_OBJ_STD))
+OBJ_CURSES = $(patsubst %,$(ODIR)/%,$(_OBJ_CURSES))
+_JAVA = $(shell find $(JSRCDIR) -name "*.java" -print)
+
+.PHONY: clean jar javadoc
+
+build: $(ODIR)/libnative-platform.so $(ODIR)/libnative-platform-curses.so jar javadoc arch-jar
+
+$(ODIR)/libnative-platform.so: $(OBJ_STD)
+	$(CXX) -shared -fPIC $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o $@ $^
+	$(STRIP) $@
+
+$(ODIR)/libnative-platform-curses.so: $(OBJ_CURSES)
+	$(CXX) $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -lcurses -shared -fPIC -o $@ $^
+	$(STRIP) $@
+
+$(JCLASSESDIR)/%.class: javafiles-list
+	mkdir -p $(JCLASSESDIR)
+	$(JAVA_HOME)/bin/javac -source $(JTARGET) -target $(JSOURCE) -d $(JCLASSESDIR) -classpath $(JOPT_JAR) @javafiles-list
+
+javafiles-list: $(_JAVA)
+	echo $^ > javafiles-list
+
+javadoc: javafiles-list
+	mkdir -p $(JDOCDIR)
+	$(JAVA_HOME)/bin/javadoc -d $(JDOCDIR) -classpath $(JOPT_JAR) @javafiles-list
+
+jar: $(JCLASSESDIR)/%.class
+	mkdir -p $(JDOCDIR)
+	(cd $(JCLASSESDIR) ; $(JAVA_HOME)/bin/jar cf ../../$(JAR) .)
+
+arch-jar: $(ODIR)/libnative-platform.so $(ODIR)/libnative-platform-curses.so
+	(cd $(ODIR) ; $(JAVA_HOME)/bin/jar cf ../../$(JAR_ARCH) *.so)
+
+$(ODIR)/%.o: $(SRCDIR)/%.cpp $(IGEN)/native.h
+	mkdir -p $(ODIR)
+	$(CXX) $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) $(INCLUDE) -fPIC -c -o $@ $<
+
+$(IGEN)/native.h: $(JCLASSESDIR)/%.class
+	mkdir -p $(IGEN)
+	$(JAVA_HOME)/bin/javah -o $(IGEN)/native.h -classpath $(JCLASSESDIR) \
+	net.rubygrapefruit.platform.internal.jni.NativeLibraryFunctions \
+	net.rubygrapefruit.platform.internal.jni.PosixFileFunctions \
+	net.rubygrapefruit.platform.internal.jni.PosixFileSystemFunctions \
+	net.rubygrapefruit.platform.internal.jni.PosixProcessFunctions \
+	net.rubygrapefruit.platform.internal.jni.PosixTerminalFunctions \
+	net.rubygrapefruit.platform.internal.jni.TerminfoFunctions \
+	net.rubygrapefruit.platform.internal.jni.WindowsConsoleFunctions \
+	net.rubygrapefruit.platform.internal.jni.WindowsHandleFunctions
+
+clean:
+	-rm javafiles-list
+	-rm -Rf $(BUILD)