1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- # set defaults instead redefine
- CXXFLAGS ?= ${CXX_DEBUG} -Wall -Wextra -Wno-unused-parameter -pedantic -Wno-misleading-indentation
- LDFLAGS ?= ${LD_DEBUG}
- ## NOTE: The NEEDED_CXXFLAGS are here so that custom CXXFLAGS can be specified at build time
- ## **without** overwriting the CXXFLAGS which we need in order to build.
- ## For example, when adding 'hardening flags' to the build
- ## (e.g. -fstack-protector-strong -Wformat -Werror=format-security), we do not want to remove
- ## -std=c++11. If you want to remove this variable please do so in a way that allows setting
- ## custom FDLAGS to work at build-time.
- # detect proper flag for c++11 support by compilers
- CXXVER := $(shell $(CXX) -dumpversion)
- ifeq ($(shell expr match $(CXX) 'clang'),5)
- NEEDED_CXXFLAGS += -std=c++11
- else ifeq ($(shell expr match ${CXXVER} "4\.[0-9][0-9]"),4) # gcc >= 4.10
- NEEDED_CXXFLAGS += -std=c++11
- else ifeq ($(shell expr match ${CXXVER} "4\.[7-9]"),3) # >= 4.7
- NEEDED_CXXFLAGS += -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1
- else ifeq ($(shell expr match ${CXXVER} "4\.6"),3) # = 4.6
- NEEDED_CXXFLAGS += -std=c++0x
- else ifeq ($(shell expr match ${CXXVER} "[5-9]"),1) # gcc >= 5
- NEEDED_CXXFLAGS += -std=c++11
- LDLIBS = -latomic
- else # not supported
- $(error Compiler too old)
- endif
- NEEDED_CXXFLAGS += -fPIC
- ifeq ($(USE_STATIC),yes)
- # NOTE: on glibc you will get this warning:
- # Using 'getaddrinfo' in statically linked applications requires at runtime
- # the shared libraries from the glibc version used for linking
- LIBDIR := /usr/lib
- LDLIBS += $(LIBDIR)/libboost_system.a
- LDLIBS += $(LIBDIR)/libboost_date_time.a
- LDLIBS += $(LIBDIR)/libboost_filesystem.a
- LDLIBS += $(LIBDIR)/libboost_program_options.a
- LDLIBS += $(LIBDIR)/libssl.a
- LDLIBS += $(LIBDIR)/libcrypto.a
- LDLIBS += $(LIBDIR)/libz.a
- LDLIBS += -lpthread -static-libstdc++ -static-libgcc -lrt -ldl
- USE_AESNI := no
- else
- LDLIBS += -lcrypto -lssl -lz -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread
- endif
- # UPNP Support (miniupnpc 1.5 and higher)
- ifeq ($(USE_UPNP),yes)
- CXXFLAGS += -DUSE_UPNP
- ifeq ($(USE_STATIC),yes)
- LDLIBS += $(LIBDIR)/libminiupnpc.a
- else
- LDLIBS += -lminiupnpc
- endif
- endif
- ifeq ($(USE_AESNI),yes)
- #check if AES-NI is supported by CPU
- ifneq ($(shell $(GREP) -c aes /proc/cpuinfo),0)
- machine := $(shell uname -m)
- ifeq ($(machine), aarch64)
- CXXFLAGS += -DARM64AES
- else
- CPU_FLAGS += -maes
- endif
- endif
- endif
- ifeq ($(USE_AVX),yes)
- #check if AVX supported by CPU
- ifneq ($(shell $(GREP) -c avx /proc/cpuinfo),0)
- CPU_FLAGS += -mavx
- endif
- endif
|