Define _XOPEN_SOURCE for Cygwin/Newlib (Issue 315)
parent
86a45fd1ca
commit
a0bb490056
21
GNUmakefile
21
GNUmakefile
|
|
@ -8,6 +8,7 @@ RANLIB ?= ranlib
|
|||
|
||||
CP ?= cp
|
||||
MV ?= mv
|
||||
RM ?= rm -f
|
||||
EGREP ?= egrep
|
||||
CHMOD ?= chmod
|
||||
MKDIR ?= mkdir
|
||||
|
|
@ -151,6 +152,13 @@ endif # -mtune
|
|||
endif # -march
|
||||
# END MARCH_CXXFLAGS
|
||||
|
||||
# Cygwin needs _XOPEN_SOURCE for signals
|
||||
ifeq ($(IS_CYGWIN),1)
|
||||
ifeq ($(findstring -D_XOPEN_SOURCE,$(CXXFLAGS)),)
|
||||
CXXFLAGS += -D_XOPEN_SOURCE=700
|
||||
endif
|
||||
endif
|
||||
|
||||
# Aligned access required for -O3 and above due to vectorization
|
||||
UNALIGNED_ACCESS := $(shell $(EGREP) -c "^[[:space:]]*//[[:space:]]*\#[[:space:]]*define[[:space:]]*CRYPTOPP_NO_UNALIGNED_DATA_ACCESS" config.h)
|
||||
ifneq ($(UNALIGNED_ACCESS),0)
|
||||
|
|
@ -487,7 +495,7 @@ lean: static dynamic cryptest.exe
|
|||
# May want to export CXXFLAGS="-g3 -O1"
|
||||
.PHONY: coverage
|
||||
coverage: libcryptopp.a cryptest.exe
|
||||
@-$(RM) -rf ./TestCoverage/
|
||||
@-$(RM) -r ./TestCoverage/
|
||||
lcov --base-directory . --directory . --zerocounters -q
|
||||
./cryptest.exe v
|
||||
./cryptest.exe tv all
|
||||
|
|
@ -528,10 +536,10 @@ docs html:
|
|||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-$(RM) adhoc.cpp.o adhoc.cpp.proto.o $(LIBOBJS) $(TESTOBJS) $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
|
||||
-$(RM) adhoc.cpp.o adhoc.cpp.proto.o $(LIBOBJS) rdrand-*.o $(TESTOBJS) $(DLLOBJS) $(LIBIMPORTOBJS) $(TESTIMPORTOBJS) $(DLLTESTOBJS)
|
||||
@-$(RM) libcryptopp.a libcryptopp.dylib cryptopp.dll libcryptopp.dll.a libcryptopp.import.a
|
||||
@-$(RM) libcryptopp.so libcryptopp.so$(SOLIB_COMPAT_SUFFIX) libcryptopp.so$(SOLIB_VERSION_SUFFIX)
|
||||
@-$(RM) cryptest.exe dlltest.exe cryptest.import.exe cryptest.info ct rdrand-???.o
|
||||
@-$(RM) cryptest.exe dlltest.exe cryptest.import.exe cryptest.info ct
|
||||
@-$(RM) *.gcno *.gcda *.stackdump core-*
|
||||
@-$(RM) /tmp/adhoc.exe
|
||||
@-$(RM) -r /tmp/cryptopp_test/
|
||||
|
|
@ -544,6 +552,7 @@ distclean: clean
|
|||
-$(RM) adhoc.cpp adhoc.cpp.copied GNUmakefile.deps benchmarks.html cryptest.txt cryptest-*.txt
|
||||
@-$(RM) CMakeCache.txt Makefile CTestTestfile.cmake cmake_install.cmake cryptopp-config-version.cmake
|
||||
@-$(RM) cryptopp.tgz *.o *.bc *.ii *.s *~
|
||||
@-$(RM) -r $(SRCS:.cpp=.obj) *.suo *.sdf *.pdb Win32/ x64/ ipch/
|
||||
@-$(RM) -r CMakeFiles/
|
||||
@-$(RM) -r $(DOCUMENT_DIRECTORY)/
|
||||
@-$(RM) -r TestCoverage/
|
||||
|
|
@ -557,7 +566,7 @@ install:
|
|||
-$(CHMOD) 0755 $(DESTDIR)$(INCLUDEDIR)/cryptopp
|
||||
-$(CHMOD) 0644 $(DESTDIR)$(INCLUDEDIR)/cryptopp/*.h
|
||||
ifneq ($(wildcard libcryptopp.a),)
|
||||
$(MKDIR) -p $(DESTDIR)$(LIBDIR)
|
||||
@-$(MKDIR) -p $(DESTDIR)$(LIBDIR)
|
||||
$(CP) libcryptopp.a $(DESTDIR)$(LIBDIR)
|
||||
-$(CHMOD) 0644 $(DESTDIR)$(LIBDIR)/libcryptopp.a
|
||||
endif
|
||||
|
|
@ -575,13 +584,13 @@ ifneq ($(wildcard cryptest.exe),)
|
|||
-$(CHMOD) 0644 $(DESTDIR)$(DATADIR)/cryptopp/TestVectors/*.txt
|
||||
endif
|
||||
ifneq ($(wildcard libcryptopp.dylib),)
|
||||
$(MKDIR) -p $(DESTDIR)$(LIBDIR)
|
||||
@-$(MKDIR) -p $(DESTDIR)$(LIBDIR)
|
||||
$(CP) libcryptopp.dylib $(DESTDIR)$(LIBDIR)
|
||||
-install_name_tool -id $(DESTDIR)$(LIBDIR)/libcryptopp.dylib $(DESTDIR)$(LIBDIR)/libcryptopp.dylib
|
||||
-$(CHMOD) 0755 $(DESTDIR)$(LIBDIR)/libcryptopp.dylib
|
||||
endif
|
||||
ifneq ($(wildcard libcryptopp.so$(SOLIB_VERSION_SUFFIX)),)
|
||||
$(MKDIR) -p $(DESTDIR)$(LIBDIR)
|
||||
@-$(MKDIR) -p $(DESTDIR)$(LIBDIR)
|
||||
$(CP) libcryptopp.so$(SOLIB_VERSION_SUFFIX) $(DESTDIR)$(LIBDIR)
|
||||
@-$(CHMOD) 0755 $(DESTDIR)$(LIBDIR)/libcryptopp.so$(SOLIB_VERSION_SUFFIX)
|
||||
ifeq ($(HAS_SOLIB_VERSION),1)
|
||||
|
|
|
|||
5
config.h
5
config.h
|
|
@ -668,9 +668,8 @@ NAMESPACE_END
|
|||
# define THREADS_AVAILABLE
|
||||
#endif
|
||||
|
||||
// Newlib on Cygwin is a problem. __NEWLIB__ is not defined yet; use __CYGWIN__ as a proxy
|
||||
// Also see https://github.com/weidai11/cryptopp/issues/315
|
||||
#if defined(CRYPTOPP_UNIX_AVAILABLE) && !defined(__CYGWIN__)
|
||||
// Cygwin/Newlib requires _XOPEN_SOURCE=700
|
||||
#if defined(CRYPTOPP_UNIX_AVAILABLE)
|
||||
# define UNIX_SIGNALS_AVAILABLE 1
|
||||
#endif
|
||||
|
||||
|
|
|
|||
6
ossig.h
6
ossig.h
|
|
@ -82,13 +82,9 @@ struct SignalHandler
|
|||
// Don't step on another's handler if Overwrite=false
|
||||
if (m_old.sa_handler != 0 && !O) break;
|
||||
|
||||
#if defined __CYGWIN__
|
||||
// http://github.com/weidai11/cryptopp/issues/315
|
||||
memset(&new_handler, 0x00, sizeof(new_handler));
|
||||
#else
|
||||
// Cygwin/Newlib requires -D_XOPEN_SOURCE=700
|
||||
ret = sigemptyset (&new_handler.sa_mask);
|
||||
if (ret != 0) break; // Failed
|
||||
#endif
|
||||
|
||||
new_handler.sa_handler = (pfn ? pfn : &NullSignalHandler);
|
||||
new_handler.sa_flags = (pfn ? flags : 0);
|
||||
|
|
|
|||
Loading…
Reference in New Issue