diff options
author | Michael Palimaka <kensington@gentoo.org> | 2012-09-20 10:32:40 +0000 |
---|---|---|
committer | Michael Palimaka <kensington@gentoo.org> | 2012-09-20 10:32:40 +0000 |
commit | 60b22c5fe31f307a482f39a8f8c974c487a99889 (patch) | |
tree | 759362cc5eb6c1977d9a04aa828294ce1fefa73f /eclass/cmake-utils.eclass | |
parent | Version bump (diff) | |
download | gentoo-2-60b22c5fe31f307a482f39a8f8c974c487a99889.tar.gz gentoo-2-60b22c5fe31f307a482f39a8f8c974c487a99889.tar.bz2 gentoo-2-60b22c5fe31f307a482f39a8f8c974c487a99889.zip |
Add support for the ninja build system wrt bug #430608. Improve prefix support wrt bug #434086.
Diffstat (limited to 'eclass/cmake-utils.eclass')
-rw-r--r-- | eclass/cmake-utils.eclass | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/eclass/cmake-utils.eclass b/eclass/cmake-utils.eclass index 13ff515f8954..3ddb3533603b 100644 --- a/eclass/cmake-utils.eclass +++ b/eclass/cmake-utils.eclass @@ -1,6 +1,6 @@ # Copyright 1999-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/eclass/cmake-utils.eclass,v 1.80 2012/09/15 16:16:53 zmedico Exp $ +# $Header: /var/cvsroot/gentoo-x86/eclass/cmake-utils.eclass,v 1.81 2012/09/20 10:32:40 kensington Exp $ # @ECLASS: cmake-utils.eclass # @MAINTAINER: @@ -42,6 +42,12 @@ CMAKE_REMOVE_MODULES_LIST="${CMAKE_REMOVE_MODULES_LIST:-FindBLAS FindLAPACK}" # Do we want to remove anything? yes or whatever else for no CMAKE_REMOVE_MODULES="${CMAKE_REMOVE_MODULES:-yes}" +# @ECLASS-VARIABLE: CMAKE_MAKEFILE_GENERATOR +# @DESCRIPTION: +# Specify a makefile generator to be used by cmake. At this point only "make" +# and "ninja" is supported. +CMAKE_MAKEFILE_GENERATOR="${CMAKE_MAKEFILE_GENERATOR:-make}" + CMAKEDEPEND="" case ${WANT_CMAKE} in always) @@ -164,6 +170,15 @@ _check_build_dir() { mkdir -p "${CMAKE_BUILD_DIR}" echo ">>> Working in BUILD_DIR: \"$CMAKE_BUILD_DIR\"" } + +# Determine which generator to use +_generator_to_use() { + if [[ ${CMAKE_MAKEFILE_GENERATOR} = "ninja" ]]; then + has_version dev-util/ninja && echo "Ninja" && return + fi + echo "Unix Makefiles" +} + # @FUNCTION: cmake-utils_use_with # @USAGE: <USE flag> [flag name] # @DESCRIPTION: @@ -351,7 +366,7 @@ enable_cmake-utils_src_configure() { local libdir=$(get_libdir) cat > "${common_config}" <<- _EOF_ SET (LIB_SUFFIX ${libdir/lib} CACHE STRING "library path suffix" FORCE) - SET (CMAKE_INSTALL_LIBDIR ${PREFIX}/${libdir} CACHE PATH "Output directory for libraries") + SET (CMAKE_INSTALL_LIBDIR ${libdir} CACHE PATH "Output directory for libraries") _EOF_ [[ "${NOCOLOR}" = true || "${NOCOLOR}" = yes ]] && echo 'SET (CMAKE_COLOR_MAKEFILE OFF CACHE BOOL "pretty colors during make" FORCE)' >> "${common_config}" @@ -370,6 +385,7 @@ enable_cmake-utils_src_configure() { local cmakeargs=( --no-warn-unused-cli -C "${common_config}" + -G "$(_generator_to_use)" -DCMAKE_INSTALL_PREFIX="${EPREFIX}${PREFIX}" "${mycmakeargs_local[@]}" -DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" @@ -401,12 +417,23 @@ cmake-utils_src_make() { _check_build_dir pushd "${CMAKE_BUILD_DIR}" > /dev/null - # first check if Makefile exist otherwise die - [[ -e Makefile ]] || die "Makefile not found. Error during configure stage." - if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then - emake VERBOSE=1 "$@" || die "Make failed!" + if [[ $(_generator_to_use) = Ninja ]]; then + # first check if Makefile exist otherwise die + [[ -e build.ninja ]] || die "Makefile not found. Error during configure stage." + if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then + #TODO get load average from portage (-l option) + ninja ${MAKEOPTS} -v "$@" + else + ninja "$@" + fi || die "ninja failed!" else - emake "$@" || die "Make failed!" + # first check if Makefile exist otherwise die + [[ -e Makefile ]] || die "Makefile not found. Error during configure stage." + if [[ "${CMAKE_VERBOSE}" != "OFF" ]]; then + emake VERBOSE=1 "$@" || die "Make failed!" + else + emake "$@" || die "Make failed!" + fi fi popd > /dev/null } @@ -416,7 +443,12 @@ enable_cmake-utils_src_install() { _check_build_dir pushd "${CMAKE_BUILD_DIR}" > /dev/null - base_src_install "$@" + if [[ $(_generator_to_use) = Ninja ]]; then + DESTDIR=${D} ninja install "$@" || die "died running ninja install" + base_src_install_docs + else + base_src_install "$@" + fi popd > /dev/null # Backward compatibility, for non-array variables |