simple makefile for admb - admb-project/admb GitHub Wiki

Simple Makefile for ADMB

Tested with gnu make under 64bit linux. Some modifications required for other configurations. Steve added contributed libraries to path.

# to make executables with ADMB "safe" library, simply type make target
# to make executables with ADMB "optimized" library, type make OPT=TRUE (yes, upper case) target
# the safe version also sets the debugger flag and does no optimization
#
# identify some extra file name suffixes
.SUFFIXES: .tpl .cpp .o .obj

# tell make not to delete these intermediate targets
.PRECIOUS: %.cpp %.o %.obj

# make some special targets
.PHONY: default rules

# does this if no target is specified on command line
default:
	@echo No target specified.
	@echo Usage: make target, e. g. make simple
	@echo        specify OPT=TRUE to build optimized version

# establish the C   compiler
CC=g
# and linker
LL=$(CC)

# set up ADMB flags and appropriate libraries
# make the "safe" version by default
# to make "the optimized" version, type  `make OPT=TRUE
ifeq ($(OPT),TRUE)
  CC_OPT = -O3 -DOPT_LIB
  LFLAGS=  -L$(ADMB_HOME)/lib -L$(ADMB_HOME)/contrib -ldf1b2o -ladmod -ladt -lado -lcontribo -ldf1b2o -ladmod -ladt -lado -lcontribo
else
  CC_OPT = -v -ggdb -DSAFE_ARRAYS
  LFLAGS= -v -L$(ADMB_HOME)/lib -L$(ADMB_HOME)/contrib -ldf1b2s -ladmod -ladt -lads -ldf1b2s -lcontribs -ladmod -ladt -lads -ldf1b2s -lcontribs
  OPT = FALSE
endif

# set general compiler flags
CFLAGS = -c -m64 -Wall -Wno-deprecated -fpermissive $(CC_OPT) -I$(ADMB_HOME)/include -I$(ADMB_HOME)/contrib -I. -D__GNUDOS__ -Dlinux -DUSE_LAPLACE

# link the object file into the executable
%:%.o;
	$(LL) -o $@ $^ $(LFLAGS)

# compile the C   into an object file
%.o:%.cpp;
	$(CC) $(CFLAGS)  -o $@ $<

# translate the ADMB template into C   code
%.cpp:%.tpl;
	$(ADMB_HOME)/bin/tpl2cpp $*

# generate some information about what your are doing
rules:
	@echo OPT = $(OPT)
	@echo CC_OPT = $(CC_OPT)
	@echo PWD = $(PWD)
	@echo OSTYPE = $(OSTYPE)
	@echo OS     = $(OS)
	@echo ADMB_HOME = $(ADMB_HOME)
	@echo CC = $(CC)
	$(CC) --version
	@echo LL = $(LL)
	@echo CFLAGS = $(CFLAGS)
	@echo LFLAGS = $(LFLAGS)
⚠️ **GitHub.com Fallback** ⚠️