1# Makefile.def
2
3# Set variables:
4#
5# for install:
6#    ASL - path name of iASL compiler
7#
8# Internal variables to be pre-defined:
9#   TOP    - relative name of aslts directory
10#   AMLMOD - name of resulting AML module (DefinitionBlock->AMLFileName)
11#            without .aml extension.
12
13# Two level hierarchy of compilation:
14# optimization & (32/64 mode).
15#
16#  Directory |           Flags
17#            |---------------------------
18#            | optimization |  32/64 mode
19# ---------------------------------------
20#    opt/32  |              |  -r 1
21#    opt/64  |              |  -r 2
22#   nopt/32  |  -oa         |  -r 1
23#   nopt/64  |  -oa         |  -r 2
24
25SETOF_INDEXES= 0 1 2 3
26SETOF_AMLDIRS= nopt/32 nopt/64 opt/32 opt/64
27SETOF_ASLFAGS= "-oa -r 1" "-oa -r 2" "-r 1" "-r 2"
28COMMON_ASL_FLAGS= "-cr -vs -l -sc -sa -ic -ta -ts -so -lm -ln -ls -li"
29
30COMPILER_LOG="$(TOP)/tmp/aml/$(aslversion)/compile.txt"
31COMPILER_ERROR_LOG="$(TOP)/tmp/aml/$(aslversion)/error.txt"
32
33# Create general directory
34
35GDMODE=775
36INST= install
37INST.dir= $(INST) -d -m $(GDMODE) $@
38ASLMOD= MAIN
39
40# Empty all (specify 'all' target, if needed, before Makefile.def include)
41
42empty_all:	FORCE
43
44# Rule to create directories located into aslts/tmp/aml;
45# aslversion is determined dynamically.
46
47${SETOF_AMLDIRS:%=$(TOP)/tmp/aml/$(aslversion)/%}:
48	@$(INST.dir)
49
50# Make-install one particular Test Case for all modes
51
52install_all_modes_of_test_case:	${SETOF_AMLDIRS:%=$(TOP)/tmp/aml/$(aslversion)/%}
53	@rval=0; \
54	if [ -f "$(ASL)" ]; then \
55		dd=`pwd`; \
56		echo "---- Test path: $$dd" >> $(COMPILER_LOG); \
57		echo "---- Test path: $$dd" >> $(COMPILER_ERROR_LOG); \
58		for i in ${SETOF_INDEXES}; do \
59			set -- $(SETOF_AMLDIRS); \
60			shift $$i; \
61			CUR_AMLDIR=$$1; \
62			set -- $(SETOF_ASLFAGS); \
63			shift $$i; \
64			CUR_ASLFLAGS=$$1; \
65			echo "---- Test type: $$CUR_AMLDIR   (Flags $(COMMON_ASL_FLAGS) $$CUR_ASLFLAGS $(ADD_ASLFLAGS))" >> $(COMPILER_LOG); \
66			echo "---- Test type: $$CUR_AMLDIR   (Flags $(COMMON_ASL_FLAGS) $$CUR_ASLFLAGS $(ADD_ASLFLAGS))" >> $(COMPILER_ERROR_LOG); \
67			for j in ${AMLMOD}; do \
68				rm -f $$j.aml; \
69			done; \
70			for j in ${ASLMOD} $(ASLMODADD); do \
71				echo "---- Compile: $$j.asl" >> $(COMPILER_LOG); \
72				"$(ASL)" $$CUR_ASLFLAGS "$(COMMON_ASL_FLAGS)" $(ADD_ASLFLAGS) $$j.asl >> $(COMPILER_LOG) 2>> $(COMPILER_ERROR_LOG); \
73				ret=$$?; \
74				echo "" >> $(COMPILER_LOG); \
75				rm $$j.asm; \
76				rm $$j.c; \
77				rm $$j.h; \
78				rm $$j.i; \
79				rm $$j.hex; \
80				rm $$j.lst; \
81				rm $$j.map; \
82				rm $$j.nsp; \
83				rm $$j.offset.h; \
84				rm $$j.src; \
85				if [ $$ret != 0 ]; then \
86					rval=1; \
87					>&2 echo "**** Unexpected iASL failure in $$dd/$$j.asl!"; \
88					exit 1; \
89				fi; \
90			done; \
91			if [ $$ret != 0 ]; then break; fi; \
92			for j in ${AMLMOD}; do \
93				ls -l $$j.aml >> $(COMPILER_LOG); \
94				echo "---- Move: $$j.aml $(TOP)/tmp/aml/$(aslversion)/$$CUR_AMLDIR" >> $(COMPILER_LOG); \
95				mv $$j.aml $(TOP)/tmp/aml/$(aslversion)/$$CUR_AMLDIR; \
96				ret=$$?; \
97				if [ $$ret != 0 ]; then rval=2; echo "**** mv failed!"; break; fi; \
98			done; \
99		done; \
100	else \
101		echo "Bad iASL 0: <$(ASL)> does not exist"; \
102		rval=1; \
103	fi; \
104	if [ $$rval != 0 ]; then exit 1; fi
105
106# Make-install one particular Test Case for all modes.
107# Move results to aslts/tmp/aml directory.
108# Determine current version of iASL.
109# Create aslts/tmp/aml/<version> directory with the precautions.
110
111install_test_case:
112	@if [ ! -f "$(ASL)" ]; then \
113		echo "Bad iASL 1: <$(ASL)> does not exist"; exit 1; \
114	else \
115		aslversion=""; \
116		testcasedir=`pwd`; \
117		cd $(TOP); \
118		if [ $$? -ne 0 ]; then \
119			echo "Bad dir: $(TOP)"; exit 1; \
120		else \
121			dd=`pwd`; \
122			base=`basename "$$dd"`; \
123			if [ x$$base != xaslts ]; then \
124				echo "Bad base name of ASLTS Test Suite: <$$base> of <$$dd>"; exit 1; \
125			else \
126				x=`"$(ASL)" -va xxx | grep "Compiler version"`; \
127				echo "---- iASL version: $$x"; \
128				if [ -z "$$x" ]; then \
129					echo "Bad iASL 2: bad signon <$(ASL)>"; exit 1; \
130				else \
131					aslversion=`echo "$$x" | awk -F" " '{ print $$5}'`; \
132					if [ -z "$$aslversion" ]; then \
133						echo "Bad iASL 3: could not get version <$(ASL)>"; exit 1; \
134					else \
135						if [ ! -d ./tmp ]; then \
136							mkdir tmp; \
137						fi; \
138						cd ./tmp; \
139						if [ $$? -ne 0 ]; then \
140							echo "Bad dir: aslts/tmp"; exit 1; \
141						else \
142							if [ ! -d ./aml ]; then \
143								mkdir aml; \
144							fi; \
145							cd ./aml; \
146							if [ $$? -ne 0 ]; then \
147								echo "Bad dir: aslts/tmp/aml"; exit 1; \
148							else \
149								if [ ! -d "./$$aslversion" ]; then \
150									mkdir $$aslversion; \
151								fi; \
152								cd ./$$aslversion; \
153								if [ $$? -ne 0 ]; then \
154									echo "Bad dir: aslts/tmp"; exit 1; \
155								else \
156									cd "$$testcasedir"; \
157									export aslversion; make install_all_modes_of_test_case; \
158								fi; \
159							fi; \
160						fi; \
161					fi; \
162				fi; \
163			fi; \
164		fi; \
165	fi
166
167# Compile one particular Test Case for all modes.
168# No moving results to aslts/tmp/aml directory.
169
170compile_test_case:
171	@rval=0; \
172
173	echo "Compile_test_case"
174
175	if [ -f "$(ASL)" ]; then \
176		for i in ${SETOF_INDEXES}; do \
177			set -- $(SETOF_AMLDIRS); \
178			shift $$i; \
179			CUR_AMLDIR=$$1; \
180			set -- $(SETOF_ASLFAGS); \
181			shift $$i; \
182			CUR_ASLFLAGS=$$1; \
183			for j in ${ASLMOD} $(ASLMODADD); do \
184				"$(ASL)" $$CUR_ASLFLAGS $(ADD_ASLFLAGS) $$j.asl; \
185				ret=$$?; \
186				if [ $$ret != 0 ]; then rval=1; echo "**** Unexpected iASL failure!"; exit 1; fi; \
187			done; \
188		done; \
189	else \
190		echo "Bad iASL 4: <$(ASL)> does not exist"; \
191		rval=1; \
192	fi; \
193	if [ $$rval != 0 ]; then exit 1; fi
194
195