## # Models (to be passed through stanc) ## MODEL_HEADER := $(STAN)src/stan/model/model_header.hpp MODEL_PCH := $(MODEL_HEADER:.hpp=.hpp.gch) CMDSTAN_MAIN := src/cmdstan/main.cpp $(MODEL_PCH) : $(MODEL_HEADER) @echo 'Compiling pre-compiled header' $(COMPILE.cc) $(CXXFLAGS_MPI) -O$O $(MODEL_HEADER) -o $@ .PRECIOUS: %.hpp %.o $(patsubst %.stan,%,$(wildcard $(addsuffix .stan,$(MAKECMDGOALS)))) : %$(EXE) : %.hpp %.stan bin/stanc$(EXE) bin/stansummary$(EXE) bin/diagnose$(EXE) $(LIBMPI) $(LIBSUNDIALS) $(MODEL_PCH) @echo '' @echo '--- Linking C++ model ---' ifneq (,$(findstring allow_undefined,$(STANCFLAGS))) $(LINK.cc) $(CMDSTAN_MAIN) $(if $(filter $(CC_TYPE),clang++),-include-pch $(MODEL_PCH)) -O$O $(OUTPUT_OPTION) -include $< -include $(USER_HEADER) $(LIBSUNDIALS) $(CXXFLAGS_MPI) $(LDFLAGS_MPI) $(LIBMPI) else $(LINK.cc) $(CMDSTAN_MAIN) $(if $(filter $(CC_TYPE),clang++),-include-pch $(MODEL_PCH)) -O$O $(OUTPUT_OPTION) -include $< $(LIBSUNDIALS) $(CXXFLAGS_MPI) $(LDFLAGS_MPI) $(LIBMPI) endif .PRECIOUS: %.hpp %.hpp : %.stan $(MODEL_HEADER) bin/stanc$(EXE) @echo '' @echo '--- Translating Stan model to C++ code ---' $(WINE) bin$(PATH_SEPARATOR)stanc$(EXE) $(STANCFLAGS) $< --o=$@