Cleaned up and re-organized the makefile. There are now sections, with some comments calling out what various sections do and the work arounds that are in effect
parent
f4b44dfea8
commit
d6f5ed03bf
328
GNUmakefile
328
GNUmakefile
|
|
@ -1,22 +1,27 @@
|
|||
#################################################################
|
||||
# Tool and flag setup
|
||||
|
||||
AS ?= as
|
||||
AR ?= ar
|
||||
ARFLAGS ?= -cr # ar needs the dash on OpenBSD
|
||||
RANLIB ?= ranlib
|
||||
STRIP ?= strip -s
|
||||
CP ?= cp
|
||||
MKDIR ?= mkdir
|
||||
EGREP ?= egrep
|
||||
UNAME ?= uname
|
||||
|
||||
#########################
|
||||
# CXXFLAGS
|
||||
CXXFLAGS ?= -DNDEBUG -g2 -O3
|
||||
# -fPIC is supported, and enabled by default for x86_64.
|
||||
|
||||
# the following options reduce code size, but breaks link or makes link very slow on some systems
|
||||
# CXXFLAGS += -ffunction-sections -fdata-sections
|
||||
# LDFLAGS += -Wl,--gc-sections
|
||||
ARFLAGS = -cr # ar needs the dash on OpenBSD
|
||||
RANLIB ?= ranlib
|
||||
STRIP ?= strip
|
||||
CP = cp
|
||||
MKDIR = mkdir
|
||||
EGREP = egrep
|
||||
UNAME = $(shell uname)
|
||||
IS_X86 = $(shell uname -m | $(EGREP) -c "i.86|x86|i86|amd64")
|
||||
IS_X86_64 = $(shell uname -m | $(EGREP) -c "_64|d64")
|
||||
IS_DARWIN = $(shell uname -s | $(EGREP) -i -c "darwin")
|
||||
IS_LINUX = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "linux")
|
||||
IS_MINGW = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "mingw")
|
||||
IS_CYGWIN = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "cygwin")
|
||||
|
||||
#########################
|
||||
# Compilers
|
||||
CLANG_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")
|
||||
INTEL_COMPILER = $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "\(ICC\)")
|
||||
SUN_COMPILER = $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c "CC: Sun")
|
||||
|
|
@ -25,12 +30,107 @@ SUN_COMPILER = $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c "CC: Sun")
|
|||
# CLANG_ASSEMBLER ?= $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -i -c "^clang")
|
||||
# TODO: Uncomment the line above when Clang's integrated assembler can parse and generate code that passes the self tests.
|
||||
|
||||
#################################################################
|
||||
# Platform detection
|
||||
|
||||
IS_X86 = $(shell uname -m | $(EGREP) -c "i.86|x86|i86|amd64")
|
||||
IS_X86_64 = $(shell uname -m | $(EGREP) -c "_64|d64")
|
||||
IS_DARWIN = $(shell uname -s | $(EGREP) -i -c "darwin")
|
||||
IS_LINUX = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "linux")
|
||||
IS_MINGW = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "mingw")
|
||||
IS_CYGWIN = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "cygwin")
|
||||
IS_OPENBSD = $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "openbsd")
|
||||
IS_SUN = $(shell uname -s | $(EGREP) -i -c "SunOS")
|
||||
IS_FEDORA22_i686 = $(shell uname -r | $(EGREP) -i -c "f22.i686")
|
||||
|
||||
#################################################################
|
||||
# Architecture detection
|
||||
|
||||
#########################
|
||||
# May (or may not) be used below
|
||||
ifeq ($(findstring -m32 -m64,$(CXXFLAGS)),)
|
||||
ifneq ($(IS_X86_64),0)
|
||||
M32OR64 = -m64
|
||||
endif
|
||||
endif # -m32 or -m64
|
||||
|
||||
#################################################################
|
||||
# User install preferences
|
||||
|
||||
# Pick up the user's choice (lower prefix is the standard name)
|
||||
ifneq ($(prefix),)
|
||||
PREFIX = $(prefix)
|
||||
else
|
||||
|
||||
# Default prefix for make install
|
||||
ifeq ($(PREFIX),)
|
||||
PREFIX = /usr
|
||||
endif
|
||||
|
||||
ifeq ($(IS_X86),1)
|
||||
# Can't put C++ headers in system include
|
||||
ifneq ($(IS_OPENBSD),0)
|
||||
PREFIX = /usr/local
|
||||
endif
|
||||
|
||||
endif # prefix
|
||||
|
||||
#################################################################
|
||||
# Undefined behavior and Address sanitizer
|
||||
# Clang 3.2 and GCC 4.8 and above, i386/i686/x86_64
|
||||
|
||||
ifneq ($(IS_X86),0)
|
||||
|
||||
# Undefined Behavior Sanitizer (UBsan)
|
||||
ifeq ($(findstring ubsan,$(MAKECMDGOALS)),ubsan)
|
||||
CXXFLAGS += -fsanitize=undefined
|
||||
# CXXFLAGS += -fsanitize-undefined-trap-on-error
|
||||
endif # UBsan
|
||||
|
||||
# Address Sanitizer (Asan)
|
||||
ifeq ($(findstring asan,$(MAKECMDGOALS)),asan)
|
||||
CXXFLAGS += -fsanitize=address
|
||||
endif # Asan
|
||||
|
||||
# Test CXXFLAGS in case the user passed the flags directly through it
|
||||
ifeq ($(findstring -fsanitize=address,$(CXXFLAGS)),-fsanitize=address)
|
||||
ASAN = 1
|
||||
endif
|
||||
ifeq ($(findstring -fsanitize=undefined,$(CXXFLAGS)),-fsanitize=undefined)
|
||||
UBSAN = 1
|
||||
endif
|
||||
|
||||
# Enforce Sanitizer business logic...
|
||||
ifeq ($(ASAN)$(UBSAN),11)
|
||||
$(error Asan and UBsan are mutually exclusive)
|
||||
endif
|
||||
|
||||
endif # IS_X86
|
||||
|
||||
#################################################################
|
||||
# Darwin tweaks
|
||||
|
||||
ifneq ($(IS_DARWIN),0)
|
||||
|
||||
CXX ?= c++
|
||||
ifeq ($(AR),ar)
|
||||
AR = libtool
|
||||
ARFLAGS = -static -o
|
||||
endif
|
||||
|
||||
#########################
|
||||
# Build a boolean circuit that says "Darwin && (GCC 4.2 || Clang)"
|
||||
# MULTIARCH ?= $(shell echo $$(($(IS_DARWIN) * ($(GCC42_OR_LATER) + $(CLANG_COMPILER)))))
|
||||
MULTIARCH ?= 0
|
||||
ifneq ($(MULTIARCH),0)
|
||||
CXXFLAGS += -arch i386 -arch x86_64
|
||||
endif # MULTIARCH
|
||||
|
||||
endif # IS_DARWIN
|
||||
|
||||
#################################################################
|
||||
# i386, i686, x86_64 and friends
|
||||
|
||||
ifneq ($(IS_X86),0)
|
||||
|
||||
GCC42_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "^gcc version (4.[2-9]|[5-9])")
|
||||
ICC111_OR_LATER = $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])")
|
||||
|
|
@ -54,32 +154,7 @@ ifneq ($(IS_X86_64),0)
|
|||
CXXFLAGS += -fPIC
|
||||
endif # PIC for x86_64 targets
|
||||
|
||||
# Undefined Behavior Sanitizer (Clang 3.2 and GCC 4.8 and above)
|
||||
ifeq ($(findstring ubsan,$(MAKECMDGOALS)),ubsan)
|
||||
CXXFLAGS += -fsanitize=undefined
|
||||
# CXXFLAGS += -fsanitize-undefined-trap-on-error
|
||||
endif # UBsan
|
||||
|
||||
# Address Sanitizer (Clang 3.2 and GCC 4.8 and above)
|
||||
ifeq ($(findstring asan,$(MAKECMDGOALS)),asan)
|
||||
CXXFLAGS += -fsanitize=address
|
||||
endif # Asan
|
||||
|
||||
# Test CXXFLAGS in case the user passed the flags directly through it
|
||||
ASAN = 0
|
||||
UBSAN = 0
|
||||
ifeq ($(findstring -fsanitize=address,$(CXXFLAGS)),-fsanitize=address)
|
||||
ASAN = 1
|
||||
endif
|
||||
ifeq ($(findstring -fsanitize=undefined,$(CXXFLAGS)),-fsanitize=undefined)
|
||||
UBSAN = 1
|
||||
endif
|
||||
|
||||
# Enforce Sanitizer business logic...
|
||||
ifeq ($(ASAN)$(UBSAN),11)
|
||||
$(error Asan and UBsan are mutually exclusive)
|
||||
endif
|
||||
|
||||
#########################
|
||||
# Cygwin work arounds
|
||||
ifneq ($(IS_CYGWIN),0)
|
||||
|
||||
|
|
@ -88,7 +163,7 @@ ifeq ($(CXX),gcc)
|
|||
CXX = g++
|
||||
endif # CXX
|
||||
|
||||
# -fPIC causes spurious output during compile
|
||||
# -fPIC causes spurious output during compile. Remove it even if the user passed it in.
|
||||
ifeq ($(findstring -fPIC,$(CXXFLAGS)),-fPIC)
|
||||
CXXFLAGS := $(subst -fPIC,,$(CXXFLAGS))
|
||||
endif # -fPIC
|
||||
|
|
@ -103,15 +178,23 @@ endif # GCC 4.5
|
|||
|
||||
endif # Cygwin work arounds
|
||||
|
||||
# Build a boolean circuit that says "Darwin && (GCC 4.2 || Clang)"
|
||||
# MULTIARCH_SUPPORT ?= $(shell echo $$(($(IS_DARWIN) * ($(GCC42_OR_LATER) + $(CLANG_COMPILER)))))
|
||||
MULTIARCH_SUPPORT ?= 0
|
||||
ifneq ($(MULTIARCH_SUPPORT),0)
|
||||
CXXFLAGS += -arch i386 -arch x86_64
|
||||
else
|
||||
#########################
|
||||
# F22/i386 crash
|
||||
ifneq ($(IS_FEDORA22_i686),0)
|
||||
ifeq ($(findstring -O3,$(CXXFLAGS)),-O3)
|
||||
CXXFLAGS := $(subst -O3,-O2,$(CXXFLAGS))
|
||||
endif # -O2
|
||||
endif # Fedora 22/i686
|
||||
|
||||
#########################
|
||||
# Original Crypto++ code. Way back when, this caused a compiler crash with GCC on Ubuntu 9 or 10
|
||||
ifeq ($(findstring -m32 -m64,$(CXXFLAGS)),)
|
||||
CXXFLAGS += -march=native
|
||||
endif
|
||||
|
||||
#########################
|
||||
# Intel work arounds.
|
||||
# Should this be moved to outside of i386/i686/x86_64 block?
|
||||
ifneq ($(INTEL_COMPILER),0)
|
||||
CXXFLAGS += -wd68 -wd186 -wd279 -wd327
|
||||
ifeq ($(ICC111_OR_LATER),0)
|
||||
|
|
@ -121,6 +204,9 @@ CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
|
|||
endif
|
||||
endif
|
||||
|
||||
#########################
|
||||
# GAS work arounds.
|
||||
# Should this be moved to outside of i386/i686/x86_64 block?
|
||||
ifeq ($(GAS210_OR_LATER),0)
|
||||
CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
|
||||
else
|
||||
|
|
@ -131,93 +217,103 @@ ifeq ($(GAS219_OR_LATER),0)
|
|||
CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI
|
||||
endif # GAS219_OR_LATER
|
||||
endif # GAS217_OR_LATER
|
||||
ifeq ($(UNAME),SunOS)
|
||||
ifneq ($(IS_SUN),0)
|
||||
CXXFLAGS += -Wa,--divide # allow use of "/" operator
|
||||
endif # SunOS
|
||||
endif # IS_SUN
|
||||
endif # GAS210_OR_LATER
|
||||
|
||||
endif # IS_X86
|
||||
|
||||
#########################
|
||||
ifeq ($(IS_MINGW),1)
|
||||
LDLIBS += -lws2_32
|
||||
endif # IS_MINGW
|
||||
|
||||
endif # IS_X86
|
||||
|
||||
# Should most of this be moved to outside of i386/i686/x86_64 block?
|
||||
ifeq ($(IS_LINUX),1)
|
||||
LDFLAGS += -pthread
|
||||
ifneq ($(IS_X86_64),0)
|
||||
M32OR64 = -m64
|
||||
endif
|
||||
ifeq ($(findstring -fopenmp,$(MAKECMDGOALS)),-fopenmp)
|
||||
LDLIBS += -lgomp
|
||||
endif # -fopenmp
|
||||
endif # IS_LINUX
|
||||
|
||||
ifneq ($(IS_DARWIN),0)
|
||||
AR ?= libtool
|
||||
ARFLAGS ?= -static -o
|
||||
CXX ?= c++
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME),SunOS)
|
||||
ifneq ($(IS_SUN),0)
|
||||
LDLIBS += -lnsl -lsocket
|
||||
M32OR64 = -m$(shell isainfo -b)
|
||||
endif
|
||||
|
||||
# -Wall and -Wno-type-limits for GCC 4.3 and above. It needs -Wno-unknown-pragmas due
|
||||
# to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431. We can't use -Wall
|
||||
# unguarded because it lights up CentOS 5 (GCC 4.1) and OpenBSD (4.2.1)
|
||||
GCC43_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "^gcc version (4.[3-9]|[5-9])")
|
||||
ifneq ($(GCC43_OR_LATER),0)
|
||||
CXXFLAGS += -Wall -Wno-type-limits -Wno-unknown-pragmas
|
||||
endif
|
||||
|
||||
ifneq ($(CLANG_COMPILER),0)
|
||||
CXXFLAGS += -Wall -Wno-tautological-compare
|
||||
endif
|
||||
|
||||
ifeq ($(UNAME),) # for DJGPP, where uname doesn't exist
|
||||
CXXFLAGS += -mbnu210
|
||||
else
|
||||
CXXFLAGS += -pipe
|
||||
endif
|
||||
|
||||
ifneq ($(SUN_COMPILER),0) # override flags for CC Sun C++ compiler
|
||||
CXXFLAGS = -DNDEBUG -O -g0 -native -template=no%extdef $(M32OR64)
|
||||
LDFLAGS =
|
||||
AR = $(CXX)
|
||||
ARFLAGS = -xar -o
|
||||
RANLIB = true
|
||||
LDFLAGS =
|
||||
SUN_CC10_BUGGY = $(shell $(CXX) -V 2>&1 | $(EGREP) -c "CC: Sun .* 5\.10 .* (2009|2010/0[1-4])")
|
||||
ifneq ($(SUN_CC10_BUGGY),0)
|
||||
# -DCRYPTOPP_INCLUDE_VECTOR_CC is needed for Sun Studio 12u1 Sun C++ 5.10 SunOS_i386 128229-02 2009/09/21 and was fixed in May 2010
|
||||
# remove it if you get "already had a body defined" errors in vector.cc
|
||||
CXXFLAGS += -DCRYPTOPP_INCLUDE_VECTOR_CC
|
||||
endif
|
||||
endif # SUN_CC10_BUGGY
|
||||
endif # SUN_COMPILER
|
||||
|
||||
#################################################################
|
||||
# Compiler diagnostics and warnings
|
||||
|
||||
# -Wall, -Wextra and -Wno-type-limits for GCC 4.3 and above. It needs -Wno-unknown-pragmas due
|
||||
# to bug https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53431. We can't use -Wall
|
||||
# unguarded because it lights up CentOS 5 (GCC 4.1) and OpenBSD (4.2.1)
|
||||
GCC43_OR_LATER = $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "^gcc version (4\.[3-9]|[5-9])")
|
||||
ifneq ($(GCC43_OR_LATER),0)
|
||||
CXXFLAGS += -Wall -Wextra -Wno-type-limits -Wno-unknown-pragmas
|
||||
endif
|
||||
|
||||
SRCS = $(filter-out pch.cpp cryptlib_bds.cpp winpipes.cpp, $(wildcard *.cpp))
|
||||
ifneq ($(IS_MINGW),0)
|
||||
SRCS += winpipes.cpp
|
||||
# -Wall, -Wextra and -Wno-tautological-compare for Clang
|
||||
ifneq ($(CLANG_COMPILER),0)
|
||||
CXXFLAGS += -Wall -Wextra -Wno-tautological-compare
|
||||
endif
|
||||
|
||||
ifeq ($(findstring -pipe,$(CXXFLAGS)),)
|
||||
CXXFLAGS += -pipe
|
||||
endif
|
||||
|
||||
#################################################################
|
||||
# Sources, objects and temporaries
|
||||
|
||||
WIN_SRCS = pch.cpp cryptlib_bds.cpp
|
||||
ifeq ($(IS_MINGW),0)
|
||||
WIN_SRCS += winpipes.cpp
|
||||
endif
|
||||
|
||||
# List of sources to compile and objects to link
|
||||
SRCS = $(filter-out $(WIN_SRCS), $(wildcard *.cpp))
|
||||
OBJS = $(SRCS:.cpp=.o)
|
||||
|
||||
# Compiling with --save-temps creates these
|
||||
TEMPS = $(SRCS:.cpp=.s) $(SRCS:.cpp=.ii)
|
||||
|
||||
# test.o needs to be after bench.o for cygwin 1.1.4 (possible ld bug?)
|
||||
TESTOBJS = bench.o bench2.o test.o validat1.o validat2.o validat3.o adhoc.o datatest.o regtest.o fipsalgt.o dlltest.o
|
||||
LIBOBJS = $(filter-out $(TESTOBJS),$(OBJS))
|
||||
|
||||
DLLSRCS = algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp cryptlib.cpp des.cpp dessp.cpp dh.cpp dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp
|
||||
DLLSRCS = algebra.cpp algparam.cpp asn.cpp basecode.cpp cbcmac.cpp channels.cpp cryptlib.cpp des.cpp dessp.cpp dh.cpp \
|
||||
dll.cpp dsa.cpp ec2n.cpp eccrypto.cpp ecp.cpp eprecomp.cpp files.cpp filters.cpp fips140.cpp fipstest.cpp \
|
||||
gf2n.cpp gfpcrypt.cpp hex.cpp hmac.cpp integer.cpp iterhash.cpp misc.cpp modes.cpp modexppc.cpp mqueue.cpp \
|
||||
nbtheory.cpp oaep.cpp osrng.cpp pch.cpp pkcspad.cpp pubkey.cpp queue.cpp randpool.cpp rdtables.cpp \
|
||||
rijndael.cpp rng.cpp rsa.cpp sha.cpp simple.cpp skipjack.cpp strciphr.cpp trdlocal.cpp
|
||||
DLLOBJS = $(DLLSRCS:.cpp=.export.o)
|
||||
LIBIMPORTOBJS = $(LIBOBJS:.o=.import.o)
|
||||
TESTIMPORTOBJS = $(TESTOBJS:.o=.import.o)
|
||||
DLLTESTOBJS = dlltest.dllonly.o
|
||||
|
||||
#################################################################
|
||||
# Recipes
|
||||
|
||||
# For various targets, see https://www.gnu.org/prep/standards/html_node/Standard-Targets.html
|
||||
# We want to include libcryptopp, cryptest, clean, distclean, install, install-strip, uninstall
|
||||
|
||||
all cryptest: cryptest.exe
|
||||
static: libcryptopp.a
|
||||
|
||||
|
||||
ifeq ($(IS_DARWIN),0)
|
||||
shared dynamic: libcryptopp.so
|
||||
else
|
||||
|
|
@ -232,45 +328,52 @@ test check: cryptest.exe
|
|||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-$(RM) cryptest.exe libcryptopp.a libcrypto++.a libcryptopp.so libcrypto++.so libcryptopp.dylib $(LIBOBJS) $(TESTOBJS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTI MPORTOBJS) $(DLLTESTOBJS)
|
||||
-$(RM) cryptest.exe libcryptopp.a libcrypto++.a libcryptopp.so libcrypto++.so libcryptopp.dylib $(LIBOBJS) $(TESTOBJS) $(TEMPS) cryptopp.dll libcryptopp.dll.a libcryptopp.import.a cryptest.import.exe dlltest.exe $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTI MPORTOBJS) $(DLLTESTOBJS)
|
||||
ifneq ($(IS_DARWIN),0)
|
||||
-$(RM) -r cryptest.exe.dSYM
|
||||
endif
|
||||
|
||||
.PHONY: distclean
|
||||
distclean:
|
||||
-$(RM) -r GNUmakefile.deps *.o *.obj *.a *.so *.exe \
|
||||
a.out *~ \.*~ *\.h\. *\.cpp\. *.bu *.bak \
|
||||
adhoc.cpp adhoc.cpp.copied *.diff *.patch cryptopp.zip \
|
||||
*.dSYM .DS_Store TestVectors/.DS_Store TestData/.DS_Store
|
||||
-$(RM) -r GNUmakefile.deps *.o *.obj *.a *.so *.exe a.out *~ \.*~ *\.h\. *\.cpp\. *.bu *.bak adhoc.cpp adhoc.cpp.copied *.diff *.patch cryptopp.zip
|
||||
ifneq ($(IS_DARWIN),0)
|
||||
-$(RM) *.dSYM .DS_Store TestVectors/.DS_Store TestData/.DS_Store
|
||||
endif
|
||||
|
||||
.PHONY: install
|
||||
install:
|
||||
$(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
|
||||
-$(CP) *.h $(PREFIX)/include/cryptopp
|
||||
-$(CP) *.a $(PREFIX)/lib
|
||||
-$(CP) *.so *.dylib $(PREFIX)/lib
|
||||
-$(CP) *.exe $(PREFIX)/bin
|
||||
-$(CP) libcryptopp.a $(PREFIX)/lib
|
||||
-$(CP) cryptest.exe $(PREFIX)/bin
|
||||
ifeq ($(IS_DARWIN),0)
|
||||
-$(CP) *.so $(PREFIX)/lib
|
||||
else
|
||||
-$(CP) *.dylib $(PREFIX)/lib
|
||||
endif
|
||||
|
||||
.PHONY: install-strip
|
||||
install-strip: libcryptopp.a cryptest.exe
|
||||
$(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
|
||||
-$(CP) *.h $(PREFIX)/include/cryptopp
|
||||
-$(CP) *.a $(PREFIX)/lib
|
||||
-$(CP) *.so $(PREFIX)/lib
|
||||
-$(CP) *.exe $(PREFIX)/bin
|
||||
install-strip: install
|
||||
-$(STRIP) -s $(PREFIX)/bin/cryptest.exe
|
||||
ifeq ($(IS_DARWIN),0)
|
||||
-$(STRIP) -s $(PREFIX)/lib/libcryptopp.so
|
||||
else
|
||||
-$(STRIP) -s $(PREFIX)/lib/libcryptopp.dylib
|
||||
endif
|
||||
|
||||
.PHONY: uninstall remove
|
||||
uninstall remove:
|
||||
-$(RM) -rf $(PREFIX)/include/cryptopp
|
||||
-$(RM) $(PREFIX)/lib/libcryptopp.a
|
||||
-$(RM) $(PREFIX)/lib/libcryptopp.so
|
||||
-$(RM) $(PREFIX)/lib/libcryptopp.dylib
|
||||
-$(RM) $(PREFIX)/bin/cryptest.exe
|
||||
ifeq ($(IS_DARWIN),0)
|
||||
-$(RM) $(PREFIX)/lib/libcryptopp.so
|
||||
else
|
||||
-$(RM) $(PREFIX)/lib/libcryptopp.dylib
|
||||
endif
|
||||
|
||||
.PHONY: dist
|
||||
dist: distclean
|
||||
.PHONY: zip dist
|
||||
zip dist: distclean
|
||||
-zip -9 cryptopp.zip *.h *.cpp *.asm License.txt Readme.txt \
|
||||
GNUmakefile GNUmakefile-cross Doxyfile \
|
||||
cryptest_bds.bdsgroup cryptest_bds.bdsproj cryptest_bds.bpf cryptlib_bds.bdsproj \
|
||||
|
|
@ -284,7 +387,7 @@ libcryptopp.a: $(LIBOBJS)
|
|||
|
||||
libcryptopp.so: $(LIBOBJS)
|
||||
$(CXX) -shared -o $@ $(CXXFLAGS) $(LIBOBJS)
|
||||
|
||||
|
||||
libcryptopp.dylib: $(LIBOBJS)
|
||||
$(CXX) -shared -dynamiclib -o $@ $(CXXFLAGS) $(LIBOBJS)
|
||||
|
||||
|
|
@ -326,14 +429,19 @@ endif
|
|||
%.o : %.cpp
|
||||
$(CXX) $(CXXFLAGS) -c $<
|
||||
|
||||
# Do not build dependencies when multiarch is in effect
|
||||
ifeq ($(MULTIARCH_SUPPORT),0)
|
||||
#################################################################
|
||||
# Dependencies
|
||||
|
||||
# Do not build dependencies when cleaning
|
||||
ifneq ($(findstring clean,$(MAKECMDGOALS)),clean)
|
||||
# Do not build dependencies for some targets
|
||||
NO_DEPS = dist install install-strip uninstall remove clean distclean
|
||||
ifeq ($(findstring $(MAKECMDGOALS),$(NO_DEPS)),)
|
||||
|
||||
# Do not build dependencies when multiarch is in effect
|
||||
ifeq ($(MULTIARCH),0)
|
||||
-include GNUmakefile.deps
|
||||
endif
|
||||
|
||||
GNUmakefile.deps:
|
||||
$(CXX) $(CXXFLAGS) -MM *.cpp > GNUmakefile.deps
|
||||
endif
|
||||
|
||||
endif # NO_DEPS
|
||||
|
|
|
|||
Loading…
Reference in New Issue