Ignore:
Timestamp:
Jul 26, 2013 9:16:37 AM (11 years ago)
Author:
nanang
Message:

JNI projects:

  • separate makefile for Android and desktop/development
  • simplify build process for Android (upload pregenerated SWIG interface)
  • removed main loop for Android sample app
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/jni/pjsip-apps/src/jni/Makefile

    r4574 r4575  
    1 include jni/Android.mk 
     1# $Id: Makefile 4563 2013-07-15 05:34:14Z bennylp $ 
     2 
     3# Get PJ build settings 
     4include ../../../build.mak 
     5include $(PJDIR)/build/common.mak 
     6 
     7# Get JDK location 
     8ifeq ("$(JAVA_HOME)","") 
     9  # Get javac location to determine JDK location 
     10  JAVAC_PATH = $(shell which javac) 
     11  ifeq ("$(JAVAC_PATH)","") 
     12    $(error Cannot determine JDK location using 'which' command. Please define JAVA_HOME envvar) 
     13  endif 
     14 
     15  JAVAC_PATH := $(realpath $(JAVAC_PATH)) 
     16  JAVA_BIN := $(dir $(JAVAC_PATH)) 
     17  JAVA_HOME := $(patsubst %/bin/,%,$(JAVA_BIN)) 
     18endif 
     19 
     20# OS specific 
     21ifeq ($(OS),Windows_NT) 
     22MY_JNI_LDFLAGS   = -L$(MY_JDK)/lib -Wl,--kill-at 
     23MY_JNI_LIB       = $(MY_PACKAGE_BIN)/pjsua.dll 
     24else 
     25MY_JNI_LDFLAGS   = -L$(MY_JDK)/lib -Wl,-soname,pjsua.so 
     26MY_JNI_LIB       = $(MY_PACKAGE_BIN)/libpjsua.so 
     27MY_JNI_CFLAGS    := -fPIC 
     28endif 
     29 
     30# Env settings, e.g: path to SWIG, JDK, java(.exe), javac(.exe) 
     31MY_SWIG          = swig 
     32MY_JDK           = $(JAVA_HOME) 
     33MY_JAVA          = $(MY_JDK)/bin/java 
     34MY_JAVAC         = $(MY_JDK)/bin/javac 
     35MY_JNI_CFLAGS    := $(MY_JNI_CFLAGS) -I$(MY_JDK)/include -I$(MY_JDK)/include/win32 \ 
     36                   -I$(MY_JDK)/include/linux -I. 
     37 
     38# Build settings 
     39MY_CFLAGS        = $(PJ_CFLAGS) $(MY_JNI_CFLAGS) 
     40MY_LDFLAGS       = $(PJ_LDFLAGS) $(PJ_LDLIBS) $(MY_JNI_LDFLAGS) -static-libstdc++ 
     41 
     42# Output/intermediate path settings 
     43MY_PACKAGE       = org.pjsip.pjsua 
     44MY_OUT_DIR       = jni/output 
     45MY_SWIG_IF       = $(MY_OUT_DIR)/pjsua.i 
     46MY_SWIG_FLAG     = -c++ -I$(MY_OUT_DIR) # -debug-tmsearch -debug-tmused # -Wall 
     47MY_SWIG_WRAPPER  = $(MY_OUT_DIR)/pjsua_wrap 
     48MY_PACKAGE_SRC   = src/$(subst .,/,$(MY_PACKAGE)) 
     49MY_PACKAGE_BIN   = $(MY_OUT_DIR)/bin 
     50 
     51TEST_PACKAGE     = org.pjsip.hello 
     52TEST_SRC         = src/$(subst .,/,$(TEST_PACKAGE)) 
     53 
     54jni: $(MY_JNI_LIB) java 
     55 
     56clean: 
     57        rm -f $(MY_OUT_DIR)/*.* 
     58        rm -rf $(MY_PACKAGE_SRC) 
     59 
     60$(MY_SWIG_IF).tmp: jni/swig_gen.py 
     61        @mkdir -p $(MY_OUT_DIR) 
     62        python jni/swig_gen.py > $(MY_SWIG_IF).tmp 
     63 
     64$(MY_SWIG_IF): jni/header.i $(MY_SWIG_IF).tmp 
     65        cat jni/header.i > $(MY_SWIG_IF) 
     66        cat $(MY_SWIG_IF).tmp >> $(MY_SWIG_IF) 
     67 
     68$(MY_SWIG_WRAPPER).cpp: $(MY_SWIG_IF) jni/callbacks.i jni/my_typemaps.i 
     69        @# Cleanup java outdir first, to remove any old/deprecated java files 
     70        rm -rf $(MY_PACKAGE_SRC) 
     71        @mkdir -p $(MY_PACKAGE_SRC) 
     72        $(MY_SWIG) $(MY_SWIG_FLAG) -o $(MY_SWIG_WRAPPER).cpp -package $(MY_PACKAGE) \ 
     73                -outdir $(MY_PACKAGE_SRC) -java $(MY_SWIG_IF) > $(MY_SWIG_WRAPPER)-tm.log 
     74 
     75$(MY_JNI_LIB): $(MY_SWIG_WRAPPER).cpp 
     76        @mkdir -p $(MY_PACKAGE_BIN) 
     77        $(PJ_CXX) -shared -o $(MY_JNI_LIB) $(MY_SWIG_WRAPPER).cpp $(MY_OUT_DIR)/callbacks.cpp \ 
     78                $(MY_CFLAGS) $(MY_LDFLAGS) 
     79 
     80java: $(TEST_SRC)/hello.java 
     81        @mkdir -p $(MY_PACKAGE_BIN) 
     82        $(MY_JAVAC) -d $(MY_PACKAGE_BIN) $(MY_PACKAGE_SRC)/*.java 
     83        $(MY_JAVAC) -d $(MY_PACKAGE_BIN) -classpath "$(MY_PACKAGE_BIN)" $(TEST_SRC)/hello.java 
     84 
     85test: $(MY_PACKAGE_BIN)/hello.class 
     86        @# Need to specify classpath and library path, alternatively, they can be set via 
     87        @# CLASSPATH and java.library.path env settings 
     88        $(MY_JAVA) -cp $(MY_PACKAGE_BIN) -Djava.library.path="$(MY_PACKAGE_BIN)" hello 
Note: See TracChangeset for help on using the changeset viewer.