1262973SbaptCC ?= gcc 2262973SbaptDESTDIR ?= /usr/local 3262973SbaptLD ?= gcc 4262973SbaptC_COMMON_FLAGS ?= -fPIC -Wall -W -Wno-unused-parameter -Wno-pointer-sign -I./include -I./uthash -I./src 5262973SbaptMAJOR_VERSION = 0 6262973SbaptMINOR_VERSION = 2 7268896SbaptPATCH_VERSION = 9 8262973SbaptVERSION = "$(MAJOR_VERSION).$(MINOR_VERSION).$(PATCH_VERSION)" 9262973SbaptSONAME = libucl.so 10262973SbaptSONAME_FULL = $(SONAME).$(MAJOR_VERSION) 11262973SbaptOBJDIR ?= .obj 12262973SbaptTESTDIR ?= tests 13262973SbaptSRCDIR ?= src 14262973SbaptINCLUDEDIR ?= include 15262973SbaptMKDIR ?= mkdir 16262973SbaptINSTALL ?= install 17262973SbaptRM ?= rm 18262973SbaptRMDIR ?= rmdir 19262973SbaptLN ?= ln 20262973SbaptLD_SHARED_FLAGS ?= -Wl,-soname,$(SONAME) -shared -lm 21262973SbaptLD_UCL_FLAGS ?= -L$(OBJDIR) -Wl,-rpath,$(OBJDIR) -lucl 22262973SbaptLD_ADD ?= -lrt 23262973SbaptCOPT_FLAGS ?= -O2 24268896SbaptHDEPS = $(SRCDIR)/ucl_hash.h \ 25268896Sbapt $(SRCDIR)/ucl_chartable.h \ 26268896Sbapt $(SRCDIR)/ucl_internal.h \ 27268896Sbapt $(INCLUDEDIR)/ucl.h \ 28268896Sbapt $(SRCDIR)/xxhash.h 29268896SbaptOBJECTS = $(OBJDIR)/ucl_hash.o \ 30268896Sbapt $(OBJDIR)/ucl_util.o \ 31268896Sbapt $(OBJDIR)/ucl_parser.o \ 32268896Sbapt $(OBJDIR)/ucl_emitter.o \ 33268896Sbapt $(OBJDIR)/ucl_schema.o \ 34268896Sbapt $(OBJDIR)/xxhash.o 35262973Sbapt 36262973Sbaptall: $(OBJDIR) $(OBJDIR)/$(SONAME) 37262973Sbapt 38262973Sbapt$(OBJDIR)/$(SONAME): $(OBJDIR)/$(SONAME_FULL) 39262973Sbapt $(LN) -sf $(SONAME_FULL) $(OBJDIR)/$(SONAME) 40262973Sbapt 41262973Sbapt$(OBJDIR)/$(SONAME_FULL): $(OBJECTS) 42262973Sbapt $(CC) -o $(OBJDIR)/$(SONAME_FULL) $(OBJECTS) $(LD_SHARED_FLAGS) $(LDFLAGS) $(SSL_LIBS) $(FETCH_LIBS) 43262973Sbapt 44262973Sbapt$(OBJDIR): 45262973Sbapt @$(MKDIR) -p $(OBJDIR) 46262973Sbapt 47262973Sbapt# Compile rules 48262973Sbapt$(OBJDIR)/ucl_util.o: $(SRCDIR)/ucl_util.c $(HDEPS) 49262973Sbapt $(CC) -o $(OBJDIR)/ucl_util.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_util.c 50262973Sbapt$(OBJDIR)/ucl_parser.o: $(SRCDIR)/ucl_parser.c $(HDEPS) 51262973Sbapt $(CC) -o $(OBJDIR)/ucl_parser.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_parser.c 52262973Sbapt$(OBJDIR)/ucl_emitter.o: $(SRCDIR)/ucl_emitter.c $(HDEPS) 53262973Sbapt $(CC) -o $(OBJDIR)/ucl_emitter.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_emitter.c 54262973Sbapt$(OBJDIR)/ucl_hash.o: $(SRCDIR)/ucl_hash.c $(HDEPS) 55262973Sbapt $(CC) -o $(OBJDIR)/ucl_hash.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_hash.c 56268896Sbapt$(OBJDIR)/ucl_schema.o: $(SRCDIR)/ucl_schema.c $(HDEPS) 57268896Sbapt $(CC) -o $(OBJDIR)/ucl_schema.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/ucl_schema.c 58262973Sbapt$(OBJDIR)/xxhash.o: $(SRCDIR)/xxhash.c $(HDEPS) 59262973Sbapt $(CC) -o $(OBJDIR)/xxhash.o $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) -c $(SRCDIR)/xxhash.c 60262973Sbapt 61262973Sbaptclean: 62268896Sbapt $(RM) $(OBJDIR)/*.o $(OBJDIR)/$(SONAME_FULL) $(OBJDIR)/$(SONAME) $(OBJDIR)/chargen $(OBJDIR)/test_basic $(OBJDIR)/test_speed $(OBJDIR)/objdump $(OBJDIR)/test_generate $(OBJDIR)/test_schema || true 63262973Sbapt $(RMDIR) $(OBJDIR) 64262973Sbapt 65262973Sbapt# Utils 66262973Sbapt 67262973Sbaptchargen: utils/chargen.c $(OBJDIR)/$(SONAME) 68262973Sbapt $(CC) -o $(OBJDIR)/chargen $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) utils/chargen.c 69262973Sbaptobjdump: utils/objdump.c $(OBJDIR)/$(SONAME) 70262973Sbapt $(CC) -o $(OBJDIR)/objdump $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) utils/objdump.c $(LD_UCL_FLAGS) 71262973Sbapt 72262973Sbapt# Tests 73262973Sbapt 74268896Sbapttest: $(OBJDIR) $(OBJDIR)/$(SONAME) $(OBJDIR)/test_basic $(OBJDIR)/test_speed $(OBJDIR)/test_generate $(OBJDIR)/test_schema 75262973Sbapt 76262973Sbaptrun-test: test 77268896Sbapt TEST_DIR=$(TESTDIR) $(TESTDIR)/run_tests.sh $(OBJDIR)/test_basic $(OBJDIR)/test_speed $(OBJDIR)/test_generate $(OBJDIR)/test_schema 78262973Sbapt 79262973Sbapt$(OBJDIR)/test_basic: $(TESTDIR)/test_basic.c $(OBJDIR)/$(SONAME) 80262973Sbapt $(CC) -o $(OBJDIR)/test_basic $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_basic.c $(LD_UCL_FLAGS) 81268896Sbapt$(OBJDIR)/test_schema: $(TESTDIR)/test_schema.c $(OBJDIR)/$(SONAME) 82268896Sbapt $(CC) -o $(OBJDIR)/test_schema $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_schema.c $(LD_UCL_FLAGS) 83262973Sbapt$(OBJDIR)/test_speed: $(TESTDIR)/test_speed.c $(OBJDIR)/$(SONAME) 84262973Sbapt $(CC) -o $(OBJDIR)/test_speed $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_speed.c $(LD_UCL_FLAGS) $(LD_ADD) 85262973Sbapt$(OBJDIR)/test_generate: $(TESTDIR)/test_generate.c $(OBJDIR)/$(SONAME) 86262973Sbapt $(CC) -o $(OBJDIR)/test_generate $(CPPFLAGS) $(COPT_FLAGS) $(CFLAGS) $(C_COMMON_FLAGS) $(SSL_CFLAGS) $(FETCH_FLAGS) $(LDFLAGS) $(TESTDIR)/test_generate.c $(LD_UCL_FLAGS) $(LD_ADD) 87262973Sbapt 88262973Sbaptinstall: $(OBJDIR)/$(SONAME) 89262973Sbapt $(INSTALL) -m0755 $(SONAME) $(DESTDIR)/lib/$(SONAME) 90262973Sbapt $(INSTALL) -m0644 include/ucl.h $(DESTDIR)/include/ucl.h 91262973Sbapt 92262973Sbapt.PHONY: clean $(OBJDIR) 93