I had problems compiling the 3.0.8 version of sqlite on my Solaris box. The version of "awk" on Solaris does not support the gsub function which makes the generation of opcodes.c and opcodes.h fail. The use of gsub is actually quite simple and I created a little patch that using sed in the Makefile instead.

I've attached the patch to this email in case you would like to include it in future releases.

Cheers,
Chris.
diff -r --unified orig/sqlite/Makefile.in sqlite/Makefile.in
Index: sqlite/Makefile.in
--- orig/sqlite/Makefile.in     2004-10-06 11:03:05.000000000 -0400
+++ sqlite/Makefile.in  2005-02-11 10:40:48.000000000 -0500
@@ -290,7 +290,7 @@
        sort -n +2 opcodes.h | awk -f $(TOP)/mkopcodec.awk >opcodes.c
 
 opcodes.h:     parse.h $(TOP)/src/vdbe.c $(TOP)/mkopcodeh.awk
-       cat parse.h $(TOP)/src/vdbe.c | awk -f $(TOP)/mkopcodeh.awk >opcodes.h
+       cat parse.h $(TOP)/src/vdbe.c | sed -e '/^case OP_/s/://g' -e 's/
//g' | awk -f $(TOP)/mkopcodeh.awk >opcodes.h
 
 os_mac.lo:     $(TOP)/src/os_mac.c $(HDR)
        $(LTCOMPILE) $(THREADSAFE) -c $(TOP)/src/os_mac.c
diff -r --unified orig/sqlite/mkopcodec.awk sqlite/mkopcodec.awk
Index: sqlite/mkopcodec.awk
--- orig/sqlite/mkopcodec.awk   2004-10-06 11:15:20.000000000 -0400
+++ sqlite/mkopcodec.awk        2005-02-11 10:39:26.000000000 -0500
@@ -14,8 +14,7 @@
   print "const char *const sqlite3OpcodeNames[] = { \"?\","
 }
 /^#define OP_/ {
-  sub("OP_","",$2)
-  print "  \"" $2 "\","
+  print "  \"" substr($2, 12) "\","
 }
 END {
   print "};"
diff -r --unified orig/sqlite/mkopcodeh.awk sqlite/mkopcodeh.awk
Index: sqlite/mkopcodeh.awk
--- orig/sqlite/mkopcodeh.awk   2004-10-10 12:00:23.000000000 -0400
+++ sqlite/mkopcodeh.awk        2005-02-11 10:39:54.000000000 -0500
@@ -21,8 +21,6 @@
 # Scan for "case OP_aaaa:" lines in the vdbe.c file
 /^case OP_/ {
   name = $2
-  gsub(/:/,"",name)
-  gsub("\r","",name)
   op[name] = -1
   for(i=3; i<NF-2; i++){
     if($i=="same" && $(i+1)=="as"){

Reply via email to