This is an automated email from the ASF dual-hosted git repository.

ardovm pushed a commit to branch scons-build
in repository https://gitbox.apache.org/repos/asf/openoffice.git


The following commit(s) were added to refs/heads/scons-build by this push:
     new 1e78fb4  add Linux config to scons (#82)
1e78fb4 is described below

commit 1e78fb472c3b4e59d45a51caf7d58e082ab768a1
Author: Peter <legi...@users.noreply.github.com>
AuthorDate: Thu Sep 9 18:27:26 2021 +0200

    add Linux config to scons (#82)
    
    Work by Peter Kovacs
---
 main/site_scons/globals.py        |   3 +
 main/site_scons/platform/linux.py | 256 ++++++++++++++++++++++++++++++++++++++
 2 files changed, 259 insertions(+)

diff --git a/main/site_scons/globals.py b/main/site_scons/globals.py
index 8a65f17..6590c8d 100644
--- a/main/site_scons/globals.py
+++ b/main/site_scons/globals.py
@@ -35,6 +35,9 @@ if soenv['OS'] == 'FREEBSD':
 elif soenv['OS'] == 'WNT':
     from windows import *
     platform = Windows()
+elif soenv['OS'] == 'LINUX':
+    from linux import *
+    platform = Linux()
 else:
     raise Exception ('Unsupported OS: ' + soenv['OS'])
 
diff --git a/main/site_scons/platform/linux.py 
b/main/site_scons/platform/linux.py
new file mode 100644
index 0000000..657fe79
--- /dev/null
+++ b/main/site_scons/platform/linux.py
@@ -0,0 +1,256 @@
+#**************************************************************
+#  
+#  Licensed to the Apache Software Foundation (ASF) under one
+#  or more contributor license agreements.  See the NOTICE file
+#  distributed with this work for additional information
+#  regarding copyright ownership.  The ASF licenses this file
+#  to you under the Apache License, Version 2.0 (the
+#  "License"); you may not use this file except in compliance
+#  with the License.  You may obtain a copy of the License at
+#  
+#    http://www.apache.org/licenses/LICENSE-2.0
+#  
+#  Unless required by applicable law or agreed to in writing,
+#  software distributed under the License is distributed on an
+#  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+#  KIND, either express or implied.  See the License for the
+#  specific language governing permissions and limitations
+#  under the License.
+#  
+#**************************************************************
+
+import subprocess
+import aooplatform
+
+class Linux(aooplatform.Platform):
+    def __init__(self):
+        self.GXX_INCLUDE_PATH = None
+        self.executableGroupLayers = {}
+        self.executableGroupLayers['UREBIN'] = 'UREBIN'
+        self.executableGroupLayers['SDK'] = 'SDKBIN'
+        self.executableGroupLayers['OOO'] = 'OOO'
+        self.executableGroupLayers['BRAND'] = 'BRAND'
+        self.executableGroupLayers['NONE'] = 'NONEBIN'
+        self.libraryGroupLayers = {}
+        self.libraryGroupLayers['OOOLIBS'] = 'OOO'
+        self.libraryGroupLayers['PLAINLIBS_URE'] = 'URELIB'
+        self.libraryGroupLayers['PLAINLIBS_OOO'] = 'OOO'
+        self.libraryGroupLayers['RTLIBS'] = 'OOO'
+        self.libraryGroupLayers['RTVERLIBS'] = 'URELIB'
+        self.libraryGroupLayers['STLLIBS'] = 'URELIB'
+        self.libraryGroupLayers['UNOLIBS_URE'] = 'URELIB'
+        self.libraryGroupLayers['UNOLIBS_OOO'] = 'OOO'
+        self.libraryGroupLayers['UNOVERLIBS'] = 'URELIB'
+        self.layerRPaths = {}
+        self.layerRPaths['URELIB'] = '\$$ORIGIN'
+        self.layerRPaths['UREBIN'] = '\$$ORIGIN/../lib:\$$ORIGIN'
+        self.layerRPaths['OOO'] = '\$$ORIGIN:\$$ORIGIN/../ure-link/lib'
+        self.layerRPaths['BRAND'] = 
'\$$ORIGIN:\$$ORIGIN/../basis-link/program:\$$ORIGIN/../basis-link/ure-link/lib'
+        self.layerRPaths['SDKBIN'] = '$ORIGIN/../../ure-link/lib'
+        self.layerRPaths['NONEBIN'] = '\$$ORIGIN/../lib:\$$ORIGIN'
+        self.layerComponentPrefixes = {}
+        self.layerComponentPrefixes['OOO'] = 
'vnd.sun.star.expand:\\$$OOO_BASE_DIR/program/'
+        self.layerComponentPrefixes['URELIB'] = 
'vnd.sun.star.expand:\\$$URE_INTERNAL_LIB_DIR/'
+        self.layerComponentPrefixes['NONE'] = 
'vnd.sun.star.expand:\\$$OOO_INBUILD_SHAREDLIB_DIR/'
+
+    def getGUI(self):
+        return 'UNX'
+
+    def getCOMID(self):
+        return 'gcc3'
+
+    def getCompilerDefs(self, soenv):
+        if self.GXX_INCLUDE_PATH is None:
+            gccVersion = subprocess.Popen("gcc -dumpversion", shell=True, 
stdout=subprocess.PIPE).stdout.readline().rstrip()
+            self.GXX_INCLUDE_PATH = soenv['COMPATH'] + "/include/c++/" + 
gccVersion.decode('utf-8')
+        return [
+            soenv['COM'],
+            'HAVE_GCC_VISIBILITY_FEATURE',
+            'CPPU_ENV=gcc3',
+            'GXX_INCLUDE_PATH=' + self.GXX_INCLUDE_PATH
+        ]
+
+    def getCPUDefs(self, soenv):
+        return [soenv['CPUNAME']]
+
+    def getOSDefs(self, soenv):
+        defs = [
+            soenv['OS'],
+            '_PTHREADS',
+            'UNIX',
+            'UNX'
+        ]
+        if 'PTHREAD_CFLAGS' in soenv:
+            defs += [soenv['PTHREAD_CFLAGS']]
+        return defs
+
+    def getCFlags(self, soenv):
+        flags = [
+            '-Wall',
+            '-Wendif-labels',
+            '-Wextra',
+            '-Wshadow',
+            '-fPIC',
+            '-fmessage-length=0',
+            '-fno-common',
+            '-fno-strict-aliasing',
+            '-fvisibility=hidden',
+            '-pipe'
+        ]
+        if soenv.get('EXTERNAL_WARNINGS_NOT_ERRORS') != 'TRUE':
+            flags += ['-Werror']
+        if 'SYSBASE' in soenv:
+            flags += ['--sysroot=' + soenv['SYSBASE']]
+        return flags
+
+    def getCXXFlags(self, soenv):
+        flags = [
+            '-Wall',
+            '-Wendif-labels',
+            '-Wextra',
+            '-Wno-ctor-dtor-privacy',
+            '-Wno-non-virtual-dtor',
+            '-Wshadow',
+            '-fPIC',
+            '-fmessage-length=0',
+            '-fno-common',
+            '-fno-strict-aliasing',
+            '-fno-use-cxa-atexit',
+            '-fvisibility-inlines-hidden',
+            '-fvisibility=hidden',
+            '-pipe'
+        ]
+        if soenv['EXTERNAL_WARNINGS_NOT_ERRORS'] != 'TRUE':
+            flags += ['-Werror']
+        if 'SYSBASE' in soenv:
+            flags += ['--sysroot=' + soenv['SYSBASE']]
+        if soenv['COM'] == 'CLANG':
+            flags += ['-DHAVE_STL_INCLUDE_PATH']
+        else:
+            flags += ['-DBOOST_TR1_DISABLE_INCLUDE_NEXT', 
'-DBOOST_TR1_GCC_INCLUDE_PATH=c++']
+        return flags
+
+    def getInclude(self, soenv):
+        includes = []
+        for i in soenv['SOLARINC'].split(' '):
+            if i.endswith('/stl'):
+                continue;
+            if i.startswith('-I'):
+                includes.append(i[2:])
+        return includes
+
+    def getIncludeStl(self, soenv):
+        includes = []
+        for i in soenv['SOLARINC'].split(' '):
+            if i.startswith('-I') and i.endswith('/stl'):
+                includes.append(i[2:])
+        return includes
+
+    def getExceptionFlags(self, soenv, enabled):
+        flags = []
+        if enabled:
+            flags += ['-DEXCEPTIONS_ON', '-fexceptions']
+            if soenv['COM'] == 'GCC':
+                flags += ['-fno-enforce-eh-specs'];
+        else:
+            flags += ['-DEXCEPTIONS_OFF', '-fno-exceptions']
+        return flags
+
+    def getCompilerOptFlags(self, enabled, debugLevel):
+        if enabled:
+            if debugLevel == 2:
+                return ['-O0']
+            else:
+                return ['-Os']
+        else:
+            return ['-O0']
+
+    def getDebugCFlags(self, compiler, enableSymbols):
+        if compiler == 'CLANG':
+            if enableSymbols == 'SMALL':
+                return ['-ggdb1', '-fno-inline']
+            else:
+                return ['-ggdb3', '-fno-inline']
+        else:
+            if enableSymbols == 'SMALL':
+                return ['-ggdb1', '-finline-limit=0', '-fno-inline', 
'-fno-default-inline']
+            else:
+                return ['-ggdb3', '-finline-limit=0', '-fno-inline', 
'-fno-default-inline']
+
+    def getRPATH(self, layer):
+        return self.layerRPaths[layer]
+
+    def getLibraryDefs(self, soenv):
+        return []
+
+    def getLDFlags(self, soenv, debugging, debugLevel):
+        sysbase = soenv.get('SYSBASE')
+        if sysbase is None:
+            sysbase = ''
+        flags = [
+            '-Wl,-rpath-link,' + sysbase + '/lib:' + sysbase + '/usr/lib',
+            '-Wl,-z,combreloc',
+            '-Wl,-z,defs'
+        ]
+        if soenv.get('FBSD_GCC_RPATH') is not None:
+            flags += [soenv['FBSD_GCC_RPATH']]
+        if sysbase != '':
+            flags += ['-Wl,--sysroot=' + sysbase]
+        if soenv.get('HAVE_LD_HASH_STYLE') == 'TRUE':
+            flags += ['-Wl,--hash-style=both']
+        if soenv.get('HAVE_LD_BSYMBOLIC_FUNCTIONS') == 'TRUE':
+            flags += [
+                '-Wl,--dynamic-list-cpp-new',
+                '-Wl,--dynamic-list-cpp-typeinfo',
+                '-Wl,-Bsymbolic-functions'
+            ]
+        if debugLevel == 0:
+            flags += ['-Wl,-O1']
+        return flags;
+
+    def getLDPATH(self, soenv):
+        path = soenv['SOLARLIB']
+        path = path.replace('-L../lib ', '')
+        path = path.replace('-L', '')
+        return path.split()
+
+    def getExecutableLDFlags(self, soenv, group, outDirLocation, debugging, 
debugLevel):
+        flags = self.getLDFlags(soenv, debugging, debugLevel)
+        flags += [
+            '-Wl,-rpath,' + self.getRPATH(self.executableGroupLayers(group)),
+            '-Wl,-rpath-link,' + outDirLocation
+        ]
+        return flags
+
+    def getLibraryLDFlags(self, soenv, group, outDirLocation, debugging, 
debugLevel):
+        flags = self.getLDFlags(soenv, debugging, debugLevel)
+        flags += [ '-Wl,-z,noexecstack' ]
+        flags += [
+            '-Wl,-z,origin',
+            '-Wl,-rpath,' + self.getRPATH(self.getLibraryGroupLayer(group)),
+            '-Wl,-rpath-link,' + outDirLocation
+        ]
+        return flags
+
+    def getStaticLibraryLDFlags(self, debugging, debugLevel):
+        return self.getLDFlags(soenv, debugging, debugLevel)
+
+    def getStandardLibs(self):
+        return []
+
+    def getLibraryGroupLayer(self, group):
+        return self.libraryGroupLayers[group]
+
+    def getLibraryLayerComponentPrefix(self, layer):
+        return self.layerComponentPrefixes[layer]
+
+    def getExecutableEnvironment(self, soenv):
+        return {
+            'LD_LIBRARY_PATH' : soenv['OUTDIR'] + '/lib'
+        }
+    
+    def getTargetTypeGUIFlags(self, isGUI):
+        return []
+
+    def getVersionScriptFlags(self, versionScript):
+        return ['-Wl,--version-script,' + versionScript.srcnode().path ]

Reply via email to