i2pd/Makefile.linux

89 lines
3.6 KiB
Makefile
Raw Normal View History

# set defaults instead redefine
CXXFLAGS ?= ${CXX_DEBUG} -Wall -Wextra -Wno-unused-parameter -pedantic -Wno-psabi
LDFLAGS ?= ${LD_DEBUG}
2014-09-23 05:44:09 +04:00
2014-12-17 23:46:19 +03: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 23:46:19 +03:00
2015-05-07 06:40:19 +03:00
# detect proper flag for c++11 support by compilers
2014-12-12 11:05:27 +03:00
CXXVER := $(shell $(CXX) -dumpversion)
2015-05-07 06:40:19 +03:00
ifeq ($(shell expr match $(CXX) 'clang'),5)
2018-01-06 06:48:51 +03:00
NEEDED_CXXFLAGS += -std=c++11
2015-05-07 06:40:19 +03:00
else ifeq ($(shell expr match ${CXXVER} "4\.[0-9][0-9]"),4) # gcc >= 4.10
2014-12-17 23:46:19 +03:00
NEEDED_CXXFLAGS += -std=c++11
2020-09-27 02:32:19 +03:00
else ifeq ($(shell expr match ${CXXVER} "4\.[8-9]"),3) # gcc 4.8 - 4.9
NEEDED_CXXFLAGS += -std=c++11 -D_GLIBCXX_USE_NANOSLEEP=1
2024-08-31 00:54:56 +03:00
else ifeq ($(shell expr match ${CXXVER} "[5-7]"),1) # gcc 5 - 7
2017-11-04 14:52:41 +03:00
NEEDED_CXXFLAGS += -std=c++11
2018-09-06 18:19:10 +03:00
LDLIBS = -latomic
2024-08-31 00:54:56 +03:00
else ifeq ($(shell expr match ${CXXVER} "[8-9]"),1) # gcc 8 - 9
2020-02-28 22:03:08 +03:00
NEEDED_CXXFLAGS += -std=c++17
2024-08-31 00:54:56 +03:00
LDLIBS = -latomic -lstdc++fs
else ifeq ($(shell expr match ${CXXVER} "1[0-2]"),2) # gcc 10 - 12
2023-01-07 02:20:26 +03:00
NEEDED_CXXFLAGS += -std=c++17
2023-01-06 22:08:39 +03:00
LDLIBS = -latomic
2024-08-28 19:01:19 +03:00
else ifeq ($(shell expr match ${CXXVER} "1[3-9]"),2) # gcc 13+
2024-08-28 18:34:07 +03:00
NEEDED_CXXFLAGS += -std=c++20
LDLIBS = -latomic
else # not supported
$(error Compiler too old)
2014-09-23 05:44:09 +04:00
endif
2015-01-13 15:14:52 +03:00
NEEDED_CXXFLAGS += -fPIC
2014-12-12 11:22:03 +03: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
LIBDIR := /usr/lib/$(SYS)
2018-09-06 18:19:10 +03:00
LDLIBS += $(LIBDIR)/libboost_system.a
2017-04-22 04:17:01 +03:00
LDLIBS += $(LIBDIR)/libboost_filesystem.a
LDLIBS += $(LIBDIR)/libboost_program_options.a
LDLIBS += $(LIBDIR)/libssl.a
LDLIBS += $(LIBDIR)/libcrypto.a
LDLIBS += $(LIBDIR)/libz.a
ifeq ($(USE_UPNP),yes)
LDLIBS += $(LIBDIR)/libminiupnpc.a
endif
LDLIBS += -lpthread -ldl
else
LDLIBS += -lcrypto -lssl -lz -lboost_system -lboost_filesystem -lboost_program_options -lpthread
ifeq ($(USE_UPNP),yes)
LDLIBS += -lminiupnpc
endif
endif
2016-12-01 20:17:28 +03:00
# UPNP Support (miniupnpc 1.5 and higher)
ifeq ($(USE_UPNP),yes)
DEFINES += -DUSE_UPNP
endif
2014-10-31 20:45:58 +03:00
ifeq ($(USE_AESNI),yes)
2020-12-01 03:55:41 +03:00
ifneq (, $(findstring i386, $(SYS))$(findstring i686, $(SYS))$(findstring x86_64, $(SYS))) # only x86-based CPU supports that
NEEDED_CXXFLAGS += -maes
DEFINES += -D__AES__
2016-12-08 20:59:19 +03:00
endif
2016-12-18 16:20:53 +03:00
endif
install: all
install -d ${PREFIX}/bin
install -m 755 ${I2PD} ${PREFIX}/bin
install -d ${PREFIX}/etc ${PREFIX}/etc/i2pd ${PREFIX}/etc/i2pd/tunnels.conf.d
install -m 644 contrib/i2pd.conf contrib/subscriptions.txt contrib/tunnels.conf ${PREFIX}/etc/i2pd
install -d ${PREFIX}/share ${PREFIX}/share/doc ${PREFIX}/share/doc/i2pd
install -m 644 ChangeLog LICENSE README.md contrib/i2pd.conf contrib/subscriptions.txt contrib/tunnels.conf ${PREFIX}/share/doc/i2pd
install -d ${PREFIX}/share/i2pd
@cp -R contrib/certificates ${PREFIX}/share/i2pd/
install -d ${PREFIX}/share/man ${PREFIX}/share/man/man1
@gzip -kf debian/i2pd.1 && install debian/i2pd.1.gz ${PREFIX}/share/man/man1
install -d ${PREFIX}/var ${PREFIX}/var/lib ${PREFIX}/var/lib/i2pd
@ln -sf ${PREFIX}/share/i2pd/certificates ${PREFIX}/var/lib/i2pd/certificates
@ln -sf ${PREFIX}/etc/i2pd/tunnels.conf.d ${PREFIX}/var/lib/i2pd/tunnels.d
@ln -sf ${PREFIX}/etc/i2pd/i2pd.conf ${PREFIX}/var/lib/i2pd/i2pd.conf
@ln -sf ${PREFIX}/etc/i2pd/subscriptions.txt ${PREFIX}/var/lib/i2pd/subscriptions.txt
@ln -sf ${PREFIX}/etc/i2pd/tunnels.conf ${PREFIX}/var/lib/i2pd/tunnels.conf