diff --git a/Makefile b/Makefile index 4acf87e..13c9555 100644 --- a/Makefile +++ b/Makefile @@ -3,32 +3,36 @@ # This file may be used under the terms of the GNU General Public License version 3 # see LICENSE.txt -.PHONY: all src test clean doxy-all doxy-cxx doxy-java doxy-clean install uninstall +.PHONY: all compile test clean doc doc-cxx doc-java clean-doc install uninstall -all: src +all: compile -src: +compile: $(MAKE) -C src -test: src +test: compile $(MAKE) -C test/java/foundation/pEp/jniadapter/test/ compile + +clean-all: clean clean-doc + clean: $(MAKE) -C src clean $(MAKE) -C test/java/foundation/pEp/jniadapter/test/ clean clean-pep-home -# Generate API Documentation -doxy-all: doxy-cxx doxy-java +clean-doc: + rm -rf doc/doxygen/cxx + rm -rf doc/doxygen/java -doxy-cxx: src + # Generate API Documentation +doc: doc-cxx doc-java + +dox-cxx: compile cd doc/doxygen; doxygen doxyfile-cxx -doxy-java: src +doc-java: compile cd doc/doxygen; doxygen doxyfile-java -doxy-clean: - rm -rf doc/doxygen/cxx - rm -rf doc/doxygen/java install: $(MAKE) -C src install diff --git a/README.md b/README.md index 04197e9..3cf4356 100644 --- a/README.md +++ b/README.md @@ -1,67 +1,66 @@ # p≡p JNI Adapter -More complete developer instructions can be found here: [https://dev.pep.foundation/JNI%20Adapter/Tutorial](). -## Prerequisites +Please find the complete build instructions here: +https://dev.pep.foundation/Common%20Adapter%20Documentation/Adapter_Build_Instructions -### yml2 -To set up yml2 properly, consult the documentation of pEp Engine (linked below). yml2 is a build dependency of pEp Engine. +## Build Result +The binary package resulting from the build will be located under `./dist`. +It merely contains: +* pEp.jar - The java library +* libpEpJNI.dylib - The dynamically linkable native library +* libpEpJNI.a - The statically linkable native library -### C and C++ compiler -Any gcc or clang distribution offered by your OS is fine. +## Build Configuration -### pEp Engine -Instructions for obtaining the pEp Engine can be found on [https://pep.foundation/dev/repos/pEpEngine/file/](). +The build configuration file is called `local.conf`. +Use the file `local.conf.example` as a template. -### libpEpAdapter -Instructions for obtaining libpEpAdapter can be found on [https://pep.foundation/dev/repos/libpEpAdapter/file/](). +```bash +cp local.conf.example local.conf +``` -### Java 8 (or newer) JDK -Download Oracle Java from [https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html](). +Then, tweak it to your needs. -OpenJDK can be installed from macports on macOS with one of the following commands: +## Make Targets -~~~ -sudo port install openjdk8 -sudo port install openjdk11 -~~~ +The default make target is `compile`. -## Building +### Build +* `make compile` + Builds the whole adapter under `./build`. + The complete distribution ready adapter will be in `./dist`. -Build configuration will be the result of including these files in the following order: -* `Makefile.conf` - Defaults -* `local.conf` - optional cfg (overwrites existing values) -* `src/local.conf`- optional cfg for src dir (overwrites existing values) +### Test +* `make test` + Builds the complete test-suite under `./test`. -An example `local.conf` looks like this: +### Clean +* `make clean` + Deletes all the derived objects of the adapter build in `./build` and `./dist`. + Also invokes `make clean` which cleans the whole test-suite. + Does not remove the generated API doc. -~~~ -JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk8/Contents/Home +* `make clean-doc` + Removes all the generated API doc. -YML2_PATH=$(HOME)/code/yml2 +* `make clean-all` + Equals `make clean` and `make clean-doc` -ENGINE_INC_PATH=$(HOME)/code/engine/build/include -ENGINE_LIB_PATH=$(HOME)/code/engine/build/lib +### Generate API Documentation +In order to generate the API doc you need to have doxygen installed on your system. -AD_INC_PATH=$(HOME)/code/libad/build/include -AD_LIB_PATH=$(HOME)/code/libad/build/lib -~~~ +* `make doc` + Generates Java and C++ API doc. -The the foo_PATH variables will be turned into compiler directives (-I / -L), which can be directly set by just omitting "\_PATH" (e.g. ENGINE_INC). They will take priority. +* `make doc-cxx` + Generates the API doc for the C++ part of the adapter. -Depending on what is already set in your environment, or can be found in your default include/library paths, setting any of these variables may be optional on your platform. +* `make doc-java` + Generates the API doc for the Java part of the adapter. -Now, build the Adapter with +### Install +* `make install` + Installs the files under `./dist` under $PREFIX (local.conf) -On Linux: - -~~~ -make src -~~~ - -On macOS: - -~~~ -make src -~~~ - -(The GNU Make distributed with macOS might be too old, in this case install GNU Make "gmake" from macPorts). +* `make uninstall` + Removes all the filenames under `./dist` from $PREFIX (local.conf)