openbsd-ports/devel/cryptopp/patches/patch-GNUmakefile
2015-11-23 13:19:40 +00:00

398 lines
14 KiB
Plaintext

$OpenBSD: patch-GNUmakefile,v 1.4 2015/11/23 13:19:40 dcoppa Exp $
--- GNUmakefile.orig Mon Nov 23 12:40:00 2015
+++ GNUmakefile Mon Nov 23 12:41:22 2015
@@ -1,6 +1,12 @@
# Base CXXFLAGS used if the user did not specify them
+ifndef CXXFLAGS
CXXFLAGS ?= -DNDEBUG -g2 -O2
+endif
+ifndef LDFLAGS
+LDFLAGS = -lpthread
+endif
+
# -fPIC is supported, please report failures with steps to reproduce
# If PIC is required but results in a crash, then use -DCRYPTOPP_DISABLE_ASM
# CXXFLAGS += -fPIC
@@ -19,221 +25,14 @@ CHMOD ?= chmod
MKDIR ?= mkdir
EGREP ?= egrep
-UNAME := $(shell uname)
-IS_X86 := $(shell uname -m | $(EGREP) -i -c "i.86|x86|i86|amd64")
-IS_X86_64 := $(shell uname -m | $(EGREP) -i -c "(_64|d64)")
-IS_AARCH64 := $(shell uname -m | $(EGREP) -i -c "aarch64")
+IS_X86 := $(shell arch -s | $(EGREP) -i -c "i.86|x86|i86|amd64")
+IS_X86_64 := $(shell arch -s | $(EGREP) -i -c "(_64|d64)")
-IS_SUN := $(shell uname | $(EGREP) -i -c "SunOS")
-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_DARWIN := $(shell $(CXX) -dumpmachine 2>&1 | $(EGREP) -i -c "Darwin")
-
-SUN_COMPILER := $(shell $(CXX) -V 2>&1 | $(EGREP) -i -c "CC: Sun")
-GCC_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "(gcc|g\+\+)")
-CLANG_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "clang")
-INTEL_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\)")
-MACPORTS_COMPILER := $(shell $(CXX) --version 2>&1 | $(EGREP) -i -c "macports")
-
# Default prefix for make install
ifeq ($(PREFIX),)
PREFIX = /usr
endif
-ifeq ($(CXX),gcc) # for some reason CXX is gcc on cygwin 1.1.4
-CXX := g++
-endif
-
-# We honor ARFLAGS, but the "v" often option used by default causes a noisy make
-ifeq ($(ARFLAGS),rv)
-ARFLAGS = r
-endif
-
-ifeq ($(IS_X86),1)
-
-IS_GCC_29 := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c gcc-9[0-9][0-9])
-GCC42_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[2-9]|[5-9]\.)")
-GCC46_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[6-9]|[5-9]\.)")
-GCC48_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.[8-9]|[5-9]\.)")
-GCC49_OR_LATER := $(shell $(CXX) -v 2>&1 | $(EGREP) -i -c "gcc version (4\.9|[5-9]\.)")
-
-ICC111_OR_LATER := $(shell $(CXX) --version 2>&1 | $(EGREP) -c "\(ICC\) ([2-9][0-9]|1[2-9]|11\.[1-9])")
-GAS210_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.[1-9][0-9]|[3-9])")
-GAS217_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.1[7-9]|2\.[2-9]|[3-9])")
-GAS219_OR_LATER := $(shell $(CXX) -xc -c /dev/null -Wa,-v -o/dev/null 2>&1 | $(EGREP) -c "GNU assembler version (2\.19|2\.[2-9]|[3-9])")
-
-# Add -fPIC for x86_64, but not X32, Cygwin or MinGW
-ifneq ($(IS_X86_64),0)
- IS_X32 := $(shell $(CXX) -dM -E - < /dev/null 2>&1 | $(EGREP) -c "ILP32")
- ifeq ($(IS_X32)$(IS_CYGWIN)$(IS_MINGW),000)
- ifeq ($(findstring -fPIC,$(CXXFLAGS)),)
- CXXFLAGS += -fPIC
- endif
- endif
-endif
-
-# Guard use of -march=native
-ifeq ($(GCC_COMPILER),0)
- CXXFLAGS += -march=native
-else ifneq ($(GCC42_OR_LATER),0)
- CXXFLAGS += -march=native
-else
- # GCC 3.3 and "unknown option -march="
- # GCC 4.1 compiler crash with -march=native.
- ifneq ($(IS_X86_64),0)
- CXXFLAGS += -m64
- else
- CXXFLAGS += -m32
- endif # X86/X32/X64
-endif
-
-# Aligned access required at -O3 for GCC due to vectorization (circa 08/2008). Expect other compilers to do the same.
-UNALIGNED_ACCESS := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_NO_UNALIGNED_DATA_ACCESS" config.h)
-ifeq ($(findstring -O3,$(CXXFLAGS)),-O3)
-ifneq ($(UNALIGNED_ACCESS),0)
-ifeq ($(GCC46_OR_LATER),1)
-ifeq ($(findstring -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS,$(CXXFLAGS)),)
-CXXFLAGS += -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS
-endif # CRYPTOPP_NO_UNALIGNED_DATA_ACCESS
-endif # GCC 4.6
-endif # UNALIGNED_ACCESS
-endif # Vectorization
-
-ifneq ($(INTEL_COMPILER),0)
-CXXFLAGS += -wd68 -wd186 -wd279 -wd327 -wd161 -wd3180
-ifeq ($(ICC111_OR_LATER),0)
-# "internal error: backend signals" occurs on some x86 inline assembly with ICC 9 and some x64 inline assembly with ICC 11.0
-# if you want to use Crypto++'s assembly code with ICC, try enabling it on individual files
-CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
-endif
-endif
-
-ifeq ($(GCC_COMPILER)$(GAS210_OR_LATER),10) # .intel_syntax wasn't supported until GNU assembler 2.10
-CXXFLAGS += -DCRYPTOPP_DISABLE_ASM
-else
-ifeq ($(GCC_COMPILER)$(GAS217_OR_LATER),10)
-CXXFLAGS += -DCRYPTOPP_DISABLE_SSSE3
-else
-ifeq ($(GCC_COMPILER)$(GAS219_OR_LATER),10)
-CXXFLAGS += -DCRYPTOPP_DISABLE_AESNI
-endif
-endif
-
-ifneq ($(IS_SUN),0)
-CXXFLAGS += -Wa,--divide # allow use of "/" operator
-endif
-endif
-
-endif # IS_X86
-
-ifeq ($(UNAME),) # for DJGPP, where uname doesn't exist
-CXXFLAGS += -mbnu210
-else ifneq ($(findstring -save-temps,$(CXXFLAGS)),-save-temps)
-CXXFLAGS += -pipe
-endif
-
-ifneq ($(IS_MINGW),0)
-LDLIBS += -lws2_32
-endif
-
-ifeq ($(IS_LINUX),1)
-LDFLAGS += -pthread
-ifeq ($(findstring -fopenmp,$(CXXFLAGS)),-fopenmp)
-ifeq ($(findstring -lgomp,$(LDLIBS)),)
-LDLIBS += -lgomp
-endif # LDLIBS
-endif # OpenMP
-ifneq ($(IS_X86_64),0)
-M32OR64 = -m64
-endif
-endif # IS_LINUX
-
-# And add it for ARM64, too
-ifneq ($(IS_AARCH64),0)
- ifeq ($(findstring -fPIC,$(CXXFLAGS)),)
- CXXFLAGS += -fPIC
- endif
-endif
-
-ifneq ($(IS_DARWIN),0)
-AR = libtool
-ARFLAGS = -static -o
-CXX ?= c++
-ifeq ($(IS_GCC_29),1)
-CXXFLAGS += -fno-coalesce-templates -fno-coalesce-static-vtables
-LDLIBS += -lstdc++
-LDFLAGS += -flat_namespace -undefined suppress -m
-endif
-endif
-
-ifneq ($(IS_SUN),0)
-LDLIBS += -lnsl -lsocket
-M32OR64 = -m$(shell isainfo -b)
-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
-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
-
-# Undefined Behavior Sanitizer (UBsan) testing. There's no sense in
-# allowing unaligned data access. There will too many findings.
-ifeq ($(findstring ubsan,$(MAKECMDGOALS)),ubsan)
-ifeq ($(findstring -fsanitize=undefined,$(CXXFLAGS)),)
-CXXFLAGS += -fsanitize=undefined
-endif # CXXFLAGS
-ifeq ($(findstring -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS,$(CXXFLAGS)),)
-CXXFLAGS += -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS
-endif # CXXFLAGS
-endif # UBsan
-
-# Address Sanitizer (Asan) testing
-ifeq ($(findstring asan,$(MAKECMDGOALS)),asan)
-ifeq ($(findstring -fsanitize=address,$(CXXFLAGS)),)
-CXXFLAGS += -fsanitize=address
-endif # CXXFLAGS
-endif # Asan
-
-# LD gold linker testing
-ifeq ($(findstring ld.gold,$(LD)),ld.gold)
-ifeq ($(findstring -Wl,-fuse-ld=gold,$(CXXFLAGS)),)
-ELF_FORMAT := $(shell file `which ld.gold` 2>&1 | cut -d":" -f 2 | $(EGREP) -i -c "elf")
-ifneq ($(ELF_FORMAT),0)
-GOLD_OPTION = -Wl,-fuse-ld=gold
-endif # ELF/ELF64
-endif # CXXFLAGS
-endif # Gold
-
-# Aligned access testing
-ifneq ($(filter align aligned,$(MAKECMDGOALS)),)
-ifeq ($(findstring -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS,$(CXXFLAGS)),)
-CXXFLAGS += -DCRYPTOPP_NO_UNALIGNED_DATA_ACCESS
-endif # # CXXFLAGS
-endif # Aligned access
-
-# Debug testing on GNU systems
-ifneq ($(filter -DDEBUG -DDEBUG=1,$(CXXFLAGS)),)
-USING_GLIBCXX := $(shell $(CXX) -x c++ $(CXXFLAGS) -E adhoc.cpp.proto 2>&1 | $(EGREP) -i -c "__GLIBCXX__")
-ifneq ($(USING_GLIBCXX),0)
-ifeq ($(findstring -D_GLIBCXX_DEBUG,$(CXXFLAGS)),)
-CXXFLAGS += -D_GLIBCXX_DEBUG
-endif # CXXFLAGS
-ifeq ($(findstring -D_GLIBCXX_CONCEPT_CHECKS,$(CXXFLAGS)),)
-CXXFLAGS += -D_GLIBCXX_CONCEPT_CHECKS
-endif # CXXFLAGS
-endif # USING_GLIBCXX
-endif # GNU Debug build
-
# List cryptlib.cpp first and cpu.o second in an attempt to tame C++ static initialization problems. The issue
# spills into POD data types, so cpu.cpp is the second candidate for explicit initialization order.
SRCS := cryptlib.cpp cpu.cpp $(filter-out cryptlib.cpp cpu.cpp pch.cpp simple.cpp winpipes.cpp cryptlib_bds.cpp,$(wildcard *.cpp))
@@ -243,10 +42,6 @@ ifeq ($(IS_X86)$(IS_X86_64),00)
SRCS := $(filter-out cpu.cpp rdrand.cpp, $(SRCS))
endif
-ifneq ($(IS_MINGW),0)
-SRCS += winpipes.cpp
-endif
-
# List of objects with crytlib.o and cpu.o at the first and second index position
OBJS := $(SRCS:.cpp=.o)
@@ -273,26 +68,19 @@ ifeq ($(strip $(LIB_PATCH)),)
LIB_PATCH := 0
endif
-all: cryptest.exe
+SHARED_LIB = libcryptopp.so.${LIBcryptopp_VERSION}
-ifneq ($(IS_DARWIN),0)
+all: cryptest.exe ${SHARED_LIB}
+
static: libcryptopp.a
-shared dynamic dylib: libcryptopp.dylib
-else
-static: libcryptopp.a
-shared dynamic: libcryptopp.so
-endif
.PHONY: deps
deps GNUmakefile.deps:
$(CXX) $(CXXFLAGS) -MM *.cpp > GNUmakefile.deps
-.PHONY: asan ubsan align aligned
-asan ubsan align aligned: libcryptopp.a cryptest.exe
-
.PHONY: test check
test check: cryptest.exe
- ./cryptest.exe v
+ LD_LIBRARY_PATH=${WRKDIST} ./cryptest.exe v
# Directory we want (can't specify on Doygen command line)
DOCUMENT_DIRECTORY := ref$(LIB_VER)
@@ -315,7 +103,7 @@ docs html:
.PHONY: clean
clean:
- -$(RM) libcryptopp.a libcryptopp.so libcryptopp.dylib cryptopp.dll libcryptopp.dll.a libcryptopp.import.a
+ -$(RM) libcryptopp.a ${SHARED_LIB} libcryptopp.dylib cryptopp.dll libcryptopp.dll.a libcryptopp.import.a
-$(RM) adhoc.cpp.o adhoc.cpp.proto.o $(LIBOBJS) $(TESTOBJS) $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS) *.stackdump core-*
-$(RM) cryptest.exe dlltest.exe cryptest.import.exe ct rdrand-???.o
ifneq ($(wildcard *.exe.dSYM),)
@@ -345,44 +133,27 @@ endif
install:
$(MKDIR) -p $(PREFIX)/include/cryptopp $(PREFIX)/lib $(PREFIX)/bin
-$(CP) *.h $(PREFIX)/include/cryptopp
- -$(CHMOD) 755 $(PREFIX)/include/cryptopp
- -$(CHMOD) 644 $(PREFIX)/include/cryptopp/*.h
-$(CP) libcryptopp.a $(PREFIX)/lib
- -$(CHMOD) 644 $(PREFIX)/lib/libcryptopp.a
-$(CP) cryptest.exe $(PREFIX)/bin
- -$(CHMOD) 755 $(PREFIX)/bin/cryptest.exe
-ifneq ($(IS_DARWIN),0)
- -$(CP) libcryptopp.dylib $(PREFIX)/lib
- -$(CHMOD) 755 $(PREFIX)/lib/libcryptopp.dylib
-else
- -$(CP) libcryptopp.so $(PREFIX)/lib
- -$(CHMOD) 755 $(PREFIX)/lib/libcryptopp.so
-endif
+ -$(CP) ${SHARED_LIB} $(PREFIX)/lib
.PHONY: remove uninstall
remove uninstall:
-$(RM) -r $(PREFIX)/include/cryptopp
-$(RM) $(PREFIX)/lib/libcryptopp.a
-$(RM) $(PREFIX)/bin/cryptest.exe
-ifneq ($(IS_DARWIN),0)
- -$(RM) $(PREFIX)/lib/libcryptopp.dylib
-else
- -$(RM) $(PREFIX)/lib/libcryptopp.so
-endif
+ -$(RM) $(PREFIX)/lib/${SHARED_LIB}
-libcryptopp.a: public_service | $(LIBOBJS)
+libcryptopp.a: $(LIBOBJS)
$(AR) $(ARFLAGS) $@ $(LIBOBJS)
$(RANLIB) $@
-libcryptopp.so: public_service | $(LIBOBJS)
- $(CXX) -shared -o $@ $(CXXFLAGS) $(GOLD_OPTION) $(LIBOBJS) $(LDLIBS)
+${SHARED_LIB}: $(LIBOBJS)
+ $(CXX) -shared -o $@ $(CXXFLAGS) $(LIBOBJS) $(LDFLAGS) $(LDLIBS)
-libcryptopp.dylib: $(LIBOBJS)
- $(CXX) -dynamiclib -o $@ $(CXXFLAGS) -install_name "$@" -current_version "$(LIB_MAJOR).$(LIB_MINOR).$(LIB_PATCH)" -compatibility_version "$(LIB_MAJOR).$(LIB_MINOR)" $(LIBOBJS)
+cryptest.exe: libcryptopp.a $(TESTOBJS)
+ $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS) $(LDLIBS)
-cryptest.exe: public_service | libcryptopp.a $(TESTOBJS)
- $(CXX) -o $@ $(CXXFLAGS) $(TESTOBJS) ./libcryptopp.a $(LDFLAGS) $(GOLD_OPTION) $(LDLIBS)
-
nolib: $(OBJS) # makes it faster to test changes
$(CXX) -o ct $(CXXFLAGS) $(OBJS) $(LDFLAGS) $(LDLIBS)
@@ -423,9 +194,6 @@ convert:
chmod u+x *.cmd *.sh
unix2dos --keepdate --quiet $(TEXT_FILES) *.asm *.cmd
dos2unix --keepdate --quiet GNUmakefile GNUmakefile-cross *.S *.sh
-ifneq ($(IS_DARWIN),0)
- xattr -c *
-endif
.PHONY: zip dist
zip dist: | distclean convert diff
@@ -458,17 +226,6 @@ ifeq ($(wildcard GNUmakefile.deps),GNUmakefile.deps)
-include GNUmakefile.deps
endif # Dependencies
-# MacPorts/GCC issue with init_priority. Apple/GCC and Fink/GCC are fine; limit to MacPorts.
-# Also see http://lists.macosforge.org/pipermail/macports-users/2015-September/039223.html
-ifeq ($(GCC_COMPILER)$(MACPORTS_COMPILER),11)
-ifeq ($(findstring -DMACPORTS_GCC_COMPILER,$(CXXFLAGS)),)
-cryptlib.o:
- $(CXX) $(CXXFLAGS) -DMACPORTS_GCC_COMPILER=1 -c cryptlib.cpp
-cpu.o:
- $(CXX) $(CXXFLAGS) -DMACPORTS_GCC_COMPILER=1 -c cpu.cpp
-endif
-endif
-
%.dllonly.o : %.cpp
$(CXX) $(CXXFLAGS) -DCRYPTOPP_DLL_ONLY -c $< -o $@
@@ -480,25 +237,3 @@ endif
%.o : %.cpp
$(CXX) $(CXXFLAGS) -c $<
-
-# Warn of potential configurations issues. They will go away after 5.6.3.
-UNALIGNED_ACCESS := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_NO_UNALIGNED_DATA_ACCESS" config.h)
-NO_INIT_PRIORITY := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_INIT_PRIORITY" config.h)
-COMPATIBILITY_562 := $(shell $(EGREP) -c "^[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562" config.h)
-.PHONY: public_service
-public_service:
-ifneq ($(UNALIGNED_ACCESS),0)
- $(info WARNING: CRYPTOPP_NO_UNALIGNED_DATA_ACCESS is not defined in config.h.)
-endif
-ifneq ($(NO_INIT_PRIORITY),0)
- $(info WARNING: CRYPTOPP_INIT_PRIORITY is not defined in config.h.)
-endif
-ifneq ($(COMPATIBILITY_562),0)
- $(info WARNING: CRYPTOPP_MAINTAIN_BACKWARDS_COMPATIBILITY_562 is defined in config.h.)
-endif
-ifneq ($(UNALIGNED_ACCESS)$(NO_INIT_PRIORITY)$(COMPATIBILITY_562),000)
- $(info WARNING: You should make these changes in config.h, and not CXXFLAGS.)
- $(info WARNING: You can 'mv config.recommend config.h', but it breaks versioning.)
- $(info WARNING: See http://cryptopp.com/wiki/config.h for more details.)
- $(info )
-endif