#! /bin/sh unalias cd rm mkdir mv 2> /dev/null CPPEXT=".cc" export CPPEXT cd /tmp rm -rf prototype mkdir prototype cd prototype mkdir test cd test makeproto mkdir test mkdir libtest # Of course, you should normally use an editor for this one: mv Makedefs.h Makedefs.h.tmp sed s%'^[# ]*LIBFLAGS+=.*$%LIBFLAGS+=-L$(BASEDIR)/lib%' Makedefs.h.tmp > Makedefs.h rm Makedefs.h.tmp cd test makeproto main # Another "editor" session: mv Makefile Makefile.tmp sed -e 's%^[# ]*SHAREDLIBS=$%SHAREDLIBS=-ltest%' -e 's%^[# ]*INCLUDEFLAGS=$%INCLUDEFLAGS=-I/tmp -I.%' Makefile.tmp > Makefile rm Makefile.tmp echo 'extern void subtest(void);' > test.cc echo 'int main(void) { subtest(); return 0; }' >> test.cc echo 'extern void test(void);' > test.h mkdir s1 cd s1 makeproto sub mkdir s2 cd s2 makeproto sub echo '#include "test.h"' > test.cc echo 'void subtest(void) { test(); }' >> test.cc cd ../../../libtest makeproto lib echo '#define _G_CLOG_CONFLICT 1' > test.cc echo '#include ' >> test.cc echo 'void test(void) { std::cerr << "Test successful!" << std::endl; }' >> test.cc cd ../test $MAKE LD_LIBRARY_PATH=../lib ./test cd /tmp rm -rf prototype