mirror of
https://github.com/ceph/ceph
synced 2025-01-01 16:42:29 +00:00
dffd867285
Gentoo's normal build process uses a sandbox to catch writes outside the build environment; this includes providing a value other than /tmp for TMPDIR. Use TMPDIR by default for CEPH_BUILD_VIRTUALENV. Signed-off-by: Robin H. Johnson <robin.johnson@dreamhost.com>
307 lines
6.6 KiB
Plaintext
307 lines
6.6 KiB
Plaintext
AUTOMAKE_OPTIONS = gnu subdir-objects
|
|
|
|
SUBDIRS =
|
|
DIST_SUBDIRS =
|
|
BUILT_SOURCES =
|
|
EXTRA_DIST =
|
|
CLEANFILES =
|
|
dist_noinst_DATA =
|
|
|
|
noinst_HEADERS =
|
|
bin_PROGRAMS =
|
|
noinst_PROGRAMS =
|
|
bin_SCRIPTS =
|
|
sbin_PROGRAMS =
|
|
sbin_SCRIPTS =
|
|
su_sbin_PROGRAMS =
|
|
su_sbin_SCRIPTS =
|
|
dist_bin_SCRIPTS =
|
|
lib_LTLIBRARIES =
|
|
noinst_LTLIBRARIES =
|
|
noinst_LIBRARIES =
|
|
radoslib_LTLIBRARIES =
|
|
|
|
# like bin_PROGRAMS, but these targets are only built for debug builds
|
|
bin_DEBUGPROGRAMS =
|
|
|
|
# like sbin_SCRIPTS but can be used to install to e.g. /usr/sbin
|
|
ceph_sbindir = $(sbindir)
|
|
|
|
# certain things go straight into /sbin, though!
|
|
su_sbindir = /sbin
|
|
|
|
# C/C++ tests to build and executed will be appended to this
|
|
check_TESTPROGRAMS =
|
|
check_PROGRAMS = $(check_TESTPROGRAMS)
|
|
|
|
# tests scripts will be appended to this
|
|
check_SCRIPTS =
|
|
|
|
# display the output of failed check_SCRIPTS after a failed make check
|
|
export VERBOSE = true
|
|
|
|
# python unit tests need to know where the scripts are located
|
|
export PYTHONPATH=$(top_srcdir)/src/pybind
|
|
|
|
# when doing a debug build, make sure to make the targets
|
|
if WITH_DEBUG
|
|
bin_PROGRAMS += $(bin_DEBUGPROGRAMS)
|
|
endif
|
|
|
|
|
|
##################################
|
|
## automake environment
|
|
|
|
HARDENING_CFLAGS = \
|
|
-O2 \
|
|
-g \
|
|
-pipe \
|
|
-Wall \
|
|
-Wp,-U_FORTIFY_SOURCE \
|
|
-Wp,-D_FORTIFY_SOURCE=2 \
|
|
-fexceptions \
|
|
--param=ssp-buffer-size=4 \
|
|
-fPIE
|
|
|
|
SET_STACK_PROTECTOR_STRONG = $(shell expr `$(CC) -dumpversion` \>= 4.9)
|
|
|
|
ifeq ($(SET_STACK_PROTECTOR_STRONG),1)
|
|
HARDENING_CFLAGS += -fstack-protector-strong
|
|
else
|
|
HARDENING_CFLAGS += -fstack-protector
|
|
endif
|
|
|
|
|
|
HARDENING_LDFLAGS = \
|
|
-pie \
|
|
-Wl,-z,relro \
|
|
-Wl,-z,now
|
|
|
|
|
|
AM_COMMON_CPPFLAGS = \
|
|
-D__CEPH__ \
|
|
-D_FILE_OFFSET_BITS=64 \
|
|
-D_THREAD_SAFE \
|
|
-D__STDC_FORMAT_MACROS \
|
|
-D_GNU_SOURCE \
|
|
-DCEPH_LIBDIR=\"${libdir}\" \
|
|
-DCEPH_PKGLIBDIR=\"${pkglibdir}\" \
|
|
-DGTEST_USE_OWN_TR1_TUPLE=0
|
|
|
|
if LINUX
|
|
AM_COMMON_CPPFLAGS += \
|
|
-D_REENTRANT
|
|
endif
|
|
|
|
if FREEBSD
|
|
AM_COMMON_CPPFLAGS += \
|
|
-D_REENTRANT
|
|
endif
|
|
|
|
if DARWIN
|
|
AM_COMMON_CPPFLAGS += \
|
|
-D_REENTRANT
|
|
endif
|
|
|
|
if SOLARIS
|
|
AM_COMMON_CPPFLAGS += \
|
|
-D_PTHREADS \
|
|
-D_POSIX_C_SOURCE
|
|
endif
|
|
|
|
AM_COMMON_CFLAGS = \
|
|
-Wall \
|
|
${WARN_TYPE_LIMITS} \
|
|
${WARN_IGNORED_QUALIFIERS} \
|
|
-Winit-self \
|
|
-Wpointer-arith \
|
|
${WARN_ERROR_FORMAT_SECURITY} \
|
|
-fno-strict-aliasing \
|
|
-fsigned-char
|
|
if !CLANG
|
|
AM_COMMON_CFLAGS += ${RDYNAMIC_FLAG}
|
|
endif
|
|
if SOLARIS
|
|
AM_COMMON_CFLAGS += -Wno-unused-local-typedefs
|
|
endif
|
|
|
|
AM_CFLAGS = $(AM_COMMON_CFLAGS)
|
|
if LINUX
|
|
AM_CFLAGS += $(HARDENING_CFLAGS)
|
|
endif
|
|
AM_CPPFLAGS = $(AM_COMMON_CPPFLAGS)
|
|
AM_CXXFLAGS = \
|
|
@AM_CXXFLAGS@ \
|
|
$(AM_COMMON_CFLAGS) \
|
|
-ftemplate-depth-1024 \
|
|
-Wnon-virtual-dtor \
|
|
-Wno-invalid-offsetof
|
|
if LINUX
|
|
AM_CXXFLAGS += $(HARDENING_CFLAGS)
|
|
endif
|
|
if !CLANG
|
|
AM_CXXFLAGS += -Wstrict-null-sentinel
|
|
endif
|
|
|
|
|
|
# note: this is position dependant, it affects the -l options that
|
|
# come after it on the command line. when you use ${AM_LDFLAGS} in
|
|
# later rules, take care where you place it. for more information, see
|
|
# http://blog.flameeyes.eu/2008/11/19/relationship-between-as-needed-and-no-undefined-part-1-what-do-they-do
|
|
# http://blog.flameeyes.eu/2008/11/20/misguided-link-and-as-needed
|
|
# http://www.gentoo.org/proj/en/qa/asneeded.xml
|
|
# http://gcc.gnu.org/ml/gcc-help/2010-12/msg00338.html
|
|
# http://sigquit.wordpress.com/2011/02/16/why-asneeded-doesnt-work-as-expected-for-your-libraries-on-your-autotools-project/
|
|
AM_LDFLAGS =
|
|
if LINUX
|
|
AM_LDFLAGS += -Wl,--as-needed $(HARDENING_LDFLAGS)
|
|
endif
|
|
if AIX
|
|
AM_LDFLAGS += -Wl,-brtl
|
|
endif
|
|
|
|
if USE_BOOST_SPIRIT_OLD_HDR
|
|
AM_CXXFLAGS += -DUSE_BOOST_SPIRIT_OLD_HDR
|
|
endif
|
|
|
|
if WITH_LIBATOMIC
|
|
AM_LDFLAGS += -latomic_ops
|
|
endif
|
|
|
|
if ENABLE_COVERAGE
|
|
AM_CFLAGS += -fprofile-arcs -ftest-coverage
|
|
AM_CXXFLAGS += -fprofile-arcs -ftest-coverage -O0
|
|
endif
|
|
|
|
CCAS = ${srcdir}/yasm-wrapper
|
|
AM_CCASFLAGS = -f elf64
|
|
|
|
|
|
#####################
|
|
## library definitions and dependencies
|
|
|
|
EXTRALIBS = -lm
|
|
if FREEBSD
|
|
EXTRALIBS += -lexecinfo
|
|
endif # FREEBSD
|
|
|
|
if LINUX
|
|
EXTRALIBS += -lrt
|
|
endif # LINUX
|
|
|
|
if WITH_PROFILER
|
|
EXTRALIBS += -lprofiler
|
|
endif # PROFILER
|
|
|
|
LIBGLOBAL = libglobal.la
|
|
LIBCOMMON = libcommon.la
|
|
LIBSECRET = libsecret.la
|
|
LIBARCH = libarch.la
|
|
LIBPERFGLUE = libperfglue.la
|
|
LIBAUTH = libauth.la
|
|
LIBMSG = libmsg.la
|
|
LIBCRUSH = libcrush.la
|
|
LIBCOMPRESSOR = libcompressor.la
|
|
LIBJSON_SPIRIT = libjson_spirit.la
|
|
LIBKV = libkv.a
|
|
LIBLOG = liblog.la
|
|
LIBOS = libos.a
|
|
LIBOS_TYPES = libos_types.a
|
|
LIBOSD = libosd.a
|
|
LIBOSD_TYPES = libosd_types.la
|
|
LIBOSDC = libosdc.la
|
|
LIBMON = libmon.a
|
|
LIBMON_TYPES = libmon_types.la
|
|
LIBMDS = libmds.la
|
|
LIBCLIENT = libclient.la
|
|
LIBCLIENT_FUSE = libclient_fuse.la
|
|
LIBRADOS = librados.la
|
|
LIBRADOSSTRIPER = libradosstriper.la
|
|
LIBRGW = librgw.la
|
|
LIBCIVETWEB = libcivetweb.la
|
|
LIBRBD = librbd.la
|
|
LIBRBD_TYPES = librbd_types.la
|
|
LIBKRBD = libkrbd.la
|
|
LIBCEPHFS = libcephfs.la
|
|
LIBERASURE_CODE = liberasure_code.la
|
|
|
|
if WITH_LIBAIO
|
|
LIBOS += -laio
|
|
endif # WITH_LIBAIO
|
|
|
|
if WITH_LIBZFS
|
|
LIBOS += libos_zfs.a -lzfs
|
|
endif # WITH_LIBZFS
|
|
|
|
if WITH_SPDK
|
|
LIBOS += ${LIBSPDK_LIBS} ${LIBDPDK_LIBS} ${LIBPCIACCESS_LIBS}
|
|
endif # WITH_SPDK
|
|
|
|
if WITH_TCMALLOC_MINIMAL
|
|
LIBPERFGLUE += -ltcmalloc_minimal
|
|
endif # WITH_TCMALLOC_MINIMAL
|
|
|
|
if WITH_TCMALLOC
|
|
LIBPERFGLUE += -ltcmalloc
|
|
endif # WITH_TCMALLOC
|
|
|
|
if WITH_JEMALLOC
|
|
LIBMON += -ljemalloc
|
|
LIBOSD += -ljemalloc
|
|
LIBMDS += -ljemalloc
|
|
LIBRGW += -ljemalloc
|
|
endif # WITH_JEMALLOC
|
|
|
|
if ENABLE_COVERAGE
|
|
EXTRALIBS += -lgcov
|
|
endif # ENABLE_COVERAGE
|
|
|
|
LIBCOMMON += -luuid
|
|
|
|
# Libosd always needs osdc and os
|
|
LIBOSD += $(LIBOSDC) $(LIBOS)
|
|
|
|
# These have references to syms like ceph_using_tcmalloc(), glue libperfglue to them
|
|
LIBMON += $(LIBPERFGLUE)
|
|
LIBOSD += $(LIBPERFGLUE)
|
|
LIBMDS += $(LIBPERFGLUE)
|
|
|
|
# OSD needs types
|
|
LIBOSD += $(LIBOSD_TYPES) $(LIBOS_TYPES)
|
|
|
|
# libkv/libos linking order is ornery
|
|
if WITH_SLIBROCKSDB
|
|
LIBKV += rocksdb/librocksdb.a
|
|
if HAVE_BZLIB
|
|
LIBKV += -lbz2
|
|
endif
|
|
if HAVE_LZ4
|
|
LIBKV += -llz4
|
|
endif
|
|
endif # WITH_SLIBROCKSDB
|
|
LIBKV += -lz -lleveldb -lsnappy
|
|
LIBOS += $(LIBOS_TYPES) $(LIBKV) $(LIBFUSE_LIBS)
|
|
|
|
LIBMON += $(LIBMON_TYPES)
|
|
|
|
# Use this for binaries requiring libglobal
|
|
CEPH_GLOBAL = $(LIBGLOBAL) $(LIBCOMMON) $(PTHREAD_LIBS) -lm $(CRYPTO_LIBS) $(EXTRALIBS)
|
|
|
|
# This is set by [lib]/Makefile.am and used for build tests
|
|
LIBCOMMON_DEPS =
|
|
LIBRADOS_DEPS =
|
|
LIBRGW_DEPS =
|
|
LIBCIVETWEB_DEPS =
|
|
|
|
# This is used by the dencoder test
|
|
DENCODER_SOURCES =
|
|
DENCODER_DEPS =
|
|
|
|
# put virtualenvs in this directory
|
|
# otherwise it may overflow #! 80 kernel limit
|
|
# beware that some build environments might not be able to write to /tmp
|
|
export TMPDIR ?= /tmp
|
|
export CEPH_BUILD_VIRTUALENV = $(TMPDIR)
|
|
|
|
radoslibdir = $(libdir)/rados-classes
|