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