1# ast nmake 2d viewpath and makepath tests 2 3INCLUDE cc.def 4 5TEST 01 'no view' 6 7 EXEC 8 INPUT Makefile $'all : .MAKE 9 print $(*.VIEW) 10 print $(...:N=\\(*\\)$(MAKEFILE)*:H) 11 print $(...:N=$(MAKEFILE)*:H)' 12 OUTPUT - $'.\n\nMakefile Makefile.mo' 13 14 EXEC 15 OUTPUT - $'.\n()Makefile\nMakefile Makefile.mo Makefile.ms' 16 17TEST 02 'basic MAKEPATH' 18 19 EXPORT MAKEPATH=../bot 20 21 CD top 22 23 EXEC -n 24 INPUT ../bot/Makefile $'main :: main.c' 25 INPUT ../bot/main.c $'#include "hdr.h" 26int main(){return 0;}' 27 INPUT ../bot/hdr.h $'extern int n;' 28 OUTPUT - $'+ cc -O -I../bot -c ../bot/main.c 29+ cc -O -o main main.o' 30 31TEST 03 'basic VPATH' 32 33 EXPORT VPATH=$TWD/top:$TWD/bot 34 35 CD top/src 36 37 EXEC -n 38 INPUT $TWD/bot/src/Makefile $'main :: main.c' 39 INPUT $TWD/bot/src/main.c $'#include "hdr.h" 40int main(){return 0;}' 41 INPUT $TWD/bot/src/hdr.h $'extern int n;' 42 OUTPUT - $'+ cc -O -I'$TWD$'/bot/src -c '$TWD$'/bot/src/main.c 43+ cc -O -o main main.o' 44 45TEST 04 'VPATH vs -I-' 46 47 EXPORT VPATH=$TWD/dev:$TWD/ofc 48 49 CD dev 50 51 EXEC -n -s -g debug.mk s.i CC.DIALECT='-I-' 52 INPUT $TWD/ofc/Makefile $'.INIT : .ppinit 53.ppinit : .MAKE .VIRTUAL .FORCE 54 CC = $(MAKEPP) -I-D'$TWD$'/pp.probe 55s :: s.c' 56 INPUT $TWD/ofc/s.c $'#include "h1.h"' 57 INPUT $TWD/ofc/h1.h $'#include "h2.h" 58int ofc_h1;' 59 INPUT $TWD/ofc/h2.h $'int ofc_h2;' 60 OUTPUT s.i $'# 1 "'$TWD$'/ofc/s.c" 61 62# 1 "'$TWD$'/ofc/h1.h" 1 63 64# 1 "'$TWD$'/ofc/h2.h" 1 65int ofc_h2; 66# 2 "'$TWD$'/ofc/h1.h" 2 67int ofc_h1; 68# 2 "'$TWD$'/ofc/s.c" 2' 69 70 EXEC -n -s -g debug.mk s.i CC.DIALECT='-I-' 71 INPUT $TWD/dev/h2.h $'int dev_h2;' 72 OUTPUT s.i $'# 1 "'$TWD$'/ofc/s.c" 73 74# 1 "'$TWD$'/ofc/h1.h" 1 75 76# 1 "h2.h" 1 77int dev_h2; 78# 2 "'$TWD$'/ofc/h1.h" 2 79int ofc_h1; 80# 2 "'$TWD$'/ofc/s.c" 2' 81 82TEST 05 ':MAKE: with one node VPATH' 83 84 EXPORT VPATH=$TWD 85 86 EXEC -n 87 INPUT Makefile $':MAKE:' 88 INPUT lmf/Makefile $':MAKE:' 89 INPUT lmf/src/Makefile $':MAKE:' 90 INPUT lmf/src/api/Makefile $':MAKE:' 91 INPUT lmf/src/api/mmomc/Makefile $':MAKE:' 92 INPUT lmf/src/api/mmomc/tools/Makefile $':MAKE:' 93 INPUT lmf/src/api/mmomc/tools/src/Makefile $':MAKE:' 94 INPUT lmf/src/api/mmomc/tools/src/item/Makefile $':MAKE:' 95 INPUT lmf/src/api/mmomc/tools/src/item/libsrc/Makefile $':MAKE:' 96 INPUT lmf/src/api/mmomc/tools/src/item/libsrc/item/Makefile $' 97NODE1 = $(VPATH:/:/ /G:O=1) 98MMOMCTOP1 = $(PWD:P=R=$(NODE1)) 99MMOMCTOP = $(MMOMCTOP1)/lmf/src/api/mmomc 100ARCH_MAKEFILE = Item.arch.mk 101include $(MMOMCTOP)/include/nmake/desc.mk 102all : 103 : NODE1 : $(NODE1) : 104 : MMOMCTOP1 : $(MMOMCTOP1) : 105 : MMOMCTOP : $(MMOMCTOP) : 106 : ARCH_MAKEFILE : $(ARCH_MAKEFILE) : 107 : $(MMOMCTOP)/include/nmake/desc.mk :' 108 INPUT lmf/src/api/mmomc/include/nmake/desc.mk $'error 1 hit desc.mk' 109 OUTPUT - $'+ : NODE1 : '$TWD$' : 110+ : MMOMCTOP1 : ../../../../../../../../.. : 111+ : MMOMCTOP : ../../../../../../../../../lmf/src/api/mmomc : 112+ : ARCH_MAKEFILE : Item.arch.mk : 113+ : ../../../../../../../../../lmf/src/api/mmomc/include/nmake/desc.mk :' 114 ERROR - $'lmf/src/api/mmomc/tools/src/item/libsrc/item: 115make [lmf/src/api/mmomc/tools/src/item/libsrc/item]: warning: hit desc.mk 116lmf/src/api/mmomc/tools/src/item/libsrc: 117lmf/src/api/mmomc/tools/src/item: 118lmf/src/api/mmomc/tools/src: 119lmf/src/api/mmomc/tools: 120lmf/src/api/mmomc: 121lmf/src/api: 122lmf/src: 123lmf:' 124 125TEST 06 'VROOT' 126 127 EXPORT VPATH=$TWD/ofc/proj 128 129 CD ofc/proj 130 131 EXEC -n 132 INPUT $TWD/ofc/proj/Makefile $'all : 133 : $(PWD) : $(VROOT) :' 134 OUTPUT - $'+ : '$TWD$'/ofc/proj : . :' 135 136 CD src 137 138 EXEC -n 139 INPUT $TWD/ofc/proj/src/Makefile $'all : 140 : $(PWD) : $(VROOT) :' 141 OUTPUT - $'+ : '$TWD$'/ofc/proj/src : .. :' 142 143 CD util 144 145 EXEC -n 146 INPUT $TWD/ofc/proj/src/util/Makefile $'all : 147 : $(PWD) : $(VROOT) :' 148 OUTPUT - $'+ : '$TWD$'/ofc/proj/src/util : ../.. :' 149 150 EXPORT VPATH=$TWD/dev/proj:$TWD/ofc/proj 151 152 CD $TWD/dev/proj 153 154 EXEC -n 155 OUTPUT - $'+ : '$TWD$'/dev/proj : . :' 156 157 CD src 158 159 EXEC -n 160 OUTPUT - $'+ : '$TWD$'/dev/proj/src : .. :' 161 162 CD util 163 164 EXEC -n 165 OUTPUT - $'+ : '$TWD$'/dev/proj/src/util : ../.. :' 166 167TEST 07 ':MAKE: with 2 node VPATH' 168 169 EXPORT VPATH=$TWD/top:$TWD/bot 170 171 CD top 172 173 EXEC -n 174 INPUT $TWD/top/Makefile $':MAKE:' 175 INPUT $TWD/top/a/Makefile $'all : a.x\n\t: $(PWD) : $(*)' 176 INPUT $TWD/bot/a/a.x 177 INPUT $TWD/bot/b/Makefile $'all : b.x\n\t: $(PWD) : $(*)' 178 INPUT $TWD/top/b/b.x 179 OUTPUT - $'+ : '$TWD$'/top/a : '$TWD$'/bot/a/a.x 180+ : '$TWD$'/top/b : b.x' 181 ERROR - $'a:\nb:' 182 183TEST 08 ':INSTALLDIR: with 2 node VPATH' 184 185 EXPORT VPATH=$TWD/dev:$TWD/ofc 186 187 CD ofc 188 189 EXEC install 190 INPUT Makefile $'INSTALLROOT = . 191.SOURCE : src 192$(ETCDIR) :INSTALLDIR: a.c b.c c.c' 193 INPUT src/a.c $'ofc' 194 INPUT src/b.c 195 INPUT src/c.c 196 ERROR - $'+ mkdir -p etc 197+ ignore cp src/a.c etc/a.c 198+ ignore cp src/b.c etc/b.c 199+ ignore cp src/c.c etc/c.c' 200 201 CD ../dev 202 203 EXEC --regress=sync install 204 ERROR - $'+ mkdir -p etc' 205 206 EXEC install 207 INPUT src/a.c $'dev' 208 ERROR - $'+ ignore cp src/a.c etc/a.c' 209 210TEST 09 '3 node contained VPATH with .SOURCE dups' 211 212 EXPORT VPATH=$TWD:$TWD/inca:$TWD/incb 213 214 EXEC -n 215 INPUT Makefile $'t :: t.c' 216 INPUT t.c $'#include "a.h" 217#include "b.h" 218int main() { return 0; }' 219 INPUT inca/a.h $'#define a 1' 220 INPUT incb/b.h $'#define b 1' 221 OUTPUT - $'+ cc -O -I'$TWD$'/inca -I'$TWD$'/incb -c t.c 222+ cc -O -o t t.o' 223 224 EXEC -n 225 INPUT Makefile $'.SOURCE.h : inca incb\nt :: t.c' 226 227TEST 10 'VROOT after VPATH change' 228 229 EXPORT VPATH=$TWD/n1 230 231 CD n1/a 232 233 EXEC 234 INPUT $TWD/n1/Localrules.mk $'LOCAL = local' 235 INPUT Makefile $'include "$(VROOT)/Localrules.mk" 236all : 237 : LOCAL : $(LOCAL) : 238 : VROOT : $(VROOT) : 239 : VOFFSET : $(VOFFSET) :' 240 ERROR - $'+ : LOCAL : local : 241+ : VROOT : .. : 242+ : VOFFSET : a :' 243 244 EXPORT VPATH=$TWD/n2:$TWD/n1 245 246 CD ../../n2/a 247 248 EXEC 249 250TEST 11 'VROOT/VOFFSET across levels and nodes' 251 252 EXPORT VPATH=$TWD/ofc 253 254 CD ofc/proj 255 256 EXEC 257 INPUT $TWD/ofc/proj/Makefile $'all : 258 : VROOT : $(VROOT) : 259 : VOFFSET : $(VOFFSET) :' 260 INPUT $TWD/ofc/proj/src/Makefile $'all : 261 : VROOT : $(VROOT) : 262 : VOFFSET : $(VOFFSET) :' 263 INPUT $TWD/ofc/proj/src/util/Makefile $'all : 264 : VROOT : $(VROOT) : 265 : VOFFSET : $(VOFFSET) :' 266 ERROR - $'+ : VROOT : .. :\n+ : VOFFSET : proj :' 267 268 CD src 269 270 EXEC 271 ERROR - $'+ : VROOT : ../.. :\n+ : VOFFSET : proj/src :' 272 273 CD util 274 275 EXEC 276 ERROR - $'+ : VROOT : ../../.. :\n+ : VOFFSET : proj/src/util :' 277 278 EXPORT VPATH=$TWD/dev:$TWD/ofc 279 280 CD ../../../../dev/proj 281 282 EXEC 283 ERROR - $'+ : VROOT : .. :\n+ : VOFFSET : proj :' 284 285 CD src 286 287 EXEC 288 ERROR - $'+ : VROOT : ../.. :\n+ : VOFFSET : proj/src :' 289 290 CD util 291 292 EXEC 293 ERROR - $'+ : VROOT : ../../.. :\n+ : VOFFSET : proj/src/util :' 294 295TEST 12 'header overlay' 296 297 EXPORT VPATH=$TWD/top:$TWD/bot 298 299 CD bot 300 301 EXEC --regress=sync 302 INPUT Makefile $'t :LIBRARY: t.c' 303 INPUT t.c $'#include "t.h"\nint t(){return 0;}' 304 INPUT t.h $'#define T 1' 305 ERROR - $'+ echo \'\' -lt 306+ 1> t.req 307+ cc -O -I. -c t.c 308+ ar cr libt.a t.o 309+ ignore ranlib libt.a 310+ rm -f t.o' 311 312 EXEC --regress=sync 313 ERROR - 314 315 CD ../top 316 317 EXEC --regress=sync 318 INPUT t.h $'#define T 2' 319 ERROR - $'+ cc -O -I. -c '$TWD$'/bot/t.c 320+ cp '$TWD$'/bot/libt.a libt.a 321+ ar cr libt.a t.o 322+ ignore ranlib libt.a 323+ rm -f t.o' 324 325 EXEC --regress=sync 326 ERROR - 327 328 EXEC --regress=sync clobber 329 ERROR - $'+ ignore rm -f -r libt.a Makefile.ms' 330 331 CD ../bot 332 333 EXEC --regress=sync clobber 334 ERROR - $'+ ignore rm -f -r libt.a Makefile.mo Makefile.ms t.req' 335 336TEST 13 'joint metarule overlay' 337 338 EXPORT VPATH=$TWD/bot 339 340 CD bot 341 342 EXEC target 343 INPUT Makefile $'%.c %.h : %.j 344 echo "#define PWD \\"this file is from $(PWD)\\"" > $(<:N=*.h) 345 echo "int i;" >$(<:N=*.c) 346target :: file.j main.c' 347 INPUT file.j 348 INPUT main.c $'#include "file.h" 349int main() { return PWD != 0; }' 350 ERROR - $'+ echo \'#define PWD "this file is from '$TWD$'/bot"\' 351+ 1> file.h 352+ echo \'int i;\' 353+ 1> file.c 354+ cc -O -c file.c 355+ cc -O -I. -c main.c 356+ cc -O -o target file.o main.o' 357 358 EXPORT VPATH=$TWD/top:$TWD/bot 359 360 CD ../top 361 362 EXEC --regress=sync target 363 ERROR - 364 365 EXEC target 366 INPUT file.j $'TOP' 367 ERROR - $'+ echo \'#define PWD "this file is from '$TWD$'/top"\' 368+ 1> file.h 369+ echo \'int i;\' 370+ 1> file.c 371+ cc -O -c file.c 372+ cc -O -I. -c '$TWD$'/bot/main.c 373+ cc -O -o target file.o main.o' 374 375 EXEC clobber 376 ERROR - $'+ ignore rm -f -r target main.o file.c file.h file.o Makefile.ms' 377 378 CD ../bot 379 380 EXEC clobber 381 ERROR - $'+ ignore rm -f -r target main.o file.c file.h file.o Makefile.mo Makefile.ms' 382 383TEST 14 'view over multiple subdirs' 384 385 EXPORT VPATH=$TWD/bot 386 387 CD bot 388 389 EXEC -n 390 INPUT Makefile $':MAKE: s1 s1.0 s2 391s2 : 392 cd $(<) 393 nmake $(-) $(=) 394 silent echo $(<) done' 395 INPUT s1/makefile $'s1 :\n\techo make $(<)' 396 INPUT s1.0/nmakefile $'s1.0 :\n\techo make $(<)' 397 INPUT s2/Nmakefile $'s2 :\n\techo make $(<)' 398 OUTPUT - $'+ echo make s1 399+ echo make s1.0 400+ echo make s2 401s2 done' 402 ERROR - $'s1: 403s1.0: 404+ cd s2 405+ nmake --noexec \'--regress=message\' \'--native-pp=-1\' --noprefix-include' 406 407 EXPORT VPATH=$TWD/top:$TWD/bot 408 409 CD ../top 410 411 EXEC -n --novirtual 412 INPUT s2/ 413 OUTPUT - $'+ echo make s2 414s2 done' 415 ERROR - $'s1: warning: cannot recurse on virtual directory 416s1.0: warning: cannot recurse on virtual directory 417+ cd s2 418+ nmake --noexec \'--regress=message\' \'--native-pp=-1\' --noprefix-include --novirtual' 419 420 EXEC -n 421 OUTPUT - $'+ echo make s1 422+ echo make s1.0 423+ echo make s2 424s2 done' 425 ERROR - $'s1: 426s1.0: 427+ cd s2 428+ nmake --noexec \'--regress=message\' \'--native-pp=-1\' --noprefix-include' 429 430 EXEC -n --novirtual 431 ERROR - $'s1: 432s1.0: 433+ cd s2 434+ nmake --noexec \'--regress=message\' \'--native-pp=-1\' --noprefix-include --novirtual' 435 436TEST 15 '3 levels' 437 438 EXPORT VPATH=$TWD/bot 439 440 CD bot/esql 441 442 EXEC 443 INPUT $TWD/bot/esql/Makefile $'.SOURCE.eh : ../hdr 444 445ESQL = print 446ESQLFLAGS = 447 448(ESQL) (ESQLFLAGS) : .PARAMETER 449 450.SOURCE.%.SCAN.esqlc : .FORCE $$(*.SOURCE.ec) $$(*.SOURCE) $$(*.SOURCE.eh) $$(*.SOURCE.h) 451 452/* refer to standard scan rule for SQL files (.SCAN.sql)--though all 453 * embedded SQL statements should conform to ANSI syntax, we allow for 454 * Informix proprietary extensions 455 */ 456.SCAN.esqlc : .SCAN 457 Q|/*|*/||C| 458 Q|//||\\\\|LC| 459 Q|"|"|\\\\|LQ| 460 Q|\'|\'|\\\\|LQ| 461 Q|\\\\|||CS| 462 I| EXEC SQL include "%";| 463 I| EXEC SQL include %;| 464 I| $ include "%";| 465 I| $ include <%>;| 466 I| $ include %;| 467 468.ATTRIBUTE.%.ec : .SCAN.esqlc 469 470.sqlc.SEMAPHORE : .SEMAPHORE 471 472%.cc : %.ec .sqlc.SEMAPHORE (ESQL) (ESQLFLAGS) 473 $(CP) $(>) $(<) 474 475all : DBcreateTables.cc DBdropTables.cc' 476 INPUT $TWD/bot/esql/DBcreateTables.ec 477 INPUT $TWD/bot/esql/DBdropTables.ec 478 INPUT $TWD/bot/hdr/DBschema.eh 479 ERROR - $'+ cp DBcreateTables.ec DBcreateTables.cc 480+ cp DBdropTables.ec DBdropTables.cc' 481 482 EXPORT VPATH=$TWD/mid:$TWD/bot 483 484 CD ../../mid/esql 485 486 EXEC 487 INPUT $TWD/mid/esql/ 488 INPUT $TWD/mid/hdr/ 489 ERROR - 490 491 EXPORT VPATH=$TWD/top:$TWD/mid:$TWD/bot 492 493 CD ../../top/esql 494 495 EXEC 496 INPUT $TWD/top/esql/ 497 INPUT $TWD/top/hdr/ 498