summaryrefslogtreecommitdiff
path: root/test-chill/Makefile
blob: d7238e8677f49ba90e5495347958adf4bcd7789d (plain)
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
###               ###
### SVN variables ###
###               ###
SVN_USER=dhuth

###                       ###
### Notification          ###
### (not implemented yet) ###
NOTIFY_ON_FAILURE=False



### Derived variables from config ###
CHILLHOME?=$(STAGING_DIR)/chill
SVN_CHILL=svn+ssh://$(SVN_USER)@shell.cs.utah.edu/uusoc/facility/res/hallresearch/svn_repo/resRepo/projects/chill
SVN_CHILL_DEV=$(SVN_CHILL)/branches/cuda-chill-rose
SVN_CHILL_RELEASE=$(SVN_CHILL)/release
CHILL_DEV_SRC=$(STAGING_DIR)/chill-dev
CHILL_RELEASE_SRC=$(STAGING_DIR)/chill-release
OMEGAHOME?=$(STAGING_DIR)/omega
SVN_OMEGA=svn+ssh://$(SVN_USER)@shell.cs.utah.edu/uusoc/facility/res/hallresearch/svn_repo/resRepo/projects/omega
SVN_OMEGA_DEV=$(SVN_OMEGA)/branches/cuda-omega-rose
SVN_OMEGA_RELEASE=$(SVN_OMEGA)/release
OMEGA_DEV_SRC=$(STAGING_DIR)/omega-dev
OMEGA_RELEASE_SRC=$(STAGING_DIR)/omega-release


### Staging ###
STAGING_DIR=$(shell pwd)/.staging
STAGING_DIR_BIN=$(STAGING_DIR)/bin
STAGING_DIR_WD=$(STAGING_DIR)/wd


### Local ###
UNIT_TEST_DIR=$(shell pwd)/unit-tests/
CHILL_DEV_TESTCASE_DIR=$(shell pwd)/test-cases/chill
CHILL_DEV_TESTCASES_SCRIPT=$(shell find $(CHILL_DEV_TESTCASE_DIR) -name "*.script")
CHILL_DEV_TESTCASES_STDOUT=$(patsubst %.script,%.stdout,$(CHILL_DEV_TESTCASES_SCRIPT))

### Python environment variables ###
PYTHON_2:=$(shell which python)
PYTHON_3:=$(shell which python3)

ifneq ($(PYTHON_3),)
PYTHON_3_VERSION=$(shell $(PYTHON_3) -c "import sysconfig; print(sysconfig.get_config_var('VERSION'))")
endif
PYTHON_2_VERSION=$(shell $(PYTHON_2) -c "import sysconfig; print sysconfig.get_config_var('VERSION')")
PYTHON_VERSION=$(firstword $(PYTHON_3_VERSION) $(PYTHON_2_VERSION))
PYTHON=$(shell which python$(PYTHON_VERSION))
### ---------------------------- ###


EXPORT=export CHILL_DEV_SRC=$(CHILL_DEV_SRC); \
       export CHILL_RELEASE_SRC=$(CHILL_RELEASE_SRC); \
       export OMEGA_DEV_SRC=$(OMEGA_DEV_SRC); \
       export OMEGA_RELEASE_SRC=$(OMEGA_RELEASE_SRC); \
       export STAGING_DIR_BIN=$(STAGING_DIR_BIN); \
       export STAGING_DIR_WD=$(STAGING_DIR_WD);

### deump environment ###
# define quiet to shut this part up #
ifndef quiet
$(info notify on failure?          $(NOTIFY_ON_FAILURE))
$(info staging directory           $(STAGING_DIR))
$(info binary directory            $(STAGING_DIR_BIN))
$(info working directory           $(STAGING_DIR_WD))
$(info omega home                  $(OMEGAHOME))
$(info chill home                  $(CHILLHOME))
$(info chill svn dev repo          $(SVN_CHILL_DEV))
$(info chill svn release repo      $(SVN_CHILL_RELEASE))
$(info chill dev src               $(CHILL_DEV_SRC))
$(info chill release src           $(CHILL_RELEASE_SRC))
$(info omega svn dev repo          $(SVN_OMEGA_DEV))
$(info omega svn release repo      $(SVN_OMEGA_RELEASE))
$(info omega dev src               $(OMEGA_DEV_SRC))
$(info omega release src           $(OMEGA_RELEASE_SRC))
$(info python                      $(PYTHON))
$(info unit tests                  $(UNIT_TEST_DIR))
#$(info chill-dev test cases        $(CHILL_DEV_TESTCASES_SCRIPT))
#$(info chill-dev test case stdouts $(CHILL_DEV_TESTCASES_STDOUT))
endif
### ----------------- ###

DIRTY_EXTS=pyc o log pickle
DIRTY_FILES=$(foreach de,$(DIRTY_EXTS),$(shell find . -name "*.$(de)"))
DIRTY_DIRS=$(shell find . -name '__pycache__' -and -type d) $(STAGING_DIR) pylang coverage_report

CORE_TESTS:=_extract util gcov _cpp_validate_env cpp_validate test __main__
OMEGA_TESTS:=omega
CHILL_TESTS:=chill

CORE_TESTS:=$(addsuffix .py,$(addprefix unit-tests/test_,$(CORE_TESTS)))
OMEGA_TESTS:=$(addsuffix .py,$(addprefix unit-tests/test_,$(OMEGA_TESTS)))
CHILL_TESTS:=$(addsuffix .py,$(addprefix unit-tests/test_,$(CHILL_TESTS)))

### The all target ###
.PHONY: all
all:
	$(MAKE) clean quiet=1
	$(MAKE) install quiet=1


### This will install the chill_test module ###
.PHONY: install
install: pylang
	$(PYTHON) makeparser.py
	#TODO: maybe run a setup or something



### This will uninstall teh chill_test module ###
.PHONY: uninstall
uninstall:
	#TODO: can python modules be uninstalled?



### Simply removes all files listed in DIRTY_FILES ###
.PHONY: clean
clean:
	rm -rf $(DIRTY_FILES)
	rm -rf $(DIRTY_DIRS)


pylang:
	git clone https://github.com/dhuth/pylang.git pylang-tmp
	$(PYTHON) pylang-tmp/make_grammar_parsers.py
	cp -r pylang-tmp/pylang pylang
	rm -rf pylang-tmp

### Test the test harness ###
.PHONY: test
test: $(STAGING_DIR_BIN) $(OMEGA_DEV_SRC) $(OMEGA_RELEASE_SRC) $(CHILL_DEV_SRC) $(CHILL_RELEASE_SRC)
	@echo "-----------------------------------------------------------"
	@echo "Note: This target tests the test suite it's self, not chill"
	@echo "To test chill, run python -m testchill ..."
	@echo "-----------------------------------------------------------"
	- $(EXPORT) $(PYTHON) -m unittest $(OMEGA_TESTS) $(CORE_TESTS) $(CHILL_TESTS)
	@ rm -rf $(STAGING_DIR)


.PHONY: test-chill
test-chill: $(STAGING_DIR_BIN) $(OMEGA_DEV_SRC) $(OMEGA_RELEASE_SRC) $(CHILL_DEV_SRC) $(CHILL_RELEASE_SRC)
	- $(EXPORT) $(PYTHON) -m unittest $(OMEGA_TESTS) $(CHILL_TESTS)
	@ rm -rf $(STAGING_DIR)


.PHONY: test-omega
test-omega: $(STAGING_DIR_BIN) $(OMEGA_DEV_SRC) $(OMEGA_RELEASE_SRC)
	- $(EXPORT) $(PYTHON) -m unittest $(OMEGA_TESTS)
	@ rm -rf $(STAGING_DIR)


.PHONY: test-core
test-core: $(STAGING_DIR_BIN) $(OMEGA_DEV_SRC) $(OMEGA_RELEASE_SRC) $(CHILL_DEV_SRC) $(CHILL_RELEASE_SRC) make-omega
	- $(EXPORT) $(PYTHON) -m unittest $(CORE_TESTS)
	@ rm -rf $(STAGING_DIR)


.PHONY:
test-core-%: $(STAGING_DIR_BIN)
	- $(EXPORT) $(PYTHON) -m unittest unit-tests/test_$*.py


.PHONY: test-debug
debug:
	@### NOTHING ###


### benchmarking (don't use if your're not me) ###
$(CHILL_DEV_TESTCASES_STDOUT): %.stdout: %.script
	$(EXPORT) cd $(STAGING_DIR_WD); $(STAGING_DIR_BIN)/chill $< > $@


.PHONY: benchmark-dev
benchmark-dev: test-chill $(CHILL_DEV_TESTCASES_STDOUT)
	# do nothing


### checking out and making directories ###
$(STAGING_DIR_BIN):
	mkdir -p $(STAGING_DIR_BIN)
	mkdir -p $(STAGING_DIR_WD)

$(CHILL_DEV_SRC): $(OMEGA_DEV_SRC) $(STAGING_DIR_BIN)
	svn export $(SVN_CHILL_DEV) $(CHILL_DEV_SRC)

$(CHILL_RELEASE_SRC): $(OMEGA_RELEASE_SRC) $(STAGIN_DIR_BIN)
	svn export $(SVN_CHILL_RELEASE) $(CHILL_RELEASE_SRC)

$(OMEGA_DEV_SRC): $(STAGING_DIR_BIN)
	svn export $(SVN_OMEGA_DEV) $(OMEGA_DEV_SRC)
	#cd $(OMEGA_DEV_SRC); $(MAKE) depend
	#cd $(OMEGA_DEV_SRC); $(MAKE)

$(OMEGA_RELEASE_SRC): $(STAGING_DIR_BIN)
	svn export $(SVN_OMEGA_RELEASE) $(OMEGA_RELEASE_SRC)
	#cd $(OMEGA_RELEASE_SRC); $(MAKE) depend
	#cd $(OMEGA_RELEASE_SRC): $(MAKE)

.PHONY: make-omega
make-omega:
	cd $(OMEGA_DEV_SRC); $(MAKE) depend
	cd $(OMEGA_DEV_SRC); $(MAKE)
	cd $(OMEGA_RELEASE_SRC); $(MAKE) depend
	cd $(OMEGA_RELEASE_SRC); $(MAKE)

#$(STAGING_DIR):
#	mkdir -p $(STAGING_DIR)