# Rewritten by Benno 2011 #OUTFLAG >>>> make OUT=direx ifndef OUT OUT = direx endif #VERSION ifndef DXVERSION DXVERSION = "0.7.1" endif BUILD_REVISION = "409" #svn einsetzen BUILD_DATE = $(shell date +"%Y-%m-%d" 2>/dev/null) BUILD_SYSTEM = $(shell uname -rsm 2>/dev/null) # GROMACS_SRCDIR = /Users/gunnar/programs/gromacs-4.6.5 BIN = ../bin CC = gcc LD = $(CC) #locate c files and get object file names SOURCES := $(shell ls *.c 2>/dev/null) OBJ = $(SOURCES:%.c=%.o) DXOBJ = direx.o disre.o params.o typedefs.o dxutils.o #System detection ifndef ARCH ARCH := $(shell uname -m 2>/dev/null) endif ifeq ($(ARCH),i386) SYS='' else SYS='-m64' endif #general compiler setup CFLAGS += -O3 CFLAGS += -fopenmp CFLAGS += -DDXVERSION="\"$(DXVERSION)\"" CFLAGS += -DBUILD_REVISION="\"$(BUILD_REVISION)\"" CFLAGS += -DBUILD_DATE="\"$(BUILD_DATE)\"" CFLAGS += -DBUILD_SYSTEM="\"$(BUILD_SYSTEM)\"" CFLAGS += -I/opt/local/include -w CFLAGS += $(SYS) #CFLAGS += -DUSE_GMX=1 #INCLUDE += -I${GROMACS_SRCDIR}/include/ #LDFLAGS += -L$(GROMACS_SRCDIR)/build/src/gmxlibs/ -L$(GROMACS_SRCDIR)/build/src/mdlib/ #LIBS += -lmd -lgmx INCLUDE += -Itools/pden/src/ INCLUDE += -Itools/xdr/include #INCLUDE += -I/usr/local/Cellar/libomp/8.0.0/include/ INCLUDE += -Itools/ #LDFLAGS += -L/usr/local/Cellar/libomp/8.0.0/lib/ #LDFLAGS += -L/usr/lib -L/usr/local/lib LIBS += -lm LIBS += -lomp LIBS += tools/libpden.a LIBS += tools/libxdrfile.a LIBS += -lfftw3 #locate FFTW LIB_FFTW_STING = "extern void fftw_plan_dft_r2c_3d(); int main(){fftw_plan_dft_r2c_3d();return 0;}" $(info $$LIB_FFTW_STING is [${LIB_FFTW_STING}]) # test location in PATH FFTW_TEST := $(shell echo $(LIB_FFTW_STING) | $(CC) -o tmp_fftw -lfftw3 -x c - 2>/dev/null && echo "-lfftw3" && echo "FFTW: -lfftw3" 1>&2 ) $(info $$FFTW_TEST is [${FFTW_TEST}]) ifneq ($(strip $(FFTW_TEST)),) FFTW_LIB := $(FFTW_TEST) endif $(info $$FFTW_TEST is [${FFTW_TEST}]) $(info $$FFTW_LIB is [${FFTW_LIB}]) # test location /usr/lib/libfftw3.a (MAC or Linux) FFTW_TEST := $(shell echo $(LIB_FFTW_STING) | $(CC) -o tmp_fftw /usr/lib/libfftw3.a -x c - 2>/dev/null && "echo /usr/lib/libfftw3.a" && echo "FFTW: /usr/lib/libfftw3.a" 1>&2 ) $(info $$FFTW_TEST is [${FFTW_TEST}]) ifneq ($(strip $(FFTW_TEST)),) FFTW_LIB := $(FFTW_TEST) endif $(info $$FFTW_TEST is [${FFTW_TEST}]) $(info $$FFTW_LIB is [${FFTW_LIB}]) # test location /opt/local/lib/libfftw3.a (MacPorts) FFTW_TEST := $(shell echo $(LIB_FFTW_STING) | $(CC) -o tmp_fftw /opt/local/lib/libfftw3.a -x c - 2>/dev/null && echo /opt/local/lib/libfftw3.a && echo "FFTW: /opt/lib/libfftw3.a" 1>&2 ) $(info $$FFTW_TEST is [${FFTW_TEST}]) ifneq ($(strip $(FFTW_TEST)),) FFTW_LIB := $(FFTW_TEST) endif $(info $$FFTW_TEST is [${FFTW_TEST}]) $(info $$FFTW_LIB is [${FFTW_LIB}]) # test location /usr/local/lib/libfftw3.a (Mac or new Linux/Unix - self compiled) FFTW_TEST := $(shell echo $(LIB_FFTW_STING) | $(CC) -o tmp_fftw /usr/local/lib/libfftw3.a -x c - 2> /dev/null && echo /usr/local/lib/libfftw3.a && echo "FFTW: /usr/local/lib/libfftw3.a" 1>&2 ) $(info $$FFTW_TEST is [${FFTW_TEST}]) ifneq ($(strip $(FFTW_TEST)),) FFTW_LIB := $(FFTW_TEST) endif $(info $$FFTW_TEST is [${FFTW_TEST}]) $(info $$FFTW_LIB is [${FFTW_LIB}]) # test user location ifdef LIB_FFTW FFTW_TEST := $(shell echo $(LIB_FFTW_STING) | $(CC) -o tmp_fftw $(LIB_FFTW) -x c - 2> /dev/null && echo $(LIB_FFTW) && echo "FFTW: $(LIB_FFTW)" 1>&2 ) $(info $$FFTW_TEST is [${FFTW_TEST}]) ifneq ($(strip $(FFTW_TEST)),) FFTW_LIB := $(FFTW_TEST) endif endif $(info $$FFTW_TEST is [${FFTW_TEST}]) $(info $$FFTW_LIB is [${FFTW_LIB}]) FFTW_TEST := $(shell rm -f tmp_fftw ) LIBS += $(FFTW_LIB) #LIBS += /usr/local/lib/libfftw3.a #DEBUGFLAG >>>> make DEBUG=1 ifdef DEBUG CFLAGS += -Wall -g LDFLAGS += -g endif #### RULES # all: deps direx dxapply-cos-mapping dxmapinfo dxmapadd dxmapmult dxmapdif dxmapcorr dxbeadgen dxmkhist dxmatchhist dxmrc2map dxvisdem dxcalcps all: deps direx dxapply-cos-mapping dxmapinfo dxmapadd dxmapmult dxmapdif dxmapcorr dxmapcorr_mask dxbeadgen dxmkhist dxmatchhist dxmrc2map dxvisdem dxcalcps fftw: echo "using for fft: $(FFTW_LIB)" # build xdr and pden libs deps: make -C tools/ # build direx direx: $(DXOBJ) $(LD) $(LDFLAGS) -o $(BIN)/$(OUT) $(DXOBJ) $(LIBS) # build tools dxapply-cos-mapping: apply-cos-mapping.o $(CC) -o $(BIN)/dxapply-cos-mapping apply-cos-mapping.c -lm dxmapinfo: mapinfo.o $(CC) -o $(BIN)/dxmapinfo mapinfo.c -lm dxmapcorr: mapcorr.o $(CC) -o $(BIN)/dxmapcorr mapcorr.c -lm dxmapcorr_mask: mapcorr_mask.o $(CC) -o $(BIN)/dxmapcorr_mask mapcorr_mask.c -lm dxbeadgen: beadgen.o $(CC) -o $(BIN)/dxbeadgen beadgen.c -lm dxmkhist: mkhist.o $(CC) -o $(BIN)/dxmkhist mkhist.c -lm dxmrc2map: mrc2map.o $(CC) -o $(BIN)/dxmrc2map mrc2map.c -lm dxmatchhist: matchhist.o $(CC) -o $(BIN)/dxmatchhist matchhist.c -lm dxmapmult: mapmult.o $(CC) -o $(BIN)/dxmapmult mapmult.c -lm dxmapdif: mapdif.o $(CC) -o $(BIN)/dxmapdif mapdif.c -lm dxmapadd: mapadd.o $(CC) -o $(BIN)/dxmapadd mapadd.c -lm dxcalcps: pdcalcps.o $(CC) -o $(BIN)/dxcalcps pdcalcps.c -lm $(INCLUDE) $(LIBS) dxvisdem: visdem.o $(CC) -o $(BIN)/dxvisdem visdem.c -lm $(INCLUDE) $(LIBS) # Compile %.o: %.c $(CC) $(CFLAGS) $(INCLUDE) -c $< -o $@ help: echo "DireX MakeFile" echo "" echo "Help:" echo "" echo "Options:" echo "help display this help" echo "all build DireX with default settings" echo "clean clean all created files" echo "" echo "Parameter:" echo "DEBUG=1 debug mode" echo "OUT=name define output name (default is direx)" echo "sys=arch define architecture 'i386' or 'x86_64'" echo "LIB_FFTW=path set fftw3 lib location" echo "" #clean clean: make -C tools/ clean rm -f *.o *.a .PHONY: all clean .SILENT: help info