rendered paste body# $Id: Makefile,v 1.26 2008/08/18 15:08:39 eric Exp $
# SWObjects build rules -- see http://www.w3.org/2008/04/SPARQLfed/
# recipies:
# normal build:
# make SPARQLfed
# force the use of the tracing facilities (and redirect to stdout):
# make -W sample_RuleMap1.cc test
# have valgrind start a debugger (works as M-x gdb invocation command):
# valgrind --db-attach=yes --leak-check=yes sample_RuleMap1 query_HealthCare1.rq ruleMap_HealthCare1.rq
# same, if you aren't working in gdb:
# make valgrind
# debugging in emacs:
# gdb --annotate=3 sample_RuleMap1 (set args query_HealthCare1.rq ruleMap_HealthCare1.rq)
# BUGS:
# .hh dependency probs -- use .deps?
%.d : %.ll
touch $@
makedepend -f $@ $^ $(DEFS) $(INC)
%.d : %.yy
touch $@
makedepend -f $@ $^ $(DEFS) $(INC)
%.d : %.cc
touch $@
makedepend -f $@ $^ $(DEFS) $(INC)
%.d : %.hh
touch $@
makedepend -f $@ $^ $(DEFS) $(INC)
#VERY hackish
%.cc %.hh : %.yy
$(YACC) -o $@ -b $(subst .yy,,$<) $<
#%.cc : %.yy
# $(YACC) -o $@ -o $(subst .hh,.cc,$@) $<
%.cc : %.ll
$(FLEX) -o $@ $<
FLEX=flex
YACC=bison
#LIBS
DEBUG=-g
#OPT=-O4
DEFS=-DYYTEXT_POINTER=1
WARN=-W -Wall -Wextra
TOONOISEY=-ansi
#for macports
CFLAGS += $(DEFS) $(OPT) $(DEBUG) $(WARN) $(INCLUDES) -pipe
CXXFLAGS += $(CFLAGS)
### absolutely neccessry for c++ linking ###
LD = $(CXX)
LDFLAGS += $(LIBINC)
VER=0.1
#some progressive macports
#CC=llvm-gcc
#CXX=llvm-g++
#LLVMCFLAGS = ` llvm-config --cflags` -O4
#LLVMCXXFLAGS = ` llvm-config --cxxflags` -O4
#LLVMLDFLAGS = ` llvm-config --ldflags --libs `
#LLVMLIBS= ` llvm-config --libs`
# ... you get the idea...
CFLAGS += $(LLVMCFLAGS)
INCLUDES+=-I${PWD} -I/opt/include
LIBINC+= -L${PWD} -L/opt/local/lib -lm
### dirt simple generic static module ###
BISONOBJ = $(subst .yy,.o,$(wildcard *.yy))
FLEXOBJ= $(subst .ll,.o,$(wildcard *.ll))
OBJLIST = $(subst .cc,.o,$(wildcard *.cc))
LIBNAME=libSWObjects
LIB=$(LIBNAME).a
$(LIB): $(BISONOBJ) $(FLEXOBJ) $(OBJLIST)
$(AR) rcvs $@ $^
# Sample apps
# sample_TopicN - sample app number N for a given topic.
# Vsample_TopicN - valgrind test of the this sample
## RuleMap1 - convert a SPARQL query on an interface graph to one that
## works on a privage graph
tests/sample_RuleMap1: $(LIB) tests/sample_RuleMap1.o
$(LD) $(LDFLAGS) $(LIBINC) -o $@ $^
SAMPLES= tests/sample_RuleMap1 #tests/Vsample_RuleMap1
TEST_SEQ= tests/sample_RuleMap1 query_HealthCare1.rq ruleMap_HealthCare1.rq
tests/Vsample_RuleMap1: $(TEST_SEQ)
valgrind --leak-check=yes --xml=no $^
# Tests
# test: includes all samples
# valgrind: valgrinds all samples
test: $(SAMPLES)
$(TEST_SEQ)
valgrind: $(SAMPLES)
# Distributions
dist: $(LIB)
$(RM) -f SWObjects_$(VER).tar.gz README.html
lynx -dump -source http://www.w3.org/2008/04/SPARQLfed/ | perl -pe 's{href="\.\./\.\./\.\.}{href="http://www.w3.org}g;s{href="\.\./\.\.}{href="http://www.w3.org/2008}g'> README.html
$(ECHO) "Generating the inclusion from the manifest (HEADER.html)"
$(PERL) -ne 'print join("\n", "README.html", m/href="([a-zA-Z]{2}[a-zA-Z0-9._]+)"/g, undef)' HEADER.html | xargs tar czf SWObjects_$(VER).tar.gz --transform s,,SWObjects_$(VER)/,1
$(RM) README.html
# Clean - rm everything we remember to rm.
clean:
$(RM) *.o *.d *.a *.dylib *.so *.la *.d.bak \
$(subst .ll,.cc,$(wildcard *.ll)) \
$(subst .yy,.cc,$(wildcard *.yy)) \
$(subst .yy,.hh,$(wildcard *.yy)) \
$(SAMPLES) $(SAMPLES:=.o)
.PHONY: all test dist
all: $(LIB) test
include $(BISONOBJ:.o=.d) $(FLEXOBJ:.o=.d) $(OBJ:.o=.d)