Hello, Le Jeudi 18 Mai 2006 12:54, Simon Stelling a écrit : > I have no clue what cmake is or what you are trying to, so I just > comment on a few other things I catched:
Thanks for your comments, Cmake is a autotools/autoconf replacement (http://www.cmake.org), it is the new build system for kde. Some projects using cmake need to have a separate builddir (kde does, and some others). In this eclass, there is an helper function to use cmake options according to useflags (like use_enable), and the support for building out of the sources (in $WORKDIR/cmake-build) > [...] > > > cmake_compile() { > > cmake_install() { > > aren't these meant to be cmake-src_compile/cmake-src_install? Well, it is for cmake_install indead, but cmake_compile need that cmake_configure has been done before... so I consider cmake_configure and cmake_compile more like econf and emake commands. So I've added a separate cmake_src_compile. I've updated the eclass, according to your comments, and renamed cmake_install to cmake_src_install. I've also made the installation prefix customable with INSTALL_PREFIX envvar. Here is an ebuild example for using this cmake eclass: http://dev.inzenet.org/~panard/patches/gentoo-overlay/app-editors/yzis/yzis-0.1_pre20060518.ebuild Thanks, Panard -- HomePage: http://dev.inzenet.org/~panard/ Yzis : http://www.yzis.org Qomics : http://dev.inzenet.org/~panard/qomics Smileys : http://smileys.inzenet.org
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $
#
# Original Author: panard
# Purpose: cmake with a separate builddir
#
ECLASS="cmake"
DEPEND="dev-util/cmake"
RDEPEND=""
IUSE="debug"
BUILDDIR="${WORKDIR}/cmake-build"
# cmake option helper:
# cmake_use_option <USEFLAG> [<OPTION> [<value if use> [<value else>]]]
# eg:
# USE=qt debug
# cmake_use_option qt => -DWITH_qt=ON
# cmake_use_option gtk => -DWITH_gtk=OFF
# cmake_use_option qt ENABLE_QUI => -DENABLE_QUI=ON
# cmake_use_option gtk ENABLE_GUI => -DENABLE_GUI=OFF
# cmake_use_option gtk ENABLE_NOGUI OFF => -DENABLE_NOGUI=ON
# cmake_use_option doc GENDOC full =>
# cmake_use_option html DOCFORMAT html text => -DGENDOC=text
# cmake_use_option debug CMAKE_BUILD_TYPE debugfull =>
-DCMAKE_BUILD_TYPE=debugfull
#
cmake_use_option() {
local USEFLAG="$1"
local OPTION="$2"
shift 2
OPTION=${OPTION:-"WITH_${USEFLAG}"}
local E_VALUE="ON" # value if use
local D_VALUE="OFF" # value if not used
if [ ! -z "$1" ]; then
case $1 in
[oO][nN])
;;
[oO][fF][fF])
# reverse values
E_VALUE="OFF"
D_VALUE="ON"
;;
*)
# non-boolean option
E_VALUE="$1"
D_VALUE="$2"
;;
esac
fi
local opt="-D${OPTION}="
if useq ${USEFLAG}; then
opt="${opt}${E_VALUE}"
elif [ ! -z "${D_VALUE}" ]; then
opt="${opt}${D_VALUE}"
else
opt=""
fi
echo ${opt}
}
cmake_configure() {
debug-print-function
debug-print "${FUNCNAME}: BUILDDIR is '${BUILDDIR}'"
INSTALL_PREFIX="${INSTALL_PREFIX:-/usr}"
mkdir -p ${BUILDDIR}
cd ${BUILDDIR}
echo cmake ${S} -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
$(cmake_use_option debug CMAKE_BUILD_TYPE debugfull) $*
cmake ${S} -DCMAKE_INSTALL_PREFIX=${INSTALL_PREFIX} \
$(cmake_use_option debug CMAKE_BUILD_TYPE debugfull) $*
ret=$?
cd ${OLDPWD}
return $ret
}
cmake_compile() {
cd ${BUILDDIR} || die "no BUILDDIR configured"
emake $*
ret=$?
cd ${OLDPWD}
return $ret
}
cmake_src_compile() {
cmake_configure $* || die "Configuration failed"
cmake_compile || die "Compilation failed"
}
cmake_src_install() {
cd ${BUILDDIR}
emake DESTDIR="${D}" $* install || die "Installation failed"
ret=$?
rm -rf ${BUILDDIR}
cd ${OLDPWD}
return $ret
}
EXPORT_FUNCTIONS src_compile src_install
pgpA49AijCUAk.pgp
Description: PGP signature
