mirror of
https://github.com/serge1/ELFIO.git
synced 2024-12-28 15:15:04 +00:00
180 lines
5.4 KiB
Bash
Executable File
180 lines
5.4 KiB
Bash
Executable File
#!/bin/sh
|
|
# find out where the build script is located
|
|
tdir=`echo "$0" | sed 's%[\\/][^\\/][^\\/]*$%%'`
|
|
test "x$tdir" = "x$0" && tdir=.
|
|
scriptdir=`cd $tdir; pwd`
|
|
# find src directory.
|
|
# If scriptdir ends in SPECS, then topdir is $scriptdir/..
|
|
# If scriptdir ends in CYGWIN-PATCHES, then topdir is $scriptdir/../..
|
|
# Otherwise, we assume that topdir = scriptdir
|
|
topdir1=`echo ${scriptdir} | sed 's%/SPECS$%%'`
|
|
topdir2=`echo ${scriptdir} | sed 's%/CYGWIN-PATCHES$%%'`
|
|
if [ "x$topdir1" != "x$scriptdir" ] ; then # SPECS
|
|
topdir=`cd ${scriptdir}/..; pwd`
|
|
else
|
|
if [ "x$topdir2" != "x$scriptdir" ] ; then # CYGWIN-PATCHES
|
|
topdir=`cd ${scriptdir}/../..; pwd`
|
|
else
|
|
topdir=`cd ${scriptdir}; pwd`
|
|
fi
|
|
fi
|
|
|
|
tscriptname=`basename $0 .sh`
|
|
export PKG=`echo $tscriptname | sed -e 's/\-[^\-]*\-[^\-]*$//'`
|
|
export VER=`echo $tscriptname | sed -e 's/^[^\-]*\-//' -e 's/\-[^\-]*$//'`
|
|
export REL=`echo $tscriptname | sed -e 's/^[^\-]*\-[^\-]*\-//'`
|
|
export FULLPKG=${PKG}-${VER}-${REL}
|
|
# if the orig src package is bzip2'ed, remember to
|
|
# change 'z' to 'j' in the 'tar xvzf' commands in the
|
|
# prep) and mkpatch) sections
|
|
export src_orig_pkg_name=${PKG}-${VER}.tar.gz
|
|
export src_pkg_name=${FULLPKG}-src.tar.bz2
|
|
export src_patch_name=${FULLPKG}.patch
|
|
export bin_pkg_name=${FULLPKG}.tar.bz2
|
|
|
|
export src_orig_pkg=${topdir}/${src_orig_pkg_name}
|
|
export src_pkg=${topdir}/${src_pkg_name}
|
|
export src_patch=${topdir}/${src_patch_name}
|
|
export bin_pkg=${topdir}/${bin_pkg_name}
|
|
export srcdir=${topdir}/${PKG}-${VER}
|
|
export objdir=${srcdir}/.build
|
|
export instdir=${srcdir}/.inst
|
|
export srcinstdir=${srcdir}/.sinst
|
|
export checkfile=${topdir}/${FULLPKG}.check
|
|
# run on
|
|
host=i686-pc-cygwin
|
|
# if this package creates binaries, they run on
|
|
target=i686-pc-cygwin
|
|
prefix=/usr
|
|
sysconfdir=/etc
|
|
MY_CFLAGS="-O2"
|
|
MY_CXXFLAGS="-O2"
|
|
MY_LDFLAGS=
|
|
|
|
mkdirs() {
|
|
(cd ${topdir} && \
|
|
mkdir -p ${objdir} && \
|
|
mkdir -p ${instdir} && \
|
|
mkdir -p ${srcinstdir} )
|
|
}
|
|
prep() {
|
|
(cd ${topdir} && \
|
|
tar xvzf ${src_orig_pkg} ; \
|
|
cd ${topdir} && \
|
|
patch -p0 < ${src_patch}
|
|
&& mkdirs )
|
|
}
|
|
conf() {
|
|
(cd ${objdir} && \
|
|
CFLAGS="${MY_CFLAGS}" LDFLAGS="${MY_LDFLAGS}" \
|
|
CXXFLAGS="${MY_CXXFLAGS}" LDFLAGS="${MY_LDFLAGS}" \
|
|
${srcdir}/configure --host=${host} --target=${target} \
|
|
--srcdir=${srcdir} --prefix=${prefix} \
|
|
--exec-prefix=${prefix} --sysconfdir=${sysconfdir} \
|
|
--libdir=/lib --includedir=${prefix}/include \
|
|
--libexecdir='${sbindir}' --localstatedir=/var \
|
|
--datadir='${prefix}/share'
|
|
)
|
|
}
|
|
build() {
|
|
(cd ${objdir} && \
|
|
CFLAGS="${MY_CFLAGS}" make )
|
|
}
|
|
check() {
|
|
(cd ${objdir} && \
|
|
make test | tee ${checkfile} 2>&1 )
|
|
}
|
|
clean() {
|
|
(cd ${objdir} && \
|
|
make clean )
|
|
}
|
|
install() {
|
|
(cd ${objdir} && \
|
|
make install DESTDIR=${instdir}
|
|
if [ -f ${instdir}${prefix}/info/dir ] ; then \
|
|
rm ${instdir}${prefix}/info/dir ; \
|
|
fi && \
|
|
if [ ! -d ${instdir}${prefix}/doc/${PKG}-${VER} ]; then \
|
|
mkdir -p ${instdir}${prefix}/doc/${PKG}-${VER} ; \
|
|
fi && \
|
|
if [ ! -d ${instdir}${prefix}/doc/Cygwin ]; then \
|
|
mkdir -p ${instdir}${prefix}/doc/Cygwin ; \
|
|
fi && \
|
|
templist=""; \
|
|
for f in ${srcdir}/ANNOUNCE ${srcdir}/CHANGES ${srcdir}/INSTALL \
|
|
${srcdir}/KNOWNBUG ${srcdir}/LICENSE ${srcdir}/README \
|
|
${srcdir}/AUTHORS ${srcdir}/KNOWNBUG ${srcdir}/COPYING \
|
|
${srcdir}/doc/tutorial.pdf \
|
|
${srcdir}/Examples/tutorial/tutorial.cpp \
|
|
${srcdir}/TODO ; do \
|
|
if [ -f $f ] ; then \
|
|
templist="$templist $f"; \
|
|
fi ; \
|
|
done && \
|
|
if [ ! "x$templist" = "x" ]; then \
|
|
/usr/bin/install -m 644 $templist \
|
|
${instdir}${prefix}/doc/${PKG}-${VER} ;
|
|
fi && \
|
|
if [ -f ${srcdir}/CYGWIN-PATCHES/${PKG}-${VER}.README ]; then \
|
|
/usr/bin/install -m 644 ${srcdir}/CYGWIN-PATCHES/${PKG}-${VER}.README \
|
|
${instdir}${prefix}/doc/Cygwin/${PKG}-${VER}.README ; \
|
|
else \
|
|
if [ -f ${srcdir}/CYGWIN-PATCHES/README ]; then \
|
|
/usr/bin/install -m 644 ${srcdir}/CYGWIN-PATCHES/README \
|
|
${instdir}${prefix}/doc/Cygwin/${PKG}-${VER}.README ; \
|
|
fi ;\
|
|
fi ; )
|
|
}
|
|
strip() {
|
|
(cd ${instdir} && \
|
|
find . -name "*.dll" | xargs strip > /dev/null 2>&1
|
|
find . -name "*.exe" | xargs strip > /dev/null 2>&1 )
|
|
}
|
|
pkg() {
|
|
(cd ${instdir} && \
|
|
tar cvjf ${bin_pkg} * )
|
|
}
|
|
mkpatch() {
|
|
(cd ${srcdir} && \
|
|
tar xvzf ${src_orig_pkg} ;\
|
|
mv ${PKG}-${VER} ../${PKG}-${VER}-orig && \
|
|
cd ${topdir} && \
|
|
diff -urN -x '.build' -x '.inst' -x '.sinst' \
|
|
${PKG}-${VER}-orig ${PKG}-${VER} > \
|
|
${srcinstdir}/${src_patch_name} ; \
|
|
rm -rf ${PKG}-${VER}-orig )
|
|
}
|
|
spkg() {
|
|
(mkpatch && \
|
|
cp ${src_orig_pkg} ${srcinstdir}/${src_orig_pkg_name} && \
|
|
cp $0 ${srcinstdir}/`basename $0` && \
|
|
cd ${srcinstdir} && \
|
|
tar cvjf ${src_pkg} * )
|
|
}
|
|
finish() {
|
|
rm -rf ${srcdir}
|
|
}
|
|
case $1 in
|
|
prep) prep ; STATUS=$? ;;
|
|
mkdirs) mkdirs; STATUS=$? ;;
|
|
conf) conf ; STATUS=$? ;;
|
|
build) build ; STATUS=$? ;;
|
|
check) check ; STATUS=$? ;;
|
|
clean) clean ; STATUS=$? ;;
|
|
install) install ; STATUS=$? ;;
|
|
strip) strip ; STATUS=$? ;;
|
|
package) pkg ; STATUS=$? ;;
|
|
pkg) pkg ; STATUS=$? ;;
|
|
mkpatch) mkpatch ; STATUS=$? ;;
|
|
src-package) spkg ; STATUS=$? ;;
|
|
spkg) spkg ; STATUS=$? ;;
|
|
finish) finish ; STATUS=$? ;;
|
|
all) prep && conf && build && install && \
|
|
strip && pkg && spkg && finish ; \
|
|
STATUS=$? ;;
|
|
*) echo "Error: bad arguments" ; exit 1 ;;
|
|
esac
|
|
exit ${STATUS}
|
|
|
|
|