# # Makefile for MARS14 code system # Created: February 1998 by kriol # Last modification: 08-NOV-2000 by kriol # Last modification: 20-MAR-2002 by NVM # # Makefile's variable CERNLIB_LOC should point out the location of CERN library # # # step #1 - system specific compilers, setttings etc # BNAB_TAG := bnab MCNP_TAG := mcnp CEMS_TAG := cems FEMS_TAG := fems OSTYPE := $(shell uname -s) MARS14 := /afs/fnal/files/home/room1/mokhov/restricted/mars14 ifeq ($(OSTYPE), SunOS) # Solaris, SunOS 2* and above. Will screw up with solaris 1.* # compilers FC := f77 CC := cc CXX := c++ LD := f77 # compiler flags CFLAGS = -fast FFLAGS = -fast # CFLAGS = -g -C # FFLAGS = -g -C CXXFLAGS = LDFLAGS = -fast -L/usr/openwin/lib # LDFLAGS = -g -fast -L/usr/openwin/lib # 64bit flags info os_suffix := sun ISALIST := $(shell test -x /bin/isalist && /bin/isalist | grep sparcv9 ) ifneq ($(ISALIST),"") FFLAGS += # -xarch=v9 CFLAGS += # -xarch=v9 LDFLAGS += # -xarch=v9 # os_suffix := sun64 endif # SYSLIB & CERNLIB SYSLIB := -lX11 -lsocket -lnsl -ldl CERNLIB_LOC := /afs/fnal.gov/ups/cern/2000/SunOS+5/lib # MARS & MCNP libraries and include MARSLIB := $(MARS14)/sun/lib MCNPLIB := INCLUDE := $(MARS14)/sun/include # Tcl TCL_VER := 8.3 TCL_INC := $(MARS14)/sun/include TCL_LOC := $(MARS14)/sun/lib #Tk TK_VER := 8.3 TK_INC := $(MARS14)/sun/include TK_LOC := $(MARS14)/sun/lib TCLTK_LST := -ltk$(TK_VER) -ltcl$(TCL_VER) else ifeq ($(OSTYPE), IRIX64) # compilers FC := f77 CC := cc CXX := CC LD := f77 # compiler flags CFLAGS = -O -n32 -mips3 -OPT:Olimit=0 -NC200 FFLAGS = -O -n32 -mips3 -OPT:Olimit=0 -NC200 ## FFLAGS = -O2 -o32 -Olimit 2661 m14io.f CXXFLAGS = LDFLAGS = -L/usr/lib32 -L/usr/lib -n32 # LDFLAGS = -L/usr/lib32 -n32 # SYSLIB & CERNLIB SYSLIB = -lX11 CERNLIB_LOC := /afs/fnal.gov/ups/cern/2000/IRIX+6.5/lib # MARS & MCNP libraries MARSLIB := $(MARS14)/irix/lib MCNPLIB := INCLUDE := $(MARS14)/irix/include # Tcl TCL_VER := 8.3 TCL_INC := $(MARS14)/irix/include TCL_LOC := $(MARS14)/irix/lib # Tk TK_VER := 8.3 TK_INC := $(MARS14)/irix/include TK_LOC := $(MARS14)/irix/lib TCLTK_LST := -ltk$(TK_VER) -ltcl$(TCL_VER) os_suffix := irix else ifeq ($(OSTYPE), AIX) # compilers FC := f77 CC := cc CXX := xlC LD := f77 # compiler flags CFLAGS = -O2 -Df2cFortran FFLAGS = -O2 -qextname CXXFLAGS = LDFLAGS = -b loadmap:PARM -L/usr/lib # SYSLIB & CERNLIB SYSLIB = -lX11 -lld CERNLIB_LOC := # MARS & MCNP libraries MARSLIB := $(MARS14)/aix/lib MCNPLIB := INCLUDE := $(MARS14)/aix/include # Tcl TCL_VER := 8.3 TCL_INC := $(MARS14)/aix/include TCL_LOC := $(MARS14)/aix/lib # Tk TK_VER := 8.3 TK_INC := $(MARS14)/aix/include TK_LOC := $(MARS14)/aix/lib TCLTK_LST := -ltk$(TK_VER) -ltcl$(TCL_VER) os_suffix := ibm else ifeq ($(OSTYPE), OSF1) # compilers FC := f77 CC := cc CXX := cxx LD := f77 # compiler flags CFLAGS = -ev5 -O3 FFLAGS = -ev5 -O3 CXXFLAGS = -ev5 -O3 LDFLAGS = # LDFLAGS = -L/usr/opt/XR6320/X11R6/lib # SYSLIB & CERNLIB SYSLIB = -lX11 CERNLIB_LOC := /afs/fnal.gov/ups/cern/2000/OSF1+V4/lib # MARS & MCNP libraries MARSLIB := $(MARS14)/dec/lib MCNPLIB := INCLUDE := $(MARS14)/dec/include # Tcl TCL_VER := 8.3 TCL_INC := $(MARS14)/dec/include TCL_LOC := $(MARS14)/dec/lib # Tk TK_VER := 8.3 TK_INC := $(MARS14)/dec/include TK_LOC := $(MARS14)/dec/lib TCLTK_LST := -ltk$(TK_VER) -ltcl$(TCL_VER) os_suffix := dec else ifeq ($(OSTYPE), Linux) # compilers FC := g77 CC := gcc CXX := c++ # LD := f77 LD := g77 # compiler flags CFLAGS = -O3 FFLAGS = -O3 CXXFLAGS = LDFLAGS = -L/usr/lib # SYSLIB & CERNLIB SYSLIB := -L/usr/X11R6/lib -lX11 -ldl -lnsl CERNLIB_LOC := /afs/fnal.gov/ups/cern/2000/Linux+2.2/lib # MARS & MCNP libraries and include MARSLIB := $(MARS14)/linux/lib MCNPLIB := INCLUDE := $(MARS14)/linux/include # Tcl TCL_VER := 8.3 TCL_INC := $(MARS14)/linux/include TCL_LOC := $(MARS14)/linux/lib #Tk TK_VER := 8.3 TK_INC := $(MARS14)/linux/include TK_LOC := $(MARS14)/linux/lib TCLTK_LST := -ltk$(TK_VER) -ltcl$(TCL_VER) os_suffix := linux else # You're on your own @echo "You're on your own" endif endif endif endif endif # # step #2 - include and lib assignement # CFLAGS += -I$(TCL_INC) CFLAGS += -I$(TK_INC) ifeq ($(OSTYPE), IRIX64) FFLAGS += -Wf,-I$(INCLUDE) else FFLAGS += -I$(INCLUDE) endif #LIBS_LOC := -L$(CERNLIB_LOC) -L$(MARSLIB) -L$(MCNPLIB) -L$(TCL_LOC) -L$(TK_LOC) LIBS_LOC := -L$(CERNLIB_LOC) -L$(MARSLIB) -L$(TCL_LOC) -L$(TK_LOC) # # step #3 - libraries list # MARSDEFLIB := -lm14$(os_suffix) -lm14$(FEMS_TAG)_$(os_suffix) -lm14trneu_$(os_suffix) -lpacklib $(TCLTK_LST) MARSLIBA := -lm14$(os_suffix) -lm14$(CEMS_TAG)_$(os_suffix) -lm14trneu_$(os_suffix) -lpacklib $(TCLTK_LST) MARSLIBB := -lm14$(os_suffix) -lm14$(FEMS_TAG)_$(os_suffix) -lm14trneu-mcnp_$(os_suffix) -lmcnp4C$(os_suffix) -lm14trneu-mcnp_$(os_suffix) -lpacklib $(TCLTK_LST) MARSLIBC := -lm14$(os_suffix) -lm14$(CEMS_TAG)_$(os_suffix) -lm14trneu-mcnp_$(os_suffix) -lmcnp4C$(os_suffix) -lm14trneu-mcnp_$(os_suffix) -lpacklib $(TCLTK_LST) # # step #4 - EXE names, sources and objs # #TARGETDEFAULT := rmars-$(BNAB_TAG)$-$(FEMS_TAG)$-$(os_suffix) TARGETDEFAULT := rmars-$(BNAB_TAG)-$(FEMS_TAG)-$(os_suffix) TARGETA := rmars-$(BNAB_TAG)-$(CEMS_TAG)-$(os_suffix) TARGETB := rmars-$(MCNP_TAG)-$(FEMS_TAG)-$(os_suffix) TARGETC := rmars-$(MCNP_TAG)-$(CEMS_TAG)-$(os_suffix) SRCS := marsmain.f m1402.f OBJS := $(patsubst %.f,%.o, $(filter %.f,$(SRCS))) OBJS += $(patsubst %.c,%.o, $(filter %.c,$(SRCS))) # # step #5 - default target - MARS with BNAB # all: $(TARGETDEFAULT) # # step #6 - rules how to make EXE and cleanup # $(TARGETDEFAULT): $(OBJS) $(LD) $(LDFLAGS) $(LIBS_LOC) -o $@ $^ $(MARSDEFLIB) $(SYSLIB) #$(TARGETMCNP): # @echo "In order to use MARS/MCNP you must have your" # @echo "own MCNP version licensed!" # @echo "Please, contact Oleg Krivosheev kriol@fnal.gov for details." $(TARGETA): $(OBJS) $(LD) $(LDFLAGS) $(LIBS_LOC) -o $@ $^ $(MARSLIBA) $(SYSLIB) $(TARGETB): $(OBJS) $(LD) $(LDFLAGS) $(LIBS_LOC) -o $@ $^ $(MARSLIBB) $(SYSLIB) $(TARGETC): $(OBJS) $(LD) $(LDFLAGS) $(LIBS_LOC) -o $@ $^ $(MARSLIBC) $(SYSLIB) clean: -rm *.o -rm $(TARGETDEFAULT) -rm $(TARGETA) -rm $(TARGETB) -rm $(TARGETC)