[go: up one dir, main page]

Menu

[c1a309]: / Makefile  Maximize  Restore  History

Download this file

289 lines (220 with data), 8.9 kB

  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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
# vim: set fdm=marker:
######################################################################
#
# See COPYING file distributed along with the psignifit package for
# the copyright and license terms
#
######################################################################
# The main Psignifit 3.x Makefile
#################### VARIABLE DEFINITIONS ################### {{{
SHELL=/bin/bash
CLI_INSTALL=$(HOME)/bin
SPHINX_DOCOUT=doc-html
EPYDOC_DCOOUT=api
PSIPP_DOCOUT=psipp-api
PSIPP_SRC=src
PYTHON=python
CLI_SRC=cli
TODAY=`date +%d-%m-%G`
LONGTODAY=`date +%G-%m-%d`
GIT_DESCRIPTION=`git describe --tags`
CLI_VERSION_HEADER=cli/cli_version.h
MPSIGNIFIT_VERSION=mpsignifit/psignifit_version.m
PYPSIGNIFIT_VERSION=pypsignifit/__version__.py
.PHONY : swignifit psipy ipython psipp-doc
#}}}
#################### GROUPING FILES ################### {{{
PYTHONFILES=$(addprefix pypsignifit/, __init__.py psignidata.py psignierrors.py psigniplot.py psigobservers.py pygibbsit.py)
CFILES_LIB=$(addprefix src/, bootstrap.cc core.cc data.cc linalg.cc mclist.cc mcmc.cc optimizer.cc psychometric.cc rng.cc sigmoid.cc special.cc getstart.cc )
HFILES_LIB=$(addprefix src/, bootstrap.h core.h data.h errors.h linalg.h mclist.h mcmc.h optimizer.h prior.h psychometric.h rng.h sigmoid.h special.h psipp.h getstart.h)
PSIPY_INTERFACE=$(addprefix psipy/, psipy.cc psipy_doc.h pytools.h)
SWIGNIFIT_INTERFACE=swignifit/swignifit_raw.i
SWIGNIFIT_AUTOGENERATED=$(addprefix swignifit/, swignifit_raw.py swignifit_raw.cxx)
SWIGNIFIT_HANDWRITTEN=$(addprefix swignifit/, interface_methods.py utility.py)
DOCFILES=$(addprefix doc-src/, \
ADDITIONALPLOTSBOOTSTRAP.rst \
INSTALL_WINDOWS.rst BAYESINTRO.rst \
CONTRIBUTING.rst \
PSYCHOMETRICFUNCTIONS.rst \
DESIGN.rst \
QUICKSTART.rst \
DIFFERENCES.rst \
swig-api.rst \
index.rst \
TODO.rst \
INFLUENTIAL.rst \
TUTORIAL_BAYES.rst \
INSTALL_LINUX.rst \
TUTORIAL_BOOTSTRAP.rst \
INSTALL_MAC.rst \
WELCOME.rst \
INSTALL_MATLAB.rst \
*.png )
EPYDOC_TARGET=swignifit psipy pypsignifit
# }}}
#################### MAIN DEFINITIONS ################### {{{
build: python-build
install: python-install
doc: python-doc psipp-doc
clean: clean-python-doc clean-python psipp-clean cli-clean mpsignifit-clean
test: psipy-test swignifit-test psipp-test
# }}}
#################### PYTHON DEFINITIONS ################### {{{
python-install: swig python-version
$(PYTHON) setup.py install
python-build: swignifit python-version
clean-python: psipy-clean swignifit-clean
-rm -rv build
-rm pypsignifit/*.pyc
-rm $(PYPSIGNIFIT_VERSION)
python-doc: $(DOCFILES) $(PYTHONFILES) python-build
mkdir -p $(SPHINX_DOCOUT)/$(EPYDOC_DCOOUT)
# epydoc -o $(SPHINX_DOCOUT)/$(EPYDOC_DCOOUT) $(EPYDOC_TARGET)
PYTHONPATH=.:doc-src sphinx-build doc-src $(SPHINX_DOCOUT)
clean-python-doc:
-rm -rv $(SPHINX_DOCOUT)
ipython: psipy swignifit
ipython
psipy_vs_swignifit: psipy swignifit
PYTHONPATH=. $(PYTHON) tests/psipy_vs_swignifit.py
psipy_vs_swignifit_time: psipy swignifit
PYTHONPATH=. $(PYTHON) tests/psipy_vs_swignifit_time.py
python-version:
if git rev-parse &> /dev/null ; then \
echo "version = '"$(GIT_DESCRIPTION)"'" > $(PYPSIGNIFIT_VERSION); \
fi
# }}}
#################### PSIPP COMMANDS ################### {{{
psipp:
cd $(PSIPP_SRC) && $(MAKE)
psipp-doc:
doxygen
psipp-clean:
cd $(PSIPP_SRC) && $(MAKE) clean
-rm -rv $(SPHINX_DOCOUT)/$(PSIPP_DOCOUT)
psipp-test:
cd $(PSIPP_SRC) && $(MAKE) test
# }}}
################### CLI COMMANDS ###################### {{{
cli-install: cli-version cli-build
if [ -d $(CLI_INSTALL) ]; then echo $(CLI_INSTALL) " exists adding files"; else mkdir $(CLI_INSTALL); echo ""; echo ""; echo ""; echo "WARNING: I had to create " $(CLI_INSTALL) "you will most probably have to add it to your PATH"; echo ""; echo ""; echo ""; fi
cd $(CLI_SRC) && cp psignifit-mcmc psignifit-diagnostics psignifit-bootstrap psignifit-mapestimate $(CLI_INSTALL)
cli-build: cli-version
cd $(CLI_SRC) && $(MAKE)
cli-clean:
cd $(CLI_SRC) && $(MAKE) clean
-rm $(CLI_VERSION_HEADER)
cli-test: cli-install
$(PYTHON) tests/cli_test.py
cli-uninstall:
rm $(CLI_INSTALL)/psignifit-mcmc
rm $(CLI_INSTALL)/psignifit-diagnostics
rm $(CLI_INSTALL)/psignifit-bootstrap
rm $(CLI_INSTALL)/psignifit-mapestimate
cli-version:
if git rev-parse &> /dev/null ; then \
echo "#ifndef CLI_VERSION_H" > $(CLI_VERSION_HEADER) ; \
echo "#define CLI_VERSION_H" >> $(CLI_VERSION_HEADER) ; \
echo "#define VERSION \""$(GIT_DESCRIPTION)"\"" >> $(CLI_VERSION_HEADER) ; \
echo "#endif" >> $(CLI_VERSION_HEADER) ; \
fi
# }}}
#################### PSIPY COMMANDS ################### {{{
psipy: $(PYTHONFILES) $(CFILES) $(HFILES) $(PSIPY_INTERFACE) setup.py
INTERFACE=psipy $(PYTHON) setup.py build_ext -i
psipy-install:
INTERFACE=psipy $(PYTHON) setup.py install
psipy-test: psipy swignifit
-PYTHONPATH=. INTERFACE="psipy" $(PYTHON) tests/interface_test.py
psipy-clean:
-rm -rv _psipy.so
# }}}
#################### SWIGNIFIT COMMANDS ################### {{{
swig: $(SWIGNIFIT_AUTOGENERATED)
swignifit: $(PYTHONFILES) $(CFILES) $(HFILES) $(SWIGNIFIT_AUTOGENERATED) $(SWIGNIFIT_HANDWRITTEN) setup.py
INTERFACE=swignifit $(PYTHON) setup.py build_ext -i
swignifit-install: swig
INTERFACE=swignifit $(PYTHON) setup.py install
$(SWIGNIFIT_AUTOGENERATED): $(SWIGNIFIT_INTERFACE)
swig -c++ -python -v -Isrc -o swignifit/swignifit_raw.cxx swignifit/swignifit_raw.i
swignifit-clean:
-rm -rv $(SWIGNIFIT_AUTOGENERATED)
-rm -rv swignifit/_swignifit_raw.so
-rm -rv swignifit/*.pyc
swignifit-test: swignifit-test-raw swignifit-test-interface swignifit-test-utility
swignifit-test-raw: swignifit
-PYTHONPATH=. $(PYTHON) tests/swignifit_raw_test.py
swignifit-test-interface: swignifit
-PYTHONPATH=. INTERFACE="swignifit" $(PYTHON) tests/interface_test.py
swignifit-test-utility: swignifit
-PYTHONPATH=. $(PYTHON) tests/utility_test.py
# }}}
#################### PYPSIGNIFIT COMMANDS ################### {{{
pypsignifit-test:
-PYTHONPATH=. $(PYTHON) pypsignifit/psignidata.py
# }}}
#################### MPSIGNIFIT COMMANDS ################### {{{
mpsignifit-version:
if git rev-parse &> /dev/null ; then \
echo "function psignifit_version()" > $(MPSIGNIFIT_VERSION) ; \
echo "disp('"$(GIT_DESCRIPTION)"')" >> $(MPSIGNIFIT_VERSION) ; \
fi
mpsignifit-clean:
rm $(MPSIGNIFIT_VERSION)
# }}}
#################### DISTRIBUTION COMMANDS ################## {{{
dist-changelog:
if [[ `git symbolic-ref HEAD` != refs/heads/master ]] ; then \
echo "FATAL: not on master branch!"; \
false; \
fi
echo $(LONGTODAY) > tmp
echo >> tmp
echo "* " >> tmp
echo >> tmp
cat changelog >> tmp
cp changelog changelog_old
cp tmp changelog
vi changelog +3
if diff tmp changelog; then \
mv changelog_old changelog; \
echo "FATAL: changelog not modified!"; \
false; \
else \
git commit changelog -m "changelog entry for upload"; \
git push origin; \
fi
dist-tar: python-version cli-version mpsignifit-version
git archive --format=tar --prefix=psignifit3.0_beta_$(TODAY)/ master > psignifit3.0_beta_$(TODAY).tar
tar --transform "s,^,psignifit3.0_beta_$(TODAY)/," -rf psignifit3.0_beta_$(TODAY).tar $(PYPSIGNIFIT_VERSION) $(CLI_VERSION_HEADER) $(MPSIGNIFIT_VERSION)
gzip psignifit3.0_beta_$(TODAY).tar
dist-swigged: dist-tar swig
tar xzf psignifit3.0_beta_$(TODAY).tar.gz
cp swignifit/swignifit_raw.cxx swignifit/swignifit_raw.py psignifit3.0_beta_$(TODAY)/swignifit/
zip -r psignifit3.0_beta_$(TODAY).zip psignifit3.0_beta_$(TODAY)
rm -r psignifit3.0_beta_$(TODAY)
dist-win: build psignifit-cli.iss cli-version
if [ -d WindowsInstaller ]; then rm -r WindowsInstaller; fi
cd cli && make clean && make -f MakefileMinGW
wine $(HOME)/.wine/drive_c/Program\ Files/Inno\ Setup\ 5/ISCC.exe psignifit-cli.iss
mv WindowsInstaller/psignifit-cli_3_beta_installer.exe psignifit-cli_3_beta_installer_$(TODAY).exe
dist-win-python-installer: build
if [ $(shell uname) != 'Linux' -a $(shell uname) != 'Darwin' ]; then python setup.py bdist_wininst; fi
dist-upload-doc: python-doc
scp -r doc-html/* igordertigor,psignifit@web.sourceforge.net:/home/groups/p/ps/psignifit/htdocs/
git tag doc-$(LONGTODAY)
git push origin doc-$(LONGTODAY)
dist-upload-archives: | dist-changelog dist-git-tag-snap dist-swigged dist-win
mkdir psignifit3.0_beta_$(TODAY)
cp psignifit3.0_beta_$(TODAY).zip psignifit-cli_3_beta_installer_$(TODAY).exe psignifit3.0_beta_$(TODAY)
if [ -d dist ]; then \
cp dist/pypsignifit-3.0beta.win32-py2.6.exe psignifit3.0_beta_$(TODAY)/psignifit3.0_beta_$(TODAY)_win32-py2.6.exe; \
else \
echo "Installer for Python w32 has not been built; will be omitted in Upload."; \
fi
scp -rv psignifit3.0_beta_$(TODAY) igordertigor,psignifit@frs.sourceforge.net:/home/frs/project/p/ps/psignifit/
#rm -r psignifit3.0_beta_$(TODAY)
git push origin snap-$(LONGTODAY)
dist-git-tag-snap:
git tag snap-$(LONGTODAY)
# }}}