config_host.mk.in                |    1 
 configure.in                     |    1 
 idlc/CustomTarget_scanner.mk     |   39 --
 idlc/Executable_idlc.mk          |    5 
 idlc/Module_idlc.mk              |    1 
 idlc/source/scanner.l            |  536 +++++++++++++++++++++++++++++++++++++++
 idlc/source/scanner.ll           |  536 ---------------------------------------
 idlc/source/wrap_parser.cxx      |   32 --
 idlc/source/wrap_scanner.cxx     |   38 --
 solenv/gbuild/Executable.mk      |    2 
 solenv/gbuild/Library.mk         |    2 
 solenv/gbuild/LinkTarget.mk      |   49 +++
 solenv/gbuild/TargetLocations.mk |    5 
 13 files changed, 599 insertions(+), 648 deletions(-)

New commits:
commit 1bec43481eb6cbe58b22b8c2ce3688e858f5f92f
Author: David Ostrovsky <[email protected]>
Date:   Tue May 1 00:04:38 2012 +0200

    build: cleaning up previously converted idlc module
    
    Change-Id: Ic90495f677dc42c0430492548deaa9f9b10e4d44

diff --git a/idlc/CustomTarget_scanner.mk b/idlc/CustomTarget_scanner.mk
deleted file mode 100644
index e7e3c2f..0000000
--- a/idlc/CustomTarget_scanner.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- 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 <[email protected]> (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))
-
-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
index 4319857..32ecda6 100644
--- a/idlc/Executable_idlc.mk
+++ b/idlc/Executable_idlc.mk
@@ -42,10 +42,11 @@ $(eval $(call gb_Executable_add_grammars,idlc,\
     idlc/source/parser \
 ))
 
-$(eval $(call gb_Executable_use_custom_headers,idlc,idlc/scanner))
+$(eval $(call gb_Executable_add_scanners,idlc,\
+    idlc/source/scanner \
+))
 
 $(eval $(call gb_Executable_add_exception_objects,idlc,\
-    idlc/source/wrap_scanner \
     idlc/source/idlcmain \
     idlc/source/idlc \
     idlc/source/idlccompile \
diff --git a/idlc/Module_idlc.mk b/idlc/Module_idlc.mk
index 3c96310..e1db3db 100644
--- a/idlc/Module_idlc.mk
+++ b/idlc/Module_idlc.mk
@@ -27,7 +27,6 @@
 $(eval $(call gb_Module_Module,idlc))
 
 $(eval $(call gb_Module_add_targets,idlc,\
-    CustomTarget_scanner \
     Executable_idlc \
     Executable_idlcpp \
 ))
diff --git a/idlc/source/scanner.l b/idlc/source/scanner.l
new file mode 100644
index 0000000..8d95322
--- /dev/null
+++ b/idlc/source/scanner.l
@@ -0,0 +1,536 @@
+/*************************************************************************
+ *
+ * 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.
+ *
+ ************************************************************************/
+
+%option yylineno
+
+%{
+/*
+ * scanner.ll - Lexical scanner for IDLC 1.0
+ */
+
+#include <ctype.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef _IDLC_IDLC_HXX_
+#include <idlc/idlc.hxx>
+#endif
+#ifndef _IDLC_ERRORHANDLER_HXX_
+#include <idlc/errorhandler.hxx>
+#endif
+#ifndef _IDLC_FEHELPER_HXX_
+#include <idlc/fehelper.hxx>
+#endif
+
+#include "attributeexceptions.hxx"
+
+
+class AstExpression;
+class AstArray;
+class AstMember;
+
+#include <parser.hxx>
+
+/* handle locations */
+int yycolumn = 1;
+
+#define YY_USER_ACTION idlc()->setOffset(yycolumn, yycolumn+yyleng-1); \
+    yycolumn += yyleng;
+
+sal_Int32              beginLine = 0;
+::rtl::OString docu;
+
+static int asciiToInteger(char const * s, sal_Int64  * sval, sal_uInt64 * 
uval) {
+    bool neg = false;
+    if (*s == '-') {
+        neg = true;
+        ++s;
+    }
+    unsigned int base = 10;
+    if (*s == '0') {
+        base = 8;
+        ++s;
+        if (*s == 'X' || *s == 'x') {
+            base = 16;
+            ++s;
+        }
+    }
+    sal_uInt64 val = 0;
+    for (; *s != 0; ++s) {
+        unsigned int n;
+        if (*s >= '0' && *s <= '9') {
+            n = *s - '0';
+        } else {
+            switch (*s) {
+            case 'A':
+            case 'a':
+                n = 10;
+                break;
+            case 'B':
+            case 'b':
+                n = 11;
+                break;
+            case 'C':
+            case 'c':
+                n = 12;
+                break;
+            case 'D':
+            case 'd':
+                n = 13;
+                break;
+            case 'E':
+            case 'e':
+                n = 14;
+                break;
+            case 'F':
+            case 'f':
+                n = 15;
+                break;
+            default:
+                goto done;
+            }
+        }
+        // The following guarantees the invariant val <= SAL_MAX_UINT64 
(because
+        // base and n are sufficiently small), *if*
+        // std::numeric_limits<sal_uInt64>::max() == SAL_MAX_UINT64:
+        sal_uInt64 nval = val * base + n;
+        if (nval < val) {
+            idlc()->error()->syntaxError(
+                PS_NoState, idlc()->getLineNumber(),
+                "integral constant too large");
+            val = 0;
+            break;
+        }
+        val = nval;
+    }
+ done:
+    if (neg) {
+        if (val < SAL_CONST_UINT64(0x8000000000000000)) {
+            *sval = -static_cast< sal_Int64 >(val);
+        } else if (val == SAL_CONST_UINT64(0x8000000000000000)) {
+            *sval = SAL_MIN_INT64;
+        } else {
+            idlc()->error()->syntaxError(
+                PS_NoState, idlc()->getLineNumber(),
+                "negative integral constant too large");
+            *sval = 0;
+        }
+        return IDL_INTEGER_LITERAL;
+    } else if (val <= static_cast< sal_uInt64 >(SAL_MAX_INT64)) {
+        *sval = static_cast< sal_Int64 >(val);
+        return IDL_INTEGER_LITERAL;
+    } else {
+        *uval = val;
+        return IDL_INTEGER_ULITERAL;
+    }
+}
+
+static double asciiToFloat(const sal_Char *s)
+{
+       double          d = 0.0;
+       double          e, k;
+       sal_Int32       neg = 0, negexp = 0;
+
+       if (*s == '-')
+       {
+       neg = 1;
+               s++;
+       }
+       while (*s >= '0' && *s <= '9')
+       {
+       d = (d * 10) + *s - '0';
+               s++;
+       }
+       if (*s == '.')
+       {
+       s++;
+               e = 10;
+               while (*s >= '0' && *s <= '9')
+               {
+               d += (*s - '0') / (e * 1.0);
+               e *= 10;
+               s++;
+               }
+       }
+       if (*s == 'e' || *s == 'E')
+       {
+       s++;
+               if (*s == '-')
+        {
+               negexp = 1;
+               s++;
+               } else
+               {
+               if (*s == '+')
+               s++;
+               e = 0;
+               while (*s >= '0' && *s <= '9')
+               {
+               e = (e * 10) + *s - '0';
+               s++;
+               }
+               if (e > 0)
+               {
+                for (k = 1; e > 0; k *= 10, e--)
+                    ;
+                       if (negexp)
+                       d /= k;
+                       else
+                       d *= k;
+               }
+               }
+       }
+       if (neg) d *= -1.0;
+       return d;
+}
+
+static void    idlParsePragma(sal_Char* pPragma)
+{
+       ::rtl::OString pragma(pPragma);
+       sal_Int32 index = pragma.indexOf("include");
+       sal_Char* begin = pPragma + index + 8;
+       sal_Char* offset = begin;
+       while (*offset != ',') offset++;
+       //::rtl::OString include = pragma.copy(index + 8, offset - begin);
+       //unused// idlc()->insertInclude(pragma.copy(index + 8, 
(sal_Int32)(offset - begin)));
+}      
+
+static void parseLineAndFile(sal_Char* pBuf)
+{
+       sal_Char        *r = pBuf;
+       sal_Char    *h;
+       sal_Bool        bIsInMain = sal_False;
+
+       /* Skip initial '#' */
+       if (*r != '#')
+               return;
+
+       /* Find line number */
+       for (r++; *r == ' ' || *r == '\t' || isalpha(*r); r++) ;
+       h = r;
+       for (; *r != '\0' && *r != ' ' && *r != '\t'; r++) ;
+       *r++ = 0;
+       idlc()->setLineNumber((sal_uInt32)atol(h));
+    yylineno = atol(h);
+
+       /* Find file name, if present */
+       for (; *r != '"'; r++)
+       {
+               if (*r == '\n' || *r == '\0')
+                       return;
+       }
+       h = ++r;
+       for (; *r != '"'; r++) ;
+       *r = 0;
+       if (*h == '\0')
+               idlc()->setFileName(::rtl::OString("standard input"));
+       else
+               idlc()->setFileName(::rtl::OString(h));
+
+       bIsInMain = (idlc()->getFileName() == idlc()->getRealFileName()) ? 
sal_True : sal_False;
+       idlc()->setInMainfile(bIsInMain);               
+}      
+
+// Suppress any warnings from generated code:
+#if defined __GNUC__
+#pragma GCC diagnostic ignored "-Wunused-function"
+#elif defined __SUNPRO_CC
+#pragma disable_warn
+#elif defined _MSC_VER
+#pragma warning(push, 1)
+/**/
+#ifdef yywrap
+#undef  yywrap
+#define yywrap() 1
+#endif
+/**/
+#endif
+%}
+
+%option noyywrap
+%option never-interactive
+
+%x DOCU
+%x COMMENT
+
+DIGIT           [0-9]
+OCT_DIGIT       [0-7]
+HEX_DIGIT       [a-fA-F0-9]
+CAPITAL         [A-Z]
+ALPHA           [a-zA-Z]
+INT_LITERAL     [1-9][0-9]*
+OCT_LITERAL     0{OCT_DIGIT}*
+HEX_LITERAL     (0x|0X){HEX_DIGIT}*
+
+IDENTIFIER_NEW  
({ALPHA}({ALPHA}|{DIGIT})*)|({CAPITAL}("_"?({ALPHA}|{DIGIT})+)*)
+IDENTIFIER      ("_"?({ALPHA}|{DIGIT})+)*
+
+%%
+
+[ \t\r]+       ; /* eat up whitespace */
+[\n]           {
+       idlc()->incLineNumber();
+       yycolumn = 1;
+       yylineno++;
+}
+
+attribute       return IDL_ATTRIBUTE;
+bound           return IDL_BOUND;
+case            return IDL_CASE;
+const           return IDL_CONST;
+constants       return IDL_CONSTANTS;
+constrained     return IDL_CONSTRAINED;
+default         return IDL_DEFAULT;
+enum            return IDL_ENUM;
+exception       return IDL_EXCEPTION;
+interface       return IDL_INTERFACE;
+maybeambiguous  return IDL_MAYBEAMBIGUOUS;
+maybedefault    return IDL_MAYBEDEFAULT;
+maybevoid       return IDL_MAYBEVOID;
+module          return IDL_MODULE;
+needs           return IDL_NEEDS;
+observes        return IDL_OBSERVES;
+optional        return IDL_OPTIONAL;
+property        return IDL_PROPERTY;
+raises          return IDL_RAISES;
+readonly        return IDL_READONLY;
+removable       return IDL_REMOVEABLE;
+service         return IDL_SERVICE;
+sequence        return IDL_SEQUENCE;
+singleton       return IDL_SINGLETON;
+struct          return IDL_STRUCT;
+switch          return IDL_SWITCH;
+transient       return IDL_TRANSIENT;
+typedef         return IDL_TYPEDEF;
+union           return IDL_UNION;
+
+any             return IDL_ANY;                                
+boolean         return IDL_BOOLEAN;
+byte            return IDL_BYTE;
+char            return IDL_CHAR;
+double          return IDL_DOUBLE;
+float           return IDL_FLOAT;
+hyper           return IDL_HYPER;
+long            return IDL_LONG;
+short           return IDL_SHORT;
+string          return IDL_STRING;
+type            return IDL_TYPE;
+unsigned        return IDL_UNSIGNED;
+void            return IDL_VOID;
+
+TRUE            return IDL_TRUE;
+True            return IDL_TRUE;
+FALSE           return IDL_FALSE;
+False           return IDL_FALSE;
+
+in              return IDL_IN;
+out             return IDL_OUT;
+inout           return IDL_INOUT;
+oneway          return IDL_ONEWAY;
+
+get             return IDL_GET;
+set             return IDL_SET;
+
+published       return IDL_PUBLISHED;
+
+"..."           return IDL_ELLIPSIS;
+
+("-")?{INT_LITERAL}+(l|L|u|U)?    {
+                return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
+            }
+
+("-")?{OCT_LITERAL}+(l|L|u|U)?    {
+                return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
+            }
+
+("-")?{HEX_LITERAL}+(l|L|u|U)?    {
+                return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
+            }
+
+("-")?{DIGIT}+(e|E){1}(("+"|"-")?{DIGIT}+)+(f|F)?      |
+("-")?"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)?      |
+("-")?{DIGIT}*"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)?        {
+                yylval.dval = asciiToFloat( yytext );
+                               return IDL_FLOATING_PT_LITERAL;
+            }
+
+{IDENTIFIER}   {
+                               yylval.sval = new ::rtl::OString(yytext);
+                               return IDL_IDENTIFIER;
+                       }
+
+\<\<   {
+               yylval.strval = yytext;
+               return IDL_LEFTSHIFT;
+       }
+\>\>   {
+               yylval.strval = yytext;
+               return IDL_RIGHTSHIFT;
+       }
+\:\:   {
+               yylval.strval = yytext;
+               return IDL_SCOPESEPARATOR;
+       }
+
+"/*"   { 
+                       BEGIN( COMMENT );
+                       docu = ::rtl::OString();
+                       beginLine = idlc()->getLineNumber();
+               }
+
+"/***" { 
+                       BEGIN( COMMENT );
+                       docu = ::rtl::OString();
+                       beginLine = idlc()->getLineNumber();
+               }
+
+<COMMENT>[^*]+ {
+                               docu += ::rtl::OString(yytext);
+                       } 
+
+<COMMENT>"*"[^*/]+     {
+                               docu += ::rtl::OString(yytext);
+                       }
+
+<COMMENT>"**"  {
+                               docu += ::rtl::OString(yytext);
+                       }
+
+<COMMENT>[*]+"/"  {
+                               docu = docu.trim();
+                sal_Int32 nIndex = 0;
+                int count = 0;
+                do { docu.getToken( 0, '\n', nIndex ); count++; } while( 
nIndex != -1 );
+                               idlc()->setLineNumber( beginLine + count - 1);
+                               BEGIN( INITIAL );
+                       }
+
+"/**"  {
+                       BEGIN( DOCU );
+                       docu = ::rtl::OString();
+                       beginLine = idlc()->getLineNumber();
+               }
+
+<DOCU>[^*\n]+  {
+                               docu += ::rtl::OString(yytext);
+                       }
+
+<DOCU>"\n"[ \t]*"*"{1}         {
+                               idlc()->setLineNumber( idlc()->getLineNumber()  
+ 1);
+                               docu += ::rtl::OString("\n");
+                       }
+
+<DOCU>"\n"     {
+                               idlc()->setLineNumber( idlc()->getLineNumber()  
+ 1);
+                               docu += ::rtl::OString(yytext);
+                       }
+
+<DOCU>"*"[^*^/\n]*     {
+                               docu += ::rtl::OString(yytext);
+                       }
+
+<DOCU>"\n"[ \t]*"*/"   {
+                               docu = docu.trim();
+                               sal_Int32 nIndex = 0;
+                               int count = 0;
+                               do { docu.getToken( 0, '\n', nIndex ); count++; 
} while( nIndex != -1 );
+                               idlc()->setLineNumber( beginLine + count - 1);  
              
+                               if ( (nIndex = docu.indexOf("/*")) >= 0 || 
(nIndex = docu.indexOf("///")) >= 0 )
+                               {
+                    if ( 0 != nIndex &&
+                         (docu.getStr()[nIndex - 1] != '"' && 
docu.getStr()[nIndex - 1] != ':') )
+                        idlc()->error()->syntaxError(PS_NoState, 
idlc()->getLineNumber(),
+                                                     "nested documentation 
strings are not allowed!");
+                               }
+                               idlc()->setDocumentation(docu);
+                               BEGIN( INITIAL );
+                       }
+
+<DOCU>"*/"     {
+                               docu = docu.trim();
+                               sal_Int32 nIndex = 0;
+                               int count = 0;
+                               do { docu.getToken( 0, '\n', nIndex ); count++; 
} while( nIndex != -1 );
+                               idlc()->setLineNumber( beginLine + count - 1);
+                               if ( docu.indexOf("/*") >= 0 || 
docu.indexOf("//") >= 0 )
+                               {
+                    if ( 0 != nIndex &&
+                         (docu.getStr()[nIndex - 1] != '"' && 
docu.getStr()[nIndex - 1] != ':') )
+                        idlc()->error()->syntaxError(PS_NoState, 
idlc()->getLineNumber(),
+                                                     "nested documentation 
strings are not allowed!");
+                               }
+                               idlc()->setDocumentation(docu);
+                               BEGIN( INITIAL );
+                       }
+
+"//"[^/]{1}.*"\n" {
+                               /* only a comment */
+                               ::rtl::OString docStr(yytext);
+                               docStr = docStr.copy( 0, 
docStr.lastIndexOf('\n') );
+                               docStr = docStr.copy( docStr.lastIndexOf('/')+1 
);
+                               docStr = docStr.trim();
+                               idlc()->incLineNumber();
+                       }
+
+"///".*"\n"  {
+                               ::rtl::OString docStr(yytext);
+                               docStr = docStr.copy( 0, 
docStr.lastIndexOf('\n') );
+                               docStr = docStr.copy( docStr.lastIndexOf('/')+1 
);
+                               docStr = docStr.trim();
+                               idlc()->incLineNumber();
+                               idlc()->setDocumentation(docStr);
+                       }
+
+.      return yytext[0];
+
+^#[ \t]*line[ \t]*[0-9]*" ""\""[^\"]*"\""\n    {
+       parseLineAndFile(yytext);
+}
+
+^#[ \t]*[0-9]*" ""\""[^\"]*"\""" "[0-9]*\n {
+       parseLineAndFile(yytext);
+}
+
+^#[ \t]*[0-9]*" ""\""[^\"]*"\""\n {
+       parseLineAndFile(yytext);
+}
+
+^#[ \t]*[0-9]*\n {
+       parseLineAndFile(yytext);
+}
+
+^#[ \t]*ident.*\n {
+       /* ignore cpp ident */
+       idlc()->incLineNumber();
+}
+
+^#[ \t]*pragma[ \t].*\n        {       /* remember pragma */
+       idlParsePragma(yytext);
+       idlc()->incLineNumber();
+}
+
+%%
diff --git a/idlc/source/scanner.ll b/idlc/source/scanner.ll
deleted file mode 100644
index 62ce288..0000000
--- a/idlc/source/scanner.ll
+++ /dev/null
@@ -1,536 +0,0 @@
-/*************************************************************************
- *
- * 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.
- *
- ************************************************************************/
-
-%option yylineno
-
-%{
-/*
- * scanner.ll - Lexical scanner for IDLC 1.0
- */
-
-#include <ctype.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifndef _IDLC_IDLC_HXX_
-#include <idlc/idlc.hxx>
-#endif
-#ifndef _IDLC_ERRORHANDLER_HXX_
-#include <idlc/errorhandler.hxx>
-#endif
-#ifndef _IDLC_FEHELPER_HXX_
-#include <idlc/fehelper.hxx>
-#endif
-
-#include "attributeexceptions.hxx"
-
-
-class AstExpression;
-class AstArray;
-class AstMember;
-
-#include <parser.hxx>
-
-/* handle locations */
-int yycolumn = 1;
-
-#define YY_USER_ACTION idlc()->setOffset(yycolumn, yycolumn+yyleng-1); \
-    yycolumn += yyleng;
-
-sal_Int32              beginLine = 0;
-::rtl::OString docu;
-
-static int asciiToInteger(char const * s, sal_Int64  * sval, sal_uInt64 * 
uval) {
-    bool neg = false;
-    if (*s == '-') {
-        neg = true;
-        ++s;
-    }
-    unsigned int base = 10;
-    if (*s == '0') {
-        base = 8;
-        ++s;
-        if (*s == 'X' || *s == 'x') {
-            base = 16;
-            ++s;
-        }
-    }
-    sal_uInt64 val = 0;
-    for (; *s != 0; ++s) {
-        unsigned int n;
-        if (*s >= '0' && *s <= '9') {
-            n = *s - '0';
-        } else {
-            switch (*s) {
-            case 'A':
-            case 'a':
-                n = 10;
-                break;
-            case 'B':
-            case 'b':
-                n = 11;
-                break;
-            case 'C':
-            case 'c':
-                n = 12;
-                break;
-            case 'D':
-            case 'd':
-                n = 13;
-                break;
-            case 'E':
-            case 'e':
-                n = 14;
-                break;
-            case 'F':
-            case 'f':
-                n = 15;
-                break;
-            default:
-                goto done;
-            }
-        }
-        // The following guarantees the invariant val <= SAL_MAX_UINT64 
(because
-        // base and n are sufficiently small), *if*
-        // std::numeric_limits<sal_uInt64>::max() == SAL_MAX_UINT64:
-        sal_uInt64 nval = val * base + n;
-        if (nval < val) {
-            idlc()->error()->syntaxError(
-                PS_NoState, idlc()->getLineNumber(),
-                "integral constant too large");
-            val = 0;
-            break;
-        }
-        val = nval;
-    }
- done:
-    if (neg) {
-        if (val < SAL_CONST_UINT64(0x8000000000000000)) {
-            *sval = -static_cast< sal_Int64 >(val);
-        } else if (val == SAL_CONST_UINT64(0x8000000000000000)) {
-            *sval = SAL_MIN_INT64;
-        } else {
-            idlc()->error()->syntaxError(
-                PS_NoState, idlc()->getLineNumber(),
-                "negative integral constant too large");
-            *sval = 0;
-        }
-        return IDL_INTEGER_LITERAL;
-    } else if (val <= static_cast< sal_uInt64 >(SAL_MAX_INT64)) {
-        *sval = static_cast< sal_Int64 >(val);
-        return IDL_INTEGER_LITERAL;
-    } else {
-        *uval = val;
-        return IDL_INTEGER_ULITERAL;
-    }
-}
-
-static double asciiToFloat(const sal_Char *s)
-{
-       double          d = 0.0;
-       double          e, k;
-       sal_Int32       neg = 0, negexp = 0;
-
-       if (*s == '-')
-       {
-       neg = 1;
-               s++;
-       }
-       while (*s >= '0' && *s <= '9')
-       {
-       d = (d * 10) + *s - '0';
-               s++;
-       }
-       if (*s == '.')
-       {
-       s++;
-               e = 10;
-               while (*s >= '0' && *s <= '9')
-               {
-               d += (*s - '0') / (e * 1.0);
-               e *= 10;
-               s++;
-               }
-       }
-       if (*s == 'e' || *s == 'E')
-       {
-       s++;
-               if (*s == '-')
-        {
-               negexp = 1;
-               s++;
-               } else
-               {
-               if (*s == '+')
-               s++;
-               e = 0;
-               while (*s >= '0' && *s <= '9')
-               {
-               e = (e * 10) + *s - '0';
-               s++;
-               }
-               if (e > 0)
-               {
-                for (k = 1; e > 0; k *= 10, e--)
-                    ;
-                       if (negexp)
-                       d /= k;
-                       else
-                       d *= k;
-               }
-               }
-       }
-       if (neg) d *= -1.0;
-       return d;
-}
-
-static void    idlParsePragma(sal_Char* pPragma)
-{
-       ::rtl::OString pragma(pPragma);
-       sal_Int32 index = pragma.indexOf("include");
-       sal_Char* begin = pPragma + index + 8;
-       sal_Char* offset = begin;
-       while (*offset != ',') offset++;
-       //::rtl::OString include = pragma.copy(index + 8, offset - begin);
-       //unused// idlc()->insertInclude(pragma.copy(index + 8, 
(sal_Int32)(offset - begin)));
-}      
-
-static void parseLineAndFile(sal_Char* pBuf)
-{
-       sal_Char        *r = pBuf;
-       sal_Char    *h;
-       sal_Bool        bIsInMain = sal_False;
-
-       /* Skip initial '#' */
-       if (*r != '#')
-               return;
-
-       /* Find line number */
-       for (r++; *r == ' ' || *r == '\t' || isalpha(*r); r++) ;
-       h = r;
-       for (; *r != '\0' && *r != ' ' && *r != '\t'; r++) ;
-       *r++ = 0;
-       idlc()->setLineNumber((sal_uInt32)atol(h));
-    yylineno = atol(h);
-
-       /* Find file name, if present */
-       for (; *r != '"'; r++)
-       {
-               if (*r == '\n' || *r == '\0')
-                       return;
-       }
-       h = ++r;
-       for (; *r != '"'; r++) ;
-       *r = 0;
-       if (*h == '\0')
-               idlc()->setFileName(::rtl::OString("standard input"));
-       else
-               idlc()->setFileName(::rtl::OString(h));
-
-       bIsInMain = (idlc()->getFileName() == idlc()->getRealFileName()) ? 
sal_True : sal_False;
-       idlc()->setInMainfile(bIsInMain);               
-}      
-
-// Suppress any warnings from generated code:
-#if defined __GNUC__
-#pragma GCC system_header
-#elif defined __SUNPRO_CC
-#pragma disable_warn
-#elif defined _MSC_VER
-#pragma warning(push, 1)
-/**/
-#ifdef yywrap
-#undef  yywrap
-#define yywrap() 1
-#endif
-/**/
-#endif
-%}
-
-%option noyywrap
-%option never-interactive
-
-%x DOCU
-%x COMMENT
-
-DIGIT           [0-9]
-OCT_DIGIT       [0-7]
-HEX_DIGIT       [a-fA-F0-9]
-CAPITAL         [A-Z]
-ALPHA           [a-zA-Z]
-INT_LITERAL     [1-9][0-9]*
-OCT_LITERAL     0{OCT_DIGIT}*
-HEX_LITERAL     (0x|0X){HEX_DIGIT}*
-
-IDENTIFIER_NEW  
({ALPHA}({ALPHA}|{DIGIT})*)|({CAPITAL}("_"?({ALPHA}|{DIGIT})+)*)
-IDENTIFIER      ("_"?({ALPHA}|{DIGIT})+)*
-
-%%
-
-[ \t\r]+       ; /* eat up whitespace */
-[\n]           {
-       idlc()->incLineNumber();
-       yycolumn = 1;
-       yylineno++;
-}
-
-attribute       return IDL_ATTRIBUTE;
-bound           return IDL_BOUND;
-case            return IDL_CASE;
-const           return IDL_CONST;
-constants       return IDL_CONSTANTS;
-constrained     return IDL_CONSTRAINED;
-default         return IDL_DEFAULT;
-enum            return IDL_ENUM;
-exception       return IDL_EXCEPTION;
-interface       return IDL_INTERFACE;
-maybeambiguous  return IDL_MAYBEAMBIGUOUS;
-maybedefault    return IDL_MAYBEDEFAULT;
-maybevoid       return IDL_MAYBEVOID;
-module          return IDL_MODULE;
-needs           return IDL_NEEDS;
-observes        return IDL_OBSERVES;
-optional        return IDL_OPTIONAL;
-property        return IDL_PROPERTY;
-raises          return IDL_RAISES;
-readonly        return IDL_READONLY;
-removable       return IDL_REMOVEABLE;
-service         return IDL_SERVICE;
-sequence        return IDL_SEQUENCE;
-singleton       return IDL_SINGLETON;
-struct          return IDL_STRUCT;
-switch          return IDL_SWITCH;
-transient       return IDL_TRANSIENT;
-typedef         return IDL_TYPEDEF;
-union           return IDL_UNION;
-
-any             return IDL_ANY;                                
-boolean         return IDL_BOOLEAN;
-byte            return IDL_BYTE;
-char            return IDL_CHAR;
-double          return IDL_DOUBLE;
-float           return IDL_FLOAT;
-hyper           return IDL_HYPER;
-long            return IDL_LONG;
-short           return IDL_SHORT;
-string          return IDL_STRING;
-type            return IDL_TYPE;
-unsigned        return IDL_UNSIGNED;
-void            return IDL_VOID;
-
-TRUE            return IDL_TRUE;
-True            return IDL_TRUE;
-FALSE           return IDL_FALSE;
-False           return IDL_FALSE;
-
-in              return IDL_IN;
-out             return IDL_OUT;
-inout           return IDL_INOUT;
-oneway          return IDL_ONEWAY;
-
-get             return IDL_GET;
-set             return IDL_SET;
-
-published       return IDL_PUBLISHED;
-
-"..."           return IDL_ELLIPSIS;
-
-("-")?{INT_LITERAL}+(l|L|u|U)?    {
-                return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
-            }
-
-("-")?{OCT_LITERAL}+(l|L|u|U)?    {
-                return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
-            }
-
-("-")?{HEX_LITERAL}+(l|L|u|U)?    {
-                return asciiToInteger(yytext, &yylval.ival, &yylval.uval);
-            }
-
-("-")?{DIGIT}+(e|E){1}(("+"|"-")?{DIGIT}+)+(f|F)?      |
-("-")?"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)?      |
-("-")?{DIGIT}*"."{DIGIT}+((e|E)("+"|"-")?{DIGIT}+)?(f|F)?        {
-                yylval.dval = asciiToFloat( yytext );
-                               return IDL_FLOATING_PT_LITERAL;
-            }
-
-{IDENTIFIER}   {
-                               yylval.sval = new ::rtl::OString(yytext);
-                               return IDL_IDENTIFIER;
-                       }
-
-\<\<   {
-               yylval.strval = yytext;
-               return IDL_LEFTSHIFT;
-       }
-\>\>   {
-               yylval.strval = yytext;
-               return IDL_RIGHTSHIFT;
-       }
-\:\:   {
-               yylval.strval = yytext;
-               return IDL_SCOPESEPARATOR;
-       }
-
-"/*"   { 
-                       BEGIN( COMMENT );
-                       docu = ::rtl::OString();
-                       beginLine = idlc()->getLineNumber();
-               }
-
-"/***" { 
-                       BEGIN( COMMENT );
-                       docu = ::rtl::OString();
-                       beginLine = idlc()->getLineNumber();
-               }
-
-<COMMENT>[^*]+ {
-                               docu += ::rtl::OString(yytext);
-                       } 
-
-<COMMENT>"*"[^*/]+     {
-                               docu += ::rtl::OString(yytext);
-                       }
-
-<COMMENT>"**"  {
-                               docu += ::rtl::OString(yytext);
-                       }
-
-<COMMENT>[*]+"/"  {
-                               docu = docu.trim();
-                sal_Int32 nIndex = 0;
-                int count = 0;
-                do { docu.getToken( 0, '\n', nIndex ); count++; } while( 
nIndex != -1 );
-                               idlc()->setLineNumber( beginLine + count - 1);
-                               BEGIN( INITIAL );
-                       }
-
-"/**"  {
-                       BEGIN( DOCU );
-                       docu = ::rtl::OString();
-                       beginLine = idlc()->getLineNumber();
-               }
-
-<DOCU>[^*\n]+  {
-                               docu += ::rtl::OString(yytext);
-                       }
-
-<DOCU>"\n"[ \t]*"*"{1}         {
-                               idlc()->setLineNumber( idlc()->getLineNumber()  
+ 1);
-                               docu += ::rtl::OString("\n");
-                       }
-
-<DOCU>"\n"     {
-                               idlc()->setLineNumber( idlc()->getLineNumber()  
+ 1);
-                               docu += ::rtl::OString(yytext);
-                       }
-
-<DOCU>"*"[^*^/\n]*     {
-                               docu += ::rtl::OString(yytext);
-                       }
-
-<DOCU>"\n"[ \t]*"*/"   {
-                               docu = docu.trim();
-                               sal_Int32 nIndex = 0;
-                               int count = 0;
-                               do { docu.getToken( 0, '\n', nIndex ); count++; 
} while( nIndex != -1 );
-                               idlc()->setLineNumber( beginLine + count - 1);  
              
-                               if ( (nIndex = docu.indexOf("/*")) >= 0 || 
(nIndex = docu.indexOf("///")) >= 0 )
-                               {
-                    if ( 0 != nIndex &&
-                         (docu.getStr()[nIndex - 1] != '"' && 
docu.getStr()[nIndex - 1] != ':') )
-                        idlc()->error()->syntaxError(PS_NoState, 
idlc()->getLineNumber(),
-                                                     "nested documentation 
strings are not allowed!");
-                               }
-                               idlc()->setDocumentation(docu);
-                               BEGIN( INITIAL );
-                       }
-
-<DOCU>"*/"     {
-                               docu = docu.trim();
-                               sal_Int32 nIndex = 0;
-                               int count = 0;
-                               do { docu.getToken( 0, '\n', nIndex ); count++; 
} while( nIndex != -1 );
-                               idlc()->setLineNumber( beginLine + count - 1);
-                               if ( docu.indexOf("/*") >= 0 || 
docu.indexOf("//") >= 0 )
-                               {
-                    if ( 0 != nIndex &&
-                         (docu.getStr()[nIndex - 1] != '"' && 
docu.getStr()[nIndex - 1] != ':') )
-                        idlc()->error()->syntaxError(PS_NoState, 
idlc()->getLineNumber(),
-                                                     "nested documentation 
strings are not allowed!");
-                               }
-                               idlc()->setDocumentation(docu);
-                               BEGIN( INITIAL );
-                       }
-
-"//"[^/]{1}.*"\n" {
-                               /* only a comment */
-                               ::rtl::OString docStr(yytext);
-                               docStr = docStr.copy( 0, 
docStr.lastIndexOf('\n') );
-                               docStr = docStr.copy( docStr.lastIndexOf('/')+1 
);
-                               docStr = docStr.trim();
-                               idlc()->incLineNumber();
-                       }
-
-"///".*"\n"  {
-                               ::rtl::OString docStr(yytext);
-                               docStr = docStr.copy( 0, 
docStr.lastIndexOf('\n') );
-                               docStr = docStr.copy( docStr.lastIndexOf('/')+1 
);
-                               docStr = docStr.trim();
-                               idlc()->incLineNumber();
-                               idlc()->setDocumentation(docStr);
-                       }
-
-.      return yytext[0];
-
-^#[ \t]*line[ \t]*[0-9]*" ""\""[^\"]*"\""\n    {
-       parseLineAndFile(yytext);
-}
-
-^#[ \t]*[0-9]*" ""\""[^\"]*"\""" "[0-9]*\n {
-       parseLineAndFile(yytext);
-}
-
-^#[ \t]*[0-9]*" ""\""[^\"]*"\""\n {
-       parseLineAndFile(yytext);
-}
-
-^#[ \t]*[0-9]*\n {
-       parseLineAndFile(yytext);
-}
-
-^#[ \t]*ident.*\n {
-       /* ignore cpp ident */
-       idlc()->incLineNumber();
-}
-
-^#[ \t]*pragma[ \t].*\n        {       /* remember pragma */
-       idlParsePragma(yytext);
-       idlc()->incLineNumber();
-}
-
-%%
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: */
diff --git a/idlc/source/wrap_scanner.cxx b/idlc/source/wrap_scanner.cxx
deleted file mode 100644
index 94a068a..0000000
--- a/idlc/source/wrap_scanner.cxx
+++ /dev/null
@@ -1,38 +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.
- *
- ************************************************************************/
-
-#ifdef __clang__
-#pragma clang diagnostic ignored "-Wsign-compare"
-#endif
-
-#include "scanner.cxx"
-
-void (*avoid_unused_yyunput_in_scanner_cxx)(int, char*) = yyunput;
-int (*avoid_unused_yyinput_in_scanner_cxx)() = yyinput;
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/solenv/gbuild/Executable.mk b/solenv/gbuild/Executable.mk
index 8d565b6..2cb23fc 100644
--- a/solenv/gbuild/Executable.mk
+++ b/solenv/gbuild/Executable.mk
@@ -85,6 +85,8 @@ $(eval $(foreach method,\
        add_objcxxobjects \
        add_grammar \
        add_grammars \
+       add_scanner \
+       add_scanners \
        add_exception_objects \
        add_noexception_objects \
        add_generated_cobjects \
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk
index 4ba764e..2c74d6e 100644
--- a/solenv/gbuild/Library.mk
+++ b/solenv/gbuild/Library.mk
@@ -167,6 +167,8 @@ $(eval $(foreach method,\
        use_library_objects \
        add_grammar \
        add_grammars \
+       add_scanner \
+       add_scanners \
        add_cflags \
        set_cflags \
        add_cxxflags \
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index aa279bf..4b48f67 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -28,6 +28,7 @@
 
 #the following user-defined variables are supported:
 # YACCFLAGS
+# LEXFLAGS
 # CPPFLAGS
 # CFLAGS
 # CXXFLAGS
@@ -243,6 +244,34 @@ endef
 gb_YACC := bison
 
 
+# LexTarget class
+
+gb_LexTarget_get_source = $(1)/$(2).l
+
+.PHONY : $(call gb_LexTarget_get_clean_target,%)
+$(call gb_LexTarget_get_clean_target,%) :
+       $(call gb_Output_announce,$*,$(false),LEX,3)
+       $(call gb_Helper_abbreviate_dirs,\
+           rm -f $(call gb_LexTarget_get_scanner_target,$*) $(call 
gb_LexTarget_get_target,$*))
+
+$(call gb_LexTarget_get_target,%) : $(call gb_LexTarget_get_source,$(SRCDIR),%)
+       $(call gb_LexTarget__command,$<,$*,$@,$(call 
gb_LexTarget_get_scanner_target,$*))
+
+# gb_LexTarget_LexTarget(scanner-file)
+define gb_LexTarget_LexTarget
+$(call gb_LexTarget_get_scanner_target,$(1)) :| $(call 
gb_LexTarget_get_target,$(1))
+
+endef
+
+#  gb_LexTarget__command(scanner-file, stem-for-message, done-pseudo-target, 
source-target)
+define gb_LexTarget__command
+$(call gb_Output_announce,$(2),$(true),LEX,3)
+$(call gb_Helper_abbreviate_dirs,\
+       mkdir -p $(dir $(3)) && \
+       $(FLEX) $(T_LEXFLAGS) -o $(4) $(1) && touch $(3) )
+endef
+
+
 # ObjCxxObject class
 #
 
@@ -453,6 +482,10 @@ $(call gb_LinkTarget_get_target,$(1)) : YACCOBJECT :=
 $(call gb_LinkTarget_get_clean_target,$(1)) \
 $(call gb_LinkTarget_get_target,$(1)) : T_YACCFLAGS := 
$$(gb_LinkTarget_YYACFLAGS) $(YACCFLAGS)
 $(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : LEXOBJECT :=
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : T_LEXFLAGS := 
$$(gb_LinkTarget_LEXFLAGS) $(LEXFLAGS)
+$(call gb_LinkTarget_get_clean_target,$(1)) \
 $(call gb_LinkTarget_get_target,$(1)) : OBJCOBJECTS :=
 $(call gb_LinkTarget_get_clean_target,$(1)) \
 $(call gb_LinkTarget_get_target,$(1)) : OBJCXXOBJECTS :=
@@ -873,6 +906,22 @@ define gb_LinkTarget_add_grammars
 $(foreach grammar,$(2),$(call gb_LinkTarget_add_grammar,$(1),$(grammar),$(4)))
 endef
 
+# Add a flex scanner to the build.
+# gb_LinkTarget_add_scanner(<component>,<scanner file>)
+define gb_LinkTarget_add_scanner
+$(call gb_LexTarget_LexTarget,$(2))
+$(call gb_LinkTarget_add_generated_exception_object,$(1),LexTarget/$(2),$(3))
+$(call gb_LinkTarget_get_clean_target,$(1)) : $(call 
gb_LexTarget_get_clean_target,$(2))
+
+endef
+
+# Add flex scanners to the build.
+# gb_LinkTarget_add_scanners(<component>,<scanner file> [<scanner file>*])
+define gb_LinkTarget_add_scanners
+$(foreach scanner,$(2),$(call gb_LinkTarget_add_scanner,$(1),$(scanner)))
+
+endef
+
 define gb_LinkTarget_add_noexception_object
 $(call gb_LinkTarget_add_cxxobject,$(1),$(2),$(gb_LinkTarget_NOEXCEPTIONFLAGS) 
$(call gb_LinkTarget__get_cxxflags,$(3)))
 endef
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index df694b7..70ec351 100644
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -141,6 +141,10 @@ gb_Configuration_get_target = 
$(WORKDIR)/Configuration/$(1).done
 gb_YaccTarget_get_grammar_target = $(WORKDIR)/YaccTarget/$(1).cxx
 gb_YaccTarget_get_header_target = $(WORKDIR)/YaccTarget/$(1).hxx
 gb_YaccTarget_get_target = $(WORKDIR)/YaccTarget/$(1).done
+
+gb_LexTarget_get_scanner_target = $(WORKDIR)/LexTarget/$(1).cxx
+gb_LexTarget_get_target = $(WORKDIR)/LexTarget/$(1).done
+
 gb_XcsTarget_get_target = $(WORKDIR)/XcsTarget/$(1)
 gb_XcuDataTarget_get_target = $(WORKDIR)/XcuDataTarget/$(1)
 gb_XcuLangpackTarget_get_target = $(WORKDIR)/XcuLangpackTarget/$(1)
@@ -194,6 +198,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
        UnoApiTarget \
        WinResTarget \
        YaccTarget \
+       LexTarget \
        Zip \
        XcsTarget \
        XcuDataTarget \
commit b9d0e597a7bc328ca99a1bf338a609cac23a4284
Author: David Tardon <[email protected]>
Date:   Tue May 1 07:16:16 2012 +0200

    export flex
    
    Change-Id: I7d5d8e380e12cc66255ddc3ac3f70bab7713f8b6

diff --git a/config_host.mk.in b/config_host.mk.in
index 5e02107..c7b2075 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -144,6 +144,7 @@ export EPM_FLAGS=@EPM_FLAGS@
 export EXTERNAL_WARNINGS_NOT_ERRORS=@EXTERNAL_WARNINGS_NOT_ERRORS@
 @x_Cygwin@ export FIND=@WIN_FIND@
 export FLAT_LOGO_SVG=@FLAT_LOGO_SVG@
+export FLEX=@FLEX@
 export FLUTE_JAR=@FLUTE_JAR@
 export FONTCONFIG_CFLAGS=@FONTCONFIG_CFLAGS@
 export FONTCONFIG_LIBS=@FONTCONFIG_LIBS@
diff --git a/configure.in b/configure.in
index f6466d8..1d67570 100644
--- a/configure.in
+++ b/configure.in
@@ -8371,6 +8371,7 @@ AC_PATH_PROG(FLEX, flex)
 if test -z "$FLEX"; then
     AC_MSG_ERROR([no flex found in \$PATH, install it])
 fi
+AC_SUBST([FLEX])
 dnl ***************************************
 dnl Checking for patch
 dnl ***************************************
_______________________________________________
Libreoffice-commits mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to