diff options
author | Anel Husakovic <anel@mariadb.org> | 2020-05-28 12:23:09 +0200 |
---|---|---|
committer | Anel Husakovic <anel@mariadb.org> | 2020-11-02 19:53:04 +0100 |
commit | f80b11a701cb395e9201f384bc9198d3703669b7 (patch) | |
tree | c3dce50040f7ba5f67e0629e69a13d252fcad74d | |
parent | e55bb16b04c6d10f1544feda6800706df6438226 (diff) | |
download | mariadb-git-bb-10.1-anel-MDEV14899.tar.gz |
MDEV-14899: CMake: Missing BYPRODUCT or OUTPUT - Multiconfiguration buildbb-10.1-anel-MDEV14899
- Patch is applying `CMAKE_CFG_INTDIR` variable used for
multiconfiguraiton during the build. It is related to Ninja only, make
shouldn't be affected since configuration variable is evaluated to `.`
only.
- Culprit for this MDEV is `TOKUDB` plugin.
- Patch is using proper configuration option in case of `Ninja` and out-of-source:
1. command
`cmake ../../10.1/ -DCMAKE_BUILD_TYPE=Debug -DCMAKE_{C_COMPILER=gcc,CXX_COMPILER=g++}-9 -G Ninja`
or
2. command
`cmake ../10.1 -DPLUGIN_TOKUDB=DYNAMIC -G Ninja`
on the clean workspace will generate output:
```
storage/tokudb/PerconaFT/Debug/snappy/lib/libsnappy.a
storage/tokudb/PerconaFT/Debug/xz/lib/liblzma.a
```
In case without multiconfiguration above will be evaluted to of `.`:
```
storage/tokudb/PerconaFT/./snappy/lib/libsnappy.a
storage/tokudb/PerconaFT/./xz/lib/liblzma.a
```
So here is changed `PREFIX` of libdir to proper option (at has to be
some in case predefined (Debug, Release) in Ninja case.
- Result of the patch:
There is no warning any more during compilation:
```
REST support is ON
CMake Deprecation Warning at cmake/for_clients.cmake:15 (CMAKE_POLICY):
The OLD behavior for policy CMP0007 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
Call Stack (most recent call first):
CMakeLists.txt:447 (INCLUDE)
-- Configuring done
-- Generating done
-- Build files have been written to: /home/anel/mariadb/builds/10.1
</pre>
```
And during the build phase libraries are created as well:
```
----------------------------------------------------------------------
Libraries have been installed in:
/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the `-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the `LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the `LD_RUN_PATH' environment variable
during linking
- use the `-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to `/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
test -z "/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/share/doc/xz" || /bin/mkdir -p "/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/share/doc/xz"
test -z "/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/lib/pkgconfig" || /bin/mkdir -p "/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/lib/pkgconfig"
/usr/bin/install -c -m 644 liblzma.pc '/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/lib/pkgconfig'
make[2]: Leaving directory '/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/src/build_lzma-build/src/liblzma'
make[1]: Leaving directory '/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/src/build_lzma-build/src/liblzma'
make: Leaving directory '/home/anel/mariadb/builds/test-before-push-10.1/storage/tokudb/PerconaFT/Debug/xz/src/build_lzma-build/src/liblzma'
[50/50] Linking CXX executable storage/tokudb/PerconaFT/tools/ftverify
```
-rw-r--r-- | storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake | 51 |
1 files changed, 28 insertions, 23 deletions
diff --git a/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake b/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake index b312111a3a2..0c87d1bc805 100644 --- a/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake +++ b/storage/tokudb/PerconaFT/cmake_modules/TokuThirdParty.cmake @@ -16,10 +16,13 @@ set(XZ_SOURCE_DIR "${TokuDB_SOURCE_DIR}/third_party/xz-4.999.9beta" CACHE FILEPA if (NOT EXISTS "${XZ_SOURCE_DIR}/configure") message(FATAL_ERROR "Can't find the xz sources. Please check them out to ${XZ_SOURCE_DIR} or modify XZ_SOURCE_DIR.") endif () +set(MY_CFG_INTDIR ${CMAKE_CFG_INTDIR}) if (CMAKE_GENERATOR STREQUAL Ninja) ## ninja doesn't understand "$(MAKE)" set(SUBMAKE_COMMAND make) + ## CMAKE_CFG_INTDIR is evaluated to '.', use ${CMAKE_BUILD_TYPE} for out of source + set(MY_CFG_INTDIR ${CMAKE_BUILD_TYPE}) else () ## use "$(MAKE)" for submakes so they can use the jobserver, doesn't ## seem to break Xcode... @@ -28,17 +31,18 @@ endif () FILE(GLOB XZ_ALL_FILES ${XZ_SOURCE_DIR}/*) ExternalProject_Add(build_lzma - PREFIX xz + PREFIX "${MY_CFG_INTDIR}/xz" DOWNLOAD_COMMAND cp -a "${XZ_ALL_FILES}" "<SOURCE_DIR>/" CONFIGURE_COMMAND "<SOURCE_DIR>/configure" ${xz_configure_opts} - "--prefix=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz" - "--libdir=${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/lib" + "--prefix=${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz" + "--libdir=${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/lib" BUILD_COMMAND ${SUBMAKE_COMMAND} -C src/liblzma INSTALL_COMMAND ${SUBMAKE_COMMAND} -C src/liblzma install + BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/lib/liblzma.a" ) FILE(GLOB_RECURSE XZ_ALL_FILES_RECURSIVE ${XZ_SOURCE_DIR}/*) ExternalProject_Add_Step(build_lzma reclone_src # Names of project and custom step @@ -48,28 +52,28 @@ ExternalProject_Add_Step(build_lzma reclone_src # Names of project and custom st ) set_source_files_properties( - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/base.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/bcj.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/block.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/check.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/container.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/delta.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/filter.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/index.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/index_hash.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/lzma.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/stream_flags.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/subblock.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/version.h" - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include/lzma/vli.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/base.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/bcj.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/block.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/check.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/container.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/delta.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/filter.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/index.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/index_hash.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/lzma.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/stream_flags.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/subblock.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/version.h" + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include/lzma/vli.h" PROPERTIES GENERATED TRUE) -include_directories("${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/include") +include_directories("${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/include") add_library(lzma STATIC IMPORTED) set_target_properties(lzma PROPERTIES IMPORTED_LOCATION - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/xz/lib/liblzma.a") + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/xz/lib/liblzma.a") add_dependencies(lzma build_lzma) @@ -81,7 +85,7 @@ endif () FILE(GLOB SNAPPY_ALL_FILES ${SNAPPY_SOURCE_DIR}/*) ExternalProject_Add(build_snappy - PREFIX snappy + PREFIX "${MY_CFG_INTDIR}/snappy" DOWNLOAD_COMMAND cp -a "${SNAPPY_ALL_FILES}" "<SOURCE_DIR>/" CMAKE_ARGS @@ -95,6 +99,7 @@ ExternalProject_Add(build_snappy -DCMAKE_C_FLAGS=${CMAKE_C_FLAGS} -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} ${USE_PROJECT_CMAKE_MODULE_PATH} + BUILD_BYPRODUCTS "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/snappy/lib/libsnappy.a" ) FILE(GLOB_RECURSE SNAPPY_ALL_FILES_RECURSIVE ${SNAPPY_SOURCE_DIR}/*) ExternalProject_Add_Step(build_snappy reclone_src # Names of project and custom step @@ -103,9 +108,9 @@ ExternalProject_Add_Step(build_snappy reclone_src # Names of project and custom DEPENDS ${SNAPPY_ALL_FILES_RECURSIVE} # Files on which this step depends ) -include_directories("${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/snappy/include") +include_directories("${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/snappy/include") add_library(snappy STATIC IMPORTED) set_target_properties(snappy PROPERTIES IMPORTED_LOCATION - "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}/snappy/lib/libsnappy.a") + "${CMAKE_CURRENT_BINARY_DIR}/${MY_CFG_INTDIR}/snappy/lib/libsnappy.a") add_dependencies(snappy build_snappy) |