/[gentoo-x86]/eclass/cmake-utils.eclass
Gentoo

Diff of /eclass/cmake-utils.eclass

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.2 Revision 1.13
1# Copyright 1999-2007 Gentoo Foundation 1# Copyright 1999-2007 Gentoo Foundation
2# Distributed under the terms of the GNU General Public License v2 2# Distributed under the terms of the GNU General Public License v2
3# $Header: /var/cvsroot/gentoo-x86/eclass/cmake-utils.eclass,v 1.2 2007/11/11 20:02:11 philantrop Exp $ 3# $Header: /var/cvsroot/gentoo-x86/eclass/cmake-utils.eclass,v 1.13 2008/10/27 14:38:38 vapier Exp $
4 4
5# @ECLASS: cmake-utils.eclass 5# @ECLASS: cmake-utils.eclass
6# @MAINTAINER: 6# @MAINTAINER:
7# kde@gentoo.org 7# kde@gentoo.org
8# @BLURB: common ebuild functions for cmake-based packages 8# @BLURB: common ebuild functions for cmake-based packages
17 17
18inherit toolchain-funcs multilib 18inherit toolchain-funcs multilib
19 19
20DESCRIPTION="Based on the ${ECLASS} eclass" 20DESCRIPTION="Based on the ${ECLASS} eclass"
21 21
22DEPEND="dev-util/cmake" 22DEPEND=">=dev-util/cmake-2.4.6"
23 23
24case ${EAPI} in
25 2)
26 EXPORT_FUNCTIONS src_configure src_compile src_test src_install
27 ;;
28 *)
24EXPORT_FUNCTIONS src_compile src_test src_install 29 EXPORT_FUNCTIONS src_compile src_test src_install
30 ;;
31esac
32
25 33
26# Internal function use by cmake-utils_use_with and cmake-utils_use_enable 34# Internal function use by cmake-utils_use_with and cmake-utils_use_enable
27_use_me_now() { 35_use_me_now() {
28 debug-print-function $FUNCNAME $* 36 debug-print-function $FUNCNAME $*
29 [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]" 37 [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"
30 echo "-D$1_${3:-$2}=$(use $2 && echo ON || echo OFF)" 38 echo "-D$1_${3:-$2}=$(use $2 && echo ON || echo OFF)"
31} 39}
32 40
41# @VARIABLE: DOCS
42# @DESCRIPTION:
43# Documents to dodoc
44
33# @FUNCTION: cmake-utils_use_with 45# @FUNCTION: cmake-utils_use_with
34# @USAGE: <USE flag> [flag name] 46# @USAGE: <USE flag> [flag name]
35# @DESCRIPTION: 47# @DESCRIPTION:
36# Based on use_with. See ebuild.sh 48# Based on use_with. See ebuild(5).
49#
50# `cmake-utils_use_with foo FOO` echoes -DWITH_FOO=ON if foo is enabled
51# and -DWITH_FOO=OFF if it is disabled.
37cmake-utils_use_with() { _use_me_now WITH "$@" ; } 52cmake-utils_use_with() { _use_me_now WITH "$@" ; }
38 53
39# @FUNCTION: cmake-utils_use_enable 54# @FUNCTION: cmake-utils_use_enable
40# @USAGE: <USE flag> [flag name] 55# @USAGE: <USE flag> [flag name]
41# @DESCRIPTION: 56# @DESCRIPTION:
42# Based on use_enable. See ebuild.sh 57# Based on use_enable. See ebuild(5).
58#
59# `cmake-utils_use_enable foo FOO` echoes -DENABLE_FOO=ON if foo is enabled
60# and -DENABLE_FOO=OFF if it is disabled.
43cmake-utils_use_enable() { _use_me_now ENABLE "$@" ; } 61cmake-utils_use_enable() { _use_me_now ENABLE "$@" ; }
44 62
45# @FUNCTION: cmake-utils_use_want 63# @FUNCTION: cmake-utils_use_want
46# @USAGE: <USE flag> [flag name] 64# @USAGE: <USE flag> [flag name]
47# @DESCRIPTION: 65# @DESCRIPTION:
48# Based on use_enable. See ebuild.sh 66# Based on use_enable. See ebuild(5).
67#
68# `cmake-utils_use_want foo FOO` echoes -DWANT_FOO=ON if foo is enabled
69# and -DWANT_FOO=OFF if it is disabled.
49cmake-utils_use_want() { _use_me_now WANT "$@" ; } 70cmake-utils_use_want() { _use_me_now WANT "$@" ; }
50 71
72# @FUNCTION: cmake-utils_has
73# @USAGE: <USE flag> [flag name]
74# @DESCRIPTION:
75# Based on use_enable. See ebuild(5).
76#
77# `cmake-utils_has foo FOO` echoes -DHAVE_FOO=ON if foo is enabled
78# and -DHAVE_FOO=OFF if it is disabled.
79cmake-utils_has() { _use_me_now HAVE "$@" ; }
80
51# @FUNCTION: cmake-utils_src_compile 81# @FUNCTION: cmake-utils_src_configure
52# @DESCRIPTION: 82# @DESCRIPTION:
53# General function for compiling with cmake. Default behaviour is to start an 83# General function for configuring with cmake. Default behaviour is to start an
54# out-of-source build 84# out-of-source build.
55cmake-utils_src_compile() { 85cmake-utils_src_configure() {
56 debug-print-function $FUNCNAME $* 86 debug-print-function $FUNCNAME $*
87
88 if ! has debug ${IUSE//+} || ! use debug ; then
89 append-cppflags -DNDEBUG
90 fi
57 91
58 if [[ -n "${CMAKE_IN_SOURCE_BUILD}" ]]; then 92 if [[ -n "${CMAKE_IN_SOURCE_BUILD}" ]]; then
59 cmake-utils_src_configurein 93 cmake-utils_src_configurein
60 else 94 else
61 cmake-utils_src_configureout 95 cmake-utils_src_configureout
62 fi 96 fi
97}
98
99# @FUNCTION: cmake-utils_src_compile
100# @DESCRIPTION:
101# General function for compiling with cmake. Default behaviour is to check for
102# eapi and based on it configure or only compile
103cmake-utils_src_compile() {
104 case ${EAPI} in
105 2)
106 ;;
107 *)
108 cmake-utils_src_configure
109 ;;
110 esac
111
63 cmake-utils_src_make 112 cmake-utils_src_make "$@"
64} 113}
65 114
66# @FUNCTION: cmake-utils_src_configurein 115# @FUNCTION: cmake-utils_src_configurein
67# @DESCRIPTION: 116# @DESCRIPTION:
68# Function for software that requires configure and building in the source 117# Function for software that requires configure and building in the source
69# directory. 118# directory.
70cmake-utils_src_configurein() { 119cmake-utils_src_configurein() {
71 debug-print-function $FUNCNAME $* 120 debug-print-function $FUNCNAME $*
72 121
73 local cmakeargs="${mycmakeargs} $(_common_configure_code)" 122 local cmakeargs="$(_common_configure_code) ${mycmakeargs} ${EXTRA_ECONF}"
74 123
75 debug-print "$LINENO $ECLASS $FUNCNAME: mycmakeargs is $cmakeargs" 124 debug-print "$LINENO $ECLASS $FUNCNAME: mycmakeargs is $cmakeargs"
76 cmake ${cmakeargs} . || die "Cmake failed" 125 cmake ${cmakeargs} . || die "Cmake failed"
77} 126}
78 127
81# Function for software that requires configure and building outside the source 130# Function for software that requires configure and building outside the source
82# tree - default. 131# tree - default.
83cmake-utils_src_configureout() { 132cmake-utils_src_configureout() {
84 debug-print-function $FUNCNAME $* 133 debug-print-function $FUNCNAME $*
85 134
86 local cmakeargs="${mycmakeargs} $(_common_configure_code)" 135 local cmakeargs="$(_common_configure_code) ${mycmakeargs} ${EXTRA_ECONF}"
87 mkdir -p "${WORKDIR}"/${PN}_build 136 mkdir -p "${WORKDIR}"/${PN}_build
88 pushd "${WORKDIR}"/${PN}_build > /dev/null 137 pushd "${WORKDIR}"/${PN}_build > /dev/null
89 138
90 debug-print "$LINENO $ECLASS $FUNCNAME: mycmakeargs is $cmakeargs" 139 debug-print "$LINENO $ECLASS $FUNCNAME: mycmakeargs is $cmakeargs"
91 cmake ${cmakeargs} "${S}" || die "Cmake failed" 140 cmake ${cmakeargs} "${S}" || die "Cmake failed"
94} 143}
95 144
96# Internal use only. Common configuration options for all types of builds. 145# Internal use only. Common configuration options for all types of builds.
97_common_configure_code() { 146_common_configure_code() {
98 local tmp_libdir=$(get_libdir) 147 local tmp_libdir=$(get_libdir)
99 if has debug ${IUSE} && use debug; then 148 # CMAKE_BUILD_TYPE only modifies compiler flags, so set to None
100 echo -DCMAKE_BUILD_TYPE=debug 149 echo -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE:-None}
101 fi
102 echo -DCMAKE_C_COMPILER=$(type -P $(tc-getCC)) 150 echo -DCMAKE_C_COMPILER=$(type -P $(tc-getCC))
103 echo -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCXX)) 151 echo -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCXX))
104 echo -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr} 152 echo -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr}
105 echo -DLIB_SUFFIX=${tmp_libdir/lib} 153 echo -DLIB_SUFFIX=${tmp_libdir/lib}
106 echo -DLIB_INSTALL_DIR=${PREFIX:-/usr}/${tmp_libdir} 154 echo -DLIB_INSTALL_DIR=${PREFIX:-/usr}/${tmp_libdir}
108} 156}
109 157
110# @FUNCTION: cmake-utils_src_make 158# @FUNCTION: cmake-utils_src_make
111# @DESCRIPTION: 159# @DESCRIPTION:
112# Function for building the package. Automatically detects the build type. 160# Function for building the package. Automatically detects the build type.
161# All arguments are passed to emake:
162# "cmake-utils_src_make -j1" can be used to work around parallel make issues.
113cmake-utils_src_make() { 163cmake-utils_src_make() {
114 debug-print-function $FUNCNAME $* 164 debug-print-function $FUNCNAME $*
115 165
116 # At this point we can automatically check if it's an out-of-source or an 166 # At this point we can automatically check if it's an out-of-source or an
117 # in-source build 167 # in-source build
118 if [[ -d ${WORKDIR}/${PN}_build ]]; then 168 if [[ -d ${WORKDIR}/${PN}_build ]]; then
119 pushd "${WORKDIR}"/${PN}_build > /dev/null 169 pushd "${WORKDIR}"/${PN}_build > /dev/null
120 fi 170 fi
121 if ! [[ -z ${CMAKE_COMPILER_VERBOSE} ]]; then 171 if ! [[ -z ${CMAKE_COMPILER_VERBOSE} ]]; then
122 emake VERBOSE=1 || die "Make failed!" 172 emake VERBOSE=1 "$@" || die "Make failed!"
123 else 173 else
124 emake || die "Make failed!" 174 emake "$@" || die "Make failed!"
125 fi 175 fi
126 if [[ -d ${WORKDIR}/${PN}_build ]]; then 176 if [[ -d ${WORKDIR}/${PN}_build ]]; then
127 popd > /dev/null 177 popd > /dev/null
128 fi 178 fi
129} 179}
141 fi 191 fi
142 emake install DESTDIR="${D}" || die "Make install failed" 192 emake install DESTDIR="${D}" || die "Make install failed"
143 if [[ -d ${WORKDIR}/${PN}_build ]]; then 193 if [[ -d ${WORKDIR}/${PN}_build ]]; then
144 popd > /dev/null 194 popd > /dev/null
145 fi 195 fi
196
197 # Manual document installation
198 [[ -n "${DOCS}" ]] && dodoc ${DOCS}
146} 199}
147 200
148# @FUNCTION: cmake-utils_src_test 201# @FUNCTION: cmake-utils_src_test
149# @DESCRIPTION: 202# @DESCRIPTION:
150# Function for testing the package. Automatically detects the build type. 203# Function for testing the package. Automatically detects the build type.

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.13

  ViewVC Help
Powered by ViewVC 1.1.20