| 1 | ############################################################################### |
| 2 | # Copyright (c) 2000-2015 Ericsson Telecom AB |
| 3 | # All rights reserved. This program and the accompanying materials |
| 4 | # are made available under the terms of the Eclipse Public License v1.0 |
| 5 | # which accompanies this distribution, and is available at |
| 6 | # http://www.eclipse.org/legal/epl-v10.html |
| 7 | ############################################################################### |
| 8 | # Makefile for the Base Library of TTCN-3 Test Executor |
| 9 | TOP := .. |
| 10 | include $(TOP)/Makefile.cfg |
| 11 | |
| 12 | SCHEMAS := TitanLoggerApi.xsd |
| 13 | # Generated from `TitanLoggerApi.xsd'. |
| 14 | GENERATED_MODULES := TitanLoggerApi.ttcn |
| 15 | |
| 16 | PREGENERATOR_MODULES := PreGenRecordOf.ttcn |
| 17 | |
| 18 | GENERATED_LOGGERAPI_SOURCES := $(GENERATED_MODULES:.ttcn=.cc) |
| 19 | GENERATED_LOGGERCONTROL_SOURCES := TitanLoggerControl.cc |
| 20 | |
| 21 | PREGENERATED_SOURCES := $(PREGENERATOR_MODULES:.ttcn=.cc) |
| 22 | |
| 23 | ORIGINATORS := TitanLoggerApi.xsd TitanLoggerApi.ttcn TitanLoggerControl.ttcn gccversion.c \ |
| 24 | config_process.l config_process.y |
| 25 | |
| 26 | ifneq ($(FUNCTION_TEST_RUNTIME), yes) |
| 27 | APIDIR := RT1 |
| 28 | else |
| 29 | APIDIR := RT2 |
| 30 | endif |
| 31 | |
| 32 | # RT1 (load test) generates cc/hh files into the RT1/ directory, |
| 33 | # RT2 (function test) into the RT2/ directory. This has two purposes: |
| 34 | # * To prevent the vpath directive in core2/Makefile from finding files in RT1. |
| 35 | # This way, RT2 has to generate these files for itself (with RT2 settings). |
| 36 | # * To allow TTCN3.hh to include the right kind of TitanLoggerApi.hh |
| 37 | # These directories (RT1/RT2) are replicated inside $(INCDIR) |
| 38 | GENERATED_LOGGERAPI_SOURCES := $(addprefix $(APIDIR)/,$(GENERATED_LOGGERAPI_SOURCES)) |
| 39 | GENERATED_LOGGERCONTROL_SOURCES := $(addprefix $(APIDIR)/,$(GENERATED_LOGGERCONTROL_SOURCES)) |
| 40 | PREGENERATED_SOURCES := $(addprefix $(APIDIR)/,$(PREGENERATED_SOURCES)) |
| 41 | |
| 42 | GENERATED_SOURCES := $(GENERATED_LOGGERAPI_SOURCES) $(GENERATED_LOGGERCONTROL_SOURCES) config_process.lex.cc config_process.tab.cc |
| 43 | GENERATED_SOURCES += $(PREGENERATED_SOURCES) |
| 44 | GENERATED_HEADERS := $(GENERATED_LOGGERAPI_SOURCES:.cc=.hh) $(GENERATED_LOGGERCONTROL_SOURCES:.cc=.hh) config_process.tab.hh config_process.lex.hh |
| 45 | GENERATED_HEADERS += $(GENERATED_LOGGERAPI_SOURCES:.cc=Simple.hh) $(PREGENERATED_SOURCES:.cc=.hh) |
| 46 | GENERATED_OTHERS := $(GENERATED_LOGGERAPI_SOURCES).compiled $(GENERATED_LOGGERCONTROL_SOURCES).compiled |
| 47 | GENERATED_OTHERS += $(PREGENERATED_SOURCES).compiled config_process.output lex.backup |
| 48 | |
| 49 | TTCN_COMPILER_FLAGS := |
| 50 | ifeq ($(FUNCTION_TEST_RUNTIME), yes) |
| 51 | TTCN_COMPILER_FLAGS += -R |
| 52 | endif |
| 53 | |
| 54 | TTCN_COMPILER_FLAGS += -o $(APIDIR) |
| 55 | |
| 56 | # -I. is needed because TitanLoggerApi.hh (generated) does #include <TTCN3.hh> |
| 57 | CPPFLAGS += -I. -I$(APIDIR) |
| 58 | |
| 59 | SOLARIS_LIBS := -lsocket -lnsl -lxml2 |
| 60 | SOLARIS8_LIBS := -lsocket -lnsl -lxml2 |
| 61 | LINUX_LIBS := -lxml2 |
| 62 | FREEBSD_LIBS := -lxml2 |
| 63 | WIN32_LIBS := -lxml2 |
| 64 | INTERIX_LIBS := -lxml2 |
| 65 | |
| 66 | ifeq ($(USAGE_STATS), yes) |
| 67 | SOLARIS_LIBS += -lresolv |
| 68 | SOLARIS8_LIBS += -lresolv |
| 69 | LINUX_LIBS += -lpthread -lrt |
| 70 | endif |
| 71 | |
| 72 | # No need for `-Wl,-export-dynamic' until we're using shared objects. All |
| 73 | # `dl*()' related stuff is disabled for now. |
| 74 | ifeq ($(DYNAMIC_LOGGER_PLUGINS), yes) |
| 75 | $(PLATFORM)_LIBS += -ldl |
| 76 | endif |
| 77 | |
| 78 | # Note: RT2_SOURCES is set in core2/Makefile |
| 79 | STATIC_SOURCES := Addfunc.cc Array.cc ASN_Any.cc ASN_CharacterString.cc \ |
| 80 | ASN_EmbeddedPDV.cc ASN_External.cc ASN_Null.cc Basetype.cc BER.cc Bitstring.cc \ |
| 81 | Boolean.cc Charstring.cc Communication.cc Component.cc Default.cc Encdec.cc \ |
| 82 | Error.cc Float.cc Hexstring.cc RInt.cc Integer.cc Logger.cc LoggerPlugin.cc \ |
| 83 | LoggerPluginManager.cc LegacyLogger.cc LoggingBits.cc \ |
| 84 | Module_list.cc Objid.cc Octetstring.cc Parallel_main.cc Port.cc RAW.cc \ |
| 85 | Runtime.cc Single_main.cc Snapshot.cc Struct_of.cc Template.cc TEXT.cc \ |
| 86 | Textbuf.cc Timer.cc Param_Types.cc Universal_charstring.cc \ |
| 87 | Verdicttype.cc XER.cc XmlReader.cc TitanLoggerControlImpl.cc TCov.cc JSON.cc \ |
| 88 | Profiler.cc ProfilerTools.cc ProfMerge_main.cc $(RT2_SOURCES) |
| 89 | |
| 90 | # Keep GENERATED_SOURCES at the beginning. This may speed up parallel builds |
| 91 | # by starting early the compilation of the largest files. |
| 92 | SOURCES := $(GENERATED_SOURCES) $(STATIC_SOURCES) |
| 93 | |
| 94 | |
| 95 | ifeq ($(FUNCTION_TEST_RUNTIME), yes) |
| 96 | RT2_SUFFIX := -rt2 |
| 97 | CPPFLAGS += -DTITAN_RUNTIME_2 |
| 98 | endif |
| 99 | |
| 100 | ifdef XMLDIR |
| 101 | ifeq ($(XMLDIR), default) |
| 102 | # Do not change XMLDIR ! |
| 103 | ACTUAL_XMLDIR := /usr |
| 104 | # do not add -L/usr/lib to LDFLAGS, it's redundant |
| 105 | else |
| 106 | ACTUAL_XMLDIR := $(XMLDIR) |
| 107 | LDFLAGS += -L$(ACTUAL_XMLDIR)/lib |
| 108 | endif |
| 109 | # This addition to CPPFLAGS is always needed |
| 110 | CPPFLAGS += -I$(ACTUAL_XMLDIR)/include/libxml2 |
| 111 | endif |
| 112 | |
| 113 | ifdef OPENSSL_DIR |
| 114 | ifneq ($(OPENSSL_DIR), default) |
| 115 | CPPFLAGS += -I$(OPENSSL_DIR)/include |
| 116 | LDFLAGS += -L$(OPENSSL_DIR)/lib |
| 117 | endif |
| 118 | endif |
| 119 | |
| 120 | ifeq ($(PLATFORM),INTERIX) |
| 121 | # to get the "right" iconv, used by libxml2 |
| 122 | CPPFLAGS += -I/usr/local/include |
| 123 | endif |
| 124 | |
| 125 | |
| 126 | OBJECTS := $(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(SOURCES))) |
| 127 | |
| 128 | PROFMERGE_OBJECTS := ProfMerge_main.o ProfilerTools.profmerge.o \ |
| 129 | ../common/JSON_Tokenizer.o ../common/memory.o |
| 130 | |
| 131 | COMMON_OBJECTS := $(addprefix ../common/, memory.o pattern_la.o pattern_p.o \ |
| 132 | config_preproc.o config_preproc_la.o config_preproc_p.tab.o \ |
| 133 | path.o pattern_uni.o Quadruple.o NetworkHandler.o Path2.o \ |
| 134 | ModuleVersion.o JSON_Tokenizer.o) |
| 135 | |
| 136 | ifeq ($(DEBUG), yes) |
| 137 | COMMON_OBJECTS += ../common/new.o |
| 138 | endif |
| 139 | |
| 140 | ifeq ($(LICENSING), yes) |
| 141 | COMMON_OBJECTS += ../common/license.o |
| 142 | PROFMERGE_OBJECTS += ../common/license.o |
| 143 | endif |
| 144 | |
| 145 | ifdef REGEX_DIR |
| 146 | COMMON_OBJECTS += $(REGEX_DIR)/lib/regex.o |
| 147 | endif |
| 148 | |
| 149 | ifeq ($(USAGE_STATS), yes) |
| 150 | COMMON_OBJECTS += ../common/usage_stats.o |
| 151 | endif |
| 152 | |
| 153 | LIBRARY_OBJECTS_NOMAIN := $(filter-out Single_main.o Parallel_main.o ProfMerge_main.o, \ |
| 154 | $(OBJECTS)) $(COMMON_OBJECTS) |
| 155 | |
| 156 | TOBECLEANED := LoggerPlugin_static.o LoggerPlugin_dynamic.o ProfilerTools.profmerge.o |
| 157 | |
| 158 | DEPFILES := $(patsubst %.cc,%.d,$(patsubst %.c,%.d,$(SOURCES))) |
| 159 | |
| 160 | SUBDIRS := |
| 161 | |
| 162 | HEADERS := TTCN3.hh Types.h Param_Types.hh Basetype.hh Template.hh RInt.hh \ |
| 163 | Integer.hh Float.hh Boolean.hh Objid.hh Verdicttype.hh Bitstring.hh \ |
| 164 | Hexstring.hh Octetstring.hh Charstring.hh Universal_charstring.hh Component.hh \ |
| 165 | Logger.hh ILoggerPlugin.hh Error.hh Timer.hh Runtime.hh Snapshot.hh Default.hh \ |
| 166 | Port.hh Event_Handler.hh Struct_of.hh Array.hh Optional.hh Textbuf.hh Encdec.hh \ |
| 167 | Module_list.hh Parameters.h Addfunc.hh RAW.hh BER.hh TEXT.hh ASN_Null.hh \ |
| 168 | ASN_Any.hh ASN_External.hh ASN_EmbeddedPDV.hh ASN_CharacterString.hh XER.hh \ |
| 169 | XmlReader.hh cversion.h TitanLoggerControl.ttcn TitanLoggerApi.xsd Vector.hh \ |
| 170 | JSON.hh Profiler.hh RefdIndex.hh ProfilerTools.hh |
| 171 | # Copied during "make install" |
| 172 | |
| 173 | ifdef REGEX_DIR |
| 174 | HEADERS += $(REGEX_DIR)/include/regex.h |
| 175 | endif |
| 176 | |
| 177 | # # # # Library and shared lib names |
| 178 | LIBRARY := libttcn3$(RT2_SUFFIX).a |
| 179 | PARALLEL_LIBRARY := libttcn3$(RT2_SUFFIX)-parallel.a |
| 180 | SHAREDLIB := libttcn3$(RT2_SUFFIX)-dynamic.so |
| 181 | PARALLEL_SHAREDLIB := libttcn3$(RT2_SUFFIX)-parallel-dynamic.so |
| 182 | |
| 183 | # Executables |
| 184 | ifneq ($(FUNCTION_TEST_RUNTIME), yes) |
| 185 | PROGRAMS := ttcn3_profmerge$(EXESUFFIX) |
| 186 | endif |
| 187 | |
| 188 | TARGETS := $(LIBRARY) $(PARALLEL_LIBRARY) |
| 189 | |
| 190 | # Determine whether to build shared libraries: |
| 191 | DYNAMIC_LINKING := yes |
| 192 | ifeq ($(PLATFORM), WIN32) |
| 193 | LDFLAGS += -Xlinker --out-implib -Xlinker $(basename $@).a |
| 194 | endif |
| 195 | ifeq ($(PLATFORM), INTERIX) |
| 196 | DYNAMIC_LINKING := no |
| 197 | endif |
| 198 | |
| 199 | ifeq ($(DYNAMIC_LINKING), yes) |
| 200 | TARGETS += $(SHAREDLIB) $(PARALLEL_SHAREDLIB) |
| 201 | ifeq ($(PLATFORM), WIN32) |
| 202 | # import libraries are generated as a side-effect; need to be cleaned |
| 203 | TOBECLEANED += $(SHAREDLIB:.so=.a) $(PARALLEL_SHAREDLIB:.so=.a) |
| 204 | endif |
| 205 | endif |
| 206 | |
| 207 | ifneq ($(FUNCTION_TEST_RUNTIME), yes) |
| 208 | TARGETS += cversion.h |
| 209 | endif |
| 210 | |
| 211 | # Only for testing the consistency of libraries: |
| 212 | TEST_PROGRAMS := single$(RT2_SUFFIX)$(EXESUFFIX) parallel$(RT2_SUFFIX)$(EXESUFFIX) |
| 213 | ifeq ($(DYNAMIC_LINKING), yes) |
| 214 | TEST_PROGRAMS += single$(RT2_SUFFIX)-dynamic$(EXESUFFIX) parallel$(RT2_SUFFIX)-dynamic$(EXESUFFIX) |
| 215 | endif |
| 216 | ifneq ($(FUNCTION_TEST_RUNTIME), yes) |
| 217 | TEST_PROGRAMS += gccversion$(EXESUFFIX) |
| 218 | endif |
| 219 | |
| 220 | |
| 221 | TOBECLEANED += $(TEST_PROGRAMS) cversion.h $(GENERATED_MODULES) |
| 222 | |
| 223 | ifdef REGEX_DIR |
| 224 | CPPFLAGS += -I$(REGEX_DIR)/include |
| 225 | endif |
| 226 | |
| 227 | |
| 228 | ifdef SRCDIR |
| 229 | COMMON_DIR := $(SRCDIR)/common |
| 230 | else |
| 231 | COMMON_DIR := ../common |
| 232 | endif |
| 233 | |
| 234 | CPPFLAGS += -I$(COMMON_DIR) |
| 235 | |
| 236 | MANPAGES := ttcn3_profmerge.1 |
| 237 | |
| 238 | # # # # # # # # # targets |
| 239 | all: $(TARGETS) $(PROGRAMS) $(TEST_PROGRAMS) |
| 240 | |
| 241 | run: all |
| 242 | # Verify that the executables are runnable. |
| 243 | for p in $(filter-out gccversion%,$(TEST_PROGRAMS)); do echo $$p; LD_LIBRARY_PATH=.:$$LD_LIBRARY_PATH ./$$p -l; if [ $$? -ne 0 ] ; then exit $$?; fi done |
| 244 | |
| 245 | # xsd -> ttcn |
| 246 | $(GENERATED_MODULES): $(SCHEMAS) ../xsdconvert/xsd2ttcn$(EXESUFFIX) |
| 247 | ../xsdconvert/xsd2ttcn$(EXESUFFIX) -p $< |
| 248 | sed -e 's/XSD.String/charstring/g;s/XSD.AnySimpleType/charstring/g;s/XSD.Integer/integer/g;s/XSD.Float/float/g;s/XSD.Double/float/g;s/XSD.Boolean/boolean/g;s/import from XSD all;//g' TitanLoggerApi.ttcn >TitanLoggerApi.ttcn_ |
| 249 | mv TitanLoggerApi.ttcn_ TitanLoggerApi.ttcn |
| 250 | |
| 251 | install: $(TARGETS) $(PROGRAMS) |
| 252 | ifeq ($(DYNAMIC_LINKING), yes) |
| 253 | ifeq ($(DEBUG), no) |
| 254 | $(STRIP) $(SHAREDLIB) $(PARALLEL_SHAREDLIB) |
| 255 | endif |
| 256 | endif |
| 257 | mkdir -p $(LIBDIR) |
| 258 | cp $(TARGETS) $(LIBDIR) |
| 259 | ifneq ($(FUNCTION_TEST_RUNTIME), yes) |
| 260 | mkdir -p $(INCDIR) |
| 261 | cp $(HEADERS) $(INCDIR) |
| 262 | mkdir -p $(BINDIR) |
| 263 | cp $(PROGRAMS) $(BINDIR) |
| 264 | mkdir -p $(MANDIR)/man1 |
| 265 | cp $(MANPAGES) $(MANDIR)/man1 |
| 266 | ifeq ($(DYNAMIC_LINKING), yes) |
| 267 | ifneq ($(OPENSSL_DIR), default) |
| 268 | (cd $(OPENSSL_DIR)/lib && tar -cf - libcrypto.so*) |\ |
| 269 | (cd $(LIBDIR) && tar -xf -) |
| 270 | endif |
| 271 | ifneq ($(XMLDIR), default) |
| 272 | (cd $(XMLDIR)/lib && tar -cf - libxml2.so*) |\ |
| 273 | (cd $(LIBDIR) && tar -xf -) |
| 274 | endif |
| 275 | endif |
| 276 | endif |
| 277 | mkdir -p $(INCDIR)/$(APIDIR) |
| 278 | cp $(APIDIR)/TitanLoggerApi*.hh $(INCDIR)/$(APIDIR) |
| 279 | cp $(APIDIR)/PreGenRecordOf.hh $(INCDIR)/$(APIDIR) |
| 280 | |
| 281 | # # # # executables |
| 282 | single$(RT2_SUFFIX)$(EXESUFFIX): $(LIBRARY) |
| 283 | $(CXX) $(LDFLAGS) -o $@ $^ -lcrypto $($(PLATFORM)_LIBS) |
| 284 | |
| 285 | single$(RT2_SUFFIX)-dynamic$(EXESUFFIX): Single_main.o $(SHAREDLIB) |
| 286 | $(CXX) $(LDFLAGS) -o $@ $^ -lcrypto $($(PLATFORM)_LIBS) |
| 287 | |
| 288 | parallel$(RT2_SUFFIX)$(EXESUFFIX): $(PARALLEL_LIBRARY) |
| 289 | $(CXX) $(LDFLAGS) -o $@ $^ -lcrypto $($(PLATFORM)_LIBS) |
| 290 | |
| 291 | parallel$(RT2_SUFFIX)-dynamic$(EXESUFFIX): Parallel_main.o $(PARALLEL_SHAREDLIB) |
| 292 | $(CXX) $(LDFLAGS) -o $@ $^ -lcrypto $($(PLATFORM)_LIBS) |
| 293 | |
| 294 | ttcn3_profmerge$(EXESUFFIX): $(PROFMERGE_OBJECTS) |
| 295 | $(CXX) $(LDFLAGS) -o $@ $^ $(LICENSE_LIBS) $($(PLATFORM)_LIBS) |
| 296 | |
| 297 | # # # # static link libraries |
| 298 | $(LIBRARY): $(LIBRARY_OBJECTS_NOMAIN) LoggerPlugin_static.o Single_main.o |
| 299 | $(AR) -r $@ $? |
| 300 | |
| 301 | $(PARALLEL_LIBRARY): $(LIBRARY_OBJECTS_NOMAIN) LoggerPlugin_static.o Parallel_main.o |
| 302 | $(AR) -r $@ $? |
| 303 | |
| 304 | # # # # dynamic link libraries |
| 305 | |
| 306 | $(SHAREDLIB): $(LIBRARY_OBJECTS_NOMAIN) LoggerPlugin_dynamic.o Single_main.o |
| 307 | $(LD) $(LDFLAGS) -o $@ $^ -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) |
| 308 | |
| 309 | $(PARALLEL_SHAREDLIB): $(LIBRARY_OBJECTS_NOMAIN) LoggerPlugin_dynamic.o Parallel_main.o |
| 310 | $(LD) $(LDFLAGS) -o $@ $^ -L$(OPENSSL_DIR)/lib -lcrypto $($(PLATFORM)_LIBS) |
| 311 | |
| 312 | ifneq ($(FUNCTION_TEST_RUNTIME), yes) |
| 313 | # core2 -> core dependency, core2 does not run flex and bison |
| 314 | # core must be made before core2 |
| 315 | |
| 316 | %.lex.cc %.lex.hh: %.l |
| 317 | $(FLEX) $(FLEXFLAGS) -P$(subst .l,_,$<) --header-file=$(subst .l,.lex.hh,$<) \ |
| 318 | -o$(subst .l,.lex.cc,$<) $< |
| 319 | |
| 320 | %.tab.cc %.tab.hh: %.y %.lex.hh |
| 321 | $(BISON) $(BISONFLAGS) -o $(subst .y,.tab.cc,$<) -p $(subst .y,_,$<) $< |
| 322 | |
| 323 | cversion.h: gccversion$(EXESUFFIX) |
| 324 | ./$< > $@.tmp |
| 325 | if [ -f $@ ] ; then \ |
| 326 | if diff $@.tmp $@ >/dev/null ; then \ |
| 327 | rm $@.tmp ; \ |
| 328 | else \ |
| 329 | mv $@.tmp $@ ; \ |
| 330 | fi \ |
| 331 | else \ |
| 332 | mv $@.tmp $@ ; \ |
| 333 | fi |
| 334 | |
| 335 | gccversion$(EXESUFFIX): gccversion.c ../Makefile.cfg |
| 336 | # The line before the backslash is $(LINK.c), except it uses CCFLAGS |
| 337 | # instead of CFLAGS. TARGET_ARCH is not used by Titan. |
| 338 | $(CC) $(CCFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) \ |
| 339 | $< $(LOADLIBES) $(LDLIBS) -o $@ |
| 340 | endif |
| 341 | |
| 342 | #LegacyLogger.d: cversion.h |
| 343 | $(DEPFILES): cversion.h |
| 344 | |
| 345 | #TitanLoggerControlImpl.d Single_main.d Runtime.d Port.d LegacyLogger.d \ |
| 346 | #LoggerPlugin.d LoggerPluginManager.d Error.d Default.d Communication.d \ |
| 347 | #Addfunc.d: $(GENERATED_LOGGERAPI_SOURCES:.cc=.cc) |
| 348 | |
| 349 | TitanLoggerControlImpl.d: $(GENERATED_LOGGERCONTROL_SOURCES) |
| 350 | |
| 351 | |
| 352 | $(GENERATED_LOGGERAPI_SOURCES): $(GENERATED_LOGGERAPI_SOURCES).compiled |
| 353 | @if [ ! -f $@ ]; then $(RM) $<; $(MAKE) $<; fi |
| 354 | |
| 355 | $(GENERATED_LOGGERAPI_SOURCES).compiled:: ../compiler2/compiler$(EXESUFFIX) |
| 356 | @if [ -f $@ ]; then $(RM) $@; $(MAKE) $@; fi |
| 357 | |
| 358 | $(GENERATED_LOGGERAPI_SOURCES).compiled:: $(GENERATED_MODULES) |
| 359 | mkdir -p $(APIDIR) |
| 360 | # The input (TitanLoggerApi.ttcn) is a generated file and might get corrupted |
| 361 | # by parallel execution of xsd2ttcn. Get it out of the way but save it for later. |
| 362 | if ../compiler2/compiler$(EXESUFFIX) $(TTCN_COMPILER_FLAGS) $^ - $?; then :; else mv $? $?.$$$$.bad; exit 1; fi |
| 363 | perl $(ABS_SRC)/../core/simplify.pl $(GENERATED_LOGGERAPI_SOURCES:.cc=.hh) > $(GENERATED_LOGGERAPI_SOURCES:.cc=Simple.hh) |
| 364 | touch $@ |
| 365 | |
| 366 | $(GENERATED_LOGGERCONTROL_SOURCES): $(GENERATED_LOGGERCONTROL_SOURCES).compiled |
| 367 | @if [ ! -f $@ ]; then $(RM) $<; $(MAKE) $<; fi |
| 368 | |
| 369 | $(GENERATED_LOGGERCONTROL_SOURCES).compiled:: ../compiler2/compiler$(EXESUFFIX) |
| 370 | @if [ -f $@ ]; then $(RM) $@; $(MAKE) $@; fi |
| 371 | |
| 372 | $(GENERATED_LOGGERCONTROL_SOURCES).compiled:: TitanLoggerControl.ttcn |
| 373 | mkdir -p $(APIDIR) |
| 374 | ../compiler2/compiler$(EXESUFFIX) $(TTCN_COMPILER_FLAGS) $^ - $? |
| 375 | touch $@ |
| 376 | |
| 377 | $(PREGENERATED_SOURCES): $(PREGENERATED_SOURCES).compiled |
| 378 | @if [ ! -f $@ ]; then $(RM) $<; $(MAKE) $<; fi |
| 379 | |
| 380 | $(PREGENERATED_SOURCES).compiled:: ../compiler2/compiler$(EXESUFFIX) |
| 381 | @if [ -f $@ ]; then $(RM) $@; $(MAKE) $@; fi |
| 382 | |
| 383 | $(PREGENERATED_SOURCES).compiled:: $(PREGENERATOR_MODULES) |
| 384 | mkdir -p $(APIDIR) |
| 385 | ../compiler2/compiler$(EXESUFFIX) -F $(TTCN_COMPILER_FLAGS) $^ - $? |
| 386 | touch $@ |
| 387 | |
| 388 | include ../Makefile.genrules |
| 389 | |
| 390 | # These are not in STATIC_SOURCES, so vpath is not created for them |
| 391 | vpath LoggerPlugin_dynamic.cc $(ABS_SRC) |
| 392 | vpath LoggerPlugin_static.cc $(ABS_SRC) |