aboutsummaryrefslogtreecommitdiff
path: root/GNUmakefile
blob: 39143ec3b076b06a86cd85f4d673a76f82411568 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
PKGNAME := $(shell sed -n "s/Package: *\([^ ]*\)/\1/p" DESCRIPTION)
PKGVERS := $(shell sed -n "s/Version: *\([^ ]*\)/\1/p" DESCRIPTION)
PKGSRC  := $(shell basename $(PWD))
TGZ     := ../$(PKGSRC)_$(PKGVERS).tar.gz
TGZVNR  := ../$(PKGSRC)_$(PKGVERS)-vignettes-not-rebuilt.tar.gz

# Specify the directory holding R binaries. To use an alternate R build (say a
# pre-prelease version) use `make RBIN=/path/to/other/R/` or `export RBIN=...`
# If no alternate bin folder is specified, the default is to use the folder
# containing the first instance of R on the PATH.
RBIN ?= $(shell dirname "`which R`")

# Specify the directory where the static documentation belongs
SDDIR ?= $(HOME)/svn/kinfit.r-forge/www/mkin_static

#------------------------------------------------------------------------------
# These must be manually kept up to date 
#------------------------------------------------------------------------------
pkgfiles = NEWS \
	   data/* \
	   DESCRIPTION \
	   inst/unitTests* \
	   inst/staticdocs/README \
	   man/* \
	   NAMESPACE \
	   R/* \
	   README.md \
	   tests/* \
	   TODO \
	   vignettes/*
#------------------------------------------------------------------------------

.PHONY: help vignettes

help:
	@echo "\nExecute development tasks for $(PKGNAME)\n"
	@echo "Usage: \`make <task>\` where <task> is one of:"
	@echo ""
	@echo "Development Tasks"
	@echo "-----------------"
	@echo "  build                   Create the package"
	@echo "  build-no-vignettes      Create the package without rebuilding vignettes"
	@echo "  check                   Invoke build and then check the package"
	@echo "  check-no-vignettes      Invoke build without rebuilding vignettes, and then check"
	@echo "  install                 Invoke build and then install the result"
	@echo "  install-no-vignettes    Invoke build without rebuilding vignettes and then install the result"
	@echo "  test                    Install a new copy of the package without vignette rebuilding"
	@echo "                          and run it through the testsuite"
	@echo "  vignettes               Build the vignettes"
	@echo "  sd                      Build the static documentation"
	@echo "  move-sd                 Move the static documentation where it belongs"
	@echo ""
	@echo "Packaging Tasks"
	@echo "---------------"
	@echo "  winbuilder              Check building on Windows using the winbuilder service"
	@echo "  r-forge                 Give reminders how to sync the r-forge repo"
	@echo "  submit                  Submit to CRAN"
	@echo ""
	@echo "Using R in: $(RBIN)"
	@echo "Set the RBIN environment variable to change this."
	@echo ""

#------------------------------------------------------------------------------
# Development Tasks
#------------------------------------------------------------------------------

$(TGZ): $(pkgfiles)
	cd ..;\
		"$(RBIN)/R" CMD build $(PKGSRC)

$(TGZVNR): $(pkgfiles)
	cd ..;\
		"$(RBIN)/R" CMD build $(PKGSRC) --no-build-vignettes;\
		cd $(PKGSRC);\
	mv $(TGZ) $(TGZVNR)
                
build: $(TGZ)

build-no-vignettes: $(TGZVNR)

install: build
	"$(RBIN)/R" CMD INSTALL $(TGZ)

install-no-vignettes: build-no-vignettes
	"$(RBIN)/R" CMD INSTALL $(TGZVNR)

check: build
	# Vignettes have been rebuilt by the build target
	"$(RBIN)/R" CMD check --as-cran --no-tests --no-build-vignettes $(TGZ)

check-no-vignettes: build-no-vignettes
	"$(RBIN)/R" CMD check --as-cran --no-tests $(TGZVNR)

test: install-no-vignettes
	cd tests;\
		"$(RBIN)/Rscript" doRUnit.R

vignettes:
	"$(RBIN)/Rscript" -e "tools::buildVignettes(dir = '.')"
		
sd:
	"$(RBIN)/Rscript" -e "library(staticdocs); build_site()"

move-sd:
	rm -rf $(SDDIR)/*;\
		cp -r inst/web/* $(SDDIR)

#------------------------------------------------------------------------------
# Packaging Tasks
#------------------------------------------------------------------------------
winbuilder: build
	date
	@echo "Uploading to R-release on win-builder"
	curl -T $(TGZ) ftp://anonymous@win-builder.r-project.org/R-release/
	@echo "Uploading to R-devel on win-builder"
	curl -T $(TGZ) ftp://anonymous@win-builder.r-project.org/R-devel/

r-forge:
	@echo "\nHow about make test and make check?"
	@echo "\nIs the DESCRIPTION file up to date?"
	@echo "\nTo update the svn repository tied to the local r-forge branch with"
	@echo "changes in the local master branch, run:"
	@echo "'git checkout r-forge'"
	@echo "'git merge --squash -srecursive -Xtheirs --no-commit master'"
	@echo "'git commit'"
	@echo "'git svn dcommit'"
	@echo "\nThen change back to the master branch:"
	@echo "'git checkout master'"

submit:
	@echo "\nAre you sure you want to release to CRAN?"
	@echo "\nThen use the form at http://cran.r-project.org/submit.html"

Contact - Imprint