1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
CFLAGS?=-Wall -g -O3 -fstack-protector-strong -D_FORTIFY_SOURCE=2 -fasynchronous-unwind-tables -fpic -Werror=format-security -Wl,-z,defs -Wl,-z,relro -ftrapv -Wl,-z,noexecstack
CXXFLAGS?=-Wall -g -O3 -fstack-protector-strong -D_FORTIFY_SOURCE=2 -fasynchronous-unwind-tables -fpic -Werror=format-security -Wl,-z,defs -Wl,-z,relro -ftrapv -Wl,-z,noexecstack
CXXFLAGS+=-std=c++17
LIBS=-lsodium
PREFIX?=/usr/local
SOEXT?=so
EXTRA_CXXFLAGS=-fstack-clash-protection
#EXTRA_CXXFLAGS+=-march=native
INSTALL?=install
SYS=$(shell gcc -dumpmachine)
ifneq (, $(findstring x86_64, $(SYS)))
EXTRA_CXXFLAGS+=-fcf-protection=full
endif
all: libequihash.so libequihash.a equihash
android: EXTRA_SOURCES=jni.cc
android: CXXFLAGS+=-I$(SODIUM) -I$(SODIUM)/sodium -L.
android: libequihash.so
android: EXTRA_CXXFLAGS=
equihash.o: equihash.cc equihash.h equihash.hpp Makefile
$(CXX) -c $(CXXFLAGS) $(EXTRA_CXXFLAGS) -o equihash.o equihash.cc
libequihash.so: equihash.o Makefile $(EXTRA_SOURCES)
$(CXX) -shared $(CXXFLAGS) $(EXTRA_CXXFLAGS) -Wl,-soname,libequihash.so.0 -o libequihash.so equihash.o $(EXTRA_SOURCES) $(LIBS)
libequihash.a: equihash.o
ar rcs $@ $^
bench.o: bench.cc
$(CXX) -c $(CXXFLAGS) -o bench.o bench.cc
equihash: main.c bench.o libequihash.a
$(CC) -g $(CFLAGS) main.c $(LIBS) bench.o libequihash.a $(LIBS) -lstdc++ -o equihash
libequihash.pc:
echo "prefix=$(PREFIX)" >libequihash.pc
cat libequihash.pc.skel >>libequihash.pc
install: $(DESTDIR)$(PREFIX)/lib/libequihash.$(SOEXT) $(DESTDIR)$(PREFIX)/lib/libequihash.a $(DESTDIR)$(PREFIX)/include/equihash.h $(DESTDIR)$(PREFIX)/share/pkgconfig/libequihash.pc $(DESTDIR)$(PREFIX)/bin/equihash $(DESTDIR)$(PREFIX)/bin/ehwait $(DESTDIR)$(PREFIX)/bin/ehpuzzle $(DESTDIR)$(PREFIX)/lib/libequihash.$(SOEXT).0
$(DESTDIR)$(PREFIX)/lib/libequihash.$(SOEXT): libequihash.$(SOEXT)
$(INSTALL) -D $< $@
$(DESTDIR)$(PREFIX)/lib/libequihash.$(SOEXT).0: $(DESTDIR)$(PREFIX)/lib/libequihash.$(SOEXT)
ln -s $< $@
$(DESTDIR)$(PREFIX)/lib/libequihash.a: libequihash.a
$(INSTALL) -D -m 0644 $< $@
$(DESTDIR)$(PREFIX)/include/equihash.h: equihash.h
$(INSTALL) -D -m 0644 $< $@
$(DESTDIR)$(PREFIX)/share/pkgconfig/libequihash.pc: libequihash.pc
$(INSTALL) -D -m 0644 $< $@
$(DESTDIR)$(PREFIX)/bin/equihash: equihash
$(INSTALL) -D -m 0755 $< $@
$(DESTDIR)$(PREFIX)/bin/ehwait: ehwait
$(INSTALL) -D -m 0755 $< $@
$(DESTDIR)$(PREFIX)/bin/ehpuzzle: ehpuzzle
$(INSTALL) -D -m 0755 $< $@
clean:
rm -f libequihash.so libequihash.pc libequihash.a equihash.o bench.o equihash
|