1# Useful directories 2 3THISCODEDIR := . 4GCLDIR := ./gclib 5# Directory where libz.a can be found 6ZDIR := ../zlib 7# Directories to search for header files 8SEARCHDIRS := -I${ZDIR} -I${THISCODEDIR} -I${GCLDIR} 9 10 11SYSTYPE := $(shell uname) 12 13 14MACHTYPE := $(shell uname -m) 15ifeq ($(MACHTYPE), i686) 16 MARCH = -march=i686 17else 18 MARCH = 19endif 20 21# Use the correct compiler (CXX, not CC) and respect the environment 22# by using ?= 23CXX ?= g++ 24 25BASEFLAGS = -Wall ${SEARCHDIRS} $(MARCH) -DENABLE_COMPRESSION=0 -D_FILE_OFFSET_BITS=64 \ 26-D_LARGEFILE_SOURCE -fno-exceptions -fno-rtti -fno-strict-aliasing \ 27-D_REENTRANT 28 29 30ifeq ($(findstring debug,$(MAKECMDGOALS)),) 31 DBGFLAGS = -O2 -DNDEBUG 32 LDFLAGS = 33else 34 DBGFLAGS = -g -DDEBUG 35 LDFLAGS = -g 36endif 37 38ifeq ($(findstring nommap,$(MAKECMDGOALS)),) 39 CXXFLAGS = $(DBGFLAGS) $(BASEFLAGS) 40else 41 CXXFLAGS = $(DBGFLAGS) $(BASEFLAGS) -DNO_MMAP 42endif 43 44%.o : %.c 45 ${CXX} ${CXXFLAGS} -c $< -o $@ 46 47%.o : %.cc 48 ${CXX} ${CXXFLAGS} -c $< -o $@ 49 50%.o : %.C 51 ${CXX} ${CXXFLAGS} -c $< -o $@ 52 53%.o : %.cpp 54 ${CXX} ${CXXFLAGS} -c $< -o $@ 55 56%.o : %.cxx 57 ${CXX} ${CXXFLAGS} -c $< -o $@ 58 59# C/C++ linker 60 61LINKER := ${CXX} 62LDFLAGS = -lz 63#if ENABLE_COMPRESSION is not needed, 64# LDFLAGS = 65 66.PHONY : all 67all: cdbfasta cdbyank 68debug: all 69nommap: all 70cdbfasta: ./cdbfasta.o ./gcdbz.o $(LIBS) ${GCLDIR}/gcdb.o ${GCLDIR}/GBase.o ${GCLDIR}/GStr.o ${GCLDIR}/GArgs.o 71 ${LINKER} -o $@ ${filter-out %.a %.so, $^} $(LDFLAGS) 72 73cdbyank : ./cdbyank.o ./gcdbz.o ${GCLDIR}/gcdb.o ${GCLDIR}/GBase.o ${GCLDIR}/GStr.o ${GCLDIR}/GArgs.o 74 ${LINKER} -o $@ ${filter-out %.a %.so, $^} $(LDFLAGS) 75 76# target for removing all object files 77 78.PHONY : tidy 79tidy:: 80 @${RM} core cdbfasta cdbyank *.o ${GCLDIR}/gcdb.o ${GCLDIR}/GBase.o ${GCLDIR}/GStr.o ${GCLDIR}/GArgs.o 81 82# target for removing all object files 83 84.PHONY : clean 85clean:: tidy 86 @${RM} core cdbfasta cdbyank *.o ${GCLDIR}/gcdb.o ${GCLDIR}/GBase.o ${GCLDIR}/GStr.o ${GCLDIR}/GArgs.o 87 88 89