Artifact 8ebf5b3ba420535060505e0f6236303c2694e9172577fe86b13fd69d87729af4:
- File Makefile — part of check-in [4ba9560eac] at 2022-01-05 21:36:26 on branch mega-archive — add original makefile implementation (user: theo size: 5554)
0000: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0010: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0020: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0030: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0040: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0050: 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .# 0060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0070: 47 65 6e 65 72 61 6c 20 56 61 72 69 61 62 6c 65 General Variable 0080: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s 0090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 00a0: 23 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 #.############## 00b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 00c0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 00d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 00e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 00f0: 23 23 0a 42 41 53 45 5f 4e 41 4d 45 20 3a 3d 20 ##.BASE_NAME := 0100: 4d 61 69 6e 0a 0a 43 41 53 45 53 5f 49 4e 50 55 Main..CASES_INPU 0110: 54 20 3a 3d 20 24 28 73 6f 72 74 20 24 28 77 69 T := $(sort $(wi 0120: 6c 64 63 61 72 64 20 2a 2e 69 6e 29 29 0a 43 41 ldcard *.in)).CA 0130: 53 45 53 5f 4f 55 54 50 55 54 20 3a 3d 20 24 28 SES_OUTPUT := $( 0140: 73 6f 72 74 20 24 28 77 69 6c 64 63 61 72 64 20 sort $(wildcard 0150: 2a 2e 6f 75 74 29 29 0a 54 45 53 54 53 20 3a 3d *.out)).TESTS := 0160: 20 24 28 66 69 6c 74 65 72 20 24 28 62 61 73 65 $(filter $(base 0170: 6e 61 6d 65 20 24 28 43 41 53 45 53 5f 49 4e 50 name $(CASES_INP 0180: 55 54 29 29 2c 24 28 62 61 73 65 6e 61 6d 65 20 UT)),$(basename 0190: 24 28 43 41 53 45 53 5f 4f 55 54 50 55 54 29 29 $(CASES_OUTPUT)) 01a0: 29 0a 0a 53 48 45 4c 4c 20 3a 3d 20 2f 62 69 6e )..SHELL := /bin 01b0: 2f 73 68 0a 0a 4c 49 4d 49 54 45 52 20 3f 3d 20 /sh..LIMITER ?= 01c0: 74 69 6d 65 6f 75 74 0a 4c 49 4d 49 54 45 52 5f timeout.LIMITER_ 01d0: 46 4c 41 47 53 20 3f 3d 20 2d 2d 70 72 65 73 65 FLAGS ?= --prese 01e0: 72 76 65 2d 73 74 61 74 75 73 20 2d 73 20 53 49 rve-status -s SI 01f0: 47 4b 49 4c 4c 20 31 30 73 0a 0a 65 78 70 6f 72 GKILL 10s..expor 0200: 74 20 54 49 4d 45 3d 72 65 61 6c 20 25 65 73 5c t TIME=real %es\ 0210: 6e 75 73 65 72 20 25 55 73 5c 6e 73 79 73 20 20 nuser %Us\nsys 0220: 25 53 73 5c 6e 6d 65 6d 20 20 25 4d 4b 42 0a 0a %Ss\nmem %MKB.. 0230: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0240: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0250: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0260: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0270: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0280: 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .# 0290: 20 20 20 20 20 20 20 20 20 43 6f 6d 70 69 6c 61 Compila 02a0: 74 69 6f 6e 2f 45 78 65 63 75 74 69 6f 6e 20 56 tion/Execution V 02b0: 61 72 69 61 62 6c 65 73 20 20 20 20 20 20 20 20 ariables 02c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 02d0: 23 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 #.############## 02e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 02f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0300: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0310: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0320: 23 23 0a 43 43 20 3f 3d 20 67 63 63 0a 43 43 5f ##.CC ?= gcc.CC_ 0330: 46 4c 41 47 53 20 3f 3d 20 2d 57 61 6c 6c 20 2d FLAGS ?= -Wall - 0340: 57 65 78 74 72 61 20 2d 70 65 64 61 6e 74 69 63 Wextra -pedantic 0350: 20 2d 57 73 68 61 64 6f 77 20 2d 57 66 6f 72 6d -Wshadow -Wform 0360: 61 74 3d 32 20 2d 57 66 6c 6f 61 74 2d 65 71 75 at=2 -Wfloat-equ 0370: 61 6c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 al \. 0380: 20 2d 57 63 6f 6e 76 65 72 73 69 6f 6e 20 2d 57 -Wconversion -W 0390: 6c 6f 67 69 63 61 6c 2d 6f 70 20 2d 57 73 68 69 logical-op -Wshi 03a0: 66 74 2d 6f 76 65 72 66 6c 6f 77 3d 32 20 2d 57 ft-overflow=2 -W 03b0: 64 75 70 6c 69 63 61 74 65 64 2d 63 6f 6e 64 20 duplicated-cond 03c0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 2d 57 \. -W 03d0: 63 61 73 74 2d 71 75 61 6c 20 2d 57 63 61 73 74 cast-qual -Wcast 03e0: 2d 61 6c 69 67 6e 20 2d 57 6e 6f 2d 75 6e 75 73 -align -Wno-unus 03f0: 65 64 2d 72 65 73 75 6c 74 20 2d 57 6e 6f 2d 73 ed-result -Wno-s 0400: 69 67 6e 2d 63 6f 6e 76 65 72 73 69 6f 6e 0a 0a ign-conversion.. 0410: 43 58 58 20 3f 3d 20 67 2b 2b 0a 43 58 58 5f 46 CXX ?= g++.CXX_F 0420: 4c 41 47 53 20 3f 3d 20 2d 57 61 6c 6c 20 2d 57 LAGS ?= -Wall -W 0430: 65 78 74 72 61 20 2d 70 65 64 61 6e 74 69 63 20 extra -pedantic 0440: 2d 57 73 68 61 64 6f 77 20 2d 57 66 6f 72 6d 61 -Wshadow -Wforma 0450: 74 3d 32 20 2d 57 66 6c 6f 61 74 2d 65 71 75 61 t=2 -Wfloat-equa 0460: 6c 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 l \. 0470: 20 2d 57 63 6f 6e 76 65 72 73 69 6f 6e 20 2d 57 -Wconversion -W 0480: 6c 6f 67 69 63 61 6c 2d 6f 70 20 2d 57 73 68 69 logical-op -Wshi 0490: 66 74 2d 6f 76 65 72 66 6c 6f 77 3d 32 20 2d 57 ft-overflow=2 -W 04a0: 64 75 70 6c 69 63 61 74 65 64 2d 63 6f 6e 64 20 duplicated-cond 04b0: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 2d \. - 04c0: 57 63 61 73 74 2d 71 75 61 6c 20 2d 57 63 61 73 Wcast-qual -Wcas 04d0: 74 2d 61 6c 69 67 6e 20 2d 57 6e 6f 2d 75 6e 75 t-align -Wno-unu 04e0: 73 65 64 2d 72 65 73 75 6c 74 20 2d 57 6e 6f 2d sed-result -Wno- 04f0: 73 69 67 6e 2d 63 6f 6e 76 65 72 73 69 6f 6e 0a sign-conversion. 0500: 0a 4a 43 20 3f 3d 20 6a 61 76 61 63 0a 4a 43 5f .JC ?= javac.JC_ 0510: 46 4c 41 47 53 20 3f 3d 20 2d 67 0a 4a 41 56 41 FLAGS ?= -g.JAVA 0520: 20 3f 3d 20 6a 61 76 61 0a 4a 41 56 41 5f 46 4c ?= java.JAVA_FL 0530: 41 47 53 20 3f 3d 0a 0a 50 59 54 48 4f 4e 20 3f AGS ?=..PYTHON ? 0540: 3d 20 70 79 74 68 6f 6e 33 0a 50 59 54 48 4f 4e = python3.PYTHON 0550: 5f 46 4c 41 47 53 20 3f 3d 0a 0a 52 55 42 59 20 _FLAGS ?=..RUBY 0560: 3f 3d 20 72 75 62 79 0a 52 55 42 59 5f 46 4c 41 ?= ruby.RUBY_FLA 0570: 47 53 20 3f 3d 0a 0a 23 23 23 23 23 23 23 23 23 GS ?=..######### 0580: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0590: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 05a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 05b0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 05c0: 23 23 23 23 23 23 23 0a 23 20 20 20 20 20 20 20 #######.# 05d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 05e0: 20 20 20 20 20 20 20 20 20 46 69 6c 65 20 56 61 File Va 05f0: 72 69 61 62 6c 65 73 20 20 20 20 20 20 20 20 20 riables 0600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0610: 20 20 20 20 20 20 20 23 0a 23 23 23 23 23 23 23 #.####### 0620: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0630: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0640: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0650: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0660: 23 23 23 23 23 23 23 23 23 0a 43 4f 4d 50 49 4c #########.COMPIL 0670: 45 44 5f 53 52 43 53 20 3a 3d 0a 43 4f 4d 50 49 ED_SRCS :=.COMPI 0680: 4c 45 44 5f 4f 42 4a 53 20 3a 3d 0a 49 4e 54 45 LED_OBJS :=.INTE 0690: 52 50 52 45 54 45 44 5f 53 52 43 53 20 3a 3d 0a RPRETED_SRCS :=. 06a0: 52 45 53 55 4c 54 53 20 3a 3d 0a 0a 69 66 6e 65 RESULTS :=..ifne 06b0: 71 20 28 2c 24 28 77 69 6c 64 63 61 72 64 20 2e q (,$(wildcard . 06c0: 2f 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 29 /$(BASE_NAME).c) 06d0: 29 0a 09 43 4f 4d 50 49 4c 45 44 5f 53 52 43 53 )..COMPILED_SRCS 06e0: 20 2b 3d 20 24 28 42 41 53 45 5f 4e 41 4d 45 29 += $(BASE_NAME) 06f0: 2e 63 0a 09 43 4f 4d 50 49 4c 45 44 5f 4f 42 4a .c..COMPILED_OBJ 0700: 53 20 2b 3d 20 24 28 42 41 53 45 5f 4e 41 4d 45 S += $(BASE_NAME 0710: 29 2e 63 2e 65 78 65 0a 09 52 45 53 55 4c 54 53 ).c.exe..RESULTS 0720: 20 2b 3d 20 24 28 61 64 64 73 75 66 66 69 78 20 += $(addsuffix 0730: 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 2e .$(BASE_NAME).c. 0740: 65 78 65 2e 72 65 73 2c 24 28 54 45 53 54 53 29 exe.res,$(TESTS) 0750: 29 0a 65 6e 64 69 66 0a 0a 69 66 6e 65 71 20 28 ).endif..ifneq ( 0760: 2c 24 28 77 69 6c 64 63 61 72 64 20 2e 2f 24 28 ,$(wildcard ./$( 0770: 42 41 53 45 5f 4e 41 4d 45 29 2e 63 70 70 29 29 BASE_NAME).cpp)) 0780: 0a 09 43 4f 4d 50 49 4c 45 44 5f 53 52 43 53 20 ..COMPILED_SRCS 0790: 2b 3d 20 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e += $(BASE_NAME). 07a0: 63 70 70 0a 09 43 4f 4d 50 49 4c 45 44 5f 4f 42 cpp..COMPILED_OB 07b0: 4a 53 20 2b 3d 20 24 28 42 41 53 45 5f 4e 41 4d JS += $(BASE_NAM 07c0: 45 29 2e 63 70 70 2e 65 78 65 0a 09 52 45 53 55 E).cpp.exe..RESU 07d0: 4c 54 53 20 2b 3d 20 24 28 61 64 64 73 75 66 66 LTS += $(addsuff 07e0: 69 78 20 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 ix .$(BASE_NAME) 07f0: 2e 63 70 70 2e 65 78 65 2e 72 65 73 2c 24 28 54 .cpp.exe.res,$(T 0800: 45 53 54 53 29 29 0a 65 6e 64 69 66 0a 0a 69 66 ESTS)).endif..if 0810: 6e 65 71 20 28 2c 24 28 77 69 6c 64 63 61 72 64 neq (,$(wildcard 0820: 20 2e 2f 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e ./$(BASE_NAME). 0830: 6a 61 76 61 29 29 0a 09 43 4f 4d 50 49 4c 45 44 java))..COMPILED 0840: 5f 53 52 43 53 20 2b 3d 20 24 28 42 41 53 45 5f _SRCS += $(BASE_ 0850: 4e 41 4d 45 29 2e 6a 61 76 61 0a 09 43 4f 4d 50 NAME).java..COMP 0860: 49 4c 45 44 5f 4f 42 4a 53 20 2b 3d 20 24 28 42 ILED_OBJS += $(B 0870: 41 53 45 5f 4e 41 4d 45 29 2e 63 6c 61 73 73 0a ASE_NAME).class. 0880: 09 52 45 53 55 4c 54 53 20 2b 3d 20 24 28 61 64 .RESULTS += $(ad 0890: 64 73 75 66 66 69 78 20 2e 24 28 42 41 53 45 5f dsuffix .$(BASE_ 08a0: 4e 41 4d 45 29 2e 63 6c 61 73 73 2e 72 65 73 2c NAME).class.res, 08b0: 24 28 54 45 53 54 53 29 29 0a 65 6e 64 69 66 0a $(TESTS)).endif. 08c0: 0a 69 66 6e 65 71 20 28 2c 24 28 77 69 6c 64 63 .ifneq (,$(wildc 08d0: 61 72 64 20 2e 2f 24 28 42 41 53 45 5f 4e 41 4d ard ./$(BASE_NAM 08e0: 45 29 2e 70 79 29 29 0a 09 49 4e 54 45 52 50 52 E).py))..INTERPR 08f0: 45 54 45 44 5f 53 52 43 53 20 2b 3d 20 24 28 42 ETED_SRCS += $(B 0900: 41 53 45 5f 4e 41 4d 45 29 2e 70 79 0a 09 52 45 ASE_NAME).py..RE 0910: 53 55 4c 54 53 20 2b 3d 20 24 28 61 64 64 73 75 SULTS += $(addsu 0920: 66 66 69 78 20 2e 24 28 42 41 53 45 5f 4e 41 4d ffix .$(BASE_NAM 0930: 45 29 2e 70 79 2e 72 65 73 2c 24 28 54 45 53 54 E).py.res,$(TEST 0940: 53 29 29 0a 65 6e 64 69 66 0a 0a 69 66 6e 65 71 S)).endif..ifneq 0950: 20 28 2c 24 28 77 69 6c 64 63 61 72 64 20 2e 2f (,$(wildcard ./ 0960: 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 72 62 29 $(BASE_NAME).rb) 0970: 29 0a 09 49 4e 54 45 52 50 52 45 54 45 44 5f 53 )..INTERPRETED_S 0980: 52 43 53 20 2b 3d 20 24 28 42 41 53 45 5f 4e 41 RCS += $(BASE_NA 0990: 4d 45 29 2e 72 62 0a 09 52 45 53 55 4c 54 53 20 ME).rb..RESULTS 09a0: 2b 3d 20 24 28 61 64 64 73 75 66 66 69 78 20 2e += $(addsuffix . 09b0: 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 72 62 2e $(BASE_NAME).rb. 09c0: 72 65 73 2c 24 28 54 45 53 54 53 29 29 0a 65 6e res,$(TESTS)).en 09d0: 64 69 66 0a 0a 53 54 41 54 53 20 3a 3d 20 24 28 dif..STATS := $( 09e0: 70 61 74 73 75 62 73 74 20 25 2e 72 65 73 2c 25 patsubst %.res,% 09f0: 2e 73 74 61 74 2c 24 28 52 45 53 55 4c 54 53 29 .stat,$(RESULTS) 0a00: 29 0a 0a 43 4c 45 41 4e 41 42 4c 45 20 3a 3d 20 )..CLEANABLE := 0a10: 24 28 66 69 6c 74 65 72 20 24 28 43 4f 4d 50 49 $(filter $(COMPI 0a20: 4c 45 44 5f 4f 42 4a 53 29 20 24 28 52 45 53 55 LED_OBJS) $(RESU 0a30: 4c 54 53 29 20 24 28 53 54 41 54 53 29 2c 24 28 LTS) $(STATS),$( 0a40: 77 69 6c 64 63 61 72 64 20 2a 29 29 0a 0a 23 23 wildcard *))..## 0a50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0a60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0a70: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0a80: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0a90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 ##############.# 0aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0ac0: 20 50 68 6f 6e 79 20 52 75 6c 65 73 20 20 20 20 Phony Rules 0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 23 0a #. 0af0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0b00: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0b10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0b20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0b30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0b40: 0a 2e 50 48 4f 4e 59 3a 20 61 6c 6c 20 62 75 69 ..PHONY: all bui 0b50: 6c 64 20 63 6c 65 61 6e 20 72 65 74 65 73 74 20 ld clean retest 0b60: 74 65 73 74 0a 0a 61 6c 6c 3a 20 74 65 73 74 0a test..all: test. 0b70: 0a 62 75 69 6c 64 3a 20 24 28 43 4f 4d 50 49 4c .build: $(COMPIL 0b80: 45 44 5f 4f 42 4a 53 29 0a 0a 63 6c 65 61 6e 3a ED_OBJS)..clean: 0b90: 0a 69 66 6e 65 71 20 28 2c 24 28 43 4c 45 41 4e .ifneq (,$(CLEAN 0ba0: 41 42 4c 45 29 29 0a 09 72 6d 20 24 28 43 4c 45 ABLE))..rm $(CLE 0bb0: 41 4e 41 42 4c 45 29 0a 65 6e 64 69 66 0a 0a 72 ANABLE).endif..r 0bc0: 65 74 65 73 74 3a 20 63 6c 65 61 6e 20 74 65 73 etest: clean tes 0bd0: 74 0a 0a 74 65 73 74 3a 20 62 75 69 6c 64 20 24 t..test: build $ 0be0: 28 52 45 53 55 4c 54 53 29 20 24 28 53 54 41 54 (RESULTS) $(STAT 0bf0: 53 29 20 24 28 43 41 53 45 53 5f 4f 55 54 50 55 S) $(CASES_OUTPU 0c00: 54 29 0a 09 40 70 61 73 73 3d 30 3b 20 5c 0a 09 T)..@pass=0; \.. 0c10: 66 61 69 6c 3d 30 3b 20 5c 0a 09 66 6f 72 20 74 fail=0; \..for t 0c20: 65 73 74 20 69 6e 20 24 28 70 61 74 73 75 62 73 est in $(patsubs 0c30: 74 20 25 2e 72 65 73 2c 25 2c 24 28 52 45 53 55 t %.res,%,$(RESU 0c40: 4c 54 53 29 29 3b 20 64 6f 20 5c 0a 09 09 65 63 LTS)); do \...ec 0c50: 68 6f 20 22 23 23 23 23 23 23 23 23 23 23 23 23 ho "############ 0c60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0c70: 23 23 23 23 23 23 23 23 23 23 23 23 22 3b 20 5c ############"; \ 0c80: 0a 09 09 70 72 69 6e 74 66 20 22 23 20 25 2d 32 ...printf "# %-2 0c90: 39 73 20 23 20 25 73 20 23 5c 6e 22 20 24 24 74 9s # %s #\n" $$t 0ca0: 65 73 74 20 5c 0a 20 20 20 20 20 20 20 20 20 20 est \. 0cb0: 20 24 24 28 64 69 66 66 20 24 24 74 65 73 74 2e $$(diff $$test. 0cc0: 72 65 73 20 22 24 24 28 65 63 68 6f 20 22 24 24 res "$$(echo "$$ 0cd0: 74 65 73 74 22 20 7c 20 63 75 74 20 2d 66 20 31 test" | cut -f 1 0ce0: 20 2d 64 20 27 2e 27 29 2e 6f 75 74 22 20 5c 0a -d '.').out" \. 0cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 32 3e 2> 0d00: 26 31 3e 2f 64 65 76 2f 6e 75 6c 6c 20 26 26 20 &1>/dev/null && 0d10: 65 63 68 6f 20 27 50 41 53 53 27 20 7c 7c 20 65 echo 'PASS' || e 0d20: 63 68 6f 20 27 46 41 49 4c 27 29 3b 20 5c 0a 09 cho 'FAIL'); \.. 0d30: 09 65 63 68 6f 20 22 23 23 23 23 23 23 23 23 23 .echo "######### 0d40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0d50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 22 ###############" 0d60: 3b 20 5c 0a 09 09 63 61 74 20 24 24 74 65 73 74 ; \...cat $$test 0d70: 2e 73 74 61 74 3b 20 5c 0a 09 09 65 63 68 6f 20 .stat; \...echo 0d80: 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 "############### 0d90: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0da0: 23 23 23 23 23 23 23 23 23 22 3b 20 5c 0a 09 09 #########"; \... 0db0: 64 69 66 66 20 2d 2d 63 6f 6c 6f 72 20 24 24 74 diff --color $$t 0dc0: 65 73 74 2e 72 65 73 20 22 24 24 28 65 63 68 6f est.res "$$(echo 0dd0: 20 22 24 24 74 65 73 74 22 20 7c 20 63 75 74 20 "$$test" | cut 0de0: 2d 66 20 31 20 2d 64 20 27 2e 27 29 2e 6f 75 74 -f 1 -d '.').out 0df0: 22 20 5c 0a 20 20 20 20 20 20 20 20 20 26 26 20 " \. && 0e00: 70 61 73 73 3d 24 24 28 28 70 61 73 73 20 2b 20 pass=$$((pass + 0e10: 31 29 29 20 7c 7c 20 66 61 69 6c 3d 24 24 28 28 1)) || fail=$$(( 0e20: 66 61 69 6c 20 2b 20 31 29 29 3b 20 5c 0a 09 09 fail + 1)); \... 0e30: 65 63 68 6f 20 3b 20 5c 0a 09 64 6f 6e 65 3b 20 echo ; \..done; 0e40: 5c 0a 09 65 63 68 6f 20 22 23 23 23 23 23 23 23 \..echo "####### 0e50: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0e60: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0e70: 23 22 3b 20 5c 0a 09 70 72 69 6e 74 66 20 22 23 #"; \..printf "# 0e80: 20 54 4f 54 41 4c 3a 20 25 2d 35 73 20 23 20 50 TOTAL: %-5s # P 0e90: 41 53 53 3a 20 25 2d 33 73 20 23 20 46 41 49 4c ASS: %-3s # FAIL 0ea0: 3a 20 25 2d 33 73 20 23 5c 6e 22 20 5c 0a 20 20 : %-3s #\n" \. 0eb0: 20 20 20 20 20 20 20 24 24 28 28 70 61 73 73 20 $$((pass 0ec0: 2b 20 66 61 69 6c 29 29 20 24 24 70 61 73 73 20 + fail)) $$pass 0ed0: 24 24 66 61 69 6c 3b 20 5c 0a 09 65 63 68 6f 20 $$fail; \..echo 0ee0: 22 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 "############### 0ef0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0f00: 23 23 23 23 23 23 23 23 23 22 0a 0a 23 23 23 23 #########"..#### 0f10: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0f20: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0f30: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0f40: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0f50: 23 23 23 23 23 23 23 23 23 23 23 23 0a 23 20 20 ############.# 0f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6d Com 0f80: 70 69 6c 69 6e 67 20 52 75 6c 65 73 20 20 20 20 piling Rules 0f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 23 0a 23 23 #.## 0fb0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0fc0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0fd0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0fe0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 0ff0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 0a 24 ##############.$ 1000: 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 2e 65 78 (BASE_NAME).c.ex 1010: 65 3a 20 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e e: $(BASE_NAME). 1020: 63 0a 09 24 28 43 43 29 20 24 28 43 43 5f 46 4c c..$(CC) $(CC_FL 1030: 41 47 53 29 20 24 5e 20 2d 6f 20 24 40 0a 0a 24 AGS) $^ -o $@..$ 1040: 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 70 70 2e (BASE_NAME).cpp. 1050: 65 78 65 3a 20 24 28 42 41 53 45 5f 4e 41 4d 45 exe: $(BASE_NAME 1060: 29 2e 63 70 70 0a 09 24 28 43 58 58 29 20 24 28 ).cpp..$(CXX) $( 1070: 43 58 58 5f 46 4c 41 47 53 29 20 24 5e 20 2d 6f CXX_FLAGS) $^ -o 1080: 20 24 40 0a 0a 24 28 42 41 53 45 5f 4e 41 4d 45 $@..$(BASE_NAME 1090: 29 2e 63 6c 61 73 73 3a 20 24 28 42 41 53 45 5f ).class: $(BASE_ 10a0: 4e 41 4d 45 29 2e 6a 61 76 61 0a 09 24 28 4a 43 NAME).java..$(JC 10b0: 29 20 24 28 4a 43 5f 46 4c 41 47 53 29 20 24 5e ) $(JC_FLAGS) $^ 10c0: 0a 0a 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ..############## 10d0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 10e0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 10f0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 1100: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 1110: 23 23 0a 23 20 20 20 20 20 20 20 20 20 20 20 20 ##.# 1120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1130: 20 20 20 20 52 75 6e 6e 69 6e 67 20 72 75 6c 65 Running rule 1140: 73 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 s 1150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1160: 20 20 23 0a 23 23 23 23 23 23 23 23 23 23 23 23 #.############ 1170: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 1180: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 1190: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 11a0: 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 23 ################ 11b0: 23 23 23 23 0a 25 2e 24 28 42 41 53 45 5f 4e 41 ####.%.$(BASE_NA 11c0: 4d 45 29 2e 63 2e 65 78 65 2e 72 65 73 20 25 2e ME).c.exe.res %. 11d0: 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 2e 65 $(BASE_NAME).c.e 11e0: 78 65 2e 73 74 61 74 3a 20 25 2e 69 6e 20 24 28 xe.stat: %.in $( 11f0: 42 41 53 45 5f 4e 41 4d 45 29 2e 63 2e 65 78 65 BASE_NAME).c.exe 1200: 0a 09 2d 40 5c 74 69 6d 65 20 24 28 4c 49 4d 49 ..-@\time $(LIMI 1210: 54 45 52 29 20 24 28 4c 49 4d 49 54 45 52 5f 46 TER) $(LIMITER_F 1220: 4c 41 47 53 29 20 2e 2f 24 28 42 41 53 45 5f 4e LAGS) ./$(BASE_N 1230: 41 4d 45 29 2e 63 2e 65 78 65 20 3c 20 24 2a 2e AME).c.exe < $*. 1240: 69 6e 20 5c 0a 20 20 20 20 20 20 20 20 20 20 3e in \. > 1250: 20 24 2a 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 $*.$(BASE_NAME) 1260: 2e 63 2e 65 78 65 2e 72 65 73 20 32 3e 20 24 2a .c.exe.res 2> $* 1270: 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 2e .$(BASE_NAME).c. 1280: 65 78 65 2e 73 74 61 74 0a 0a 25 2e 24 28 42 41 exe.stat..%.$(BA 1290: 53 45 5f 4e 41 4d 45 29 2e 63 70 70 2e 65 78 65 SE_NAME).cpp.exe 12a0: 2e 72 65 73 3a 20 25 2e 69 6e 20 24 28 42 41 53 .res: %.in $(BAS 12b0: 45 5f 4e 41 4d 45 29 2e 63 70 70 2e 65 78 65 0a E_NAME).cpp.exe. 12c0: 09 2d 40 5c 74 69 6d 65 20 24 28 4c 49 4d 49 54 .-@\time $(LIMIT 12d0: 45 52 29 20 24 28 4c 49 4d 49 54 45 52 5f 46 4c ER) $(LIMITER_FL 12e0: 41 47 53 29 20 2e 2f 24 28 42 41 53 45 5f 4e 41 AGS) ./$(BASE_NA 12f0: 4d 45 29 2e 63 70 70 2e 65 78 65 20 3c 20 24 2a ME).cpp.exe < $* 1300: 2e 69 6e 20 5c 0a 20 20 20 20 20 20 20 20 20 20 .in \. 1310: 3e 20 24 2a 2e 24 28 42 41 53 45 5f 4e 41 4d 45 > $*.$(BASE_NAME 1320: 29 2e 63 70 70 2e 65 78 65 2e 72 65 73 20 32 3e ).cpp.exe.res 2> 1330: 20 24 2a 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 $*.$(BASE_NAME) 1340: 2e 63 70 70 2e 65 78 65 2e 73 74 61 74 0a 0a 25 .cpp.exe.stat..% 1350: 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 6c .$(BASE_NAME).cl 1360: 61 73 73 2e 72 65 73 3a 20 25 2e 69 6e 20 24 28 ass.res: %.in $( 1370: 42 41 53 45 5f 4e 41 4d 45 29 2e 63 6c 61 73 73 BASE_NAME).class 1380: 0a 09 2d 40 5c 74 69 6d 65 20 24 28 4c 49 4d 49 ..-@\time $(LIMI 1390: 54 45 52 29 20 24 28 4c 49 4d 49 54 45 52 5f 46 TER) $(LIMITER_F 13a0: 4c 41 47 53 29 20 24 28 4a 41 56 41 29 20 24 28 LAGS) $(JAVA) $( 13b0: 4a 41 56 41 5f 46 4c 41 47 53 29 20 24 28 42 41 JAVA_FLAGS) $(BA 13c0: 53 45 5f 4e 41 4d 45 29 20 5c 0a 20 20 20 20 20 SE_NAME) \. 13d0: 20 20 20 20 20 3c 20 24 2a 2e 69 6e 20 3e 20 24 < $*.in > $ 13e0: 2a 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 *.$(BASE_NAME).c 13f0: 6c 61 73 73 2e 72 65 73 20 32 3e 20 24 2a 2e 24 lass.res 2> $*.$ 1400: 28 42 41 53 45 5f 4e 41 4d 45 29 2e 63 6c 61 73 (BASE_NAME).clas 1410: 73 2e 73 74 61 74 0a 0a 25 2e 24 28 42 41 53 45 s.stat..%.$(BASE 1420: 5f 4e 41 4d 45 29 2e 70 79 2e 72 65 73 3a 20 25 _NAME).py.res: % 1430: 2e 69 6e 20 24 28 42 41 53 45 5f 4e 41 4d 45 29 .in $(BASE_NAME) 1440: 2e 70 79 0a 09 2d 40 5c 74 69 6d 65 20 24 28 4c .py..-@\time $(L 1450: 49 4d 49 54 45 52 29 20 24 28 4c 49 4d 49 54 45 IMITER) $(LIMITE 1460: 52 5f 46 4c 41 47 53 29 20 24 28 50 59 54 48 4f R_FLAGS) $(PYTHO 1470: 4e 29 20 24 28 50 59 54 48 4f 4e 5f 46 4c 41 47 N) $(PYTHON_FLAG 1480: 53 29 20 5c 0a 20 20 20 20 20 20 20 20 20 20 24 S) \. $ 1490: 28 42 41 53 45 5f 4e 41 4d 45 29 2e 70 79 20 3c (BASE_NAME).py < 14a0: 20 24 2a 2e 69 6e 20 3e 20 24 2a 2e 24 28 42 41 $*.in > $*.$(BA 14b0: 53 45 5f 4e 41 4d 45 29 2e 70 79 2e 72 65 73 20 SE_NAME).py.res 14c0: 5c 0a 20 20 20 20 20 20 20 20 20 20 32 3e 20 24 \. 2> $ 14d0: 2a 2e 24 28 42 41 53 45 5f 4e 41 4d 45 29 2e 70 *.$(BASE_NAME).p 14e0: 79 2e 73 74 61 74 0a 0a 25 2e 24 28 42 41 53 45 y.stat..%.$(BASE 14f0: 5f 4e 41 4d 45 29 2e 72 62 2e 72 65 73 3a 20 25 _NAME).rb.res: % 1500: 2e 69 6e 20 24 28 42 41 53 45 5f 4e 41 4d 45 29 .in $(BASE_NAME) 1510: 2e 72 62 0a 09 2d 40 5c 74 69 6d 65 20 24 28 4c .rb..-@\time $(L 1520: 49 4d 49 54 45 52 29 20 24 28 4c 49 4d 49 54 45 IMITER) $(LIMITE 1530: 52 5f 46 4c 41 47 53 29 20 24 28 52 55 42 59 29 R_FLAGS) $(RUBY) 1540: 20 24 28 52 55 42 59 5f 46 4c 41 47 53 29 20 5c $(RUBY_FLAGS) \ 1550: 0a 20 20 20 20 20 20 20 20 20 20 24 28 42 41 53 . $(BAS 1560: 45 5f 4e 41 4d 45 29 2e 72 62 20 3c 20 24 2a 2e E_NAME).rb < $*. 1570: 69 6e 20 3e 20 24 2a 2e 24 28 42 41 53 45 5f 4e in > $*.$(BASE_N 1580: 41 4d 45 29 2e 72 62 2e 72 65 73 20 5c 0a 20 20 AME).rb.res \. 1590: 20 20 20 20 20 20 20 20 32 3e 20 24 2a 2e 24 28 2> $*.$( 15a0: 42 41 53 45 5f 4e 41 4d 45 29 2e 72 62 2e 73 74 BASE_NAME).rb.st 15b0: 61 74 at