Commit Graph

205 Commits

Author SHA1 Message Date
Xiaoxi Chen
22ca3aa717 common/MemoryModel: Bump int to long and drop mallinfo
mallinfo(3) doesnt have 64bit compatible version so when
malloc size > 4GB, either wrapped value or a negtive value
returned, which is really misleading.

Also bump up all int to long to prevent overflow oneday we
have > 2TB memory.

Signed-off-by: Xiaoxi Chen <xiaoxchen@ebay.com>
2017-02-22 08:36:20 -07:00
Willem Jan Withagen
ce3b71acd2 CMakeLists.txt: suppress unneeded warningiabout jemalloc
Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
2017-02-12 15:03:56 +01:00
Jenkins Build Slave User
b7d9d6eb54 12.0.0 2017-02-08 13:57:33 +00:00
Yehuda Sadeh
5c5147efdf Merge pull request #12492 from yehudasa/wip-func-oid-tracing
osd, messenger, librados: lttng oid tracing

Reviewed-by: Yehuda Sadeh <yehuda@redhat.com>
2017-01-18 15:19:21 -08:00
Anjaneya Chagam
b3b20449da common: extend lttng tracing infrastructure
New function and oid lttng tracing enhancements that provide function
and oid level latency breakdown. Requires WITH_EVENTTRACE=ON option to enable.

Signed-off-by: Anjaneya Chagam <anjaneya.chagam@intel.com>
2017-01-16 13:58:57 -08:00
Bassam Tabbara
615b4b2600 cmake: support for external rocksdb
add support for building with an external rocksdb.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2017-01-16 09:33:32 -08:00
Jason Dillaman
7c55be9080 Merge pull request #12798 from wjwithagen/wip-wjw-krbd-optional
rbd: enable rbd on FreeBSD (without KRBD)

Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: Jason Dillaman <dillaman@redhat.com>
2017-01-16 11:22:15 -05:00
Kefu Chai
2ea4b94fe1 Merge pull request #12345 from rook/wip-embedded-add-rgw-mds
cmake: add RGW and MDS to libcephd

Reviewed-by: Casey Bodley <cbodley@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
2017-01-16 09:54:12 +08:00
Kefu Chai
4845541933 Merge pull request #12615 from linuxbox2/wip-sanitizers
build/cmake:  provide asan, tsan, ubsan builds

Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: Daniel Gryniewicz <dang@redhat.com>
2017-01-14 00:26:12 +08:00
Willem Jan Withagen
78c04b1c08 CMakeLists.txt: Introduce WITH_KBRD for kernel RBD
Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
2017-01-12 16:12:41 +01:00
Bassam Tabbara
853d5221e9 rgw: make fcgi optional during build
fcgi can now be compiled out of the binary. this reduces the system
dependencies when fcgi is not needed or used.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2017-01-11 14:06:08 -08:00
Kefu Chai
8f7643792c cmake: turn libcommon into a shared library
prior to this change, libcommon is a convenient library which gets
linked into librados, librbd and libcephfs and all ceph executables.
this incurs some problems:
 - double dose of libcommon in memory space and HDD: waste of memory
   and disk space.
 - if an application links to two libraries including libcommon at the
   same time. take librados and libcephfs as an example, they could
   interfere with each other by changing the other guy's status.
after this change, libcommon is tuned into a shared library and
renamed to libceph-common. it will be installed into $prefix/lib/ceph,
and packaged in librados2.

ceph.spec.in,debian/librados2.install: package libceph-common in
  librados2.
CMakeLists.txt:
  - do not link against libboost-* if not necessary.
  - s/common/ceph-common/g
  - install libceph-common into $prefix/lib/ceph
  - set rpath to $prefix/lib/ceph
  - link against ceph-common if an executable needs access to non public
    symbols in ceph.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2017-01-10 21:10:53 +08:00
Matt Benjamin
437a187c77 Merge pull request #11776 from ceph/wip-rgw-openssl-7
Wip rgw openssl 7
2017-01-06 12:08:38 -05:00
Haomai Wang
836c5686b5 Merge pull request #12776 from optimistyzy/201714
cmake: remove Findpciaccess.cmake

Reviewed-by: Kefu Chai <kefu@redhat.com>
Reviewed-by: Pan Liu <pan.liu@istuary.com>
2017-01-06 11:20:27 +08:00
Kefu Chai
d58dcba22f Merge pull request #12763 from wjwithagen/wip-wjw-freebsd-boostpython
CMakeLists.txt: boost_python.so requires libpython.*.so on FreeBSD

Reviewed-by: Kefu Chai <kchai@redhat.com>
2017-01-05 22:21:59 +08:00
Willem Jan Withagen
4db092cee0 CMakeLists.txt/FreeBSD: Boost_python needs explicit linking with libpython*.so
- Otherwise losts of unresolved errors will result.

Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
2017-01-04 21:50:22 +01:00
optimistyzy
52494f15a3 cmake,modules: remove Findpciaccess.cmake
Now SPDK uses the DPDK's library for PCI device
enumeration, we can remove this dependency

Signed-off-by: optimistyzy <optimistyzy@gmail.com>
2017-01-04 12:32:30 +08:00
Ali Maredia
209c0a6cbe Merge pull request #12385 from dlan17/master
cmake: explictly call find_package(PythonInterp) first to fix build err

Reviewed-by: Ali Maredia <amaredia@redhat.com>
2017-01-03 21:55:27 +05:30
Matt Benjamin
83b74f5250 build/cmake: provide asan, tsan, ubsan builds
The options are taken from rocksdb, but updated to match the
instructions here:

https://gist.github.com/kwk/4171e37f4bcdf7705329

Added option to explicitly enable leak checking via
-fsanitize-leak, after review.  The behavior I've observed from
-fsanitize-address and libasan linkage included leak checking,
but perhaps this is not general or changing behavior.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-12-30 12:39:42 -05:00
Sage Weil
7bbb79adcb Merge pull request #12469 from bassam/pr-jemalloc-mallinfo
cmake: disable mallinfo for jemalloc

Reviewed-by: Sage Weil <sage@redhat.com>
2016-12-23 23:10:44 -06:00
Marcus Watts
7caa0bd002 rgw: civetweb/openssl: Load libssl.so and libcrypto.so by soname.
If building with radosgw, always look for openssl library (even when
building with nss).  Then, use objdump to fetch SONAME from the copies
of libssl and libcrypto that were found.  When building civetweb; pass
the library soname values in as the libraries to load with "dlopen".

This is a problem that went away for a bit, but came back with some
changes for
http://tracker.ceph.com/issues/16535

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1341775
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1258961

Fixes: http://tracker.ceph.com/issues/11239

Signed-off-by: Marcus Watts <mwatts@redhat.com>
2016-12-20 00:36:44 -05:00
Bassam Tabbara
5d02fda170 cmake: disable mallinfo for jemalloc
jemalloc does not implement mallinfo. Only check for existence
of mallinfo when the allocator is not jemalloc.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2016-12-13 09:58:45 -05:00
Jenkins Build Slave User
91421d8d04 11.1.0 2016-12-12 18:27:56 +00:00
Yixun Lan
4adb3c13b9
explictly call find_package(PythonInterp) first to fix build err
this is an un-modified message from dev-util/cmake-3.7.1
/usr/share/cmake/Modules/FindPythonLibs.cmake

call ``find_package(PythonInterp)`` first to
 get the currently active Python version by default with a consistent
version  of PYTHON_LIBRARIES.

Signed-off-by: Yixun Lan <dlan@gentoo.org>

---
the detail error message we've met here

Found PythonInterp: python (found suitable version "2.7.12", minimum required is "2")
CMake Error at /usr/share/cmake/Modules/FindPythonLibs.cmake:54 (get_filename_component):
  get_filename_component called with incorrect number of arguments
Call Stack (most recent call first):
  src/CMakeLists.txt:209 (find_package)
2016-12-08 15:25:14 +08:00
Kefu Chai
b805505d25 cmake: find keyutils if rbd or libcephfs is enabled
* find_package(keyutils REQUIRED) if (WITH_LIBCEPHFS OR WITH_RBD)
  prior to this change, we detect keyutils if the building platform is not
  FreeBSD, we should instead check the WITH_* options, and let the
  maintainer to decided what is the best for his/her platform, and error
  out if the building host cannot fulfill the requirement to build the
  asserts.
* build krbd.cc if (WITH_RBD)

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-12-07 16:09:08 +08:00
Bassam Tabbara
c6067f48ec embedded: Add a skeleton libcephd library
libcephd is a library that contains ceph daemon code
that can be statically linked in other applications.

Added MergeStaticLibraries.cmake that can merge static libraries
to form a bigger one. This approach avoids the need to mess with
STATIC libraries all over the code base.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2016-11-28 23:48:02 -08:00
Bassam Tabbara
3eef10b977 cmake: fix boost build on ubuntu yakkety
If the host system has boost version 1.61 or higher (as in the case
for ubuntu 16.10 yakkety) the ceph build is currently broken. it
will pickup the system boost libraries but use the headers from the
submodule.

This commit ensure that when WITH_SYSTEM_BOOST is OFF we always
use the boost libraries and headers built from the submodule.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2016-11-22 11:53:34 -08:00
Matt Benjamin
1f9b698eca Merge pull request #12073 from rzarzynski/wip-rgw-compile-asio-by-default
rgw: compilation of the ASIO front-end is enabled by default.
2016-11-21 11:24:32 -05:00
Radoslaw Zarzynski
8bd2407e71 rgw: compilation of the ASIO front-end is enabled by default.
We're changing the default value because the previous one was
a makeshift solution to not fail Ceph compilation due to
the Beast's dependency on Boost >= 1.54 that wasn't available
on CentoOS 7. As we got the in-tree Boost we can compile
the ASIO front-end by default.

Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
2016-11-18 19:23:46 +01:00
Adam C. Emerson
c0681246ef boost: Make inclde paths SYSTEM includes
We are not debugging Boost and do not need to see its warnings.

Signed-off-by: Adam C. Emerson <aemerson@redhat.com>
2016-11-16 19:54:31 -05:00
Kefu Chai
18d27b19d3 Merge pull request #11800 from bassamtabbara/wip-make-leveldb-optional
mon: support for building without leveldb + mon mkfs bug fix

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-11-13 14:39:11 +08:00
Matt Benjamin
d9e5ad5e92 cmake: replace civetweb symlink w/file copy
Intended to remove an apparent race.  The two effects are
1. replace top-level command callouts w/file builtins
2. do them in the src/rgw sub-cmake

This is cleaner, and ideally avoids the race.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-11-10 14:44:27 -05:00
Bassam Tabbara
bbde2e037b cmake: build without leveldb
now that monitors support rocksdb, fix the build system
to enable compiling without leveldb. kv_backend would need
to be set correctly if you were to to use rocksdb for the
monitors.

Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2016-11-09 10:29:48 -08:00
Haomai Wang
eae7d5a645 msg/async: add dpdk stack plugin
Signed-off-by: Haomai Wang <haomai@xsky.com>
2016-11-09 11:39:20 +08:00
Matt Benjamin
132469c4e9 Adapt for ceph-manager
The ceph manager change added a separate Boost dependency
check, add it to the combined section.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-11-07 15:57:02 -05:00
Matt Benjamin
5f869450ea cmake: find and build bundled boost
Build Boost using the src/boost submodule, unless overridden
by -DWITH_SYSTEM_BOOST.

If -DBOOST_J=<n> is provided, builds Boost with <n> jobs.

Boost builds in the configured Build directory.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-11-07 15:56:29 -05:00
Yehuda Sadeh
45722ecbe4 Merge pull request #11343 from ceph/wip-civetweb-1.8
Update version of civetweb to 1.8
2016-11-05 12:53:23 -07:00
Yuri Weinstein
ef087a488d Merge pull request #11531 from yuyuyu101/wip-rdma
msg/async: ibverbs/rdma support

Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Mellanox <adirl@mellanox.com>
Reviewed-by: Matt Benjamin <mbenjami@redhat.com>
Reviewed-by: Mark Nelson <mnelson@redhat.com>
2016-11-04 07:43:38 -07:00
Marcus Watts
3252c10a15 Updated version of civetweb.
Fixes here:
Pull civetweb from new branch/commit.
Build civetweb.c w/ USE_IPV6 (w/o depending on extra ceph-only build
	logic inside of civetweb.)
Make several things "const" to please the compiler.
Remap port string at '+' -> ,; to avoid , overload.
Use new civetweb options validate_http_method=no canonicalize_url_path=no

Signed-off-by: Marcus Watts <mwatts@redhat.com>
2016-11-03 13:11:54 -07:00
Haomai Wang
cf23acef71 msg/async/rdma: add build ops
Signed-off-by: Haomai Wang <haomai@xsky.com>
2016-11-01 15:34:04 +08:00
Radoslaw Zarzynski
46a44646e8 rgw: make the ASIO front-end compilation optional.
This is because of versioning issues between Boost and Beast
on CentOS 7. It is intended that this patch will be reverted
after merging the in-tree Boost facility.

Signed-off-by: Radoslaw Zarzynski <rzarzynski@mirantis.com>
2016-10-21 22:57:23 +02:00
Sage Weil
d30ee64fc7 Merge pull request #11500 from liewegas/wip-lttng
CMakeLists.txt: enable LTTNG by default

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-10-18 21:38:40 -05:00
Kefu Chai
7661da65bf Merge pull request #11481 from ddiss/cmake_rgw_deps
cmake: check WITH_RADOSGW for fcgi and expat dependencies

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-10-18 20:40:59 +08:00
Sage Weil
9a8bcf8fbf Merge remote-tracking branch 'gh/kraken' 2016-10-17 13:35:45 -04:00
Jenkins Build Slave User
697fe64f9f 11.0.2 2016-10-17 11:16:50 +00:00
Sage Weil
09a2383673 CMakeLists.txt: enable LTTNG by default
This makes dev builds more closely match package builds.

Signed-off-by: Sage Weil <sage@redhat.com>
2016-10-14 13:54:38 -04:00
David Disseldorp
d5b41b7647 cmake: check WITH_RADOSGW for fcgi and expat dependencies
The fcgi and expat libraries are only used by rgw, so only make them
hard requirements if WITH_RADOSGW is set.

Signed-off-by: David Disseldorp <ddiss@suse.de>
2016-10-13 18:48:21 +02:00
Bassam Tabbara
ca9946d2b5 cmake: find gperftools package for tcmalloc_minimal too
Signed-off-by: Bassam Tabbara <bassam.tabbara@quantum.com>
2016-10-11 10:12:52 -07:00
Jenkins Build Slave User
676cd2976f 11.0.1 2016-10-11 16:27:57 +00:00
John Spray
b3189d6824 cmake: update for ceph-mgr
Signed-off-by: John Spray <john.spray@redhat.com>
2016-09-29 17:26:56 +01:00
Casey Bodley
1a76324981 fio: generalize for other ObjectStores
* renamed target to fio_ceph_objectstore
* moved into src/test/fio subdirectory
* added to cmake build
* added support for DDIR_READ
* added required fio option 'conf' to load a ceph configuration file
* added multiple collections per job to simulate parallelism from pgs
* creates objects of the appropriate size on setup
* added support for multiple jobs that share an ObjectStore instance

Signed-off-by: Casey Bodley <cbodley@redhat.com>
2016-09-13 11:02:17 -04:00
Ricardo Dias
a8f8598a73
cmake: Use WITH_TESTS flag to guard the build of ceph-test scripts/binaries
Signed-off-by: Ricardo Dias <rdias@suse.com>
2016-09-09 14:12:44 +01:00
Kefu Chai
2ed44f993f cmake: replace Findlttng-ust.cmake with FindLTTngUST.cmake
find_package(lttng-ust REQUIRED) fails to find the lttng library without
this change. because find_path(LTTNG_LIBRARY_DIR ...) does not search
in the default library paths. and the second mode of
FIND_PACKAGE_HANDLE_STANDARD_ARGS() does not stop the cmake with a fatal
message, even some of the required vars are missing. so use the
implemetantion from cmake upstream.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-08-30 15:51:51 +08:00
Josh Durgin
aaac836380 Merge pull request #10208 from BlaXpirit/cmake-py3
Include Python 3 bindings into the cmake build and make packages for them

Reviewed-by: Nathan Cutler <ncutler@suse.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
Reviewed-by: Josh Durgin <jdurgin@redhat.com>
2016-08-12 16:30:35 -07:00
Oleh Prypin
5683a8259b cmake: Also build Python bindings for Python 3
Signed-off-by: Oleh Prypin <oleh@pryp.in>
2016-08-11 16:36:57 +03:00
Kefu Chai
96fdb6914a cmake: cleanup Findleveldb.cmake
* and reference leveldb library and include dir with fullpath

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-08-11 14:53:02 +08:00
Kefu Chai
6c12edbf9d cmake: cleanup Findgperftools.cmake
* remove Findtcmalloc.cmake, use Findgperftools.cmake instead.
* tcmalloc is packaged in gperftools-dev, so we can check them in a single
  place.
* fix the check of heap-profiler.h, we should enable the check as long
  as tcmalloc is enabled or profiler is enabled.
* only check gperftools headers in "include/gperftools", and do not
  "include/google" anymore. as we only support the distros which
  shipping recent gperftools-dev package with "include/gperftools".
  and "google/*.h" are deprecated.
* set ALLOC_LIBS with GPERFTOOLS_TCMALLOC_LIBRARY, so we can link
  against tcmalloc with full path.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-08-11 14:06:39 +08:00
Kefu Chai
8bac1c1eeb cmake: do not reference undefined variables
* AIO_LIBS is now named AIO_LIBARIES, and there is not point to print
  out its path
* USE_NSS is not defined if NSS is not checked, so if(USE_NSS) is better
  here.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-29 23:12:33 +08:00
Kefu Chai
221c47d349 cmake: set policies
this makes sure we are compatible with latest and future cmake

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-29 23:12:33 +08:00
Kefu Chai
8268d1ba6a cmake: do not link against profiler if gperftools is found
this behaviour matches the autotools. and we should not enable profiling
unless asked to do so.

Fixes: http://tracker.ceph.com/issues/16804
Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-25 16:22:20 +08:00
Kefu Chai
f8553f3ab9 cmake: do not include undefind paths
for example
```
include_directories(${LEVELDB_PREFIX}/include)
```
does not make sense if `LEVELDB_PREFIX` is not defined.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-25 15:40:30 +08:00
Kefu Chai
e21d98aed4 cmake: cleanup FindOpenLdap.cmake
* use find_package_handle_standard_args() and remove unused bits.
* rename OPENLDAP_LIBS to OPENLDAP_LIBRARIES, to be consistent with
  find_package() modules.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-25 15:39:01 +08:00
Kefu Chai
3170f16e86 cmake: do not check libuuid anymore
libuuid dependency is not found in ceph.spec.in or debian/control.
and we are not using libuuid since 62bfc7a.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-25 15:39:01 +08:00
Kefu Chai
af1598a3b3 Merge pull request #10352 from wjwithagen/wip-wjw-freebsd-cmake-2
cmake: work to get inital FreeBSD stuff

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-07-24 18:18:45 +08:00
Willem Jan Withagen
a38a7fa198 CMakeLists.txt: Add FreeBSD isms
Signed-off-by: Willem Jan Withagen <wjw@digiware.nl>
2016-07-20 15:57:41 +02:00
Kefu Chai
ec84d7169b cmake: CMAKE_MODULE_PATH is a list and empty by default
we should not reference it using ${CMAKE_MODULE_PATH} before assigning
to it.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-20 15:10:48 +08:00
Kefu Chai
636522b669 cmake: use FindBacktrace instead of Findexecinfo
always better to use upstream cmake modules.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-20 14:47:52 +08:00
Kefu Chai
ce5724effb cmake: add a "tests" target to build tests
please note "make test" is used by cmake to run tests, so we cannot just
repurpose it to *build* them.

* AddCephTest.cmake: depends on "tests"
* CMakeLists.txt: let "check" depend on "tests"
* src/CMakeLists.txt: update the run-tox tests
* run-make-check.sh: use "make tests" and "ctest" instead of "make check"
* ceph-detect-init/CMakeLists.txt: let "tests" depend on
    "ceph-detect-init"
* ceph-disk/CMakeLists.txt: let "tests" depend on "ceph-disk"

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-16 10:57:12 +08:00
Kefu Chai
2e7c72d8e8 cmake: do not check for availability of static_cast<> anymore
it's implied by C++11 compliance.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-13 17:23:11 +08:00
Kefu Chai
1a86184260 cmake: use CHECK_STRUCT_HAS_MEMBER for checking member variables in struct
we were using CHECK_CXX_SOURCE_COMPILES() for this purpose, which was a
little bit clumsy.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-13 17:13:20 +08:00
Kefu Chai
5e58249362 cmake: fix the detection of curl_multi_wait()
it was broken by b5bb77d5

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-11 21:29:11 +08:00
Kefu Chai
654d86fe2b Merge pull request #9763 from dx9/wip-pthread-np
compat: add abstractions for non portable pthread name funcs

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-07-11 11:46:47 +08:00
Kefu Chai
07387eb9af Merge pull request #10186 from ceph/wip-cmake-no-with-mds
cmake: remove WITH_MDS option

Reviewed-by: Sage Weil <sage@redhat.com>
Reviewed-by: Ken Dreyer <kdreyer@redhat.com>
Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-07-08 11:37:04 +08:00
Ali Maredia
cfcf0706f2 cmake: remove option
Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-07-07 14:31:32 -04:00
Kefu Chai
b5bb77d566 cmake: use the stock FindCURL.cmake
Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-07 23:26:02 +08:00
Kefu Chai
3646fa5c6b cmake: use the stock FindEXPAT.cmake
Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-07-07 23:26:02 +08:00
John Coyle
3ba630636d compat: add abstractions for non portable pthread name funcs
Supports GNU, FreeBSD, OSX, and Alpine.

Signed-off-by: John Coyle <dx9err@gmail.com>
2016-07-04 11:19:51 -04:00
Kefu Chai
5850687875 cmake: use selinux/devel/Makefile for building selinux policy
was using selinux/devel/include/Makefile, which was wrong.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-30 19:27:44 +08:00
Kefu Chai
41061ce769 cmake: install systemd files
add an option "WITH_SYSTEMD", off by default

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-30 19:27:43 +08:00
Matt Benjamin
83e66809e9 cmake: rework NSS and SSL
The cmake build should select NSS or CryptoPP consistently with
current autoconf logic, as used in our RHEL builds (-DWITH_NSS),
and the SSL linkage must match (for NSS, -lssl3).

With this change, there is no direct linkage with libssl when NSS
is selected (I still see indirect linkage via libcurl, in turn
via libssh2, looking into that).

With guidance from upstream and downstream, NSS builds are now
selected by default.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-06-29 12:36:46 -04:00
Kefu Chai
6b12a395eb cmake: use CMAKE_POSITION_INDEPENDENT_CODE property instead of -fPIC
use the global setting of CMAKE_POSITION_INDEPENDENT_CODE instead of
hardwiring the CMAKE_C_FLAGS with -fPIC. this helps to reduce the
overhead of symbol resolution when user is using static libraries.
see
https://cmake.org/cmake/help/v2.8.11/cmake.html#variable:CMAKE_POSITION_INDEPENDENT_CODE

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-29 22:26:25 +08:00
Sage Weil
74ec4f94b1 CMakeLists: nss only, ignore cryptopp
Signed-off-by: Sage Weil <sage@redhat.com>
2016-06-29 22:26:24 +08:00
Matt Benjamin
1467637437 cmake: fix mis-matched arguments to if warning
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-06-10 15:09:45 -04:00
Kefu Chai
48a1f8eff5 cmake: always set ALLOCATOR at configure time
so it would be easier to figure out what allocator we are using later,
instead of poking around ${Foo}_FOUND variables.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-08 12:06:31 +08:00
Kefu Chai
9e768393bf cmake: s/BUILD_SHARED_LIBS/ENABLE_SHARED/
Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-06 12:42:02 +08:00
Kefu Chai
cf9a42c7cc cmake: use ENABLE_SHARED instead of BUILD_SHARED_LIBS
we decided to drop the static libraries from the *-dev debian packages.
so no more tricky changes for supporting creating both libraries.

* partially revert 1dbfb26: s/BUILD_SHARED_LIBS/ENABLE_SHARED/
 - add_library() command use BUILD_SHARED_LIBS as the default library
   type, and all intermediate libraries should static ones. it would
   cause unnecessary confusion if some developer uses add_library() without
   specifying the library type, and ends up with a .so. so we use our
   own setting variables for specifying the type of user facing libraries.
* revert ac47440
 - the BUILD_SHARED_LIBS setting is also populated to the gmock libraries,
   which should be compiled as static ones. otherwise the unit tests will
   crash on exit.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-04 12:57:19 +08:00
Kefu Chai
c1a37101ea cmake: project name should be "ceph"
so it would be easier to figure out paths, also
CMAKE_INSTALL_DOCDIR is composed using the PROJECT_NAME also.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-06-01 23:49:46 +08:00
Kefu Chai
1dbfb264ff cmake: s/ENABLE_SHARED/BUILD_SHARED_LIBS/
* BUILD_SHARED_LIB is a cmake variable respected by add_library().
  so we can simply expose it as an option instead of reinventing our own.
* and mark internal libraries as STATIC explicitly
* and add keyutil to librbd as secret.cc is using it. and secret.cc is
  linked into librbd.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-05-28 00:34:52 +08:00
Kefu Chai
a2706c7e16 cmake: revamp on lttng support
* Findlttng-ust.cmake: detect lttng-gen-tp, and make it a required var
* Findlttng-ust.cmake: fix the detection of lttng
* src/tracing/CMakeLists.txt:
  - do not put the generated header files into ${CMAKE_SOURCE_DIR}/src/tracing,
    instead we should put the generated files into ${PROJECT_BINARY_DIR}/include.
  - do not compile the tracing library using the .c files in the repo,
    instead, we should generate them at compile time using lttng-gen-tp,
    and compile the genererated .c files.
* CMakeLists.txt: make the lttng-use package REQUIRED if WITH_LTTNG=ON
* src/CMakeLists.txt: let librados depend on librados-tp if LTTNG is
  enabled: librados includes tracing/librados.h. the same applies to
  librbd, libos and libosd. cmake could deduce the dependencies if we
  add the lttng header files under include/tracing into the
  corresponding target, as the lttng header files are already listed
  as OUTPUT and GENERATED files, but this requires us to put all the
  involved targets in the same CMakeLists.txt. in this case, three
  CMakeLists.txts are impacted. so we create a new target for each
  lttng header, and let the impacted target depend on it.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-05-27 19:54:42 +08:00
Kefu Chai
943d71ce92 Merge pull request #9156 from ceph/wip-cmake
cmake: Added #defines to config-h.in.cmake

Reviewed-by: Kefu Chai <kchai@redhat.com>
2016-05-27 11:37:52 +08:00
Ali Maredia
3a7111c310 cmake: remove verbose output from
Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-05-26 17:26:50 -04:00
Ali Maredia
0ef09f32d4 cmake: Added #defines to config-h.in.cmake
Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-05-26 17:26:48 -04:00
Kefu Chai
af902ec962 cmake: enable selinux support
Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-05-16 23:09:06 +08:00
Kefu Chai
ef6b52373c cmake: build man pages
Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-05-12 13:01:52 +08:00
Matt Benjamin
4df918ae8c cmake: <UPPERCASED_NAME>_FOUND in Findxio.cmake
For uniformity, upcase all these variables.

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-05-03 17:36:59 -04:00
Ali Maredia
e0f400fdef cmake: test-ceph-helpers working
Moved all the libraries in CMAKE_BINARY_DIR/lib
and all the binaries in CMAKE_BINARY_DIR/bin. Set
various environment variables for test-ceph-helpers.
Put those variables throughout
qa/workunits/ceph-helpers.sh.

NOTE: This is a very rough draft of these fixes.

Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-04-14 20:48:19 -04:00
Kefu Chai
30ce32a67d cmake: pass RULE_LAUNCHER_* to cython
* pass the environment variables using `env` to pass environment
  varibles with space(s) in them to the COMMAND in add_custom_target.
  otherwise, cmake will try to quote the space with "\". this breaks the
  generated command line.
* add a comment for ccache to note that we do not expect ccache to speed
  up linking. we use it as the linker's launcher to workaround
  https://bugs.python.org/issue8027. to be specific,
  distutils.UnixCCompiler.link overwrites the first linker CLI's arg
  using the the first C++ compiler's CLI arg, if "env" is not used to
  launch the linker. this breaks the cythonization of our pybind APIs.

Signed-off-by: Kefu Chai <kchai@redhat.com>
2016-04-11 00:46:31 +08:00
Ali Maredia
f02f1d17a6 cmake: Cython modules building with cmake
Signed-off-by: Ali Maredia <amaredia@redhat.com>
2016-03-29 12:23:31 +01:00
Marcus Watts
5bf340ebae Update SSL support a bit.
Use cmake's FindOpenSSL.  Actually use the library definitions that
come out of it.  Also use the include path.  If SSL is disabled,
then build without any of this.  The result will be a version
of civetweb that includes openssl support using dlopen() - ie,
what we used to do.  This is probably a bit silly, and I hope
nobody actually expects to use it that way, but it's mostly harmless.

Signed-off-by: Marcus Watts <mwatts@redhat.com>
2016-03-25 06:18:56 -04:00
Matt Benjamin
8e87ce74e7 cmake: add FindOpenSSL.cmake
Use find_package to enforce the dependency up front (we should be
using this pattern throughout top-level CMakeLists.txt).

Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
2016-03-25 06:18:56 -04:00