| # |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # |
| |
| # Comment in if using Cygwin: |
| #SHELL:=/bin/bash |
| |
| TARGET:=target |
| SRC:=src/main/java |
| SRC_NATIVE:=src/main/native |
| |
| ifndef VERSION |
| $(error Set VERSION environment variable) |
| endif |
| |
| ifndef JAVA_HOME |
| $(error Set JAVA_HOME environment variable) |
| endif |
| |
| JAVA := "$(JAVA_HOME)/bin/java" |
| JAVAC := "$(JAVA_HOME)/bin/javac" |
| JAVAH := "$(JAVA_HOME)/bin/javah" |
| |
| OSINFO_CLASS := org.apache.commons.crypto.OsInfo |
| OSINFO_PROG := $(TARGET)/classes/org/apache/commons/crypto/OsInfo.class |
| |
| OS_NAME := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS) --os) |
| OS_ARCH := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS) --arch) |
| LIB_FOLDER := $(shell $(JAVA) -cp $(TARGET)/classes $(OSINFO_CLASS)) |
| |
| commons-crypto := commons-crypto-$(VERSION) |
| |
| |
| jni_md := $(shell find -L "$(JAVA_HOME)" -name jni_md.h | head -1) |
| ifneq ($(jni_md),) |
| jni_include := $(shell dirname "$(jni_md)") |
| endif |
| |
| |
| # os=Default is meant to be generic unix/linux |
| |
| known_os_archs := Linux-x86 Linux-x86_64 Linux-aarch64 Linux-arm Linux-armhf Linux-ppc Linux-ppc64 Mac-x86 Mac-x86_64 FreeBSD-x86_64 Windows-x86 Windows-x86_64 SunOS-x86 SunOS-sparc SunOS-x86_64 AIX-ppc64 |
| os_arch := $(OS_NAME)-$(OS_ARCH) |
| |
| ifeq (,$(findstring $(strip $(os_arch)),$(known_os_archs))) |
| os_arch := Default |
| endif |
| |
| os_folder := $(shell echo $(OS_NAME) | tr A-Z a-z) |
| |
| # cross-compilation toolchain prefix (e.g. "arm-linux-gnueabi-") |
| CROSS_PREFIX := |
| |
| Default_CC := $(CROSS_PREFIX)gcc |
| Default_CXX := $(CROSS_PREFIX)g++ |
| Default_STRIP := $(CROSS_PREFIX)strip |
| Default_CFLAGS := -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden |
| Default_CXXFLAGS := -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden |
| Default_LINKFLAGS := -shared -static |
| Default_LIBNAME := libcommons-crypto.so |
| Default_COMMONS_CRYPTO_FLAGS := |
| |
| Linux-x86_CC := $(CROSS_PREFIX)gcc |
| Linux-x86_CXX := $(CROSS_PREFIX)g++ |
| Linux-x86_STRIP := $(CROSS_PREFIX)strip |
| Linux-x86_CXXFLAGS := -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden -m32 |
| Linux-x86_CFLAGS := -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden -m32 |
| Linux-x86_LINKFLAGS := -shared -static-libgcc -static-libstdc++ |
| Linux-x86_LIBNAME := libcommons-crypto.so |
| Linux-x86_COMMONS_CRYPTO_FLAGS:= |
| |
| Linux-x86_64_CC := $(CROSS_PREFIX)gcc |
| Linux-x86_64_CXX := $(CROSS_PREFIX)g++ |
| Linux-x86_64_STRIP := $(CROSS_PREFIX)strip |
| Linux-x86_64_CXXFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64 -Wall -Werror |
| Linux-x86_64_CFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64 -Wall -Werror |
| Linux-x86_64_LINKFLAGS := -shared -static-libgcc |
| Linux-x86_64_LIBNAME := libcommons-crypto.so |
| Linux-x86_64_COMMONS_CRYPTO_FLAGS := |
| |
| Linux-ppc_CC := gcc |
| Linux-ppc_CXX := g++ |
| Linux-ppc_STRIP := strip |
| Linux-ppc_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m32 |
| Linux-ppc_CFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m32 |
| Linux-ppc_LINKFLAGS := -shared -static-libgcc -static-libstdc++ |
| Linux-ppc_LIBNAME := libcommons-crypto.so |
| Linux-ppc_COMMONS_CRYPTO_FLAGS := |
| |
| Linux-ppc64_CC := gcc |
| Linux-ppc64_CXX := g++ |
| Linux-ppc64_STRIP := strip |
| Linux-ppc64_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64 |
| Linux-ppc64_CFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64 |
| Linux-ppc64_LINKFLAGS := -shared -static-libgcc -static-libstdc++ |
| Linux-ppc64_LIBNAME := libcommons-crypto.so |
| Linux-ppc64_COMMONS_CRYPTO_FLAGS := |
| |
| AIX-ppc64_CC := gcc |
| AIX-ppc64_CXX := g++ |
| AIX-ppc64_STRIP := strip -X64 |
| AIX-ppc64_LIBNAME := libcommons-crypto.a |
| AIX-ppc64_CXXFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64 |
| AIX-ppc64_CFLAGS := -DHAVE_CONFIG_H -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -m64 |
| AIX-ppc64_LINKFLAGS := -shared -static-libgcc -static-libstdc++ -lcrypt |
| AIX-ppc64_COMMONS_CRYPTO_FLAGS := |
| |
| SunOS-x86_CC := gcc |
| SunOS-x86_CXX := g++ |
| SunOS-x86_STRIP := strip |
| SunOS-x86_CFLAGS := -include lib/inc_linux/jni_md.h -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden |
| SunOS-x86_CXXFLAGS := -include lib/inc_linux/jni_md.h -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden |
| SunOS-x86_LINKFLAGS := -shared -static-libgcc -static-libstdc++ |
| SunOS-x86_LIBNAME := libcommons-crypto.so |
| SunOS-x86_COMMONS_CRYPTO_FLAGS := |
| |
| SunOS-sparc_CC := gcc |
| SunOS-sparc_CXX := g++ |
| SunOS-sparc_STRIP := strip |
| SunOS-sparc_CFLAGS := -include lib/inc_linux/jni_md.h -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden |
| SunOS-sparc_CXXFLAGS := -include lib/inc_linux/jni_md.h -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden |
| SunOS-sparc_LINKFLAGS := -shared -static-libgcc -static-libstdc++ |
| SunOS-sparc_LIBNAME := libcommons-crypto.so |
| SunOS-sparc_COMMONS_CRYPTO_FLAGS := |
| |
| SunOS-x86_64_CC := gcc |
| SunOS-x86_64_CXX := g++ |
| SunOS-x86_64_STRIP := strip |
| SunOS-x86_64_CFLAGS := -include lib/inc_linux/jni_md.h -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden -m64 |
| SunOS-x86_64_CXXFLAGS := -include lib/inc_linux/jni_md.h -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden -m64 |
| SunOS-x86_64_LINKFLAGS := -shared -static-libgcc -static-libstdc++ |
| SunOS-x86_64_LIBNAME := libcommons-crypto.so |
| SunOS-x86_64_COMMONS_CRYPTO_FLAGS := |
| |
| # '-include lib/inc_linux/jni_md.h' is used to force the use of our version, |
| # which defines JNIEXPORT differently; otherwise, since OpenJDK includes |
| # jni_md.h in same directory as jni.h, the include path is ignored when |
| # jni_md.h is included from jni.h |
| |
| Linux-arm_CC := $(CROSS_PREFIX)gcc |
| Linux-arm_CXX := $(CROSS_PREFIX)g++ |
| Linux-arm_STRIP := $(CROSS_PREFIX)strip |
| Linux-arm_CFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)include" -O2 -fPIC -fvisibility=hidden -mfloat-abi=softfp |
| Linux-arm_CXXFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)include" -O2 -fPIC -fvisibility=hidden -mfloat-abi=softfp |
| Linux-arm_LINKFLAGS := -shared -static-libgcc |
| Linux-arm_LIBNAME := libcommons-crypto.so |
| Linux-arm_COMMONS_CRYPTO_FLAGS:= |
| |
| Linux-armhf_CC := $(CROSS_PREFIX)gcc |
| Linux-armhf_CXX := $(CROSS_PREFIX)g++ |
| Linux-armhf_STRIP := $(CROSS_PREFIX)strip |
| Linux-armhf_CFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden -mfloat-abi=hard |
| Linux-armhf_CXXFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)/include" -O2 -fPIC -fvisibility=hidden -mfloat-abi=hard |
| Linux-armhf_LINKFLAGS := -shared -static-libgcc |
| Linux-armhf_LIBNAME := libcommons-crypto.so |
| Linux-armhf_COMMONS_CRYPTO_FLAGS:= |
| |
| Linux-aarch64_CC := $(CROSS_PREFIX)gcc |
| Linux-aarch64_CXX := $(CROSS_PREFIX)g++ |
| Linux-aarch64_STRIP := $(CROSS_PREFIX)strip |
| Linux-aarch64_CXXFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -Wall -Werror |
| Linux-aarch64_CFLAGS := -Ilib/inc_linux -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden -Wall -Werror |
| Linux-aarch64_LINKFLAGS := -shared -static-libgcc |
| Linux-aarch64_LIBNAME := libcommons-crypto.so |
| Linux-aarch64_COMMONS_CRYPTO_FLAGS := |
| |
| Mac-x86_CC := gcc -arch i386 |
| Mac-x86_CXX := g++ -arch i386 |
| Mac-x86_STRIP := strip -x |
| Mac-x86_CFLAGS := -Ilib/inc_mac -I"$(JAVA_HOME)/include" -O2 -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden -I/usr/local/include -I/usr/local/opt/openssl/include |
| Mac-x86_CXXFLAGS := -Ilib/inc_mac -I"$(JAVA_HOME)/include" -O2 -fPIC -mmacosx-version-min=10.4 -fvisibility=hidden -I/usr/local/include -I/usr/local/opt/openssl/include |
| Mac-x86_LINKFLAGS := -dynamiclib -static-libgcc -L/usr/local/lib |
| Mac-x86_LIBNAME := libcommons-crypto.jnilib |
| Mac-x86_COMMONS_CRYPTO_FLAGS := |
| |
| Mac-x86_64_CC := gcc -arch $(OS_ARCH) |
| Mac-x86_64_CXX := gcc -arch $(OS_ARCH) |
| Mac-x86_64_STRIP := strip -x |
| Mac-x86_64_CFLAGS := -Ilib/inc_mac -I"$(JAVA_HOME)/include" -O2 -fPIC -mmacosx-version-min=10.7 -fvisibility=hidden -I/usr/local/include -I/usr/local/opt/openssl/include |
| Mac-x86_64_CXXFLAGS := -Ilib/inc_mac -I"$(JAVA_HOME)/include" -O2 -fPIC -mmacosx-version-min=10.7 -fvisibility=hidden -I/usr/local/include -I/usr/local/opt/openssl/include |
| Mac-x86_64_LINKFLAGS := -dynamiclib -L/usr/local/lib |
| Mac-x86_64_LIBNAME := libcommons-crypto.jnilib |
| Mac-x86_64_COMMONS_CRYPTO_FLAGS := |
| |
| FreeBSD-x86_64_CC := $(CROSS_PREFIX)gcc |
| FreeBSD-x86_64_CXX := $(CROSS_PREFIX)g++ |
| FreeBSD-x86_64_STRIP := $(CROSS_PREFIX)strip |
| FreeBSD-x86_64_CFLAGS := -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden |
| FreeBSD-x86_64_CXXFLAGS := -I"$(JAVA_HOME)/include" -Ilib/inc_mac -O2 -fPIC -fvisibility=hidden |
| FreeBSD-x86_64_LINKFLAGS := -shared -static-libgcc |
| FreeBSD-x86_64_LIBNAME := libcommons-crypto.so |
| FreeBSD-x86_64_COMMONS_CRYPTO_FLAGS := |
| |
| Windows-x86_CC := $(CROSS_PREFIX)gcc |
| Windows-x86_CXX := $(CROSS_PREFIX)g++ |
| Windows-x86_STRIP := $(CROSS_PREFIX)strip |
| Windows-x86_CFLAGS := -I/usr/share/mingw-w64/include -I"$(JAVA_HOME)/include" -I"$(OPENSSL_HOME)/include" -Ilib/inc_win -O2 -fno-inline |
| Windows-x86_CXXFLAGS := -I/usr/share/mingw-w64/include -I"$(JAVA_HOME)/include" -I"$(OPENSSL_HOME)/include" -Ilib/inc_win -O2 -fno-inline |
| Windows-x86_LINKFLAGS := -Wl,--kill-at -shared -static |
| Windows-x86_LIBNAME := commons-crypto.dll |
| Windows-x86_COMMONS_CRYPTO_FLAGS := |
| |
| Windows-x86_64_CC := $(CROSS_PREFIX)gcc |
| Windows-x86_64_CXX := $(CROSS_PREFIX)g++ |
| Windows-x86_64_STRIP := $(CROSS_PREFIX)strip |
| Windows-x86_64_CFLAGS := -I/usr/share/mingw-w64/include -I"$(JAVA_HOME)/include" -I"$(OPENSSL_HOME)/include" -Ilib/inc_win -O2 -fno-inline |
| Windows-x86_64_CXXFLAGS := -I/usr/share/mingw-w64/include -I"$(JAVA_HOME)/include" -I"$(OPENSSL_HOME)/include" -Ilib/inc_win -O2 -fno-inline |
| Windows-x86_64_LINKFLAGS := -Wl,--kill-at -shared -static |
| Windows-x86_64_LIBNAME := commons-crypto.dll |
| Windows-x86_64_COMMONS-CRYPTO_FLAGS := |
| |
| |
| STRIP := $($(os_arch)_STRIP) |
| CC := $($(os_arch)_CC) |
| CXX := $($(os_arch)_CXX) |
| STRIP := $($(os_arch)_STRIP) |
| CFLAGS := $($(os_arch)_CFLAGS) |
| CXXFLAGS := $($(os_arch)_CXXFLAGS) |
| LINKFLAGS := $($(os_arch)_LINKFLAGS) |
| LIBNAME := $($(os_arch)_LIBNAME) |
| COMMONS-CRYPTO_FLAGS := $($(os_arch)_COMMONS-CRYPTO_FLAGS) |
| |
| |
| CFLAGS := $(CFLAGS) -Ilib/include -I/usr/include -I"$(SRC_NATIVE)/org/apache/commons/crypto/" |
| CXXFLAGS := $(CXXFLAGS) -Ilib/include -I/usr/include |
| ifneq ($(jni_include),) |
| CFLAGS := $(CFLAGS) -I"$(jni_include)" -I"$(TARGET)/jni-classes/org/apache/commons/crypto/cipher" -I"$(TARGET)/jni-classes/org/apache/commons/crypto/random" |
| CXXFLAGS := $(CXXFLAGS) -I"$(jni_include)" -I"$(TARGET)/jni-classes/org/apache/commons/crypto/cipher" -I"$(TARGET)/jni-classes/org/apache/commons/crypto/random" |
| endif |