# Makefile for C++ interface of QDBM #================================================================ # Setting Variables #================================================================ # Generic settings SHELL = @SHELL@ srcdir = @srcdir@ VPATH = @srcdir@ # Packaging PACKAGE = qdbm # Targets MYHEADS = xqdbm.h xadbm.h xdepot.h xcuria.h xvilla.h MYLIBOBJS = xqdbm.o xadbm.o xdepot.o xcuria.o xvilla.o MYLIBS = libxqdbm.a #libxqdbm.so.1.0.0 libxqdbm.so.1 libxqdbm.so MYBINS = xdptest xcrtest xvltest MYDOCS = xspex.html xspex-ja.html xapidoc # Install destinations prefix = @prefix@ exec_prefix = @exec_prefix@ MYHEADDIR = @includedir@ MYLIBDIR = @libdir@ MYBINDIR = @bindir@ MYSHAREDIR = $(prefix)/share/$(PACKAGE)/plus DESTDIR = # Building binaries CXX = g++ RELCXXFLAGS = -O1 -DNDEBUG CPPFLAGS = -I$(srcdir) -I$(srcdir)/.. -I/usr/local/include \ -D_GNU_SOURCE -D__EXTENSIONS__ -D_POSIX_C_SOURCE=200112 -DPIC -D_REENTRANT CXXFLAGS = -Wall -ansi -pedantic -fsigned-char -fexceptions -fPIC $(RELCXXFLAGS) LD = @LD@ LIBS = -lqdbm @LIBS@ LIBLDFLAGS = -L. -L$(srcdir)/.. -L/usr/local/lib $(LIBS) LDFLAGS = -L. -L$(srcdir)/.. -L/usr/local/lib -lxqdbm $(LIBS) LDENV = LD_RUN_PATH=/lib:/usr/lib:$(MYLIBDIR) AR = @AR@ ARFLAGS = rcsv RUNENV = LD_LIBRARY_PATH=.:..:/usr/local/lib #================================================================ # Suffix rules #================================================================ .SUFFIXES : .SUFFIXES : .cc .o .cc.o : $(CXX) $(CPPFLAGS) $(CXXFLAGS) -c $< #================================================================ # Actions #================================================================ targets : @TARGETS@ all : $(MYLIBS) $(MYBINS) @printf '\n' @printf '#================================================================\n' @printf '# Ready to install.\n' @printf '#================================================================\n' static : make LDFLAGS="-static $(LDFLAGS)" all debug : make RELCXXFLAGS="-g" LDFLAGS="-static $(LDFLAGS)" all devel : make RELCXXFLAGS="-g -O2 -pipe" all sync ; sync profile : make RELCXXFLAGS="-pg -g -O2 -Werror -DNDEBUG" LDFLAGS="-static $(LDFLAGS)" all clean : rm -rf $(MYLIBS) $(MYBINS) *.o \ *.exe *.dll.a *.dll *.dylib *.sl a.out TAGS gmon.out leak.log casket *~ install : mkdir -p $(DESTDIR)$(MYHEADDIR) cd $(srcdir) && cp -Rf $(MYHEADS) $(DESTDIR)$(MYHEADDIR) mkdir -p $(DESTDIR)$(MYLIBDIR) cp -Rf $(MYLIBS) $(DESTDIR)$(MYLIBDIR) mkdir -p $(DESTDIR)$(MYBINDIR) cp -Rf $(MYBINS) $(DESTDIR)$(MYBINDIR) mkdir -p $(DESTDIR)$(MYSHAREDIR) cp -Rf $(MYDOCS) $(DESTDIR)$(MYSHAREDIR) @printf '\n' @printf '#================================================================\n' @printf '# Thanks for using QDBM for C++.\n' @printf '#================================================================\n' install-strip : make DESTDIR=$(DESTDIR) install cd $(DESTDIR)$(MYBINDIR) && strip $(MYBINS) uninstall : cd $(DESTDIR)$(MYHEADDIR) && rm -f $(MYHEADS) cd $(DESTDIR)$(MYLIBDIR) && rm -f $(MYLIBS) cd $(DESTDIR)$(MYBINDIR) && rm -f $(MYBINS) rm -rf $(DESTDIR)$(MYSHAREDIR) dist : autoconf make doc make distclean distclean : clean rm -rf Makefile config.cache config.log config.status autom4te.cache TAGS : etags -o $@ *.c *.h check : sync ; sync rm -rf casket* $(RUNENV) ./xdptest write casket 50000 5000 $(RUNENV) ./xdptest read casket $(RUNENV) ./xdptest multi casket 10000 1000 10 $(RUNENV) ./xdptest misc casket rm -rf casket* $(RUNENV) ./xcrtest write casket 50000 5000 10 $(RUNENV) ./xcrtest read casket $(RUNENV) ./xcrtest multi casket 10000 1000 10 10 $(RUNENV) ./xcrtest misc casket rm -rf casket* $(RUNENV) ./xcrtest write -lob casket 500 50 10 $(RUNENV) ./xcrtest read -lob casket $(RUNENV) ./xcrtest multi -lob casket 500 50 10 10 rm -rf casket* $(RUNENV) ./xvltest write casket 50000 $(RUNENV) ./xvltest read casket $(RUNENV) ./xvltest multi casket 10000 10 $(RUNENV) ./xvltest misc casket rm -rf casket* @printf '\n' @printf '#================================================================\n' @printf '# Checking completed.\n' @printf '#================================================================\n' doc : make docclean mkdir -p xapidoc doxygen docclean : rm -rf xapidoc win : make MYLIBS="libxqdbm.dll.a" \ CXXFLAGS="-Wall -ansi -pedantic -fsigned-char -fexceptions -O1 -DNDEBUG" check-win : make check install-win : make MYBINS="`for file in $(MYBINS) ; do echo $$file.exe ; done | tr '\n' ' '`" \ MYLIBS="libxqdbm.dll.a" install cp -Rf xqdbm.dll "`printf '%s' $$SYSTEMROOT | tr '\\\\' '/'`/SYSTEM32" uninstall-win : make MYBINS="`for file in $(MYBINS) ; do echo $$file.exe ; done | tr '\n' ' '`" \ MYLIBS="libxqdbm.dll.a" uninstall rm -f "`printf '%s' $$SYSTEMROOT | tr '\\\\' '/'`/SYSTEM32/xqdbm.dll" mac : make MYLIBS="libxqdbm.a libxqdbm.1.0.0.dylib libxqdbm.1.dylib libxqdbm.dylib" \ CXXFLAGS="-Wall -fsigned-char -fexceptions -fno-common -O2 -DNDEBUG" check-mac : make RUNENV="DYLD_LIBRARY_PATH=.:..:/usr/local/lib" check install-mac : make MYLIBS="libxqdbm.a libxqdbm.1.0.0.dylib libxqdbm.1.dylib libxqdbm.dylib" install uninstall-mac : make MYLIBS="libxqdbm.a libxqdbm.1.0.0.dylib libxqdbm.1.dylib libxqdbm.dylib" uninstall hpux : make MYLIBS="libxqdbm.a libxqdbm.sl" check-hpux : make RUNENV="SHLIB_PATH=.:..:/usr/local/lib" check install-hpux : make MYLIBS="libxqdbm.a libxqdbm.sl" install uninstall-hpux : make MYLIBS="libxqdbm.a libxqdbm.sl" uninstall .PHONY : all clean install check #================================================================ # Building binaries #================================================================ libxqdbm.a : $(MYLIBOBJS) $(AR) $(ARFLAGS) $@ $(MYLIBOBJS) libxqdbm.so.1.0.0 : $(MYLIBOBJS) if $(LD) -V | grep "GNU" > /dev/null ; \ then \ $(LD) -shared -soname libxqdbm.so.1 -o $@ $(MYLIBOBJS) $(LIBLDFLAGS) ; \ else \ $(LD) -G -h libxqdbm.so.1 -o $@ $(MYLIBOBJS) $(LIBLDFLAGS) ; \ fi libxqdbm.so.1 : libxqdbm.so.1.0.0 ln -f -s libxqdbm.so.1.0.0 $@ libxqdbm.so : libxqdbm.so.1.0.0 ln -f -s libxqdbm.so.1.0.0 $@ libxqdbm.dll.a : xqdbm.dll xqdbm.dll : $(MYLIBOBJS) $(CXX) -shared -o $@ \ -Wl,--out-implib=lib$@.a \ -Wl,--export-all-symbols \ -Wl,--enable-auto-import \ -Wl,--add-stdcall-alias \ -Wl,--whole-archive $(MYLIBOBJS) \ -Wl,--no-whole-archive $(LIBLDFLAGS) libxqdbm.1.0.0.dylib : $(MYLIBOBJS) $(CXX) -dynamiclib -o $@ \ -install_name libxqdbm.1.dylib \ -current_version 1.0.0 \ -compatibility_version 1.0 \ $(MYLIBOBJS) $(LIBLDFLAGS) libxqdbm.1.dylib : libxqdbm.1.0.0.dylib ln -f -s libxqdbm.1.0.0.dylib $@ libxqdbm.dylib : libxqdbm.1.0.0.dylib ln -f -s libxqdbm.1.0.0.dylib $@ libxqdbm.sl : $(MYLIBOBJS) $(LD) -b -o $@ $(MYLIBOBJS) $(LIBLDFLAGS) xdptest : xdptest.o $(MYLIBS) $(LDENV) $(CXX) $(CXXFLAGS) -o $@ xdptest.o $(LDFLAGS) xcrtest : xcrtest.o $(MYLIBS) $(LDENV) $(CXX) $(CXXFLAGS) -o $@ xcrtest.o $(LDFLAGS) xvltest : xvltest.o $(MYLIBS) $(LDENV) $(CXX) $(CXXFLAGS) -o $@ xvltest.o $(LDFLAGS) xadbm.o : xqdbm.h xadbm.h xdepot.o xdptest.o : xqdbm.h xadbm.h xdepot.h xcuria.o xcrtest.o : xqdbm.h xadbm.h xcuria.h xvilla.o xvltest.o : xqdbm.h xadbm.h xvilla.h # END OF FILE