summaryrefslogtreecommitdiff
path: root/TAO/TAO_IDL/tao_idl.mpc
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/TAO_IDL/tao_idl.mpc')
-rw-r--r--TAO/TAO_IDL/tao_idl.mpc185
1 files changed, 185 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/tao_idl.mpc b/TAO/TAO_IDL/tao_idl.mpc
new file mode 100644
index 00000000000..5af3fb1eb94
--- /dev/null
+++ b/TAO/TAO_IDL/tao_idl.mpc
@@ -0,0 +1,185 @@
+// -*- MPC -*-
+// $Id$
+
+project(TAO_IDL_EXE) : aceexe, install, tao_output, crosscompile {
+ exename = tao_idl
+ libs += TAO_IDL_BE TAO_IDL_FE
+ install = $(ACE_ROOT)/bin
+ after += TAO_IDL_BE TAO_IDL_FE gperf
+
+ specific (automake) {
+ includes += $(srcdir)/include $(srcdir)/be_include $(srcdir)/fe $(TAO_ROOT)
+ macros += TAO_IDL_INCLUDE_DIR=\"\\"$(includedir)/tao\\"\"
+ } else {
+ includes += include be_include fe ..
+ }
+
+ specific {
+ // Override the template value for optimize. Building the exe
+ // with optimization turned on doesn't seem to work (at least not with
+ // vc6 or vc71). This is due to the use of addresses of static objecs
+ // within the code.
+ optimize =
+ }
+
+ verbatim(gnuace, local) {
+ ifeq ($(TAO_IDL_PREPROCESSOR),)
+ ifeq ($(ACE_CC_PREPROCESSOR),)
+ CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(strip $(CXX))\\\"
+ else
+ CPPFLAGS += -DACE_CC_PREPROCESSOR=\\\"$(subst \\,\\,$(ACE_CC_PREPROCESSOR))\\\"
+ endif
+ else
+ CPPFLAGS += -DTAO_IDL_PREPROCESSOR=\\\"$(subst \\,\\,$(TAO_IDL_PREPROCESSOR))\\\"
+ endif
+ }
+
+ Source_Files {
+ driver/drv_args.cpp
+ driver/drv_preproc.cpp
+ tao_idl.cpp
+ }
+
+ Header_Files {
+ include/drv_extern.h
+ }
+}
+
+
+project(TAO_IDL_BE) : acelib, conv_lib, tao_output, crosscompile {
+ sharedname = TAO_IDL_BE
+ libs += TAO_IDL_FE
+ dynamicflags = TAO_IDL_BE_BUILD_DLL
+ after += TAO_IDL_FE
+
+ specific (automake) {
+ includes += $(srcdir)/include $(srcdir)/be_include $(srcdir)/fe
+ } else {
+ includes += include be_include fe
+ }
+
+ specific {
+ // Override the template value for optimize. Building the backend
+ // with optimization turned on doesn't seem to work (at least not with
+ // vc6 or vc71). This is due to the use of addresses of static objecs
+ // within the code.
+ optimize =
+ }
+
+ Source_Files {
+ be
+ }
+
+ Header_Files {
+ be_include
+ }
+}
+
+
+project(TAO_IDL_FE) : acelib, conv_lib, tao_output, crosscompile {
+ sharedname = TAO_IDL_FE
+ dynamicflags = TAO_IDL_FE_BUILD_DLL
+
+ specific (automake) {
+ includes += $(srcdir)/include $(srcdir)/fe
+ } else {
+ includes += include fe
+ }
+
+ specific {
+ // Override the template value for optimize. Building the frontend
+ // with optimization turned on doesn't seem to work (at least not with
+ // vc6 or vc71). This is due to the use of addresses of static objecs
+ // within the code.
+ optimize =
+ }
+
+ Source_Files {
+ fe
+ ast
+ util
+ narrow
+ }
+
+ Header_Files {
+ include
+ }
+
+ verbatim(gnuace, local) {
+ fe/fe_lookup.cpp: fe/keywords.dat
+ " echo '\/\/ $$I''d$$' > $@"
+ " echo '' >> $@"
+ " echo '#include \"fe_private.h\"' >> $@"
+ " echo '#include \"ace/OS_NS_string.h\"' >> $@"
+ " echo '' >> $@"
+ " $(ACE_ROOT)/bin/gperf -M -J -c -C -D -E -T -f 0 -a -o -t -p -K keyword_ -L C++ -Z TAO_IDL_CPP_Keyword_Table -N lookup -k1,2,$$ $^ | \\"
+ " sed -e 's/,}/,0}/g' \\"
+ " -e 's/\\*str == \\*s && !strncmp/len == static_cast<unsigned int> (ACE_OS::strlen (s)) \\&\\& *str == *s \\&\\& !ACE_OS::strncmp/g' \\"
+ " >> $@"
+
+ fe/lex.yy.cpp: fe/idl.ll
+ " @echo 'WARNING: Potentially outdated $@'"
+ " @echo ' either touch(1) the file or explicitly'"
+ " @echo ' generate it using:'"
+ " @echo ' make lex.yy'"
+
+ .PHONY: lex.yy
+ lex.yy:
+ "ifeq ($(notdir $(LEX)), flex)"
+ " $(LEX) -L -t fe/idl.ll | \\"
+ " sed -e 's/yy/tao_yy/g' \\"
+ " -e 's/YY/TAO_YY/g' \\"
+ " -e 's/ NULL/ 0/g' \\"
+ " -e 's/ / /g' \\"
+ " -e 's/ *$$\/\/g' \\"
+ " -e 's/TAO_YY_BREAK break;/TAO_YY_BREAK ACE_NOTREACHED (break;)/g' \\"
+ " -e 's/ECHO/TAO_YY_ECHO/' \\"
+ " -e 's/fread\([^\)]*\)/static_cast<int> (&)/g' \\"
+ " -e 's/\\$$Hea''der.*\\$$/$$I''d$$/' \\"
+ " -e 's@#include <stdio\.h>@#include \"ace/os_include/os_stdio.h\"@' \\"
+ " -e 's@#include <unistd\.h>@#include \"ace/os_include/os_ctype.h\"@' \\"
+ " -e '/#include </d' \\"
+ " > fe/lex.yy.cpp"
+ " (cd fe; patch < lex.yy.cpp.diff)"
+ "else"
+ " @echo 'ERROR: You must use flex 2.5.4 or higher to process this file'"
+ " @/bin/false"
+ "endif"
+
+ fe/y.tab.cpp: fe/idl.yy
+ " @echo 'WARNING: Potentially outdated $@'"
+ " @echo ' either touch(1) the file or explicitly'"
+ " @echo ' generate it using:'"
+ " @echo ' make y.tab'"
+
+ .PHONY: y.tab
+ y.tab: fe/idl.yy
+ "ifeq ($(notdir $(YACC)), bison)"
+ " $(YACC) -y -l -d fe/idl.yy"
+ " sed -e 's/char \\*getenv/char *ace_foo/g' \\"
+ " -e 's/= getenv/= ACE_OS::getenv/g' \\"
+ " -e 's/int yynew_state,/int,/g' \\"
+ " -e 's/int yyold_state,/int,/g' \\"
+ " -e 's/int yyrule_num,/int,/g' \\"
+ " -e 's/\\(YYDEBUG_DISCARD_TOKEN.*int\\) yytoken_num/\\1/g' \\"
+ " -e 's/yynewerror:\/\/g' \\"
+ " -e 's/yy/tao_yy/g' \\"
+ " -e 's/YY/TAO_YY/g' \\"
+ " -e 's/ / /g' \\"
+ " -e 's/ *$$\/\/g' \\"
+ " -e 's/y\\.tab\\.c/y.tab.cpp/g' \\"
+ " -e 's%\\(#pragma ident\\)%\/\/ \\1%' < y.tab.c > /tmp/$(USER).Y"
+ " sed -e 's/yy/tao_yy/g' \\"
+ " -e 's/YY/TAO_YY/g' < y.tab.h > /tmp/$(USER).YH"
+ " echo '\/\/ $$I''d$$' > fe/y.tab.cpp"
+ " cat /tmp/$(USER).Y >> fe/y.tab.cpp"
+ " echo '\/\/ $$I''d$$' > fe/y.tab.h"
+ " cat /tmp/$(USER).YH >> fe/y.tab.h"
+ " $(RM) /tmp/$(USER).Y /tmp/$(USER).YH y.tab.c y.tab.h"
+ " (cd fe; patch < y.tab.cpp.diff)"
+ "else"
+ " @echo 'ERROR: You must use bison 1.875b or higher to process this file'"
+ " @/bin/false"
+ "endif"
+ }
+}