# Executable name EXE=gray # Objects list MAINOBJ=main.o OTHOBJ= beamdata.o beams.o conical.o const_and_precisions.o coreprofiles.o \ dierckx.o dispersion.o eccd.o eierf.o errcodes.o graycore.o \ gray_params.o equilibrium.o limiter.o magsurf_data.o math.o minpack.o multipass.o \ numint.o pec.o polarization.o quadpack.o reflections.o simplespline.o units.o utils.o # Alternative search paths vpath %.f90 src vpath %.f src # Fortran compiler name and flags FC=gfortran LD=gfortran FFLAGS=-O3 -fPIC LDFLAGS= -static-libgfortran -static-libgcc # LDFLAGS= -static-libgfortran -lgfortran -lgcc -lSystem -nodefaultlibs LIBS= /usr/local/lib/libquadmath.a # FFLAGS=-Wall -g -finit-real=nan -ffpe-trap=invalid -fcheck=all -fbounds-check DIRECTIVES = -DREVISION="'$(shell svnversion src)'" all: $(EXE) # Build executable from object files $(EXE): $(MAINOBJ) $(OTHOBJ) $(LD) $(LDFLAGS) -o $@ $^ $(LIBS) # Dependencies on modules main.o: const_and_precisions.o beams.o coreprofiles.o equilibrium.o \ graycore.o gray_params.o reflections.o graycore.o: const_and_precisions.o beamdata.o beams.o coreprofiles.o \ dispersion.o eccd.o equilibrium.o errcodes.o gray_params.o \ pec.o polarization.o limiter.o units.o utils.o reflections.o multipass.o beams.o: const_and_precisions.o dierckx.o reflections.o simplespline.o utils.o beamdata.o: const_and_precisions.o gray_params.o conical.o: const_and_precisions.o coreprofiles.o: const_and_precisions.o dierckx.o gray_params.o simplespline.o \ utils.o dierckx.o: const_and_precisions.o dispersion.o: const_and_precisions.o eierf.o errcodes.o math.o quadpack.o eccd.o: const_and_precisions.o conical.o dierckx.o errcodes.o magsurf_data.o \ numint.o eierf.o: const_and_precisions.o errcodes.o: const_and_precisions.o gray_params.o: const_and_precisions.o utils.o equilibrium.o: const_and_precisions.o dierckx.o limiter.o minpack.o \ reflections.o simplespline.o utils.o gray_params.o magsurf_data.o: const_and_precisions.o gray_params.o equilibrium.o dierckx.o \ reflections.o simplespline.o units.o utils.o math.o: const_and_precisions.o minpack.o: const_and_precisions.o multipass.o: const_and_precisions.o beamdata.o equilibrium.o gray_params.o \ polarization.o reflections.o numint.o: const_and_precisions.o pec.o: const_and_precisions.o beamdata.o equilibrium.o gray_params.o \ magsurf_data.o utils.o polarization.o: const_and_precisions.o quadpack.o: const_and_precisions.o reflections.o: const_and_precisions.o limiter.o utils.o simplespline.o: const_and_precisions.o utils.o: const_and_precisions.o # General object compilation command %.o: %.f90 $(FC) -cpp $(DIRECTIVES) $(FFLAGS) -c $< .PHONY: clean install # Remove output files clean: rm -rf *.o *.mod $(EXE) install: @if [ -f $(EXE) ]; then \ cp $(EXE) ~/bin/; \ else \ echo File $(EXE) does not exist. Run \'make\' first; \ fi