1# 2# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 3# Use is subject to license terms. 4# 5#ident "%Z%%M% %I% %E% SMI" 6# 7 8SQLITE_VERSION = 2.8.15-repcached 9 10LIBRARY = libsqlite.a 11RELOC = $(LIBRARY:%.a=%.o) 12 13VERS = .1 14OBJECTS = \ 15 attach.o \ 16 auth.o \ 17 btree.o \ 18 btree_rb.o \ 19 build.o \ 20 copy.o \ 21 date.o \ 22 delete.o \ 23 encode.o \ 24 expr.o \ 25 func.o \ 26 hash.o \ 27 insert.o \ 28 main.o \ 29 opcodes.o \ 30 os.o \ 31 pager.o \ 32 parse.o \ 33 pragma.o \ 34 printf.o \ 35 random.o \ 36 select.o \ 37 table.o \ 38 tokenize.o \ 39 trigger.o \ 40 update.o \ 41 util.o \ 42 vacuum.o \ 43 vdbe.o \ 44 vdbeaux.o \ 45 where.o 46 47include $(SRC)/lib/Makefile.lib 48 49# The shared object install target directory is usr/lib/smbsrv. 50SMBSRVLIBDIR= $(ROOTLIBDIR)/smbsrv 51SMBSRVLINK= $(SMBSRVLIBDIR)/$(LIBLINKS) 52 53SRCDIR = ../src 54TOOLDIR = ../tool 55$(DYNLIB) := LDLIBS += -lc 56LIBS = $(RELOC) $(LINTLIB) $(DYNLIB) 57 58$(LINTLIB) := SRCS = $(LINTSRC) 59 60SRCS = \ 61 $(SRCDIR)/attach.c \ 62 $(SRCDIR)/auth.c \ 63 $(SRCDIR)/btree.c \ 64 $(SRCDIR)/btree_rb.c \ 65 $(SRCDIR)/build.c \ 66 $(SRCDIR)/copy.c \ 67 $(SRCDIR)/date.c \ 68 $(SRCDIR)/delete.c \ 69 $(SRCDIR)/encode.c \ 70 $(SRCDIR)/expr.c \ 71 $(SRCDIR)/func.c \ 72 $(SRCDIR)/hash.c \ 73 $(SRCDIR)/insert.c \ 74 $(SRCDIR)/main.c \ 75 opcodes.c \ 76 $(SRCDIR)/os.c \ 77 $(SRCDIR)/pager.c \ 78 parse.c \ 79 $(SRCDIR)/pragma.c \ 80 $(SRCDIR)/printf.c \ 81 $(SRCDIR)/random.c \ 82 $(SRCDIR)/select.c \ 83 $(SRCDIR)/table.c \ 84 $(SRCDIR)/tokenize.c \ 85 $(SRCDIR)/update.c \ 86 $(SRCDIR)/util.c \ 87 $(SRCDIR)/vacuum.c \ 88 $(SRCDIR)/vdbe.c \ 89 $(SRCDIR)/vdbeaux.c \ 90 $(SRCDIR)/where.c \ 91 $(SRCDIR)/trigger.c 92 93MYCPPFLAGS = -D_REENTRANT -DTHREADSAFE=1 -DHAVE_USLEEP=1 -I. -I.. -I$(SRCDIR) 94CPPFLAGS += $(MYCPPFLAGS) 95 96MAPFILES = ../mapfile-sqlite 97 98# Header files used by all library source files. 99# 100HDR = \ 101 $(SRCDIR)/btree.h \ 102 $(SRCDIR)/config.h \ 103 $(SRCDIR)/hash.h \ 104 opcodes.h \ 105 $(SRCDIR)/os.h \ 106 parse.h \ 107 ../sqlite.h \ 108 $(SRCDIR)/sqliteInt.h \ 109 $(SRCDIR)/vdbe.h \ 110 $(SRCDIR)/vdbeInt.h 111 112# 113# Sources used for test harness 114# 115TESTSRC = \ 116 $(SRCDIR)/tclsqlite.c \ 117 $(SRCDIR)/btree.c \ 118 $(SRCDIR)/func.c \ 119 $(SRCDIR)/os.c \ 120 $(SRCDIR)/pager.c \ 121 $(SRCDIR)/test1.c \ 122 $(SRCDIR)/test2.c \ 123 $(SRCDIR)/test3.c \ 124 $(SRCDIR)/md5.c 125 126TESTOBJS = $(TESTSRC:$(SRCDIR)/%.c=%.o) 127 128TESTCLEAN = $(TESTOBJS) test.db test.tcl test1.bt test2.db testdb 129 130# 131# Native variants 132# 133NATIVERELOC = $(RELOC:%.o=%-native.o) 134NATIVEPROGS = lemon-build testfixture 135NATIVEOBJS = lemon.o $(OBJS:%.o=%-native.o) 136 137NATIVETARGETS = $(NATIVEPROGS) $(NATIVEOBJS) $(NATIVERELOC) 138 139$(NATIVETARGETS) := CC = $(NATIVECC) 140$(NATIVETARGETS) := LD = $(NATIVELD) 141$(NATIVETARGETS) := CFLAGS = $(NATIVE_CFLAGS) 142$(NATIVETARGETS) := CPPFLAGS = $(MYCPPFLAGS) 143$(NATIVETARGETS) := LDFLAGS = 144$(NATIVETARGETS) := LDLIBS = -lc 145 146$(OBJS) := CFLAGS += $(CTF_FLAGS) 147$(OBJS) := CTFCONVERT_POST = $(CTFCONVERT_O) 148 149TCLBASE = /usr/sfw 150TCLVERS = tcl8.3 151 152testfixture := MYCPPFLAGS += -I$(TCLBASE)/include -DTCLSH -DSQLITE_TEST=1 153# 154# work around compiler issues 155# 156testfixture := CFLAGS += \ 157 -erroff=E_ARRAY_OF_INCOMPLETE \ 158 -erroff=E_ARG_INCOMPATIBLE_WITH_ARG 159 160testfixture := LDLIBS += -R$(TCLBASE)/lib -L$(TCLBASE)/lib -l$(TCLVERS) -lm -ldl 161 162CLEANFILES += \ 163 $(RELOC) \ 164 $(LINTLIB) \ 165 $(NATIVETARGETS) \ 166 $(TESTCLEAN) \ 167 lemon \ 168 lemon.o \ 169 lempar.c \ 170 opcodes.c \ 171 opcodes.h \ 172 parse_tmp.c \ 173 parse_tmp.h \ 174 parse_tmp.out \ 175 parse_tmp.y \ 176 parse.c \ 177 parse.h 178 179ENCODING = ISO8859 180 181LINTSRC= ../llib-lsqlite 182 183 184.PARALLEL: $(OBJS) $(OBJS:%.o=%-native.o) 185.KEEP_STATE: 186 187# This is the default Makefile target. The objects listed here 188# are what get build when you type just "make" with no arguments. 189# 190all: $(LIBS) 191install: all $(ROOTLIBDIR)/$(RELOC) $(ROOTLIBDIR)/$(NATIVERELOC) \ 192 $(ROOTLIBDIR)/llib-lsqlite.ln $(SMBSRVLIBDIR)/$(DYNLIB) 193 194$(ROOTLIBDIR)/$(RELOC) := FILEMODE= 644 195$(ROOTLIBDIR)/$(NATIVERELOC) := FILEMODE= 644 196$(ROOTLIBDIR)/llib-lsqlite.ln := FILEMODE= 644 197$(SMBSRVLIBDIR)/$(DYNLIB) := FILEMODE= 755 198 199$(ROOTLIBDIR)/%: % 200 $(INS.file) 201 202$(SMBSRVLIBDIR): $(ROOTLIBDIR) 203 $(INS.dir) 204 205$(SMBSRVLIBDIR)/%: % $(SMBSRVLIBDIR) 206 $(INS.file) 207 208$(SMBSRVLINK): $(SMBSRVLIBDIR) $(SMBSRVLIBDIR)/$(DYNLIB) 209 $(INS.liblink) 210 211$(OBJS) $(OBJS:%.o=%-native.o): $(HDR) 212 213native: $(NATIVERELOC) 214 215$(RELOC): objs .WAIT $(OBJS) 216 $(LD) -r $(MAPFILES:%=-M%) -o $(RELOC) $(OBJS) 217 $(CTFMERGE) -t -f -L VERSION -o $(RELOC) $(OBJS) 218 219$(NATIVERELOC): objs .WAIT $(OBJS:%.o=%-native.o) 220 $(LD) -r $(MAPFILES:%=-M%) -o $(NATIVERELOC) $(OBJS:%.o=%-native.o) 221 222opcodes.h: $(SRCDIR)/vdbe.c 223 @echo "Generating $@"; \ 224 $(RM) -f $@ ; \ 225 echo '/* Automatically generated file. Do not edit */' > $@ ; \ 226 grep '^case OP_' $(SRCDIR)/vdbe.c | \ 227 sed -e 's/://' | \ 228 awk '{printf "#define %-30s %3d\n", $$2, ++cnt}' >> $@ 229 230opcodes.c: $(SRCDIR)/vdbe.c 231 @echo "Generating $@"; \ 232 $(RM) -f $@ ; \ 233 echo '/* Automatically generated file. Do not edit */' > $@ ; \ 234 echo 'char *sqliteOpcodeNames[] = { "???", ' >> $@ ; \ 235 grep '^case OP_' $(SRCDIR)/vdbe.c | \ 236 sed -e 's/^.*OP_/ "/' -e 's/:.*$$/", /' >> $@ ; \ 237 echo '};' >> $@ 238 239# 240# We use a recursive invocation because otherwise pmake always rebuilds 241# everything, due to multiple expansions of "foo := A += B". 242# 243lemon: FRC 244 $(MAKE) lemon-build 245 246lemon-build: lemon.o $(TOOLDIR)/lempar.c 247 $(LINK.c) -o lemon lemon.o 248 $(RM) lempar.c 249 $(LN) -s $(TOOLDIR)/lempar.c lempar.c 250 $(RM) lemon-build 251 $(CP) lemon lemon-build 252 253testfixture: FRC 254 @if [ -f $(TCLBASE)/include/tcl.h ]; then \ 255 unset SUNPRO_DEPENDENCIES; \ 256 echo $(LINK.c) -o testfixture $(TESTSRC) $(LIBRARY) $(LDLIBS) ;\ 257 exec $(LINK.c) -o testfixture $(TESTSRC) $(LIBRARY) $(LDLIBS) ;\ 258 else \ 259 echo "$(TCLBASE)/include/tcl.h: not found."; \ 260 exit 1; \ 261 fi 262 263parse_tmp.out: $(SRCDIR)/parse.y lemon 264 $(RM) parse_tmp.y 265 $(CP) $(SRCDIR)/parse.y parse_tmp.y 266 ./lemon parse_tmp.y 267 268parse.h: parse_tmp.out 269 $(CP) parse_tmp.h parse.h 270 271parse.c: parse_tmp.out 272 $(CP) parse_tmp.c parse.c 273 274objs/%-native.o: $(SRCDIR)/%.c 275 $(COMPILE.c) -o $@ $< 276 $(POST_PROCESS_O) 277 278objs/%-native.o: %.c 279 $(COMPILE.c) -o $@ $< 280 $(POST_PROCESS_O) 281 282objs/parse-native.o: parse.c 283 $(COMPILE.c) -o $@ parse.c 284 $(POST_PROCESS_O) 285 286objs/%.o: %.c 287 $(COMPILE.c) -o $@ $< 288 $(POST_PROCESS_O) 289 290%.o: $(SRCDIR)/%.c 291 $(COMPILE.c) -o $@ $< 292 $(POST_PROCESS_O) 293 294%.o: $(TOOLDIR)/%.c 295 $(COMPILE.c) -o $@ $< 296 $(POST_PROCESS_O) 297 298include $(SRC)/lib/Makefile.targ 299 300FRC: 301