source: tags/arb-6.0.5/AISC_COM/AISC/Makefile

Last change on this file was 11060, checked in by westram, 11 years ago
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 5.5 KB
Line 
1THIS=AISC/Makefile
2MAKETHIS=$(MAKE) -f $(THIS)
3#MAKETHIS=$(MAKE) -d -f $(THIS)
4SED:=$(ARBHOME)/SH/arb_sed
5READLINK:=$(ARBHOME)/SH/arb_readlink
6
7.SUFFIXES: .o .c .h .aisc
8
9#where to find the creator files
10AISC=../AISC/aisc
11AISC_MKPT = ../AISC_MKPTPS/aisc_mkpt
12
13RUN_AISC:=$(AISC)
14# valgrinding like this breaks the build process (due to wrong exitcode)
15#RUN_AISC:=arb_valgrind -c 15 $(AISC)
16#RUN_AISC:=arb_valgrind -c 15 -l $(AISC)
17#RUN_AISC:=arb_valgrind -c 15 -l -r $(AISC)
18
19GEN_INCLUDES = GENH/aisc.h GENH/aisc_com.h
20INCLUDE_INCLUDES = aisc_include.header
21
22SERVER_OBJECTS = O/server.o O/struct_man.o O/aisc_extern.o
23
24GEN_SERVER_PROTO_OBJECTS = GENC/aisc_server.o
25GEN_SERVER_OTHER_OBJECTS = GENC/aisc_global.o
26GEN_SERVER_OBJECTS = $(GEN_SERVER_PROTO_OBJECTS) $(GEN_SERVER_OTHER_OBJECTS)
27
28GEN_SERVER_PROTO_SOURCES = $(GEN_SERVER_PROTO_OBJECTS:.o=.c)
29GEN_SERVER_SOURCES = $(GEN_SERVER_OBJECTS:.o=.c)
30
31GEN_SERVER_INCLUDES = C/aisc_server.h C/common.h
32GEN_SERVER_PROTO = GENH/aisc_server_proto.h
33GEN_SERVER_EXTERN_PROTO = GENH/aisc_server_extern.h
34
35SERVER_INCLUDES = $(GEN_INCLUDES) $(GEN_SERVER_INCLUDES) $(GEN_SERVER_PROTO) $(GEN_SERVER_EXTERN_PROTO)
36
37CLIENT_OBJECTS = O/client.o
38CLIENT_INCLUDES = $(GEN_INCLUDES) C/client_privat.h C/client.h C/common.h
39
40COMMON_OBJECTS = O/common.o
41COMMON_INCLUDES = C/common.h
42
43AISC_EXTERNALS = C/aisc_extern.c $(PRIVATE_SERVER_OBJECTS:.o=.c)
44GLOBALS_AISC = GENH/global.aisc
45
46AISC_DEPENDS = AISC/*.pa $(MAIN_SOURCE) $(AISC) $(DUMPDIR) $(GLOBALS_AISC)
47
48IMPORT_PROTO = GENH/import_proto.h
49
50SERVER = server.a
51CLIENT = client.a
52COMMON = common.a
53
54AISC_SERVER_EXTERN = GENH/aisc_server_extern.aisc
55
56DUMPDIR=DUMP
57
58LINK_TO_OTHER_ARB=~/ARB.aisc_regression_test_vs# create this as symlink to other ARB checkout to activate regression test 
59FAIL_ON_CHANGE=1# 0=continue on change, 1=fail on change
60
61# ----------------------------------------
62
63COMPARE_WITH_OTHER_ARB:=$(shell $(READLINK) $(LINK_TO_OTHER_ARB))
64ifneq ($(COMPARE_WITH_OTHER_ARB),)
65THIS__COMDIR=$(shell pwd)
66COMDIRNAME=$(subst $(ARBHOME),,$(THIS__COMDIR))
67OTHER_COMDIR=$(subst //,/,$(COMPARE_WITH_OTHER_ARB)/$(COMDIRNAME))
68ifeq ($(FAIL_ON_CHANGE),0)
69REGR_FAILURE=(echo "$(THIS):57: Warning: regression on generated code (ignored)" || true)
70else
71REGR_FAILURE=(  echo "$(THIS):59: Error: regression on generated AISC code"; \
72                rm $(SERVER) $(CLIENT) $(COMMON); \
73                false) 
74endif
75endif
76
77# ----------------------------------------
78
79ifeq ($(AUTODEPENDS),1)
80all:
81        +test -f .depends || $(MAKETHIS) "AUTODEPENDS=0" .depends
82        +$(MAKETHIS) "AUTODEPENDS=2" all
83else
84all: directories
85        +$(MAKETHIS) realall
86
87endif
88
89realall: $(CLIENT) $(SERVER) $(COMMON) Makefile $(THIS)
90ifeq ($(COMPARE_WITH_OTHER_ARB),)
91        @echo "AISC regression tests are disabled ($(LINK_TO_OTHER_ARB) not found from AISC_COM/$(THIS))"
92else
93 ifeq ($(THIS__COMDIR),$(OTHER_COMDIR))
94        @echo "$(THIS):63: Warning: Skipping AISC regression tests (test versus self always ok)"
95 else
96        @echo "Running AISC regression tests (versus $(COMPARE_WITH_OTHER_ARB))"
97#       compare generated code using ../../SOURCE_TOOLS/check_dirs_equal.sh
98        @( \
99                ../SOURCE_TOOLS/check_dirs_equal.sh $(THIS__COMDIR)/GENC $(OTHER_COMDIR)/GENC '*.c' && \
100                ../SOURCE_TOOLS/check_dirs_equal.sh $(THIS__COMDIR)/GENH $(OTHER_COMDIR)/GENH '*.h' && \
101                ../SOURCE_TOOLS/check_dirs_equal.sh $(THIS__COMDIR)/DUMP $(OTHER_COMDIR)/DUMP '*.dump' && \
102                echo "No change in generated code" \
103        ) || $(REGR_FAILURE)
104 endif
105endif
106
107pregenerate: $(GEN_SERVER_SOURCES) $(SERVER_INCLUDES) $(CLIENT_INCLUDES) $(AISC_EXTERNALS)
108
109directories:
110        @mkdir -p GENH GENC O DUMP
111
112GENH:   directories
113GENC:   directories
114O:      directories
115DUMP:   directories
116
117$(SERVER): $(SERVER_OBJECTS) $(GEN_SERVER_OBJECTS) $(PRIVATE_SERVER_OBJECTS)
118        $(LINK_STATIC_LIB) $@ $^
119
120$(CLIENT): $(CLIENT_OBJECTS) $(GEN_CLIENT_OBJECTS)
121        $(LINK_STATIC_LIB) $@ $^
122
123$(COMMON): $(COMMON_OBJECTS)
124        $(LINK_STATIC_LIB) $@ $^ 
125
126$(GEN_SERVER_OBJECTS) $(PRIVATE_SERVER_OBJECTS): $(SERVER_INCLUDES) $(GEN_SERVER_SOURCES) $(PRIVATE_SERVER_OBJECTS:.o=.c)
127        $(COMPILER) -c -o $@ $(@:.o=.c) -IGENH -I. -IC -DAISC_SAVE_$(AISC_SAVE) $(POST_COMPILE)
128
129O/%.o: C/%.c $(GEN_INCLUDES) $(CLIENT_INCLUDES) C/server.h
130        $(COMPILER) -c -o $@ $< -IGENH -I. -IC $(POST_COMPILE)
131
132$(CLIENT_OBJECTS): $(CLIENT_OBJECTS:O/%.o=C/%.c) $(GEN_INCLUDES) $(CLIENT_INCLUDES)
133        $(CLIENTCOMPILER) -c -o $@ C/$(@F:.o=.c) -IGENH -I. -IC $(POST_COMPILE)
134
135$(DUMPDIR): 
136        mkdir -p $(DUMPDIR)
137
138$(GLOBALS_AISC).tmp: 
139        @echo "AISC_SAVE $(AISC_SAVE);" > $@
140
141$(GLOBALS_AISC): $(GLOBALS_AISC).tmp
142        $(ARBHOME)/SOURCE_TOOLS/mv_if_diff $(GLOBALS_AISC).tmp $(GLOBALS_AISC)
143
144GENH/%.h: AISC/%.pa $(AISC_DEPENDS) $(INCLUDE_INCLUDES) 
145        $(RUN_AISC) $< $(MAIN_SOURCE) $@
146
147GENC/%.c: AISC/%.pa $(AISC_DEPENDS) $(AISC_SERVER_EXTERN) $(GEN_SERVER_INCLUDES)
148        $(RUN_AISC) $< $(MAIN_SOURCE) $@ $(AISC_SERVER_EXTERN) $(IMPORT_PROTO) $(GLOBALS_AISC)
149
150$(IMPORT_PROTO): $(GEN_SERVER_PROTO_SOURCES)
151        echo $@
152
153$(AISC_SERVER_EXTERN): $(AISC_EXTERNALS) $(AISC_MKPT) $(THIS) 
154        rm -f $(AISC_SERVER_EXTERN)
155        $(AISC_MKPT) -a $(AISC_EXTERNALS) >$@
156
157$(GEN_SERVER_EXTERN_PROTO): $(AISC_EXTERNALS) $(AISC_MKPT) $(THIS)
158        rm -f $(GEN_SERVER_EXTERN_PROTO)
159        $(AISC_MKPT) -w $(subst GENH/,,$@) $(AISC_EXTERNALS) >$@
160
161$(GEN_SERVER_PROTO): $(GEN_SERVER_PROTO_SOURCES) $(AISC_MKPT) $(THIS)
162        rm -f $@
163        $(AISC_MKPT) -w $(subst GENH/,,$@) $(GEN_SERVER_PROTO_SOURCES) >$@
164
165clean:
166        @rm -f *.[ao] */*.[ao]
167        @rm -rf GENH GENC DUMP O
168        @rm -f .depends
169
170.depends:
171        $(MAKEDEPEND) $(MAKEDEPENDFLAGS) C/*.c GENC/*.c -I GENH -I C -f- -w1 2>/dev/null \
172                | grep -v ' /usr' \
173                | $(SED) -e 's/^C/O/ig' \
174                > .depends_new
175        $(ARBHOME)/SOURCE_TOOLS/mv_if_diff .depends_new .depends
176
177ifeq ($(AUTODEPENDS),2)
178include .depends
179endif
Note: See TracBrowser for help on using the repository browser.