Automatically determine if pointers are 4 or 8 bytes in size during the

compilation process.  Ticket #190. (CVS 788)

FossilOrigin-Name: dd5396a73a782b6abe9da3de43a5ee11e0dddbb2
This commit is contained in:
drh 2002-11-20 11:55:18 +00:00
parent 7cdbd32c8e
commit 58f391b36f
5 changed files with 54 additions and 15 deletions

View File

@ -117,6 +117,7 @@ TESTSRC = \
HDR = \
sqlite.h \
$(TOP)/src/btree.h \
config.h \
$(TOP)/src/hash.h \
opcodes.h \
$(TOP)/src/os.h \
@ -206,6 +207,21 @@ parse.c: $(TOP)/src/parse.y lemon
cp $(TOP)/src/parse.y .
./lemon parse.y
# The config.h file will contain a single #define that tells us how
# many bytes are in a pointer. This only works if a pointer is the
# same size on the host as it is on the target. If you are cross-compiling
# to a target with a different pointer size, you'll need to manually
# configure the config.h file.
#
config.h:
echo '#include <stdio.h>' >temp.c
echo 'int main(){printf(' >>temp.c
echo '"#define SQLITE_PTR_SZ %d\n",sizeof(char*));' >>temp.c
echo 'exit(0);}' >>temp.c
$(BCC) -o temp temp.c
./temp >config.h
rm -f temp.c temp
sqlite.h: $(TOP)/src/sqlite.h.in
sed -e s/--VERS--/`cat ${TOP}/VERSION`/ \
-e s/--ENCODING--/$(ENCODING)/ \

26
main.mk
View File

@ -54,9 +54,10 @@ TCCX = $(TCC) $(OPTS) $(THREADSAFE) $(USLEEP) -I. -I$(TOP)/src
# Object files for the SQLite library.
#
LIBOBJ = btree.o build.o delete.o expr.o func.o hash.o insert.o main.o \
opcodes.o os.o pager.o parse.o printf.o random.o select.o table.o \
tokenize.o trigger.o update.o util.o vdbe.o where.o tclsqlite.o
LIBOBJ = btree.o build.o delete.o expr.o func.o hash.o insert.o \
main.o opcodes.o os.o pager.o parse.o printf.o random.o \
select.o table.o tokenize.o trigger.o update.o util.o \
vdbe.o where.o tclsqlite.o
# All of the source code files.
#
@ -108,6 +109,7 @@ TESTSRC = \
HDR = \
sqlite.h \
$(TOP)/src/btree.h \
config.h \
$(TOP)/src/hash.h \
opcodes.h \
$(TOP)/src/os.h \
@ -118,7 +120,7 @@ HDR = \
# This is the default Makefile target. The objects listed here
# are what get build when you type just "make" with no arguments.
#
all: sqlite.h libsqlite.a sqlite$(EXE)
all: sqlite.h config.h libsqlite.a sqlite$(EXE)
# Generate the file "last_change" which contains the date of change
# of the most recently modified source code file
@ -194,7 +196,23 @@ parse.c: $(TOP)/src/parse.y lemon
cp $(TOP)/src/parse.y .
./lemon parse.y
# The config.h file will contain a single #define that tells us how
# many bytes are in a pointer. This only works if a pointer is the
# same size on the host as it is on the target. If you are cross-compiling
# to a target with a different pointer size, you'll need to manually
# configure the config.h file.
#
config.h:
echo '#include <stdio.h>' >temp.c
echo 'int main(){printf(' >>temp.c
echo '"#define SQLITE_PTR_SZ %d\n",sizeof(char*));' >>temp.c
echo 'exit(0);}' >>temp.c
$(BCC) -o temp temp.c
./temp >config.h
rm -f temp.c temp
sqlite.h: $(TOP)/src/sqlite.h.in
$(BCC) -o temp temp.c
sed -e s/--VERS--/`cat ${TOP}/VERSION`/ \
-e s/--ENCODING--/$(ENCODING)/ \
$(TOP)/src/sqlite.h.in >sqlite.h

View File

@ -1,6 +1,6 @@
C Get\sthe\snew\slarge\sfile\scode\sworking\swith\sthe\sBorland\scompiler.\s\sTicket\s#195.\s(CVS\s787)
D 2002-11-20T11:08:00
F Makefile.in d6c9a85c2a5e696843201d090dcf8bf2f8716f2a
C Automatically\sdetermine\sif\spointers\sare\s4\sor\s8\sbytes\sin\ssize\sduring\sthe\ncompilation\sprocess.\s\sTicket\s#190.\s(CVS\s788)
D 2002-11-20T11:55:19
F Makefile.in 868c17a1ae1c07603d491274cc8f86c04acf2a1e
F Makefile.linux-gcc b86a99c493a5bfb402d1d9178dcdc4bd4b32f906
F README f1de682fbbd94899d50aca13d387d1b3fd3be2dd
F VERSION 3cd17ced6590df1bb65cb7e075ab529b481517f0
@ -14,7 +14,7 @@ F doc/report1.txt a031aaf37b185e4fa540223cb516d3bccec7eeac
F install-sh 9d4de14ab9fb0facae2f48780b874848cbf2f895
F libtool c56e618713c9510a103bda6b95f3ea3900dcacd6
F ltmain.sh e9ed72eb1d690f447c13945eaf69e28af531eda1
F main.mk d7a9dfc003ab1eeb4fdb46dfcee8af0ab0e38a99
F main.mk e0f1f0b2fe39593b5d1c41e467d409210656d3be
F publish.sh e5b83867d14708ed58cec8cba0a4f201e969474d
F spec.template 238f7db425a78dc1bb7682e56e3834c7270a3f5e
F sqlite.1 83f4a9d37bdf2b7ef079a82d54eaf2e3509ee6ea
@ -41,7 +41,7 @@ F src/select.c ce82596a2eaaf418edba45b2426f41065e49578b
F src/shell.c 53185af128613a2bac79d50128f4c17794f0f992
F src/shell.tcl 27ecbd63dd88396ad16d81ab44f73e6c0ea9d20e
F src/sqlite.h.in 98b1574b2362abe02c4a4c73b9dbf99bcd713ab3
F src/sqliteInt.h a001c52dfb10ec38f18d6b9ed7dd8b3f42ca8c72
F src/sqliteInt.h 74198ccddb3443514f0218de1f5a6668c3dbbe59
F src/table.c eed2098c9b577aa17f8abe89313a9c4413f57d63
F src/tclsqlite.c 9f2c00a92338c51171ded8943bd42d77f7e69e64
F src/test1.c a46e9f61915b32787c5d5a05a4b92e4dacc437d9
@ -149,7 +149,7 @@ F www/speed.tcl a20a792738475b68756ea7a19321600f23d1d803
F www/sqlite.tcl ae3dcfb077e53833b59d4fcc94d8a12c50a44098
F www/tclsqlite.tcl 1db15abeb446aad0caf0b95b8b9579720e4ea331
F www/vdbe.tcl 2013852c27a02a091d39a766bc87cff329f21218
P dc5d9c129c566bf57d108b824ba486cfe070dda6
R a7df48d9796716d510521dcad732255a
P da4a79e2891aa81e2e6d96689f99b3924f940dd5
R e6e632d6bef956a28043c04d8612ec4c
U drh
Z 28922f3b0a8eee5e8c4c877b1de2de34
Z 48fdd2120a0a70b5abec7fb92ba361ca

View File

@ -1 +1 @@
da4a79e2891aa81e2e6d96689f99b3924f940dd5
dd5396a73a782b6abe9da3de43a5ee11e0dddbb2

View File

@ -11,8 +11,9 @@
*************************************************************************
** Internal interface definitions for SQLite.
**
** @(#) $Id: sqliteInt.h,v 1.148 2002/10/27 19:35:35 drh Exp $
** @(#) $Id: sqliteInt.h,v 1.149 2002/11/20 11:55:19 drh Exp $
*/
#include "config.h"
#include "sqlite.h"
#include "hash.h"
#include "vdbe.h"
@ -73,7 +74,11 @@
# define UINT8_TYPE unsigned char
#endif
#ifndef INTPTR_TYPE
# define INTPTR_TYPE int
# if SQLITE_PTR_SZ==4
# define INTPTR_TYPE int
# else
# define INTPTR_TYPE long long
# endif
#endif
typedef UINT32_TYPE u32; /* 4-byte unsigned integer */
typedef UINT16_TYPE u16; /* 2-byte unsigned integer */