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

Contents of /eclass/cmake-utils.eclass

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.10 - (hide annotations) (download)
Sun Sep 28 18:52:16 2008 UTC (6 years, 3 months ago) by jmbsvicetto
Branch: MAIN
Changes since 1.9: +11 -3 lines
Don't export src_configure for EAPI!=2.

1 philantrop 1.1 # Copyright 1999-2007 Gentoo Foundation
2     # Distributed under the terms of the GNU General Public License v2
3 jmbsvicetto 1.10 # $Header: /var/cvsroot/gentoo-x86/eclass/cmake-utils.eclass,v 1.9 2008/09/28 16:19:06 jmbsvicetto Exp $
4 philantrop 1.1
5     # @ECLASS: cmake-utils.eclass
6     # @MAINTAINER:
7     # kde@gentoo.org
8     # @BLURB: common ebuild functions for cmake-based packages
9     # @DESCRIPTION:
10     # The cmake-utils eclass contains functions that make creating ebuilds for
11     # cmake-based packages much easier.
12     # Its main features are support of out-of-source builds as well as in-source
13     # builds and an implementation of the well-known use_enable and use_with
14     # functions for CMake.
15    
16     # Original author: Zephyrus (zephyrus@mirach.it)
17    
18     inherit toolchain-funcs multilib
19    
20     DESCRIPTION="Based on the ${ECLASS} eclass"
21    
22 ingmar 1.8 DEPEND=">=dev-util/cmake-2.4.6"
23 philantrop 1.1
24 jmbsvicetto 1.10 case ${EAPI} in
25     2)
26     EXPORT_FUNCTIONS src_configure src_compile src_test src_install
27     ;;
28     *)
29     EXPORT_FUNCTIONS src_compile src_test src_install
30     ;;
31     esac
32    
33 philantrop 1.1
34     # Internal function use by cmake-utils_use_with and cmake-utils_use_enable
35     _use_me_now() {
36     debug-print-function $FUNCNAME $*
37     [[ -z $2 ]] && die "cmake-utils_use-$1 <USE flag> [<flag name>]"
38     echo "-D$1_${3:-$2}=$(use $2 && echo ON || echo OFF)"
39     }
40    
41 zlin 1.5 # @VARIABLE: DOCS
42     # @DESCRIPTION:
43     # Documents to dodoc
44    
45 philantrop 1.1 # @FUNCTION: cmake-utils_use_with
46     # @USAGE: <USE flag> [flag name]
47     # @DESCRIPTION:
48 philantrop 1.3 # Based on use_with. See ebuild(5).
49 betelgeuse 1.4 #
50 philantrop 1.3 # `cmake-utils_use_with foo FOO` echoes -DWITH_FOO=ON if foo is enabled
51     # and -DWITH_FOO=OFF if it is disabled.
52 philantrop 1.1 cmake-utils_use_with() { _use_me_now WITH "$@" ; }
53    
54     # @FUNCTION: cmake-utils_use_enable
55     # @USAGE: <USE flag> [flag name]
56     # @DESCRIPTION:
57 philantrop 1.3 # Based on use_enable. See ebuild(5).
58 betelgeuse 1.4 #
59 philantrop 1.3 # `cmake-utils_use_enable foo FOO` echoes -DENABLE_FOO=ON if foo is enabled
60     # and -DENABLE_FOO=OFF if it is disabled.
61 philantrop 1.1 cmake-utils_use_enable() { _use_me_now ENABLE "$@" ; }
62    
63 philantrop 1.2 # @FUNCTION: cmake-utils_use_want
64     # @USAGE: <USE flag> [flag name]
65     # @DESCRIPTION:
66 philantrop 1.3 # Based on use_enable. See ebuild(5).
67 betelgeuse 1.4 #
68 philantrop 1.3 # `cmake-utils_use_want foo FOO` echoes -DWANT_FOO=ON if foo is enabled
69     # and -DWANT_FOO=OFF if it is disabled.
70 philantrop 1.2 cmake-utils_use_want() { _use_me_now WANT "$@" ; }
71    
72 philantrop 1.3 # @FUNCTION: cmake-utils_has
73     # @USAGE: <USE flag> [flag name]
74     # @DESCRIPTION:
75     # Based on use_enable. See ebuild(5).
76 betelgeuse 1.4 #
77 philantrop 1.3 # `cmake-utils_has foo FOO` echoes -DHAVE_FOO=ON if foo is enabled
78     # and -DHAVE_FOO=OFF if it is disabled.
79     cmake-utils_has() { _use_me_now HAVE "$@" ; }
80    
81 jmbsvicetto 1.9 # @FUNCTION: cmake-utils_src_configure
82 philantrop 1.1 # @DESCRIPTION:
83 jmbsvicetto 1.9 # General function for configuring with cmake. Default behaviour is to start an
84     # out-of-source build.
85     cmake-utils_src_configure() {
86 philantrop 1.1 debug-print-function $FUNCNAME $*
87    
88 philantrop 1.2 if [[ -n "${CMAKE_IN_SOURCE_BUILD}" ]]; then
89     cmake-utils_src_configurein
90     else
91     cmake-utils_src_configureout
92     fi
93 jmbsvicetto 1.9 }
94    
95     # @FUNCTION: cmake-utils_src_compile
96     # @DESCRIPTION:
97     # General function for compiling with cmake. Default behaviour is to check for
98     # eapi and based on it configure or only compile
99     cmake-utils_src_compile() {
100     case ${EAPI} in
101 jmbsvicetto 1.10 2)
102 jmbsvicetto 1.9 ;;
103     *)
104     cmake-utils_src_configure
105     ;;
106     esac
107    
108 philantrop 1.3 cmake-utils_src_make "$@"
109 philantrop 1.1 }
110    
111     # @FUNCTION: cmake-utils_src_configurein
112     # @DESCRIPTION:
113     # Function for software that requires configure and building in the source
114     # directory.
115     cmake-utils_src_configurein() {
116     debug-print-function $FUNCNAME $*
117    
118 philantrop 1.7 local cmakeargs="$(_common_configure_code) ${mycmakeargs} ${EXTRA_ECONF}"
119 philantrop 1.1
120     debug-print "$LINENO $ECLASS $FUNCNAME: mycmakeargs is $cmakeargs"
121     cmake ${cmakeargs} . || die "Cmake failed"
122     }
123    
124     # @FUNCTION: cmake-utils_src_configureout
125     # @DESCRIPTION:
126     # Function for software that requires configure and building outside the source
127     # tree - default.
128     cmake-utils_src_configureout() {
129     debug-print-function $FUNCNAME $*
130    
131 philantrop 1.7 local cmakeargs="$(_common_configure_code) ${mycmakeargs} ${EXTRA_ECONF}"
132 philantrop 1.2 mkdir -p "${WORKDIR}"/${PN}_build
133     pushd "${WORKDIR}"/${PN}_build > /dev/null
134 philantrop 1.1
135     debug-print "$LINENO $ECLASS $FUNCNAME: mycmakeargs is $cmakeargs"
136     cmake ${cmakeargs} "${S}" || die "Cmake failed"
137 philantrop 1.2
138     popd > /dev/null
139 philantrop 1.1 }
140    
141     # Internal use only. Common configuration options for all types of builds.
142     _common_configure_code() {
143     local tmp_libdir=$(get_libdir)
144 philantrop 1.3 if has debug ${IUSE//+} && use debug; then
145     echo -DCMAKE_BUILD_TYPE=Debug
146     else
147     echo -DCMAKE_BUILD_TYPE=Release
148 philantrop 1.1 fi
149     echo -DCMAKE_C_COMPILER=$(type -P $(tc-getCC))
150     echo -DCMAKE_CXX_COMPILER=$(type -P $(tc-getCXX))
151     echo -DCMAKE_INSTALL_PREFIX=${PREFIX:-/usr}
152     echo -DLIB_SUFFIX=${tmp_libdir/lib}
153 philantrop 1.2 echo -DLIB_INSTALL_DIR=${PREFIX:-/usr}/${tmp_libdir}
154 philantrop 1.1 [[ -n ${CMAKE_NO_COLOR} ]] && echo -DCMAKE_COLOR_MAKEFILE=OFF
155     }
156    
157     # @FUNCTION: cmake-utils_src_make
158     # @DESCRIPTION:
159     # Function for building the package. Automatically detects the build type.
160 philantrop 1.3 # All arguments are passed to emake:
161     # "cmake-utils_src_make -j1" can be used to work around parallel make issues.
162 philantrop 1.1 cmake-utils_src_make() {
163     debug-print-function $FUNCNAME $*
164    
165     # At this point we can automatically check if it's an out-of-source or an
166     # in-source build
167     if [[ -d ${WORKDIR}/${PN}_build ]]; then
168 philantrop 1.2 pushd "${WORKDIR}"/${PN}_build > /dev/null
169 philantrop 1.1 fi
170     if ! [[ -z ${CMAKE_COMPILER_VERBOSE} ]]; then
171 philantrop 1.3 emake VERBOSE=1 "$@" || die "Make failed!"
172 philantrop 1.1 else
173 philantrop 1.3 emake "$@" || die "Make failed!"
174 philantrop 1.2 fi
175     if [[ -d ${WORKDIR}/${PN}_build ]]; then
176     popd > /dev/null
177 philantrop 1.1 fi
178     }
179    
180     # @FUNCTION: cmake-utils_src_install
181     # @DESCRIPTION:
182     # Function for installing the package. Automatically detects the build type.
183     cmake-utils_src_install() {
184     debug-print-function $FUNCNAME $*
185    
186     # At this point we can automatically check if it's an out-of-source or an
187     # in-source build
188     if [[ -d ${WORKDIR}/${PN}_build ]]; then
189 philantrop 1.2 pushd "${WORKDIR}"/${PN}_build > /dev/null
190 philantrop 1.1 fi
191     emake install DESTDIR="${D}" || die "Make install failed"
192 philantrop 1.2 if [[ -d ${WORKDIR}/${PN}_build ]]; then
193     popd > /dev/null
194     fi
195 zlin 1.5
196     # Manual document installation
197     [[ -n "${DOCS}" ]] && dodoc ${DOCS}
198 philantrop 1.1 }
199    
200     # @FUNCTION: cmake-utils_src_test
201     # @DESCRIPTION:
202     # Function for testing the package. Automatically detects the build type.
203     cmake-utils_src_test() {
204     debug-print-function $FUNCNAME $*
205    
206     # At this point we can automatically check if it's an out-of-source or an
207     # in-source build
208     if [[ -d ${WORKDIR}/${PN}_build ]]; then
209 philantrop 1.2 pushd "${WORKDIR}"/${PN}_build > /dev/null
210 philantrop 1.1 fi
211     # Standard implementation of src_test
212     if emake -j1 check -n &> /dev/null; then
213     einfo ">>> Test phase [check]: ${CATEGORY}/${PF}"
214     if ! emake -j1 check; then
215     die "Make check failed. See above for details."
216     fi
217     elif emake -j1 test -n &> /dev/null; then
218     einfo ">>> Test phase [test]: ${CATEGORY}/${PF}"
219     if ! emake -j1 test; then
220     die "Make test failed. See above for details."
221     fi
222     else
223     einfo ">>> Test phase [none]: ${CATEGORY}/${PF}"
224     fi
225 philantrop 1.2 if [[ -d ${WORKDIR}/${PN}_build ]]; then
226     popd > /dev/null
227     fi
228 philantrop 1.1 }

  ViewVC Help
Powered by ViewVC 1.1.20