You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by da...@apache.org on 2020/02/02 00:30:27 UTC
[openoffice] 01/02: Initial import of a preliminary SCons-based
build system. Initial port of main/fileaccess to SCons.
This is an automated email from the ASF dual-hosted git repository.
damjan pushed a commit to branch scons-build
in repository https://gitbox.apache.org/repos/asf/openoffice.git
commit c128808560ee319f52c4787ff923cb04bc1b5896
Author: Damjan Jovanovic <da...@apache.org>
AuthorDate: Sat Feb 1 19:40:26 2020 +0200
Initial import of a preliminary SCons-based build system.
Initial port of main/fileaccess to SCons.
Patch by: me
---
main/SConstruct | 1 +
main/fileaccess/{prj/makefile.mk => SConscript} | 53 ++--
main/fileaccess/prj/makefile.mk | 2 +-
.../prj/makefile.mk => site_scons/config.py} | 36 ++-
.../prj/makefile.mk => site_scons/executable.py} | 40 +--
main/site_scons/globals.py | 164 ++++++++++++
main/site_scons/platform/aooplatform.py | 104 ++++++++
main/site_scons/platform/freebsd.py | 251 ++++++++++++++++++
main/site_scons/platform/windows.py | 293 +++++++++++++++++++++
main/site_scons/sharedLibrary.py | 70 +++++
main/site_scons/sharedObjects.py | 63 +++++
main/site_scons/site_init.py | 149 +++++++++++
12 files changed, 1166 insertions(+), 60 deletions(-)
diff --git a/main/SConstruct b/main/SConstruct
new file mode 100644
index 0000000..05d09bd
--- /dev/null
+++ b/main/SConstruct
@@ -0,0 +1 @@
+SConscript('fileaccess/SConscript', variant_dir=WORKDIR+'/scons/fileaccess', duplicate=0)
diff --git a/main/fileaccess/prj/makefile.mk b/main/fileaccess/SConscript
similarity index 61%
copy from main/fileaccess/prj/makefile.mk
copy to main/fileaccess/SConscript
index 353f9e0..cd47d9c 100644
--- a/main/fileaccess/prj/makefile.mk
+++ b/main/fileaccess/SConscript
@@ -19,26 +19,37 @@
#
#**************************************************************
+objs = AOOSharedObjects()
+objs.AddAPI([
+ 'offapi',
+ 'udkapi'
+])
+objs.AddInclude([
+ 'inc'
+])
+objs.AddDefs([
+ 'FILEACCESS_DLLIMPLEMENTATION'
+])
+objs.AddCxxExceptionSources([
+ 'source/FileAccess.cxx'
+])
+fileacc = AOOSharedLibrary(
+ 'fileacc',
+ 'OOOLIBS',
+ objs.objects
+)
+fileacc.AddLinkedLibs(
+ [
+ CPPULIB,
+ CPPUHELPERLIB,
+ SALLIB,
+ TOOLSLIB,
+ UCBHELPERLIB,
+ UNOTOOLSLIB
+ ] + STDLIBS
+)
+fileacc.SetComponentFile('util/fileacc')
+fileacc.InstallTo('${OUTDIR}/lib')
+Install('${OUTDIR}/xml', 'source/fileacc.xml')
-PRJ=..
-TARGET=prj
-
-.INCLUDE : settings.mk
-
-.IF "$(VERBOSE)"!=""
-VERBOSEFLAG :=
-.ELSE
-VERBOSEFLAG := -s
-.ENDIF
-
-.IF "$(DEBUG)"!=""
-DEBUG_ARGUMENT=DEBUG=$(DEBUG)
-.ELIF "$(debug)"!=""
-DEBUG_ARGUMENT=debug=$(debug)
-.ELSE
-DEBUG_ARGUMENT=
-.ENDIF
-
-all:
- cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) $(DEBUG_ARGUMENT) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
diff --git a/main/fileaccess/prj/makefile.mk b/main/fileaccess/prj/makefile.mk
index 353f9e0..9476456 100644
--- a/main/fileaccess/prj/makefile.mk
+++ b/main/fileaccess/prj/makefile.mk
@@ -41,4 +41,4 @@ DEBUG_ARGUMENT=
.ENDIF
all:
- cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) $(DEBUG_ARGUMENT) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
+ cd $(PRJ) && scons -u $(VERBOSEFLAG) -j$(MAXPROCESS) install
diff --git a/main/fileaccess/prj/makefile.mk b/main/site_scons/config.py
similarity index 60%
copy from main/fileaccess/prj/makefile.mk
copy to main/site_scons/config.py
index 353f9e0..d7f5455 100644
--- a/main/fileaccess/prj/makefile.mk
+++ b/main/site_scons/config.py
@@ -19,26 +19,24 @@
#
#**************************************************************
+import os
+_siteDir, _myFilename = os.path.split(os.path.abspath(__file__))
+_mainDir, _siteDir2 = os.path.split(_siteDir)
-PRJ=..
-TARGET=prj
+# Or should we patch set_soenv to generate us a .py file?
+def _loadJavaProperties(filepath):
+ props = {}
+ with open(filepath, "rt") as f:
+ for line in f:
+ l = line.strip()
+ if l and not l.startswith('#'):
+ eq = l.find('=')
+ if eq >= 0:
+ key = l[:eq].strip()
+ value = l[(eq+1):].strip()
+ props[key] = value
+ return props
-.INCLUDE : settings.mk
+soenv = _loadJavaProperties(_mainDir + '/ant.properties')
-.IF "$(VERBOSE)"!=""
-VERBOSEFLAG :=
-.ELSE
-VERBOSEFLAG := -s
-.ENDIF
-
-.IF "$(DEBUG)"!=""
-DEBUG_ARGUMENT=DEBUG=$(DEBUG)
-.ELIF "$(debug)"!=""
-DEBUG_ARGUMENT=debug=$(debug)
-.ELSE
-DEBUG_ARGUMENT=
-.ENDIF
-
-all:
- cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) $(DEBUG_ARGUMENT) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
diff --git a/main/fileaccess/prj/makefile.mk b/main/site_scons/executable.py
similarity index 52%
copy from main/fileaccess/prj/makefile.mk
copy to main/site_scons/executable.py
index 353f9e0..fb602ae 100644
--- a/main/fileaccess/prj/makefile.mk
+++ b/main/site_scons/executable.py
@@ -19,26 +19,28 @@
#
#**************************************************************
+from SCons.Script import *
+from config import soenv
+from globals import *
+class AOOExecutable:
+ def __init__(self, target, group, objects):
+ self.env = DefaultEnvironment().Clone()
+ self.exe = self.env.Program(
+ target,
+ source = objects
+ )
+ self.env['AOO_THIS'] = self.exe[0]
+ self.env.Append(LINKFLAGS=platform.getExecutableLDFlags(soenv, group, OUTDIRLOCATION, DEBUGGING, DEBUGLEVEL))
+ self.env.Append(LIBPATH=platform.getLDPATH(soenv))
+ self.env['AOO_GROUP'] = group
+ self.env['AOO_LAYER'] = platform.getLibraryGroupLayer(group)
-PRJ=..
-TARGET=prj
+ def AddLinkedLibs(self, libs):
+ self.env.Append(LIBS=libs)
-.INCLUDE : settings.mk
+ def SetTargetTypeGUI(self, isGUI):
+ self.env.Append(LINKFLAGS=platform.getTargetTypeGUIFlags(isGUI))
-.IF "$(VERBOSE)"!=""
-VERBOSEFLAG :=
-.ELSE
-VERBOSEFLAG := -s
-.ENDIF
-
-.IF "$(DEBUG)"!=""
-DEBUG_ARGUMENT=DEBUG=$(DEBUG)
-.ELIF "$(debug)"!=""
-DEBUG_ARGUMENT=debug=$(debug)
-.ELSE
-DEBUG_ARGUMENT=
-.ENDIF
-
-all:
- cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) $(DEBUG_ARGUMENT) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
+ def InstallTo(self, path):
+ self.env.Install(path, self.exe)
diff --git a/main/site_scons/globals.py b/main/site_scons/globals.py
new file mode 100644
index 0000000..8a65f17
--- /dev/null
+++ b/main/site_scons/globals.py
@@ -0,0 +1,164 @@
+#**************************************************************
+#
+# 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.
+#
+#**************************************************************
+
+from config import soenv
+import os
+_siteDir, _myFilename = os.path.split(os.path.abspath(__file__))
+import sys
+sys.path.insert(0, _siteDir + '/platform')
+
+############################
+# Platforms
+############################
+
+if soenv['OS'] == 'FREEBSD':
+ from freebsd import *
+ platform = FreeBSD()
+elif soenv['OS'] == 'WNT':
+ from windows import *
+ platform = Windows()
+else:
+ raise Exception ('Unsupported OS: ' + soenv['OS'])
+
+GUI = platform.getGUI()
+COMID = platform.getCOMID()
+
+############################
+# Product and debug settings
+############################
+
+PRODUCT = (soenv.get('PRODUCT') == 'TRUE')
+
+if 'DEBUG' in soenv:
+ DEBUGLEVEL = 2
+elif PRODUCT:
+ DEBUGLEVEL = 1
+else:
+ DEBUGLEVEL = 0
+
+DEBUGGING = False
+if DEBUGLEVEL == 2:
+ DEBUGGING = True
+
+if soenv.get('ENABLE_SYMBOLS') == 'SMALL':
+ DEBUGGING = True
+elif soenv.get('ENABLE_SYMBOLS') == 'TRUE':
+ DEBUGGING = True
+
+if soenv.get('ENABLE_CRASHDUMP') == 'TRUE':
+ DEBUGGING = True
+
+
+############################
+# Precompiled headers
+############################
+
+ENABLE_PCH = (soenv.get('ENABLE_PCH') == 'TRUE')
+
+############################
+# Defs
+############################
+
+GLOBALDEFS = [
+ '_REENTRANT',
+ 'CUI',
+ 'ENABLE_LAYOUT_EXPERIMENTAL=0',
+ 'ENABLE_LAYOUT=0',
+ 'OSL_DEBUG_LEVEL=' + str(DEBUGLEVEL),
+ 'SOLAR_JAVA',
+ 'SUPD=' + soenv['UPD'],
+ 'VCL'
+]
+
+GLOBALDEFS += platform.getOSDefs(soenv)
+GLOBALDEFS += platform.getCompilerDefs(soenv)
+GLOBALDEFS += platform.getCPUDefs(soenv)
+
+if PRODUCT:
+ GLOBALDEFS += ['PRODUCT', 'PRODUCT_FULL']
+else:
+ GLOBALDEFS += ['DBG_UTIL', 'STLP_DEBUG']
+
+if DEBUGLEVEL == 2:
+ GLOBALDEFS += ['DEBUG'];
+else:
+ GLOBALDEFS += ['OPTIMIZE', 'NDEBUG']
+
+if 'ENABLE_GTK' in soenv:
+ GLOBALDEFS += ['ENABLE_GTK']
+if 'ENABLE_KDE' in soenv:
+ GLOBALDEFS += ['ENABLE_KDE']
+if 'ENABLE_KDE4' in soenv:
+ GLOBALDEFS += ['ENABLE_KDE4']
+if 'ENABLE_GRAPHITE' in soenv:
+ GLOBALDEFS += ['ENABLE_GRAPHITE']
+
+############################
+# Paths
+############################
+
+OUTDIR = soenv['SOLARVERSION'] + "/" + soenv['INPATH']
+WORKDIR = OUTDIR + "/workdir"
+OUTDIRLOCATION = OUTDIR + os.sep + 'lib'
+
+############################
+# Libraries
+############################
+
+# FIXME: this probably belongs elsewhere
+UCBHELPER_MAJOR=4
+UDK_MAJOR=3
+
+if GUI == 'UNX' or soenv['COM'] == 'GCC':
+ if GUI+soenv['COM'] == 'WNTGCC':
+ CPPULIB = 'cppu' + UDK_MAJOR
+ CPPUHELPERLIB = 'cppuhelper' + UDK_MAJOR + COMID
+ elif GUI == 'OS2':
+ CPPULIB = 'cppu' + UDK_MAJOR
+ CPPUHELPERLIB = 'cppuh' + UDK_MAJOR
+ else:
+ CPPULIB = 'uno_cppu'
+ CPPUHELPERLIB = 'uno_cppuhelper' + COMID
+
+ if GUI+soenv['COM'] == 'WNTGCC' or GUI == 'OS2':
+ SALLIB = 'sal' + UDK_MAJOR
+ else:
+ SALLIB = 'uno_sal'
+
+ TOOLSLIB = 'tl'
+
+ if GUI == 'OS2':
+ UCBHELPERLIB = 'ucbh' + UCBHELPER_MAJOR
+ else:
+ UCBHELPERLIB= 'ucbhelper' + COMID
+
+ UNOTOOLSLIB = 'utl'
+
+else:
+ CPPULIB = 'icppu'
+ CPPUHELPERLIB = 'icppuhelper'
+ SALLIB = 'isal'
+ TOOLSLIB = 'itools'
+ UCBHELPERLIB = 'iucbhelper'
+ UNOTOOLSLIB = 'iutl'
+
+STDLIBS = platform.getStandardLibs()
+
diff --git a/main/site_scons/platform/aooplatform.py b/main/site_scons/platform/aooplatform.py
new file mode 100644
index 0000000..11dfbb0
--- /dev/null
+++ b/main/site_scons/platform/aooplatform.py
@@ -0,0 +1,104 @@
+#**************************************************************
+#
+# 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.
+#
+#**************************************************************
+
+from abc import ABC, abstractmethod
+
+class Platform(ABC):
+ @abstractmethod
+ def getGUI(self):
+ pass
+
+ @abstractmethod
+ def getCOMID(self):
+ pass
+
+ @abstractmethod
+ def getCompilerDefs(self, soenv):
+ pass
+
+ @abstractmethod
+ def getCPUDefs(self, soenv):
+ pass
+
+ @abstractmethod
+ def getOSDefs(self, soenv):
+ pass
+
+ @abstractmethod
+ def getLibraryDefs(self, soenv):
+ pass
+
+ @abstractmethod
+ def getCFlags(self, soenv):
+ pass
+
+ @abstractmethod
+ def getCXXFlags(self, soenv):
+ pass
+
+ @abstractmethod
+ def getInclude(self, soenv):
+ pass
+
+ @abstractmethod
+ def getIncludeStl(self, soenv):
+ pass
+
+ @abstractmethod
+ def getExceptionFlags(self, soenv, enabled):
+ pass
+
+ @abstractmethod
+ def getCompilerOptFlags(self, enabled, debugLevel):
+ pass
+
+ @abstractmethod
+ def getDebugCFlags(self, compiler, enableSymbols):
+ pass
+
+ @abstractmethod
+ def getExecutableLDFlags(self, soenv, group, outDirLocation, debugging, debugLevel):
+ pass
+
+ @abstractmethod
+ def getLibraryLDFlags(self, soenv, group, outDirLocation, debugging, debugLevel):
+ pass
+
+ @abstractmethod
+ def getStandardLibs(self):
+ pass
+
+ @abstractmethod
+ def getLibraryGroupLayer(self, group):
+ pass
+
+ @abstractmethod
+ def getLibraryLayerComponentPrefix(self, layer):
+ pass
+
+ @abstractmethod
+ def getExecutableEnvironment(self, soenv):
+ pass
+
+ @abstractmethod
+ def getTargetTypeGUIFlags(self, isGUI):
+ pass
+
diff --git a/main/site_scons/platform/freebsd.py b/main/site_scons/platform/freebsd.py
new file mode 100644
index 0000000..c1e845f
--- /dev/null
+++ b/main/site_scons/platform/freebsd.py
@@ -0,0 +1,251 @@
+#**************************************************************
+#
+# 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 FreeBSD(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 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 []
+
diff --git a/main/site_scons/platform/windows.py b/main/site_scons/platform/windows.py
new file mode 100644
index 0000000..eeec1ad
--- /dev/null
+++ b/main/site_scons/platform/windows.py
@@ -0,0 +1,293 @@
+#**************************************************************
+#
+# 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 aooplatform
+
+class Windows(aooplatform.Platform):
+ def __init__(self):
+ self.libraryGroupLayers = {}
+ self.libraryGroupLayers['OOOLIBS'] = 'OOO'
+ self.libraryGroupLayers['PLAINLIBS_URE'] = 'OOO'
+ self.libraryGroupLayers['PLAINLIBS_OOO'] = 'OOO'
+ self.libraryGroupLayers['RTLIBS'] = 'OOO'
+ self.libraryGroupLayers['RTVERLIBS'] = 'OOO'
+ self.libraryGroupLayers['STLLIBS'] = 'OOO'
+ self.libraryGroupLayers['UNOLIBS_URE'] = 'OOO'
+ self.libraryGroupLayers['UNOLIBS_OOO'] = 'OOO'
+ self.libraryGroupLayers['UNOVERLIBS'] = 'OOO'
+ 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 'WNT'
+
+ def getCOMID(self):
+ return 'MSC'
+
+ def getCompilerDefs(self, soenv):
+ defs = [
+ 'MSC',
+ '_CRT_NON_CONFORMING_SWPRINTFS',
+ '_CRT_NONSTDC_NO_DEPRECATE',
+ '_CRT_SECURE_NO_DEPRECATE',
+ '_MT',
+ '_DLL',
+ 'CPPU_ENV=' + soenv['COMNAME'],
+ 'FULL_DESK',
+ 'M1500'
+ ]
+ if soenv['CPUNAME'] == 'INTEL':
+ defs += ['BOOST_MEM_FN_ENABLE_CDECL']
+ return defs;
+
+ def getCPUDefs(self, soenv):
+ defs = [
+ 'ALIGN=' + soenv['ALIGN'],
+ 'CPUNAME=' + soenv['CPUNAME']
+ ]
+ if soenv['CPUNAME'] == 'INTEL':
+ defs += ['_X86_=1']
+ elif soenv['CPUNAME'] == 'X86_64':
+ defs += ['_AMD64_=1']
+ return defs
+
+ def getOSDefs(self, soenv):
+ return [
+ 'WINVER=0x0500',
+ '_WIN32_IE=0x0500',
+ 'NT351',
+ 'WIN32',
+ 'WNT'
+ ]
+
+ def getCFlags(self, soenv):
+ flags = [
+ '-Gd',
+ '-GR',
+ '-Gs',
+ '-GS',
+ '-nologo',
+ '-Wall',
+ '-wd4005',
+ '-wd4061',
+ '-wd4127',
+ '-wd4180',
+ '-wd4189',
+ '-wd4191',
+ '-wd4217',
+ '-wd4250',
+ '-wd4251',
+ '-wd4255',
+ '-wd4275',
+ '-wd4290',
+ '-wd4294',
+ '-wd4350',
+ '-wd4355',
+ '-wd4365',
+ '-wd4503',
+ '-wd4505',
+ '-wd4511',
+ '-wd4512',
+ '-wd4514',
+ '-wd4611',
+ '-wd4619',
+ '-wd4625',
+ '-wd4626',
+ '-wd4640',
+ '-wd4668',
+ '-wd4675',
+ '-wd4692',
+ '-wd4710',
+ '-wd4711',
+ '-wd4738',
+ '-wd4786',
+ '-wd4800',
+ '-wd4820',
+ '-wd4826',
+ '-Zc:wchar_t-',
+ '-Zm500'
+ ]
+ if soenv['EXTERNAL_WARNINGS_NOT_ERRORS'] != 'TRUE':
+ flags += ['-WX']
+ return flags
+
+ def getCXXFlags(self, soenv):
+ flags = [
+ '-Gd',
+ '-GR',
+ '-Gs',
+ '-GS',
+ '-Gy',
+ '-nologo',
+ '-Wall',
+ '-wd4005',
+ '-wd4061',
+ '-wd4127',
+ '-wd4180',
+ '-wd4189',
+ '-wd4191',
+ '-wd4217',
+ '-wd4250',
+ '-wd4251',
+ '-wd4275',
+ '-wd4290',
+ '-wd4294',
+ '-wd4350',
+ '-wd4355',
+ '-wd4365',
+ '-wd4503',
+ '-wd4505',
+ '-wd4511',
+ '-wd4512',
+ '-wd4514',
+ '-wd4611',
+ '-wd4619',
+ '-wd4625',
+ '-wd4626',
+ '-wd4640',
+ '-wd4668',
+ '-wd4675',
+ '-wd4692',
+ '-wd4710',
+ '-wd4711',
+ '-wd4738',
+ '-wd4786',
+ '-wd4800',
+ '-wd4820',
+ '-wd4826',
+ '-Zc:wchar_t-',
+ '-Zm500'
+ ]
+ if soenv['EXTERNAL_WARNINGS_NOT_ERRORS'] != 'TRUE':
+ flags += ['-WX']
+ 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', '-EHa']
+ else:
+ flags += ['-DEXCEPTIONS_OFF']
+ return flags
+
+ def getCompilerOptFlags(self, enabled, debugLevel):
+ if enabled:
+ if debugLevel == 2:
+ return []
+ else:
+ return ['-Ob1', '-Oxs', '-Oy-']
+ else:
+ return ['-Od']
+
+ def getDebugCFlags(self, compiler, debugging, enableSymbols):
+ return ['-Zi']
+
+ def getLibraryDefs(self, soenv):
+ return ['_DLL_']
+
+ def getLDFlags(self, soenv, debugging, debugLevel):
+ flags = [
+ '-NODEFAULTLIB'
+ ]
+ if soenv['CPUNAME'] == 'INTEL':
+ flags += ['-MACHINE:IX86']
+ elif soenv['CPUNAME'] == 'X86_64':
+ flags += ['-MACHINE:X64']
+ if debugging:
+ flags += ['-DEBUG']
+ return flags;
+
+ def getLDPATH(self, soenv):
+ path = []
+ ilib = soenv['ILIB']
+ ilib = ilib.replace(';', ' ')
+ for i in ilib.split(' '):
+ if i != '.':
+ path += [i]
+ return path
+
+ def getExecutableLDFlags(self, soenv, group, outDirLocation, debugging, debugLevel):
+ flags = self.getLDFlags(soenv, debugging, debugLevel)
+ flags += [
+ '-RELEASE',
+ '-BASE:0x1b000000',
+ '-OPT:NOREF',
+ '-INCREMENTAL:NO',
+ '-DEBUG',
+ '-NXCOMPAT',
+ '-DYNAMICBASE'
+ ]
+ if env['CPUNAME'] == 'INTEL':
+ flags += ['-SAFESEH']
+ return flags
+
+ def getLibraryLDFlags(self, soenv, group, outDirLocation, debugging, debugLevel):
+ flags = self.getLDFlags(soenv, debugging, debugLevel)
+ flags += [
+ '-DLL',
+ '-OPT:NOREF',
+ '-NXCOMPAT',
+ '-DYNAMICBASE',
+ ]
+ if env['CPUNAME'] == 'INTEL':
+ flags += ['-SAFESEH']
+ return flags
+
+ def getStandardLibs(self):
+ return [
+ 'kernel32',
+ 'msvcrt',
+ 'oldnames',
+ 'uwinapi'
+ ]
+
+ def getLibraryGroupLayer(self, group):
+ return self.libraryGroupLayers[group]
+
+ def getLibraryLayerComponentPrefix(self, layer):
+ return self.layerComponentPrefixes[layer]
+
+ def getExecutableEnvironment(self, soenv):
+ return {}
+
+ def getTargetTypeGUIFlags(self, isGUI):
+ if isGUI:
+ return '-SUBSYSTEM:WINDOWS'
+ else:
+ return '-SUBSYSTEM:CONSOLE'
diff --git a/main/site_scons/sharedLibrary.py b/main/site_scons/sharedLibrary.py
new file mode 100644
index 0000000..afe7644
--- /dev/null
+++ b/main/site_scons/sharedLibrary.py
@@ -0,0 +1,70 @@
+#**************************************************************
+#
+# 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.
+#
+#**************************************************************
+
+from SCons.Script import *
+from config import soenv
+from globals import *
+
+class AOOSharedLibrary:
+ def __init__(self, target, group, sharedObjects):
+ self.env = DefaultEnvironment().Clone()
+ self.sharedLib = self.env.SharedLibrary(
+ target,
+ source = sharedObjects
+ )
+ self.env['AOO_THIS'] = self.sharedLib[0]
+ self.env.Append(LINKFLAGS=platform.getLibraryLDFlags(soenv, group, OUTDIRLOCATION, DEBUGGING, DEBUGLEVEL))
+ self.env.Append(LIBPATH=platform.getLDPATH(soenv))
+ self.env['AOO_GROUP'] = group
+ self.env['AOO_LAYER'] = platform.getLibraryGroupLayer(group)
+
+ def AddLinkedLibs(self, libs):
+ self.env.Append(LIBS=libs)
+
+ def SetComponentFile(self, path):
+ componentFile = File(path + '.component')
+ inbuildComponentFile = File(path + '.inbuild.component')
+
+ outdirComponentDir = Dir(OUTDIR + '/xml/component/' + componentFile.srcnode().dir.path)
+
+ xsltenv = self.env.Clone()
+ xsltenv.Append(ENV = platform.getExecutableEnvironment(soenv))
+ if soenv['SYSTEM_LIBXSLT'] == 'YES':
+ xsltenv['AOO_XSLTPROC'] = 'xsltproc'
+ else:
+ xsltenv['AOO_XSLTPROC'] = '${OUTDIR}/bin/xsltproc'
+ xsltenv['AOO_COMPONENTPREFIX'] = platform.getLibraryLayerComponentPrefix(self.env['AOO_LAYER'])
+ xsltenv['AOO_INBUILDCOMPONENTPREFIX'] = platform.getLibraryLayerComponentPrefix('NONE')
+
+ finalComponent = xsltenv.Command(componentFile, componentFile.srcnode(),
+ '${AOO_XSLTPROC} --nonet --stringparam uri "${AOO_COMPONENTPREFIX}${AOO_THIS.name}"' \
+ ' -o $TARGET ${SOLARENV}/bin/createcomponent.xslt $SOURCE'
+ )
+ inbuildComponent = xsltenv.Command(inbuildComponentFile, componentFile.srcnode(),
+ '${AOO_XSLTPROC} --nonet --stringparam uri "${AOO_INBUILDCOMPONENTPREFIX}${AOO_THIS.name}"' \
+ ' -o $TARGET ${SOLARENV}/bin/createcomponent.xslt $SOURCE'
+ )
+
+ self.env.Install(outdirComponentDir, finalComponent)
+ self.env.Install(outdirComponentDir, inbuildComponent)
+
+ def InstallTo(self, path):
+ self.env.Install(path, self.sharedLib)
diff --git a/main/site_scons/sharedObjects.py b/main/site_scons/sharedObjects.py
new file mode 100644
index 0000000..0d068b5
--- /dev/null
+++ b/main/site_scons/sharedObjects.py
@@ -0,0 +1,63 @@
+#**************************************************************
+#
+# 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.
+#
+#**************************************************************
+
+from SCons.Script import *
+from config import soenv
+from globals import *
+
+class AOOSharedObjects:
+ def __init__(self):
+ self.env = DefaultEnvironment().Clone()
+ self.env.Append(CPPDEFINES=platform.getLibraryDefs(soenv))
+ if DEBUGGING:
+ self.env.Append(CFLAGS=platform.getDebugCFlags(soenv['COM'], soenv['ENABLE_SYMBOLS']))
+ self.env.Append(CXXFLAGS=platform.getDebugCFlags(soenv['COM'], soenv['ENABLE_SYMBOLS']))
+ self.objects = []
+
+ def AddDefs(self, defs):
+ self.env.Append(CPPDEFINES=defs)
+
+ def AddInclude(self, includes):
+ self.env.Append(CPPPATH=includes)
+
+ def AddAPI(self, names):
+ for name in names:
+ self.env.Append(CPPPATH='${OUTDIR}/inc/' + name)
+
+ def AddCxxExceptionSources(self, names):
+ self.AddCxxSources(names,
+ platform.getExceptionFlags(soenv, True)
+ + platform.getCompilerOptFlags(DEBUGLEVEL < 2, DEBUGLEVEL))
+
+ def AddCxxNoExceptionSources(self, names):
+ self.AddCxxSources(names,
+ platform.getExceptionFlags(soenv, False)
+ + platform.getCompilerOptFlags(DEBUGLEVEL < 2, DEBUGLEVEL))
+
+ def AddCxxSources(self, names, flags):
+ for name in names:
+ self.objects.append(
+ self.env.SharedObject(
+ name,
+ CXXFLAGS = self.env['CXXFLAGS'] + flags
+ )
+ )
+
diff --git a/main/site_scons/site_init.py b/main/site_scons/site_init.py
new file mode 100644
index 0000000..f41a204
--- /dev/null
+++ b/main/site_scons/site_init.py
@@ -0,0 +1,149 @@
+#**************************************************************
+#
+# 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.
+#
+#**************************************************************
+
+from SCons.Script import *
+import sys
+import os
+from config import soenv
+import component
+from globals import *
+
+
+###########################
+# Envirionment
+###########################
+
+env = DefaultEnvironment(
+ CC = soenv['CC'],
+ CXX = soenv['CXX'],
+ CPPPATH = platform.getInclude(soenv)
+)
+env.Append(CPPDEFINES = GLOBALDEFS)
+env.Append(CFLAGS = platform.getCFlags(soenv))
+env.Append(CXXFLAGS = platform.getCFlags(soenv))
+
+## Add some common paths to the SCons environment
+
+env['OUTDIR'] = soenv['OUTDIR']
+env['WORKDIR'] = soenv['WORKDIR']
+env['SOLARENV'] = soenv['SOLARENV']
+
+###########################
+# API
+###########################
+
+from sharedLibrary import AOOSharedLibrary
+from sharedObjects import AOOSharedObjects
+
+def CreateSharedLibraryEnvironment(name, group):
+ env = Environment()
+ env.Replace(CC=soenv['CC'])
+ env.Replace(CXX=soenv['CXX'])
+
+ env.Append(CPPPATH=platform.getInclude(soenv))
+
+ defines = GLOBALDEFS
+ defines += platform.getLibraryDefs(soenv)
+ env.Append(CPPDEFINES=defines)
+
+ cflags = platform.getCFlags(soenv)
+ cxxflags = platform.getCXXFlags(soenv)
+ if DEBUGGING:
+ cflags += platform.getDebugCFlags(soenv['COM'], soenv['ENABLE_SYMBOLS'])
+ cxxflags += platform.getDebugCFlags(soenv['COM'], soenv['ENABLE_SYMBOLS'])
+ env.Append(CFLAGS=cflags)
+ print("APPENDING " + str(cxxflags))
+ env.Replace(CXXFLAGS=cxxflags)
+ print("CXXFLAGS is " + str(env['CXXFLAGS']))
+
+ env.Append(LINKFLAGS=platform.getLibraryLDFlags(soenv, group, OUTDIRLOCATION, DEBUGGING, DEBUGLEVEL))
+ env.Append(LIBPATH=platform.getLDPATH(soenv))
+
+ env['SOLARENV'] = soenv['SOLARENV']
+ env['AOO_GROUP'] = group
+ env['AOO_LAYER'] = platform.getLibraryGroupLayer(group)
+ env['AOO_COMPONENTPREFIX'] = platform.getLibraryLayerComponentPrefix(env['AOO_LAYER'])
+
+ env.AddMethod(AddAPI)
+ env.AddMethod(AddExceptionSharedObjects)
+ env.AddMethod(AddNoExceptionSharedObjects)
+ env.AddMethod(AddCxxSharedObjects)
+ env.AddMethod(SetComponentFile)
+
+ return env
+
+def AddAPI(env, names):
+ for name in names:
+ env.Append(CPPPATH=OUTDIR + '/inc/' + name)
+
+def AddExceptionSharedObjects(env, names):
+ return AddCxxSharedObjects(env, names,
+ platform.getExceptionFlags(soenv, True)
+ + platform.getCompilerOptFlags(DEBUGLEVEL < 2, DEBUGLEVEL))
+
+def AddNoExceptionSharedObjects(env, names):
+ return AddCxxSharedObjects(env, names,
+ platform.getExceptionFlags(soenv, False)
+ + platform.getCompilerOptFlags(DEBUGLEVEL < 2, DEBUGLEVEL))
+
+def AddCxxSharedObjects(env, names, flags):
+ objects = []
+ for name in names:
+ objects.append(
+ env.SharedObject(
+ name,
+ CXXFLAGS = env['CXXFLAGS'] + flags
+ )
+ )
+ return objects
+
+if soenv['SYSTEM_LIBXSLT'] == 'YES':
+ _XSLTPROC = 'xsltproc'
+else:
+ _XSLTPROC = OUTDIR + '/bin/xsltproc'
+
+def SetComponentFile(self, library, componentFileBaseName):
+ env = self
+
+ componentFile = File(componentFileBaseName + '.component')
+ inbuildComponentFile = File(componentFileBaseName + '.inbuild.component')
+
+ outdirComponentDir = Dir(OUTDIR + '/xml/component/' + componentFile.srcnode().dir.path)
+
+ xsltenv = env.Clone()
+ xsltenv.Append(ENV = platform.getExecutableEnvironment(soenv))
+ finalComponent = xsltenv.Command(componentFile, componentFile.srcnode(),
+ action = [
+ _XSLTPROC + ' --nonet --stringparam uri "' + env['AOO_COMPONENTPREFIX'] + str(library[0]) + '"'
+ + ' -o $TARGET ' + env['SOLARENV'] + '/bin/createcomponent.xslt $SOURCE'
+ ]
+ )
+ inbuildComponent = xsltenv.Command(inbuildComponentFile, componentFile.srcnode(),
+ action = [
+ _XSLTPROC + ' --nonet --stringparam uri "' + platform.getLibraryLayerComponentPrefix('NONE') + str(library[0]) + '"'
+ + ' -o $TARGET ' + env['SOLARENV'] + '/bin/createcomponent.xslt $SOURCE'
+ ]
+ )
+
+ installs = []
+ installs += env.Install(outdirComponentDir, finalComponent)
+ installs += env.Install(outdirComponentDir, inbuildComponent)
+ return installs