1include ../config.mk 2 3CFLAGS+=-g 4OBJ=cdb.o buffer.o cdb_make.o ls.o sdbht.o ht_uu.o sdb.o num.o base64.o match.o 5OBJ+=json.o ns.o lock.o util.o disk.o query.o array.o fmt.o journal.o text.o 6OBJ+=dict.o ht_pp.o ht_up.o ht_pu.o set.o diff.o 7SOBJ=$(subst .o,.o.o,${OBJ}) 8WITHPIC?=1 9BIN=sdb${EXT_EXE} 10 11.PHONY: all static shared clean mrproper install 12 13all: $(BIN) 14 $(MAKE) static 15ifeq ($(WITHPIC),1) 16 $(MAKE) shared 17endif 18 19json.o: json/api.c json/js0n.c json/path.c json/rangstr.c json/indent.c 20 21install: 22 $(MAKE) -C .. install 23 24sdb_version.h: 25 $(MAKE) -C .. src/sdb_version.h 26 27shared: sdb_version.h 28 $(MAKE) libsdb.${SOVER} 29 30static: sdb_version.h 31 $(MAKE) libsdb.a 32 33sdb_objs: sdb_version.h 34 $(MAKE) ${OBJ} 35 36sdb_objs2: sdb_version.h 37 $(MAKE) ${SOBJ} 38 39libsdb.a: sdb_objs 40ifneq ($(SILENT),) 41 @echo AR libsdb.a 42endif 43 rm -f libsdb.a 44 ${AR} q libsdb.a ${OBJ} 45 ${RANLIB} libsdb.a 46 47ifeq ($(CC),tcc) 48libsdb.${SOVER}: 49 @echo TCC doesnt support shared libs on macos 50else 51libsdb.${SOVER}: sdb_objs2 52endif 53ifneq ($(EXT_SO),${SOVER}) 54 ln -fs libsdb.${SOVER} libsdb.${EXT_SO} 55endif 56ifneq ($(SILENT),) 57 @echo LIB libsdb.${SOVER} 58endif 59 $(CC) ${CFLAGS} ${LDFLAGS} $(LDFLAGS_SHARED) -o $@ ${SOBJ} 60 61bin_deps: sdb_version.h 62 $(MAKE) libsdb.a main.o 63 64bin $(BIN): bin_deps 65ifneq ($(SILENT),) 66 @echo BIN ${BIN} 67endif 68 $(CC) ${CFLAGS} ${LDFLAGS} -o ${BIN} main.o ${OBJ} 69 70mrproper clean: 71 rm -rf ${OBJ} ${SOBJ} main.o libsdb.a a.out ${BIN} sdb.dSYM 72 rm -rf *.d *._d json/*.d json/*._d *.sdb *.db *.${EXT_SO} *.${EXT_SO}.* 73 74# rules # 75.c: 76ifneq ($(SILENT),) 77 @echo LD $< 78endif 79 $(CC) $(LDFLAGS) -c $(CFLAGS) -o $@ $< 80 81S=$ 82 83%.o: %.c 84ifneq ($(SILENT),) 85 @echo CC $< 86endif 87 $(CC) -c ${CPPFLAGS} ${CFLAGS} ${CFLAGS_SHARED} -o $@ $< 88 89%.o.o: %.c 90ifneq ($(SILENT),) 91 @echo CC PIC $< 92endif 93 @mv `echo $<|sed -e 's,\.c$S,\.d,g'` $<.tmp 2>/dev/null || true 94 $(CC) -c ${CPPFLAGS} ${CFLAGS} ${CFLAGS_SHARED} -o $@ $< 95 @mv `echo $<|sed -e 's,\.c$S,\.d,g'` `echo $<|sed -e 's,\.c$S,\._d,g'` 2>/dev/null || true 96 @mv $<.tmp `echo $<|sed -e 's,\.c$S,\.d,g'` 2>/dev/null ||true 97 98-include ${OBJ:.o=.d} 99-include ${OBJ:.o=._d} 100