i2pd/Makefile.linux

80 lines
2.6 KiB
Makefile
Raw Normal View History

# set defaults instead redefine
CXXFLAGS ?= ${CXX_DEBUG} -Wall -Wextra -Wno-unused-parameter -pedantic -Wno-misleading-indentation
LDFLAGS ?= ${LD_DEBUG}
2014-09-23 01:44:09 +00:00
2014-12-17 20:46:19 +00:00
## 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.
2014-12-17 20:46:19 +00:00
2015-05-07 03:40:19 +00:00
# detect proper flag for c++11 support by compilers
2014-12-12 08:05:27 +00:00
CXXVER := $(shell $(CXX) -dumpversion)
2015-05-07 03:40:19 +00:00
ifeq ($(shell expr match $(CXX) 'clang'),5)
2018-01-06 03:48:51 +00:00
NEEDED_CXXFLAGS += -std=c++11
2015-05-07 03:40:19 +00:00
else ifeq ($(shell expr match ${CXXVER} "4\.[0-9][0-9]"),4) # gcc >= 4.10
2014-12-17 20:46:19 +00:00
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
2014-12-17 20:46:19 +00:00
NEEDED_CXXFLAGS += -std=c++0x
else ifeq ($(shell expr match ${CXXVER} "[5-7]\.[0-9]"),3) # gcc >= 5.0
2014-12-17 20:46:19 +00:00
NEEDED_CXXFLAGS += -std=c++11
2018-09-06 15:19:10 +00:00
LDLIBS = -latomic
2018-06-23 10:56:05 +00:00
else ifeq ($(shell expr match ${CXXVER} "[7-8]"),1) # gcc 7 ubuntu or gcc 8 arch
2017-11-04 11:52:41 +00:00
NEEDED_CXXFLAGS += -std=c++11
2018-09-06 15:19:10 +00:00
LDLIBS = -latomic
else # not supported
$(error Compiler too old)
2014-09-23 01:44:09 +00:00
endif
2015-01-13 12:14:52 +00:00
NEEDED_CXXFLAGS += -fPIC
2014-12-12 08:22:03 +00:00
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
2017-04-22 01:17:01 +00:00
LIBDIR := /usr/lib
2018-09-06 15:19:10 +00:00
LDLIBS += $(LIBDIR)/libboost_system.a
2017-04-22 01:17:01 +00:00
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
2018-09-06 15:19:10 +00:00
LDLIBS += -lcrypto -lssl -lz -lboost_system -lboost_date_time -lboost_filesystem -lboost_program_options -lpthread
endif
2016-12-01 17:17:28 +00:00
# UPNP Support (miniupnpc 1.5 and higher)
ifeq ($(USE_UPNP),yes)
2017-04-22 01:17:01 +00:00
CXXFLAGS += -DUSE_UPNP
2016-12-01 17:17:28 +00:00
ifeq ($(USE_STATIC),yes)
2017-04-22 01:17:01 +00:00
LDLIBS += $(LIBDIR)/libminiupnpc.a
2016-12-01 17:17:28 +00:00
else
2017-04-22 01:17:01 +00:00
LDLIBS += -lminiupnpc
2016-12-01 17:17:28 +00:00
endif
endif
2014-10-31 17:45:58 +00:00
ifeq ($(USE_AESNI),yes)
#check if AES-NI is supported by CPU
2016-10-26 00:00:00 +00:00
ifneq ($(shell $(GREP) -c aes /proc/cpuinfo),0)
machine := $(shell uname -m)
ifeq ($(machine), aarch64)
CXXFLAGS += -DARM64AES
else
2018-06-28 23:30:03 +00:00
CPU_FLAGS += -maes
endif
endif
2014-10-29 21:11:58 +00:00
endif
2016-12-08 17:59:19 +00:00
2016-12-18 13:20:53 +00:00
ifeq ($(USE_AVX),yes)
2016-12-08 17:59:19 +00:00
#check if AVX supported by CPU
ifneq ($(shell $(GREP) -c avx /proc/cpuinfo),0)
CPU_FLAGS += -mavx
endif
2016-12-18 13:20:53 +00:00
endif