1 |
as i started to write more open coded autoconf cache variable tweaks, i got |
2 |
annoyed to write a simple eclass. here's a rough PoC. |
3 |
-mike |
4 |
|
5 |
# Copyright 1999-2011 Gentoo Foundation |
6 |
# Distributed under the terms of the GNU General Public License v2 |
7 |
# $Header: /var/cvsroot/gentoo-x86/eclass/autotools.eclass,v 1.110 2011/11/14 17:08:49 vapier Exp $ |
8 |
|
9 |
# @ECLASS: autotools-cache.eclass |
10 |
# @MAINTAINER: |
11 |
# base-system@g.o |
12 |
# @BLURB: Simplify management of autotool cache variables |
13 |
|
14 |
# just for usex() |
15 |
inherit eutils |
16 |
|
17 |
_ac_varify() { |
18 |
echo ${1//[![:alnum:]_]/_} |
19 |
} |
20 |
|
21 |
ac_cv() { |
22 |
export ac_cv_$(_ac_varify "$1")="$2" |
23 |
} |
24 |
|
25 |
# @FUNCTION: ac_check_lib |
26 |
# @USAGE: "<function> <library> [value]" ["<function> <library> [value]" ...] |
27 |
ac_check_lib() { |
28 |
local line |
29 |
for line in "$@" ; do |
30 |
local args=( ${line} ) |
31 |
local func=${args[0]} lib=${args[1]} val=${args[2]} |
32 |
ac_cv "lib_${lib}_${func}" "${val:-no}" |
33 |
done |
34 |
} |
35 |
# @FUNCTION: use_ac_check_lib |
36 |
# @USAGE: <USE flag> "<function> <library>" ["<function> <library>" ...] |
37 |
use_ac_check_lib() { |
38 |
local flag=$1 line packed=() |
39 |
for line in "${@:2}" ; do |
40 |
packed+=$( "${line} $(usex ${flag})" ) |
41 |
done |
42 |
${FUNCNAME#use_} "${packed[@]}" |
43 |
} |
44 |
|
45 |
# @FUNCTION: ac_search_libs |
46 |
# @USAGE: "<function> [value]" ["<function> [value]" ...] |
47 |
ac_search_libs() { |
48 |
local line |
49 |
for line in "$@" ; do |
50 |
local args=( ${line} ) |
51 |
local func=${args[0]} val=${args[1]} |
52 |
ac_cv "search_${func}" "${val:-no}" |
53 |
done |
54 |
} |
55 |
# @FUNCTION: use_ac_search_libs |
56 |
# @USAGE: <USE flag> "<function> <library>" ["<function> <library>" ...] |
57 |
use_ac_search_libs() { |
58 |
local flag=$1 line packed=() |
59 |
for line in "${@:2}" ; do |
60 |
local args=( ${line} ) |
61 |
local lib=${args[1]} |
62 |
packed+=( "${line} $(usex ${flag} -l${lib})" ) |
63 |
done |
64 |
${FUNCNAME#use_} "${packed[@]}" |
65 |
} |
66 |
|
67 |
# @FUNCTION: ac_check_headers |
68 |
# @USAGE: "<header> [value]" ["<header> [value]" ...] |
69 |
ac_check_headers() { |
70 |
local line |
71 |
for line in "$@" ; do |
72 |
local args=( ${line} ) |
73 |
local h=${args[0]} val=${args[1]} |
74 |
ac_cv "header_${h}" "${val:-no}" |
75 |
done |
76 |
} |
77 |
# @FUNCTION: use_ac_check_headers |
78 |
# @USAGE: <USE flag> <headers> |
79 |
use_ac_check_headers() { |
80 |
local flag=$1 h packed=() |
81 |
for h in "${@:2}" ; do |
82 |
packed+=( "${h} $(usex ${flag})" ) |
83 |
done |
84 |
ac_check_headers "${packed[@]}" |
85 |
} |