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
%.hh : %.yy
$(BISON) -o $(subst .hh,.cc,$@) $<
%.cc : %.yy
$(BISON) -o $@ $<
%.cc : %.ll
$(FLEX) -o $@ $<
FLEX=flex
BISON=bison
#YACC=bison
#LIBS
DEBUG=-g
OPT=-O4
DEFS=-DYYTEXT_POINTER=1
WARN=-W -Wall -Wextra
TOONOISEY=-ansi
CFLAGS := $(DEFS) $(OPT) $(DEBUG) $(WARN) -pipe
CXXFLAGS := $(CFLAGS)
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)
#just for a sample
LIBINC=-L/opt/local/lib -lm
# Core objects
# yacc parsers
## SPARQLfed
## TurtleS
# Libraries
BISONOBJ = $(subst .yy,.o,$(wildcard *.yy))
FLEXOBJ= $(subst .ll,.o,$(wildcard *.ll))
LIBOBJ = $(BISONOBJ) $(FLEXOBJ) $(subst .cc,.o,$(wildcard *.cc))
LIBSW = libSWObjects.a
LIBS=$(LIBSW)
$(LIBSW): $(LIBOBJ)
$(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
SAMPLES=sample_RuleMap1 Vsample_RuleMap1
sample_RuleMap1: sample_RuleMap1.o $(LIBS)
$(LD) $(LDFLAGS) -o $@ $^
$(TEST_SEQ): sample_RuleMap1 query_HealthCare1.rq ruleMap_HealthCare1.rq
Vsample_RuleMap1: $(TESTSEQ)
valgrind --leak-check=yes --xml=no $^
# Tests
# test: includes all samples
# valgrind: valgrinds all samples
test: $(TEST_SEQ)
$^
valgrind: Vsample_RuleMap1
# Distributions
dist: $(LIBS)
$(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 *.d.bak \
$(BISON_BOOTSTRAP) \
$(subst .ll,.cc,$(wildcard *.ll)) \
$(subst .yy,.cc,$(wildcard *.yy)) \
$(subst .yy,.hh,$(wildcard *.yy)) \
$(LIBS) $(SAMPLES)
.PHONY: test dist all
all: depend test dist
depend: Makefile $(subst .o,.d,$(LIBOBJ))
include $(wildcard $(subst .o,.d,$(LIBOBJ)))