author | Jan Vrany <jan.vrany@fit.cvut.cz> |
Mon, 17 Sep 2012 09:03:06 +0000 | |
changeset 39 | d361eb9419e6 |
parent 38 | a64f4ad690f5 |
child 40 | c99f058e2276 |
permissions | -rw-r--r-- |
27 | 1 |
# $Header$ |
2 |
# |
|
3 |
# DO NOT EDIT |
|
38 | 4 |
# automagically generated from the projectDefinition: cvut_stx_goodies_newcompiler. |
27 | 5 |
# |
6 |
# Warning: once you modify this file, do not rerun |
|
7 |
# stmkmp or projectDefinition-build again - otherwise, your changes are lost. |
|
8 |
# |
|
9 |
# The Makefile as generated by this Make.proto supports the following targets: |
|
10 |
# make - compile all st-files to a classLib |
|
11 |
# make clean - clean all temp files |
|
12 |
# make clobber - clean all |
|
13 |
# |
|
14 |
# This file contains definitions for Unix based platforms. |
|
15 |
# It shares common definitions with the win32-make in Make.spec. |
|
16 |
||
17 |
# |
|
18 |
# position (of this package) in directory hierarchy: |
|
19 |
# (must point to ST/X top directory, for tools and includes) |
|
20 |
TOP=../../../../stx |
|
21 |
INCLUDE_TOP=$(TOP)/.. |
|
22 |
||
23 |
# subdirectories where targets are to be made: |
|
24 |
SUBDIRS= |
|
25 |
||
26 |
||
27 |
# subdirectories where Makefiles are to be made: |
|
28 |
# (only define if different from SUBDIRS) |
|
29 |
# ALLSUBDIRS= |
|
30 |
||
31 |
REQUIRED_SUPPORT_DIRS= |
|
32 |
||
33 |
# if your embedded C code requires any system includes, |
|
34 |
# add the path(es) here:, |
|
35 |
# ********** OPTIONAL: MODIFY the next lines *** |
|
36 |
# LOCALINCLUDES=-Ifoo -Ibar |
|
39 | 37 |
LOCALINCLUDES= -I$(INCLUDE_TOP)/stx/goodies/refactoryBrowser/parser -I$(INCLUDE_TOP)/stx/libwidg -I$(INCLUDE_TOP)/stx/goodies/sunit -I$(INCLUDE_TOP)/stx/libbasic2 -I$(INCLUDE_TOP)/stx/libcompat -I$(INCLUDE_TOP)/stx/libbasic -I$(INCLUDE_TOP)/stx/libcomp |
27 | 38 |
|
39 |
||
40 |
# if you need any additional defines for embedded C code, |
|
41 |
# add them here:, |
|
42 |
# ********** OPTIONAL: MODIFY the next lines *** |
|
43 |
# LOCALDEFINES=-Dfoo -Dbar -DDEBUG |
|
44 |
LOCALDEFINES= |
|
45 |
||
46 |
LIBNAME=libcvut_stx_goodies_newcompiler |
|
37 | 47 |
STCLOCALOPT='-package=$(PACKAGE)' -I. $(LOCALINCLUDES) $(STCLOCALOPTIMIZATIONS) $(STCWARNINGS) $(LOCALDEFINES) -headerDir=. -varPrefix=$(LIBNAME) |
27 | 48 |
|
49 |
||
50 |
# ********** OPTIONAL: MODIFY the next line *** |
|
51 |
# additional C-libraries that should be pre-linked with the class-objects |
|
52 |
LD_OBJ_LIBS= |
|
53 |
LOCAL_SHARED_LIBS= |
|
54 |
||
55 |
||
56 |
# ********** OPTIONAL: MODIFY the next line *** |
|
57 |
# additional C targets or libraries should be added below |
|
58 |
LOCAL_EXTRA_TARGETS= |
|
59 |
||
60 |
OBJS= $(COMMON_OBJS) $(UNIX_OBJS) |
|
61 |
||
62 |
||
63 |
||
64 |
all:: preMake classLibRule postMake |
|
65 |
||
37 | 66 |
pre_objs:: |
67 |
||
27 | 68 |
|
69 |
||
70 |
||
37 | 71 |
# Update SVN revision in stx_libbasic3.st |
72 |
ifneq (,$(findstring .svn,$(wildcard .svn))) |
|
73 |
.svnversion: *.st |
|
74 |
if [ -d .svn ]; then \ |
|
75 |
rev=$(shell svnversion -n); \ |
|
76 |
echo -n $$rev > .svnversion; \ |
|
77 |
else \ |
|
78 |
echo -n exported > .svnversion; \ |
|
34
4c372f8296b9
IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
79 |
fi |
37 | 80 |
|
81 |
cvut_stx_goodies_newcompiler.o: cvut_stx_goodies_newcompiler.st .svnversion |
|
39 | 82 |
@if [ -d .svn ]; then \ |
37 | 83 |
rev2="$(shell printf "%-16s" $$(cat .svnversion))"; \ |
39 | 84 |
echo " [SV] Expanding svnRevisionNo in $1.st"; \ |
37 | 85 |
sed -e "s/\"\$$SVN\-Revision:\".*\"\$$\"/\"\$$SVN-Revision:\"\'$$rev2\'\"\$$\"/g" $< > .cvut_stx_goodies_newcompiler.svn.st; \ |
86 |
fi |
|
39 | 87 |
$(MAKE) CC="$(CLASSLIB_CC)" OPT="$(OPT)" SEPINITCODE="$(SEPINITCODE)" STC="$(STC)" STFILE=.cvut_stx_goodies_newcompiler.svn $(C_RULE); |
88 |
sed -i -e "s/\".cvut_stx_goodies_newcompiler.svn.st\");/\"\cvut_stx_goodies_newcompiler.st\");/g" .cvut_stx_goodies_newcompiler.svn.c |
|
89 |
$(MAKE) .cvut_stx_goodies_newcompiler.svn.$(O) |
|
90 |
@mv .cvut_stx_goodies_newcompiler.svn.$(O) cvut_stx_goodies_newcompiler.$(O) |
|
37 | 91 |
endif |
92 |
||
93 |
||
27 | 94 |
|
95 |
||
96 |
# add more install actions here |
|
97 |
install:: |
|
98 |
||
99 |
# add more install actions for aux-files (resources) here |
|
100 |
installAux:: |
|
101 |
||
102 |
# add more preMake actions here |
|
103 |
preMake:: |
|
104 |
||
105 |
# add more postMake actions here |
|
106 |
postMake:: cleanjunk |
|
107 |
||
108 |
prereq: $(REQUIRED_SUPPORT_DIRS) |
|
109 |
cd $(TOP)/libbasic && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
110 |
cd $(TOP)/goodies/refactoryBrowser/parser && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
111 |
cd $(TOP)/libbasic2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
112 |
cd $(TOP)/libcomp && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
113 |
cd $(TOP)/libview && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
39 | 114 |
cd $(TOP)/libdb && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
27 | 115 |
cd $(TOP)/libview2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
34
4c372f8296b9
IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
116 |
cd $(TOP)/libboss && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
39 | 117 |
cd $(TOP)/libdb/libodbc && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
118 |
cd $(TOP)/libdb/libsqlite && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
34
4c372f8296b9
IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
119 |
cd $(TOP)/goodies/sunit && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
27 | 120 |
cd $(TOP)/libui && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
39 | 121 |
cd $(TOP)/libbasic3 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
27 | 122 |
cd $(TOP)/libwidg && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
37 | 123 |
cd $(TOP)/libhtml && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
27 | 124 |
cd $(TOP)/libwidg2 && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
125 |
cd $(TOP)/libtool && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
|
34
4c372f8296b9
IRTransformTest: test fixes (do not use Squeaks curly arrays)
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
32
diff
changeset
|
126 |
cd $(TOP)/libcompat && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
27 | 127 |
cd $(TOP)/librun && $(MAKE) "CFLAGS_LOCAL=$(GLOBALDEFINES)" |
128 |
||
129 |
||
130 |
||
131 |
cleanjunk:: |
|
37 | 132 |
-rm -f *.s *.s2 |
27 | 133 |
|
134 |
clean:: |
|
135 |
-rm -f *.o *.H |
|
136 |
||
137 |
clobber:: clean |
|
138 |
-rm -f *.so *.dll |
|
139 |
||
140 |
||
141 |
# BEGINMAKEDEPEND --- do not remove this line; make depend needs it |
|
142 |
$(OUTDIR)IRBuilder.$(O) IRBuilder.$(H): IRBuilder.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
39 | 143 |
$(OUTDIR)IRBuilderTest.$(O) IRBuilderTest.$(H): IRBuilderTest.st $(INCLUDE_TOP)/stx/goodies/sunit/TestCase.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
27 | 144 |
$(OUTDIR)IRBytecodeGenerator.$(O) IRBytecodeGenerator.$(H): IRBytecodeGenerator.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
145 |
$(OUTDIR)IRFunction.$(O) IRFunction.$(H): IRFunction.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
146 |
$(OUTDIR)IRInstruction.$(O) IRInstruction.$(H): IRInstruction.st $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
147 |
$(OUTDIR)IRInterpreter.$(O) IRInterpreter.$(H): IRInterpreter.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
148 |
$(OUTDIR)IRSequence.$(O) IRSequence.$(H): IRSequence.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
149 |
$(OUTDIR)IRStackCount.$(O) IRStackCount.$(H): IRStackCount.st $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
39 | 150 |
$(OUTDIR)IRTransformTest.$(O) IRTransformTest.$(H): IRTransformTest.st $(INCLUDE_TOP)/stx/goodies/sunit/TestCase.$(H) $(INCLUDE_TOP)/stx/goodies/sunit/TestAsserter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
27 | 151 |
$(OUTDIR)cvut_stx_goodies_newcompiler.$(O) cvut_stx_goodies_newcompiler.$(H): cvut_stx_goodies_newcompiler.st $(INCLUDE_TOP)/stx/libbasic/LibraryDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/ProjectDefinition.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
152 |
$(OUTDIR)IRAccess.$(O) IRAccess.$(H): IRAccess.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
153 |
$(OUTDIR)IRClosure.$(O) IRClosure.$(H): IRClosure.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
154 |
$(OUTDIR)IRConstant.$(O) IRConstant.$(H): IRConstant.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
37 | 155 |
$(OUTDIR)IRDecompiler.$(O) IRDecompiler.$(H): IRDecompiler.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInterpreter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
27 | 156 |
$(OUTDIR)IRDup.$(O) IRDup.$(H): IRDup.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
157 |
$(OUTDIR)IRJump.$(O) IRJump.$(H): IRJump.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
158 |
$(OUTDIR)IRLine.$(O) IRLine.$(H): IRLine.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
159 |
$(OUTDIR)IRMethod.$(O) IRMethod.$(H): IRMethod.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRFunction.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
160 |
$(OUTDIR)IRPop.$(O) IRPop.$(H): IRPop.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
161 |
$(OUTDIR)IRPrinter.$(O) IRPrinter.$(H): IRPrinter.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInterpreter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
162 |
$(OUTDIR)IRReturn.$(O) IRReturn.$(H): IRReturn.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
163 |
$(OUTDIR)IRSend.$(O) IRSend.$(H): IRSend.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
164 |
$(OUTDIR)IRTranslator.$(O) IRTranslator.$(H): IRTranslator.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInterpreter.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
165 |
$(OUTDIR)IRBlockReturnTop.$(O) IRBlockReturnTop.$(H): IRBlockReturnTop.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRReturn.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
166 |
$(OUTDIR)IRInstVarAccess.$(O) IRInstVarAccess.$(H): IRInstVarAccess.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
167 |
$(OUTDIR)IRJumpIf.$(O) IRJumpIf.$(H): IRJumpIf.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRJump.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
168 |
$(OUTDIR)IRJumpOverBlock.$(O) IRJumpOverBlock.$(H): IRJumpOverBlock.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRJump.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
169 |
$(OUTDIR)IRLiteralVariableAccess.$(O) IRLiteralVariableAccess.$(H): IRLiteralVariableAccess.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
170 |
$(OUTDIR)IRTempAccess.$(O) IRTempAccess.$(H): IRTempAccess.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
171 |
$(OUTDIR)IRInstVarRead.$(O) IRInstVarRead.$(H): IRInstVarRead.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstVarAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
172 |
$(OUTDIR)IRInstVarStore.$(O) IRInstVarStore.$(H): IRInstVarStore.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstVarAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
173 |
$(OUTDIR)IRLiteralVariableRead.$(O) IRLiteralVariableRead.$(H): IRLiteralVariableRead.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRLiteralVariableAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
174 |
$(OUTDIR)IRLiteralVariableStore.$(O) IRLiteralVariableStore.$(H): IRLiteralVariableStore.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRLiteralVariableAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
175 |
$(OUTDIR)IRTempRead.$(O) IRTempRead.$(H): IRTempRead.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRTempAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
176 |
$(OUTDIR)IRTempStore.$(O) IRTempStore.$(H): IRTempStore.st $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRTempAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRAccess.$(H) $(INCLUDE_TOP)/cvut/stx/goodies/newcompiler/IRInstruction.$(H) $(INCLUDE_TOP)/stx/libbasic/Link.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(STCHDR) |
|
177 |
$(OUTDIR)extensions.$(O): extensions.st $(INCLUDE_TOP)/stx/libcomp/ByteCodeCompiler.$(H) $(INCLUDE_TOP)/stx/libcomp/Parser.$(H) $(INCLUDE_TOP)/stx/libcomp/Scanner.$(H) $(INCLUDE_TOP)/stx/libbasic/Object.$(H) $(INCLUDE_TOP)/stx/libbasic/Class.$(H) $(INCLUDE_TOP)/stx/libbasic/ClassDescription.$(H) $(INCLUDE_TOP)/stx/libbasic/Behavior.$(H) $(STCHDR) |
|
178 |
||
179 |
# ENDMAKEDEPEND --- do not remove this line |
|
180 |