1############################################################################### 2# $Id:$ 3############################################################################### 4 5##xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 6@stdvars@ 7##xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 8 9## do not change this value 10subdir=examples/cpp/calc 11 12 13srcdir = @abs_top_srcdir@/examples/cpp/calc 14objdir = @abs_this_builddir@/examples/cpp/calc 15 16this : test 17test : test1 test2 test3 18 19all: calc1 calc2 calc3 test 20 21g_FILES = \ 22 $(srcdir)/calc.g \ 23 $(eol) 24 25g_cxx_FILES = \ 26 $(objdir)/CalcLexer.cpp \ 27 $(objdir)/CalcParser.cpp \ 28 $(objdir)/CalcTreeWalker.cpp \ 29 $(eol) 30 31g_hpp_FILES = \ 32 $(objdir)/CalcLexer.hpp \ 33 $(objdir)/CalcParser.hpp \ 34 $(objdir)/CalcParserTokenTypes.hpp \ 35 $(objdir)/CalcTreeWalker.hpp \ 36 $(eol) 37 38g_txt_FILES = \ 39 $(objdir)/CalcParserTokenTypes.txt \ 40 $(eol) 41 42g_gen_FILES = \ 43 $(g_cxx_FILES) \ 44 $(g_hpp_FILES) \ 45 $(g_txt_FILES) \ 46 $(eol) 47 48g_obj_FILES = \ 49 $(objdir)/CalcLexer@OBJEXT@ \ 50 $(objdir)/CalcParser@OBJEXT@ \ 51 $(objdir)/CalcTreeWalker@OBJEXT@ \ 52 $(eol) 53 54## Source files 55calc1_cxx_FILES = \ 56 $(g_cxx_FILES) \ 57 $(srcdir)/Main.cpp \ 58 $(eol) 59 60calc2_cxx_FILES = \ 61 $(g_cxx_FILES) \ 62 $(srcdir)/Main2.cpp \ 63 $(eol) 64 65calc3_cxx_FILES = \ 66 $(g_cxx_FILES) \ 67 $(srcdir)/Main3.cpp \ 68 $(eol) 69 70## Object files 71calc1_obj_FILES = \ 72 $(g_obj_FILES) \ 73 $(objdir)/Main@OBJEXT@ \ 74 $(eol) 75 76calc2_obj_FILES = \ 77 $(g_obj_FILES) \ 78 $(objdir)/Main2@OBJEXT@ \ 79 $(eol) 80 81calc3_obj_FILES = \ 82 $(g_obj_FILES) \ 83 $(objdir)/Main3@OBJEXT@ \ 84 $(eol) 85 86## Test commands .. 87test1_cmd = $(objdir)/calc1 < $(srcdir)/test.in 88test2_cmd = $(objdir)/calc2 '1+1;' 89test3_cmd = $(objdir)/calc3 '1+2;' 90 91 92## Tests to be executed 93test1 : calc1 94 @ v="$(verbose)"; \ 95 if test $$v -gt 0 ; then \ 96 @ECHO@ "$(test1_cmd)" ; \ 97 else \ 98 @ECHO@ "exec test1 .."; \ 99 fi 100 @ $(test1_cmd) 101 102test2 : calc2 103 @ v="$(verbose)"; \ 104 if test $$v -gt 0 ; then \ 105 @ECHO@ "$(test2_cmd)" ; \ 106 else \ 107 @ECHO@ "exec test2 .."; \ 108 fi 109 @ $(test2_cmd) 110 111test3 : calc3 112 @ v="$(verbose)"; \ 113 if test $$v -gt 0 ; then \ 114 @ECHO@ "$(test3_cmd)" ; \ 115 else \ 116 @ECHO@ "exec test3 .."; \ 117 fi 118 @ $(test3_cmd) 119 120 121## How to make binaries 122calc1 : $(calc1_obj_FILES) @ANTLR_LIB@ 123 @ @CXX_LINK_CMD@ $@ $(calc1_obj_FILES) 124 125calc2 : $(calc2_obj_FILES) @ANTLR_LIB@ 126 @ @CXX_LINK_CMD@ $@ $(calc2_obj_FILES) 127 128calc3 : $(calc3_obj_FILES) @ANTLR_LIB@ 129 @ @CXX_LINK_CMD@ $@ $(calc3_obj_FILES) 130 131## How to compile ANTLR grammar files 132$(g_gen_FILES) : $(g_FILES) @ANTLR_JAR@ 133 @ANTLR_COMPILE_CMD@ $(g_FILES) 134 135## GNU make - how to make object file 136$(objdir)/%@OBJEXT@ : $(srcdir)/%.cpp 137 @ @CXX_COMPILE_CMD@ $< 138 139## GNU make - how to make object file 140$(objdir)/%@OBJEXT@ : $(objdir)/%.cpp 141 @ @CXX_COMPILE_CMD@ $< 142 143## GNU make - how to make object file 144%@OBJEXT@ : $(srcdir)/%.cpp 145 @ @CXX_COMPILE_CMD@ $< 146 147## GNU make - how to make object file 148%@OBJEXT@ : $(objdir)/%.cpp 149 @ @CXX_COMPILE_CMD@ $< 150 151## Housecleaning 152clean: 153 @RMF@ *.o *.obj *.exe calc1 calc2 calc3 $(g_gen_FILES) test1 test2 test3 154 155distclean: clean 156 @RMF@ Makefile 157 158# Dependencies 159$(objdir)/CalcLexer@OBJEXT@ : \ 160 $(objdir)/CalcLexer.hpp \ 161 $(objdir)/CalcParserTokenTypes.hpp 162 163$(objdir)/CalcParser@OBJEXT@ : \ 164 $(objdir)/CalcParser.hpp \ 165 $(objdir)/CalcParserTokenTypes.hpp 166 167$(objdir)/CalcTreeWalker@OBJEXT@ : \ 168 $(objdir)/CalcTreeWalker.hpp \ 169 $(objdir)/CalcParserTokenTypes.hpp 170 171$(objdir)/Main@OBJEXT@ : \ 172 $(objdir)/CalcLexer.hpp \ 173 $(objdir)/CalcParserTokenTypes.hpp \ 174 $(objdir)/CalcParser.hpp \ 175 $(objdir)/CalcTreeWalker.hpp 176 177$(objdir)/Main2@OBJEXT@ : \ 178 $(objdir)/CalcLexer.hpp \ 179 $(objdir)/CalcParserTokenTypes.hpp \ 180 $(objdir)/CalcParser.hpp \ 181 $(objdir)/CalcTreeWalker.hpp 182 183$(objdir)/Main3@OBJEXT@ : \ 184 $(objdir)/CalcLexer.hpp \ 185 $(objdir)/CalcParserTokenTypes.hpp \ 186 $(objdir)/CalcParser.hpp \ 187 $(objdir)/CalcTreeWalker.hpp 188 189## If cxx.sh script changed .. 190$(calc1_obj_FILES) : @abs_this_builddir@/scripts/cxx.sh 191$(calc2_obj_FILES) : @abs_this_builddir@/scripts/cxx.sh 192$(calc3_obj_FILES) : @abs_this_builddir@/scripts/cxx.sh 193 194## If link.sh script changed .. 195$(calc1_obj_FILES) : @abs_this_builddir@/scripts/link.sh 196$(calc2_obj_FILES) : @abs_this_builddir@/scripts/link.sh 197$(calc3_obj_FILES) : @abs_this_builddir@/scripts/link.sh 198 199### get configured dependencies - for example, just list 200### autoconf variable ANTLR_JAR as reference and it will 201### be done automatically as stddeps contains appropr. 202### rule. For details, checkout scripts/config.vars[.in] 203@stddeps@ 204 205 206