core, lib, modules: restructured source code tree
[sip-router] / src / modules / app_java / Makefile
1 #
2 # WARNING: do not run this directly, it should be run by the master Makefile
3
4 # to generate readme file on a system without java, use DOCBUILD=yes in make command
5
6 include ../../Makefile.defs
7 auto_gen=
8 NAME=app_java.so
9
10 #DEFS += -DEXTRA_DEBUG
11
12 DIST = $(shell if [ -f "/etc/redhat-release" ]; then cat /etc/redhat-release | sed "s/.*\([0-9]\)\.[0-9].*/\1/g"; fi)
13 ifeq ($(DIST),6)
14 JVM_PATH = $(shell dirname `find /usr/lib/jvm/java/ -name "libjvm.so"`)
15 DEFS += $(shell pkg-config libgcj-4.4 --cflags)
16 LIBS += $(shell pkg-config libgcj-4.4 --cflags) -L$(JVM_PATH) -ljvm
17 else
18 # try to detect JAVA_HOME
19 JAVA_HOME ?= $(shell readlink -f /usr/bin/javac | sed "s:bin/javac::")
20 DEFS += $(shell pkg-config libgcj --cflags) -I$(JAVA_HOME)/include
21 LIBS += $(shell pkg-config libgcj --libs) -L$(JAVA_HOME)/lib  -ljvm
22
23 # On Debian 7.5 there is a bug with JAVA_HOME detection.
24 # $(shell readlink -f /usr/bin/javac | sed "s:bin/javac::") points to perl wrapper script (/usr/bin/gcj-wrapper-4.7)
25 # whereas the real compiler is at /usr/bin/gcj-4.7. As the result, JAVA_HOME will not be a directory, that is incorrect.
26 # At this point I don't see any universal method as explicit setting this variable at the compile phase.
27 # -- ez
28 ifeq ($(shell [ -d "${JAVA_HOME}" -a -f "$(JAVA_HOME)/include/jni.h" -a -f "$(JAVA_HOME)/lib/libjvm.so" ] && echo 1 || echo 0),0)
29 ifneq ($(DOCBUILD),yes)
30 $(error Cannot locate Java Development Kit. You have to specify environment JAVA_HOME to build app_java)
31 endif
32 endif
33
34 ifeq ($(OS), freebsd)
35 LIBS+=-pthread
36 endif
37 ifeq ($(OS), linux)
38 DEFS += -I$(JAVA_HOME)/include/linux
39 endif
40 endif
41
42 # disable optimisation for segfaults debugging
43 INCLUDE += -O0 -g
44 INCLUDES += -O0 -g
45
46 DEFS+=-DKAMAILIO_MOD_INTERFACE
47
48 include ../../Makefile.modules
49