diff options
author | Stefan Knoblich <stkn@gentoo.org> | 2006-04-10 07:50:34 +0000 |
---|---|---|
committer | Stefan Knoblich <stkn@gentoo.org> | 2006-04-10 07:50:34 +0000 |
commit | 7a750fc80a9168d56d6b92a2823b1f53dc294abd (patch) | |
tree | 90683a60e09cf4f8e1345541bed20fda2d82e43e /eclass | |
parent | Experimental app_event ebuild that uses the (of course) experimental asterisk... (diff) | |
download | voip-7a750fc80a9168d56d6b92a2823b1f53dc294abd.tar.gz voip-7a750fc80a9168d56d6b92a2823b1f53dc294abd.tar.bz2 voip-7a750fc80a9168d56d6b92a2823b1f53dc294abd.zip |
Add the (experimental) asterisk-mod eclass
svn path=/trunk/; revision=215
Diffstat (limited to 'eclass')
-rw-r--r-- | eclass/asterisk-mod.eclass | 124 |
1 files changed, 124 insertions, 0 deletions
diff --git a/eclass/asterisk-mod.eclass b/eclass/asterisk-mod.eclass new file mode 100644 index 0000000..18fe87f --- /dev/null +++ b/eclass/asterisk-mod.eclass @@ -0,0 +1,124 @@ +# +# +# +# + +# AST_MODULES="app_foo app_bar" +# +# AST_APP_FOO_SRC="app_foo.c foo.c" +# AST_APP_FOO_LIBS="-ltest" +# AST_APP_FOO_CFLAGS="-D_IM_A_FLAG" +# AST_APP_FOO_LDFLAGS="-Wl,-z,now" + +# AST_MOD_DOCS="README INSTALL bla" + +inherit eutils toolchain-funcs +EXPORT_FUNCTIONS pkg_setup src_compile src_install + +# $1 = modname +# $2 = variable suffix (e.g. SRC, LIBS) +ast_get_mod_var() { + local modname varname + + [[ -z "$1" ]] && \ + return 1 + + [[ -z "$2" ]] && \ + return 1 + + modname="$(echo "$1" | tr '[:lower:]' '[:upper:]' | tr '-' '_')" + varname="$2" + + eval "echo \${AST_${modname}_${varname}}" + return 0 +} + +ast_get_mod_src() { + echo $(ast_get_mod_var $1 SRC) +} + +ast_get_mod_cflags() { + echo $(ast_get_mod_var $1 CFLAGS) +} + +ast_get_mod_ldflags() { + echo $(ast_get_mod_var $1 LDFLAGS) +} + +ast_get_mod_libs() { + echo $(ast_get_mod_var $1 LIBS) +} + +asterisk-mod_pkg_setup() { + echo ">>> " + export AST_VERSION="1.2.x" +} + +asterisk-mod_src_compile() { + local MOD_SRC MOD_OBJS MOD_LIBS MOD_LDFLAGS MOD_CFLAGS + local mod obj x + + if [[ -z "{AST_MODULES}" ]]; then + echo "!!! Nothing to do" + return 0 + fi + + for mod in ${AST_MODULES}; do + echo ">>> Building ${mod}..." + + MOD_OBJS="" + MOD_SRC="$(ast_get_mod_src ${mod})" + MOD_LIBS="$(ast_get_mod_libs ${mod})" + MOD_LDFLAGS="$(ast_get_mod_ldflags ${mod})" + MOD_CFLAGS="$(ast_get_mod_cflags ${mod})" + MOD_TARGET="${mod}.so" + + [[ -z "${MOD_SRC}" ]] && \ + MOD_SRC="${mod}.c" + + # grab a set of default cflags... + [[ -z "${MOD_CFLAGS}" ]] && \ + MOD_CFLAGS="" + + # add some nice version information to the final module + MOD_CFLAGS="${MOD_CFLAGS}" + + # add version information to module + cat > _version.c <<-EOF + const char __${mod}_${AST_VERSION//./_}[0]; + EOF + + MOD_SRC="${MOD_SRC} _version.c" + + # compile source files + for x in ${MOD_SRC}; do + obj="$(echo "${x}" | sed -e "s:^\(.*\)\..*:\1.o:")" + echo "DEBUG: ${x} -> ${obj} using ${MOD_CFLAGS}" + + $(tc-getCC) ${MOD_CFLAGS} -c -o ${obj} ${x} || die "Compiling ${x} failed!" + MOD_OBJS="${MOD_OBJS} ${obj}" + done + + # link module + [[ -n "${MOD_OBJS}" ]] && \ + ( $(tc-getCC) ${MOD_LDFLAGS} -o ${MOD_TARGET} ${MOD_OBJS} ${MOD_LIBS} || die "Linking ${MOD_TARGET} failed!"; ) + done +} + + +asterisk-mod_src_install() { + + [[ -z "${AST_MODULES}" ]] && \ + ( echo "!!! Nothing to do"; return 1; ) + + insinto "${D}usr/lib/asterisk/modules" + for mod in ${AST_MODULES}; do + echo ">>> Installing ${mod}..." + doins ${mod}.so || die "Failed to install ${mod}.so!" + done + + if [[ -n "${AST_MOD_DOCS}" ]]; then + echo ">>> Installing documentation files..." + dodoc ${AST_MOD_DOCS} + fi +} |