Browse Source

Start make cleanup

JNI-76
Damiano Boppart 7 years ago
parent
commit
7a860ad61b
  1. 109
      src/Makefile
  2. 71
      src/Makefile.conf

109
src/Makefile

@ -1,44 +1,81 @@
LIBRARY=libpEpJNI.a
SHARED=libpEpJNI.so
JAR=jniadapter.jar
# Copyright 2018, pEp Foundation
# This file is part of pEp JNI Adapter
# This file may be used under the terms of the GNU General Public License version 3
# see LICENSE.txt
include Makefile.conf
CXXFLAGS+=-std=c++14 -fPIC
ifneq ($(wildcard local.conf),)
$(info ================================================)
$(info Overrides in \`local.conf\` are used.)
$(info ================================================)
endif
all: $(JAR) $(SHARED)
ifdef BUILD_CONFIG
$(info ================================================)
$(info Overrides in \`$(BUILD_CONFIG)\` are used.)
$(info ================================================)
endif
ifndef JAVA_HOME
$(error JAVA_HOME is not set!)
endif
LIBRARY=libpEpJNI.a
JAR=jniadapter.jar
ifeq ($(BUILD_FOR),Linux)
SHARED=libpEpJNI.so
else ifeq ($(BUILD_FOR),Darwin)
SHARED=libpEpJNI.dylib
else
$(error I don't know how to build for $(BUILD_FOR).)
endif
JAVA_SOURCES=org/pEp/jniadapter/pEpException.java \
org/pEp/jniadapter/AbstractEngine.java \
org/pEp/jniadapter/Message.java \
org/pEp/jniadapter/Engine.java \
org/pEp/jniadapter/Identity.java \
org/pEp/jniadapter/_Identity.java \
org/pEp/jniadapter/Blob.java \
org/pEp/jniadapter/_Blob.java \
org/pEp/jniadapter/CommType.java
org/pEp/jniadapter/AbstractEngine.java \
org/pEp/jniadapter/Message.java \
org/pEp/jniadapter/Engine.java \
org/pEp/jniadapter/Identity.java \
org/pEp/jniadapter/_Identity.java \
org/pEp/jniadapter/Blob.java \
org/pEp/jniadapter/_Blob.java \
org/pEp/jniadapter/CommType.java
C_SOURCES=org_pEp_jniadapter_Engine.cc \
org_pEp_jniadapter_Engine.h \
org_pEp_jniadapter_Message.cc \
org_pEp_jniadapter_Message.h \
throw_pEp_exception.cc \
throw_pEp_exception.hh \
org_pEp_jniadapter_AbstractEngine.h
org_pEp_jniadapter_Engine.h \
org_pEp_jniadapter_Message.cc \
org_pEp_jniadapter_Message.h \
throw_pEp_exception.cc \
throw_pEp_exception.hh \
org_pEp_jniadapter_AbstractEngine.h
gensource: $(JAVA_SOURCES) $(C_SOURCES)
# Old versions of a Java distribution have a `javah` binary, new versions do not. This checks whether or not `javah` can be found in the Java distribution found in the directory `$JAVA_HOME`.
NOT_USED := $(shell type $(JAVA_HOME)/bin/javah)
ifeq ($(.SHELLSTATUS),0)
NEW_JAVA=placeholder
endif
$(JAR): $(JAVA_SOURCES)
javac org/pEp/jniadapter/*.java
jar cf $@ org/pEp/jniadapter/*.class
JP=$(JAVA_HOME)/bin
org_pEp_jniadapter_AbstractEngine.h: org/pEp/jniadapter/AbstractEngine.java
javah $(subst /,.,$(subst .java,,$<))
org_pEp_jniadapter_Engine.h: org/pEp/jniadapter/Engine.java
javah $(subst /,.,$(subst .java,,$<))
.PHONY: all
all: $(JAR) $(SHARED)
org_pEp_jniadapter_Message.h: org/pEp/jniadapter/Message.java
javah $(subst /,.,$(subst .java,,$<))
.PHONY: gensource
gensource: $(JAVA_SOURCES) $(C_SOURCES)
$(JAR): $(JAVA_SOURCES)
$(JP)/javac org/pEp/jniadapter/*.java
$(JP)/jar cf $@ org/pEp/jniadapter/*.class
BLUBB = org_pEp_jniadapter_AbstractEngine.h org_pEp_jniadapter_Engine.h org_pEp_jniadapter_Message.h
$(BLUBB): org_pEp_jniadapter_%.h: org/pEp/jniadapter/%.java
ifdef NEW_JAVA
$(JP)/javac -h . $<
else
$(JP)/javah $(subst /,.,$(subst .java,,$<))
endif
org_pEp_jniadapter_AbstractEngine.o: %.o: %.cc %.h throw_pEp_exception.hh jniutils.hh
$(CXX) $(CXXFLAGS) -c $< -o $@
@ -53,29 +90,28 @@ $(SHARED): $(LIBRARY)
$(CXX) $(CXXFLAGS) -shared -o $(SHARED) $(LDFLAGS) -lpEpEngine *.o
org/pEp/jniadapter/pEpException.java: pEp.yml2 gen_java_exceptions.ysl2
yml2proc -y gen_java_exceptions.ysl2 $< -o $@
$(YML2_PROC) -y gen_java_exceptions.ysl2 $< -o $@
org/pEp/jniadapter/Message.java: pEp.yml2 gen_java_Message.ysl2 types_java.ysl2
yml2proc -y gen_java_Message.ysl2 $<
$(YML2_PROC) -y gen_java_Message.ysl2 $<
org_pEp_jniadapter_Message.cc: pEp.yml2 gen_cpp_Message.ysl2 types_c.ysl2
yml2proc -y gen_cpp_Message.ysl2 $<
$(YML2_PROC) -y gen_cpp_Message.ysl2 $<
org/pEp/jniadapter/Engine.java: pEp.yml2 gen_java_Engine.ysl2 types_java.ysl2
yml2proc -y gen_java_Engine.ysl2 $<
$(YML2_PROC) -y gen_java_Engine.ysl2 $<
org_pEp_jniadapter_Engine.cc: pEp.yml2 gen_cpp_Engine.ysl2 types_c.ysl2
yml2proc -y gen_cpp_Engine.ysl2 $<
$(YML2_PROC) -y gen_cpp_Engine.ysl2 $<
throw_pEp_exception.cc throw_pEp_exception.hh: pEp.yml2 gen_throw_pEp_exception.ysl2 textutils.ysl2
yml2proc -y gen_throw_pEp_exception.ysl2 $< -o throw_pEp_exception.cc
$(YML2_PROC) -y gen_throw_pEp_exception.ysl2 $< -o throw_pEp_exception.cc
throw_pEp_exception.o: throw_pEp_exception.cc throw_pEp_exception.hh
basic_api.o: basic_api.cc jniutils.hh throw_pEp_exception.hh
.PHONY: clean
clean:
rm -f $(JAR) $(LIBRARY) $(SHARED)
rm -f *.o
@ -89,4 +125,3 @@ clean:
rm -f org/pEp/jniadapter/Color.java
rm -f throw_pEp_exception.*
rm -f org_pEp_jniadapter_Message.cc org_pEp_jniadapter_Engine.cc

71
src/Makefile.conf

@ -1,3 +1,68 @@
CXXFLAGS=-I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin -I$(HOME)/include -fpermissive
LDFLAGS=-L$(HOME)/lib
SHARED=libpEpJNI.dylib
# Copyright 2018, pEp Foundation
# This file is part of pEp JNI Adapter
# This file may be used under the terms of the GNU General Public License version 3
# see LICENSE.txt
######### Header #########
HERE:=$(dir $(lastword $(MAKEFILE_LIST)))
######### General #########
BUILD_FOR:=$(shell uname)
######### Java #########
#JAVA_HOME=
######### C and C++ #########
LDFLAGS=$(AD_INC) $(ENGINE_INC)
######### C++ #########
ifeq ($(BUILD_FOR),Linux)
CXX=g++ -std=c++14
else ifeq ($(BUILD_FOR),Darwin)
CXX=clang -std=c++14
endif
ifeq ($(BUILD_FOR),Linux)
CXXFLAGS=-fdiagnostics-color=always -fpermissive -fPIC -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/linux $(AD_INC) $(ENGINE_INC)
else ifeq ($(BUILD_FOR),Darwin)
CXXFLAGS=-fcolor-diagnostics -fpermissive -fPIC -I$(JAVA_HOME)/include -I$(JAVA_HOME)/include/darwin $(AD_INC) $(ENGINE_INC)
endif
######### YML2 #########
YML2_PATH=$(HOME)/yml2
YML2_PROC=$(YML2_PATH)/yml2proc $(YML2_OPTS)
YML2_OPTS=--encoding=utf8
######### Engine #########
ENGINE_LIB=
#ENGINE_LIB=-L$(HOME)/local/lib
ENGINE_INC=
#ENGINE_INC=-I$(HOME)/local/inc
######### libAdapter #########
AD_LIB=
#AD_LIB=-L$(HOME)/local/lib
AD_INC=
#AD_INC=-I$(HOME)/local/inc
######### Footer #########
-include $(HERE)/local.conf
ifdef BUILD_CONFIG
include $(BUILD_CONFIG)
endif
# YML_PATH is needed in the environment of every call to a program of the YML2 distribution
export YML_PATH=$(YML2_PATH)

Loading…
Cancel
Save