aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile33
1 files changed, 26 insertions, 7 deletions
diff --git a/Makefile b/Makefile
index 57c6385..41fca96 100644
--- a/Makefile
+++ b/Makefile
@@ -14,14 +14,18 @@ JAVA_OPTIMISE=-O
LIB_EXT=so
JAVAC=javac
+JAVAH=javah
+JAR=jar
JAVADIRS=-s "java" -d "bin/java" -cp "java"
JAVAFLAGS=-Xlint $(JAVA_OPTIMISE)
JAVA_FLAGS=$(JAVADIRS) $(JAVAFLAGS)
-CFLAGS=-W{all,extra} -pedantic $(C_OPTIMISE)
+CFLAGS=-W{all,extra} -pedantic $(C_OPTIMISE) -fPIC
+SOFLAGS=-W{all,extra} -pedantic $(C_OPTIMISE) -shared
CPPFLAGS=
LDFLAGS=
C_FLAGS=$(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
+SO_FLAGS=$(SOFLAGS) $(CPPFLAGS) $(LDFLAGS)
JNI_C_INCLUDE=-I$${JAVA_HOME}/include
JNI_C_FLAGS=$(JNI_INCLUDE) -fPIC -shared
@@ -36,35 +40,50 @@ JNI_CLASSES = $(shell find "java-c-jni" | grep '\.java$$' | sed -e 's_^_bin/_g'
+.PHONY: all
all: java c java-c-jni
-
-java: $(JAVA_CLASSES)
+.PHONY: java java-bin java-jar
+java: java-bin java-jar
+java-bin: $(JAVA_CLASSES)
bin/java/%.class: java/%.java
mkdir -p "bin/java"
$(JAVAC) $(JAVA_FLAGS) "java/$*.java"
+java-jar: bin/java/sha3.jar
+bin/java/sha3.jar: bin/java/SHA3.class bin/java/ConcurrentSHA3.class
+ cd bin/java; $(JAR) cf sha3.jar SHA3.class ConcurrentSHA3.class
-c: $(C_OBJS) $(C_BINS)
+.PHONY: c c-bin c-so
+c: c-bin c-so
+c-bin: $(C_OBJS) $(C_BINS)
bin/c/%.o: c/%.h c/%.c
mkdir -p "bin/c"
$(CC) $(C_FLAGS) -c "c/$*".{c,h}
mv "$*.o" "bin/c/$*.o"
bin/c/%: c/%.c
$(CC) $(C_FLAGS) -o "$@" "c/$*".c "bin/c/"*.o
+c-so: bin/c/sha3.$(LIB_EXT)
+bin/c/sha3.$(LIB_EXT): bin/c/sha3.o
+ $(CC) $(SO_FLAGS) $^ -o "$@"
+.PHONY: java-c-jni java-c-jni-so java-c-jni-jar
java-c-jni: bin/java-c-jni/SHA3.$(LIB_EXT) $(JNI_CLASSES)
bin/java-c-jni/%.class: java-c-jni/%.java
mkdir -p "bin/java-c-jni"
$(JAVAC) $(JNI_JAVA_FLAGS) "java-c-jni/$*.java"
java-c-jni/%.h: bin/java-c-jni/%.class
- javah -classpath bin/java-c-jni -jni -d java-c-jni \
+ $(JAVAH) -classpath bin/java-c-jni -jni -d java-c-jni \
$$(echo "$<" | sed -e 's:^bin/java-c-jni/::' -e 's:.class$$::' | sed -e 's:/:.:g')
-bin/java-c-jni/%.so: java-c-jni/%.h java-c-jni/%.c
+java-c-jni-so: bin/java-c-jni/SHA3.$(LIB_EXT)
+bin/java-c-jni/%.$(LIB_EXT): java-c-jni/%.h java-c-jni/%.c
mkdir -p "bin/java-c-jni"
- gcc $(C_FLAGS) $(JNI_C_FLAGS) "java-c-jni/$*.c" -o "bin/java-c-jni/$*.$(LIB_EXT)"
+ $(CC) $(C_FLAGS) $(JNI_C_FLAGS) "java-c-jni/$*.c" -o "$@"
+java-c-jni-jar: bin/java-c-jni/sha3.jar
+bin/java-c-jni/sha3.jar: bin/java-c-jni/SHA3.class
+ cd bin/java; $(JAR) cf sha3.jar SHA3.class