Set `BUILD_FLAGS` flag in CMake. This resolves MESOS-5455, and consolidates the `BUILD` variables into one location.
Review: https://reviews.apache.org/r/63341 Project: http://git-wip-us.apache.org/repos/asf/mesos/repo Commit: http://git-wip-us.apache.org/repos/asf/mesos/commit/57d58621 Tree: http://git-wip-us.apache.org/repos/asf/mesos/tree/57d58621 Diff: http://git-wip-us.apache.org/repos/asf/mesos/diff/57d58621 Branch: refs/heads/master Commit: 57d5862164ebc2c69aa9deba9283d723d49656bf Parents: a994331 Author: Andrew Schwartzmeyer <and...@schwartzmeyer.com> Authored: Thu Oct 26 12:26:11 2017 -0700 Committer: Andrew Schwartzmeyer <and...@schwartzmeyer.com> Committed: Tue Dec 5 17:32:18 2017 -0800 ---------------------------------------------------------------------- cmake/CompilationConfigure.cmake | 18 ++++++++++++++++-- src/CMakeLists.txt | 15 +++------------ src/common/build.cpp | 5 +++++ src/common/build_config.hpp.in | 5 +++++ 4 files changed, 29 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/mesos/blob/57d58621/cmake/CompilationConfigure.cmake ---------------------------------------------------------------------- diff --git a/cmake/CompilationConfigure.cmake b/cmake/CompilationConfigure.cmake index deb5742..854e3c9 100644 --- a/cmake/CompilationConfigure.cmake +++ b/cmake/CompilationConfigure.cmake @@ -363,11 +363,25 @@ endif () string(TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M:%S UTC" UTC) string(TIMESTAMP BUILD_TIME "%s" UTC) if (WIN32) - set(BUILD_USER "$ENV{USERNAME}") + set(BUILD_USER $ENV{USERNAME}) else () - set(BUILD_USER "$ENV{USER}") + set(BUILD_USER $ENV{USER}) endif () +# NOTE: This is not quite the same as the Autotools build, as most definitions, +# include directories, etc. are embedded as target properties within the CMake +# graph. However, this is simply a "helper" variable anyway, so providing the +# "global" compile definitions (at least, those of this directory), is close +# enough to the intent. +# +# This code sets the variable `BUILD_FLAGS_RAW` to the content of the +# directory's `COMPILE_DEFINITIONS` property. The backslashes are then escaped +# and the final string is saved into the `BUILD_FLAGS` variable. +get_directory_property(BUILD_FLAGS_RAW COMPILE_DEFINITIONS) +string(REPLACE "\"" "\\\"" BUILD_FLAGS "${BUILD_FLAGS_RAW}") + +set(BUILD_JAVA_JVM_LIBRARY ${JAVA_JVM_LIBRARY}) + # When building from source, from a git clone, emit some extra build info. if (IS_DIRECTORY "${CMAKE_SOURCE_DIR}/.git") execute_process( http://git-wip-us.apache.org/repos/asf/mesos/blob/57d58621/src/CMakeLists.txt ---------------------------------------------------------------------- diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 8da64e8..35a602d 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -470,8 +470,8 @@ if (WIN32) endif () -# THE MESOS LIBRARY (generates, e.g., libmesos.so on Linux). -############################################################ +# THE MESOS LIBRARY +################### add_library(mesos ${MESOS_SRC}) set_target_properties( @@ -479,16 +479,7 @@ set_target_properties( VERSION ${MESOS_PACKAGE_VERSION} SOVERSION ${MESOS_PACKAGE_SOVERSION}) -# NOTE: The quotes in these definitions are necessary. Without them, the -# preprocessor will interpret the symbols as (e.g.) int literals and unquoted -# identifiers, rather than the string values our code expects. -target_compile_definitions( - mesos PUBLIC - USE_CMAKE_BUILD_CONFIG - BUILD_JAVA_JVM_LIBRARY="${JAVA_JVM_LIBRARY}" - - # TODO(andschwa): (MESOS-5455) `BUILD_FLAGS` is currently a placeholder value. - BUILD_FLAGS="") +target_compile_definitions(mesos PUBLIC USE_CMAKE_BUILD_CONFIG) target_include_directories( mesos PUBLIC http://git-wip-us.apache.org/repos/asf/mesos/blob/57d58621/src/common/build.cpp ---------------------------------------------------------------------- diff --git a/src/common/build.cpp b/src/common/build.cpp index 4192b89..f5271d8 100644 --- a/src/common/build.cpp +++ b/src/common/build.cpp @@ -48,7 +48,12 @@ const string USER = ""; #endif const string FLAGS = BUILD_FLAGS; + +#ifdef BUILD_JAVA_JVM_LIBRARY const string JAVA_JVM_LIBRARY = BUILD_JAVA_JVM_LIBRARY; +#else +const string JAVA_JVM_LIBRARY = ""; +#endif #ifdef BUILD_GIT_SHA const Option<string> GIT_SHA = string(BUILD_GIT_SHA); http://git-wip-us.apache.org/repos/asf/mesos/blob/57d58621/src/common/build_config.hpp.in ---------------------------------------------------------------------- diff --git a/src/common/build_config.hpp.in b/src/common/build_config.hpp.in index ac7059a..4cce240 100644 --- a/src/common/build_config.hpp.in +++ b/src/common/build_config.hpp.in @@ -17,9 +17,14 @@ #ifndef __COMMON_BUILD_CONFIG_HPP__ #define __COMMON_BUILD_CONFIG_HPP__ +// NOTE: The quotes in these definitions are necessary. Without them, the +// preprocessor will interpret the symbols as (e.g.) int literals and unquoted +// identifiers, rather than the string values our code expects. #cmakedefine BUILD_DATE "@BUILD_DATE@" #cmakedefine BUILD_TIME "@BUILD_TIME@" #cmakedefine BUILD_USER "@BUILD_USER@" +#cmakedefine BUILD_FLAGS "@BUILD_FLAGS@" +#cmakedefine BUILD_JAVA_JVM_LIBRARY "@BUILD_JAVA_JVM_LIBRARY@" #cmakedefine BUILD_GIT_SHA "@BUILD_GIT_SHA@" #cmakedefine BUILD_GIT_BRANCH "@BUILD_GIT_BRANCH@"