summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnel Husakovic <anel@mariadb.org>2020-05-28 12:23:09 +0200
committerAnel Husakovic <anel@mariadb.org>2020-11-02 19:53:04 +0100
commitf80b11a701cb395e9201f384bc9198d3703669b7 (patch)
treec3dce50040f7ba5f67e0629e69a13d252fcad74d
parente55bb16b04c6d10f1544feda6800706df6438226 (diff)
downloadmariadb-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.cmake51
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)