mirror of
https://github.com/pocoproject/poco.git
synced 2025-01-19 16:56:09 +01:00
421 lines
9.5 KiB
Bash
Executable File
421 lines
9.5 KiB
Bash
Executable File
#! /bin/sh
|
|
#
|
|
# $Id: //poco/1.3/release/script/mkrelease#1 $
|
|
#
|
|
# mkrelease
|
|
#
|
|
# Create a release for distribution.
|
|
#
|
|
# usage: mkrelease [-i] [-f specfile] <version> [<component>...]
|
|
#
|
|
|
|
if [ "$1" = "" ] ; then
|
|
echo "usage: $0 [-i] <version> [<component>...]"
|
|
echo " -i - include intenal tools"
|
|
echo " -f specfile - read component list from specfile"
|
|
echo " -o dir - specify output directory"
|
|
echo " -l - include licensing"
|
|
exit 1
|
|
fi
|
|
|
|
comps="Foundation XML Util Net"
|
|
internal=0
|
|
specfile=""
|
|
version=""
|
|
output=""
|
|
licensingDep=""
|
|
|
|
while [ "$1" != "" ] ;
|
|
do
|
|
if [ "$1" = "-i" ] ; then
|
|
shift
|
|
internal=1
|
|
elif [ "$1" = "-f" ] ; then
|
|
shift
|
|
specfile=$1
|
|
shift
|
|
elif [ "$1" = "-o" ] ; then
|
|
shift
|
|
output=$1
|
|
shift
|
|
elif [ "$1" = "-l" ] ; then
|
|
shift
|
|
licensingDep="Licensing-libexec"
|
|
comps="$comps Licensing"
|
|
elif [ "$version" = "" ] ; then
|
|
version=$1
|
|
shift
|
|
else
|
|
comps="$comps $1"
|
|
shift
|
|
fi
|
|
done
|
|
|
|
if [ "$specfile" != "" ] ; then
|
|
while read c
|
|
do
|
|
comps="$comps $c"
|
|
done <$specfile
|
|
fi
|
|
|
|
if [ "$version" = "" ] ; then
|
|
echo "Error: no version specified."
|
|
exit 1
|
|
fi
|
|
|
|
if [ "$output" != "" ] ; then
|
|
target=$output
|
|
else
|
|
target=$POCO_BASE/releases/poco-${version}
|
|
fi
|
|
|
|
mkdir -p ${target}
|
|
mkdir -p ${target}/doc
|
|
mkdir -p ${target}/contrib
|
|
|
|
|
|
#
|
|
# readme files, etc.
|
|
#
|
|
echo ${version} "(`date +%Y-%m-%d`)" >${target}/VERSION
|
|
cp ${POCO_BASE}/dist/LICENSE ${target}
|
|
cp ${POCO_BASE}/dist/NEWS ${target}
|
|
cp ${POCO_BASE}/dist/README ${target}
|
|
cp ${POCO_BASE}/dist/CHANGELOG ${target}
|
|
cp ${POCO_BASE}/dist/CONTRIBUTORS ${target}
|
|
|
|
cp ${POCO_BASE}/doc/Acknowledgements.html ${target}/doc
|
|
|
|
cp -R ${POCO_BASE}/contrib/* ${target}/contrib
|
|
|
|
#
|
|
# build system
|
|
#
|
|
mkdir -p ${target}/build/config
|
|
mkdir -p ${target}/build/rules
|
|
mkdir -p ${target}/build/script
|
|
mkdir -p ${target}/build/vms
|
|
|
|
cp ${POCO_BASE}/build/config/* ${target}/build/config
|
|
cp ${POCO_BASE}/build/rules/* ${target}/build/rules
|
|
cp ${POCO_BASE}/build/script/makedepend.* ${target}/build/script
|
|
cp ${POCO_BASE}/build/script/makeldpath ${target}/build/script
|
|
cp ${POCO_BASE}/build/script/shlibln ${target}/build/script
|
|
cp ${POCO_BASE}/build/script/projname ${target}/build/script
|
|
cp ${POCO_BASE}/build/vms/* ${target}/build/vms
|
|
cp ${POCO_BASE}/dist/build_vs71.cmd ${target}
|
|
cp ${POCO_BASE}/dist/build_vs80.cmd ${target}
|
|
cp ${POCO_BASE}/dist/configure ${target}
|
|
cp ${POCO_BASE}/buildvms.com ${target}
|
|
cp ${POCO_BASE}/libversion ${target}
|
|
|
|
if [ $internal = 1 ] ; then
|
|
cp ${POCO_BASE}/build/script/testall ${target}/build/script
|
|
cp ${POCO_BASE}/build/script/waitfortest ${target}/build/script
|
|
fi
|
|
|
|
|
|
#
|
|
# CppUnit
|
|
#
|
|
mkdir -p ${target}/CppUnit
|
|
mkdir -p ${target}/CppUnit/doc
|
|
mkdir -p ${target}/CppUnit/include/CppUnit
|
|
mkdir -p ${target}/CppUnit/src
|
|
mkdir -p ${target}/CppUnit/WinTestRunner
|
|
mkdir -p ${target}/CppUnit/WinTestRunner/include/WinTestRunner
|
|
mkdir -p ${target}/CppUnit/WinTestRunner/src
|
|
mkdir -p ${target}/CppUnit/WinTestRunner/res
|
|
|
|
cp ${POCO_BASE}/CppUnit/doc/* ${target}/CppUnit/doc
|
|
cp ${POCO_BASE}/CppUnit/include/CppUnit/* ${target}/CppUnit/include/CppUnit
|
|
cp ${POCO_BASE}/CppUnit/src/* ${target}/CppUnit/src
|
|
cp ${POCO_BASE}/CppUnit/*.sln ${target}/CppUnit
|
|
cp ${POCO_BASE}/CppUnit/*.vcproj ${target}/CppUnit
|
|
cp ${POCO_BASE}/CppUnit/Makefile ${target}/CppUnit
|
|
cp ${POCO_BASE}/CppUnit/*.vmsbuild ${target}/CppUnit
|
|
|
|
cp ${POCO_BASE}/CppUnit/WinTestRunner/include/WinTestRunner/* ${target}/CppUnit/WinTestRunner/include/WinTestRunner
|
|
cp ${POCO_BASE}/CppUnit/WinTestRunner/src/* ${target}/CppUnit/WinTestRunner/src
|
|
cp ${POCO_BASE}/CppUnit/WinTestRunner/res/WinTestRunner.rc ${target}/CppUnit/WinTestRunner/res
|
|
cp ${POCO_BASE}/CppUnit/WinTestRunner/res/Resource.h ${target}/CppUnit/WinTestRunner/res
|
|
cp ${POCO_BASE}/CppUnit/WinTestRunner/*.vcproj ${target}/CppUnit/WinTestRunner
|
|
|
|
|
|
#
|
|
# Copy components
|
|
#
|
|
for comp in $comps ;
|
|
do
|
|
cpproj ${POCO_BASE}/$comp ${target}/$comp
|
|
done
|
|
|
|
|
|
#
|
|
# Create components file
|
|
#
|
|
for comp in $comps ;
|
|
do
|
|
echo $comp >>${target}/components
|
|
done
|
|
echo "CppUnit" >>${target}/components
|
|
|
|
|
|
#
|
|
# Make all files writeable
|
|
#
|
|
chmod -R +w ${target}
|
|
|
|
|
|
#
|
|
# Generate Makefile
|
|
#
|
|
cat >${target}/Makefile <<'ENDOFSCRIPT'
|
|
#
|
|
# Makefile
|
|
#
|
|
# The global Makefile for POCO [generated by mkrelease]
|
|
#
|
|
|
|
sinclude config.make
|
|
|
|
ifndef POCO_BASE
|
|
$(warning WARNING: POCO_BASE is not defined. Assuming current directory.)
|
|
export POCO_BASE=$(shell pwd)
|
|
endif
|
|
|
|
ifndef POCO_PREFIX
|
|
export POCO_PREFIX=/usr/local
|
|
endif
|
|
|
|
.PHONY: all libexecs cppunit tests samples install
|
|
|
|
all: libexecs tests samples
|
|
|
|
INSTALLDIR = $(DESTDIR)$(POCO_PREFIX)
|
|
ENDOFSCRIPT
|
|
|
|
echo "COMPONENTS = $comps" >>${target}/Makefile
|
|
|
|
cat >>${target}/Makefile <<'ENDOFSCRIPT'
|
|
|
|
cppunit:
|
|
$(MAKE) -C $(POCO_BASE)/CppUnit
|
|
|
|
install: libexecs
|
|
mkdir -p $(INSTALLDIR)/include/Poco
|
|
mkdir -p $(INSTALLDIR)/lib
|
|
mkdir -p $(INSTALLDIR)/bin
|
|
for comp in $(COMPONENTS) ; do \
|
|
if [ -d "$(POCO_BASE)/$$comp/include" ] ; then \
|
|
cp -Rf $(POCO_BASE)/$$comp/include/* $(INSTALLDIR)/include/ ; \
|
|
fi ; \
|
|
if [ -d "$(POCO_BUILD)/$$comp/bin" ] ; then \
|
|
find $(POCO_BUILD)/$$comp/bin -perm -700 -type f -exec cp -Rf {} $(INSTALLDIR)/bin \; ; \
|
|
fi ; \
|
|
done
|
|
find $(POCO_BUILD)/lib -name "libPoco*" -exec cp -Rf {} $(INSTALLDIR)/lib \;
|
|
|
|
ENDOFSCRIPT
|
|
|
|
libexecs=""
|
|
tests=""
|
|
samples=""
|
|
for comp in $comps ;
|
|
do
|
|
libexecs="$libexecs ${comp}-libexec"
|
|
if [ -d "${POCO_BASE}/${comp}/testsuite" ] ; then
|
|
tests="$tests ${comp}-tests"
|
|
fi
|
|
if [ -d "${POCO_BASE}/${comp}/samples" ] ; then
|
|
samples="$samples ${comp}-samples"
|
|
fi
|
|
done
|
|
|
|
echo ".PHONY:$libexecs" >>${target}/Makefile
|
|
echo ".PHONY:$tests" >>${target}/Makefile
|
|
echo ".PHONY:$samples" >>${target}/Makefile
|
|
echo "" >>${target}/Makefile
|
|
echo "libexecs:$libexecs" >>${target}/Makefile
|
|
echo "tests:$tests" >>${target}/Makefile
|
|
echo "samples:$samples" >>${target}/Makefile
|
|
|
|
for comp in $comps ;
|
|
do
|
|
if [ `grep -c POCO_LICENSING "${POCO_BASE}/${comp}/Makefile"` != 0 ] ; then
|
|
dependencies=$licensingDep
|
|
else
|
|
dependencies=""
|
|
fi
|
|
if [ -f "${POCO_BASE}/${comp}/dependencies" ] ; then
|
|
for dep in `cat "${POCO_BASE}/${comp}/dependencies"` ;
|
|
do
|
|
dependencies="$dependencies ${dep}-libexec"
|
|
done
|
|
fi
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
|
|
${comp}-libexec: $dependencies
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp}
|
|
ENDOFSCRIPT
|
|
|
|
if [ -d "${POCO_BASE}/${comp}/testsuite" ] ; then
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
|
|
${comp}-tests: ${comp}-libexec cppunit
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp}/testsuite
|
|
ENDOFSCRIPT
|
|
fi
|
|
|
|
if [ -d "${POCO_BASE}/${comp}/samples" ] ; then
|
|
sdependencies=""
|
|
if [ -f "${POCO_BASE}/${comp}/samples/dependencies" ] ; then
|
|
for dep in `cat "${POCO_BASE}/${comp}/samples/dependencies"` ;
|
|
do
|
|
sdependencies="$sdependencies ${dep}-libexec"
|
|
done
|
|
fi
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
|
|
${comp}-samples: ${comp}-libexec $sdependencies
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp}/samples
|
|
ENDOFSCRIPT
|
|
fi
|
|
done
|
|
|
|
|
|
#
|
|
# Create Visual Studio 7.1 buils script
|
|
#
|
|
cat >${target}/build_vs71.cmd <<'ENDOFSCRIPT'
|
|
@echo off
|
|
|
|
rem
|
|
rem build_vs71.cmd
|
|
rem
|
|
rem command-line build script for VS 7.1 [generated by mkrelease]
|
|
rem
|
|
|
|
rem Change OPENSSL_DIR to match your setup
|
|
set OPENSSL_DIR=c:\OpenSSL
|
|
set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
|
|
set OPENSSL_LIB=%OPENSSL_DIR%\lib\VC
|
|
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
|
|
set LIB=%LIB%;%OPENSSL_LIB%
|
|
|
|
set POCOBASE=%CD%
|
|
set PATH=%POCOBASE%\bin;%PATH%
|
|
|
|
cd CppUnit
|
|
devenv /useenv /rebuild debug_shared CppUnit_vs71.sln
|
|
devenv /useenv /rebuild release_shared CppUnit_vs71.sln
|
|
cd %POCOBASE%
|
|
ENDOFSCRIPT
|
|
|
|
for comp in $comps ;
|
|
do
|
|
cat >>${target}/build_vs71.cmd <<ENDOFSCRIPT
|
|
|
|
cd ${comp}
|
|
devenv /useenv /rebuild debug_shared `basename ${comp}_vs71.sln`
|
|
devenv /useenv /rebuild release_shared `basename ${comp}_vs71.sln`
|
|
cd %POCOBASE%
|
|
ENDOFSCRIPT
|
|
done
|
|
|
|
for comp in $comps ;
|
|
do
|
|
if [ -d "${POCO_BASE}/${comp}/samples" ] ; then
|
|
cat >>${target}/build_vs71.cmd <<ENDOFSCRIPT
|
|
|
|
cd ${comp}/samples
|
|
devenv /useenv /rebuild debug_shared samples_vs71.sln
|
|
devenv /useenv /rebuild release_shared samples_vs71.sln
|
|
cd %POCOBASE%
|
|
ENDOFSCRIPT
|
|
fi
|
|
done
|
|
|
|
|
|
#
|
|
# Create Visual Studio 8 buils script
|
|
#
|
|
cat >${target}/build_vs80.cmd <<'ENDOFSCRIPT'
|
|
@echo off
|
|
|
|
rem
|
|
rem build_vs80.cmd
|
|
rem
|
|
rem command-line build script for VS 8 [generated by mkrelease]
|
|
rem
|
|
|
|
rem Change OPENSSL_DIR to match your setup
|
|
set OPENSSL_DIR=c:\OpenSSL
|
|
set OPENSSL_INCLUDE=%OPENSSL_DIR%\include
|
|
set OPENSSL_LIB=%OPENSSL_DIR%\lib\VC
|
|
set INCLUDE=%INCLUDE%;%OPENSSL_INCLUDE%
|
|
set LIB=%LIB%;%OPENSSL_LIB%
|
|
|
|
set POCOBASE=%CD%
|
|
set PATH=%POCOBASE%\bin;%PATH%
|
|
|
|
cd CppUnit
|
|
devenv /useenv /rebuild debug_shared CppUnit_vs80.sln
|
|
devenv /useenv /rebuild release_shared CppUnit_vs80.sln
|
|
cd %POCOBASE%
|
|
ENDOFSCRIPT
|
|
|
|
for comp in $comps ;
|
|
do
|
|
cat >>${target}/build_vs80.cmd <<ENDOFSCRIPT
|
|
|
|
cd ${comp}
|
|
devenv /useenv /rebuild debug_shared `basename ${comp}_vs80.sln`
|
|
devenv /useenv /rebuild release_shared `basename ${comp}_vs80.sln`
|
|
cd %POCOBASE%
|
|
ENDOFSCRIPT
|
|
done
|
|
|
|
for comp in $comps ;
|
|
do
|
|
if [ -d "${POCO_BASE}/${comp}/samples" ] ; then
|
|
cat >>${target}/build_vs80.cmd <<ENDOFSCRIPT
|
|
|
|
cd ${comp}/samples
|
|
devenv /useenv /rebuild debug_shared samples_vs80.sln
|
|
devenv /useenv /rebuild release_shared samples_vs80.sln
|
|
cd %POCOBASE%
|
|
ENDOFSCRIPT
|
|
fi
|
|
done
|
|
|
|
|
|
#
|
|
# Fix line endings
|
|
#
|
|
if [ -x /usr/bin/unix2dos ] ; then
|
|
/usr/bin/unix2dos ${target}/build_vs71.cmd
|
|
/usr/bin/unix2dos ${target}/build_vs80.cmd
|
|
fi
|
|
|
|
|
|
#
|
|
# Create .tar and .zip archives
|
|
#
|
|
if [ "$output" = "" ] ; then
|
|
cd releases
|
|
find ${target}/ -print | sed "s:^${target}/*::" >${target}/MANIFEST
|
|
|
|
tar cf poco-${version}.tar poco-${version}
|
|
gzip poco-${version}.tar
|
|
|
|
tar cf poco-${version}.tar poco-${version}
|
|
bzip2 poco-${version}.tar
|
|
|
|
if [ -x /usr/bin/zip ] ; then
|
|
/usr/bin/zip -r -q poco-${version}.zip poco-${version}
|
|
fi
|
|
fi
|
|
|
|
exit 0
|