]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
cmake: include ${fmt_INCLUDE_DIR} instead 31761/head
authorKefu Chai <kchai@redhat.com>
Wed, 20 Nov 2019 14:00:12 +0000 (22:00 +0800)
committerKefu Chai <kchai@redhat.com>
Wed, 20 Nov 2019 16:35:52 +0000 (00:35 +0800)
commit86a722b9114d09b4036118a2b09650468bd2cdd4
tree1757f19ef210095ebd85381d47fa0b8c7f4c1851
parentb2b3b76dbd1ade30b29599bd683bf2ce42cf5467
cmake: include ${fmt_INCLUDE_DIR} instead

we should not hardwire the include path to the fmt submodule,
there is chance that we are using libfmt installed in system.

in my case, crimson fails to link because the the ABI of libfmt
is not compatible with that of libfmt included as a submodule

: && ccache /usr/bin/g++-9 .... \
 -o bin/crimson-osd  -Wl,-rpath,::::::::::::::::::: lib/libcrimson-common.a lib/libcrimson-os.a lib/libcrimson.a \
  .... \
  /usr/lib/x86_64-linux-gnu/libfmt.a \
  ...

/usr/bin/ld: src/crimson/osd/CMakeFiles/crimson-osd.dir/main.cc.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> >
>::write_double<double>(double, fmt::v5::basic_format_specs<char
> const&)':
/var/ssd/ceph/build/../src/fmt/include/fmt/format.h:2822: undefined reference to `bool fmt::v5::internal::grisu2_format<double, 0>(double, fmt::v5::internal::basic_buffer<char>&, int, bool, int&)'
/usr/bin/ld: src/crimson/osd/CMakeFiles/crimson-osd.dir/main.cc.o: in function `void fmt::v5::basic_writer<fmt::v5::back_insert_range<fmt::v5::internal::basic_buffer<char> > >::write_double<long
double>(long double, fmt::v5::basic_format_
specs<char> const&)':
/var/ssd/ceph/build/../src/fmt/include/fmt/format.h:2822: undefined reference to `bool fmt::v5::internal::grisu2_format<double, 0>(double, fmt::v5::internal::basic_buffer<char>&, int, bool, int&)'
/usr/bin/ld: src/crimson/osd/CMakeFiles/crimson-osd.dir/osd.cc.o: in function `void fmt::v5::basic_writer<fmt::v5::output_range<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char>
>::write_double<double>(double, fmt::
v5::basic_format_specs<char> const&)':
/var/ssd/ceph/build/../src/fmt/include/fmt/format.h:2822: undefined reference to `bool fmt::v5::internal::grisu2_format<double, 0>(double, fmt::v5::internal::basic_buffer<char>&, int, bool, int&)'
/usr/bin/ld: src/crimson/osd/CMakeFiles/crimson-osd.dir/osd.cc.o: in function `void fmt::v5::basic_writer<fmt::v5::output_range<std::back_insert_iterator<fmt::v5::internal::basic_buffer<char> >, char>
>::write_double<long double>(long dou
ble, fmt::v5::basic_format_specs<char> const&)':
/var/ssd/ceph/build/../src/fmt/include/fmt/format.h:2822: undefined reference to `bool fmt::v5::internal::grisu2_format<double, 0>(double, fmt::v5::internal::basic_buffer<char>&, int, bool, int&)'
collect2: error: ld returned 1 exit status

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/CMakeLists.txt