mirror of
https://github.com/berkeleydb/libdb.git
synced 2024-11-16 17:16:25 +00:00
264 lines
7.1 KiB
Bash
Executable file
264 lines
7.1 KiB
Bash
Executable file
#!/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 int32_t 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_FAMILY@/$DB_VERSION_FAMILY/
|
|
s/@DB_VERSION_RELEASE@/$DB_VERSION_RELEASE/
|
|
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_FULL_STRING@/"$DB_VERSION_FULL_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 ../src/dbinc/db.in &&
|
|
cat ../src/dbinc_auto/api_flags.in &&
|
|
cat ../src/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)
|
|
f=../build_wince/db.h
|
|
cmp $t $f > /dev/null 2>&1 ||
|
|
(echo "Building $f" && rm -f $f && cp $t $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 ../src/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)
|
|
|
|
# Build the Windows db_int.h.
|
|
cat <<ENDOFSEDTEXT > $s
|
|
s/@DB_STRUCT_ALIGN8@/__declspec(align(8))/
|
|
s/@PATH_SEPARATOR@/\\\\\\\\\/:/
|
|
s/@db_int_def@//
|
|
ENDOFSEDTEXT
|
|
(echo "$msgc" && sed -f $s ../src/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)
|
|
f=../build_wince/db_int.h
|
|
cmp $t $f > /dev/null 2>&1 ||
|
|
(echo "Building $f" && rm -f $f && cp $t $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 -u > $s
|
|
(egrep '#undef' $1 | awk '{print $3}'
|
|
egrep '^#define' $1 | awk '{print $2}') | sed '/__STDC__/d' | sort -u > $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)
|
|
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)
|
|
|
|
# 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)
|
|
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)
|
|
|
|
# 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)
|
|
f=../build_wince/clib_port.h
|
|
cmp $t $f > /dev/null 2>&1 ||
|
|
(echo "Building $f" && rm -f $f && cp $t $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 ../lang/cxx/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)
|
|
|
|
# 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)
|
|
|
|
rm -f $s $t
|