mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-07-09 02:17:11 +02:00
.github
bin
module
vendor
CPR
CivetWeb
ConcurrentQueue
Fmt
MDBC
MaxmindDB
POCO
ActiveRecord
ApacheConnector
CppParser
CppUnit
Crypto
Data
Encodings
Foundation
JSON
JWT
MongoDB
Net
NetSSL_OpenSSL
NetSSL_Win
PDF
PageCompiler
PocoDoc
ProGen
Redis
SevenZip
Util
XML
Zip
build
ci
cmake
contrib
doc
packaging
patches
release
script
cpproj
mkdoc
mkdocumentation
mkrel
mkrelease
spec
.gitattributes
.gitignore
.gitmodules
CHANGELOG
CMakeLists.txt
CODE_OF_CONDUCT.md
CONTRIBUTING.md
CONTRIBUTORS
LICENSE
Makefile
NEWS
README
README.md
VERSION
build_cmake.cmd
build_cmake.sh
build_vs140.cmd
build_vs150.cmd
build_vs160.cmd
buildwin.cmd
buildwin.ps1
components
configure
cppignore.lnx
cppignore.win
env.bat
env.sh
libversion
PUGIXML
RPMalloc
SAJSON
SimpleIni
Squirrel
TinyDir
UTF8
ZMQ
xxHash
CMakeLists.txt
.gitignore
.gitmodules
CMakeLists.txt
LICENSE
README.md
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
457 lines
11 KiB
Bash
457 lines
11 KiB
Bash
#! /bin/bash
|
|
#
|
|
# 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 internal tools"
|
|
echo " -f specfile - read component list from specfile"
|
|
echo " -o dir - specify output directory"
|
|
echo " -c location - specify line-ending conversion utility (enables conversion)"
|
|
echo " -l - include licensing"
|
|
exit 1
|
|
fi
|
|
|
|
comps="Foundation Encodings XML JSON Util Net"
|
|
internal=0
|
|
specfile=""
|
|
version=""
|
|
output=""
|
|
lineEndConv=""
|
|
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" = "-c" ] ; then
|
|
shift
|
|
lineEndConv=$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
|
|
mkdir -p ${target}/patches
|
|
mkdir -p ${target}/cmake
|
|
|
|
|
|
#
|
|
# readme files, etc.
|
|
#
|
|
echo ${version} "(`date +%Y-%m-%d`)" >${target}/VERSION
|
|
cp ${POCO_BASE}/LICENSE ${target}
|
|
cp ${POCO_BASE}/NEWS ${target}
|
|
cp ${POCO_BASE}/README ${target}
|
|
cp ${POCO_BASE}/CHANGELOG ${target}
|
|
cp ${POCO_BASE}/CONTRIBUTORS ${target}
|
|
cp ${POCO_BASE}/DLLVersion.rc ${target}
|
|
|
|
cp ${POCO_BASE}/doc/Acknowledgements.html ${target}/doc
|
|
cp ${POCO_BASE}/doc/*.page ${target}/doc
|
|
|
|
cp -R ${POCO_BASE}/contrib/* ${target}/contrib
|
|
cp -R ${POCO_BASE}/patches/* ${target}/patches
|
|
|
|
cp -R ${POCO_BASE}/cmake/* ${target}/cmake
|
|
cp ${POCO_BASE}/CMakeLists.txt ${target}
|
|
|
|
|
|
#
|
|
# build system
|
|
#
|
|
mkdir -p ${target}/build/config
|
|
mkdir -p ${target}/build/rules
|
|
mkdir -p ${target}/build/script
|
|
|
|
cp ${POCO_BASE}/build/config/* ${target}/build/config
|
|
cp ${POCO_BASE}/build/rules/* ${target}/build/rules
|
|
cp ${POCO_BASE}/build/script/* ${target}/build/script
|
|
cp ${POCO_BASE}/buildwin.cmd ${target}
|
|
cp ${POCO_BASE}/configure ${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
|
|
|
|
cp ${POCO_BASE}/CppUnit/doc/* ${target}/CppUnit/doc >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/include/CppUnit/* ${target}/CppUnit/include/CppUnit >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/src/* ${target}/CppUnit/src >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/*.sln ${target}/CppUnit >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/*.vcxproj ${target}/CppUnit >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/*.vcxproj.filters ${target}/CppUnit >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/Makefile ${target}/CppUnit >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/*.progen ${target}/CppUnit >/dev/null 2>&1
|
|
cp ${POCO_BASE}/CppUnit/CMakeLists.txt ${target}/CppUnit >/dev/null 2>&1
|
|
|
|
#
|
|
# Copy components
|
|
#
|
|
for comp in $comps ;
|
|
do
|
|
cpproj ${POCO_BASE}/$comp ${target}/$comp
|
|
done
|
|
|
|
|
|
#
|
|
# Create components file
|
|
#
|
|
echo "CppUnit" >${target}/components
|
|
for comp in $comps ;
|
|
do
|
|
echo $comp >>${target}/components
|
|
done
|
|
|
|
|
|
#
|
|
# 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
|
|
sinclude config.build
|
|
|
|
ifndef POCO_BASE
|
|
$(warning WARNING: POCO_BASE is not defined. Assuming current directory.)
|
|
export POCO_BASE=$(shell pwd)
|
|
endif
|
|
ifdef POCO_VERBOSE
|
|
$(info POCO_BASE = $(POCO_BASE))
|
|
endif
|
|
|
|
ifndef POCO_BUILD
|
|
export POCO_BUILD=$(POCO_BASE)
|
|
endif
|
|
ifdef POCO_VERBOSE
|
|
$(info POCO_BUILD = $(POCO_BUILD))
|
|
endif
|
|
|
|
#
|
|
# Determine OS
|
|
#
|
|
POCO_HOST_OSNAME = $(shell uname)
|
|
ifeq ($(findstring CYGWIN,$(POCO_HOST_OSNAME)),CYGWIN)
|
|
POCO_HOST_OSNAME = CYGWIN
|
|
endif
|
|
|
|
ifeq ($(findstring MINGW,$(POCO_HOST_OSNAME)),MINGW)
|
|
POCO_HOST_OSNAME = MinGW
|
|
endif
|
|
ifdef POCO_VERBOSE
|
|
$(info POCO_HOST_OSNAME = $(POCO_HOST_OSNAME))
|
|
endif
|
|
|
|
POCO_HOST_OSARCH ?= $(subst /,-,$(shell uname -m | tr ' ' _))
|
|
ifdef POCO_VERBOSE
|
|
$(info POCO_HOST_OSARCH = $(POCO_HOST_OSARCH))
|
|
endif
|
|
|
|
#
|
|
# If POCO_CONFIG is not set, use the OS name as configuration name
|
|
#
|
|
ifndef POCO_CONFIG
|
|
POCO_CONFIG = $(POCO_HOST_OSNAME)
|
|
endif
|
|
ifdef POCO_VERBOSE
|
|
$(info POCO_CONFIG = $(POCO_CONFIG))
|
|
endif
|
|
|
|
#
|
|
# Include System Specific Settings
|
|
#
|
|
include $(POCO_BASE)/build/config/$(POCO_CONFIG)
|
|
|
|
#
|
|
# Determine operating system
|
|
#
|
|
ifndef POCO_TARGET_OSNAME
|
|
OSNAME := $(POCO_HOST_OSNAME)
|
|
else
|
|
OSNAME := $(POCO_TARGET_OSNAME)
|
|
endif
|
|
ifdef POCO_VERBOSE
|
|
$(info OSNAME = $(OSNAME))
|
|
endif
|
|
|
|
ifndef POCO_TARGET_OSARCH
|
|
OSARCH := $(POCO_HOST_OSARCH)
|
|
else
|
|
OSARCH := $(POCO_TARGET_OSARCH)
|
|
endif
|
|
ifdef POCO_VERBOSE
|
|
$(info OSARCH = $(OSARCH))
|
|
endif
|
|
|
|
.PHONY: poco all libexecs cppunit tests samples cleans clean distclean install
|
|
|
|
# TESTS and SAMPLES are set in config.make
|
|
poco: libexecs $(if $(TESTS),tests) $(if $(SAMPLES),samples)
|
|
all: libexecs tests samples
|
|
|
|
INSTALLDIR = $(DESTDIR)$(POCO_PREFIX)
|
|
ENDOFSCRIPT
|
|
|
|
echo "COMPONENTS = $comps" >>${target}/Makefile
|
|
|
|
cat >>${target}/Makefile <<'ENDOFSCRIPT'
|
|
|
|
cppunit:
|
|
$(MAKE) -C $(POCO_BASE)/CppUnit
|
|
|
|
CppUnit-clean:
|
|
$(MAKE) -C $(POCO_BASE)/CppUnit clean
|
|
|
|
install: libexecs
|
|
mkdir -p $(INSTALLDIR)/include/Poco
|
|
mkdir -p $(INSTALLDIR)/lib
|
|
mkdir -p $(INSTALLDIR)/bin
|
|
for comp in $(filter-out $(foreach f,$(OMIT),$f%),$(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 -f {} $(INSTALLDIR)/bin \; ; \
|
|
fi ; \
|
|
done
|
|
ifeq ($(OSNAME), CYGWIN)
|
|
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "cygPoco*" -type f -exec cp -f {} $(INSTALLDIR)/bin \;
|
|
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "cygPoco*" -type l -exec cp -Rf {} $(INSTALLDIR)/bin \;
|
|
endif
|
|
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "libPoco*" -type f -exec cp -f {} $(INSTALLDIR)/lib \;
|
|
find $(POCO_BUILD)/lib/$(OSNAME)/$(OSARCH) -name "libPoco*" -type l -exec cp -Rf {} $(INSTALLDIR)/lib \;
|
|
|
|
ENDOFSCRIPT
|
|
|
|
libexecs=""
|
|
tests=""
|
|
samples=""
|
|
cleans=""
|
|
for comp in $comps ;
|
|
do
|
|
libexecs="$libexecs ${comp}-libexec"
|
|
cleans="$cleans ${comp}-clean"
|
|
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 "libexecs = $libexecs" >>${target}/Makefile
|
|
echo "tests = $tests" >> ${target}/Makefile
|
|
echo "samples = $samples" >> ${target}/Makefile
|
|
echo "cleans = $cleans" >> ${target}/Makefile
|
|
echo "" >>${target}/Makefile
|
|
echo '.PHONY: $(libexecs)' >>${target}/Makefile
|
|
echo '.PHONY: $(tests)' >>${target}/Makefile
|
|
echo '.PHONY: $(samples)' >>${target}/Makefile
|
|
echo '.PHONY: $(cleans)' >>${target}/Makefile
|
|
echo "" >>${target}/Makefile
|
|
echo 'libexecs: $(filter-out $(foreach f,$(OMIT),$f%),$(libexecs))' >>${target}/Makefile
|
|
echo 'tests: $(filter-out $(foreach f,$(OMIT),$f%),$(tests))' >>${target}/Makefile
|
|
echo 'samples: $(filter-out $(foreach f,$(OMIT),$f%),$(samples))' >>${target}/Makefile
|
|
echo 'cleans: $(filter-out $(foreach f,$(OMIT),$f%),$(cleans))' >>${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
|
|
# get rid of surrounding whitespace (trailing \r on Cygwin)
|
|
read dep <<< "$dep"
|
|
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
|
|
# get rid of surrounding whitespace (trailing \r on Cygwin)
|
|
read dep <<< ${dep}
|
|
sdependencies="$sdependencies ${dep}-libexec"
|
|
done
|
|
fi
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
|
|
${comp}-samples: ${comp}-libexec $sdependencies
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp}/samples
|
|
ENDOFSCRIPT
|
|
fi
|
|
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
|
|
${comp}-clean:
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp} clean
|
|
ENDOFSCRIPT
|
|
|
|
if [ -f "${POCO_BASE}/${comp}/testsuite/Makefile" ] ; then
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp}/testsuite clean
|
|
ENDOFSCRIPT
|
|
fi
|
|
|
|
if [ -f "${POCO_BASE}/${comp}/samples/Makefile" ] ; then
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
\$(MAKE) -C \$(POCO_BASE)/${comp}/samples clean
|
|
ENDOFSCRIPT
|
|
fi
|
|
done
|
|
|
|
cat >>${target}/Makefile <<ENDOFSCRIPT
|
|
|
|
clean: cleans CppUnit-clean
|
|
|
|
distclean:
|
|
rm -rf \$(POCO_BUILD)/lib
|
|
find \$(POCO_BUILD) -name obj -type d -print0 | xargs -0 rm -rf
|
|
find \$(POCO_BUILD) -name .dep -type d -print0 | xargs -0 rm -rf
|
|
find \$(POCO_BUILD) -name bin -type d -print0 | xargs -0 rm -rf
|
|
ENDOFSCRIPT
|
|
|
|
|
|
#
|
|
# Create Visual Studio 14 build script
|
|
#
|
|
cat >${target}/build_vs140.cmd <<'ENDOFSCRIPT'
|
|
@echo off
|
|
buildwin 140 build shared both Win32 samples
|
|
ENDOFSCRIPT
|
|
|
|
|
|
#
|
|
# Create Visual Studio 15 build script
|
|
#
|
|
cat >${target}/build_vs150.cmd <<'ENDOFSCRIPT'
|
|
@echo off
|
|
buildwin 150 build shared both Win32 samples
|
|
ENDOFSCRIPT
|
|
|
|
|
|
#
|
|
# Create Visual Studio 16 build script
|
|
#
|
|
cat >${target}/build_vs160.cmd <<'ENDOFSCRIPT'
|
|
@echo off
|
|
buildwin 160 build shared both Win32 samples
|
|
ENDOFSCRIPT
|
|
|
|
|
|
#
|
|
# Fix line endings
|
|
#
|
|
if [ "$lineEndConv" != "" ] ; then
|
|
$lineEndConv ${target}/build_vs140.cmd
|
|
$lineEndConv ${target}/build_vs150.cmd
|
|
$lineEndConv ${target}/build_vs160.cmd
|
|
$lineEndConv ${target}/Makefile
|
|
$lineEndConv ${target}/components
|
|
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
|