mirror of
https://git.jami.net/savoirfairelinux/jami-daemon.git
synced 2025-08-12 22:09:25 +08:00
contrib: add optional rules to build developer tools
Useful for platforms where autotools, cmake etc. are out of date or not easily available. Change-Id: I8fd37e0ca12daf2af7379ede8b80bc9fd57e5d62
This commit is contained in:

committed by
Tristan Matthews

parent
816a7f30e7
commit
ba5c3563e6
116
daemon/extras/tools/bootstrap
Executable file
116
daemon/extras/tools/bootstrap
Executable file
@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Copyright © 2011 Rafaël Carré
|
||||||
|
#
|
||||||
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with this program; if not, write to the Free Software
|
||||||
|
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
|
||||||
|
|
||||||
|
export LC_ALL=
|
||||||
|
NEEDED=
|
||||||
|
|
||||||
|
if [ ! -f tools.mak ]
|
||||||
|
then
|
||||||
|
echo "You must run me in ./extras/tools !"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
check_tar() {
|
||||||
|
if ! tar PcJ /dev/null >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "tar doesn't support xz (J option)"
|
||||||
|
NEEDED="$NEEDED .tar .xz"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check_sed() {
|
||||||
|
tmp="`pwd`/check_sed"
|
||||||
|
trap "rm $tmp{,-e} 2>/dev/null" EXIT
|
||||||
|
echo "test file for GNU sed" > $tmp
|
||||||
|
if ! sed -i -e 's/sed//' $tmp >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "sed doesn't do in-place editing (-i option)"
|
||||||
|
NEEDED="$NEEDED .sed"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
if ! $1 --version >/dev/null 2>&1
|
||||||
|
then
|
||||||
|
echo "$1 not found"
|
||||||
|
NEEDED="$NEEDED .$1"
|
||||||
|
else
|
||||||
|
# found, need to check version ?
|
||||||
|
[ -z "$2" ] && return # no
|
||||||
|
gotver=`$1 --version | head -1 | sed s/'.* '//`
|
||||||
|
gotmajor=`echo $gotver|cut -d. -f1`
|
||||||
|
gotminor=`echo $gotver|cut -d. -f2`
|
||||||
|
gotmicro=`echo $gotver|cut -d. -f3`
|
||||||
|
[ -z "$gotmicro" ] && gotmicro=0
|
||||||
|
needmajor=`echo $2|cut -d. -f1`
|
||||||
|
needminor=`echo $2|cut -d. -f2`
|
||||||
|
needmicro=`echo $2|cut -d. -f3`
|
||||||
|
[ -z "$needmicro" ] && needmicro=0
|
||||||
|
if [ "$needmajor" -gt "$gotmajor" \
|
||||||
|
-o "$needmajor" -eq "$gotmajor" -a "$needminor" -gt "$gotminor" \
|
||||||
|
-o "$needmajor" -eq "$gotmajor" -a "$needminor" -eq "$gotminor" -a "$needmicro" -gt "$gotmicro" ]
|
||||||
|
then
|
||||||
|
echo "$1 too old"
|
||||||
|
NEEDED="$NEEDED .$1"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
check autoconf 2.69
|
||||||
|
check automake 1.14
|
||||||
|
check m4 1.4.16
|
||||||
|
check libtool 2.4
|
||||||
|
check pkg-config
|
||||||
|
check cmake 2.8.8
|
||||||
|
check yasm
|
||||||
|
check_tar
|
||||||
|
check_sed
|
||||||
|
|
||||||
|
[ -n "$NEEDED" ] && mkdir -p build/
|
||||||
|
|
||||||
|
CPUS=
|
||||||
|
CC=
|
||||||
|
CXX=
|
||||||
|
case `uname` in
|
||||||
|
Linux)
|
||||||
|
CPUS=`grep -c ^processor /proc/cpuinfo`
|
||||||
|
;;
|
||||||
|
Darwin)
|
||||||
|
CPUS=`sysctl hw.ncpu|cut -d: -f2`
|
||||||
|
gcc-4.2 --version >/dev/null 2>&1 && CC=CC=gcc-4.2
|
||||||
|
g++-4.2 --version >/dev/null 2>&1 && CXX=CXX=g++-4.2
|
||||||
|
;;
|
||||||
|
SunOS)
|
||||||
|
CPUS=`/usr/bin/kstat -p :::state | grep 'on-line$' | wc -l | sed 's/ //g'`
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
CPUS=1 # default
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
||||||
|
cat > Makefile << EOF
|
||||||
|
MAKEFLAGS += -j$CPUS
|
||||||
|
$CC
|
||||||
|
$CXX
|
||||||
|
PREFIX=\$(abspath ./build)
|
||||||
|
|
||||||
|
all: $NEEDED
|
||||||
|
@echo "You are ready to build SFLPhone and its contribs"
|
||||||
|
|
||||||
|
include tools.mak
|
||||||
|
EOF
|
41
daemon/extras/tools/packages.mak
Normal file
41
daemon/extras/tools/packages.mak
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
GNU=http://ftp.gnu.org/gnu
|
||||||
|
APACHE=http://mirror.csclub.uwaterloo.ca/apache
|
||||||
|
SF= http://downloads.sourceforge.net/project
|
||||||
|
|
||||||
|
YASM_VERSION=1.2.0
|
||||||
|
#YASM_URL=$(CONTRIB_VIDEOLAN)/yasm-$(YASM_VERSION).tar.gz
|
||||||
|
YASM_URL=http://www.tortall.net/projects/yasm/releases/yasm-$(YASM_VERSION).tar.gz
|
||||||
|
|
||||||
|
CMAKE_VERSION=2.8.12.2
|
||||||
|
CMAKE_URL=http://www.cmake.org/files/v2.8/cmake-$(CMAKE_VERSION).tar.gz
|
||||||
|
|
||||||
|
LIBTOOL_VERSION=2.4.2
|
||||||
|
LIBTOOL_URL=$(GNU)/libtool/libtool-$(LIBTOOL_VERSION).tar.gz
|
||||||
|
|
||||||
|
AUTOCONF_VERSION=2.69
|
||||||
|
AUTOCONF_URL=$(GNU)/autoconf/autoconf-$(AUTOCONF_VERSION).tar.gz
|
||||||
|
|
||||||
|
AUTOMAKE_VERSION=1.14
|
||||||
|
AUTOMAKE_URL=$(GNU)/automake/automake-$(AUTOMAKE_VERSION).tar.gz
|
||||||
|
|
||||||
|
M4_VERSION=1.4.16
|
||||||
|
M4_URL=$(GNU)/m4/m4-$(M4_VERSION).tar.gz
|
||||||
|
|
||||||
|
PKGCFG_VERSION=0.27.1-1
|
||||||
|
#PKGCFG_URL=http://downloads.videolan.org/pub/videolan/testing/contrib/pkg-config-$(PKGCFG_VERSION).tar.gz
|
||||||
|
PKGCFG_URL=$(SF)/pkgconfiglite/$(PKGCFG_VERSION)/pkg-config-lite-$(PKGCFG_VERSION).tar.gz
|
||||||
|
|
||||||
|
TAR_VERSION=1.26
|
||||||
|
TAR_URL=$(GNU)/tar/tar-$(TAR_VERSION).tar.bz2
|
||||||
|
|
||||||
|
XZ_VERSION=5.0.3
|
||||||
|
XZ_URL=http://tukaani.org/xz/xz-$(XZ_VERSION).tar.bz2
|
||||||
|
|
||||||
|
GAS_VERSION=72887b9
|
||||||
|
GAS_URL=http://git.libav.org/?p=gas-preprocessor.git;a=snapshot;h=$(GAS_VERSION);sf=tgz
|
||||||
|
|
||||||
|
SED_VERSION=4.2.2
|
||||||
|
SED_URL=$(GNU)/sed/sed-$(SED_VERSION).tar.bz2
|
||||||
|
|
||||||
|
ANT_VERSION=1.9.4
|
||||||
|
ANT_URL=$(APACHE)/ant/binaries/apache-ant-$(ANT_VERSION)-bin.tar.bz2
|
260
daemon/extras/tools/tools.mak
Normal file
260
daemon/extras/tools/tools.mak
Normal file
@ -0,0 +1,260 @@
|
|||||||
|
# Copyright (C) 2003-2011 the VideoLAN team
|
||||||
|
#
|
||||||
|
# This file is under the same license as the vlc package.
|
||||||
|
|
||||||
|
include packages.mak
|
||||||
|
|
||||||
|
#
|
||||||
|
# common rules
|
||||||
|
#
|
||||||
|
|
||||||
|
AUTOCONF=$(PREFIX)/bin/autoconf
|
||||||
|
export AUTOCONF
|
||||||
|
|
||||||
|
ifeq ($(shell curl --version >/dev/null 2>&1 || echo FAIL),)
|
||||||
|
download = curl -f -L -- "$(1)" > "$@"
|
||||||
|
else ifeq ($(shell wget --version >/dev/null 2>&1 || echo FAIL),)
|
||||||
|
download = rm -f $@.tmp && \
|
||||||
|
wget --passive -c -p -O $@.tmp "$(1)" && \
|
||||||
|
touch $@.tmp && \
|
||||||
|
mv $@.tmp $@
|
||||||
|
else ifeq ($(which fetch >/dev/null 2>&1 || echo FAIL),)
|
||||||
|
download = rm -f $@.tmp && \
|
||||||
|
fetch -p -o $@.tmp "$(1)" && \
|
||||||
|
touch $@.tmp && \
|
||||||
|
mv $@.tmp $@
|
||||||
|
else
|
||||||
|
download = $(error Neither curl nor wget found!)
|
||||||
|
endif
|
||||||
|
|
||||||
|
UNPACK = $(RM) -R $@ \
|
||||||
|
$(foreach f,$(filter %.tar.gz %.tgz,$^), && tar xvzf $(f)) \
|
||||||
|
$(foreach f,$(filter %.tar.bz2,$^), && tar xvjf $(f)) \
|
||||||
|
$(foreach f,$(filter %.tar.xz,$^), && tar xvJf $(f)) \
|
||||||
|
$(foreach f,$(filter %.zip,$^), && unzip $(f))
|
||||||
|
|
||||||
|
UNPACK_DIR = $(basename $(basename $(notdir $<)))
|
||||||
|
APPLY = (cd $(UNPACK_DIR) && patch -p1) <
|
||||||
|
MOVE = mv $(UNPACK_DIR) $@ && touch $@
|
||||||
|
|
||||||
|
#
|
||||||
|
# package rules
|
||||||
|
#
|
||||||
|
|
||||||
|
# yasm
|
||||||
|
|
||||||
|
yasm-$(YASM_VERSION).tar.gz:
|
||||||
|
$(call download,$(YASM_URL))
|
||||||
|
|
||||||
|
yasm: yasm-$(YASM_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.yasm: yasm
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .yasm
|
||||||
|
CLEAN_PKG += yasm
|
||||||
|
DISTCLEAN_PKG += yasm-$(YASM_VERSION).tar.gz
|
||||||
|
|
||||||
|
# cmake
|
||||||
|
|
||||||
|
cmake-$(CMAKE_VERSION).tar.gz:
|
||||||
|
$(call download,$(CMAKE_URL))
|
||||||
|
|
||||||
|
cmake: cmake-$(CMAKE_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.cmake: cmake
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .cmake
|
||||||
|
CLEAN_PKG += cmake
|
||||||
|
DISTCLEAN_PKG += cmake-$(CMAKE_VERSION).tar.gz
|
||||||
|
|
||||||
|
# libtool
|
||||||
|
|
||||||
|
libtool-$(LIBTOOL_VERSION).tar.gz:
|
||||||
|
$(call download,$(LIBTOOL_URL))
|
||||||
|
|
||||||
|
libtool: libtool-$(LIBTOOL_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.libtool: libtool
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
ln -sf libtool $(PREFIX)/bin/glibtool
|
||||||
|
ln -sf libtoolize $(PREFIX)/bin/glibtoolize
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_PKG += libtool
|
||||||
|
DISTCLEAN_PKG += libtool-$(LIBTOOL_VERSION).tar.gz
|
||||||
|
CLEAN_FILE += .libtool
|
||||||
|
|
||||||
|
# GNU tar (with xz support)
|
||||||
|
|
||||||
|
tar-$(TAR_VERSION).tar.bz2:
|
||||||
|
$(call download,$(TAR_URL))
|
||||||
|
|
||||||
|
tar: tar-$(TAR_VERSION).tar.bz2
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.tar: tar
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_PKG += tar
|
||||||
|
DISTCLEAN_PKG += tar-$(TAR_VERSION).tar.bz2
|
||||||
|
CLEAN_FILE += .tar
|
||||||
|
|
||||||
|
# xz
|
||||||
|
|
||||||
|
xz-$(XZ_VERSION).tar.bz2:
|
||||||
|
$(call download,$(XZ_URL))
|
||||||
|
|
||||||
|
xz: xz-$(XZ_VERSION).tar.bz2
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.xz: xz
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_PKG += xz
|
||||||
|
DISTCLEAN_PKG += xz-$(XZ_VERSION).tar.bz2
|
||||||
|
CLEAN_FILE += .xz
|
||||||
|
|
||||||
|
# autoconf
|
||||||
|
|
||||||
|
autoconf-$(AUTOCONF_VERSION).tar.gz:
|
||||||
|
$(call download,$(AUTOCONF_URL))
|
||||||
|
|
||||||
|
autoconf: autoconf-$(AUTOCONF_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.autoconf: autoconf .pkg-config
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .autoconf
|
||||||
|
CLEAN_PKG += autoconf
|
||||||
|
DISTCLEAN_PKG += autoconf-$(AUTOCONF_VERSION).tar.gz
|
||||||
|
|
||||||
|
# automake
|
||||||
|
|
||||||
|
automake-$(AUTOMAKE_VERSION).tar.gz:
|
||||||
|
$(call download,$(AUTOMAKE_URL))
|
||||||
|
|
||||||
|
automake: automake-$(AUTOMAKE_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.automake: automake .autoconf
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .automake
|
||||||
|
CLEAN_PKG += automake
|
||||||
|
DISTCLEAN_PKG += automake-$(AUTOMAKE_VERSION).tar.gz
|
||||||
|
|
||||||
|
# m4
|
||||||
|
|
||||||
|
m4-$(M4_VERSION).tar.gz:
|
||||||
|
$(call download,$(M4_URL))
|
||||||
|
|
||||||
|
m4: m4-$(M4_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.m4: m4
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .m4
|
||||||
|
CLEAN_PKG += m4
|
||||||
|
DISTCLEAN_PKG += m4-$(M4_VERSION).tar.gz
|
||||||
|
|
||||||
|
# pkg-config
|
||||||
|
|
||||||
|
pkg-config-$(PKGCFG_VERSION).tar.gz:
|
||||||
|
$(call download,$(PKGCFG_URL))
|
||||||
|
|
||||||
|
pkgconfig: pkg-config-$(PKGCFG_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
mv pkg-config-lite-$(PKGCFG_VERSION) pkg-config-$(PKGCFG_VERSION)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.pkg-config: pkgconfig
|
||||||
|
(cd pkgconfig; ./configure --prefix=$(PREFIX) --disable-shared --enable-static && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .pkg-config
|
||||||
|
CLEAN_PKG += pkgconfig
|
||||||
|
DISTCLEAN_PKG += pkg-config-$(PKGCFG_VERSION).tar.gz
|
||||||
|
|
||||||
|
# gas-preprocessor
|
||||||
|
gas-preprocessor-$(GAS_VERSION).tar.gz:
|
||||||
|
$(call download,$(GAS_URL))
|
||||||
|
|
||||||
|
gas: gas-preprocessor-$(GAS_VERSION).tar.gz
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.gas: gas
|
||||||
|
cp gas/gas-preprocessor.pl build/bin/
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_FILE += .gas
|
||||||
|
CLEAN_PKG += gas
|
||||||
|
DISTCLEAN_PKG += yuvi-gas-preprocessor-$(GAS_VERSION).tar.gz
|
||||||
|
|
||||||
|
# GNU sed
|
||||||
|
|
||||||
|
sed-$(SED_VERSION).tar.bz2:
|
||||||
|
$(call download,$(SED_URL))
|
||||||
|
|
||||||
|
sed: sed-$(SED_VERSION).tar.bz2
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.sed: sed
|
||||||
|
(cd $<; ./configure --prefix=$(PREFIX) && $(MAKE) && $(MAKE) install)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_PKG += sed
|
||||||
|
DISTCLEAN_PKG += sed-$(SED_VERSION).tar.bz2
|
||||||
|
CLEAN_FILE += .sed
|
||||||
|
|
||||||
|
# Apache ANT
|
||||||
|
|
||||||
|
apache-ant-$(ANT_VERSION).tar.bz2:
|
||||||
|
$(call download,$(ANT_URL))
|
||||||
|
|
||||||
|
ant: apache-ant-$(ANT_VERSION).tar.bz2
|
||||||
|
$(UNPACK)
|
||||||
|
$(MOVE)
|
||||||
|
|
||||||
|
.ant: ant
|
||||||
|
(cp $</bin/* build/bin/; cp $</lib/* build/lib/)
|
||||||
|
touch $@
|
||||||
|
|
||||||
|
CLEAN_PKG += ant
|
||||||
|
DISTCLEAN_PKG += apache-ant-$(ANT_VERSION).tar.bz2
|
||||||
|
CLEAN_FILE += .ant
|
||||||
|
|
||||||
|
#
|
||||||
|
#
|
||||||
|
#
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -fr $(CLEAN_FILE) $(CLEAN_PKG) build/
|
||||||
|
|
||||||
|
distclean: clean
|
||||||
|
rm -fr $(DISTCLEAN_PKG)
|
||||||
|
|
||||||
|
.PHONY: all clean distclean
|
Reference in New Issue
Block a user