[PATCH] gbuild conversion: idlc module
David Ostrovsky
David.Ostrovsky at gmx.de
Fri Apr 13 03:41:38 PDT 2012
---
Makefile | 2 +-
Repository.mk | 5 +++
RepositoryModule_ooo.mk | 1 +
idlc/CustomTarget_scanner.mk | 39 ++++++++++++++++++++++
idlc/Executable_idlc.mk | 75 ++++++++++++++++++++++++++++++++++++++++++
idlc/Executable_idlcpp.mk | 46 +++++++++++++++++++++++++
idlc/Makefile | 7 ++++
idlc/Module_idlc.mk | 36 ++++++++++++++++++++
idlc/prj/build.lst | 4 +--
idlc/prj/d.lst | 7 ----
idlc/prj/makefile.mk | 1 +
idlc/source/parser.y | 34 ++++++++++++++++---
idlc/source/preproc/eval.c | 24 +++++++-------
idlc/source/wrap_parser.cxx | 32 ------------------
14 files changed, 253 insertions(+), 60 deletions(-)
create mode 100644 idlc/CustomTarget_scanner.mk
create mode 100644 idlc/Executable_idlc.mk
create mode 100644 idlc/Executable_idlcpp.mk
create mode 100644 idlc/Makefile
create mode 100644 idlc/Module_idlc.mk
create mode 100644 idlc/prj/makefile.mk
delete mode 100644 idlc/source/wrap_parser.cxx
diff --git a/Makefile b/Makefile
index 865a324..7993cff 100644
--- a/Makefile
+++ b/Makefile
@@ -67,6 +67,7 @@ i18npool\
i18nutil\
idl\
io\
+idlc\
javaunohelper\
jurt\
jvmaccess\
@@ -176,7 +177,6 @@ hunspell\
hyphen\
icc\
icu\
-idlc\
instsetoo_native\
jfreereport\
jpeg\
diff --git a/Repository.mk b/Repository.mk
index 1a3851e..2bf19b6 100644
--- a/Repository.mk
+++ b/Repository.mk
@@ -53,6 +53,11 @@ $(eval $(call gb_Helper_register_executables,NONE, \
xpdfimport \
))
+$(eval $(call gb_Helper_register_executables,SDK, \
+ idlc \
+ idlcpp \
+))
+
$(eval $(call gb_Helper_register_executables,OOO, \
spadmin.bin \
$(if $(filter $(GUIBASE)$(ENABLE_KDE),unxTRUE), \
diff --git a/RepositoryModule_ooo.mk b/RepositoryModule_ooo.mk
index a79028c..ea5d5ab 100644
--- a/RepositoryModule_ooo.mk
+++ b/RepositoryModule_ooo.mk
@@ -67,6 +67,7 @@ $(eval $(call gb_Module_add_moduledirs,ooo,\
i18npool \
i18nutil \
idl \
+ idlc \
javaunohelper \
jvmaccess \
jvmfwk \
diff --git a/idlc/CustomTarget_scanner.mk b/idlc/CustomTarget_scanner.mk
new file mode 100644
index 0000000..d1327c0
--- /dev/null
+++ b/idlc/CustomTarget_scanner.mk
@@ -0,0 +1,39 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2012 David Ostrovsky <d.ostrovsky at gmx.de> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_CustomTarget_CustomTarget,idlc/scanner,new_style))
+
+ICSC := $(call gb_CustomTarget_get_workdir,idlc/scanner)
+
+$(call gb_CustomTarget_get_target,idlc/scanner) : $(ICSC)/scanner.cxx
+
+$(ICSC)/scanner.cxx : $(ICSC)/stripped_scanner.ll
+ flex -o$@ $<
+
+$(ICSC)/stripped_scanner.ll : $(SRCDIR)/idlc/source/scanner.ll | $(ICSC)/.dir
+ tr -d "\015" < $< > $@
+
+# vim:set shiftwidth=4 tabstop=4 noexpandtab:
diff --git a/idlc/Executable_idlc.mk b/idlc/Executable_idlc.mk
new file mode 100644
index 0000000..1b23736
--- /dev/null
+++ b/idlc/Executable_idlc.mk
@@ -0,0 +1,75 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2012 David Ostrovsky <d.ostrovsky at gmx.de> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_Executable_Executable,idlc))
+
+$(eval $(call gb_Executable_set_include,idlc,\
+ $$(INCLUDE) \
+ -I$(WORKDIR)/YaccTarget/idlc/source \
+ -I$(SRCDIR)/idlc/inc \
+ -I$(SRCDIR)/idlc/source \
+))
+
+$(eval $(call gb_Executable_use_libraries,idlc,\
+ reg \
+ sal \
+ salhelper \
+))
+
+$(eval $(call gb_Executable_add_grammars,idlc,\
+ idlc/source/parser \
+))
+
+$(WORKDIR)/GenCxxObject/YaccTarget/idlc/source/parser.o: T_CXXFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS) $(gb_LinkTarget_CXXFLAGS) $(CXXFLAGS)
+
+$(eval $(call gb_Executable_use_custom_headers,idlc,idlc/scanner))
+
+$(eval $(call gb_Executable_add_exception_objects,idlc,\
+ idlc/source/wrap_scanner \
+ idlc/source/idlcmain \
+ idlc/source/idlc \
+ idlc/source/idlccompile \
+ idlc/source/idlcproduce \
+ idlc/source/errorhandler \
+ idlc/source/options \
+ idlc/source/fehelper \
+ idlc/source/astdeclaration \
+ idlc/source/astscope \
+ idlc/source/aststack \
+ idlc/source/astdump \
+ idlc/source/astinterface \
+ idlc/source/aststruct \
+ idlc/source/aststructinstance \
+ idlc/source/astoperation \
+ idlc/source/astconstant \
+ idlc/source/astenum \
+ idlc/source/astarray \
+ idlc/source/astunion \
+ idlc/source/astexpression \
+ idlc/source/astservice \
+))
+
+# vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/idlc/Executable_idlcpp.mk b/idlc/Executable_idlcpp.mk
new file mode 100644
index 0000000..67805f3
--- /dev/null
+++ b/idlc/Executable_idlcpp.mk
@@ -0,0 +1,46 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2012 David Ostrovsky <d.ostrovsky at gmx.de> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_Executable_Executable,idlcpp))
+
+ifeq ($(OS),WNT)
+$(eval $(call gb_Executable_use_libraries,idlcpp,\
+ gnu_getopt \
+))
+endif
+
+$(eval $(call gb_Executable_add_cobjects,idlcpp,\
+ idlc/source/preproc/cpp \
+ idlc/source/preproc/eval \
+ idlc/source/preproc/include \
+ idlc/source/preproc/lex \
+ idlc/source/preproc/macro \
+ idlc/source/preproc/nlist \
+ idlc/source/preproc/tokens \
+ idlc/source/preproc/unix \
+))
+
+# vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/idlc/Makefile b/idlc/Makefile
new file mode 100644
index 0000000..ccb1c85
--- /dev/null
+++ b/idlc/Makefile
@@ -0,0 +1,7 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+
+module_directory:=$(dir $(realpath $(firstword $(MAKEFILE_LIST))))
+
+include $(module_directory)/../solenv/gbuild/partial_build.mk
+
+# vim: set noet sw=4 ts=4:
diff --git a/idlc/Module_idlc.mk b/idlc/Module_idlc.mk
new file mode 100644
index 0000000..2536c58
--- /dev/null
+++ b/idlc/Module_idlc.mk
@@ -0,0 +1,36 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+# Version: MPL 1.1 / GPLv3+ / LGPLv3+
+#
+# The contents of this file are subject to the Mozilla Public License Version
+# 1.1 (the "License"); you may not use this file except in compliance with
+# the License or as specified alternatively below. You may obtain a copy of
+# the License at http://www.mozilla.org/MPL/
+#
+# Software distributed under the License is distributed on an "AS IS" basis,
+# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+# for the specific language governing rights and limitations under the
+# License.
+#
+# Major Contributor(s):
+# Copyright (C) 2012 David Ostrovsky <d.ostrovsky at gmx.de> (initial developer)
+#
+# All Rights Reserved.
+#
+# For minor contributions see the git repository.
+#
+# Alternatively, the contents of this file may be used under the terms of
+# either the GNU General Public License Version 3 or later (the "GPLv3+"), or
+# the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"),
+# in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable
+# instead of those above.
+
+$(eval $(call gb_Module_Module,idlc))
+
+$(eval $(call gb_Module_add_targets,idlc,\
+ CustomTarget_scanner \
+ Executable_idlc \
+ Executable_idlcpp \
+))
+
+
+# vim:set shiftwidth=4 softtabstop=4 expandtab:
diff --git a/idlc/prj/build.lst b/idlc/prj/build.lst
index 84f2ee1..9a8fb13 100644
--- a/idlc/prj/build.lst
+++ b/idlc/prj/build.lst
@@ -1,5 +1,3 @@
ic idlc : registry NULL
ic idlc usr1 - all ic_mkout NULL
-ic idlc\inc nmake - all ic_inc NULL
-ic idlc\source\preproc nmake - all ic_preproc ic_inc NULL
-ic idlc\source nmake - all ic_source ic_inc NULL
+ic idlc\prj nmake - all ic_prj NULL
diff --git a/idlc/prj/d.lst b/idlc/prj/d.lst
index 8f617ce..e69de29 100644
--- a/idlc/prj/d.lst
+++ b/idlc/prj/d.lst
@@ -1,7 +0,0 @@
-..\%__SRC%\bin\idlc.exe %_DEST%\bin\idlc.exe
-..\%__SRC%\bin\idlc.pdb %_DEST%\bin\idlc.pdb
-..\%__SRC%\bin\idlcpp.exe %_DEST%\bin\idlcpp.exe
-..\%__SRC%\bin\idlcpp.pdb %_DEST%\bin\idlcpp.pdb
-
-..\%__SRC%\bin\idlc %_DEST%\bin\idlc
-..\%__SRC%\bin\idlcpp %_DEST%\bin\idlcpp
diff --git a/idlc/prj/makefile.mk b/idlc/prj/makefile.mk
new file mode 100644
index 0000000..0997622
--- /dev/null
+++ b/idlc/prj/makefile.mk
@@ -0,0 +1 @@
+.INCLUDE : gbuildbridge.mk
diff --git a/idlc/source/parser.y b/idlc/source/parser.y
index ec1dfc0..11f6eec 100644
--- a/idlc/source/parser.y
+++ b/idlc/source/parser.y
@@ -257,13 +257,34 @@ bool includes(AstDeclaration const * type1, AstDeclaration const * type2) {
}
// Suppress any warnings from generated code:
+// This suppression is not working after gbuild conversion
+// because parser.cxx is compiled drectly and not with wraper-stuff.
+//#if defined __GNUC__
+//#pragma GCC system_header
+//#elif defined __SUNPRO_CC
+//#pragma disable_warn
+//#elif defined _MSC_VER
+//#pragma warning(push, 1)
+//#pragma warning(disable: 4273 4701 4702 4706)
+//#endif
+
+// Suppress the warnings this way
+// borrowed from here:
+// rsc/source/parser/rscyacc.y
+#if defined _MSC_VER
+#pragma warning(push, 1)
+#pragma warning(disable:4129 4273 4701 4702)
+#endif
#if defined __GNUC__
-#pragma GCC system_header
+#define GCC_VERSION (__GNUC__ * 10000 \
+ + __GNUC_MINOR__ * 100 \
+ + __GNUC_PATCHLEVEL__)
+/* Diagnostics pragma was introduced with gcc-4.2.1 */
+#if GCC_VERSION >= 40201
+#pragma GCC diagnostic ignored "-Wwrite-strings"
+#endif
#elif defined __SUNPRO_CC
#pragma disable_warn
-#elif defined _MSC_VER
-#pragma warning(push, 1)
-#pragma warning(disable: 4273 4701 4702 4706)
#endif
%}
/*
@@ -601,7 +622,7 @@ forward_dcl :
{
pForward = new AstInterface(*$1, NULL, pScope);
- if ( pDecl = pScope->lookupByName(pForward->getScopedName()) )
+ if ( (pDecl = pScope->lookupByName(pForward->getScopedName())) )
{
if ( (pDecl != pForward) &&
(pDecl->getNodeType() == NT_interface) )
@@ -3285,6 +3306,9 @@ identifier:
;
%%
+#if defined _MSC_VER
+#pragma warning(pop)
+#endif
/*
* Report an error situation discovered in a production
diff --git a/idlc/source/preproc/eval.c b/idlc/source/preproc/eval.c
index 9a1a620..41cc2e3 100644
--- a/idlc/source/preproc/eval.c
+++ b/idlc/source/preproc/eval.c
@@ -262,7 +262,7 @@ long
{
Token *tp;
Nlist *np;
- int ntok, rand;
+ int ntok, local_rand;
trp->tp++;
if (kw == KIFDEF || kw == KIFNDEF)
@@ -283,7 +283,7 @@ long
vp = vals;
op = ops;
*op++ = END;
- for (rand = 0, tp = trp->bp + ntok; tp < trp->lp; tp++)
+ for (local_rand = 0, tp = trp->bp + ntok; tp < trp->lp; tp++)
{
switch (tp->type)
{
@@ -298,17 +298,17 @@ long
case NUMBER:
case CCON:
case STRING:
- if (rand)
+ if (local_rand)
goto syntax;
*vp++ = tokval(tp);
- rand = 1;
+ local_rand = 1;
continue;
/* unary */
case DEFINED:
case TILDE:
case NOT:
- if (rand)
+ if (local_rand)
goto syntax;
*op++ = tp->type;
continue;
@@ -318,7 +318,7 @@ long
case MINUS:
case STAR:
case AND:
- if (rand == 0)
+ if (local_rand == 0)
{
if (tp->type == MINUS)
*op++ = UMINUS;
@@ -349,22 +349,22 @@ long
case QUEST:
case COLON:
case COMMA:
- if (rand == 0)
+ if (local_rand == 0)
goto syntax;
if (evalop(priority[tp->type]) != 0)
return 0;
*op++ = tp->type;
- rand = 0;
+ local_rand = 0;
continue;
case LP:
- if (rand)
+ if (local_rand)
goto syntax;
*op++ = LP;
continue;
case RP:
- if (!rand)
+ if (!local_rand)
goto syntax;
if (evalop(priority[RP]) != 0)
return 0;
@@ -382,7 +382,7 @@ long
if (np && (np->val == KMACHINE))
{
tp++;
- if (rand)
+ if (local_rand)
goto syntax;
*op++ = ARCHITECTURE;
continue;
@@ -395,7 +395,7 @@ long
return 0;
}
}
- if (rand == 0)
+ if (local_rand == 0)
goto syntax;
if (evalop(priority[END]) != 0)
return 0;
diff --git a/idlc/source/wrap_parser.cxx b/idlc/source/wrap_parser.cxx
deleted file mode 100644
index 053713a..0000000
--- a/idlc/source/wrap_parser.cxx
+++ /dev/null
@@ -1,32 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-
-#include "parser.cxx"
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
--
1.7.5.4
--------------050001050504030500050604--
More information about the LibreOffice
mailing list