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 += -_gcc=-Wno-uninitialized
 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: