diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2016-12-17 21:28:53 -0800 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2016-12-17 21:28:53 -0800 |
commit | 54df2afaa61c6a03cbb4a33c9b90fa572b6d07b8 (patch) | |
tree | 18147b92b969d25ffbe61935fb63035cac820dd0 /db-4.8.30/dist/s_windows |
Berkeley DB 4.8 with rust build script for linux.
Diffstat (limited to 'db-4.8.30/dist/s_windows')
-rwxr-xr-x | db-4.8.30/dist/s_windows | 259 |
1 files changed, 259 insertions, 0 deletions
diff --git a/db-4.8.30/dist/s_windows b/db-4.8.30/dist/s_windows new file mode 100755 index 0000000..eae21ec --- /dev/null +++ b/db-4.8.30/dist/s_windows @@ -0,0 +1,259 @@ +#!/bin/sh - +# $Id$ +# +# Build Windows include files. + +msgc="/* DO NOT EDIT: automatically built by dist/s_windows. */" +msgw="; DO NOT EDIT: automatically built by dist/s_windows." + +. RELEASE + +s=/tmp/__db_a$$ +t=/tmp/__db_b$$ +rm -f $s $t + +trap 'rm -f $s $t ; exit 1' 1 2 3 13 15 + +# Build the Windows db.h +cat <<ENDOFSEDTEXT > $s +/@inttypes_h_decl@/d +/@stdint_h_decl@/d +s/@stddef_h_decl@/#include <stddef.h>/ +/@unistd_h_decl@/d +/@thread_h_decl@/d +s/@u_int8_decl@/typedef unsigned char u_int8_t;/ +s/@int16_decl@/typedef short int16_t;/ +s/@u_int16_decl@/typedef unsigned short u_int16_t;/ +s/@int32_decl@/typedef int int32_t;/ +s/@u_int32_decl@/typedef unsigned int u_int32_t;/ +s/@int64_decl@/typedef __int64 int64_t;/ +s/@u_int64_decl@/typedef unsigned __int64 u_int64_t;/ +s/@db_seq_decl@/typedef int64_t db_seq_t;/ +s/@db_threadid_t_decl@/typedef u_int32_t db_threadid_t;/ +s/@pid_t_decl@/typedef int pid_t;/ +/@u_char_decl@/{ + i\\ +#ifndef _WINSOCKAPI_ + s/@u_char_decl@/typedef unsigned char u_char;/ +} +s/@u_short_decl@/typedef unsigned short u_short;/ +s/@u_int_decl@/typedef unsigned int u_int;/ +/@u_long_decl@/{ + s/@u_long_decl@/typedef unsigned long u_long;/ + a\\ +#endif +} +/@FILE_t_decl@/d +/@size_t_decl@/d +/@ssize_t_decl@/{ + i\\ +#ifdef _WIN64\\ +typedef int64_t ssize_t;\\ +#else\\ +typedef int32_t ssize_t;\\ +#endif + d +} +/@time_t_decl@/d +/@uintmax_t_decl@/{ + i\\ +#if defined(_MSC_VER) && _MSC_VER < 1300\\ +typedef u_int32_t uintmax_t;\\ +#else\\ +typedef u_int64_t uintmax_t;\\ +#endif + d +} +/@uintptr_t_decl@/{ + i\\ +#ifdef _WIN64\\ +typedef u_int64_t uintptr_t;\\ +#else\\ +typedef u_int32_t uintptr_t;\\ +#endif + d +} +/@off_t_decl@/{ + i\\ +/*\\ +\ * Windows defines off_t to long (i.e., 32 bits). We need to pass 64-bit\\ +\ * file offsets, so we declare our own.\\ +\ */\\ +#define off_t __db_off_t\\ +typedef int64_t off_t; + d +} +/@platform_header@/{ + i\\ +/*\\ +\ * Turn off inappropriate compiler warnings\\ +\ */\\ +#ifdef _MSC_VER\\ +/*\\ +\ * This warning is explicitly disabled in Visual C++ by default.\\ +\ * It is necessary to explicitly enable the /Wall flag to generate this\\ +\ * warning.\\ +\ * Since this is a shared include file it should compile without warnings\\ +\ * at the highest warning level, so third party applications can use\\ +\ * higher warning levels cleanly.\\ +\ *\\ +\ * 4820: 'bytes' bytes padding added after member 'member'\\ +\ * The type and order of elements caused the compiler to\\ +\ * add padding to the end of a struct.\\ +\ */\\ +#pragma warning(push)\\ +#pragma warning(disable: 4820)\\ +#endif /* _MSC_VER */ + d +} +/@platform_footer@/{ + i\\ +/* Restore default compiler warnings */\\ +#ifdef _MSC_VER\\ +#pragma warning(pop)\\ +#endif + d +} +s/@DB_VERSION_MAJOR@/$DB_VERSION_MAJOR/ +s/@DB_VERSION_MINOR@/$DB_VERSION_MINOR/ +s/@DB_VERSION_PATCH@/$DB_VERSION_PATCH/ +s/@DB_VERSION_STRING@/"$DB_VERSION_STRING"/ +s/@DB_VERSION_UNIQUE_NAME@// +s/@DB_CONST@// +s/@DB_PROTO1@/#undef __P/ +s/@DB_PROTO2@/#define __P(protos) protos/ +ENDOFSEDTEXT +# The db.h, db_int.h files are identical between Windows and WinCE. +# This may change in the future, for now have the script copy +# the headers into the build_wince directory. +# WinCE does not support the C++ API, so don't need to copy db_cxx.h + +(echo "$msgc" && + sed -f $s ../dbinc/db.in && + cat ../dbinc_auto/api_flags.in && + cat ../dbinc_auto/ext_prot.in) > $t +test `egrep '@.*@' $t` && { + egrep '@.*@' $t + echo 'Unexpanded autoconf variables found in Windows db.h.' + exit 1 +} +f=../build_windows/db.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) +f=../build_wince/db.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Build the Windows db_cxx.h. +cat <<ENDOFSEDTEXT > $s +s/@cxx_have_stdheaders@/#define HAVE_CXX_STDHEADERS 1/ +ENDOFSEDTEXT +(echo "$msgc" && sed -f $s ../dbinc/db_cxx.in) > $t +test `egrep '@.*@' $t` && { + egrep '@.*@' $t + echo 'Unexpanded autoconf variables found in Windows db_cxx.h.' + exit 1 +} +f=../build_windows/db_cxx.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Build the Windows db_int.h. +cat <<ENDOFSEDTEXT > $s +s/@PATH_SEPARATOR@/\\\\\\\\\/:/ +s/@db_int_def@// +ENDOFSEDTEXT +(echo "$msgc" && sed -f $s ../dbinc/db_int.in) > $t +test `egrep '@.*@' $t` && { + egrep '@.*@' $t + echo 'Unexpanded autoconf variables found in Windows db_int.h.' + exit 1 +} +f=../build_windows/db_int.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) +f=../build_wince/db_int.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Build the Windows and WinCE db_config.h. +# We don't fail, but we complain if the win_config.in file isn't up-to-date. +check_config() +{ + egrep '^#undef' config.hin | awk '{print $2}' | sort > $s + (egrep '#undef' $1 | awk '{print $3}' + egrep '^#define' $1 | awk '{print $2}') | sed '/__STDC__/d' | sort > $t + cmp $s $t > /dev/null || { + echo "config.hin and $1 differ" + echo "<<< config.hin >>> $1" + diff $s $t + } +} +check_config win_config.in +f=../build_windows/db_config.h +(echo "$msgc" && sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" win_config.in) > $t +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) +check_config wince_config.in +f=../build_wince/db_config.h +(echo "$msgc" && sed "s/__EDIT_DB_VERSION__/$DB_VERSION/" wince_config.in) > $t +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Build the Windows libdb.rc and libdb.def. +f=../build_windows/libdb.rc +cat <<ENDOFSEDTEXT > $s +s/%MAJOR%/$DB_VERSION_MAJOR/ +s/%MINOR%/$DB_VERSION_MINOR/ +s/%PATCH%/$DB_VERSION_PATCH/ +ENDOFSEDTEXT +sed -f $s ../build_windows/libdbrc.src > $t +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) +f=../build_windows/libdb.def +(echo $msgw && + echo && + echo EXPORTS; +a=1 +for i in `sed -e '/^$/d' -e '/^#/d' win_exports.in`; do + echo " $i @$a" + a=`expr $a + 1` +done) > $t +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Build the Windows clib_port.h. +cat <<ENDOFSEDTEXT > $s +s/@INT64_FMT@/#define INT64_FMT "%I64d"/ +s/@UINT64_FMT@/#define UINT64_FMT "%I64u"/ +ENDOFSEDTEXT +sed -f $s clib_port.in > $t +test `egrep '@.*@' $t` && { + egrep '@.*@' $t + echo 'Unexpanded autoconf variables found in Windows clib_port.h.' + exit 1 +} +f=../build_windows/clib_port.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) +f=../build_wince/clib_port.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Build the Windows dbstl_common.h. +cat <<ENDOFSEDTEXT > $s +s/@WSTRING_decl@/#define HAVE_WSTRING 1/ +s/@TLS_decl@/#define TLS_DECL_MODIFIER __declspec(thread)/ +s/@TLS_defn@/#define TLS_DEFN_MODIFIER __declspec(thread)/ +ENDOFSEDTEXT +sed -f $s ../stl/dbstl_common.in > $t +f=../build_windows/dbstl_common.h +cmp $t $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp $t $f && chmod 444 $f) + +# Copy in errno.h. +f=../build_wince/errno.h +cmp errno.h $f > /dev/null 2>&1 || + (echo "Building $f" && rm -f $f && cp errno.h $f && chmod 444 $f) + +rm -f $s $t |