##
# Models (to be passed through stanc)
##
MODEL_HEADER := $(STAN)src/stan/model/model_header.hpp
CMDSTAN_MAIN := src/cmdstan/main.cpp


.PRECIOUS: %.hpp %.o
$(patsubst %.stan,%,$(wildcard $(addsuffix .stan,$(MAKECMDGOALS)))) : %$(EXE) : %.hpp %.stan bin/stanc$(EXE) bin/stansummary$(EXE) $(LIBCVODES)
	@echo ''
	@echo '--- Linking C++ model ---'
ifneq (,$(findstring allow_undefined,$(STANCFLAGS)))
	$(LINK.c) -O$O $(OUTPUT_OPTION) $(CMDSTAN_MAIN) -include $< -include $(USER_HEADER) $(LIBCVODES) $(LDLIBS)
else
	$(LINK.c) -O$O $(OUTPUT_OPTION) $(CMDSTAN_MAIN) -include $< $(LIBCVODES) $(LDLIBS)
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=$@

