summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
authorNorbert Thiebaud <nthiebaud@gmail.com>2011-03-08 19:43:29 -0600
committerNorbert Thiebaud <nthiebaud@gmail.com>2011-03-08 19:43:29 -0600
commitf0e5895d5baa04826d1884fc4720c6180f2eda04 (patch)
treed839e9131057f9d1271ec2578d1b370dcb89e032 /solenv
parent7572bcf0b17da4b37bf4ba834347196567ec3c37 (diff)
parent853a58836446858b75bf82916272e9fd27a7a892 (diff)
Merge commit 'ooo/DEV300_m101' into integration/dev300_m101
* commit 'ooo/DEV300_m101': (500 commits) masterfix DEV300: #i10000# remove hard dep masterfix DEV300: #i10000# usage of L10N build_type masterfix DEV300: #i10000# usage of L10N build_type masterfix DEV300: #i100000# dep. fix masterfix DEV300: #i10000# removed one hard dep masterfix DEV300: #i10000# fixed patch handling masterfix DEV300: #i10000# new configure DEV300 masterfix DEV300: #i10000# nawk -> awk l10nmove: adjust repository handling l10nmove: fixed regex l10nmove: minor fixes l10nmove: add l10n repo to gb_REPOS DEV300 masterfix: gnumake3: subsequenttests requires in environment ab80: Adding changes of cws mib21, ab77, ab77run2, dr77i to dev300 DEV300 masterfix: #i10000#: windows: more bizare hacks ... locales34: have a matching configure as well DEV300 locales34: back out change from autoreconf gnumake3: JunitTest.mk: bizarre hacks to make it work on windows ... Conflicts: configure configure.in instsetoo_native/prj/build.lst instsetoo_native/util/makefile.mk instsetoo_native/util/openoffice.lst instsetoo_native/util/pack.lst ooo.lst scp2/source/canvas/canvascommons.scp scp2/source/canvas/mtfrenderer.scp scp2/source/ooo/common_brand.scp scp2/source/ooo/directory_ooo.scp scp2/source/ooo/file_library_ooo.scp scp2/source/ooo/file_ooo.scp scp2/source/ooo/makefile.mk scp2/source/ooo/module_hidden_ooo.scp scp2/source/ooo/module_langpack.ulf scp2/source/ooo/ure.scp scp2/source/python/file_python.scp scp2/source/sdkoo/sdkoo.scp scp2/source/templates/module_langpack_accessories_templates.sct scp2/source/templates/module_langpack_accessories_templates_root.sct set_soenv.in soldep/bootstrp/appdef.cxx soldep/bootstrp/dep.cxx soldep/bootstrp/hashtbl.cxx soldep/bootstrp/makefile.mk soldep/bootstrp/minormk.cxx soldep/bootstrp/prj.cxx soldep/bootstrp/prodmap.cxx soldep/inc/dep.hxx soldep/inc/minormk.hxx soldep/inc/prodmap.hxx soldep/inc/soldep/appdef.hxx soldep/inc/soldep/connctr.hxx soldep/inc/soldep/depper.hxx soldep/inc/soldep/depwin.hxx soldep/inc/soldep/hashtbl.hxx soldep/inc/soldep/objwin.hxx soldep/inc/soldep/prj.hxx soldep/inc/soldep/sdtresid.hxx soldep/inc/soldep/soldep.hxx soldep/inc/soldep/soldlg.hxx soldep/inc/soldep/tbox.hxx soldep/prj/d.lst soldep/source/connctr.cxx soldep/source/depapp.hxx soldep/source/depper.cxx soldep/source/depwin.cxx soldep/source/makefile.mk soldep/source/objwin.cxx soldep/source/soldep.cxx soldep/source/soldlg.cxx soldep/source/soldlg.src soldep/source/tbox.cxx solenv/bin/build.pl solenv/bin/cws.pl solenv/bin/make_installer.pl solenv/bin/mhids.pl solenv/bin/modules/CwsConfig.pm solenv/bin/modules/RepositoryHelper.pm solenv/bin/modules/installer/regmerge.pm solenv/bin/modules/installer/scriptitems.pm solenv/bin/modules/installer/servicesfile.pm solenv/bin/modules/installer/simplepackage.pm solenv/bin/modules/installer/substfilenamefiles.pm solenv/config/ssolar.cmn solenv/inc/_tg_rslb.mk solenv/inc/extension_post.mk solenv/inc/libs.mk solenv/inc/minor.mk solenv/inc/postset.mk solenv/inc/settings.mk solenv/inc/tg_rslb.mk solenv/inc/unxlng.mk solenv/inc/wntmsc.mk soltools/HIDCompiler/hidclex.l stlport/prj/d.lst stlport/systemstlguards/postextstl.h
Diffstat (limited to 'solenv')
-rwxr-xr-xsolenv/bin/build.pl738
-rw-r--r--solenv/bin/buildalyzer138
-rw-r--r--solenv/bin/createcomponent.xslt51
-rwxr-xr-xsolenv/bin/deliver.pl32
-rwxr-xr-xsolenv/bin/linkoo2
-rw-r--r--solenv/bin/macosx-change-install-names.pl12
-rwxr-xr-xsolenv/bin/macosx-create-bundle2
-rw-r--r--solenv/bin/make_installer.pl42
-rw-r--r--solenv/bin/mhids.pl384
-rw-r--r--solenv/bin/modules/CreatePDBRelocators.pm61
-rw-r--r--solenv/bin/modules/RepositoryHelper.pm15
-rwxr-xr-xsolenv/bin/modules/SourceConfig.pm17
-rw-r--r--solenv/bin/modules/SourceConfigHelper.pm422
-rw-r--r--solenv/bin/modules/installer/control.pm32
-rw-r--r--solenv/bin/modules/installer/environment.pm4
-rw-r--r--solenv/bin/modules/installer/globals.pm20
-rw-r--r--solenv/bin/modules/installer/parameter.pm15
-rw-r--r--solenv/bin/modules/installer/regmerge.pm339
-rw-r--r--solenv/bin/modules/installer/scriptitems.pm78
-rw-r--r--solenv/bin/modules/installer/servicesfile.pm1059
-rw-r--r--solenv/bin/modules/installer/simplepackage.pm40
-rw-r--r--solenv/bin/modules/installer/substfilenamefiles.pm3
-rw-r--r--solenv/bin/modules/installer/windows/component.pm16
-rw-r--r--solenv/bin/modules/installer/windows/directory.pm107
-rw-r--r--solenv/bin/modules/installer/windows/file.pm232
-rw-r--r--solenv/bin/modules/installer/windows/idtglobal.pm22
-rw-r--r--solenv/bin/modules/installer/windows/msiglobal.pm110
-rw-r--r--solenv/bin/modules/installer/windows/property.pm4
-rw-r--r--solenv/bin/modules/par2script/check.pm49
-rw-r--r--solenv/bin/packcomponents.xslt52
-rwxr-xr-xsolenv/bin/packmodule63
-rw-r--r--solenv/bin/par2script.pl2
-rwxr-xr-x[-rw-r--r--]solenv/bin/soirpm.sh0
-rwxr-xr-xsolenv/bin/subsequenttests54
-rw-r--r--solenv/bin/transform_description.pl6
-rw-r--r--solenv/config/sdev300.ini3359
-rw-r--r--solenv/doc/gbuild/doxygen.cfg1510
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/alllangres.mk90
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/executable.mk25
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/gbuild.mk82
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/helper.mk42
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/library.mk41
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/linktarget.mk128
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/package.mk30
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/sdi.mk23
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/static_library.mk39
-rw-r--r--solenv/doc/gbuild/solenv/gbuild/types.mk169
-rw-r--r--solenv/gbuild/AllLangResTarget.mk323
-rw-r--r--solenv/gbuild/BuildDirs.mk59
-rw-r--r--solenv/gbuild/ComponentTarget.mk69
-rw-r--r--solenv/gbuild/CppunitTest.mk96
-rw-r--r--solenv/gbuild/CustomTarget.mk96
-rw-r--r--solenv/gbuild/Deliver.mk95
-rw-r--r--solenv/gbuild/Executable.mk91
-rw-r--r--solenv/gbuild/Helper.mk167
-rw-r--r--solenv/gbuild/JavaClassSet.mk81
-rw-r--r--solenv/gbuild/JunitTest.mk97
-rw-r--r--solenv/gbuild/Library.mk133
-rw-r--r--solenv/gbuild/LinkTarget.mk641
-rw-r--r--solenv/gbuild/Module.mk212
-rw-r--r--solenv/gbuild/Output.mk147
-rw-r--r--solenv/gbuild/Package.mk80
-rw-r--r--solenv/gbuild/PrecompiledHeaders.mk77
-rw-r--r--solenv/gbuild/SdiTarget.mk71
-rw-r--r--solenv/gbuild/StaticLibrary.mk109
-rw-r--r--solenv/gbuild/TargetLocations.mk162
-rw-r--r--solenv/gbuild/Tempfile.mk18
-rw-r--r--solenv/gbuild/extensions/post_PackModule.mk62
-rw-r--r--solenv/gbuild/extensions/post_SetupLocal.mk68
-rw-r--r--solenv/gbuild/extensions/pre_SharedLangList.mk38
-rw-r--r--solenv/gbuild/gbuild.mk254
-rwxr-xr-xsolenv/gbuild/platform/linux.mk407
-rwxr-xr-xsolenv/gbuild/platform/macosx.mk454
-rwxr-xr-xsolenv/gbuild/platform/solaris.mk385
-rwxr-xr-xsolenv/gbuild/platform/windows.mk679
-rw-r--r--solenv/gbuild/platform/winmingw.mk609
-rw-r--r--solenv/gbuild/processdelivered.awk36
-rw-r--r--solenv/gbuild/processdeps.awk78
-rw-r--r--solenv/gbuild/templates/AllLangResTarget.mk49
-rw-r--r--solenv/gbuild/templates/CppunitTest.mk41
-rw-r--r--solenv/gbuild/templates/Executable.mk45
-rw-r--r--solenv/gbuild/templates/JunitTest.mk49
-rw-r--r--solenv/gbuild/templates/Library.mk86
-rw-r--r--solenv/gbuild/templates/Makefile38
-rw-r--r--solenv/gbuild/templates/Module.mk45
-rw-r--r--solenv/gbuild/templates/Package.mk42
-rw-r--r--solenv/gbuild/templates/StaticLibrary.mk35
-rw-r--r--solenv/gbuild/templates/makefile.mk40
-rw-r--r--solenv/inc/_cppunit.mk20
-rwxr-xr-x[-rw-r--r--]solenv/inc/_tg_rslb.mk160
-rw-r--r--solenv/inc/_tg_scp.mk20
-rw-r--r--solenv/inc/_tg_sdi.mk90
-rw-r--r--solenv/inc/_tg_shl.mk170
-rw-r--r--solenv/inc/_tg_srs.mk140
-rw-r--r--solenv/inc/cppunit.mk2
-rw-r--r--solenv/inc/extension_post.mk15
-rw-r--r--solenv/inc/installationtest.mk39
-rw-r--r--solenv/inc/javaunittest.mk27
-rw-r--r--solenv/inc/langlist.mk163
-rw-r--r--solenv/inc/libs.mk6
-rw-r--r--solenv/inc/minor.mk10
-rw-r--r--solenv/inc/postmac.h6
-rw-r--r--solenv/inc/premac.h6
-rw-r--r--solenv/inc/pstrules.mk21
-rw-r--r--solenv/inc/rules.mk7
-rw-r--r--solenv/inc/settings.mk99
-rw-r--r--solenv/inc/target.mk58
-rw-r--r--solenv/inc/tg_ext.mk4
-rw-r--r--solenv/inc/tg_jar.mk12
-rw-r--r--solenv/inc/tg_java.mk11
-rw-r--r--solenv/inc/tg_rslb.mk16
-rw-r--r--solenv/inc/tg_scp.mk2
-rw-r--r--solenv/inc/tg_sdi.mk9
-rw-r--r--solenv/inc/tg_shl.mk17
-rw-r--r--solenv/inc/tg_srs.mk14
-rw-r--r--solenv/inc/unitools.mk6
-rw-r--r--solenv/inc/unx.mk3
-rw-r--r--solenv/inc/unxmacx.mk5
-rwxr-xr-xsolenv/inc/version.hrc16
-rwxr-xr-x[-rw-r--r--]solenv/inc/version.lst6
-rwxr-xr-xsolenv/inc/version_so.hrc16
-rwxr-xr-x[-rw-r--r--]solenv/inc/versionlist.mk2
-rwxr-xr-xsolenv/inc/wntgcci.mk4
-rwxr-xr-x[-rw-r--r--]solenv/inc/wntmsc.mk3
-rwxr-xr-x[-rw-r--r--]solenv/makefile.mk13
-rwxr-xr-x[-rw-r--r--]solenv/prj/d.lst6
-rwxr-xr-xsolenv/src/component.map1
-rwxr-xr-xsolenv/src/reg-component.map8
-rwxr-xr-xsolenv/src/unloadablecomponent.map1
129 files changed, 14096 insertions, 3263 deletions
diff --git a/solenv/bin/build.pl b/solenv/bin/build.pl
index 4613987737ef..f524ee07fce2 100755
--- a/solenv/bin/build.pl
+++ b/solenv/bin/build.pl
@@ -30,6 +30,7 @@
#
# build - build entire project
#
+ use strict;
use Config;
use POSIX;
use Cwd qw (cwd);
@@ -47,6 +48,7 @@
use lib ("$ENV{SOLARENV}/bin/modules");
use SourceConfig;
use RepositoryHelper;
+ use Cwd 'chdir';
my $in_so_env = 0;
if (defined $ENV{COMMON_ENV_TOOLS}) {
@@ -58,24 +60,20 @@
$verbose_mode = ($ENV{verbose} =~ /^t\S*$/i);
}
my $enable_multiprocessing = 1;
- my $cygwin = 0;
- $cygwin++ if ($^O eq 'cygwin');
- if ($ENV{GUI} eq 'WNT' && !$cygwin) {
- eval { require Win32::Process; import Win32::Process; };
- $enable_multiprocessing = 0 if ($@);
- eval { require Win32::Pipe; import Win32::Pipe; };
- };
### for XML file format
eval { require XMLBuildListParser; import XMLBuildListParser; };
+ my $enable_xml = 0;
+ my @modes_array = ();
if (!$@) {
$enable_xml = 1;
@modes_array = split('\s' , $ENV{BUILD_TYPE});
};
#### script id #####
- ( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
- $id_str = ' $Revision: 275224 $ ';
+ ( my $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
+ my $id_str = ' $Revision: 275224 $ ';
+ my $script_rev = 0;
$id_str =~ /Revision:\s+(\S+)\s+\$/
? ($script_rev = $1) : ($script_rev = "-");
@@ -87,100 +85,95 @@
# #
#########################
- $modules_number++;
- $perl = "";
- $remove_command = "";
- use Cwd 'chdir';
- $perl = 'perl';
- $remove_command = 'rm -rf';
- $nul = '> /dev/null';
+ my $modules_number++;
+ my $perl = 'perl';
+ my $remove_command = 'rm -rf';
+ my $nul = '> /dev/null';
- $processes_to_run = 0;
+ my $processes_to_run = 0;
# delete $pid when not needed
- %projects_deps_hash = (); # hash of projects with no dependencies,
+ my %projects_deps_hash = (); # hash of projects with no dependencies,
# that could be built now
- %broken_build = (); # hash of hashes of the modules,
+ my %broken_build = (); # hash of hashes of the modules,
# where build was broken (error occurred)
- %folders_hashes = ();
- %running_children = ();
- $dependencies_hash = 0;
- $cmd_file = '';
- $build_all_parents = 0;
- $show = 0;
- $checkparents = 0;
- $deliver = 0;
- $pre_custom_job = '';
- $custom_job = '';
- $post_custom_job = '';
- %local_deps_hash = ();
- %PathHash = ();
- %PlatformHash = ();
- %AliveDependencies = ();
- %global_deps_hash = (); # hash of dependencies of the all modules
- %global_deps_hash_backup = (); # backup hash of external dependencies of the all modules
- %module_deps_hash_backup = (); # backup hash of internal dependencies for aech module
- %modules_with_errors = (); # hash of modules hashes, which cannot be built further
- @broken_modules_names = (); # array of modules, which cannot be built further
- @dmake_args = ();
- %dead_parents = ();
- $initial_module = '';
- $all_dependent = 1; # a flag indicating if the hash has independent keys
- $build_from_with_branches = '';
- $build_all_cont = '';
- $build_since = '';
- $dlv_switch = '';
- $child = 0;
- %processes_hash = ();
- %module_announced = ();
- $prepare = ''; # prepare for following incompatible build
- $ignore = '';
- $html = '';
- @ignored_errors = ();
- %incompatibles = ();
- %skip_modules = ();
- %exclude_branches = ();
- $only_platform = ''; # the only platform to prepare
- $only_common = ''; # the only common output tree to delete when preparing
- %build_modes = ();
- $maximal_processes = 0; # the max number of the processes run
- %modules_types = (); # modules types ('mod', 'img', 'lnk') hash
- %platforms = (); # platforms available or being working with
- %platforms_to_copy = (); # copy output trees for the platforms when --prepare
- $tmp_dir = get_tmp_dir(); # temp directory for checkout and other actions
- @possible_build_lists = ('build.lst', 'build.xlist'); # build lists names
- %build_list_paths = (); # build lists names
- %build_lists_hash = (); # hash of arrays $build_lists_hash{$module} = \($path, $xml_list_object)
- $pre_job = 'announce'; # job to add for not-single module build
- $post_job = ''; # -"-
- %windows_procs = ();
- @warnings = (); # array of warnings to be shown at the end of the process
- @errors = (); # array of errors to be shown at the end of the process
- %html_info = (); # hash containing all necessary info for generating of html page
- %module_by_hash = (); # hash containing all modules names as values and correspondent hashes as keys
- %build_in_progress = (); # hash of modules currently being built
- %build_is_finished = (); # hash of already built modules
- %modules_with_errors = (); # hash of modules with build errors
- %build_in_progress_shown = (); # hash of modules being built,
+ my %folders_hashes = ();
+ my %running_children = ();
+ my $dependencies_hash = 0;
+ my $cmd_file = '';
+ my $build_all_parents = 0;
+ my $show = 0;
+ my $checkparents = 0;
+ my $deliver = 0;
+ my $pre_custom_job = '';
+ my $custom_job = '';
+ my $post_custom_job = '';
+ my %local_deps_hash = ();
+ my %path_hash = ();
+ my %platform_hash = ();
+ my %alive_dependencies = ();
+ my %global_deps_hash = (); # hash of dependencies of the all modules
+ my %global_deps_hash_backup = (); # backup hash of external dependencies of the all modules
+ my %module_deps_hash_backup = (); # backup hash of internal dependencies for aech module
+ my @broken_modules_names = (); # array of modules, which cannot be built further
+ my @dmake_args = ();
+ my %dead_parents = ();
+ my $initial_module = '';
+ my $all_dependent = 1; # a flag indicating if the hash has independent keys
+ my $build_from_with_branches = '';
+ my $build_all_cont = '';
+ my $build_since = '';
+ my $dlv_switch = '';
+ my $child = 0;
+ my %processes_hash = ();
+ my %module_announced = ();
+ my $prepare = ''; # prepare for following incompatible build
+ my $ignore = '';
+ my $html = '';
+ my @ignored_errors = ();
+ my %incompatibles = ();
+ my %skip_modules = ();
+ my %exclude_branches = ();
+ my $only_platform = ''; # the only platform to prepare
+ my $only_common = ''; # the only common output tree to delete when preparing
+ my %build_modes = ();
+ my $maximal_processes = 0; # the max number of the processes run
+ my %modules_types = (); # modules types ('mod', 'img', 'lnk') hash
+ my %platforms = (); # platforms available or being working with
+ my %platforms_to_copy = (); # copy output trees for the platforms when --prepare
+ my $tmp_dir = get_tmp_dir(); # temp directory for checkout and other actions
+ my @possible_build_lists = ('build.lst', 'build.xlist'); # build lists names
+ my %build_list_paths = (); # build lists names
+ my %build_lists_hash = (); # hash of arrays $build_lists_hash{$module} = \($path, $xml_list_object)
+ my $pre_job = 'announce'; # job to add for not-single module build
+ my $post_job = ''; # -"-
+ my @warnings = (); # array of warnings to be shown at the end of the process
+ my @errors = (); # array of errors to be shown at the end of the process
+ my %html_info = (); # hash containing all necessary info for generating of html page
+ my %module_by_hash = (); # hash containing all modules names as values and correspondent hashes as keys
+ my %build_in_progress = (); # hash of modules currently being built
+ my %build_is_finished = (); # hash of already built modules
+ my %modules_with_errors = (); # hash of modules with build errors
+ my %build_in_progress_shown = (); # hash of modules being built,
# and shown last time (to keep order)
- $build_time = time;
- %jobs_hash = ();
- $html_path = undef;
- $build_finished = 0;
- $html_file = '';
- %had_error = (); # hack for mysterious windows problems - try run dmake 2 times if first time there was an error
- $mkout = CorrectPath("$ENV{SOLARENV}/bin/mkout.pl");
- %weights_hash = (); # hash contains info about how many modules are dependent from one module
- $grab_output = 1;
- $stop_build_on_error = 0; # for multiprocessing mode: do not build further module if there is an error
- $interactive = 0; # for interactive mode... (for testing purpose enabled by default)
- $parent_process = 1;
- $server_mode = 0;
- $setenv_string = ''; # string for configuration of the client environment
- $ports_string = ''; # string with possible ports for server
- @server_ports = ();
- $html_port = 0;
- $server_socket_obj = undef; # socket object for server
- $html_socket_obj = undef; # socket object for server
+ my $build_time = time;
+ my %jobs_hash = ();
+ my $html_path = undef;
+ my $build_finished = 0;
+ my $html_file = '';
+ my %had_error = (); # hack for mysterious windows problems - try run dmake 2 times if first time there was an error
+ my $mkout = correct_path("$ENV{SOLARENV}/bin/mkout.pl");
+ my %weights_hash = (); # hash contains info about how many modules are dependent from one module
+ my $grab_output = 1;
+ my $stop_build_on_error = 0; # for multiprocessing mode: do not build further module if there is an error
+ my $interactive = 0; # for interactive mode... (for testing purpose enabled by default)
+ my $parent_process = 1;
+ my $server_mode = 0;
+ my $setenv_string = ''; # string for configuration of the client environment
+ my $ports_string = ''; # string with possible ports for server
+ my @server_ports = ();
+ my $html_port = 0;
+ my $server_socket_obj = undef; # socket object for server
+ my $html_socket_obj = undef; # socket object for server
my %clients_jobs = ();
my %clients_times = ();
my $client_timeout = 0; # time for client to build (in sec)...
@@ -199,7 +192,7 @@
my $clear_config = 0;
my $finished_children = 0;
my $debug = 0;
- %module_deps_hash_pids = ();
+ my %module_deps_hash_pids = ();
my @argv = @ARGV;
my $source_config_file;
my $zenity_pid = 0;
@@ -208,6 +201,16 @@
my $zenity_err = '';
my $verbose = 0;
+ my @modules_built = ();
+ my $deliver_command = $ENV{DELIVER};
+ my %prj_platform = ();
+ my $check_error_string = '';
+ my $dmake = '';
+ my $dmake_args = '';
+ my $echo = '';
+ my $new_line = "\n";
+ my $incompatible = 0;
+ my $local_host_ip = 'localhost';
### main ###
get_options();
@@ -216,10 +219,9 @@
zenity_tooltip("Starting build.");
get_build_modes();
- %deliver_env = ();
+ my %deliver_env = ();
if ($prepare) {
get_platforms(\%platforms);
- @modules_built = ();
$deliver_env{'BUILD_SOSL'}++;
$deliver_env{'COMMON_OUTDIR'}++;
@@ -229,14 +231,15 @@
$deliver_env{'OUTPATH'}++;
$deliver_env{'L10N_framework'}++;
};
- $StandDir = get_stand_dir(); # This also sets $initial_module
- $source_config = SourceConfig -> new($StandDir);
+ my $workspace_path = get_workspace_path(); # This also sets $initial_module
+ my $source_config = SourceConfig -> new($workspace_path);
+ check_partial_gnumake_build($initial_module);
if ($html) {
if (defined $html_path) {
- $html_file = CorrectPath($html_path . '/' . $ENV{INPATH}. '.build.html');
+ $html_file = correct_path($html_path . '/' . $ENV{INPATH}. '.build.html');
} else {
- my $log_directory = Cwd::realpath(CorrectPath($StandDir . '/..')) . '/log';
+ my $log_directory = Cwd::realpath(correct_path($workspace_path . '/..')) . '/log';
if ((!-d $log_directory) && (!mkdir($log_directory))) {
print_error("Cannot create $log_directory for writing html file\n");
};
@@ -252,16 +255,9 @@
get_module_and_buildlist_paths();
provide_consistency() if (defined $ENV{CWS_WORK_STAMP} && defined($ENV{COMMON_ENV_TOOLS}));
- $deliver_command = $ENV{DELIVER};
$deliver_command .= ' -verbose' if ($html || $verbose);
$deliver_command .= ' '. $dlv_switch if ($dlv_switch);
$ENV{mk_tmp}++;
- %prj_platform = ();
- $check_error_string = '';
- $dmake = '';
- $dmake_args = '';
- $echo = '';
- $new_line = "\n";
get_commands();
unlink ($cmd_file);
@@ -305,7 +301,7 @@
print $echo."$_\n";
};
print $new_line;
- print $echo."not found and couldn't be built. Dependencies on that module(s) ignored. Maybe you should correct build lists.\n";
+ print $echo."not found and couldn't be built. dependencies on that module(s) ignored. Maybe you should correct build lists.\n";
print $new_line;
do_exit(1) if ($checkparents);
};
@@ -362,7 +358,7 @@ sub generate_config_file {
sub start_interactive {
- $pid = open(HTML_PIPE, "-|");
+ my $pid = open(HTML_PIPE, "-|");
print "Pipe is open\n";
if ($pid) { # parent
@@ -544,7 +540,7 @@ sub get_build_list_path {
my $possible_dir_path = $module_paths{$_}.'/prj/';
if (-d $possible_dir_path) {
foreach my $build_list (@possible_build_lists) {
- my $possible_build_list_path = CorrectPath($possible_dir_path . $build_list);
+ my $possible_build_list_path = correct_path($possible_dir_path . $build_list);
if (-f $possible_build_list_path) {
$build_list_paths{$module} = $possible_build_list_path;
return $possible_build_list_path;
@@ -554,7 +550,7 @@ sub get_build_list_path {
};
};
$dead_parents{$module}++;
- $build_list_paths{$module} = CorrectPath(retrieve_build_list($module)) if (!defined $build_list_paths{$module});
+ $build_list_paths{$module} = correct_path(retrieve_build_list($module)) if (!defined $build_list_paths{$module});
return $build_list_paths{$module};
};
@@ -577,9 +573,9 @@ sub get_parent_deps {
$parents_deps_hash{$_}++;
}
$$deps_hash{$module} = \%parents_deps_hash;
- foreach $Parent (keys %parents_deps_hash) {
- if (!defined($$deps_hash{$Parent}) && (!defined $exclude_branches{$module})) {
- push (@unresolved_parents, $Parent);
+ foreach my $parent (keys %parents_deps_hash) {
+ if (!defined($$deps_hash{$parent}) && (!defined $exclude_branches{$module})) {
+ push (@unresolved_parents, $parent);
};
};
};
@@ -646,7 +642,7 @@ sub reverse_dependencies {
#
sub build_all {
if ($build_all_parents) {
- my ($Prj, $PrjDir, $orig_prj);
+ my ($prj, $prj_dir, $orig_prj);
get_parent_deps( $initial_module, \%global_deps_hash);
if (scalar keys %active_modules) {
$active_modules{$initial_module}++;
@@ -661,7 +657,9 @@ sub build_all {
prepare_build_from_with_branches(\%global_deps_hash, \%reversed_full_deps_hash);
}
if ($build_all_cont || $build_since) {
+ store_weights(\%global_deps_hash);
prepare_build_all_cont(\%global_deps_hash);
+ %weights_hash = ();
};
if ($generate_config) {
%add_to_config = %global_deps_hash;
@@ -669,11 +667,11 @@ sub build_all {
exit 0;
} elsif ($incompatible) {
my @missing_modules = ();
- foreach (keys %global_deps_hash) {
+ foreach (sort keys %global_deps_hash) {
push(@missing_modules, $_) if (!defined $active_modules{$_});
};
if (scalar @missing_modules) {
- print_error("There are modules:\n@missing_modules\n\nthat should be built, but they are not activated. Please, verify your $source_config_file.\n");
+ push(@warnings, "The modules: \"@missing_modules\" should be have been built, but they are not activated and have been skipped. Be aware, that can cause compatibility problems. Maybe you should verify your $source_config_file.\n");
};
};
foreach my $module (keys %dead_parents, keys %skip_modules) {
@@ -692,26 +690,26 @@ sub build_all {
if ($server_mode) {
run_server();
};
- while ($Prj = pick_prj_to_build(\%global_deps_hash)) {
- if (!defined $dead_parents{$Prj}) {
+ while ($prj = pick_prj_to_build(\%global_deps_hash)) {
+ if (!defined $dead_parents{$prj}) {
if (scalar keys %broken_build) {
- print $echo . "Skipping project $Prj because of error(s)\n";
- remove_from_dependencies($Prj, \%global_deps_hash);
- $build_is_finished{$Prj}++;
+ print $echo . "Skipping project $prj because of error(s)\n";
+ remove_from_dependencies($prj, \%global_deps_hash);
+ $build_is_finished{$prj}++;
next;
};
- $PrjDir = $module_paths{$Prj};
- get_module_dep_hash($Prj, \%local_deps_hash);
- my $info_hash = $html_info{$Prj};
- $$info_hash{DIRS} = check_deps_hash(\%local_deps_hash, $Prj);
- $module_by_hash{\%local_deps_hash} = $Prj;
+ $prj_dir = $module_paths{$prj};
+ get_module_dep_hash($prj, \%local_deps_hash);
+ my $info_hash = $html_info{$prj};
+ $$info_hash{DIRS} = check_deps_hash(\%local_deps_hash, $prj);
+ $module_by_hash{\%local_deps_hash} = $prj;
build_dependent(\%local_deps_hash);
print $check_error_string;
};
- remove_from_dependencies($Prj, \%global_deps_hash);
- $build_is_finished{$Prj}++;
+ remove_from_dependencies($prj, \%global_deps_hash);
+ $build_is_finished{$prj}++;
};
} else {
store_build_list_content($initial_module);
@@ -731,7 +729,7 @@ sub build_all {
sub backup_deps_hash {
my $source_hash = shift;
my $backup_hash = shift;
- foreach $key (keys %$source_hash) {
+ foreach my $key (keys %$source_hash) {
my %values_hash = %{$$source_hash{$key}};
$$backup_hash{$key} = \%values_hash;
};
@@ -792,6 +790,7 @@ sub dmake_dir {
html_store_job_info(\%local_deps_hash, $job_name, $error_code) if (!$child);
};
+
if ($error_code && $ignore) {
push(@ignored_errors, $job_name);
$error_code = 0;
@@ -808,6 +807,7 @@ sub dmake_dir {
};
_exit(0);
} elsif ($error_code && ($error_code != -1)) {
+ $broken_build{$job_name} = $error_code;
return $error_code;
};
};
@@ -896,8 +896,8 @@ sub get_deps_from_object {
my ($module, $build_list_object, $dependencies_hash) = @_;
foreach my $dir ($build_list_object->getJobDirectories("make", $ENV{GUI})) {
- $PathHash{$dir} = $module_paths{$module};
- $PathHash{$dir} .= $dir if ($dir ne '/');
+ $path_hash{$dir} = $module_paths{$module};
+ $path_hash{$dir} .= $dir if ($dir ne '/');
my %deps_hash = ();
foreach my $dep ($build_list_object->getJobDependencies($dir, "make", $ENV{GUI})) {
@@ -928,7 +928,7 @@ sub get_module_dep_hash {
#
sub get_deps_hash {
my ($dummy, $module_to_build);
- %DeadDependencies = ();
+ my %dead_dependencies = ();
$module_to_build = shift;
my $dependencies_hash = shift;
if ($custom_job) {
@@ -958,37 +958,37 @@ sub get_deps_hash {
};
s/\r\n//;
if ($_ =~ /\s+nmake\s+/o) {
- my ($Platform, $Dependencies, $Dir, $DirAlias);
+ my ($platform, $dependencies, $dir, $dir_alias);
my %deps_hash = ();
- $Dependencies = $';
+ $dependencies = $';
$dummy = $`;
$dummy =~ /(\S+)\s+(\S*)/o;
- $Dir = $2;
- $Dependencies =~ /(\w+)/o;
- $Platform = $1;
- $Dependencies = $';
- while ($Dependencies =~ /,(\w+)/o) {
- $Dependencies = $';
+ $dir = $2;
+ $dependencies =~ /(\w+)/o;
+ $platform = $1;
+ $dependencies = $';
+ while ($dependencies =~ /,(\w+)/o) {
+ $dependencies = $';
};
- $Dependencies =~ /\s+(\S+)\s+/o;
- $DirAlias = $1;
- if (!CheckPlatform($Platform)) {
- next if (defined $PlatformHash{$DirAlias});
- $DeadDependencies{$DirAlias}++;
+ $dependencies =~ /\s+(\S+)\s+/o;
+ $dir_alias = $1;
+ if (!check_platform($platform)) {
+ next if (defined $platform_hash{$dir_alias});
+ $dead_dependencies{$dir_alias}++;
next;
};
- delete $DeadDependencies{$DirAlias} if (defined $DeadDependencies{$DirAlias});
- print_error("Directory alias $DirAlias is defined at least twice!! Please, correct build.lst in module $module_to_build") if (defined $$dependencies_hash{$DirAlias});
- $PlatformHash{$DirAlias}++;
- $Dependencies = $';
- print_error("$module_to_build/prj/build.lst has wrongly written dependencies string:\n$_\n") if (!$Dependencies);
- $deps_hash{$_}++ foreach (GetDependenciesArray($Dependencies));
- $$dependencies_hash{$DirAlias} = \%deps_hash;
+ delete $dead_dependencies{$dir_alias} if (defined $dead_dependencies{$dir_alias});
+ print_error("Directory alias $dir_alias is defined at least twice!! Please, correct build.lst in module $module_to_build") if (defined $$dependencies_hash{$dir_alias});
+ $platform_hash{$dir_alias}++;
+ $dependencies = $';
+ print_error("$module_to_build/prj/build.lst has wrongly written dependencies string:\n$_\n") if (!$dependencies);
+ $deps_hash{$_}++ foreach (get_dependency_array($dependencies));
+ $$dependencies_hash{$dir_alias} = \%deps_hash;
my $local_dir = '';
- if ($Dir =~ /(\\|\/)/o) {
+ if ($dir =~ /(\\|\/)/o) {
$local_dir = "/$'";
};
- $PathHash{$DirAlias} = CorrectPath($module_paths{$module_to_build} . $local_dir);
+ $path_hash{$dir_alias} = correct_path($module_paths{$module_to_build} . $local_dir);
} elsif ($_ !~ /^\s*$/ && $_ !~ /^\w*\s/o) {
chomp;
push(@errors, $_);
@@ -1005,15 +1005,15 @@ sub get_deps_hash {
print_error($message);
};
};
- foreach my $alias (keys %DeadDependencies) {
- next if defined $AliveDependencies{$alias};
- if (!IsHashNative($alias)) {
+ foreach my $alias (keys %dead_dependencies) {
+ next if defined $alive_dependencies{$alias};
+# if (!IsHashNative($alias)) {
remove_from_dependencies($alias, $dependencies_hash);
- delete $DeadDependencies{$alias};
- };
+ delete $dead_dependencies{$alias};
+# };
};
};
- resolve_aliases($dependencies_hash, \%PathHash);
+ resolve_aliases($dependencies_hash, \%path_hash);
if (!$prepare) {
add_prerequisite_job($dependencies_hash, $module_to_build, $pre_custom_job);
add_prerequisite_job($dependencies_hash, $module_to_build, $pre_job);
@@ -1032,7 +1032,7 @@ sub add_prerequisite_job {
return if (!$job);
$job = "$module $job";
foreach (keys %$dependencies_hash) {
- $deps_hash = $$dependencies_hash{$_};
+ my $deps_hash = $$dependencies_hash{$_};
$$deps_hash{$job}++;
};
$$dependencies_hash{$job} = {};
@@ -1054,15 +1054,15 @@ sub add_dependent_job {
# this procedure converts aliases to absolute paths
#
sub resolve_aliases {
- my ($dependencies_hash, $PathHash) = @_;
+ my ($dependencies_hash, $path_hash) = @_;
foreach my $dir_alias (keys %$dependencies_hash) {
my $aliases_hash_ref = $$dependencies_hash{$dir_alias};
my %paths_hash = ();
foreach (keys %$aliases_hash_ref) {
- $paths_hash{$$PathHash{$_}}++;
+ $paths_hash{$$path_hash{$_}}++;
};
delete $$dependencies_hash{$dir_alias};
- $$dependencies_hash{$$PathHash{$dir_alias}} = \%paths_hash;
+ $$dependencies_hash{$$path_hash{$dir_alias}} = \%paths_hash;
};
};
@@ -1082,7 +1082,7 @@ sub mark_platform {
# Convert path from abstract (with '\' and/or '/' delimiters)
# to system-independent
#
-sub CorrectPath {
+sub correct_path {
$_ = shift;
s/\\/\//g;
return $_;
@@ -1128,50 +1128,50 @@ sub get_commands {
#
# Procedure retrieves list of projects to be built from build.lst
#
-sub get_stand_dir {
+sub get_workspace_path {
if (!defined $ENV{GUI}) {
$ENV{mk_tmp} = '';
die "No environment set\n";
};
my $repository_helper = RepositoryHelper->new();
- my $StandDir = $repository_helper->get_repository_root();
+ my $workspace_path = $repository_helper->get_repository_root();
my $initial_dir = $repository_helper->get_initial_directory();
- if ($StandDir eq $initial_dir) {
+ if ($workspace_path eq $initial_dir) {
print_error('Found no project to build');
};
- $initial_module = substr($initial_dir, length($StandDir) + 1);
+ $initial_module = substr($initial_dir, length($workspace_path) + 1);
if ($initial_module =~ /(\\|\/)/) {
$initial_module = $`;
};
- $module_paths{$initial_module} = $StandDir . "/$initial_module";
- return $StandDir;
+ $module_paths{$initial_module} = $workspace_path . "/$initial_module";
+ return $workspace_path;
};
#
# Picks project which can be built now from hash and then deletes it from hash
#
sub pick_prj_to_build {
- my $DepsHash = shift;
+ my $deps_hash = shift;
get_html_orders();
- my $Prj = find_indep_prj($DepsHash);
- if ($Prj) {
- delete $$DepsHash{$Prj};
+ my $prj = find_indep_prj($deps_hash);
+ if ($prj) {
+ delete $$deps_hash{$prj};
generate_html_file();
};
- return $Prj;
+ return $prj;
};
#
# Make a decision if the project should be built on this platform
#
-sub CheckPlatform {
- my $Platform = shift;
- return 1 if ($Platform eq 'all');
- return 1 if (($ENV{GUI} eq 'WIN') && ($Platform eq 'w'));
- return 1 if (($ENV{GUI} eq 'UNX') && ($Platform eq 'u'));
- return 1 if (($ENV{GUI} eq 'OS2') && ($Platform eq 'p'));
+sub check_platform {
+ my $platform = shift;
+ return 1 if ($platform eq 'all');
+ return 1 if (($ENV{GUI} eq 'WIN') && ($platform eq 'w'));
+ return 1 if (($ENV{GUI} eq 'UNX') && ($platform eq 'u'));
+ return 1 if (($ENV{GUI} eq 'OS2') && ($platform eq 'p'));
return 1 if (($ENV{GUI} eq 'WNT') &&
- (($Platform eq 'w') || ($Platform eq 'n')));
+ (($platform eq 'w') || ($platform eq 'n')));
return 0;
};
@@ -1180,14 +1180,14 @@ sub CheckPlatform {
# of all from given project dependent projects
#
sub remove_from_dependencies {
- my ($ExclPrj, $i, $Prj, $Dependencies);
- $ExclPrj = shift;
- my $ExclPrj_orig = '';
- $ExclPrj_orig = $` if (($ExclPrj =~ /\.lnk$/o) || ($ExclPrj =~ /\.link$/o));
- $Dependencies = shift;
- foreach $Prj (keys %$Dependencies) {
- my $prj_deps_hash = $$Dependencies{$Prj};
- delete $$prj_deps_hash{$ExclPrj} if (defined $$prj_deps_hash{$ExclPrj});
+ my ($exclude_prj, $i, $prj, $dependencies);
+ $exclude_prj = shift;
+ my $exclude_prj_orig = '';
+ $exclude_prj_orig = $` if (($exclude_prj =~ /\.lnk$/o) || ($exclude_prj =~ /\.link$/o));
+ $dependencies = shift;
+ foreach $prj (keys %$dependencies) {
+ my $prj_deps_hash = $$dependencies{$prj};
+ delete $$prj_deps_hash{$exclude_prj} if (defined $$prj_deps_hash{$exclude_prj});
};
};
@@ -1209,8 +1209,8 @@ sub check_deps_hash {
do {
$consistent = '';
- foreach $key (sort keys %deps_hash) {
- $local_deps_ref = $deps_hash{$key};
+ foreach my $key (sort keys %deps_hash) {
+ my $local_deps_ref = $deps_hash{$key};
if (!scalar keys %$local_deps_ref) {
if (defined $module) {
$build_number++;
@@ -1244,7 +1244,7 @@ sub check_deps_hash {
BUILD_NUMBER => $build_number,
STATUS => 'waiting',
LOG_PATH => '../' . $source_config->get_module_repository($module) . "/$module/$ENV{INPATH}/misc/logs/$log_name",
- LONG_LOG_PATH => CorrectPath($module_paths{$module} . "/$ENV{INPATH}/misc/logs/$log_name"),
+ LONG_LOG_PATH => correct_path($module_paths{$module} . "/$ENV{INPATH}/misc/logs/$log_name"),
START_TIME => 0,
FINISH_TIME => 0,
CLIENT => '-'
@@ -1277,16 +1277,19 @@ sub check_deps_hash {
# Find project with no dependencies left.
#
sub find_indep_prj {
- my ($Dependencies, $i);
+ my ($dependencies, $i);
my @candidates = ();
$all_dependent = 1;
handle_dead_children(0) if ($processes_to_run);
my $children = children_number();
return '' if (!$server_mode && $children && ($children >= $processes_to_run));
- $Dependencies = shift;
- if (scalar keys %$Dependencies) {
- foreach my $job (keys %$Dependencies) {
- push(@candidates, $job) if (!scalar keys %{$$Dependencies{$job}});
+ $dependencies = shift;
+ if (scalar keys %$dependencies) {
+ foreach my $job (keys %$dependencies) {
+ if (!scalar keys %{$$dependencies{$job}}) {
+ push(@candidates, $job);
+ last if (!$processes_to_run);
+ };
};
if (scalar @candidates) {
$all_dependent = 0;
@@ -1325,56 +1328,55 @@ sub get_waiters_number {
#
# Check if given entry is HASH-native, that is not a user-defined data
#
-sub IsHashNative {
- my $Prj = shift;
- return 1 if ($Prj =~ /^HASH\(0x[\d | a | b | c | d | e | f]{6,}\)/);
- return 0;
-};
+#sub IsHashNative {
+# my $prj = shift;
+# return 1 if ($prj =~ /^HASH\(0x[\d | a | b | c | d | e | f]{6,}\)/);
+# return 0;
+#};
#
# Getting array of dependencies from the string given
#
-sub GetDependenciesArray {
- my ($DepString, @Dependencies, $ParentPrj, $prj, $string);
- @Dependencies = ();
- $DepString = shift;
- $string = $DepString;
+sub get_dependency_array {
+ my ($dep_string, @dependencies, $parent_prj, $prj, $string);
+ @dependencies = ();
+ $dep_string = shift;
+ $string = $dep_string;
$prj = shift;
- while ($DepString !~ /^NULL/o) {
- print_error("Project $prj has wrongly written dependencies string:\n $string") if (!$DepString);
- $DepString =~ /(\S+)\s*/o;
- $ParentPrj = $1;
- $DepString = $';
- if ($ParentPrj =~ /\.(\w+)$/o) {
- $ParentPrj = $`;
- if (($prj_platform{$ParentPrj} ne $1) &&
- ($prj_platform{$ParentPrj} ne 'all')) {
- print_error ("$ParentPrj\.$1 is a wrongly dependency identifier!\nCheck if it is platform dependent");
+ while ($dep_string !~ /^NULL/o) {
+ print_error("Project $prj has wrongly written dependencies string:\n $string") if (!$dep_string);
+ $dep_string =~ /(\S+)\s*/o;
+ $parent_prj = $1;
+ $dep_string = $';
+ if ($parent_prj =~ /\.(\w+)$/o) {
+ $parent_prj = $`;
+ if (($prj_platform{$parent_prj} ne $1) &&
+ ($prj_platform{$parent_prj} ne 'all')) {
+ print_error ("$parent_prj\.$1 is a wrongly dependency identifier!\nCheck if it is platform dependent");
};
- $AliveDependencies{$ParentPrj}++ if (CheckPlatform($1));
- push(@Dependencies, $ParentPrj);
+ $alive_dependencies{$parent_prj}++ if (check_platform($1));
+ push(@dependencies, $parent_prj);
} else {
- if ((exists($prj_platform{$ParentPrj})) &&
- ($prj_platform{$ParentPrj} ne 'all') ) {
- print_error("$ParentPrj is a wrongly used dependency identifier!\nCheck if it is platform dependent");
+ if ((exists($prj_platform{$parent_prj})) &&
+ ($prj_platform{$parent_prj} ne 'all') ) {
+ print_error("$parent_prj is a wrongly used dependency identifier!\nCheck if it is platform dependent");
};
- push(@Dependencies, $ParentPrj);
+ push(@dependencies, $parent_prj);
};
};
- return @Dependencies;
+ return @dependencies;
};
#
# Getting current directory list
#
-sub GetDirectoryList {
- my ($Path);
- $Path = shift;
- opendir(CurrentDirList, $Path);
- @DirectoryList = readdir(CurrentDirList);
+sub get_directory_list {
+ my $path = shift;
+ opendir(CurrentDirList, $path);
+ my @directory_list = readdir(CurrentDirList);
closedir(CurrentDirList);
- return @DirectoryList;
+ return @directory_list;
};
sub print_error {
@@ -1600,7 +1602,7 @@ sub get_options {
};
if ($interactive) {
$html++; # enable html page generation...
- $local_host_name = hostname();
+ my $local_host_name = hostname();
$local_host_ip = inet_ntoa(scalar(gethostbyname($local_host_name)) || 'localhost');
}
# Default build modes(for OpenOffice.org)
@@ -1662,12 +1664,12 @@ sub get_switch_options {
sub cancel_build {
my $broken_modules_number = scalar @broken_modules_names;
- print "\n";
- print "-----------------------------------------------------------------------\n";
- print " Oh dear - something failed during the build - sorry !\n";
- print " For more help with debugging build errors, please see the section in:\n";
- print " http://wiki.documentfoundation.org/Development\n";
- print "\n";
+ print STDERR "\n";
+ print STDERR "-----------------------------------------------------------------------\n";
+ print STDERR " Oh dear - something failed during the build - sorry !\n";
+ print STDERR " For more help with debugging build errors, please see the section in:\n";
+ print STDERR " http://wiki.documentfoundation.org/Development\n";
+ print STDERR "\n";
if (!$broken_modules_number || !$build_all_parents) {
while (children_number()) {
@@ -1676,34 +1678,34 @@ sub cancel_build {
}
if (keys %broken_build) {
- print " internal build errors:\n\n";
+ print STDERR " internal build errors:\n\n";
foreach (keys %broken_build) {
- print "ERROR: error " . $broken_build{$_} . " occurred while making $_\n";
+ print STDERR "ERROR: error " . $broken_build{$_} . " occurred while making $_\n";
};
- print "\n";
+ print STDERR "\n";
}
my $module = shift @broken_modules_names;
if ($broken_modules_number > 1) {
- print " it seems you are using a threaded build, which means that the\n";
- print " actual compile error is probably hidden far above, and could be\n";
- print " inside any of these other modules:\n";
- print " @broken_modules_names\n";
- print " please re-run build inside each one to isolate the problem.\n";
+ print STDERR " it seems you are using a threaded build, which means that the\n";
+ print STDERR " actual compile error is probably hidden far above, and could be\n";
+ print STDERR " inside any of these other modules:\n";
+ print STDERR " @broken_modules_names\n";
+ print STDERR " please re-run build inside each one to isolate the problem.\n";
} else {
- print " it seems that the error is inside '$module', please re-run build\n";
- print " inside this module to isolate the error and/or test your fix:\n";
+ print STDERR " it seems that the error is inside '$module', please re-run build\n";
+ print STDERR " inside this module to isolate the error and/or test your fix:\n";
}
- print "-----------------------------------------------------------------------\n";
- print "\n";
- print "rm -Rf " . $ENV{'SRC_ROOT'} . "/$module/" . $ENV{'INPATH'} . " # optional module 'clean'\n";
- print "" . $ENV{'OOO_SHELL'} . "\n";
- print "cd " . $ENV{'SRC_ROOT'} . "\n";
- print "source ./" . $ENV{'ENV_SCRIPT'} . "\n";
- print "cd $module\n";
- print "build\n";
- print "\n";
- print "when the problem is isolated and fixed exit and re-run 'make' from the top-level\n";
+ print STDERR "-----------------------------------------------------------------------\n";
+ print STDERR "\n";
+ print STDERR "rm -Rf " . $ENV{'SRC_ROOT'} . "/$module/" . $ENV{'INPATH'} . " # optional module 'clean'\n";
+ print STDERR "" . $ENV{'OOO_SHELL'} . "\n";
+ print STDERR "cd " . $ENV{'SRC_ROOT'} . "\n";
+ print STDERR "source ./" . $ENV{'ENV_SCRIPT'} . "\n";
+ print STDERR "cd $module\n";
+ print STDERR "build\n";
+ print STDERR "\n";
+ print STDERR "when the problem is isolated and fixed exit and re-run 'make' from the top-level\n";
zenity_message("LibreOffice Build Failed!");
zenity_close();
@@ -1752,38 +1754,20 @@ sub handle_dead_children {
my $try_once_more = 0;
do {
my $pid = 0;
- if ($ENV{GUI} eq 'WNT' && !$cygwin) {
- foreach $pid (keys %processes_hash) {
- my $exit_code = undef;
- my $proc_obj = $windows_procs{$pid};
- $proc_obj->GetExitCode($exit_code);
- if ( $exit_code != 259 ) {
- $try_once_more = store_error($pid, $exit_code);
- delete $windows_procs{$pid};
- if ($try_once_more) {
- give_second_chance($pid);
- } else {
- clear_from_child($pid);
- };
- };
- };
- sleep 1 if (children_number() >= $processes_to_run || ($force_wait && ($running_children == children_number())));
+ if (children_number() >= $processes_to_run ||
+ ($force_wait && ($running_children == children_number()))) {
+ $pid = wait();
} else {
- if (children_number() >= $processes_to_run ||
- ($force_wait && ($running_children == children_number()))) {
- $pid = wait();
+ $pid = waitpid( -1, &WNOHANG);
+ };
+ if ($pid > 0) {
+ $try_once_more = store_error($pid, $?);
+ if ($try_once_more) {
+ give_second_chance($pid);
} else {
- $pid = waitpid( -1, &WNOHANG);
- };
- if ($pid > 0) {
- $try_once_more = store_error($pid, $?);
- if ($try_once_more) {
- give_second_chance($pid);
- } else {
- clear_from_child($pid);
- };
- $finished_children++;
+ clear_from_child($pid);
};
+ $finished_children++;
};
} while(children_number() >= $processes_to_run);
};
@@ -1915,19 +1899,19 @@ sub store_pid {
# Build everything that should be built multiprocessing version
#
sub build_multiprocessing {
- my $Prj;
+ my $prj;
do {
my $got_module = 0;
$finished_children = 0;
- while ($Prj = pick_prj_to_build(\%global_deps_hash)) {
- if (!defined $projects_deps_hash{$Prj}) {
- $projects_deps_hash{$Prj} = {};
- get_module_dep_hash($Prj, $projects_deps_hash{$Prj});
- my $info_hash = $html_info{$Prj};
- $$info_hash{DIRS} = check_deps_hash($projects_deps_hash{$Prj}, $Prj);
- $module_by_hash{$projects_deps_hash{$Prj}} = $Prj;
+ while ($prj = pick_prj_to_build(\%global_deps_hash)) {
+ if (!defined $projects_deps_hash{$prj}) {
+ $projects_deps_hash{$prj} = {};
+ get_module_dep_hash($prj, $projects_deps_hash{$prj});
+ my $info_hash = $html_info{$prj};
+ $$info_hash{DIRS} = check_deps_hash($projects_deps_hash{$prj}, $prj);
+ $module_by_hash{$projects_deps_hash{$prj}} = $prj;
}
- $module_build_queue{$Prj}++;
+ $module_build_queue{$prj}++;
$got_module++;
};
if (!$got_module) {
@@ -1968,7 +1952,7 @@ sub build_actual_queue {
do {
my @sorted_queue = sort {(scalar keys %{$projects_deps_hash{$a}}) <=> (scalar keys %{$projects_deps_hash{$b}})} keys %$build_queue;
my $started_children = 0;
- foreach $Prj (keys %$build_queue) {
+ foreach my $prj (keys %$build_queue) {
get_html_orders();
if ($reschedule_queue) {
$reschedule_queue = 0;
@@ -1981,19 +1965,19 @@ sub build_actual_queue {
};
return;
};
- if (defined $modules_with_errors{$projects_deps_hash{$Prj}} && !$ignore) {
- push (@broken_modules_names, $Prj);
- delete $$build_queue{$Prj};
+ if (defined $modules_with_errors{$projects_deps_hash{$prj}} && !$ignore) {
+ push (@broken_modules_names, $prj);
+ delete $$build_queue{$prj};
next;
};
- $started_children += build_dependent($projects_deps_hash{$Prj});
- if ((!scalar keys %{$projects_deps_hash{$Prj}}) &&
- !$running_children{$projects_deps_hash{$Prj}}) {
- if (!defined $modules_with_errors{$projects_deps_hash{$Prj}} || $ignore)
+ $started_children += build_dependent($projects_deps_hash{$prj});
+ if ((!scalar keys %{$projects_deps_hash{$prj}}) &&
+ !$running_children{$projects_deps_hash{$prj}}) {
+ if (!defined $modules_with_errors{$projects_deps_hash{$prj}} || $ignore)
{
- remove_from_dependencies($Prj, \%global_deps_hash);
- $build_is_finished{$Prj}++;
- delete $$build_queue{$Prj};
+ remove_from_dependencies($prj, \%global_deps_hash);
+ $build_is_finished{$prj}++;
+ delete $$build_queue{$prj};
$finished_projects++;
};
};
@@ -2012,6 +1996,7 @@ sub build_actual_queue {
sub run_job {
my ($job, $path, $registered_name) = @_;
my $job_to_do = $job;
+ my $error_code = 0;
print "$registered_name\n";
return 0 if ( $show );
$job_to_do = $deliver_command if ($job eq 'deliver');
@@ -2057,7 +2042,7 @@ sub do_custom_job {
};
if ($error_code) {
$modules_with_errors{$dependencies_hash}++;
- $broken_build{$module} = $error_code;
+# $broken_build{$module_job} = $error_code;
} else {
remove_from_dependencies($module_job, $dependencies_hash);
};
@@ -2070,31 +2055,31 @@ sub do_custom_job {
# Print announcement for module just started
#
sub announce_module {
- my $Prj = shift;
- $build_in_progress{$Prj}++;
- print_announce($Prj);
+ my $prj = shift;
+ $build_in_progress{$prj}++;
+ print_announce($prj);
};
sub print_announce {
- my $Prj = shift;
- return if (defined $module_announced{$Prj});
+ my $prj = shift;
+ return if (defined $module_announced{$prj});
my $prj_type = '';
- $prj_type = $modules_types{$Prj} if (defined $modules_types{$Prj});
+ $prj_type = $modules_types{$prj} if (defined $modules_types{$prj});
my $text;
if ($prj_type eq 'lnk') {
- if (!defined $active_modules{$Prj}) {
- $text = "Skipping module $Prj\n";
+ if (!defined $active_modules{$prj}) {
+ $text = "Skipping module $prj\n";
} else {
- $text = "Skipping link to $Prj\n";
+ $text = "Skipping link to $prj\n";
};
- $build_is_finished{$Prj}++;
+ $build_is_finished{$prj}++;
} elsif ($prj_type eq 'img') {
- $text = "Skipping incomplete $Prj\n";
- $build_is_finished{$Prj}++;
+ $text = "Skipping incomplete $prj\n";
+ $build_is_finished{$prj}++;
} elsif ($custom_job) {
- $text = "Running custom job \"$custom_job\" in module $Prj\n";
+ $text = "Running custom job \"$custom_job\" in module $prj\n";
} else {
- $text = "Building module $Prj\n";
+ $text = "Building module $prj\n";
};
my $announce_string = $new_line;
$announce_string .= $echo . "=============\n";
@@ -2104,7 +2089,7 @@ sub print_announce {
my $total_modules = scalar(keys %build_lists_hash);
my $modules_started = scalar(keys %module_announced) + 1;
zenity_tooltip("($modules_started/$total_modules) $text");
- $module_announced{$Prj}++;
+ $module_announced{$prj}++;
};
sub zenity_enabled {
@@ -2194,7 +2179,7 @@ sub modules_classify {
#
sub provide_consistency {
check_dir();
- foreach $var_ref (\$build_all_cont, \$build_since) {
+ foreach my $var_ref (\$build_all_cont, \$build_since) {
if ($$var_ref) {
return if (defined $module_paths{$$var_ref});
print_error("Cannot find module '$$var_ref'", 9);
@@ -2234,7 +2219,7 @@ sub clear_module {
closedir(DIRHANDLE);
foreach (@dir_content) {
next if (/^\.+$/);
- my $dir = CorrectPath($module_paths{$module}.'/'.$_);
+ my $dir = correct_path($module_paths{$module}.'/'.$_);
if ((!-d $dir.'/.svn') && is_output_tree($dir)) {
rmtree("$dir", 0, 1);
if (-d $dir) {
@@ -2289,28 +2274,24 @@ sub retrieve_build_list {
my $old_fh = select(STDOUT);
# Try to get global depencies from solver's build.lst if such exists
- my $solver_inc_dir = "$ENV{SOLARVER}/common";
+ my $solver_inc_dir = "$ENV{SOLARVER}/$ENV{INPATH}";
$solver_inc_dir .= $ENV{PROEXT} if (defined $ENV{PROEXT});
$solver_inc_dir .= '/inc';
$solver_inc_dir .= $ENV{UPDMINOREXT} if (defined $ENV{UPDMINOREXT});
$solver_inc_dir .= "/$module";
- $solver_inc_dir = CorrectPath($solver_inc_dir);
+ $solver_inc_dir = correct_path($solver_inc_dir);
$dead_parents{$module}++;
print "Fetching dependencies for module $module from solver...";
- foreach (@possible_build_lists) {
- my $possible_build_lst = "$solver_inc_dir/$_";
- if (-e $possible_build_lst) {
+ foreach my $onelist (@possible_build_lists) {
+ my $build_list_candidate = "$solver_inc_dir/$onelist";
+ if (-e $build_list_candidate) {
print " ok\n";
select($old_fh);
- return $possible_build_lst;
+ return $build_list_candidate;
};
}
- print " failed\n";
-
- if (!defined $dead_parents{$module}) {
- print "WARNING: Cannot figure out CWS for $module. Forgot to set CWS?\n";
- }
- select($old_fh);
+ print(" failed\n");
+ print_error("incomplete dependencies!\n");
return undef;
};
@@ -2321,7 +2302,7 @@ sub fix_permissions {
};
sub prepare_build_from_with_branches {
- ($full_deps_hash, $reversed_full_deps_hash) = @_;
+ my ($full_deps_hash, $reversed_full_deps_hash) = @_;
foreach my $prerequisite (keys %$full_deps_hash) {
foreach my $dependent_module (keys %incompatibles) {
if (defined ${$$reversed_full_deps_hash{$prerequisite}}{$dependent_module}) {
@@ -2415,7 +2396,7 @@ sub prepare_build_all_cont {
$border_prj = $build_all_cont if ($build_all_cont);
$border_prj = $build_since if ($build_since);
while ($prj = pick_prj_to_build($deps_hash)) {
- $orig_prj = '';
+ my $orig_prj = '';
$orig_prj = $` if ($prj =~ /\.lnk$/o);
$orig_prj = $` if ($prj =~ /\.link$/o);
if (($border_prj ne $prj) &&
@@ -2573,7 +2554,7 @@ sub read_ssolar_vars {
my ($verswitch, $source_root, $cwsname);
$verswitch = "-ver $ENV{UPDMINOR}" if (defined $ENV{UPDMINOR});
$source_root = '-sourceroot' if (defined $ENV{SOURCE_ROOT_USED});
- $cws_name = "-cwsname $ENV{CWS_WORK_STAMP}" if (defined $ENV{CWS_WORK_STAMP});
+ my $cws_name = "-cwsname $ENV{CWS_WORK_STAMP}" if (defined $ENV{CWS_WORK_STAMP});
my $param = "-$ENV{WORK_STAMP} $verswitch $source_root $cws_name $pro $platform";
my $ss_command = "$perl $setsolar -file $tmp_file $param $nul";
@@ -2610,8 +2591,8 @@ sub get_solar_vars {
sub get_current_module {
my $module_name = shift;
my $link_name = $module_name . '.lnk';
- $link_name .= '.link' if (-e $StandDir.$module_name . '.link');
- chdir $StandDir;
+ $link_name .= '.link' if (-e $workspace_path.$module_name . '.link');
+ chdir $workspace_path;
getcwd();
print "\nBreaking link to module $module_name";
my $result = rename $link_name, $module_name;
@@ -2632,7 +2613,7 @@ sub check_dir {
if (($current_module =~ /(\.lnk)$/) || ($current_module =~ /(\.link)$/)) {
$current_module = $`;
# we're dealing with a link => fallback to SOLARSRC under UNIX
- $StandDir = $ENV{SOLARSRC}.'/';
+ $workspace_path = $ENV{SOLARSRC}.'/';
get_current_module($current_module);
return;
} else {
@@ -2684,9 +2665,9 @@ sub do_exit {
if ( $^O eq 'os2' )
{
# perl 5.10 returns 'resource busy' for rmtree
- rmdir(CorrectPath($tmp_dir)) if ($tmp_dir);
+ rmdir(correct_path($tmp_dir)) if ($tmp_dir);
}
- rmtree(CorrectPath($tmp_dir), 0, 0) if ($tmp_dir);
+ rmtree(correct_path($tmp_dir), 0, 0) if ($tmp_dir);
print STDERR "Cannot delete $tmp_dir. Please remove it manually\n" if (-d $tmp_dir);
exit($exit_code);
};
@@ -2703,7 +2684,7 @@ sub sort_modules_appearance {
delete $build_in_progress{$_} if (defined $build_in_progress{$_});
delete $build_in_progress_shown{$_} if (defined $build_in_progress_shown{$_});
};
- @modules_order = sort keys %modules_with_errors;
+ my @modules_order = sort keys %modules_with_errors;
foreach (keys %modules_with_errors) {
delete $build_in_progress{$_} if (defined $build_in_progress{$_});
delete $build_is_finished{$_} if (defined $build_is_finished{$_});
@@ -3390,7 +3371,7 @@ sub run_server {
print $new_socket_obj $job_string_base . $job_string;
$clients_jobs{$pid} = $job_string;
$clients_times{$pid} = time;
- $children_running = children_number();
+ my $children_running = children_number();
$verbose_mode && print 'Running processes: ', $children_running, "\n";
$maximal_processes = $children_running if ($children_running > $maximal_processes);
} else {
@@ -3470,23 +3451,23 @@ sub pick_jobdir {
my $build_queue = shift;
my $i = 0;
foreach (@$build_queue) {
- $Prj = $$build_queue[$i];
- my $prj_deps_hash = $projects_deps_hash{$Prj};
+ my $prj = $$build_queue[$i];
+ my $prj_deps_hash = $projects_deps_hash{$prj};
if (defined $modules_with_errors{$prj_deps_hash} && !$ignore) {
- push (@broken_modules_names, $Prj);
+ push (@broken_modules_names, $prj);
splice (@$build_queue, $i, 1);
next;
};
$running_children{$prj_deps_hash} = 0 if (!defined $running_children{$prj_deps_hash});
- $child_nick = pick_prj_to_build($prj_deps_hash);
+ my $child_nick = pick_prj_to_build($prj_deps_hash);
if ($child_nick) {
return ($child_nick, $prj_deps_hash);
}
if ((!scalar keys %$prj_deps_hash) && !$running_children{$prj_deps_hash}) {
if (!defined $modules_with_errors{$prj_deps_hash} || $ignore)
{
- remove_from_dependencies($Prj, \%global_deps_hash);
- $build_is_finished{$Prj}++;
+ remove_from_dependencies($prj, \%global_deps_hash);
+ $build_is_finished{$prj}++;
splice (@$build_queue, $i, 1);
next;
};
@@ -3497,17 +3478,34 @@ sub pick_jobdir {
sub fill_modules_queue {
my $build_queue = shift;
- my $Prj;
- while ($Prj = pick_prj_to_build(\%global_deps_hash)) {
- push @$build_queue, $Prj;
- $projects_deps_hash{$Prj} = {};
- get_module_dep_hash($Prj, $projects_deps_hash{$Prj});
- my $info_hash = $html_info{$Prj};
- $$info_hash{DIRS} = check_deps_hash($projects_deps_hash{$Prj}, $Prj);
- $module_by_hash{$projects_deps_hash{$Prj}} = $Prj;
- };
- if (!$Prj && !children_number() && (!scalar @$build_queue)) {
+ my $prj;
+ while ($prj = pick_prj_to_build(\%global_deps_hash)) {
+ push @$build_queue, $prj;
+ $projects_deps_hash{$prj} = {};
+ get_module_dep_hash($prj, $projects_deps_hash{$prj});
+ my $info_hash = $html_info{$prj};
+ $$info_hash{DIRS} = check_deps_hash($projects_deps_hash{$prj}, $prj);
+ $module_by_hash{$projects_deps_hash{$prj}} = $prj;
+ };
+ if (!$prj && !children_number() && (!scalar @$build_queue)) {
cancel_build() if (scalar keys %broken_build);
mp_success_exit();
};
};
+
+sub is_gnumake_module {
+ my $module = shift;
+ my $bridgemakefile = $source_config->get_module_path($module) . "/prj/makefile.mk";
+ return (-e $bridgemakefile);
+}
+
+sub check_partial_gnumake_build {
+ if(!$build_all_parents && is_gnumake_module(shift)) {
+ print "This module has been migrated to GNU make.\n";
+ print "You can only use build --all/--since here with build.pl.\n";
+ print "To do the equivalent of 'build && deliver' call:\n";
+ print "\tmake -sr\n";
+ print "in the module root (This will modify the solver).\n";
+ exit 1;
+ }
+}
diff --git a/solenv/bin/buildalyzer b/solenv/bin/buildalyzer
new file mode 100644
index 000000000000..8b278e66b8e6
--- /dev/null
+++ b/solenv/bin/buildalyzer
@@ -0,0 +1,138 @@
+#!/usr/bin/env python
+import sys
+import os
+
+class CxxTarget:
+ def __init__(self, line):
+ self.directory = ''
+ self.outputfile = ''
+ self.includeflags = []
+ self.cxxflags = []
+ self.inputfiles = []
+ self.nolink = False
+ options = line[:-1].split(' ')
+ self.directory = options.pop(0)
+ parsing_outputfile = False
+ for option in options:
+ if parsing_outputfile:
+ self.outputfile = option
+ parsing_outputfile = False
+ elif option == '-o':
+ parsing_outputfile = True
+ elif option == '-c':
+ self.nolink = True
+ elif option.startswith('-I'):
+ self.includeflags.append(CxxFlag(option))
+ elif option.startswith('-'):
+ self.cxxflags.append(CxxFlag(option))
+ else:
+ self.inputfiles.append(option)
+ self.cxxflags.sort()
+ self.includeflags.sort()
+ cxxflags_tmp = dict()
+ for flag in self.cxxflags:
+ cxxflags_tmp[flag.name] = flag
+ self.cxxflags = cxxflags_tmp.values()
+ includeflags_tmp = dict()
+ for flag in self.includeflags:
+ includeflags_tmp[flag.name] = flag
+ self.includeflags = includeflags_tmp.values()
+ CxxTargets.by_name[self.getFullOutputname()] = self
+ def __str__(self):
+ return '%s' % (self.getFullOutputname())
+ def getFullOutputname(self):
+ return self.directory + '/' + self.outputfile
+ def __cmp__(self, other):
+ return cmp(self.getFullOutputname(), other.getFullOutputname())
+
+class CxxFlag:
+ def __init__(self, name):
+ self.name = name
+ CxxFlags.by_name[self.name] = self
+ def __str__(self):
+ return 'Flag %s' % (self.name)
+ def __cmp__(self, other):
+ return cmp(self.name, other.name)
+
+class CxxFlags:
+ by_name = dict()
+
+class CxxTargets:
+ by_name = dict()
+
+if __name__ == '__main__':
+ [CxxTarget(line) for line in sys.stdin.readlines()]
+ compile_targets = [target for target in CxxTargets.by_name.values() if target.nolink]
+ link_targets = [target for target in CxxTargets.by_name.values() if not target.nolink]
+ common_compile_flags = []
+ for flag in CxxFlags.by_name.values():
+ if sum((flag in target.cxxflags for target in compile_targets)) == len(compile_targets):
+ common_compile_flags.append(flag)
+ common_link_flags = []
+ for flag in CxxFlags.by_name.values():
+ if sum((flag in target.cxxflags for target in compile_targets)) == len(compile_targets):
+ common_link_flags.append(flag)
+
+ for target in compile_targets:
+ target.cxxflags = [flag for flag in target.cxxflags if flag not in common_compile_flags]
+ target.cxxflags.sort()
+ for target in link_targets:
+ target.cxxflags = [flag for flag in target.cxxflags if flag not in common_link_flags]
+ target.cxxflags.sort()
+
+ common_compile_flags.sort()
+ common_link_flags.sort()
+ print 'common compile flags: %s' % (' '.join(flag.name for flag in common_compile_flags))
+ print 'common link flags: %s' % (' '.join(flag.name for flag in common_link_flags))
+
+ by_flagset = dict()
+ for target in CxxTargets.by_name.values():
+ flagset = ' '.join((flag.name for flag in target.cxxflags))
+ if flagset not in by_flagset:
+ by_flagset[flagset] = list()
+ by_flagset[flagset].append(target)
+ for targetlist in by_flagset.values():
+ targetlist.sort()
+ flagsets = by_flagset.keys()
+ flagsets.sort()
+ print '%d compilerflag groups:' % (len(flagsets))
+ for flagset in flagsets:
+ print flagset
+ for target in by_flagset[flagset]:
+ print '%s' % (target)
+ print
+
+ by_flagset = dict()
+ for target in CxxTargets.by_name.values():
+ flagset = ' '.join((flag.name for flag in target.includeflags))
+ if flagset not in by_flagset:
+ by_flagset[flagset] = list()
+ by_flagset[flagset].append(target)
+ for targetlist in by_flagset.values():
+ targetlist.sort()
+ flagsets = by_flagset.keys()
+ flagsets.sort()
+ print '%d include flag groups:' % (len(flagsets))
+ for flagset in flagsets:
+ print flagset
+ for target in by_flagset[flagset]:
+ print '%s' % (target)
+ print
+
+ print 'sources:'
+ by_name = dict()
+ for target in CxxTargets.by_name.values():
+ by_name[os.path.basename(target.outputfile)] = target
+ names = by_name.keys()
+ names.sort()
+ for target in CxxTargets.by_name.values():
+ if len(target.inputfiles) > 1:
+ objects = [os.path.basename(object) for object in target.inputfiles]
+ sources = list()
+ for object in objects:
+ if object in by_name:
+ sources.append(by_name[object].inputfiles[0])
+ else:
+ sources.append('!!!!' + object)
+ sources.sort()
+ print '%s %s' % (target.getFullOutputname(), ' '.join(sources))
diff --git a/solenv/bin/createcomponent.xslt b/solenv/bin/createcomponent.xslt
new file mode 100644
index 000000000000..7f7695d533b3
--- /dev/null
+++ b/solenv/bin/createcomponent.xslt
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:uc="http://openoffice.org/2010/uno-components">
+ <xsl:param name="uri"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:template match="uc:component">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:attribute name="uri">
+ <xsl:value-of select="$uri"/>
+ </xsl:attribute>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="*">
+ <xsl:copy>
+ <xsl:apply-templates select="@*"/>
+ <xsl:apply-templates/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match="@*">
+ <xsl:copy/>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/solenv/bin/deliver.pl b/solenv/bin/deliver.pl
index 898dd97a1dc7..0a945bc4e408 100755
--- a/solenv/bin/deliver.pl
+++ b/solenv/bin/deliver.pl
@@ -43,7 +43,7 @@ use File::Spec;
( $script_name = $0 ) =~ s/^.*\b(\w+)\.pl$/$1/;
-$id_str = ' $Revision$ ';
+$id_str = ' $Revision: 275594 $ ';
$id_str =~ /Revision:\s+(\S+)\s+\$/
? ($script_rev = $1) : ($script_rev = "-");
@@ -403,6 +403,8 @@ sub parse_options
{
my $arg;
my $dontdeletecommon = 0;
+ $opt_silent = 1 if ( defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'FALSE');
+ $opt_verbose = 1 if ( defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'TRUE');
while ( $arg = shift @ARGV ) {
$arg =~ /^-force$/ and $opt_force = 1 and next;
$arg =~ /^-check$/ and $opt_check = 1 and $opt_verbose = 1 and next;
@@ -422,15 +424,13 @@ sub parse_options
}
$dest = $arg;
}
- $opt_silent = 1 if ( !defined $ENV{VERBOSE} || (defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'FALSE')) && ( ! $opt_verbose );
- $opt_verbose = 1 if ( defined $ENV{VERBOSE} && $ENV{VERBOSE} eq 'TRUE') && ( ! $opt_silent );
# $dest and $opt_zip or $opt_delete are mutually exclusive
if ( $dest and ($opt_zip || $opt_delete) ) {
usage(1);
}
# $opt_silent and $opt_check or $opt_verbose are mutually exclusive
if ( ($opt_check or $opt_verbose) and $opt_silent ) {
- print STDERR "Error on command line: options '-check'/'-verbose' and '-quiet' are mutually exclusive.\n";
+ print STDERR "Error on command line: options '-check' and '-quiet' are mutually exclusive.\n";
usage(1);
}
if ($dontdeletecommon) {
@@ -678,6 +678,12 @@ sub glob_line
}
else {
# no globbing but renaming possible
+ # #i89066#
+ if (-d $to && -f $from) {
+ my $filename = File::Basename::basename($from);
+ $to .= '/' if ($to !~ /[\\|\/]$/);
+ $to .= $filename;
+ };
push(@globbed_files, [$from, $to]);
}
if ( $opt_checkdlst ) {
@@ -782,11 +788,6 @@ sub copy_if_newer
if ( $opt_delete ) {
print "REMOVE: $to\n" if $opt_verbose;
$rc = unlink($to) unless $opt_check;
- # handle special packaging of *.dylib files for Mac OS X
- if ( $to =~ s/\.dylib$/.jnilib/ ) {
- print "REMOVE: $to\n" if $opt_verbose;
- $rc += unlink "$to" unless $opt_check;
- }
return 1 if $opt_check;
return $rc;
}
@@ -851,19 +852,6 @@ sub copy_if_newer
# handle special packaging of *.dylib files for Mac OS X
if ( $^O eq 'darwin' )
{
- if ( $to =~ /\.dylib/ ) {
- system("macosx-create-bundle", $to);
- my $bundlelib = $to;
- $bundlelib =~ s/\.dylib$//;
- $bundlelib .= ".jnilib";
- if ( $opt_delete ) {
- print "REMOVE: $bundlelib\n" if $opt_verbose;
- unlink "$bundlelib" unless $opt_check;
- } else {
- push_on_ziplist($bundlelib) if $opt_zip;
- push_on_loglist("LINK", basename($to), "$bundlelib") if $opt_log;
- }
- }
system("macosx-create-bundle", "$to=$from.app") if ( -d "$from.app" );
system("ranlib", "$to" ) if ( $to =~ /\.a/ );
}
diff --git a/solenv/bin/linkoo b/solenv/bin/linkoo
index 297a736dfb75..3b09dcf8295a 100755
--- a/solenv/bin/linkoo
+++ b/solenv/bin/linkoo
@@ -251,7 +251,7 @@ sub scan_and_link_files($$$)
}
# Now scan the solver
- my $upd = 330;
+ my $upd = 300;
$upd = $ENV{UPD} if (defined $ENV{UPD});
scan_one_dir ($installed_files, \%build_files, "$build_path/solver/$upd/$target", 1);
diff --git a/solenv/bin/macosx-change-install-names.pl b/solenv/bin/macosx-change-install-names.pl
index 844c36f23c2b..52b2ffa343ec 100644
--- a/solenv/bin/macosx-change-install-names.pl
+++ b/solenv/bin/macosx-change-install-names.pl
@@ -60,6 +60,18 @@ sub action($$$)
'Usage: app|shl|extshl UREBIN|URELIB|OOO|SDK|BRAND|OXT|BOXT|NONE <filepath>*';
$type = shift @ARGV;
$loc = shift @ARGV;
+if ($type eq "SharedLibrary")
+{
+ $type = "shl";
+}
+if ($type eq "Executable")
+{
+ $type = "app"
+}
+if ($type eq "Library")
+{
+ $type = "shl"
+}
if ($type eq "extshl")
{
$type = "shl";
diff --git a/solenv/bin/macosx-create-bundle b/solenv/bin/macosx-create-bundle
index ba7d624e68f3..4b03e076f3ae 100755
--- a/solenv/bin/macosx-create-bundle
+++ b/solenv/bin/macosx-create-bundle
@@ -96,7 +96,7 @@ while [ $# != 0 ]; do
# Link jnilib
ln -sf "$inputfilename" "$outputdir/$inputjnilibname"
- printf "macosx-create-bundle: $outputdir/$inputjnilibname successfully created\n"
+ #printf "macosx-create-bundle: $outputdir/$inputjnilibname successfully created\n"
fi
else
printf "macosx-create-bundle: error: file is not an executable or shared library.\n" >&2
diff --git a/solenv/bin/make_installer.pl b/solenv/bin/make_installer.pl
index 955873c21f76..e46ffdf28662 100644
--- a/solenv/bin/make_installer.pl
+++ b/solenv/bin/make_installer.pl
@@ -54,11 +54,9 @@ use installer::packagepool;
use installer::parameter;
use installer::pathanalyzer;
use installer::profiles;
-use installer::regmerge;
use installer::scppatchsoname;
use installer::scpzipfiles;
use installer::scriptitems;
-use installer::servicesfile;
use installer::setupscript;
use installer::simplepackage;
use installer::sorter;
@@ -905,43 +903,6 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
installer::worker::resolving_hidden_flag($filesinproductlanguageresolvedarrayref, $allvariableshashref, "File", $languagestringref);
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles13c.log", $filesinproductlanguageresolvedarrayref); }
- #####################################
- # Creating services.rdb
- #####################################
-
- if ( $allvariableshashref->{'SERVICESPROJEKT'} )
- {
- if (! $installer::globals::languagepack && ! $installer::globals::helppack)
- {
- # ATTENTION: For creating the services.rdb it is necessary to execute the native file
- # "regcomp" or "regcomp.exe". Therefore this function can only be executed on the
- # corresponding platform.
-
- if ( $installer::globals::servicesrdb_can_be_created )
- {
- installer::logger::print_message( "... creating preregistered services.rdb ...\n" );
-
- installer::servicesfile::create_services_rdb($allvariableshashref, $filesinproductlanguageresolvedarrayref, $includepatharrayref, $languagestringref);
- if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles14.log", $filesinproductlanguageresolvedarrayref); }
- }
- }
- }
-
- #####################################
- # Calls of regmerge
- #####################################
-
- if (!($installer::globals::is_copy_only_project))
- {
- if (! $installer::globals::languagepack && ! $installer::globals::helppack)
- {
- installer::logger::print_message( "... merging files into registry database ...\n" );
-
- installer::regmerge::merge_registration_files($filesinproductlanguageresolvedarrayref, $includepatharrayref, $languagestringref, $allvariableshashref);
- if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles14b.log", $filesinproductlanguageresolvedarrayref); }
- }
- }
-
############################################
# Collecting directories for epm list file
############################################
@@ -2039,7 +2000,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
installer::windows::registry::create_registry_table($registryitemsinproductlanguageresolvedarrayref, \@allregistrycomponents, $newidtdir, $languagesarrayref, $allvariableshashref);
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems4.log", $registryitemsinproductlanguageresolvedarrayref); }
- installer::windows::component::create_component_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, \@allregistrycomponents, $newidtdir, $componentid, $componentidkeypath);
+ installer::windows::component::create_component_table($filesinproductlanguageresolvedarrayref, $registryitemsinproductlanguageresolvedarrayref, $directoriesforepmarrayref, \@allfilecomponents, \@allregistrycomponents, $newidtdir, $componentid, $componentidkeypath, $allvariableshashref);
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "productfiles19.log", $filesinproductlanguageresolvedarrayref); }
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "registryitems5.log", $registryitemsinproductlanguageresolvedarrayref); }
@@ -2250,6 +2211,7 @@ for ( my $n = 0; $n <= $#installer::globals::languageproducts; $n++ )
installer::logger::print_message( "... creating msi database (language $onelanguage) ... \n" );
installer::windows::msiglobal::set_uuid_into_component_table($languageidtdir, $allvariableshashref); # setting new GUID for the components using the tool uuidgen.exe
+ installer::windows::msiglobal::prepare_64bit_database($languageidtdir, $allvariableshashref); # making last 64 bit changes
installer::windows::msiglobal::create_msi_database($languageidtdir ,$msifilename);
# validating the database # ToDo
diff --git a/solenv/bin/mhids.pl b/solenv/bin/mhids.pl
deleted file mode 100644
index a1325032849c..000000000000
--- a/solenv/bin/mhids.pl
+++ /dev/null
@@ -1,384 +0,0 @@
-:
-eval 'exec perl -wS $0 ${1+"$@"}'
- if 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.
-#
-#*************************************************************************
-
-my $filename;
-my $srs;
-my $prjname;
-my $defs;
-my $solarincludes;
-my $verbose = 0;
-
-my $debug = 0;
-my $filebase;
-my $workfile;
-my $shell_workfile;
-my @cleanuplist = ();
-
-# variables to setup the compiler line
-my $appext;
-my $compiler;
-my $outbin_flag;
-my $outobj_flag;
-my $objext;
-my $preprocess_flag; # preprocess to stdout
-
-my $no_hid_files;
-
-sub cleandie
-{
- my $errstring = shift @_;
- my $erroreval = $@;
-
- print STDERR "$errstring\n";
- if ( not $debug ) {
- foreach my $i (@cleanuplist) {
- if ( -f "$workfile$i" ) {
- unlink "$workfile$i" or print STDERR "ERROR - couldn't remove $workfile$i\n";
- }
- }
- }
- die "$erroreval\n";
-}
-
-sub setcompiler
-{
- my $whichcom = $ENV{COM};
- my $extra_cflags = $ENV{EXTRA_CFLAGS};
- $extra_cflags = "" if (!$extra_cflags);
- if ( "$whichcom" eq "GCC" ) {
- $appext = ""; # windows for now
- $compiler = "gcc -x c $extra_cflags";
- $outbin_flag = "-o ";
- $outobj_flag = "";
- $objext = ".o";
- $preprocess_flag = "-E"; # preprocess to stdout
- } elsif ( "$whichcom" eq "MSC" ) {
- $appext = ".exe"; # windows for now
- $compiler = "cl -nologo";
- $outbin_flag = "-Fe";
- $outobj_flag = "-Fo";
- $objext = ".obj";
- $preprocess_flag = "-EP"; # preprocess to stdout
- $solarincludes =~ s/\/stl/\/xstlx/g;
- $defs =~ s/\/stl/\/xstlx/g;
- } elsif ( "$whichcom" eq "C52" ) {
- $appext = ""; # windows for now
- $compiler = "cc";
- $outbin_flag = "-o ";
- $outobj_flag = "";
- $objext = ".o";
- $preprocess_flag = "-E"; # preprocess to stdout
-
- # hack for SO cc wrapper
- $ENV{wrapper_override_cc_wrapper} = "TRUE";
- $solarincludes =~ s/stl/xstlx/g;
- $defs =~ s/\/stl/\/xstlx/g;
- } else {
- print STDERR "----------------------------------------------------------------------\n";
- print STDERR "OOops... looks like your compiler isn't known to \n$0\n";
- print STDERR "please edit the \"setcompiler\" section of this script to make it work.\n";
- print STDERR "----------------------------------------------------------------------\n";
- die "ERROR - compiler (or \$COM settings) unknown!\n";
- }
-}
-
-#---------------------------------------------------
-$filename = undef;
-$srs = undef;
-$prjname = undef;
-
-my @expectedArgs = ( \$filename, \$srs, \$prjname );
-my $expectedArgsIndex = 0;
-while ( ( $#ARGV >= 0 ) && ( $expectedArgsIndex < 3 ) )
-{
- $_ = shift @ARGV;
- if ( /^-verbose$/ )
- {
- $verbose = 1;
- next;
- }
- ${$expectedArgs[ $expectedArgsIndex ]} = $_;
- ++$expectedArgsIndex;
-}
-
-$defs = join " ",@ARGV if ($#ARGV);
-
-if ( !defined $prjname ) { die "ERROR - check usage\n"; }
-
-if ( $ENV{NO_HID_FILES} ) {
- $no_hid_files = $ENV{"NO_HID_FILES"};
-}
-$solarincludes = $ENV{SOLARINCLUDES};
-if (defined $ENV{TMPDIR}) {
- $tmpdir = $ENV{TMPDIR};
-} elsif (defined $ENV{TMP}) {
- $tmpdir = $ENV{TMP};
-} else {
- die "ERROR - \"TMPDIR\" & \"TMP\" environment variables not set\n";
-};
-die "ERROR - \"$tmpdir\" doesn't exist\n" if ( ! -d $tmpdir );
-
-setcompiler();
-
-# convert windows only?
-$srs =~ s/\\/\//g;
-$filename =~ s/\\/\//g;
-
-$filebase = $filename;
-$filebase =~ s/.*[\\\/]//;
-$filebase =~ s/\..*?$//;
-# now stript it to something that doesn't togger vista execution prevention :(
-$flbs = $filebase;
-$flbs =~ s/[aeiou]//g;
-# call srand ony once per script!
-srand();
-$workfile = "$tmpdir/${flbs}_".$$.rand();
-
-# now get $workfile ready for shell usage...
-$shell_workfile = $workfile;
-
-print "workfile: $workfile\n" if $verbose;
-
-#remove old objects which remained in place by a former bug
-unlink "$workfile.obj";
-
-# can't do this for modules with mixed case!
-
-if ( -f "$workfile.hid" )
-{
- unlink "$workfile.hid" or die "ERRROR - cannot remove $workfile.hid\n";
-}
-
-# hack to quit for files which cannot be handled
-if ( defined $ENV{"NO_HID_FILES"} ) {
- foreach $fname ( split / /, $ENV{"NO_HID_FILES"} )
- {
- if ( $fname eq $filename )
- {
- print "No hid generation for $filename due to NO_HID_FILES\n";
- print "Touching $srs/$filebase.hid anyways\n";
- open TOUCH, ">$srs/$filebase.hid" or die "ERRROR - cannot open $srs/$filebase.hid for writing\n";
- close TOUCH;
- exit 0;
- }
- }
-}
-
-my $verboseSwitch = $verbose ? "-verbose" : "";
-print "$ENV{SOLARBINDIR}/hidc $verboseSwitch $filename ${shell_workfile}.c1 $prjname\n" if $verbose;
-$ret = system "$ENV{SOLARBINDIR}/hidc $verboseSwitch $filename ${shell_workfile}.c1 $prjname";
-if ( $ret ) {
- push @cleanuplist, ".c1";
- cleandie("ERROR - calling \"hidc\" failed");
-}
-push @cleanuplist, ".c1";
-
-print "$compiler $defs $solarincludes $preprocess_flag ${shell_workfile}.c1 > ${shell_workfile}.c2\n" if $verbose;
-$ret = system "$compiler $defs $solarincludes $preprocess_flag ${shell_workfile}.c1 > ${shell_workfile}.c2";
-if ( $ret ) {
- push @cleanuplist, ".c2";
- cleandie("ERROR - calling compiler for preprocessing failed");
-}
-push @cleanuplist, ".c2";
-
-if (!open C_PROG, ">$workfile.c") {
- push @cleanuplist, ".c";
- cleandie("ERROR - open $workfile.c\n for writing failed");
-}
-push @cleanuplist, ".c";
-print C_PROG "#include <stdio.h>\n";
-print C_PROG "#include <wctype.h>\n";
-
-if ( !open PRE, "<$workfile.c2" ) {
- cleandie("ERROR - open $workfile.c2\n for reading failed");
-}
-
-$InMain = 0;
-while (<PRE>)
-{
- if ( /int\s*main/ )
- {
- $InMain = 1;
- }
-
- if ( $InMain && !/^\s*$/ )
- {
- print C_PROG;
- }
-}
-
-close PRE;
-close C_PROG;
-
-#cl %SOLARINCLUDES% %_srs%\%_workfile%.c /Fe%_srs%\%_workfile%$appext
-my $outobj_param = "";
-if ( $outobj_flag ne "" )
-{
- $outobj_param = "$outobj_flag${shell_workfile}$objext";
-}
-print "$compiler $defs $solarincludes ${shell_workfile}.c $outobj_param $outbin_flag${shell_workfile}$appext \n" if $verbose;
-$ret = system "$compiler $defs $solarincludes ${shell_workfile}.c $outobj_param $outbin_flag${shell_workfile}$appext";
-if ( $ret ) {
- push @cleanuplist, "$appext";
- cleandie("ERROR - compiling $workfile.c failed");
-}
-push @cleanuplist, "$objext";
-push @cleanuplist, "$appext";
-
-#awk -f %ENV_TOOLS%\hidcode.awk < %srs%\%workfile%.c3 > %srs%\%workfile%.hid
-if ( !open C3,"$workfile$appext|" ) {
- cleandie("ERROR - executing $workfile$appext failed");
-}
-if ( !open HID,">$srs/$filebase.hid.$ENV{INPATH}" ) {
- cleandie("ERROR - open $srs/$filebase.hid.$ENV{INPATH} for writing failed");
-}
-
-while (<C3>)
-{
- @fields = split /\s+/;
-
- if ( $fields[1] eq "HelpID" )
- {
- print HID "$fields[0] $fields[2]\n";
- next;
- }
-
- @arr = split /:/, $fields[0];
- if( $arr[1] =~ /^leer$|^bitmap$|^font$|^color$|^image$|^imagelist$|^date$|^brush$|^fixedtext$|^keycode$|^time$|^mapmode$/i )
- {
- next;
- }
-
- if ( $fields[1] eq "Norm" )
- {
- # Felder der Zeile auf Variable verteilen
- $helpIDString = $fields[0];
- $GClass = lc($fields[2]);
- $GID = $fields[3];
- $LClass = lc($fields[4]);
- $LID = $fields[5] || 0;
-
- $nHID=0;
-
- $VAL1 = 536870912; #2 hoch 29
- if ( $GClass eq "workwindow" ) { $nHID= $VAL1 *5; }
- elsif( $GClass eq "modelessdialog" ) { $nHID= $VAL1 *4; }
- elsif( $GClass eq "floatingwindow" ) { $nHID= $VAL1 *3; }
- elsif( $GClass eq "modaldialog" ) { $nHID= $VAL1 *2; }
- elsif( $GClass eq "tabpage" ) { $nHID= $VAL1 *1; }
- elsif( $GClass eq "dockingwindow" ) { $nHID= $VAL1 *6; }
- #Maximal bis 7 dann sind 32Bit ausgeschoepft
- else {
- $nHID=0;
- $outline = "No GClass ".$helpIDString." ".$nHID." ".$GClass;
- next;
- }
- if( $LID != 0 ) {
- if ( $LClass eq "tabcontrol" ) { $nHID += 0; }
- elsif( $LClass eq "radiobutton" ) { $nHID += 2*256; }
- elsif( $LClass eq "checkbox" ) { $nHID += 4*256; }
- elsif( $LClass eq "tristatebox" ) { $nHID += 6*256; }
- elsif( $LClass eq "edit" ) { $nHID += 8*256; }
- elsif( $LClass eq "multilineedit" ) { $nHID += 10*256; }
- elsif( $LClass eq "multilistbox" ) { $nHID += 12*256; }
- elsif( $LClass eq "listbox" ) { $nHID += 14*256; }
- elsif( $LClass eq "combobox" ) { $nHID += 16*256; }
- elsif( $LClass eq "pushbutton" ) { $nHID += 18*256; }
- elsif( $LClass eq "spinfield" ) { $nHID += 20*256; }
- elsif( $LClass eq "patternfield" ) { $nHID += 22*256; }
- elsif( $LClass eq "numericfield" ) { $nHID += 24*256; }
- elsif( $LClass eq "metricfield" ) { $nHID += 26*256; }
- elsif( $LClass eq "currencyfield" ) { $nHID += 28*256; }
- elsif( $LClass eq "datefield" ) { $nHID += 30*256; }
- elsif( $LClass eq "timefield" ) { $nHID += 32*256; }
- elsif( $LClass eq "imageradiobutton" ) { $nHID += 34*256; }
- elsif( $LClass eq "numericbox" ) { $nHID += 36*256; }
- elsif( $LClass eq "metricbox" ) { $nHID += 38*256; }
- elsif( $LClass eq "currencybox" ) { $nHID += 40*256; }
- elsif( $LClass eq "datebox" ) { $nHID += 42*256; }
- elsif( $LClass eq "timebox" ) { $nHID += 44*256; }
- elsif( $LClass eq "imagebutton" ) { $nHID += 46*256; }
- elsif( $LClass eq "menubutton" ) { $nHID += 48*256; }
- elsif( $LClass eq "morebutton" ) { $nHID += 50*256; }
- else {
- $nHID=0;
- $outline = "No LClass ".$helpIDString." ".$nHID;
- next;
- }
-
- #GID und LID auch beruecksichtigen
- $nHID += $LID;
- }
- $nHID += $GID * 16384; #14 Bit nach links shiften
-
- # check here and not above to avoid warnings for restypes not generated anyways
- if( $GID == 0 || $GID >32767 || $LID > 511 )
- {
- #GID & LID ungueltig
- print STDERR "Invalid Global or Local ID: 0 < GID <= 32767 ; LID <= 511\n";
- print STDERR "$helpIDString GID = $GID; LID = $LID\n";
- next;
- }
-
- #
- # 1. Stelle selber ausgeben, falls groesser als 2^21
- # wg. problemen von awk/gawk bei printf mit %u
- #
- $x=0;
- if( $nHID >= 4000000000 ) {
- $nHID -= 4000000000;
- $x=4;
- }elsif( $nHID >= 3000000000) {
- $nHID -= 3000000000;
- $x=3;
- }elsif( $nHID >= 2000000000) {
- $nHID -= 2000000000;
- $x=2;
- }
- if( $x != 0)
- { printf HID "%s %d%u \n",$helpIDString,$x, $nHID; }
- else
- { printf HID "%s %u \n",$helpIDString, $nHID; }
- }
-}
-
-close C3;
-close HID;
-
-rename("$srs/$filebase.hid.$ENV{INPATH}", "$srs/$filebase.hid") or cleandie("ERROR - couldn't rename tmp file to final for $filebase");
-
-if ( not $debug ) {
- foreach my $i (@cleanuplist) {
- sleep 1;
- if ( -f "$workfile$i" ) {
- unlink "$workfile$i" or cleandie("");
- }
- }
-}
diff --git a/solenv/bin/modules/CreatePDBRelocators.pm b/solenv/bin/modules/CreatePDBRelocators.pm
index c31e3a053b0c..753075a2bfea 100644
--- a/solenv/bin/modules/CreatePDBRelocators.pm
+++ b/solenv/bin/modules/CreatePDBRelocators.pm
@@ -45,8 +45,11 @@ sub new
{
my $Object = shift;
my $solarversion = shift;
+ my $workdir;
+ my $relworkdir;
my $self = {};
- my @repositories;
+ my @basedirs;
+ my @repos;
if (!defined ($solarversion)) {
$solarversion = $ENV{SOLARVERSION};
@@ -58,14 +61,33 @@ sub new
$self->{SOLARVERSION} = $solarversion;
- my $SourceConfigObj = SourceConfig->new();
- @repositories = $SourceConfigObj->get_repositories();
+ $workdir = $ENV{WORKDIR};
+ if ( !$workdir ) {
+ print STDERR "can't determine WORKDIR.\n";
+ exit (1);
+ }
- if (!scalar @repositories) {
- print STDERR "no repository and no working directory found.\n";
+ if ( $workdir =~ /^$solarversion/ ) {
+ $relworkdir = $workdir;
+ $relworkdir =~ s/^$solarversion\///;
+ } else {
+ print STDERR "ERROR: workdir outside $solarversion unsupported\n";
+ exit (2);
+ }
+ my $SourceConfigObj = SourceConfig->new();
+ @repos = $SourceConfigObj->get_repositories();
+ if ( defined $ENV{UPDMINOREXT} ) {
+ foreach my $onedir ( @repos ) {
+ push( @basedirs, $onedir.$ENV{UPDMINOREXT} );
+ }
+ }
+ # basdirs is repositories (dmake) + workdir (gnu make)
+ push(@basedirs, $relworkdir);
+ if (!scalar @basedirs) {
+ print STDERR "no basedir and no working directory found.\n";
exit (2);
}
- $self->{REPOSITORIES} = \@repositories;
+ $self->{BASEDIRS} = \@basedirs;
bless($self, $Object);
return $self;
}
@@ -106,10 +128,10 @@ sub create_pdb_relocators
}
# collect files
- foreach my $repository (@{$self->{REPOSITORIES}}) {
+ foreach my $basedir (@{$self->{BASEDIRS}}) {
my @pdb_files;
- my $o = $self->{SOLARVERSION} . "/$repository";
- $repository =~ s/(.*?)\.(.*)/$1/;
+ my $o = $self->{SOLARVERSION} . "/$basedir";
+ $basedir =~ s/(.*?)\.(.*)/$1/;
$self->collect_files( $o, $inpath, \@pdb_files);
foreach (@pdb_files) {
@@ -122,12 +144,12 @@ sub create_pdb_relocators
my $target = "";
if ( $src_location =~ /\/so\// )
{
- $location = "../../../$repository$milestoneext/" . $src_location;
+ $location = "../../../$basedir$milestoneext/" . $src_location;
$target = "$pdb_dir/so/$relocator";
}
else
{
- $location = "../../$repository$milestoneext/" . $src_location;
+ $location = "../../$basedir$milestoneext/" . $src_location;
$target = "$pdb_dir/$relocator";
}
@@ -142,14 +164,14 @@ sub create_pdb_relocators
return 1;
}
-sub collect_files_from_all_repositories
+sub collect_files_from_all_basedirs
{
my $self = shift;
my ($platform, $filesref) = @_;
- my $repository;
+ my $basedir;
my $ret;
- foreach $repository (@{$self->{REPOSITORIES}}) {
- my $srcdir = $self->{SOLARVERSION} . "/$repository";
+ foreach $basedir (@{$self->{BASEDIRS}}) {
+ my $srcdir = $self->{SOLARVERSION} . "/$basedir";
$ret |= $self->collect_files ($srcdir, $platform, $filesref);
}
return $ret;
@@ -160,14 +182,16 @@ sub collect_files
my $self = shift;
my ($srcdir, $platform, $filesref) = @_;
my $template = "$srcdir/*/$platform";
+ my $template2 = "$srcdir/LinkTarget";
if ( $ENV{GUI} eq "WNT" ) {
# collect all pdb files on o:
# regular glob does not work with two wildcard on WNT
my @bin = glob("$template/bin/*.pdb");
my @bin_so = glob("$template/bin/so/*.pdb");
+ my @workdir = glob("$template2/*/*.pdb");
# we are only interested in pdb files which are accompanied by
# .exe or .dll which the same name
- foreach (@bin, @bin_so) {
+ foreach (@bin, @bin_so, @workdir) {
my $dir = dirname($_);
my $base = basename($_, ".pdb");
my $exe = "$dir/$base.exe";
@@ -180,13 +204,16 @@ sub collect_files
else {
# collect all shared libraries on o:
my @lib = glob("$template/lib/*.so*");
+ my @workdir_lib = glob("$template2/Library/*.so*");
my @lib_so = glob("$template/lib/so/*.so*");
my @mac_lib = glob("$template/lib/*.dylib*");
+ my @mac_workdir_lib = glob("$template2/Library/*.dylib*");
my @mac_lib_so = glob("$template/lib/so/*.dylib*");
# collect all binary executables on o:
my @bin = $self->find_binary_execs("$template/bin");
+ my @workdir_bin = $self->find_binary_execs("$template2/Executable");
my @bin_so = $self->find_binary_execs("$template/bin/so");
- push(@$filesref, (@lib, @lib_so, @mac_lib, @mac_lib_so, @bin, @bin_so));
+ push(@$filesref, (@lib, @lib_so, @workdir_lib, @mac_lib, @mac_workdir_lib, @mac_lib_so, @bin, @workdir_bin, @bin_so));
}
return 1;
}
diff --git a/solenv/bin/modules/RepositoryHelper.pm b/solenv/bin/modules/RepositoryHelper.pm
index 31c97e35d1c2..9bf4b841c7be 100644
--- a/solenv/bin/modules/RepositoryHelper.pm
+++ b/solenv/bin/modules/RepositoryHelper.pm
@@ -118,21 +118,26 @@ sub search_for_hg {
sub search_via_build_lst {
my $self = shift;
- my @possible_build_lists = ('build.lst', 'build.xlist'); # build lists names
+# my @possible_build_lists = ('build.lst', 'build.xlist'); # build lists names
+ my @possible_build_lists = ('build.lst'); # build lists names
my $previous_dir = '';
my $rep_root_candidate = $self->{INITIAL_DIRECTORY};
do {
foreach (@possible_build_lists) {
- if (-e $rep_root_candidate . '/prj/'.$_) {
+ my $test_file;
+ if ($rep_root_candidate eq '/') {
+ $test_file = '/prj/' . $_;
+ } else {
+ $test_file = $rep_root_candidate . '/prj/' . $_;
+ };
+ if (-e $test_file) {
$self->{REPOSITORY_ROOT} = File::Basename::dirname($rep_root_candidate);
return 1;
- } elsif ($rep_root_candidate eq $previous_dir) {
- return 0;
};
};
$previous_dir = $rep_root_candidate;
$rep_root_candidate = File::Basename::dirname($rep_root_candidate);
- return 0 if (!$rep_root_candidate);
+ return 0 if ((!$rep_root_candidate) || ($rep_root_candidate eq $previous_dir));
}
while (chdir "$rep_root_candidate");
};
diff --git a/solenv/bin/modules/SourceConfig.pm b/solenv/bin/modules/SourceConfig.pm
index dfaa797d8f48..e7b526e2cfca 100755
--- a/solenv/bin/modules/SourceConfig.pm
+++ b/solenv/bin/modules/SourceConfig.pm
@@ -320,14 +320,14 @@ sub read_config_file {
next;
};
};
- croak("Line $line in " . $self->{SOURCE_CONFIG_FILE} . 'violates format. Please make your checks!!');
+ croak("Line $line in " . $self->{SOURCE_CONFIG_FILE} . ' violates format. Please make your checks!');
};
close SOURCE_CONFIG_FILE;
if (!scalar keys %{$self->{REPOSITORIES}}) {
get_fallback_repository($self);
};
} else {
- croak('Cannot open ' . $self->{SOURCE_CONFIG_FILE} . 'for reading');
+ croak('Cannot open ' . $self->{SOURCE_CONFIG_FILE} . ' for reading');
};
};
@@ -388,7 +388,18 @@ sub add_active_repositories {
sub add_active_modules {
my $self = shift;
- $self->{NEW_MODULES} = shift;
+ my $module_list_ref = shift;
+ my $ignored_modules_string = '';
+ my @real_modules = ();
+ foreach my $module (sort @$module_list_ref) {
+ if ($self->get_module_path($module)) {
+ push(@real_modules, $module);
+ } else {
+ $ignored_modules_string .= " $module";
+ };
+ };
+ push (@{$self->{WARNINGS}}, "\nWARNING: following modules are not found in active repositories, and have not been added to the " . $self->get_config_file_default_path() . ":$ignored_modules_string\n") if ($ignored_modules_string);
+ $self->{NEW_MODULES} = \@real_modules;
croak('Empty module list passed for addition to source_config') if (!scalar @{$self->{NEW_MODULES}});
$self->{VERBOSE} = shift;
generate_config_file($self);
diff --git a/solenv/bin/modules/SourceConfigHelper.pm b/solenv/bin/modules/SourceConfigHelper.pm
new file mode 100644
index 000000000000..84ffbe0ca3f7
--- /dev/null
+++ b/solenv/bin/modules/SourceConfigHelper.pm
@@ -0,0 +1,422 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+#*************************************************************************
+#
+# SourceConfigHelper - Perl extension for parsing general info databases
+#
+# usage: see below
+#
+#*************************************************************************
+
+package SourceConfigHelper;
+
+use strict;
+
+use RepositoryHelper;
+use SourceConfig;
+use Cwd qw (cwd);
+use Carp;
+
+my $debug = 0;
+my @source_config_list; # array of sourceconfig objects
+
+#-----------------------------------------------------------------------
+# Constants
+#-----------------------------------------------------------------------
+
+use constant SOURCE_CONFIG_NONE => 0;
+use constant SOURCE_CONFIG_CURRENT_FIRST => 1;
+use constant SOURCE_CONFIG_ENVIRONMENT_FIRST => 2;
+use constant SOURCE_CONFIG_CURRENT_ONLY => 3;
+use constant SOURCE_CONFIG_ENVIRONMENT_ONLY => 4;
+
+use constant SOURCE_CONFIG_DEFAULT => SOURCE_CONFIG_CURRENT_FIRST;
+
+##### profiling #####
+
+##### ctor #####
+
+sub new {
+ my $proto = shift;
+ my $class = ref($proto) || $proto;
+ my $init_action = shift;
+ my $self = {};
+ my $SourceConfigCurrent;
+ my $SourceConfigEnvironment;
+
+ $init_action = SOURCE_CONFIG_DEFAULT if (!defined ($init_action));
+ if (!eval ($init_action) or ($init_action < SOURCE_CONFIG_NONE) or ($init_action > SOURCE_CONFIG_ENVIRONMENT_ONLY)) {
+ croak("wrong initial parameter: $init_action\n");
+ }
+
+ if ($init_action != SOURCE_CONFIG_NONE) {
+ my $repositoryHash_ref = {};
+ if ($init_action != SOURCE_CONFIG_ENVIRONMENT_ONLY) {
+ my $initial_directory = cwd();
+ my $result = is_repository($initial_directory, $repositoryHash_ref);
+ if ($result) {
+ $SourceConfigCurrent = SourceConfig->new($repositoryHash_ref->{REPOSITORY_ROOT});
+ }
+ }
+ if ($init_action != SOURCE_CONFIG_CURRENT_ONLY) {
+ my $source_config = $ENV{SOURCE_ROOT_DIR} . '/' . SourceConfig::SOURCE_CONFIG_FILE_NAME;
+ if (-f $source_config) {
+ $SourceConfigEnvironment = SourceConfig->new($source_config);
+ }
+ }
+
+ # fill array
+
+ if (($init_action == SOURCE_CONFIG_CURRENT_FIRST) or ($init_action == SOURCE_CONFIG_CURRENT_ONLY)) {
+ if (defined ($SourceConfigCurrent)) {
+ push (@source_config_list, $SourceConfigCurrent);
+ }
+ if ($init_action == SOURCE_CONFIG_CURRENT_FIRST) {
+ if (defined ($SourceConfigEnvironment)) {
+ push (@source_config_list, $SourceConfigEnvironment);
+ }
+ }
+ }
+ elsif (($init_action == SOURCE_CONFIG_ENVIRONMENT_FIRST) or ($init_action == SOURCE_CONFIG_ENVIRONMENT_ONLY)) {
+ if (defined ($SourceConfigEnvironment)) {
+ push (@source_config_list, $SourceConfigEnvironment);
+ }
+ if ($init_action == SOURCE_CONFIG_ENVIRONMENT_FIRST) {
+ if (defined ($SourceConfigCurrent)) {
+ push (@source_config_list, $SourceConfigCurrent);
+ }
+ }
+ }
+ }
+
+ $self->{SOURCE_CONFIG_LIST} = \@source_config_list;
+
+ bless($self, $class);
+ return $self;
+}
+
+##### methods #####
+
+############################################################################################
+
+sub add_SourceConfig {
+ my $self = shift;
+ my $source_config = shift;
+ push (@{$self->{SOURCE_CONFIG_LIST}}, $source_config);
+}
+
+############################################################################################
+
+sub get_SourceConfigList {
+ my $self = shift;
+ return @{$self->{SOURCE_CONFIG_LIST}};
+}
+
+############################################################################################
+
+sub has_SourceConfig {
+ my $self = shift;
+ my $result = 0;
+ my $count = @{$self->{SOURCE_CONFIG_LIST}};
+ $result = 1 if ($count > 0);
+ return $result;
+}
+
+############################################################################################
+
+sub get_module_path {
+ my $self = shift;
+ my $module = shift;
+ my $function = \&SourceConfig::get_module_path;
+ my $result;
+ $result = $self->get_StringResult ($function, $module);
+ return $result;
+}
+
+############################################################################################
+
+sub get_active_modules {
+ my $self = shift;
+ my $parameter; # empty
+ my $function = \&SourceConfig::get_active_modules;
+ my $array_ref;
+ $array_ref = $self->get_ArrayResult ($function, $parameter);
+ return @$array_ref;
+}
+
+############################################################################################
+
+sub get_repositories {
+ my $self = shift;
+ my $parameter; # empty
+ my $function = \&SourceConfig::get_repositories;
+ my $array_ref;
+ $array_ref = $self->get_ArrayResult ($function, $parameter);
+ return @$array_ref;
+}
+
+############################################################################################
+
+sub get_module_repository {
+ my $self = shift;
+ my $module = shift;
+ my $function = \&SourceConfig::get_module_repository;
+ my $result;
+ $result = $self->get_StringResult ($function, $module);
+ return $result;
+}
+
+############################################################################################
+
+sub is_active {
+ my $self = shift;
+ my $module = shift;
+ my $function = \&SourceConfig::is_active;
+ my $result_ref;
+ my $is_active = 0;
+ $result_ref = $self->get_ResultOfList ($function, $module);
+ my $count = @$result_ref;
+ if ($count>0) {
+ foreach my $active (@$result_ref) {
+ if ($active) {
+ $is_active = $active;
+ }
+ }
+ }
+ return $is_active;
+}
+
+##### private methods #####
+
+############################################################################################
+#
+# is_repository () : check if the directory is a valid repository
+#
+# input: - directory
+# - hash reference, where the output will be stored
+#
+# output: 0 = FALSE, the directory is no valid repository
+# 1 = TRUE, the repository root can be found in $repositoryHash_ref->{REPOSITORY_ROOT}
+#
+############################################################################################
+
+sub is_repository {
+ my $directory = shift;
+ my $repositoryHash_ref = shift;
+ $repositoryHash_ref->{INITIAL_DIRECTORY} = $directory;
+ $repositoryHash_ref->{REPOSITORY_ROOT} = undef;
+ $repositoryHash_ref->{REPOSITORY_NAME} = undef;
+ my $result = RepositoryHelper::search_via_build_lst($repositoryHash_ref);
+ chdir $repositoryHash_ref->{INITIAL_DIRECTORY};
+ if (!$result) {
+ $result = RepositoryHelper::search_for_hg($repositoryHash_ref);
+ }
+ return $result;
+}
+
+############################################################################################
+#
+# get_ResultOfList(): give back an array reference from all SourceConfig Objects results
+#
+# input: - function : reference to the called function of each SourceConfig Object
+# - parameter : parameter for the called function
+#
+# output: result : array of all results
+#
+############################################################################################
+
+sub get_ResultOfList {
+ my $self = shift;
+ my $function = shift;
+ my $parameter = shift;
+ my @result;
+ foreach my $source_config (@{$self->{SOURCE_CONFIG_LIST}}) {
+ push (@result, &$function ($source_config, $parameter));
+ }
+ return \@result;
+}
+
+############################################################################################
+#
+# get_StringResult(): give back the first defined result from all SourceConfig Objects
+#
+# input: - function : reference to the called function of each SourceConfig Object
+# - parameter : parameter for the called function
+#
+# output: result : scalar variable (string), undef if no result
+#
+############################################################################################
+
+sub get_StringResult {
+ my $self = shift;
+ my $function = shift;
+ my $parameter = shift;
+ my $result_ref;
+ $result_ref = $self->get_ResultOfList ($function, $parameter);
+ my $count = @$result_ref;
+ if ($count>0) {
+ my $value;
+ my $i = 0;
+ while (($i < $count) and !defined ($value)) { # search the first defined result
+ $value = $$result_ref[$i];
+ $i++;
+ }
+ return $value;
+ }
+ return undef;
+}
+
+############################################################################################
+#
+# get_StringResult(): give back a sorted and uniqe array reference of the results
+# from all SourceConfig Objects
+#
+# input: - function : reference to the called function of each SourceConfig Object
+# - parameter : parameter for the called function
+#
+# output: result : sorted and uniqe array reference
+#
+############################################################################################
+
+sub get_ArrayResult {
+ my $self = shift;
+ my $function = shift;
+ my $parameter = shift;
+ my $result_ref;
+ my @modules;
+ $result_ref = $self->get_ResultOfList ($function, $parameter);
+ my $count = @$result_ref;
+ if ($count>0) {
+ my %moduleHash;
+ foreach my $module (@$result_ref) {
+ $moduleHash{$module}++;
+ }
+ @modules = sort keys %moduleHash;
+ }
+ return \@modules;
+}
+
+ ##### finish #####
+
+1; # needed by use or require
+
+__END__
+
+=head1 NAME
+
+SourceConfigHelper - Perl extension for handling with SourceConfigObjetcs
+
+=head1 SYNOPSIS
+
+ # example that will read source_config file and return the active repositories
+
+ use SourceConfigHelper;
+
+ # Create a new instance:
+ $a = SourceConfigHelper->new();
+
+ # Get repositories for the actual workspace:
+ $a->get_repositories();
+
+=head1 DESCRIPTION
+
+SourceConfigHelper is a perl extension to handle more than one objects of SourceConfig
+to set up a search order for modules.
+
+Methods:
+
+SourceConfigHelper::new()
+
+Creates a new instance of SourceConfigHelper. Can be initialized by: default - empty or with a constant of search order. default: the source_config will be taken first from the current repository and second from the environment
+Possible parameters are:
+SourceConfigHelper::SOURCE_CONFIG_NONE - no SourceConfig Object will be created
+SourceConfigHelper::SOURCE_CONFIG_CURRENT_FIRST - use the current repository first
+SourceConfigHelper::SOURCE_CONFIG_ENVIRONMENT_FIRST - use the repository of the environment first
+SourceConfigHelper::SOURCE_CONFIG_CURRENT_ONLY - use only the current repository
+SourceConfigHelper::SOURCE_CONFIG_ENVIRONMENT_ONLY - use only the repository of the environment
+
+SourceConfigHelper::get_repositories()
+
+Returns sorted list of active repositories for the actual workspace
+
+SourceConfigHelper::get_active_modules()
+
+Returns a sorted list of active modules
+
+SourceConfigHelper::get_all_modules()
+
+Returns sorted list of all modules in active repositories.
+
+SourceConfigHelper::get_module_path($module)
+
+Returns absolute module path. If the module is not active or don't exists, "undef" will be returned.
+
+SourceConfigHelper::get_module_repository($module)
+
+Returns the module's repository. If the module is not active or don't exists, "undef" will be returned.
+
+SourceConfigHelper::is_active()
+
+Returns 1 (TRUE) if a module is active
+Returns 0 (FALSE) if a module is not active
+
+SourceConfigHelper::add_SourceConfig($SourceConfigObject)
+
+Add the SourceConfigObject to the end of the list
+
+SourceConfigHelper::get_SourceConfigList()
+
+Return an array of SourceConfigObjects
+
+SourceConfigHelper::has_SourceConfig()
+
+Returns 1 (TRUE) if one or more SourceConfig Objects is in the list
+Returns 0 (FALSE) if no SourceConfig Object is in the list (can happen if there is no valid repository)
+
+=head2 EXPORT
+
+SourceConfigHelper::new()
+SourceConfigHelper::get_repositories()
+SourceConfigHelper::get_active_modules()
+SourceConfigHelper::get_all_modules()
+SourceConfigHelper::get_module_path($module)
+SourceConfigHelper::get_module_repository($module)
+SourceConfigHelper::is_active($module)
+SourceConfigHelper::add_SourceConfig($SourceConfigObject)
+SourceConfigHelper::get_SourceConfigList()
+SourceConfigHelper::has_SourceConfig()
+
+=head1 AUTHOR
+
+Kurt Zenker, kz@openoffice.org
+
+=head1 SEE ALSO
+
+perl(1).
+
+=cut
diff --git a/solenv/bin/modules/installer/control.pm b/solenv/bin/modules/installer/control.pm
index 9fdfae4d9c66..3f6b43f563fb 100644
--- a/solenv/bin/modules/installer/control.pm
+++ b/solenv/bin/modules/installer/control.pm
@@ -320,6 +320,11 @@ sub check_logfile
my @output = ();
my $contains_error = 0;
+ my $ignore_error = 0;
+ my $make_error_to_warning = 0;
+
+ if (( ! $installer::globals::pro ) && ( $installer::globals::ignore_error_in_logfile )) { $ignore_error = 1; }
+
for ( my $i = 0; $i <= $#{$logfile}; $i++ )
{
my $line = ${$logfile}[$i];
@@ -337,6 +342,12 @@ sub check_logfile
{
$contains_error = 1;
push(@errors, $line);
+
+ if ( $ignore_error )
+ {
+ $contains_error = 0;
+ $make_error_to_warning = 1;
+ }
}
}
@@ -358,7 +369,26 @@ sub check_logfile
}
else
{
- my $line = "\n***********************************************************\n";
+ my $line = "";
+
+ if ( $make_error_to_warning )
+ {
+ $line = "\n*********************************************************************\n";
+ push(@output, $line);
+ $line = "The following errors in the log file were ignored:\n\n";
+ push(@output, $line);
+
+ for ( my $i = 0; $i <= $#errors; $i++ )
+ {
+ $line = "$errors[$i]";
+ push(@output, $line);
+ }
+
+ $line = "*********************************************************************\n";
+ push(@output, $line);
+ }
+
+ $line = "\n***********************************************************\n";
push(@output, $line);
$line = "Successful packaging process!\n";
push(@output, $line);
diff --git a/solenv/bin/modules/installer/environment.pm b/solenv/bin/modules/installer/environment.pm
index 4b4d93aa3723..5c8c4ab25e40 100644
--- a/solenv/bin/modules/installer/environment.pm
+++ b/solenv/bin/modules/installer/environment.pm
@@ -115,9 +115,6 @@ sub set_global_environment_variables
if ( $ENV{'LAST_MINOR'} ) { $installer::globals::lastminor = $ENV{'LAST_MINOR'}; }
if ( $ENV{'PROEXT'} ) { $installer::globals::pro = 1; }
- if ( $ENV{'SOLAR_JAVA'} ) { $installer::globals::solarjava = 1; }
- if ( $ENV{'JDKLIB'} ) { $installer::globals::jdklib = $ENV{'JDKLIB'}; }
- if ( $ENV{'JREPATH'} ) { $installer::globals::jrepath = $ENV{'JREPATH'}; }
if ( $ENV{'VERBOSE'} && ( (lc $ENV{'VERBOSE'}) eq "false" ) ) { $installer::globals::quiet = 1; }
if ( $ENV{'PREPARE_WINPATCH'} ) { $installer::globals::prepare_winpatch = 1; }
@@ -129,6 +126,7 @@ sub set_global_environment_variables
if ( $ENV{'SOLAR_JAVA'} ) { $installer::globals::solarjavaset = 1; }
if ( $ENV{'RPM'} ) { $installer::globals::rpm = $ENV{'RPM'}; }
if ( $ENV{'DONTCOMPRESS'} ) { $installer::globals::solarisdontcompress = 1; }
+ if ( $ENV{'IGNORE_ERROR_IN_LOGFILE'} ) { $installer::globals::ignore_error_in_logfile = 1; }
if (( $ENV{'DISABLE_STRIP'} ) && ( $ENV{'DISABLE_STRIP'} ne '' )) { $installer::globals::strip = 0; }
if ( $installer::globals::localinstalldir ) { $installer::globals::localinstalldirset = 1; }
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 0d3bc2603f6b..6b82c17885d0 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -87,7 +87,8 @@ BEGIN
"oc",
"ml",
"as",
- "ast"
+ "ast",
+ "ht"
);
@items_at_modules = ("Files", "Dirs", "Unixlinks");
@asianlanguages = ("ja", "ko", "zh-CN", "zh-TW");
@@ -118,8 +119,6 @@ BEGIN
$dounzip = 1;
$languages_defined_in_productlist = 0;
$setupscript_defined_in_productlist = 0;
- $services_rdb_created = 0;
- $servicesrdb_can_be_created = 0;
$islinux = 0;
$issolaris = 0;
$ismacosx = 0;
@@ -238,9 +237,6 @@ BEGIN
$creating_windows_installer_patch = 0;
$strip = 1;
- $solarjava = 0;
- $jdklib = "";
- $jrepath = "";
$globallogging = 0;
$globalloggingform21 = 1;
@@ -248,6 +244,7 @@ BEGIN
@logfileinfo = ();
@errorlogfileinfo = ();
@globallogfileinfo = ();
+ $ignore_error_in_logfile = 0;
$exitlog = "";
$globalinfo_copied = 0;
$quiet = 0;
@@ -378,6 +375,10 @@ BEGIN
%spellcheckerlanguagehash = ();
%spellcheckerfilehash = ();
$registryrootcomponent = "";
+ %allcomponents = ();
+ %allcomponents_in_this_database = ();
+ %allshortcomponents = ();
+ %alluniquedirectorynames = ();
$installlocationdirectory = "";
$installlocationdirectoryset = 0;
@@ -409,9 +410,6 @@ BEGIN
%usedtreeconditions = ();
%moduledestination = ();
- $unomaxservices = 1800; # regcomp -c argument length
- $javamaxservices = 15;
-
$one_cab_file = 0;
$fix_number_of_cab_files = 1;
$cab_file_per_component = 0;
@@ -454,8 +452,6 @@ BEGIN
@solarispatchfiles = (".diPatch", "patchinfo");
@environmentvariables = ( "SOLARVERSION", "GUI", "WORK_STAMP", "OUTPATH", "LOCAL_OUT", "LOCAL_COMMON_OUT" );
@packagelistitems = ("module", "solarispackagename", "packagename", "copyright", "vendor", "description" );
- @regcompjars = ( "unoil.jar", "java_uno.jar", "ridl.jar", "jurt.jar", "juh.jar", "xmerge.jar", "commonwizards.jar" );
- @regcompregisterlibs = ( "javavm.uno", "javaloader.uno", "stocservices.uno" );
@languagepackfeature =();
@helppackfeature =();
@featurecollector =();
@@ -503,7 +499,6 @@ BEGIN
$separator = "/";
$pathseparator = "\:";
$libextension = "\.dll";
- $quote = "\'";
$isunix = 0;
$iswin = 1;
$archiveformat = ".zip";
@@ -528,7 +523,6 @@ BEGIN
$libextension = "\.so";
}
$archiveformat = ".tar.gz";
- $quote = "\'";
$isunix = 1;
$iswin = 0;
}
diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm
index 2d58d585599e..f17965fa3d7f 100644
--- a/solenv/bin/modules/installer/parameter.pm
+++ b/solenv/bin/modules/installer/parameter.pm
@@ -386,19 +386,6 @@ sub setglobalvariables
if ( ! $installer::globals::packageformat ) { $installer::globals::packageformat = "native"; }
- # $installer::globals::servicesrdb_can_be_created can only be set, if regcomp (regcomp.exe) can be executed.
-
- if ( $installer::globals::iswin && $installer::globals::iswindowsbuild ) { $installer::globals::servicesrdb_can_be_created = 1; }
- if ( $installer::globals::islinux && $installer::globals::islinuxbuild ) { $installer::globals::servicesrdb_can_be_created = 1; }
- if ( $installer::globals::issolaris && $installer::globals::issolarisbuild ) { $installer::globals::servicesrdb_can_be_created = 1; }
-
- # ToDo: Needs to be expanded for additional compiler (setting $installer::globals::servicesrdb_can_be_created = 1 for all external platforms)
-
- if ((!($installer::globals::iswindowsbuild)) && (!($installer::globals::islinuxbuild)) && (!($installer::globals::issolarisbuild)))
- {
- $installer::globals::servicesrdb_can_be_created = 1;
- }
-
# extension, if $installer::globals::pro is set
if ($installer::globals::pro) { $installer::globals::productextension = ".pro"; }
@@ -655,8 +642,6 @@ sub outputparameter
if ( $installer::globals::debian ) { push(@output, "Linux: Creating Debian packages\n"); }
if ( $installer::globals::dounzip ) { push(@output, "Unzip ARCHIVE files\n"); }
else { push(@output, "Not unzipping ARCHIVE files\n"); }
- if ( $installer::globals::servicesrdb_can_be_created ) { push(@output, "services.rdb can be created\n"); }
- else { push(@output, "services.rdb cannot be created !\n"); }
if (!($installer::globals::languages_defined_in_productlist))
{
push(@output, "Languages:\n");
diff --git a/solenv/bin/modules/installer/regmerge.pm b/solenv/bin/modules/installer/regmerge.pm
deleted file mode 100644
index 2f31a0bbc64c..000000000000
--- a/solenv/bin/modules/installer/regmerge.pm
+++ /dev/null
@@ -1,339 +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.
-#
-#*************************************************************************
-
-package installer::regmerge;
-
-use Cwd;
-use installer::converter;
-use installer::existence;
-use installer::exiter;
-use installer::globals;
-use installer::logger;
-use installer::pathanalyzer;
-use installer::remover;
-use installer::scriptitems;
-use installer::systemactions;
-
-################################################################
-# Collecting all files with content:
-# Regmergefile = "mydatabasepart.rdb";
-################################################################
-
-sub collect_all_regmergefiles
-{
- my ($filesarrayref) = @_;
-
- my @regmergefiles = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- if ( $onefile->{'Regmergefile'} ) { push(@regmergefiles, $onefile); }
- }
-
- return \@regmergefiles;
-}
-
-################################################################
-# Collecting all gids of the databases, that are part of
-# the file definition
-################################################################
-
-sub collect_all_database_gids
-{
- my ($filesarrayref) = @_;
-
- my @databasegids = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
-
- if ( $onefile->{'RegistryID'} )
- {
- my $databasegid = $onefile->{'RegistryID'};
- if (! installer::existence::exists_in_array($databasegid, \@databasegids)) { push(@databasegids, $databasegid); }
- }
- else
- {
- installer::exiter::exit_program("ERROR: File defintion error. File :$onefile->{'gid'} without RegistryID!", "collect_all_database_gids");
- }
- }
-
- return \@databasegids;
-}
-
-################################################################
-# Returning the database file from the files collector. In the
-# future this file does not need to exist, but currently it
-# has to exist already in the files collector.
-################################################################
-
-sub get_database_file
-{
- my ($databasegid, $filesarrayref) = @_;
-
- my $found = 0;
- my $onefile;
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- $onefile = ${$filesarrayref}[$i];
- my $gid = $onefile->{'gid'};
-
- if ( $databasegid eq $gid )
- {
- $found = 1;
- last;
- }
- }
-
- if ( ! $found ) { installer::exiter::exit_program("ERROR: Did not find StarRegistry file $databasegid!", "get_database_file"); }
-
- return $onefile;
-}
-
-################################################################
-# The regmerge file has to be found the in include pathes
-################################################################
-
-sub get_regmerge_file
-{
- my ($includepatharrayref) = @_;
-
- my $searchname;
-
- if ($installer::globals::isunix) { $searchname = "regcomplazy"; }
- else { $searchname = "regcomplazy.exe"; }
-
- my $regmergefileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$searchname, $includepatharrayref, 1);
- if ( $$regmergefileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $searchname for merging the StarRegistry!", "get_regmerge_file"); }
-
- return $$regmergefileref;
-}
-
-################################################################
-# Collecting all files that are merged to one defined
-# StarRegistry database
-################################################################
-
-sub collect_all_files_for_one_registry
-{
- my ($regmergefiles, $databasegid) = @_;
-
- my @regmergefiles = ();
-
- for ( my $i = 0; $i <= $#{$regmergefiles}; $i++ )
- {
- my $onefile = ${$regmergefiles}[$i];
- if ( $onefile->{'RegistryID'} eq $databasegid ) { push(@regmergefiles, $onefile); }
- }
-
- return \@regmergefiles;
-}
-
-################################################################
-# Collecting all particles from the regmerge files
-################################################################
-
-sub collect_all_regmerge_particles
-{
- my ($databaseregisterfiles) = @_;
-
- my @regmergeparticles = ();
-
- for ( my $i = 0; $i <= $#{$databaseregisterfiles}; $i++ )
- {
- my $onefile = ${$databaseregisterfiles}[$i];
- if ( $onefile->{'Regmergefile'} ) { push(@regmergeparticles, $onefile->{'Regmergefile'}); }
- else { installer::exiter::exit_program("ERROR: Could not find entry for \"Regmergefile\" in $onefile->{'gid'}!", "collect_all_regmerge_particles"); }
- }
-
- return \@regmergeparticles;
-}
-
-################################################################
-# Collecting all source pathes of the regmerge particles
-################################################################
-
-sub get_all_source_pathes
-{
- my ($regmergeparticles, $includepatharrayref) = @_;
-
- my @regmergeparticles = ();
-
- for ( my $i = 0; $i <= $#{$regmergeparticles}; $i++ )
- {
- my $filename = ${$regmergeparticles}[$i];
-
- my $fileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$filename, $includepatharrayref, 1);
- if ( $$fileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $filename for merging the StarRegistry!", "get_all_source_pathes"); }
-
- push(@regmergeparticles, $$fileref);
- }
-
- return \@regmergeparticles;
-}
-
-################################################################
-# Merging the rdb files into the StarRegistry database
-################################################################
-
-sub merge_files
-{
- my ($regmergefile, $databasefile, $registerfiles, $databasedir, $allvariableshashref) = @_;
-
- my $databasesource = $databasefile->{'sourcepath'};
- my $databasename = $databasefile->{'Name'};
- my $databasedest = $databasedir . $installer::globals::separator . $databasename;
-
- installer::systemactions::copy_one_file($databasesource, $databasedest);
- $databasefile->{'sourcepath'} = $databasedest; # new sourcepath for the StarRegistry file
-
- # One call for every merge particle. This is only possible, if there are only a few merge particles.
-
- my $prefix = $databasefile->{'NativeServicesURLPrefix'};
- # TODO: "NativeServicesURLPrefix" or "JavaServicesURLPrefix"
-
- my $error_occurred = 0;
-
- for ( my $i = 0; $i <= $#{$registerfiles}; $i++ )
- {
- my $registerfile = $databasedir . $installer::globals::separator . $i . ".tmp";
- open (IN, '<', $registerfiles->[$i]) or $error_occurred = 1;
- open (OUT, '>', $registerfile) or $error_occurred = 1;
- while (<IN>)
- {
- s/^ComponentName=/ComponentName=$prefix/;
- print OUT $_ or $error_occurred = 1;
- }
- close IN or $error_occurred = 1;
- close OUT or $error_occurred = 1;
-
- my $systemcall = $regmergefile . " -v " . $databasedest . " " . $registerfile . " 2\>\&1 |";
-
- my @regmergeoutput = ();
-
- my $var_library_path;
- my $old_library_path;
- if ($installer::globals::isunix) {
- $var_library_path = $installer::globals::ismacosx ?
- 'DYLD_LIBRARY_PATH' : 'LD_LIBRARY_PATH';
- $old_library_path = $ENV{$var_library_path};
- installer::servicesfile::include_libdir_into_ld_library_path(
- $var_library_path, $regmergefile);
- }
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regmergeoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- if (defined $var_library_path) {
- if (defined $old_library_path) {
- $ENV{$var_library_path} = $old_library_path;
- } else {
- delete $ENV{$var_library_path};
- }
- }
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#regmergeoutput; $j++ ) { push( @installer::globals::logfileinfo, "$regmergeoutput[$j]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- $error_occurred = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- }
-
- return $error_occurred;
-}
-
-################################################################
-# Expanding the registry database files by merging rdb files
-# into this registry database files.
-################################################################
-
-sub merge_registration_files
-{
- my ($filesarrayref, $includepatharrayref, $languagestringref, $allvariableshashref) = @_;
-
- installer::logger::include_header_into_logfile("Creating starregistry databases:");
-
- # Test if there is something to do. At least one file has to have the content:
- # Regmergefile = "mydatabasepart.rdb";
-
- my $regmergefiles = collect_all_regmergefiles($filesarrayref);
-
- if ( $#{$regmergefiles} > -1 ) # not empty -> at least one regmerge file
- {
- # prepare registration
-
- my $regmergefile = get_regmerge_file($includepatharrayref); # searching for regmerge (regcomplazy.exe)
-
- my $databasegids = collect_all_database_gids($regmergefiles);
-
- # iterating over all database gids
-
- my $regmergeerror = 0;
-
- for ( my $i = 0; $i <= $#{$databasegids}; $i++ )
- {
- $databasegid = ${$databasegids}[$i];
-
- my $databasedirname = $databasegid . "_rdb"; # <- unique!
- my $databasedir = installer::systemactions::create_directories($databasedirname, $languagestringref);
- push(@installer::globals::removedirs, $databasedir);
-
- my $databasefile = get_database_file($databasegid, $filesarrayref);
- my $databaseregisterfiles = collect_all_files_for_one_registry($regmergefiles, $databasegid);
-
- if ( $#{$databaseregisterfiles} > -1 ) # not empty -> at least one regmerge file
- {
- my $regmergeparticles = collect_all_regmerge_particles($databaseregisterfiles);
- $regmergeparticles = get_all_source_pathes($regmergeparticles, $includepatharrayref);
- my $oneregmergeerror = merge_files($regmergefile, $databasefile, $regmergeparticles, $databasedir, $allvariableshashref);
- if ($oneregmergeerror) { $regmergeerror = 1; }
- }
- }
-
- if ( $regmergeerror ) { installer::exiter::exit_program("ERROR: regmerge !", "merge_registration_files"); }
-
- }
-}
-
-1;
diff --git a/solenv/bin/modules/installer/scriptitems.pm b/solenv/bin/modules/installer/scriptitems.pm
index c23cd9e1a817..555b64196cb3 100644
--- a/solenv/bin/modules/installer/scriptitems.pm
+++ b/solenv/bin/modules/installer/scriptitems.pm
@@ -1222,7 +1222,7 @@ sub get_Source_Directory_For_Files_From_Includepathlist
my $styles = "";
my $file_can_miss = 0;
if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; }
- if (( $styles =~ /\bSTARREGISTRY\b/ ) || ( $styles =~ /\bFILE_CAN_MISS\b/ )) { $file_can_miss = 1; }
+ if ( $styles =~ /\bFILE_CAN_MISS\b/ ) { $file_can_miss = 1; }
if (( $installer::globals::languagepack ) && ( ! $onefile->{'ismultilingual'} ) && ( ! ( $styles =~ /\bFORCELANGUAGEPACK\b/ ))) { $file_can_miss = 1; }
if (( $installer::globals::helppack ) && ( ! $onefile->{'ismultilingual'} ) && ( ! ( $styles =~ /\bFORCEHELPPACK\b/ ))) { $file_can_miss = 1; }
@@ -1350,12 +1350,21 @@ sub remove_Files_Without_Sourcedirectory
if ($sourcepath eq "")
{
my $styles = $onefile->{'Styles'};
+ my $filename = $onefile->{'Name'};
- if ( ! ( $styles =~ /\bSTARREGISTRY\b/ )) # StarRegistry files will be created later
+ if ( ! $installer::globals::languagepack && !$installer::globals::helppack)
{
- my $filename = $onefile->{'Name'};
+ $infoline = "ERROR: Removing file $filename from file list.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+
+ push(@missingfiles, "ERROR: File not found: $filename\n");
+ $error_occurred = 1;
- if ( ! $installer::globals::languagepack && !$installer::globals::helppack)
+ next; # removing this file from list, if sourcepath is empty
+ }
+ elsif ( $installer::globals::languagepack ) # special case for language packs
+ {
+ if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCELANGUAGEPACK\b/ ))
{
$infoline = "ERROR: Removing file $filename from file list.\n";
push( @installer::globals::logfileinfo, $infoline);
@@ -1365,51 +1374,38 @@ sub remove_Files_Without_Sourcedirectory
next; # removing this file from list, if sourcepath is empty
}
- elsif ( $installer::globals::languagepack ) # special case for language packs
+ else
{
- if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCELANGUAGEPACK\b/ ))
- {
- $infoline = "ERROR: Removing file $filename from file list.\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- push(@missingfiles, "ERROR: File not found: $filename\n");
- $error_occurred = 1;
-
- next; # removing this file from list, if sourcepath is empty
- }
- else
- {
- $infoline = "INFO: Removing file $filename from file list. It is not language dependent.\n";
- push( @installer::globals::logfileinfo, $infoline);
- $infoline = "INFO: It is not language dependent and can be ignored in language packs.\n";
- push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "INFO: Removing file $filename from file list. It is not language dependent.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "INFO: It is not language dependent and can be ignored in language packs.\n";
+ push( @installer::globals::logfileinfo, $infoline);
- next; # removing this file from list, if sourcepath is empty
- }
+ next; # removing this file from list, if sourcepath is empty
}
- else # special case for help packs
+ }
+ else # special case for help packs
+ {
+ if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCEHELPPACK\b/ ))
{
- if (( $onefile->{'ismultilingual'} ) || ( $styles =~ /\bFORCEHELPPACK\b/ ))
- {
- $infoline = "ERROR: Removing file $filename from file list.\n";
- push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "ERROR: Removing file $filename from file list.\n";
+ push( @installer::globals::logfileinfo, $infoline);
- push(@missingfiles, "ERROR: File not found: $filename\n");
- $error_occured = 1;
+ push(@missingfiles, "ERROR: File not found: $filename\n");
+ $error_occured = 1;
- next; # removing this file from list, if sourcepath is empty
- }
- else
- {
- $infoline = "INFO: Removing file $filename from file list. It is not language dependent.\n";
- push( @installer::globals::logfileinfo, $infoline);
- $infoline = "INFO: It is not language dependent and can be ignored in help packs.\n";
- push( @installer::globals::logfileinfo, $infoline);
+ next; # removing this file from list, if sourcepath is empty
+ }
+ else
+ {
+ $infoline = "INFO: Removing file $filename from file list. It is not language dependent.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "INFO: It is not language dependent and can be ignored in help packs.\n";
+ push( @installer::globals::logfileinfo, $infoline);
- next; # removing this file from list, if sourcepath is empty
- }
+ next; # removing this file from list, if sourcepath is empty
}
- }
+ }
}
push(@newfilesarray, $onefile);
diff --git a/solenv/bin/modules/installer/servicesfile.pm b/solenv/bin/modules/installer/servicesfile.pm
deleted file mode 100644
index 948287b206f8..000000000000
--- a/solenv/bin/modules/installer/servicesfile.pm
+++ /dev/null
@@ -1,1059 +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.
-#
-#*************************************************************************
-
-package installer::servicesfile;
-
-use Cwd;
-use installer::converter;
-use installer::existence;
-use installer::exiter;
-use installer::globals;
-use installer::logger;
-use installer::pathanalyzer;
-use installer::remover;
-use installer::scriptitems;
-use installer::systemactions;
-
-################################################################
-# Adding the newly created file into the files collector
-################################################################
-
-sub add_services_sourcepath_into_filearray
-{
- my ( $filesarrayref, $servicesfile, $servicesname ) = @_;
-
- my $found = 0;
- my $onefile;
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- $onefile = ${$filesarrayref}[$i];
- my $name = $onefile->{'Name'};
-
- if ( $servicesname eq $name )
- {
- $found = 1;
- $onefile->{'sourcepath'} = $servicesfile; # setting the sourcepath!
- last;
- }
- }
-
- if ( ! $found ) { installer::exiter::exit_program("ERROR: Did not find $servicesname in files collector!", "add_services_sourcepath_into_filearray"); }
-
-}
-
-################################################################
-# Generating a file url from a path
-################################################################
-
-sub make_file_url
-{
- my ( $path ) = @_;
-
- my $fileurl = "";
-
- # removing ending slash/backslash
-
- installer::remover::remove_ending_pathseparator(\$path);
-
- if ($installer::globals::iswin)
- {
- $path =~ s/\\/\//g;
- $fileurl = "file\:\/\/\/" . $path;
- }
- else
- {
- $fileurl = "file\:\/\/" . $path;
- }
-
- return $fileurl;
-}
-
-################################################################
-# Determining all sourcepath from the uno components
-################################################################
-
-sub get_all_sourcepathes
-{
- my ( $filesref ) = @_;
-
- my @pathes = ();
-
- for ( my $i = 0; $i <= $#{$filesref}; $i++ )
- {
- my $onefile = ${$filesref}[$i];
- my $path = $onefile->{'sourcepath'};
-
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$path);
-
- if (! installer::existence::exists_in_array($path, \@pathes))
- {
- push(@pathes, $path);
- }
- }
-
- return \@pathes;
-}
-
-################################################################
-# Registering all uno component files in the services.rdb
-################################################################
-
-sub register_unocomponents
-{
- my ($allvariableshashref, $unocomponents, $regcompfileref, $servicesfile, $nativeservicesurlprefix) = @_;
-
- installer::logger::include_header_into_logfile("Registering UNO components:");
-
- my $error_occurred = 0;
- my $filestring = "";
- for ( my $i = 0; $i <= $#{$unocomponents}; ++$i )
- {
- my $local_error1_occurred = 0;
- my $local_error2_occurred = 0;
-
- my $sourcepath = make_file_url(${$unocomponents}[$i]->{'sourcepath'});
- my $urlprefix = ${$unocomponents}[$i]->{'NativeServicesURLPrefix'};
- if (defined($urlprefix))
- {
- $local_error1_occurred = call_regcomp($regcompfileref, $servicesfile, $sourcepath, $urlprefix);
- }
- else
- {
- $filestring .= ";" unless $filestring eq "";
- $filestring .= $sourcepath;
- }
- if (length($filestring) > $installer::globals::unomaxservices ||
- ($i == $#{$unocomponents} && $filestring ne ""))
- {
- $local_error2_occurred = call_regcomp($regcompfileref, $servicesfile, $filestring, $nativeservicesurlprefix);
- $filestring = "";
- }
-
- if (( $local_error1_occurred ) || ( $local_error2_occurred )) { $error_occurred = 1; }
- }
-
- return $error_occurred;
-}
-
-sub call_regcomp
-{
- my ($regcompfileref, $servicesfile, $filestring, $urlprefix) = @_;
- my @regcompoutput = ();
-
- my $error_occurred = 0;
-
- my $systemcall = "$$regcompfileref -register -r ".fix_cygwin_path($servicesfile)." -c " . $installer::globals::quote . $filestring . $installer::globals::quote . " -wop=" . $installer::globals::quote . $urlprefix . $installer::globals::quote . " 2\>\&1 |";
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#regcompoutput; $j++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$j]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- $error_occurred = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- return $error_occurred;
-}
-
-################################################################
-# Registering all java component files in the services.rdb
-################################################################
-
-sub register_javacomponents
-{
- my ($allvariableshashref, $javacomponents, $regcompfileref, $servicesfile, $regcomprdb, $javaservicesurlprefix) = @_;
-
- installer::logger::include_header_into_logfile("Registering Java components:");
-
- my $ridljar_ref = "ridl.jar";
- my $ure_internal_java_dir_ref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$ridljar_ref, "", 1);
- installer::pathanalyzer::get_path_from_fullqualifiedname($ure_internal_java_dir_ref);
- if ( $$ure_internal_java_dir_ref eq "" ) { installer::exiter::exit_program("Could not determine URE_INTERNAL_JAVA_DIR when registering Java components!", "register_javacomponents"); }
-
- my $error_occurred = 0;
-
- my $do_register = 1;
- if (!( $installer::globals::solarjava )) { $do_register = 0; }
-
- if ( $do_register )
- {
- my $filestring = "";
-
- for ( my $i = 0; $i <= $#{$javacomponents}; )
- {
- my $sourcepath = ${$javacomponents}[$i++]->{'sourcepath'};
-
- $filestring = $filestring . make_file_url($sourcepath);
-
- if ( $i % $installer::globals::javamaxservices == 0 || $i > $#{$javacomponents} ) # limiting to $installer::globals::maxservices files
- {
- my @regcompoutput = ();
-
- my $systemcall = "$$regcompfileref -register -br ".fix_cygwin_path($regcomprdb)." -r ".fix_cygwin_path($servicesfile)." -c " . $installer::globals::quote . $filestring . $installer::globals::quote . " -l com.sun.star.loader.Java2 -wop=" . $installer::globals::quote . $javaservicesurlprefix . $installer::globals::quote ." -env:URE_INTERNAL_JAVA_DIR=" . $installer::globals::quote . make_file_url($$ure_internal_java_dir_ref) . $installer::globals::quote . " 2\>\&1 |";
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $k = 0; $k <= $#regcompoutput; $k++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$k]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- $error_occurred = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- }
-
- push( @installer::globals::logfileinfo, $infoline);
-
- $filestring = "";
- }
- else
- {
- $filestring = $filestring . ";";
- }
- }
- }
-
- return $error_occurred;
-}
-
-
-
-################################################################
-# Helper routine to change cygwin (POSIX) path to DOS notation
-# if needed
-################################################################
-sub fix_cygwin_path
-{
- my ( $path ) = @_;
-
- if ( $installer::globals::iswin eq 1 )
- {
- $path = qx{cygpath -m "$path"};
- chomp($path);
- }
-
- return $path;
-}
-
-
-
-################################################################
-# Registering all uno component files in the services.rdb
-################################################################
-sub get_source_path_cygwin_safe
-{
- my ( $name, $array, $int ) = @_;
-
- my $ret = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$name, $array, $int);
- if ( $installer::globals::iswin eq 1 )
- {
- if( substr( $$ret, 1,1 ) eq ":" )
- {
- chomp($$ret = qx{cygpath -u "$$ret"});
- }
- }
- return $ret;
-}
-
-sub register_pythoncomponents
-{
- my ($pythoncomponents, $regcompfileref, $servicesfile,$includepatharrayref) = @_;
-
- installer::logger::include_header_into_logfile("Registering python UNO components:");
-
- my $error_occurred = 0;
- my $counter = 0;
-
- my $systemcall = "";
-
- my $allsourcepathes = get_all_sourcepathes($pythoncomponents);
-
- for ( my $j = 0; $j <= $#{$allsourcepathes}; $j++ )
- {
- my $filestring = "";
- my $onesourcepath = ${$allsourcepathes}[$j];
- my $to = "";
- my $from = cwd();
- if ( $installer::globals::iswin ) { $from =~ s/\//\\/g; }
-
- my $typesrdbname = "types.rdb";
-
- # FIXME: Remove the unneeded
- # get_source_path_cygwin_safe() -> fix_cygwin_path()
- # when WRAPCMD is gone
- my $typesrdbref = get_source_path_cygwin_safe($typesrdbname, $includepatharrayref, 1);
-
- if ( $$typesrdbref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $typesrdbname !", "register_pythoncomponents"); }
-
- my $pyunoservicesrdbname = "pyuno_services.rdb";
- my $pyunoservicesrdbref = get_source_path_cygwin_safe($pyunoservicesrdbname, $includepatharrayref, 1);
-
- if ( $$pyunoservicesrdbref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $pyunoservicesrname !", "register_pythoncomponents"); }
-
- for ( my $i = 0; $i <= $#{$pythoncomponents}; $i++ )
- {
- my $doinclude = 1;
- my $sourcepath = ${$pythoncomponents}[$i]->{'sourcepath'};
-
- $to = $sourcepath;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$to);
-
- if (!($to eq $onesourcepath)) { $doinclude = 0; }
-
- if ( $doinclude )
- {
- my $filename = ${$pythoncomponents}[$i]->{'Name'};
- $filestring = $filestring . $filename . "\;";
- $counter++;
- }
-
- if ( $counter > 0 )
- {
- $filestring =~ s/\;\s*$//;
- $filestring = substr( $filestring, 0, length($filestring)-3);
- chdir($onesourcepath);
-
- my @regcompoutput = ();
-
- $systemcall = "$$regcompfileref -register"
- . " -br " . fix_cygwin_path($$typesrdbref)
- . " -br " . fix_cygwin_path($$pyunoservicesrdbref)
- . " -r " . fix_cygwin_path($servicesfile)
- . " -c vnd.openoffice.pymodule:" . $filestring . " -l com.sun.star.loader.Python 2\>\&1 |";
-
- open (REG, "$systemcall");
- while (<REG>) {push(@regcompoutput, $_); }
- close (REG);
-
- my $returnvalue = $?; # $? contains the return value of the systemcall
-
- my $infoline = "Systemcall: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
-
- for ( my $j = 0; $j <= $#regcompoutput; $j++ ) { push( @installer::globals::logfileinfo, "$regcompoutput[$j]"); }
-
- if ($returnvalue)
- {
- $infoline = "ERROR: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- $error_occurred = 1;
- }
- else
- {
- $infoline = "SUCCESS: $systemcall\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- chdir($from);
-
- $counter = 0;
- $filestring = "";
- }
- }
- }
-
- return $error_occurred;
-}
-
-################################################################
-# Iterating over all files, to find all files with the
-# style UNO_COMPONENT. This can be libraries and jar files.
-################################################################
-
-sub register_all_components
-{
- my ( $allvariableshashref, $servicesgid, $filesarrayref, $regcompfileref, $servicesfile, $regcomprdb, $includepatharrayref, $nativeservicesurlprefix, $javaservicesurlprefix ) = @_;
-
- my $registererrorflag = 0;
-
- my @unocomponents = ();
- my @javacomponents = ();
- my @pythoncomponents = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- my $styles = "";
- my $regmergefile = "";
- my $registryid = "";
-
- if ( $onefile->{'RegistryID'} ) { $registryid = $onefile->{'RegistryID'}; }
-
- if ( $servicesgid ne $registryid ) { next; } # only registration for the current $servicesgid
-
- if ( $onefile->{'Regmergefile'} ) { $regmergefile = $onefile->{'Regmergefile'}; }
-
- if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'}; }
-
- if (( $styles =~ /\bUNO_COMPONENT\b/ ) && ( $regmergefile eq "" )) # regmergefiles will not be registered with regcomp
- {
- my $filename = $onefile->{'Name'};
-
- if ( $filename =~ /\.jar\s*$/ ) # java component
- {
- push(@javacomponents, $onefile);
- }
- elsif( $filename =~ /\.py\s*$/ ) # python_component
- {
- push(@pythoncomponents, $onefile);
- }
- else # uno component
- {
- push(@unocomponents, $onefile);
- }
- }
- }
-
- $uno_error_occurred = 0;
- $java_error_occurred = 0;
- $python_error_occurred = 0;
-
- if ( $#unocomponents > -1 ) { $uno_error_occurred = register_unocomponents($allvariableshashref, \@unocomponents, $regcompfileref, $servicesfile, $nativeservicesurlprefix); }
- if ( $#javacomponents > -1 ) { $java_error_occurred = register_javacomponents($allvariableshashref, \@javacomponents, $regcompfileref, $servicesfile, $regcomprdb, $javaservicesurlprefix); }
- if ( $#pythoncomponents > -1 ) { $python_error_occurred = register_pythoncomponents(\@pythoncomponents, $regcompfileref, $servicesfile, $includepatharrayref); }
-
- if ( $uno_error_occurred || $java_error_occurred || $python_error_occurred ) { $registererrorflag = 1; }
-
- return $registererrorflag;
-}
-
-###################################################
-# Include the solver lib directory into
-# the LD_LIBRARY_PATH for Unix platforms
-###################################################
-
-sub include_libdir_into_ld_library_path
-{
- my ( $var, $binfile ) = @_;
-
- my $ld_library_path = $binfile;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$ld_library_path);
- $ld_library_path =~ s/\/\s*$//; # removing ending slashes
- $ld_library_path =~ s/\/bin\./\/lib\./;
- $ld_library_path =~ s/\/bin\s*$/\/lib/; # when packing from flat
-
- my $oldldlibrarypathstring = $ENV{$var};
- my $new_ld_library_path = $ld_library_path;
- if ( defined $oldldlibrarypathstring ) {
- $new_ld_library_path = $new_ld_library_path . $installer::globals::pathseparator . $oldldlibrarypathstring;
- }
- if ( $ENV{'SYSTEM_MOZILLA'} && $ENV{'SYSTEM_MOZILLA'} eq "YES" &&
- (!$ENV{'WITH_OPENLDAP'} || $ENV{'WITH_OPENLDAP'} ne "YES")) {
- $new_ld_library_path = $new_ld_library_path . $installer::globals::pathseparator . $ENV{'MOZ_LIB'};
- }
- $ENV{$var} = $new_ld_library_path;
-
- my $infoline = "Setting $var to $ENV{$var}\n";
- push( @installer::globals::logfileinfo, $infoline);
-}
-
-##################################################################
-# Setting the needed jar files into the CLASSPATH
-# They are needed from regcomp.
-# The jar files are defined in @installer::globals::regcompjars
-##################################################################
-
-sub prepare_classpath_for_java_registration
-{
- my ( $includepatharrayref ) = @_;
- my $local_pathseparator = $installer::globals::pathseparator;
-
- if( $^O =~ /cygwin/i )
- { # $CLASSPATH must use DOS separator even when using cygwin's perl
- $local_pathseparator = ';';
- }
-
- for ( my $i = 0; $i <= $#installer::globals::regcompjars; $i++ )
- {
- my $filename = $installer::globals::regcompjars[$i];
-
- my $jarfileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$filename, $includepatharrayref, 1);
-
- if ( $$jarfileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $filename for registering java components!", "prepare_classpath_for_java_registration"); }
-
- my $oldclasspathstring = "";
- if ( $ENV{'CLASSPATH'} ) { $oldclasspathstring = $ENV{'CLASSPATH'}; }
- else { $oldclasspathstring = "\."; }
- my $classpathstring = $$jarfileref . $local_pathseparator . $oldclasspathstring;
- if ( $^O =~ /cygwin/i ) {
- $classpathstring =~ s/\//\\/g; # guw.pl likes '\' in $PATH.
- }
- $ENV{'CLASSPATH'} = $classpathstring;
-
- my $infoline = "Setting CLASSPATH to $ENV{'CLASSPATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Setting the jdk lib into the LD_LIBRARY_PATH (Unix)
-# This is used by regcomp to register Java components.
-# The jdk lib is defined in $installer::globals::jdklib
-##################################################################
-
-sub add_jdklib_into_ld_library_path
-{
- my ($var) = @_;
- if (defined $installer::globals::jdklib) {
- my $oldldlibrarypathstring = $ENV{$var};
- my $new_ld_library_path = $installer::globals::jdklib;
- if (defined $oldldlibrarypathstring) {
- $new_ld_library_path .=
- $installer::globals::pathseparator . $oldldlibrarypathstring;
- }
- $ENV{$var} = $new_ld_library_path;
- my $infoline = "Setting $var to $ENV{$var}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Adding the libraries included in zip files into path variable
-# (for example mozruntime.zip). This is needed to register all
-# libraries successfully.
-##################################################################
-
-sub add_path_to_pathvariable_directory
-{
- my ( $filesarrayref, $searchstring ) = @_;
-
- # determining the path
-
- my $path = "";
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- my $sourcepath = $onefile->{'sourcepath'};
-
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$sourcepath);
- installer::remover::remove_ending_pathseparator(\$sourcepath);
-
- if ( $sourcepath =~ /\Q$searchstring\E\s*$/ )
- {
- $path = $sourcepath;
- last;
- }
- }
-
- # adding the path to the PATH variable
-
- if ( $path ne "" )
- {
- my $oldpath = "";
- if ( $ENV{'PATH'} ) { $oldpath = $ENV{'PATH'}; }
- else { $oldpath = "\."; }
- if ( $^O =~ /cygwin/i ) {
- $path = qx(cygpath -u "$path");
- chomp $path;
- }
- my $newpath = $path . $installer::globals::pathseparator . $oldpath;
- $ENV{'PATH'} = $newpath;
-
- my $infoline = "Setting PATH to $ENV{'PATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Adding the path of a specified library to the path variable
-# (for example msvcr70.dll). This is needed to register all
-# libraries successfully.
-##################################################################
-
-sub add_path_to_pathvariable
-{
- my ( $filesarrayref, $searchstring ) = @_;
-
- # determining the path
-
- my $path = "";
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
- my $sourcepath = $onefile->{'sourcepath'};
-
- if ( $sourcepath =~ /\Q$searchstring\E\s*$/ )
- {
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$sourcepath);
- installer::remover::remove_ending_pathseparator(\$sourcepath);
- $path = $sourcepath;
- last;
- }
- }
-
- # adding the path to the PATH variable
-
- if ( $path ne "" )
- {
- my $oldpath = "";
- if ( $ENV{'PATH'} ) { $oldpath = $ENV{'PATH'}; }
- else { $oldpath = "\."; }
- if ( $^O =~ /cygwin/i ) {
- $path = qx(cygpath -u "$path");
- chomp $path;
- }
- my $newpath = $path . $installer::globals::pathseparator . $oldpath;
- $ENV{'PATH'} = $newpath;
-
- my $infoline = "Setting PATH to $ENV{'PATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-##################################################################
-# Setting the jre path into the PATH (Windows only)
-# This is used by regcomp.exe to register Java components.
-# The jre path is saved in $installer::globals::jrepath
-##################################################################
-
-sub add_jrepath_into_path
-{
- my $oldpath = "";
- if ( $ENV{'PATH'} ) { $oldpath = $ENV{'PATH'}; }
- else { $oldpath = "\."; }
-
- if ( $installer::globals::jrepath ne "" )
- {
- my $newpath = $installer::globals::jrepath . $installer::globals::pathseparator . $oldpath;
- $ENV{'PATH'} = $newpath;
-
- my $infoline = "Setting PATH to $ENV{'PATH'}\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-}
-
-#######################################################################################
-# Preparing a registry "regcomp.rdb" which regcomp can work on (types+java services).
-# Copying the "udkapi.rdb", renaming it to "regcomp.rdb" and registering the
-# libraries @installer::globals::regcompregisterlibs, which are javavm.uno.so
-# and javaloader.uno.so or javavm.uno.dll and javaloader.uno.dll
-#######################################################################################
-
-sub prepare_regcomp_rdb
-{
- my ( $regcompfile, $servicesdir, $includepatharrayref) = @_;
-
- # udkapi.rdb has to be found in the sourcepath
-
- my $filename = "udkapi.rdb";
- my $udkapirdbref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$filename, $includepatharrayref, 1);
- if ( $$udkapirdbref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $filename for creating regcomp.rdb!", "prepare_regcomp_rdb"); }
-
- my $regcompfilename = "regcomp.rdb";
- my $regcomprdb = $servicesdir . $installer::globals::separator . $regcompfilename;
-
- # If there is an older version of this file, it has to be removed
- if ( -f $regcomprdb ) { unlink($regcomprdb); }
-
- installer::systemactions::copy_one_file($$udkapirdbref, $regcomprdb);
-
- # now the libraries in @installer::globals::regcompregisterlibs can be registered in the "regcomp.rdb"
-
- for ( my $i = 0; $i <= $#installer::globals::regcompregisterlibs; $i++ )
- {
- my $libfilename = $installer::globals::regcompregisterlibs[$i] . $installer::globals::libextension;
- my $libfileref = installer::scriptitems::get_sourcepath_from_filename_and_includepath(\$libfilename, $includepatharrayref, 1);
- if ( $$libfileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $libfilename for creating regcomp.rdb!", "prepare_regcomp_rdb"); }
-
- my $from = cwd();
- if ( $installer::globals::iswin ) { $from =~ s/\//\\/g; }
-
- my $to = $$libfileref;
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$to);
-
- chdir($to);
-
- my $systemcall = "$regcompfile -register -s -r " . fix_cygwin_path($regcomprdb) . " -c $libfilename";
-
- my $returnvalue = system($systemcall);
-
- chdir($from);
-
- my $infoline;
- if ($returnvalue) { $infoline = "ERROR: $systemcall\n"; }
- else { $infoline = "SUCCESS: $systemcall\n"; }
-
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- return $regcomprdb;
-}
-
-################################################################
-# Collecting all gids of the databases, that are part of
-# the file definition
-################################################################
-
-sub collect_all_services_gids
-{
- my ($filesarrayref) = @_;
-
- my @databasegids = ();
- my $error_occurred = 0;
- my @error_files = ();
-
- for ( my $i = 0; $i <= $#{$filesarrayref}; $i++ )
- {
- my $onefile = ${$filesarrayref}[$i];
-
- if ( $onefile->{'RegistryID'} )
- {
- my $databasegid = $onefile->{'RegistryID'};
- if (! installer::existence::exists_in_array($databasegid, \@databasegids)) { push(@databasegids, $databasegid); }
- }
- else
- {
- push(@error_files, $onefile->{'gid'});
- $error_occurred = 1;
- }
- }
-
- if ( $error_occurred )
- {
- my $infoline = "ERROR: Style UNO_COMPONENT is set, but no RegistryID is assigned!\n";
- push( @installer::globals::logfileinfo, $infoline);
- print $infoline;
-
- for ( my $j = 0; $j <= $#error_files; $j++ )
- {
- $infoline = "$error_files[$j]\n";
- push( @installer::globals::logfileinfo, $infoline);
- print $infoline;
- }
-
- installer::exiter::exit_program("ERROR: File defintion error.", "collect_all_services_gids");
- }
-
- return \@databasegids;
-}
-
-######################################################################
-# All gids in $databasegids are as RegistryID assigned to files.
-# For all this Registry Files a definition has to exist.
-######################################################################
-
-sub check_defintion_of_databasegids
-{
- my ($databasegids, $registryfiles) = @_;
-
- my @registryfiles = ();
-
- # First check: For all assigned Registry files, a definition of
- # a file with flag STARREGISTRY has to exist.
-
- for ( my $i = 0; $i <= $#{$databasegids}; $i++ )
- {
- my $onegid = ${$databasegids}[$i];
- my $gid_defined = 0;
-
- for ( my $j = 0; $j <= $#{$registryfiles}; $j++ )
- {
- my $registrygid = ${$registryfiles}[$j]->{'gid'};
-
- if ( $onegid eq $registrygid )
- {
- $gid_defined = 1;
- last;
- }
- }
-
- if ( ! $gid_defined )
- {
- installer::exiter::exit_program("ERROR: Gid $onegid is assigned to file(s), but not defined!", "check_defintion_of_databasegids");
- }
- }
-
- # Second check: If there is a file defined as StarRegistry, is a file with flag UNO_COMPONENT assigned?
-
- for ( my $j = 0; $j <= $#{$registryfiles}; $j++ )
- {
- my $onefile = ${$registryfiles}[$j];
- my $registrygid = $onefile->{'gid'};
-
- my $gid_assigned = 0;
-
- for ( my $i = 0; $i <= $#{$databasegids}; $i++ )
- {
- my $onegid = ${$databasegids}[$i];
-
- if ( $onegid eq $registrygid )
- {
- $gid_assigned = 1;
- last;
- }
- }
-
- if ( ! $gid_assigned )
- {
- my $infoline = "Warning: $registrygid is defined with flag STARREGISTRY, but no file is assigned to the registry.\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- else
- {
- push(@registryfiles, $onefile);
- }
- }
-
- return \@registryfiles;
-}
-
-################################################################
-# Some files have flag UNO_COMPONENT, but are not registered
-# with regcomp. This files use the regmerge mechanism, that
-# is not used in this perl-file. Therefore this files
-# have to be filtered out here.
-################################################################
-
-sub filter_regmergefiles
-{
- my ($unocomponentfiles) = @_;
-
- my @regcompfiles = ();
-
- for ( my $i = 0; $i <= $#{$unocomponentfiles}; $i++ )
- {
- my $onefile = ${$unocomponentfiles}[$i];
- my $regmergefile = "";
-
- if ( $onefile->{'Regmergefile'} ) { $regmergefile = $onefile->{'Regmergefile'}; }
- if ( $regmergefile ne "" ) { next; }
-
- push(@regcompfiles, $onefile);
- }
-
- return \@regcompfiles;
-}
-
-################################################################
-# Setting defaults for Creating services.rdb file by registering all uno components
-################################################################
-
-sub set_url_prefixes
-{
- my ( $registryfile ) = @_;
-
- my $nativeservicesurlprefix = "";
- my $javaservicesurlprefix = "";
-
- if ( $registryfile->{'NativeServicesURLPrefix'} ) { $nativeservicesurlprefix = $registryfile->{'NativeServicesURLPrefix'}; }
- else { $nativeservicesurlprefix = "vnd.sun.star.expand:\$ORIGIN/"; }
-
- if ( $registryfile->{'JavaServicesURLPrefix'} ) { $javaservicesurlprefix = $registryfile->{'JavaServicesURLPrefix'}; }
- else { $javaservicesurlprefix = "vnd.sun.star.expand:\$UNO_JAVA_COMPONENT_PATH/"; }
-
- return ($nativeservicesurlprefix, $javaservicesurlprefix);
-}
-
-################################################################
-# Creating services.rdb file by registering all uno components
-################################################################
-
-sub create_services_rdb
-{
- my ($allvariableshashref, $filesarrayref, $includepatharrayref, $languagestringref) = @_;
-
- # collecting all services files
- my $unocomponentfiles = installer::worker::collect_all_items_with_special_flag($filesarrayref, "UNO_COMPONENT");
- $unocomponentfiles = filter_regmergefiles($unocomponentfiles);
-
- if ( $#{$unocomponentfiles} > -1 ) # not empty -> at least one file with flag UNO_COMPONENT
- {
- my $databasegids = collect_all_services_gids($unocomponentfiles);
-
- my $registryfiles = installer::worker::collect_all_items_with_special_flag($filesarrayref, "STARREGISTRY");
-
- $registryfiles = check_defintion_of_databasegids($databasegids, $registryfiles);
-
- # Now the creation of all files with flag STARREGISTRY can begin
-
- for ( my $i = 0; $i <= $#{$registryfiles}; $i++ )
- {
- my $registryfile = ${$registryfiles}[$i];
-
- my $servicesname = $registryfile->{'Name'}; # not unique!
- my $servicesgid = $registryfile->{'gid'}; # unique
- my $uniquedirname = $servicesgid . "_servicesrdb";
-
- my ($nativeservicesurlprefix, $javaservicesurlprefix) = set_url_prefixes($registryfile);
-
- installer::logger::include_header_into_logfile("Creating $servicesname ($servicesgid):");
-
- my $servicesdir = installer::systemactions::create_directories($uniquedirname, $languagestringref);
-
- push(@installer::globals::removedirs, $servicesdir);
-
- my $servicesfile = $servicesdir . $installer::globals::separator . $servicesname;
-
- # If there is an older version of this file, it has to be removed
- if ( -f $servicesfile ) { unlink($servicesfile); }
-
- if ( $installer::globals::servicesrdb_can_be_created ) # This has to be done always
- {
- # Creating the services.rdb in directory "inprogress"
- my $origservicesdir = $servicesdir;
- $servicesdir = installer::systemactions::make_numbered_dir("inprogress", $servicesdir);
- $servicesfile = $servicesdir . $installer::globals::separator . $servicesname;
-
- # determining the location of the file regcomp
- # Because the program regcomp.exe (regcomp) is used now, it has to be taken the version
- # from the platform, this script is running. It is not important, for which platform the
- # product is built.
-
- my $searchname;
-
- if ($installer::globals::isunix) { $searchname = "regcomp"; }
- else { $searchname = "regcomp.exe"; }
-
- $regcompfileref = get_source_path_cygwin_safe($searchname, $includepatharrayref, 1);
- if ( $$regcompfileref eq "" ) { installer::exiter::exit_program("ERROR: Could not find file $searchname for registering uno components!", "create_services_rdb"); }
-
- # For Windows the libraries included into the mozruntime.zip have to be added to the path
- if ($installer::globals::iswin) { add_path_to_pathvariable_directory($filesarrayref, "mozruntime_zip"); }
- if ($installer::globals::iswin) { add_path_to_pathvariable($filesarrayref, "msvcr70.dll"); }
-
- # setting the LD_LIBRARY_PATH, needed by regcomp
- # Linux: Take care of the lock daemon. He has to be started!
- # For windows it is necessary that "msvcp7x.dll" and "msvcr7x.dll" are included into the path !
-
- my $var_library_path;
- my $old_library_path;
- if ( $installer::globals::isunix ) {
- $var_library_path = $installer::globals::ismacosx ?
- 'DYLD_LIBRARY_PATH' : 'LD_LIBRARY_PATH';
- $old_library_path = $ENV{$var_library_path};
- include_libdir_into_ld_library_path(
- $var_library_path, $$regcompfileref);
- }
-
- my $regcomprdb = "";
-
- if ( $installer::globals::solarjava ) # this is needed to register Java components
- {
- prepare_classpath_for_java_registration($includepatharrayref);
-
- if ( $installer::globals::isunix )
- { add_jdklib_into_ld_library_path($var_library_path); }
- else { add_jrepath_into_path(); }
-
- # Preparing a registry which regcomp can work on (types+java services).
- # Copying the "udkapi.rdb", renaming it to "regcomp.rdb" and registering the
- # libraries $(REGISTERLIBS_JAVA), which are javavm.uno.so and javaloader.uno.so
- # or javavm.uno.dll and javaloader.uno.dll
-
- $regcomprdb = prepare_regcomp_rdb($$regcompfileref, $servicesdir, $includepatharrayref);
- }
-
- # and now iteration over all files
-
- my $error_during_registration = register_all_components($allvariableshashref, $servicesgid, $unocomponentfiles, $regcompfileref, $servicesfile, $regcomprdb, $includepatharrayref, $nativeservicesurlprefix, $javaservicesurlprefix);
-
- if (defined $var_library_path) {
- if (defined $old_library_path) {
- $ENV{$var_library_path} = $old_library_path;
- } else {
- delete $ENV{$var_library_path};
- }
- }
-
- # Dependent from the success, the registration directory can be renamed.
-
- if ( $error_during_registration )
- {
- $servicesdir = installer::systemactions::rename_string_in_directory($servicesdir, "inprogress", "witherror");
- push(@installer::globals::removedirs, $servicesdir);
- # and exiting the packaging process
- installer::exiter::exit_program("ERROR: Could not register all components for file $servicesname ($servicesgid)!", "create_services_rdb");
- }
- else
- {
- $servicesdir = installer::systemactions::rename_directory($servicesdir, $origservicesdir);
- }
-
- $servicesfile = $servicesdir . $installer::globals::separator . $servicesname;
- }
- else
- {
- my $infoline;
-
- if (!($installer::globals::servicesrdb_can_be_created))
- {
- $infoline = "Warning: $servicesname was not created. Build platform and compiler do not match. Build platform: $installer::globals::plat, compiler : $installer::globals::compiler\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- if ( $installer::globals::services_rdb_created )
- {
- $infoline = "Info: $servicesname was not created. $servicesfile already exists.\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
-
- if ((!($installer::globals::servicesrdb_can_be_created)) && (!($installer::globals::services_rdb_created)))
- {
- $infoline = "ERROR: $servicesname was not created and does not exist!\n";
- push( @installer::globals::logfileinfo, $infoline);
- }
- }
-
- # Adding the new services file source path to the filearray
- $registryfile->{'sourcepath'} = $servicesfile; # setting the sourcepath!
- }
- }
-
- # Setting the global variable $installer::globals::services_rdb_created
-
- $installer::globals::services_rdb_created = 1;
-}
-
-1;
diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm
index 54959f95b66d..ea3897f10395 100644
--- a/solenv/bin/modules/installer/simplepackage.pm
+++ b/solenv/bin/modules/installer/simplepackage.pm
@@ -348,9 +348,10 @@ sub replace_one_variable_in_shellscript
sub replace_variables_in_scriptfile
{
- my ($scriptfile, $volume_name, $allvariables) = @_;
+ my ($scriptfile, $volume_name, $volume_name_app, $allvariables) = @_;
replace_one_variable_in_shellscript($scriptfile, $volume_name, "FULLPRODUCTNAME" );
+ replace_one_variable_in_shellscript($scriptfile, $volume_name_app, "FULLAPPPRODUCTNAME" );
replace_one_variable_in_shellscript($scriptfile, $allvariables->{'PRODUCTNAME'}, "PRODUCTNAME" );
replace_one_variable_in_shellscript($scriptfile, $allvariables->{'PRODUCTVERSION'}, "PRODUCTVERSION" );
@@ -409,10 +410,17 @@ sub create_package
$folder = $packagename;
}
- my $volume_name = $allvariables->{'PRODUCTNAME'} . ' ' . $allvariables->{'PRODUCTVERSION'};
- $volume_name = $volume_name . ' ' . $allvariables->{'PRODUCTEXTENSION'} if $allvariables->{'PRODUCTEXTENSION'};
+ # my $volume_name = $allvariables->{'PRODUCTNAME'} . ' ' . $allvariables->{'PRODUCTVERSION'}; # Adding PRODUCTVERSION makes this difficult to maintain!
+ my $volume_name = $allvariables->{'PRODUCTNAME'};
+ my $volume_name_classic = $allvariables->{'PRODUCTNAME'} . ' ' . $allvariables->{'PRODUCTVERSION'};
+ my $volume_name_classic_app = $volume_name; # "app" should not contain version number
+ # $volume_name = $volume_name . ' ' . $allvariables->{'PRODUCTEXTENSION'} if $allvariables->{'PRODUCTEXTENSION'}; # Adding PRODUCTEXTENSION makes this difficult to maintain!
+ $volume_name_classic = $volume_name_classic . ' ' . $allvariables->{'PRODUCTEXTENSION'} if $allvariables->{'PRODUCTEXTENSION'};
+ $volume_name_classic_app = $volume_name_classic_app . ' ' . $allvariables->{'PRODUCTEXTENSION'} if $allvariables->{'PRODUCTEXTENSION'};
if ( $allvariables->{'DMG_VOLUMEEXTENSION'} ) {
$volume_name = $volume_name . ' ' . $allvariables->{'DMG_VOLUMEEXTENSION'};
+ $volume_name_classic = $volume_name_classic . ' ' . $allvariables->{'DMG_VOLUMEEXTENSION'};
+ $volume_name_classic_app = $volume_name_classic_app . ' ' . $allvariables->{'DMG_VOLUMEEXTENSION'};
}
my $sla = 'sla.r';
@@ -428,12 +436,23 @@ sub create_package
if (( $installer::globals::languagepack ) || ( $installer::globals::helppack ) || ( $installer::globals::patch ))
{
$localtempdir = "$tempdir/$packagename";
- if ( $installer::globals::languagepack ) { $volume_name = "$volume_name Language Pack"; }
if ( $installer::globals::helppack ) { $volume_name = "$volume_name Help Pack"; }
- if ( $installer::globals::patch ) { $volume_name = "$volume_name Patch"; }
+ if ( $installer::globals::languagepack )
+ {
+ $volume_name = "$volume_name Language Pack";
+ $volume_name_classic = "$volume_name_classic Language Pack";
+ $volume_name_classic_app = "$volume_name_classic_app Language Pack";
+ }
+ if ( $installer::globals::patch )
+ {
+ $volume_name = "$volume_name Patch";
+ $volume_name_classic = "$volume_name_classic Patch";
+ $volume_name_classic_app = "$volume_name_classic_app Patch";
+ }
# Create tar ball named tarball.tar.bz2
- my $appfolder = $localtempdir . "/" . $volume_name . "\.app";
+ # my $appfolder = $localtempdir . "/" . $volume_name . "\.app";
+ my $appfolder = $localtempdir . "/" . $volume_name_classic_app . "\.app";
my $contentsfolder = $appfolder . "/Contents";
my $tarballname = "tarball.tar.bz2";
@@ -477,7 +496,8 @@ sub create_package
if ( $installer::globals::helppack ) { $scriptfilename = "osx_install_helppack.applescript"; }
if ( $installer::globals::patch ) { $scriptfilename = "osx_install_patch.applescript"; }
my $scripthelpersolverfilename = "mac_install.script";
- my $scripthelperrealfilename = $volume_name;
+ # my $scripthelperrealfilename = $volume_name;
+ my $scripthelperrealfilename = $volume_name_classic_app;
my $translationfilename = $installer::globals::macinstallfilename;
# Finding both files in solver
@@ -500,7 +520,8 @@ sub create_package
my $scriptfilecontent = installer::files::read_file($scriptfilename);
my $translationfilecontent = installer::files::read_file($$translationfileref);
localize_scriptfile($scriptfilecontent, $translationfilecontent, $languagestringref);
- replace_variables_in_scriptfile($scriptfilecontent, $volume_name, $allvariables);
+ # replace_variables_in_scriptfile($scriptfilecontent, $volume_name, $allvariables);
+ replace_variables_in_scriptfile($scriptfilecontent, $volume_name_classic, $volume_name_classic_app, $allvariables);
installer::files::save_file($scriptfilename, $scriptfilecontent);
chmod 0775, $scriptfilename;
@@ -525,7 +546,8 @@ sub create_package
# Replacing variables in Info.plist
$scriptfilecontent = installer::files::read_file($destfile);
- replace_one_variable_in_shellscript($scriptfilecontent, $volume_name, "FULLPRODUCTNAME" );
+ # replace_one_variable_in_shellscript($scriptfilecontent, $volume_name, "FULLPRODUCTNAME" );
+ replace_one_variable_in_shellscript($scriptfilecontent, $volume_name_classic_app, "FULLAPPPRODUCTNAME" ); # OpenOffice.org Language Pack
installer::files::save_file($destfile, $scriptfilecontent);
chdir $localfrom;
diff --git a/solenv/bin/modules/installer/substfilenamefiles.pm b/solenv/bin/modules/installer/substfilenamefiles.pm
index 2a2b22eab53c..98906913c159 100644
--- a/solenv/bin/modules/installer/substfilenamefiles.pm
+++ b/solenv/bin/modules/installer/substfilenamefiles.pm
@@ -34,8 +34,7 @@ use installer::pathanalyzer;
use installer::systemactions;
#########################################################
-# Analyzing files with flag SCPZIP_REPLACE
-# $item can be "File" or "ScpAction"
+# Analyzing files with flag SUBST_FILENAME
#########################################################
sub resolving_subst_filename_flag
diff --git a/solenv/bin/modules/installer/windows/component.pm b/solenv/bin/modules/installer/windows/component.pm
index 498a86c2d319..da11997e5f83 100644
--- a/solenv/bin/modules/installer/windows/component.pm
+++ b/solenv/bin/modules/installer/windows/component.pm
@@ -198,7 +198,7 @@ sub get_registry_component_directory
sub get_file_component_attributes
{
- my ($componentname, $filesref) = @_;
+ my ($componentname, $filesref, $allvariables) = @_;
my $attributes;
@@ -245,6 +245,9 @@ sub get_file_component_attributes
$attributes = 4; # Files in shellnew dir and in non advertised startmenu entries must have user registry key as KeyPath
}
+ # Adding 256, if this is a 64 bit installation set.
+ if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes = $attributes + 256; }
+
return $attributes
}
@@ -256,12 +259,15 @@ sub get_file_component_attributes
sub get_registry_component_attributes
{
- my ($componentname) = @_;
+ my ($componentname, $allvariables) = @_;
my $attributes;
$attributes = 4;
+ # Adding 256, if this is a 64 bit installation set.
+ if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $attributes = $attributes + 256; }
+
if ( exists($installer::globals::dontdeletecomponents{$componentname}) ) { $attributes = $attributes + 16; }
return $attributes
@@ -386,7 +392,7 @@ sub get_component_keypath
sub create_component_table
{
- my ($filesref, $registryref, $dirref, $allfilecomponentsref, $allregistrycomponents, $basedir, $componentidhashref, $componentidkeypathhashref) = @_;
+ my ($filesref, $registryref, $dirref, $allfilecomponentsref, $allregistrycomponents, $basedir, $componentidhashref, $componentidkeypathhashref, $allvariables) = @_;
my @componenttable = ();
@@ -404,7 +410,7 @@ sub create_component_table
$onecomponent{'guid'} = get_component_guid($onecomponent{'name'}, $componentidhashref);
$onecomponent{'directory'} = get_file_component_directory($onecomponent{'name'}, $filesref, $dirref);
if ( $onecomponent{'directory'} eq "IGNORE_COMP" ) { next; }
- $onecomponent{'attributes'} = get_file_component_attributes($onecomponent{'name'}, $filesref);
+ $onecomponent{'attributes'} = get_file_component_attributes($onecomponent{'name'}, $filesref, $allvariables);
$onecomponent{'condition'} = get_file_component_condition($onecomponent{'name'}, $filesref);
$onecomponent{'keypath'} = get_component_keypath($onecomponent{'name'}, $filesref, $componentidkeypathhashref);
@@ -423,7 +429,7 @@ sub create_component_table
$onecomponent{'name'} = ${$allregistrycomponents}[$i];
$onecomponent{'guid'} = get_component_guid($onecomponent{'name'}, $componentidhashref);
$onecomponent{'directory'} = get_registry_component_directory();
- $onecomponent{'attributes'} = get_registry_component_attributes($onecomponent{'name'});
+ $onecomponent{'attributes'} = get_registry_component_attributes($onecomponent{'name'}, $allvariables);
$onecomponent{'condition'} = get_component_condition($onecomponent{'name'});
$onecomponent{'keypath'} = get_component_keypath($onecomponent{'name'}, $registryref, $componentidkeypathhashref);
diff --git a/solenv/bin/modules/installer/windows/directory.pm b/solenv/bin/modules/installer/windows/directory.pm
index 98134c8ef5b6..9ab583b5ed29 100644
--- a/solenv/bin/modules/installer/windows/directory.pm
+++ b/solenv/bin/modules/installer/windows/directory.pm
@@ -77,19 +77,78 @@ sub overwrite_programfilesfolder
}
##############################################################
+# Maximum length of directory name is 72.
+# Taking care of underlines, which are the separator.
+##############################################################
+
+sub make_short_dir_version
+{
+ my ($longstring, $length, $displayname) = @_;
+
+ my $shortstring = "";
+ my $infoline = "";
+ my $savestring = $longstring;
+
+ # Splitting the string at each "underline" and allowing only $length characters per directory name.
+ # Checking also uniqueness and length.
+
+ my $stringarray = installer::converter::convert_stringlist_into_array_without_newline(\$longstring, "_");
+
+ foreach my $onestring ( @{$stringarray} )
+ {
+ my $partstring = "";
+
+ if ( $onestring =~ /\-/ )
+ {
+ my $localstringarray = installer::converter::convert_stringlist_into_array_without_newline(\$onestring, "-");
+ foreach my $onelocalstring ( @{$localstringarray} )
+ {
+ if ( length($onelocalstring) > $length ) { $onelocalstring = substr($onelocalstring, 0, $length); }
+ $partstring = $partstring . "-" . $onelocalstring;
+ }
+ $partstring =~ s/^\s*\-//;
+ }
+ else
+ {
+ if ( length($onestring) > $length ) { $partstring = substr($onestring, 0, $length); }
+ else { $partstring = $onestring; }
+ }
+
+ $shortstring = $shortstring . "_" . $partstring;
+ }
+
+ $shortstring =~ s/^\s*\_//;
+
+ if ( length($shortstring) > 72 )
+ {
+ my $shortlength = length($shortstring);
+ $infoline = "WARNING: Failed to create unique directory name with less than 72 characters: \"$displayname\" ($shortstring ($shortlength)).\n";
+ push(@installer::globals::logfileinfo, $infoline);
+ }
+
+ return $shortstring;
+}
+
+##############################################################
# Adding unique directory names to the directory collection
##############################################################
sub create_unique_directorynames
{
- my ($directoryref) = @_;
+ my ($directoryref, $allvariables) = @_;
$installer::globals::officeinstalldirectoryset = 0;
+ my %conversionhash = ();
+ my $infoline = "";
+ my $errorcount = 0;
+
for ( my $i = 0; $i <= $#{$directoryref}; $i++ )
{
my $onedir = ${$directoryref}[$i];
- my $uniquename = $onedir->{'HostName'};
+ my $hostname = $onedir->{'HostName'};
+
+ my $uniquename = $hostname;
my $styles = "";
if ( $onedir->{'Styles'} ) { $styles = $onedir->{'Styles'}; }
# get_path_from_fullqualifiedname(\$uniqueparentname);
@@ -101,6 +160,42 @@ sub create_unique_directorynames
$uniquename =~ s/\_//g; # removing existing underlines
$uniquename =~ s/\.//g; # removing dots in directoryname
$uniquename =~ s/\Q$installer::globals::separator\E/\_/g; # replacing slash and backslash with underline
+ $uniquename =~ s/OpenOffice/OO/g;
+ $uniquename =~ s/_registry/_rgy/g;
+ $uniquename =~ s/_registration/_rgn/g;
+ $uniquename =~ s/_extension/_ext/g;
+ $uniquename =~ s/_frame/_frm/g;
+ $uniquename =~ s/_table/_tbl/g;
+ $uniquename =~ s/_chart/_crt/g;
+
+ my $startlength = 5;
+
+ if ( ! $allvariables->{'NOSHORTDIRECTORYNAMES'} )
+ {
+ # This process does not work for SDK, because of its long and similar pathes
+ $uniquename = make_short_dir_version($uniquename, $startlength, $hostname); # taking care of underlines!
+ }
+
+ if ( exists($installer::globals::alluniquedirectorynames{$uniquename}) )
+ {
+ # This is an error, that must stop the packaging process
+ $errorcount++;
+
+ $infoline = "$errorcount: Already existing unique directory: $uniquename\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "$errorcount: First full directory: $conversionhash{$uniquename}\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "$errorcount: Current full directory: $hostname\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
+
+ $conversionhash{$uniquename} = $hostname;
+
+ $installer::globals::alluniquedirectorynames{$uniquename} = 1;
+
+ # Important: The unique parent is generated from the string $uniquename. Therefore counters
+ # like adding "_1" is not allowed to achive uniqueness, because this depends from other directories
+ # and does not deliver always the same result.
my $uniqueparentname = $uniquename;
@@ -147,6 +242,11 @@ sub create_unique_directorynames
$installer::globals::vendordirectoryset = 1;
}
}
+
+ if ( $errorcount > 0 )
+ {
+ installer::exiter::exit_program("ERROR: Failed to create unique directory names.", "create_unique_directorynames");
+ }
}
#####################################################
@@ -441,8 +541,9 @@ sub create_directory_table
my $infoline;
overwrite_programfilesfolder($allvariableshashref);
- create_unique_directorynames($directoryref);
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt_local_1.log", $directoryref); }
+ create_unique_directorynames($directoryref, $allvariableshashref);
+ if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt_local_1a.log", $directoryref); }
create_defaultdir_directorynames($directoryref, $shortdirnamehashref); # only destdir!
if ( $installer::globals::globallogging ) { installer::files::save_array_of_hashes($loggingdir . "directoriesforidt_local_2.log", $directoryref); }
set_installlocation_directory($directoryref, $allvariableshashref);
diff --git a/solenv/bin/modules/installer/windows/file.pm b/solenv/bin/modules/installer/windows/file.pm
index 8396df3de157..059c394278d6 100644
--- a/solenv/bin/modules/installer/windows/file.pm
+++ b/solenv/bin/modules/installer/windows/file.pm
@@ -170,6 +170,40 @@ sub assign_sequencenumbers_to_files
}
}
+#########################################################
+# Create a shorter version of a long component name,
+# because maximum length in msi database is 72.
+# Attention: In multi msi installation sets, the short
+# names have to be unique over all packages, because
+# this string is used to create the globally unique id
+# -> no resetting of
+# %installer::globals::allshortcomponents
+# after a package was created.
+#########################################################
+
+sub generate_new_short_componentname
+{
+ my ($componentname) = @_;
+
+ my $shortcomponentname = "";
+ my $counter = 1;
+
+ my $startversion = substr($componentname, 0, 60); # taking only the first 60 characters
+ $startversion = $startversion . "_";
+
+ $shortcomponentname = $startversion . $counter;
+
+ while ( exists($installer::globals::allshortcomponents{$shortcomponentname}) )
+ {
+ $counter++;
+ $shortcomponentname = $startversion . $counter;
+ }
+
+ $installer::globals::allshortcomponents{$shortcomponentname} = 1;
+
+ return $shortcomponentname;
+}
+
###############################################
# Generating the component name from a file
###############################################
@@ -178,77 +212,139 @@ sub get_file_component_name
{
my ($fileref, $filesref) = @_;
- # In this function exists the rule to create components from files
- # Rule:
- # Two files get the same componentid, if:
- # both have the same destination directory.
- # both have the same "gid" -> both were packed in the same zip file
- # All other files are included into different components!
-
- # my $componentname = $fileref->{'gid'} . "_" . $fileref->{'Dir'};
-
- # $fileref->{'Dir'} is not sufficient! All files in a zip file have the same $fileref->{'Dir'},
- # but can be in different subdirectories.
- # Solution: destination=share\Scripts\beanshell\Capitalise\capitalise.bsh
- # in which the filename (capitalise.bsh) has to be removed and all backslashes (slashes) are
- # converted into underline.
-
- my $destination = $fileref->{'destination'};
- installer::pathanalyzer::get_path_from_fullqualifiedname(\$destination);
- $destination =~ s/\s//g;
- $destination =~ s/\\/\_/g;
- $destination =~ s/\//\_/g;
- $destination =~ s/\_\s*$//g; # removing ending underline
-
- my $componentname = $fileref->{'gid'} . "__" . $destination;
-
- # Files with different languages, need to be packed into different components.
- # Then the installation of the language specific component is determined by a language condition.
-
- if ( $fileref->{'ismultilingual'} )
- {
- my $officelanguage = $fileref->{'specificlanguage'};
- $componentname = $componentname . "_" . $officelanguage;
- }
-
- $componentname = lc($componentname); # componentnames always lowercase
-
- $componentname =~ s/\-/\_/g; # converting "-" to "_"
- $componentname =~ s/\./\_/g; # converting "-" to "_"
-
- # Attention: Maximum length for the componentname is 72
-
- $componentname =~ s/gid_file_/g_f_/g;
- $componentname =~ s/_extra_/_e_/g;
- $componentname =~ s/_config_/_c_/g;
- $componentname =~ s/_org_openoffice_/_o_o_/g;
- $componentname =~ s/_program_/_p_/g;
- $componentname =~ s/_typedetection_/_td_/g;
- $componentname =~ s/_linguistic_/_l_/g;
- $componentname =~ s/_module_/_m_/g;
- $componentname =~ s/_optional_/_opt_/g;
- $componentname =~ s/_packages/_pack/g;
- $componentname =~ s/_menubar/_mb/g;
- $componentname =~ s/_common_/_cm_/g;
- $componentname =~ s/_export_/_exp_/g;
- $componentname =~ s/_table_/_tb_/g;
- $componentname =~ s/_sofficecfg_/_sc_/g;
- $componentname =~ s/_startmodulecommands_/_smc_/g;
- $componentname =~ s/_drawimpresscommands_/_dic_/g;
- $componentname =~ s/_basiccommands_/_bac_/g;
- $componentname =~ s/_basicidecommands_/_baic_/g;
- $componentname =~ s/_genericcommands_/_genc_/g;
- $componentname =~ s/_bibliographycommands_/_bibc_/g;
- $componentname =~ s/_share_/_s_/g;
- $componentname =~ s/_modules_/_ms_/g;
- $componentname =~ s/_uiconfig_zip_/_ucz_/g;
- $componentname =~ s/_soffice_cfg_/_sc_/g;
-
- # All this is not necessary for files, which have the flag ASSIGNCOMPOMENT
+ my $componentname = "";
+
+ # Special handling for files with ASSIGNCOMPOMENT
my $styles = "";
if ( $fileref->{'Styles'} ) { $styles = $fileref->{'Styles'}; }
- if ( $styles =~ /\bASSIGNCOMPOMENT\b/ ) { $componentname = get_component_from_assigned_file($fileref->{'AssignComponent'}, $filesref); }
+ if ( $styles =~ /\bASSIGNCOMPOMENT\b/ )
+ {
+ $componentname = get_component_from_assigned_file($fileref->{'AssignComponent'}, $filesref);
+ }
+ else
+ {
+ # In this function exists the rule to create components from files
+ # Rule:
+ # Two files get the same componentid, if:
+ # both have the same destination directory.
+ # both have the same "gid" -> both were packed in the same zip file
+ # All other files are included into different components!
+
+ # my $componentname = $fileref->{'gid'} . "_" . $fileref->{'Dir'};
+
+ # $fileref->{'Dir'} is not sufficient! All files in a zip file have the same $fileref->{'Dir'},
+ # but can be in different subdirectories.
+ # Solution: destination=share\Scripts\beanshell\Capitalise\capitalise.bsh
+ # in which the filename (capitalise.bsh) has to be removed and all backslashes (slashes) are
+ # converted into underline.
+
+ my $destination = $fileref->{'destination'};
+ installer::pathanalyzer::get_path_from_fullqualifiedname(\$destination);
+ $destination =~ s/\s//g;
+ $destination =~ s/\\/\_/g;
+ $destination =~ s/\//\_/g;
+ $destination =~ s/\_\s*$//g; # removing ending underline
+
+ $componentname = $fileref->{'gid'} . "__" . $destination;
+
+ # Files with different languages, need to be packed into different components.
+ # Then the installation of the language specific component is determined by a language condition.
+
+ if ( $fileref->{'ismultilingual'} )
+ {
+ my $officelanguage = $fileref->{'specificlanguage'};
+ $componentname = $componentname . "_" . $officelanguage;
+ }
+
+ $componentname = lc($componentname); # componentnames always lowercase
+
+ $componentname =~ s/\-/\_/g; # converting "-" to "_"
+ $componentname =~ s/\./\_/g; # converting "-" to "_"
+
+ # Attention: Maximum length for the componentname is 72
+ # %installer::globals::allcomponents_in_this_database : resetted for each database
+ # %installer::globals::allcomponents : not resetted for each database
+ # Component strings must be unique for the complete product, because they are used for
+ # the creation of the globally unique identifier.
+
+ my $fullname = $componentname; # This can be longer than 72
+
+ if (( exists($installer::globals::allcomponents{$fullname}) ) && ( ! exists($installer::globals::allcomponents_in_this_database{$fullname}) ))
+ {
+ # This is not allowed: One component cannot be installed with different packages.
+ installer::exiter::exit_program("ERROR: Component \"$fullname\" is already included into another package. This is not allowed.", "get_file_component_name");
+ }
+
+ if ( exists($installer::globals::allcomponents{$fullname}) )
+ {
+ $componentname = $installer::globals::allcomponents{$fullname};
+ }
+ else
+ {
+ if ( length($componentname) > 72 )
+ {
+ # Using md5sum needs much time
+ # chomp(my $shorter = `echo $componentname | md5sum | sed -e "s/ .*//g"`);
+ # $componentname = "comp_$shorter";
+ $componentname = generate_new_short_componentname($componentname); # This has to be unique for the complete product, not only one package
+ }
+
+ $installer::globals::allcomponents{$fullname} = $componentname;
+ $installer::globals::allcomponents_in_this_database{$fullname} = 1;
+ }
+
+ # $componentname =~ s/gid_file_/g_f_/g;
+ # $componentname =~ s/_extra_/_e_/g;
+ # $componentname =~ s/_config_/_c_/g;
+ # $componentname =~ s/_org_openoffice_/_o_o_/g;
+ # $componentname =~ s/_program_/_p_/g;
+ # $componentname =~ s/_typedetection_/_td_/g;
+ # $componentname =~ s/_linguistic_/_l_/g;
+ # $componentname =~ s/_module_/_m_/g;
+ # $componentname =~ s/_optional_/_opt_/g;
+ # $componentname =~ s/_packages/_pack/g;
+ # $componentname =~ s/_menubar/_mb/g;
+ # $componentname =~ s/_common_/_cm_/g;
+ # $componentname =~ s/_export_/_exp_/g;
+ # $componentname =~ s/_table_/_tb_/g;
+ # $componentname =~ s/_sofficecfg_/_sc_/g;
+ # $componentname =~ s/_soffice_cfg_/_sc_/g;
+ # $componentname =~ s/_startmodulecommands_/_smc_/g;
+ # $componentname =~ s/_drawimpresscommands_/_dic_/g;
+ # $componentname =~ s/_basiccommands_/_bac_/g;
+ # $componentname =~ s/_basicidecommands_/_baic_/g;
+ # $componentname =~ s/_genericcommands_/_genc_/g;
+ # $componentname =~ s/_bibliographycommands_/_bibc_/g;
+ # $componentname =~ s/_gentiumbookbasicbolditalic_/_gbbbi_/g;
+ # $componentname =~ s/_share_/_s_/g;
+ # $componentname =~ s/_extension_/_ext_/g;
+ # $componentname =~ s/_extensions_/_exs_/g;
+ # $componentname =~ s/_modules_/_ms_/g;
+ # $componentname =~ s/_uiconfig_zip_/_ucz_/g;
+ # $componentname =~ s/_productivity_/_pr_/g;
+ # $componentname =~ s/_wizard_/_wz_/g;
+ # $componentname =~ s/_import_/_im_/g;
+ # $componentname =~ s/_javascript_/_js_/g;
+ # $componentname =~ s/_template_/_tpl_/g;
+ # $componentname =~ s/_tplwizletter_/_twl_/g;
+ # $componentname =~ s/_beanshell_/_bs_/g;
+ # $componentname =~ s/_presentation_/_bs_/g;
+ # $componentname =~ s/_columns_/_cls_/g;
+ # $componentname =~ s/_python_/_py_/g;
+
+ # $componentname =~ s/_tools/_ts/g;
+ # $componentname =~ s/_transitions/_trs/g;
+ # $componentname =~ s/_scriptbinding/_scrb/g;
+ # $componentname =~ s/_spreadsheet/_ssh/g;
+ # $componentname =~ s/_publisher/_pub/g;
+ # $componentname =~ s/_presenter/_pre/g;
+ # $componentname =~ s/_registry/_reg/g;
+
+ # $componentname =~ s/screen/sc/g;
+ # $componentname =~ s/wordml/wm/g;
+ # $componentname =~ s/openoffice/oo/g;
+ }
return $componentname;
}
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index fddbe749a57c..333df0e8ea08 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -90,10 +90,8 @@ sub get_next_free_number
}
until (!($alreadyexists));
- if (( $counter > 9 ) && ( length($name) > 6 ))
- {
- $dontsave = 1;
- }
+ if (( $counter > 9 ) && ( length($name) > 6 )) { $dontsave = 1; }
+ if (( $counter > 99 ) && ( length($name) > 5 )) { $dontsave = 1; }
if (!($dontsave))
{
@@ -191,6 +189,14 @@ sub make_eight_three_conform
$name =~ s/\s*$//; # removing ending whitespaces
$name = $name . "\~";
$number = get_next_free_number($name, $shortnamesref);
+
+ if ( $number > 99 )
+ {
+ $name = substr($name, 0, 4); # name, offset, length
+ $name =~ s/\s*$//; # removing ending whitespaces
+ $name = $name . "\~";
+ $number = get_next_free_number($name, $shortnamesref);
+ }
}
$name = $name . "$number";
@@ -223,6 +229,14 @@ sub make_eight_three_conform
$name =~ s/\s*$//; # removing ending whitespaces
$name = $name . "\~";
$number = get_next_free_number($name, $shortnamesref);
+
+ if ( $number > 99 )
+ {
+ $name = substr($name, 0, 4); # name, offset, length
+ $name =~ s/\s*$//; # removing ending whitespaces
+ $name = $name . "\~";
+ $number = get_next_free_number($name, $shortnamesref);
+ }
}
$name = $name . "$number";
diff --git a/solenv/bin/modules/installer/windows/msiglobal.pm b/solenv/bin/modules/installer/windows/msiglobal.pm
index 1731c1997af3..07f6b73c9cbc 100644
--- a/solenv/bin/modules/installer/windows/msiglobal.pm
+++ b/solenv/bin/modules/installer/windows/msiglobal.pm
@@ -788,11 +788,16 @@ sub get_codepage_for_sis
sub get_template_for_sis
{
- my ( $language ) = @_;
+ my ( $language, $allvariables ) = @_;
my $windowslanguage = installer::windows::language::get_windows_language($language);
- my $value = "\"Intel;" . $windowslanguage; # adding the Windows language
+ my $architecture = "Intel";
+
+ # Adding 256, if this is a 64 bit installation set.
+ if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 )) { $architecture = "x64"; }
+
+ my $value = "\"" . $architecture . ";" . $windowslanguage; # adding the Windows language
$value = $value . "\""; # adding ending '"'
@@ -930,7 +935,7 @@ sub write_summary_into_msi_database
my $msiversion = get_msiversion_for_sis();
my $codepage = get_codepage_for_sis($language);
- my $template = get_template_for_sis($language);
+ my $template = get_template_for_sis($language, $allvariableshashref);
my $guid = get_packagecode_for_sis();
my $title = get_title_for_sis($sislanguage,$languagefile, "OOO_SIS_TITLE");
my $author = get_author_for_sis();
@@ -1629,6 +1634,104 @@ sub set_uuid_into_component_table
installer::files::save_file($componenttablename, $componenttable);
}
+#########################################################################
+# Adding final 64 properties into msi database, if required.
+# RegLocator : +16 in type column to search in 64 bit registry.
+# All conditions: "VersionNT" -> "VersionNT64" (several tables).
+# Already done: "+256" in Attributes column of table "Component".
+# Still following: Setting "x64" instead of "Intel" in Summary
+# Information Stream of msi database in "get_template_for_sis".
+#########################################################################
+
+sub prepare_64bit_database
+{
+ my ($basedir, $allvariables) = @_;
+
+ my $infoline = "";
+
+ if (( $allvariables->{'64BITPRODUCT'} ) && ( $allvariables->{'64BITPRODUCT'} == 1 ))
+ {
+ # 1. Beginning with table "RegLocat.idt". Adding "16" to the type.
+
+ my $reglocatfile = "";
+ my $reglocatfilename = $basedir . $installer::globals::separator . "RegLocat.idt";
+
+ if ( -f $reglocatfilename )
+ {
+ my $saving_required = 0;
+ $reglocatfile = installer::files::read_file($reglocatfilename);
+
+ for ( my $i = 3; $i <= $#{$reglocatfile}; $i++ ) # ignoring the first three lines
+ {
+ my $oneline = ${$reglocatfile}[$i];
+
+ if ( $oneline =~ /^\s*\#/ ) { next; } # this is a comment line
+ if ( $oneline =~ /^\s*$/ ) { next; }
+
+ if ( $oneline =~ /^\s*(.*?)\t(.*?)\t(.*?)\t(.*?)\t(\d+)\s*$/ )
+ {
+ # Syntax: Signature_ Root Key Name Type
+ my $sig = $1;
+ my $root = $2;
+ my $key = $3;
+ my $name = $4;
+ my $type = $5;
+
+ $type = $type + 16;
+
+ my $newline = $sig . "\t" . $root . "\t" . $key . "\t" . $name . "\t" . $type . "\n";
+ ${$reglocatfile}[$i] = $newline;
+
+ $saving_required = 1;
+ }
+ }
+
+ if ( $saving_required )
+ {
+ # Saving the files
+ installer::files::save_file($reglocatfilename ,$reglocatfile);
+ $infoline = "Making idt file 64 bit conform: $reglocatfilename\n";
+ push(@installer::globals::logfileinfo, $infoline);
+ }
+ }
+
+ # 2. Replacing all occurences of "VersionNT" by "VersionNT64"
+
+ my @versionnt_files = ("Componen.idt", "InstallE.idt", "InstallU.idt", "LaunchCo.idt");
+
+ foreach my $onefile ( @versionnt_files )
+ {
+ my $fullfilename = $basedir . $installer::globals::separator . $onefile;
+
+ if ( -f $fullfilename )
+ {
+ my $saving_required = 0;
+ $filecontent = installer::files::read_file($fullfilename);
+
+ for ( my $i = 3; $i <= $#{$filecontent}; $i++ ) # ignoring the first three lines
+ {
+ my $oneline = ${$filecontent}[$i];
+
+ if ( $oneline =~ /\bVersionNT\b/ )
+ {
+ ${$filecontent}[$i] =~ s/\bVersionNT\b/VersionNT64/g;
+ $saving_required = 1;
+ }
+ }
+
+ if ( $saving_required )
+ {
+ # Saving the files
+ installer::files::save_file($fullfilename ,$filecontent);
+ $infoline = "Making idt file 64 bit conform: $fullfilename\n";
+ push(@installer::globals::logfileinfo, $infoline);
+ }
+ }
+ }
+ }
+
+}
+
#################################################################
# Include all cab files into the msi database.
# This works only on Windows
@@ -1656,7 +1759,6 @@ sub include_cabs_into_msi
$msifilename = installer::converter::make_path_conform($msifilename);
# msidb.exe really wants backslashes. (And double escaping because system() expands the string.)
- $idtdirbase =~ s/\//\\\\/g;
$msifilename =~ s/\//\\\\/g;
$extraslash = "\\";
diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm
index 8c311e759f16..44d9a3c06598 100644
--- a/solenv/bin/modules/installer/windows/property.pm
+++ b/solenv/bin/modules/installer/windows/property.pm
@@ -381,8 +381,8 @@ sub set_important_properties
if (( $allvariables->{'PRODUCTEXTENSION'} ) && ( $allvariables->{'PRODUCTEXTENSION'} eq "Beta" ))
{
- my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n";
- push(@{$propertyfile}, $registryline);
+ # my $registryline = "WRITE_REGISTRY" . "\t" . "0" . "\n";
+ # push(@{$propertyfile}, $registryline);
my $betainfoline = "BETAPRODUCT" . "\t" . "1" . "\n";
push(@{$propertyfile}, $betainfoline);
}
diff --git a/solenv/bin/modules/par2script/check.pm b/solenv/bin/modules/par2script/check.pm
index 7a975f530445..78808cee9191 100644
--- a/solenv/bin/modules/par2script/check.pm
+++ b/solenv/bin/modules/par2script/check.pm
@@ -139,55 +139,6 @@ sub check_module_existence
}
########################################################
-# If the StarRegistry is not defined in the script,
-# it has to be removed from the file definition.
-########################################################
-
-sub check_registry_at_files
-{
- my %starregistrygid = ();
-
- my $item;
- foreach $item ( keys %{$par2script::globals::definitions{'File'}} )
- {
- if (( exists($par2script::globals::definitions{'File'}->{$item}->{'Styles'}) ) &&
- ( $par2script::globals::definitions{'File'}->{$item}->{'Styles'} =~ /\bSTARREGISTRY\b/ ))
- {
- $starregistrygid{$item} = 1;
- }
- }
-
- foreach $item ( keys %{$par2script::globals::definitions{'File'}} )
- {
- if ( exists($par2script::globals::definitions{'File'}->{$item}->{'RegistryID'}) )
- {
- my $registryid = $par2script::globals::definitions{'File'}->{$item}->{'RegistryID'};
- if ( ! exists($starregistrygid{$registryid}) )
- {
- die "\nERROR: No definition found for $registryid at file $item\n\n";
- }
-
- # if ( ! ( $par2script::globals::definitions{'File'}->{$item}->{'Styles'} =~ /\bUNO_COMPONENT\b/ ))
- # {
- # die "\nERROR: Flag UNO_COMPONENT required for file $item\n\n";
- # }
- # -> also possible, that Regmergefile is defined (does not require flag UNO_COMPONENT)
- }
-
- # and also vice versa
-
- if (( exists($par2script::globals::definitions{'File'}->{$item}->{'Styles'}) ) &&
- ( $par2script::globals::definitions{'File'}->{$item}->{'Styles'} =~ /\bUNO_COMPONENT\b/ ))
- {
- if ( ! exists($par2script::globals::definitions{'File'}->{$item}->{'RegistryID'}) )
- {
- die "\nERROR: Flag UNO_COMPONENT defined, but no file as \"RegistryID\" at file $item !\n\n";
- }
- }
- }
-}
-
-########################################################
# Every script has to contain exactly one root module.
# This module has no ParentID or an empty ParentID.
########################################################
diff --git a/solenv/bin/packcomponents.xslt b/solenv/bin/packcomponents.xslt
new file mode 100644
index 000000000000..6e037a677f73
--- /dev/null
+++ b/solenv/bin/packcomponents.xslt
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* 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.
+*
+**********************************************************************-->
+
+<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:uc="http://openoffice.org/2010/uno-components">
+ <xsl:param name="prefix"/>
+ <xsl:strip-space elements="*"/>
+ <xsl:template match="/">
+ <xsl:element name="components"
+ namespace="http://openoffice.org/2010/uno-components">
+ <xsl:for-each select="list/filename">
+ <xsl:variable name="doc" select="document(concat($prefix, .))"/>
+ <xsl:choose>
+ <xsl:when test="count($doc/uc:component) = 1">
+ <xsl:copy-of select="$doc/uc:component"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message terminate="yes">
+ <xsl:text>cannot process </xsl:text>
+ <xsl:value-of select="."/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:for-each>
+ </xsl:element>
+ </xsl:template>
+</xsl:stylesheet>
diff --git a/solenv/bin/packmodule b/solenv/bin/packmodule
new file mode 100755
index 000000000000..d3ae30d48dcd
--- /dev/null
+++ b/solenv/bin/packmodule
@@ -0,0 +1,63 @@
+#! /usr/bin/env python
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+import os, os.path, sys, zipfile
+
+def paths_to_pack(loglines):
+ """Returns a generator iterating the outdir fields (with platform) of gb_deliver.log lines."""
+ lines=[]
+ for line in loglines:
+ fields = line.split()
+ if len(fields) >= 3:
+ lines.append(fields[2])
+ return lines
+
+def stripped_paths_to_pack(loglines):
+ """returns a generator iterating the outdir fields (stripped of the platform) of gb_deliver.log lines."""
+ return (path.partition('/')[2] for path in paths_to_pack(loglines))
+
+def main(args):
+ """creates/overwrites a file at OUTDIR/zip/MODULE.zip containing the contents of the gb_deliver.log."""
+ if len(args) != 3:
+ print('usage: packmodule OUTDIR MODULE')
+ sys.exit(2)
+ (executable, outdir, module) = args
+ os.chdir(outdir)
+ zipdir = 'zip'
+ try:
+ os.makedirs(zipdir)
+ except OSError:
+ pass
+ deliverlog = open(os.path.join('inc', module, 'gb_deliver.log'))
+ packedmodule = zipfile.ZipFile(os.path.join(zipdir,module+'.zip'), 'w')
+ [packedmodule.write(path) for path in stripped_paths_to_pack(deliverlog)]
+ packedmodule.close()
+
+if __name__ == "__main__":
+ main(sys.argv)
+
+# vim:set et sw=4 ts=4 filetype=python:
diff --git a/solenv/bin/par2script.pl b/solenv/bin/par2script.pl
index 0789c460d510..06928ad68439 100644
--- a/solenv/bin/par2script.pl
+++ b/solenv/bin/par2script.pl
@@ -86,8 +86,6 @@ print "Checking module definitions ...\n";
par2script::check::check_module_existence();
print "Checking module assignments ...\n";
par2script::check::check_moduleid_at_items();
-print "Checking StarRegistry ...\n";
-par2script::check::check_registry_at_files();
print "Checking Root Module ...";
par2script::check::check_rootmodule();
print "Checking Shortcut assignments ...\n";
diff --git a/solenv/bin/soirpm.sh b/solenv/bin/soirpm.sh
index 86f8a3e269fd..86f8a3e269fd 100644..100755
--- a/solenv/bin/soirpm.sh
+++ b/solenv/bin/soirpm.sh
diff --git a/solenv/bin/subsequenttests b/solenv/bin/subsequenttests
index 3caa84293f3e..ae9b61922bd8 100755
--- a/solenv/bin/subsequenttests
+++ b/solenv/bin/subsequenttests
@@ -30,6 +30,8 @@ eval 'exec "$PERL" -Sw "$0" "$@"'
use lib("$ENV{SOLARENV}/bin/modules");
use SourceConfig;
+my $keep_going = 0;
+my $dry_run = 0;
my $max_running = 1;
while (@ARGV) {
my $arg = shift(@ARGV);
@@ -38,17 +40,36 @@ while (@ARGV) {
} elsif ($arg eq '--') {
last;
} else {
- print STDERR "unknown argument \"$arg\"\n";
- print STDERR "usage: $0 [-P<n>] [-- <args>]\n";
- print STDERR " -P<n> number of parallel dmake invocations\n";
- print STDERR " <args> are passed to dmake invocations\n";
- exit(1);
+ my $n = substr($arg, 0, 1) eq '-' ? 1 : 0;
+ while ($n && $n < length($arg)) {
+ my $c = substr($arg, $n++, 1);
+ if ($c eq 'k') {
+ $keep_going = 1;
+ } elsif ($c eq 'n') {
+ $dry_run = 1;
+ } else {
+ $n = 0;
+ last;
+ }
+ }
+ if (!$n) {
+ print STDERR "unknown argument \"$arg\"\n";
+ print STDERR "usage: $0 [-kn] [-P<n>] [-- <args>]\n";
+ print STDERR " -k continue with other dmake invocations upon\n";
+ print STDERR " failure\n";
+ print STDERR " -n write directories that would be processed\n";
+ print STDERR " to standard output\n";
+ print STDERR " -P<n> number of parallel dmake invocations\n";
+ print STDERR " <args> are passed to dmake invocations\n";
+ exit(1);
+ }
}
}
my @testpaths = ();
my $sc = SourceConfig->new($ENV{'SOLARSRC'});
my $module;
+my $gbuildpath = "$ENV{'SOLARSRC'}/GNUmakefile";
foreach $module ($sc->get_active_modules()) {
my $buildlst = $sc->get_module_build_list($module);
next unless defined($buildlst);
@@ -82,6 +103,26 @@ foreach $module ($sc->get_active_modules()) {
}
}
+if ($dry_run) {
+ foreach $path (@testpaths) {
+ print "$path\n";
+ }
+ print "$gbuildpath\n";
+ exit(0);
+}
+
+my @failedpaths = ();
+my @gbuildargs = ("-j$max_running", "-s");
+if ($keep_going) {
+ push(@gbuildargs,"-k");
+}
+push(@gbuildargs, "--file=$gbuildpath");
+push(@gbuildargs, "subsequentcheck");
+if (system($ENV{'GNUMAKE'}, @gbuildargs) != 0) {
+ push(@failedpaths,$gbuildpath);
+ @testpaths = () unless $keep_going;
+}
+
my $cmd = 'dmake';
foreach (@ARGV) {
s/'/'\''/g;
@@ -90,7 +131,6 @@ foreach (@ARGV) {
$cmd .= ' 2>&1 |';
my %pids = ();
-my @failedpaths = ();
my $running = 0;
my $counter = 0;
while (@testpaths || $running > 0) {
@@ -119,8 +159,8 @@ while (@testpaths || $running > 0) {
my $testpath = delete($pids{$pid});
defined($testpath) or die("unmatched PID $pid");
if ($? != 0) {
- @testpaths = ();
push(@failedpaths, $testpath);
+ @testpaths = () unless $keep_going;
}
--$running;
}
diff --git a/solenv/bin/transform_description.pl b/solenv/bin/transform_description.pl
index 9a7f850713dd..ff99df425049 100644
--- a/solenv/bin/transform_description.pl
+++ b/solenv/bin/transform_description.pl
@@ -1,9 +1,9 @@
#!/usr/bin/perl
#*************************************************************************
-#*
+#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
-# Copyright 2009 by Sun Microsystems, Inc.
+# Copyright 2000, 2011 Oracle and/or its affiliates.
#
# OpenOffice.org - a multi-platform office productivity suite
#
@@ -24,7 +24,7 @@
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
-#************************************************************************/
+#*************************************************************************
parse_args();
execute_args();
diff --git a/solenv/config/sdev300.ini b/solenv/config/sdev300.ini
new file mode 100644
index 000000000000..c2579cd5b952
--- /dev/null
+++ b/solenv/config/sdev300.ini
@@ -0,0 +1,3359 @@
+common
+{
+ environment
+ {
+ common
+ {
+ ADDED_MODULES solenv default_images custom_images ooo_custom_images external_images postprocess instset_native instsetoo_native smoketest_native smoketestoo_native
+ BIG_SVX TRUE
+ BMP_WRITES_FLAG TRUE
+ BUILD_SPECIAL TRUE
+ BUILD_STAX YES
+ BUILD_TYPE SO OOo EXT BINFILTER MORE_FONTS BSH CURL DICTIONARIES HSQLDB HUNSPELL HYPHEN MYTHES JPEG LIBXML2 LIBXMLSEC LPSOLVE MOZ NEON TWAIN PYTHON ZLIB SANE UNIXODBC X11_EXTENSIONS LIBWPD EPM ODK MSFONTEXTRACT MATHMLDTD BOOST MDDS EXPAT CRASHREP BERKELEYDB LIBXSLT SUN AGG GTK ICU SYSTRAY_GTK JAVAINSTALLER2 VIGRA OPENSSL JFREEREPORT APACHE_COMMONS TOMCAT REPORTBUILDER SDEXT SWEXT XPDF LUCENE REDLAND SAXON WRITER2LATEX NSS GRAPHITE MYSQLCPPCONN MYSQLC CPPUNIT LIBTEXTCAT LIBTEXTCATDATA AFMS
+ CONFIG_PROJECT config_office
+ DIC_ALL TRUE
+ ENABLEUNICODE TRUE
+ ENABLE_AGG YES
+ ENABLE_CUPS TRUE
+ ENABLE_DIRECTX TRUE
+ ENABLE_FONTCONFIG TRUE
+ ENABLE_GTK TRUE
+ ENABLE_MEDIAWIKI YES
+ ENABLE_MINIMIZER YES
+ ENABLE_MYSQLC YES
+ ENABLE_NSS_MODULE YES
+ ENABLE_RANDR TRUE
+ ENABLE_REPORTBUILDER YES
+ ENABLE_SVCTAGS YES
+ ISERVER iserver.germany.sun.com
+ LU_HGFLAG ""
+ LU_NOSOURCE ""
+ LU_RFLAG ""
+ NEW_JAR_PACK TRUE
+ NO_REC_RES TRUE
+ OOODMAKEMODE YES
+ OOO_SHELL /bin/bash
+ PCLEAN_PATH xxx
+ RES_ENUS TRUE
+ RES_GER TRUE
+ rsc_once TRUE
+ SHIPDRIVE /so/install
+ STLPORT4 NO_STLPORT4
+ STLPORT_VER 400
+ WITH_FONTOOO YES
+ WITH_LDAP YES
+ wrapper_override_cc_wrapper TRUE
+ MAXPROC maxproc=15
+ XINERAMA_LINK dynamic
+ }
+ common:0 IF %UPDATER% == YES
+ {
+ DEFAULT_TO_ENGLISH_FOR_PACKING 1
+ DISABLE_SAL_DBGBOX 1
+ }
+ common:1 IF X%CWS_WORK_STAMP%X != XX
+ {
+ CWS_WORK_STAMP_EXT _%CWS_WORK_STAMP%
+ }
+ common:2 IF %UPDATER% == YES
+ {
+ WITH_LANG en-US de
+ }
+ common:3 IF %UPDATER% != YES
+ {
+ }
+ crashdump
+ {
+ ENABLE_CRASHDUMP TRUE
+ }
+ hg
+ {
+ LU_HGFLAG hg_source
+ }
+ maxproc
+ {
+ MAXPROC maxproc=%MAXPROCESS%
+ }
+ minorext
+ {
+ UPDMINOREXT .%UPDMINOR%
+ }
+ nosource
+ {
+ LU_NOSOURCE no_source
+ }
+ pro:0 IF %UPDATER% == YES
+ {
+ product full
+ PROEXT .pro
+ PROFULLSWITCH product=full
+ WITH_LANG en-US de es fr hu it ja ko nl pl pt pt-BR ru sv th tr zh-CN zh-TW ar
+ }
+ pro:1 IF %UPDATER% != YES
+ {
+ product full
+ PROEXT .pro
+ PROFULLSWITCH product=full
+ }
+
+ r_only
+ {
+ LU_RFLAG r_only
+ }
+ tmp
+ {
+ SOL_TMP %SOL_TMP_DIR%
+ }
+ verbose
+ {
+ VERBOSE VERBOSE
+ }
+ }
+ extern
+ {
+ ENVROOT
+ PATH
+ SRC_ROOT
+ UPDATER
+ }
+ order minorext common:2 common:3 pro:0 pro:1 common common:0 cwsname common:1 tmp crashdump maxproc hg r_only nosource
+ reset
+ {
+ ALT_L10N_MODULE
+ ENVCFLAGS
+ HOMEDRIVE
+ HOMEPATH
+ JAVAHOME
+ JAVA_HOME
+ LU_HGFLAG
+ LU_NOSOURCE
+ LU_RFLAGS
+ MKDIRHIER
+ PROEXT
+ PROFULLSWITCH
+ SHIPDRIVE
+ SOLARSRC
+ SOLAR_JAVA
+ SPEW
+ STLPORT4
+ UPDMINOREXT
+ WITH_FONTOOO
+ WITH_LANG
+ }
+ restore
+ {
+ PATH
+ }
+ standlst
+ {
+ DRIVE_O %WORK_STAMP%/drives/o:/UnixVolume
+ DRIVE_S %WORK_STAMP%/drives/s:/UnixVolume
+ }
+ switches
+ {
+ crashdump
+ cwsname CWS_WORK_STAMP
+ envroot
+ hg
+ minorext
+ nosource
+ pro
+ maxproc MAXPROCESS
+ r_only
+ tmp SOL_TMP_DIR
+ verbose VERBOSE
+ }
+}
+finish
+{
+ environment
+ {
+ cap
+ {
+ SOLARSRC %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+ SOURCE_ROOT_DIR $expand(%SOLARSRC%/..)
+ }
+ cax
+ {
+ SOLARSRC %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+ SOURCE_ROOT_DIR $expand(%SOLARSRC%/..)
+ }
+ common_0:0 IF %OS% == MACOSX
+ {
+ ENABLE_GTK
+ SOLARINCLUDES -I%SOLARVERSION%$/%INPATH%$/inc%UPDMINOREXT% -I%SOLARENV%$/%OUTPATH%$/inc -I%SOLARENV%$/inc %SOLAREXTRAINC%
+ }
+ common_0:3 IF %SOLARINCLUDES% ==
+ {
+ SOLARINCLUDES -I%SOLARVERSION%$/%INPATH%$/inc%UPDMINOREXT% %PSDKINC% -I%COMPATH%$/include -I%SOLARENV%$/inc %SOLAREXTRAINC%
+ }
+ common_1
+ {
+ BISON_HAIRY %SOLARROOT%$/btools$/bison.hairy
+ BISON_SIMPLE %SOLARROOT%$/btools$/bison.simple
+ DPKG %BUILD_TOOLS%$/dpkg
+ OOO_JUNIT_JAR %SOLARROOT%$/btools$/junit-4.8.1.jar
+ PATH .$:$cp(%SOLARENV%$/bin)$:$cp(%COMMON_BUILD_TOOLS%)$:$cp(%BUILD_TOOLS%$/dmake412)$:$cp(%BUILD_TOOLS%)$:$cp(%COMMON_ENV_TOOLS%)$:$cp(%ENV_TOOLS%)$:$cp(%COMPATH%$/bin)$:$cp(%JDKPATH%)$:$cp(%PATHEXTRA%)$:%PATH%
+ PATH_SEPERATOR $;
+ SOLARINC -I%SOLAR_STLPATH% -I%SOLARVERSION%$/%INPATH%$/inc%UPDMINOREXT%$/external %SOLARINCLUDES%
+ SOLARLIB -L%SOLARVER%/%INPATH%/lib%UPDMINOREXT% %JDKLIBS% %SOLAREXTRALIB%
+ SOLARSRC %SRC_ROOT%
+ SOURCE_ROOT_DIR $expand(%SOLARSRC%/..)
+ ANT_HOME %COMMON_BUILD_TOOLS%$/apache-ant-1.7.1
+ DBGSV_INIT %SOLARENV%/bin/dbgsv.ini
+ WORKDIR %SOLARVERSION%/%INPATH%/workdir
+ OUTDIR %SOLARVERSION%/%INPATH%
+
+ }
+ common_2:0 IF X%CWS_WORK_STAMP%X == XX
+ {
+ MWS_BUILD TRUE
+ DELIVER_TO_ZIP TRUE
+ gb_MAKETARGET packmodule
+ }
+ common_a
+ {
+ *o: cd %SOLARSRC%
+ ALT_L10N_MODULE $expand(%SOLARSRC%/..)/sun/l10n_so
+ TARFILE_LOCATION %SOURCE_ROOT_DIR%/ext_sources
+ gb_REPOS %SOURCE_ROOT_DIR%/ooo %SOURCE_ROOT_DIR%/sun
+ gb_LOCALBUILDDIR %SOL_TMP%/gb_%CWS_WORK_STAMP%/%WORK_STAMP%
+ }
+ common_setrepo:0 IF X%WITH_LANG%X != XX
+ {
+ gb_REPOS %gb_REPOS% %SOURCE_ROOT_DIR%/l10n
+ BUILD_TYPE %BUILD_TYPE% L10N
+ }
+ common_jre:0 IF %JREPATH% ==
+ {
+ HIER set
+ }
+ common_jre:1 IF %LD_LIBRARY_PATH% ==
+ {
+ PATH %PATH%$:$cp(%JREPATH%)
+ }
+ cwsname:0 IF X%SOURCE_ROOT_USED%X == XX
+ {
+ *build
+ *deliver
+ DMAKEROOT SOURCE_ROOT_not_used
+ SOLARINC SOURCE_ROOT_not_used
+ SOLARINCLUDE SOURCE_ROOT_not_used
+ SOLARSRC SOURCE_ROOT_not_used
+ SOLARVER SOURCE_ROOT_not_used
+ SOLARVERSION SOURCE_ROOT_not_used
+ SOLAR_SOURCE_ROOT SOURCE_ROOT_not_used
+ SO_GEN_ERROR Error - Using -cwsname without -sourceroot switch is harmful...
+ SO_GEN_ERROR2 ...resetting path to source tree
+ SRC_ROOT SOURCE_ROOT_not_used
+ }
+ cwsname:1 IF X%SOURCE_ROOT%X == XX
+ {
+ *build
+ *deliver
+ DMAKEROOT SOURCE_ROOT_not_set
+ SOLARINC SOURCE_ROOT_not_set
+ SOLARINCLUDE SOURCE_ROOT_not_set
+ SOLARSRC SOURCE_ROOT_not_set
+ SOLARVER SOURCE_ROOT_not_set
+ SOLARVERSION SOURCE_ROOT_not_set
+ SOLAR_SOURCE_ROOT SOURCE_ROOT_not_set
+ SO_GEN_ERROR Error - Using -cwsname without SOURCE_ROOT set is harmful...
+ SO_GEN_ERROR2 ...resetting path to source tree
+ SRC_ROOT SOURCE_ROOT_not_set
+ }
+ cwsname:2 IF X%UPDMINOR%X == XX
+ {
+ *build
+ *deliver
+ DMAKEROOT UPDMINOR_not_used
+ SOLARINC UPDMINOR_not_used
+ SOLARINCLUDE UPDMINOR_not_used
+ SOLARSRC UPDMINOR_not_used
+ SOLARVER UPDMINOR_not_used
+ SOLARVERSION UPDMINOR_not_used
+ SOLAR_SOURCE_ROOT UPDMINOR_not_used
+ SO_GEN_ERROR Error - Using -cwsname without -ver switch is harmful...
+ SO_GEN_ERROR2 ...resetting path to source tree
+ SRC_ROOT UPDMINOR_not_used
+ }
+ jdk14
+ {
+ CLASSPATH .$;%JAVA_HOME%$/jre$/lib$/rt.jar
+ ILIB %LIB%$;%JDKLIB%
+ LIB %LIB%$;%JDKLIB%
+ JAVA_TARGET_FLAG -target 1.4
+ }
+ jdk15
+ {
+ CLASSPATH .$;%JAVA_HOME%$/jre$/lib$/rt.jar
+ ILIB %LIB%$;%JDKLIB%
+ LIB %LIB%$;%JDKLIB%
+ JAVA_TARGET_FLAG -target 1.5
+ }
+ l10n
+ {
+ framework %L10N_framework%
+ L10N-framework %L10N_framework%
+ }
+ ojdk16
+ {
+ CLASSPATH .$;%JAVA_HOME%$/jre$/lib$/rt.jar
+ ILIB %LIB%$;%JDKLIB%
+ LIB %LIB%$;%JDKLIB%
+ JAVA_TARGET_FLAG -target 1.6
+ }
+ }
+ order cwsname:0 cwsname:1 cwsname:2 common_0:0 common_0:1 common_0:2 common_0:3 jdk14 jdk15 ojdk16 common_1 common_2:0 l10n common_jre:0 common_jre:1 cax cap common_a common_setrepo:0
+ switches
+ {
+ cwsname CWS_WORK_STAMP
+ }
+}
+unxfbsdi
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice perl %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice perl %SOLARENV%/bin/build_client.pl
+ *copyprj perl %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver perl %SOLARENV%/bin/deliver.pl
+ *mkout perl %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep perl %SOLARENV%/bin/zipdep.pl
+ COPYPRJ perl %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER perl %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ LD_LIBRARY_PATH .:%SOLARVERSION%/%INPATH%/lib%UPDMINOREXT%:%COMPATH%/libexec
+ MKOUT perl %SOLARENV%/bin/mkout.pl
+ PATHEXTRA %combin%:/usr/bin:/bin:/usr/sbin:/etc:/usr/bin/X11
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include -I%SYSBASE%/usr/include/X11
+ SOLAREXTRALIB -L../lib -L%SYSBASE%/usr/X11R6/lib -L%SYSBASE%/usr/lib -L/usr/X11R6/lib -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ ZIPDEP perl %SOLARENV%/bin/zipdep.pl
+ ENABLE_GCONF TRUE
+ ENABLE_GNOMEVFS TRUE
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/gcc_3.0.1_linux_libc2.11_turbolinux
+ DEVROOT %SOLAR_ENV_ROOT%
+ PKGFORMAT some_dummy
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK13PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.3.1
+ SOLAR_JDK14PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.4.2_11
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.5.0_06
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ }
+ common2
+ {
+ BUILD_TOOLS %SOLARROOT%/bt_unxfbsdi/bin
+ COM GCC
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU I
+ CPUNAME INTEL
+ CVER C300
+ ENV_TOOLS %SOLARROOT%/et_unxfbsdi/bin
+ GUI UNX
+ GUIBASE unx
+ GVER VCL
+ INPATH unxfbsdi%PROEXT%
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ NO_BSYMBOLIC True
+ OS FREEBSD
+ OUTPATH unxfbsdi
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxfbsdi%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxfbsdi%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /tmp
+ TMP /tmp
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ debug
+ {
+ LD_LIBRARY_PATH %SOLARROOT%/solenv/unxlngi4/lib/debug:%LD_LIBRARY_PATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%/include:%JDK14PATH%/include/linux
+ JDKINCS -I%JDK14PATH%/include -I%JDK14PATH%/include/linux
+ JDKLIB %JDK14PATH%/jre/lib:%JDK14PATH%/jre/lib/i386:%JDK14PATH%/jre/lib/i386/client
+ JDKLIBS -L%JDK14PATH%/jre/lib -L%JDK14PATH%/jre/lib/i386 -L%JDK14PATH%/jre/lib/i386/client
+ JDKPATH %JDK14PATH%/bin
+ JDK_VERSION 142
+ XCLASSPATH .:%JDK14PATH%/jre/lib/rt.jar
+ }
+ jdk14path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/linux
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/linux
+ JDKLIB %JDK15PATH%/jre/lib:%JDK15PATH%/jre/lib/i386:%JDK15PATH%/jre/lib/i386/client
+ JDKLIBS -L%JDK15PATH%/jre/lib -L%JDK15PATH%/jre/lib/i386 -L%JDK15PATH%/jre/lib/i386/client
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 IF X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 sysbaseroot common1 jdk14path:0 jdk15path:0 distroot:0 cap cax compath common2 pro common jdk14 jdk15 debug
+ reset
+ {
+ CLASSPATH
+ COPYALL
+ }
+ restore
+ {
+ INCLUDE
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ debug
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+unxlngi6
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ PERL %SOL_TMP%$/r$/bt_linux_libc2.5$/%WORK_STAMP%$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ PERL %SOL_TMP%$/r$/bt_linux_libc2.5$/%WORK_STAMP%$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice %PERL% %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice %PERL% %SOLARENV%/bin/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%/bin/deliver.pl
+ *mkout %PERL% %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%/bin/zipdep.pl
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ HAVE_GCC_VISIBILITY_FEATURE TRUE
+ HAVE_LD_BSYMBOLIC_FUNCTIONS TRUE
+ HAVE_LD_HASH_STYLE TRUE
+ LIBRARY_PATH %SYSBASE%/usr/lib
+ MKOUT %PERL% %SOLARENV%/bin/mkout.pl
+ PATHEXTRA %combin%:/usr/bin:/bin:/usr/sbin:/etc:/usr/bin/X11
+ FREETYPE_CFLAGS -I%SYSBASE%/usr/include/freetype2
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include -I%SYSBASE%/usr/include/X11 -I%SYSBASE%/include
+ SOLAREXTRALIB -L../lib -L%SYSBASE%/usr/X11R6/lib -L%SYSBASE%/usr/lib -L/usr/X11R6/lib -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ ZIPDEP %PERL% %SOLARENV%/bin/zipdep.pl
+ ENABLE_GCONF TRUE
+ ENABLE_GNOMEVFS TRUE
+ GNUCOPY cp
+ GNUMAKE make
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ SOLAR_SYSBASE_ROOT /so/env/gcc_4.2.3_linux_libc2.5/glibc2.5
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/gcc_4.2.3_linux_libc2.5
+ DEVROOT %SOLAR_ENV_ROOT%
+ LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+ PERL %SOLAR_ENV_ROOT%/bt_linux_libc2.5/%WORK_STAMP%/bin/perl
+ PKGFORMAT rpm
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK13PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.3.1
+ SOLAR_JDK14PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.4.2_11
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.5.0_06
+ SOLAR_OJDK16PATH %SOLAR_ENV_ROOT%/openjdk-6-b08-linux-i586
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ PKG_CONFIG_LIBDIR %SOLAR_SYSBASE_ROOT%/usr/lib/pkgconfig
+ }
+ common2
+ {
+ ENABLE_GRAPHITE TRUE
+ ENABLE_GSTREAMER TRUE
+ BUILD_TOOLS %SOLARROOT%/bt_linux_libc2.5/%WORK_STAMP%/bin
+ COM GCC
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU I
+ CPUNAME INTEL
+ CVER C432
+ ENABLE_KAB TRUE
+ ENABLE_KDE TRUE
+ ENABLE_EVOAB2 TRUE
+ ENV_TOOLS %SOLARROOT%/et_linux_libc2.5/%WORK_STAMP%/bin
+ GUI UNX
+ GUIBASE unx
+ GVER VCL
+ INPATH unxlngi6%PROEXT%
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ KDE_ROOT /so/env/kde/linux/kde-3.2.2
+ LIBMYSQL_PATH %SOLARROOT%/mysql-connector-c-6.0.2/unxlngi6
+ NO_BSYMBOLIC True
+ OJDK16PATH %SOLAR_OJDK16PATH%
+ OS LINUX
+ OUTPATH unxlngi6
+ RPM %SOLARENV%/bin/rpm-wrapper
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxlngi6%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxlngi6%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /tmp
+ TMP /tmp
+ }
+ common3:0 IF X%UPDATER%X == XX
+ {
+ FORCE2ARCHIVE TRUE
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%/include:%JDK14PATH%/include/linux
+ JDKINCS -I%JDK14PATH%/include -I%JDK14PATH%/include/linux
+ JDKLIB %JDK14PATH%/jre/lib:%JDK14PATH%/jre/lib/i386:%JDK14PATH%/jre/lib/i386/client
+ JDKLIBS -L%JDK14PATH%/jre/lib -L%JDK14PATH%/jre/lib/i386 -L%JDK14PATH%/jre/lib/i386/client
+ JDKPATH %JDK14PATH%/bin
+ JDK_VERSION 142
+ XCLASSPATH .:%JDK14PATH%/jre/lib/rt.jar
+ }
+ jdk14path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/linux
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/linux
+ JDKLIB %JDK15PATH%/jre/lib:%JDK15PATH%/jre/lib/i386:%JDK15PATH%/jre/lib/i386/client:%JDK15PATH%/jre/lib/i386/xawt
+ JDKLIBS -L%JDK15PATH%/jre/lib -L%JDK15PATH%/jre/lib/i386 -L%JDK15PATH%/jre/lib/i386/client
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ ojdk16
+ {
+ JAVA_HOME %OJDK16PATH%
+ JDKINC %OJDK16PATH%/include:%OJDK16PATH%/include/linux
+ JDKINCS -I%OJDK16PATH%/include -I%OJDK16PATH%/include/linux
+ JDKLIB %OJDK16PATH%/jre/lib:%OJDK16PATH%/jre/lib/i386:%OJDK16PATH%/jre/lib/i386/client:%OJDK16PATH%/jre/lib/i386/xawt
+ JDKLIBS -L%OJDK16PATH%/jre/lib -L%OJDK16PATH%/jre/lib/i386 -L%OJDK16PATH%/jre/lib/i386/client
+ JDKPATH %OJDK16PATH%/bin
+ JDK_VERSION 160
+ XCLASSPATH .:%OJDK16PATH%/jre/lib/rt.jar
+ }
+ ojdk16path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_OJDK16PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 IF X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 sysbaseroot common1 jdk14path:0 jdk15path:0 ojdk16path:0 distroot:0 cap cax compath common2 pro common3:0 common jdk14 jdk15 ojdk16
+ reset
+ {
+ CLASSPATH
+ COPYALL
+ }
+ restore
+ {
+ INCLUDE
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ debug
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ ojdk16
+ ojdk16path
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+
+unxlngx6
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ PERL %SOL_TMP%$/r$/bt_linux64_libc2.5$/%WORK_STAMP%$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ PERL %SOL_TMP%$/r$/bt_linux64_libc2.5$/%WORK_STAMP%$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice %PERL% %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice %PERL% %SOLARENV%/bin/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%/bin/deliver.pl
+ *mkout %PERL% %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%/bin/zipdep.pl
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ HAVE_GCC_VISIBILITY_FEATURE TRUE
+ HAVE_LD_BSYMBOLIC_FUNCTIONS TRUE
+ HAVE_LD_HASH_STYLE TRUE
+ LIBRARY_PATH %SYSBASE%/usr/lib64
+ MKOUT %PERL% %SOLARENV%/bin/mkout.pl
+ PATHEXTRA %combin%:/usr/bin:/bin:/usr/sbin:/etc:/usr/bin/X11
+ FREETYPE_CFLAGS -I%SYSBASE%/usr/include/freetype2
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include -I%SYSBASE%/usr/include/X11 -I%SYSBASE%/include
+ SOLAREXTRALIB -L../lib64 -L%SYSBASE%/usr/lib64 -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ ZIPDEP %PERL% %SOLARENV%/bin/zipdep.pl
+ ENABLE_GCONF TRUE
+ ENABLE_GNOMEVFS TRUE
+ GNUMAKE make
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ SOLAR_SYSBASE_ROOT /so/env/gcc_4.2.3_linux64_libc2.5/glibc2.5
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/gcc_4.2.3_linux64_libc2.5
+ DEVROOT %SOLAR_ENV_ROOT%
+ PERL %SOLAR_ENV_ROOT%/bt_linux64_libc2.5/%WORK_STAMP%/bin/perl
+ PKGFORMAT rpm
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK14PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.4.2.32
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/Linux_JDK_1.5.0_15.x64
+ SOLAR_OJDK16PATH %SOLAR_ENV_ROOT%/openjdk-6-b08-linux-amd64
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ USE_SYSTEM_STL YES
+ XAU_LIBS -lXau
+ PKG_CONFIG_LIBDIR %SOLAR_SYSBASE_ROOT%/usr/lib/pkgconfig
+ }
+ common2
+ {
+ PKG_CONFIG_PATH %COMPATH%/glibc2.5/usr/lib64/pkgconfig
+ ENABLE_GRAPHITE TRUE
+ ENABLE_GSTREAMER TRUE
+ BUILD_TOOLS %SOLARROOT%/bt_linux64_libc2.5/%WORK_STAMP%/bin
+ COM GCC
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU X
+ CPUNAME INTEL
+ CVER C341
+ ENABLE_KAB TRUE
+ ENABLE_KDE TRUE
+ ENV_TOOLS %SOLARROOT%/et_linux64_libc2.5/%WORK_STAMP%/bin
+ GUI UNX
+ GUIBASE unx
+ GUIENV sal
+ GVER VCL
+ INPATH unxlngx6%PROEXT%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ KDE_ROOT /so/env/kde/linux-x64/kde-3.5.10
+ LIBMYSQL_PATH %SOLARROOT%/mysql-connector-c-6.0.2/unxlngx6
+ NO_BSYMBOLIC True
+ OJDK16PATH %SOLAR_OJDK16PATH%
+ OS LINUX
+ OUTPATH unxlngx6
+ PA_VER 18
+ RPM %SOLARENV%/bin/rpm-wrapper
+ SOLARUPD %UPD%
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxlngx6%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxlngx6%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /tmp
+ TMP /tmp
+ }
+ common3:0 IF X%UPDATER%X == XX
+ {
+ FORCE2ARCHIVE TRUE
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/linux
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/linux
+ JDKLIB %JDK15PATH%/jre/lib:%JDK15PATH%/jre/lib/amd64:%JDK15PATH%/jre/lib/amd64/server:%JDK15PATH%/jre/lib/amd64/xawt
+ JDKLIBS -L%JDK15PATH%/jre/lib -L%JDK15PATH%/jre/lib/amd64 -L%JDK15PATH%/jre/lib/amd64/server
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk14path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/linux
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/linux
+ JDKLIB %JDK15PATH%/jre/lib:%JDK15PATH%/jre/lib/amd64:%JDK15PATH%/jre/lib/amd64/server:%JDK15PATH%/jre/lib/amd64/xawt
+ JDKLIBS -L%JDK15PATH%/jre/lib -L%JDK15PATH%/jre/lib/amd64 -L%JDK15PATH%/jre/lib/amd64/server
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ ojdk16
+ {
+ JAVA_HOME %OJDK16PATH%
+ JDKINC %OJDK16PATH%/include:%OJDK16PATH%/include/linux
+ JDKINCS -I%OJDK16PATH%/include -I%OJDK16PATH%/include/linux
+ JDKLIB %OJDK16PATH%/jre/lib:%OJDK16PATH%/jre/lib/amd64:%OJDK16PATH%/jre/lib/amd64/server:%OJDK16PATH%/jre/lib/amd64/xawt
+ JDKLIBS -L%OJDK16PATH%/jre/lib -L%OJDK16PATH%/jre/lib/amd64 -L%OJDK16PATH%/jre/lib/amd64/server
+ JDKPATH %OJDK16PATH%/bin
+ JDK_VERSION 160
+ XCLASSPATH .:%OJDK16PATH%/jre/lib/rt.jar
+ }
+ ojdk16path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_OJDK16PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 IF X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 sysbaseroot common1 jdk14path:0 jdk15path:0 ojdk16path:0 distroot:0 cap cax compath common2 common3:0 pro common jdk14 jdk15 ojdk16
+ reset
+ {
+ CLASSPATH
+ COPYALL
+ }
+ restore
+ {
+ INCLUDE
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ debug
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ ojdk16
+ ojdk16path
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+
+unxmacxi
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ PERL %SOL_TMP%$/r$/bt_macosx_intel$/%WORK_STAMP%$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ PERL %SOL_TMP%$/r$/bt_macosx_intel$/%WORK_STAMP%$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice %PERL% %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice %PERL% %SOLARENV%/bin/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%/bin/deliver.pl
+ *mkout %PERL% %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%/bin/zipdep.pl
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ HAVE_GCC_VISIBILITY_FEATURE TRUE
+ LIBRARY_PATH %SYSBASE%/usr/lib
+ MKOUT %PERL% %SOLARENV%/bin/mkout.pl
+ PATHEXTRA %combin%:/usr/bin:/bin:/usr/sbin:/etc
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include/c++/4.0.0 -I%SYSBASE%/usr/include/c++/4.0.0/i686-apple-darwin8 -I%SYSBASE%/usr/lib/gcc/i686-apple-darwin8/4.0.1/include -I%SYSBASE%/usr/include/python2.3 -I%SYSBASE%/MacOSX10.4u.sdk/usr/lib/gcc/i686-apple-darwin8/4.0.1/include -I%SYSBASE%/MacOSX10.4u.sdk/Developer/Headers/FlatCarbon
+ SOLAREXTRALIB -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ ZIPDEP %PERL% %SOLARENV%/bin/zipdep.pl
+ GNUCOPY gnucp
+ GNUMAKE make
+ }
+ common0
+ {
+ GXX_INCLUDE_PATH /so/env/gcc_4.0.1_macosx/usr/include/c++/4.0.0
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ SOLAR_SYSBASE_ROOT /so/env/gcc_4.0.1_macosx
+ MACDEVSDK /so/env/gcc_4.0.1_macosx/MacOSX10.4u.sdk
+ }
+ common1
+ {
+ BUILD_OS_APPLEOSX TRUE
+ BUILD_OS_MAJOR 10
+ BUILD_OS_MINOR 4
+ BUILD_OS_REV 10
+ COMPATH %SOLAR_ENV_ROOT%$/gcc_4.0.1_macosx
+ DEVROOT %SOLAR_ENV_ROOT%
+ DISABLE_DEPRECATION_WARNING TRUE
+ EXTRA_CDEFS -DBUILD_OS_APPLEOSX -DBUILD_OS_MAJOR=10 -DBUILD_OS_MINOR=4 -DBUILD_OS_REV=10
+ EXTRA_CFLAGS -isysroot %COMPATH%/MacOSX10.4u.sdk
+ EXTRA_LINKFLAGS -Wl,-syslibroot,%COMPATH%/MacOSX10.4u.sdk
+ LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+ LIBXML_CFLAGS -I%COMPATH%/MacOSX10.4u.sdk/usr/include/libxml2
+ LIBXML_LIBS -L%COMPATH%/MacOSX10.4u.sdk/usr/lib -lxml2 -lz -lpthread -liconv -lm
+ LIBXSLT_CFLAGS -I%COMPATH%/MacOSX10.4u.sdk/usr/include/libxml2
+ LIBXSLT_LIBS -L%COMPATH%/MacOSX10.4u.sdk/usr/lib -lxslt -lxml2 -lz -lpthread -liconv -lm
+ MACOSX_DEPLOYMENT_TARGET 10.4
+ OPENSSL_LIBS -lssl -lcrypto
+ PERL %SOLAR_ENV_ROOT%/bt_macosx_intel/%WORK_STAMP%/bin/perl
+ PKGFORMAT dmg
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK14PATH %SOLAR_ENV_ROOT%/mac_jdk14_unknown
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/MacOSX_JDK_1.5.0_07.intel
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ SYSTEM_CURL YES
+ SYSTEM_LIBXML YES
+ SYSTEM_LIBXSLT YES
+ SYSTEM_OPENSSL YES
+ SYSTEM_PYTHON YES
+ SYSTEM_ZLIB YES
+ USE_SYSTEM_STL YES
+ BUILD_PIXMAN YES
+ WITH_MOZILLA YES
+ }
+ common2
+ {
+ BUILD_TOOLS %SOLARROOT%/bt_macosx_intel/%WORK_STAMP%/bin
+ COM GCC
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU I
+ CPUNAME INTEL
+ CVER C341
+ ENV_TOOLS %SOLARROOT%/et_macosx_intel/%WORK_STAMP%/bin
+ GUI UNX
+ GUIBASE aqua
+ GVER VCL
+ INPATH unxmacxi%PROEXT%
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK15PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIBMYSQL_PATH %SOLARROOT%/mysql-connector-c-6.0.2/unxmacxi
+ NO_BSYMBOLIC True
+ OS MACOSX
+ OUTPATH unxmacxi
+ PA_VER 18
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxmacxi%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxmacxi%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /tmp
+ TMP /tmp
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/linux
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/linux
+ JDKLIB %JDK15PATH%/jre/lib
+ JDKLIBS -L%JDK15PATH%/jre/lib
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk14path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/linux
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/linux
+ JDKLIB %JDK15PATH%/jre/lib
+ JDKLIBS -L%JDK15PATH%/jre/lib
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 IF X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 IF X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 sysbaseroot common1 jdk14path:0 jdk15path:0 distroot:0 cap cax compath common2 pro common jdk14 jdk15
+ reset
+ {
+ CLASSPATH
+ COPYALL
+ }
+ restore
+ {
+ INCLUDE
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ debug
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+unxsoli4
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ PERL %SOL_TMP%$/r$/bt_solaris_intel$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ PERL %SOL_TMP%$/r$/bt_solaris_intel$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice %PERL% %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice %PERL% %SOLARENV%/bin/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%/bin/deliver.pl
+ *mkout %PERL% %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%/bin/zipdep.pl
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ MKOUT %PERL% %SOLARENV%/bin/mkout.pl
+ PATHEXTRA /usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/etc:/usr/bin/X11:/opt/langtools/bin:/usr/dt/bin
+ FREETYPE_CFLAGS -I%SYSBASE%/usr/sfw/include -I%SYSBASE%/usr/sfw/include/freetype2
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include
+ SOLAREXTRALIB -L%COMPATH%$/lib -L../lib -L%SYSBASE%/usr/lib -L%SYSBASE%/usr/sfw/lib -L/lib -L/usr/lib -L/usr/dt/lib -L/usr/openwin/lib -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ ZIPDEP %PERL% %SOLARENV%/bin/zipdep.pl
+ __cdpath %DRIVE_O%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ ENABLE_GCONF TRUE
+ ENABLE_GNOMEVFS TRUE
+ GNUCOPY gnucp
+ GNUMAKE gmake
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ SOLAR_SYSBASE_ROOT /so/env/solaris_2.10_intel
+ }
+ common1
+ {
+ COMPATH /so/env/compilers/SUNWS12_p/intel/SUNWspro
+ DEVROOT %SOLAR_ENV_ROOT%
+ LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+ PERL %SOLAR_ENV_ROOT%/bt_solaris_intel/bin/perl
+ PKGFORMAT pkg
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK13PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.3.1_01.intel
+ SOLAR_JDK14PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.4.2_11.intel
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.5.0_06.intel
+ SOLAR_OJDK16PATH %SOLAR_ENV_ROOT%/openjdk-6-b08-solaris-i586
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ }
+ common2
+ {
+ BUILD_TOOLS %SOLARROOT%/bt_solaris_intel/%WORK_STAMP%/bin
+ COM C52
+ COMEX 4
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU I
+ CPUNAME INTEL
+ CVER C52
+ ENABLE_EVOAB2 TRUE
+ ENV_TOOLS %SOLARROOT%/et_solaris_intel/%WORK_STAMP%/bin
+ GUI UNX
+ GUIBASE unx
+ GVER VCL
+ INPATH unxsoli4%PROEXT%
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIBMYSQL_PATH %SOLARROOT%/mysql-connector-c-6.0.2/unxsoli4
+ OJDK16PATH %SOLAR_OJDK16PATH%
+ OS SOLARIS
+ OUTPATH unxsoli4
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxsoli4%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxsoli4%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /var/tmp
+ TMP /var/tmp
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 if X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%/include:%JDK14PATH%/include/solaris
+ JDKINCS -I%JDK14PATH%/include -I%JDK14PATH%/include/solaris
+ JDKLIB %JDK14PATH%/jre/lib/i386:%JDK14PATH%/lib:%JDK14PATH%/jre/lib/i386/native_threads:%JDK14PATH%/jre/plugin/i386:%JDK14PATH%/jre/lib/i386/motif21
+ JDKLIBS -L%JDK14PATH%/jre/lib/i386 -L%JDK14PATH%/lib -L%JDK14PATH%/jre/lib/i386/native_threads -L%JDK14PATH%/jre/plugin/i386 -L%JDK14PATH%/jre/lib/i386/motif21
+ JDKPATH %JDK14PATH%/bin
+ JDK_VERSION 142
+ XCLASSPATH .:%JDK14PATH%/jre/lib/rt.jar
+ }
+ jdk14path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/solaris
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/solaris
+ JDKLIB %JDK15PATH%/jre/lib/i386:%JDK15PATH%/lib:%JDK15PATH%/jre/lib/i386/native_threads:%JDK15PATH%/jre/plugin/i386:%JDK15PATH%/jre/lib/i386/motif21
+ JDKLIBS -L%JDK15PATH%/jre/lib/i386 -L%JDK15PATH%/lib -L%JDK15PATH%/jre/lib/i386/native_threads -L%JDK15PATH%/jre/plugin/i386 -L%JDK15PATH%/jre/lib/i386/motif21
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ ojdk16
+ {
+ JAVA_HOME %OJDK16PATH%
+ JDKINC %OJDK16PATH%/include:%OJDK16PATH%/include/solaris
+ JDKINCS -I%OJDK16PATH%/include -I%OJDK16PATH%/include/solaris
+ JDKLIB %OJDK16PATH%/jre/lib/i386:%OJDK16PATH%/lib:%OJDK16PATH%/jre/lib/i386/native_threads:%OJDK16PATH%/jre/plugin/i386:%OJDK16PATH%/jre/lib/i386/xawt
+ JDKLIBS -L%OJDK16PATH%/jre/lib/i386 -L%OJDK16PATH%/lib -L%OJDK16PATH%/jre/lib/i386/native_threads -L%OJDK16PATH%/jre/plugin/i386 -L%OJDK16PATH%/jre/lib/i386/xawt
+ JDKPATH %OJDK16PATH%/bin
+ JDK_VERSION 160
+ XCLASSPATH .:%OJDK16PATH%/jre/lib/rt.jar
+ }
+ ojdk16path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_OJDK16PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 common1 distroot:0 jdk14path:0 jdk15path:0 ojdk16path:0 sysbaseroot cap cax compath common2 pro common jdk14 jdk15 ojdk16
+ reset
+ {
+ CLASSPATH
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ ojdk16
+ ojdk16path
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+unxsols4
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ PERL %SOL_TMP%$/r$/bt_solaris_sparc$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ PERL %SOL_TMP%$/r$/bt_solaris_sparc$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice %PERL% %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice %PERL% %SOLARENV%/bin/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%/bin/deliver.pl
+ *mkout %PERL% %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%/bin/zipdep.pl
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ MKOUT %PERL% %SOLARENV%/bin/mkout.pl
+ PATHEXTRA /usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/etc:/usr/bin/X11:/opt/langtools/bin:/usr/dt/bin
+ FREETYPE_CFLAGS -I%SYSBASE%/usr/sfw/include -I%SYSBASE%/usr/sfw/include/freetype2
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include
+ SOLAREXTRALIB -L%COMPATH%$/lib -L../lib -L%SYSBASE%/usr/lib -L%SYSBASE%/usr/sfw/lib -L/lib -L/usr/lib -L/usr/dt/lib -L/usr/openwin/lib -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ ZIPDEP %PERL% %SOLARENV%/bin/zipdep.pl
+ __cdpath %DRIVE_O%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ ENABLE_GCONF TRUE
+ ENABLE_GNOMEVFS TRUE
+ GNUCOPY gnucp
+ GNUMAKE gmake
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_LICENSE_FILE /opt/SUNWspro/license_dir/sunpro.lic,1
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ SOLAR_SYSBASE_ROOT /so/env/solaris_2.10_sparc
+ }
+ common1
+ {
+ COMPATH /so/env/compilers/SUNWS12_p/sparc/SUNWspro
+ DEVROOT %SOLAR_ENV_ROOT%
+ LFS_CFLAGS -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+ PERL %SOLAR_ENV_ROOT%/bt_solaris_sparc/bin/perl
+ PKGFORMAT pkg
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK13PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.3.1_01.sparc
+ SOLAR_JDK14PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.4.2_11.sparc
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.5.0_06.sparc
+ SOLAR_OJDK16PATH %SOLAR_ENV_ROOT%/openjdk-6-b08-solaris-sparc
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ }
+ common2
+ {
+ BUILD_TOOLS %SOLARROOT%/bt_solaris_sparc/%WORK_STAMP%/bin
+ COM C52
+ COMEX 4
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU S
+ CPUNAME SPARC
+ CVER C52
+ ENABLE_EVOAB2 TRUE
+ ENV_TOOLS %SOLARROOT%/et_solaris_sparc/%WORK_STAMP%/bin
+ GUI UNX
+ GUIBASE unx
+ GVER VCL
+ INPATH unxsols4%PROEXT%
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIBMYSQL_PATH %SOLARROOT%/mysql-connector-c-6.0.2/unxsols4
+ LM_LICENSE_FILE %SOLAR_LICENSE_FILE%
+ OJDK16PATH %SOLAR_OJDK16PATH%
+ OS SOLARIS
+ OUTPATH unxsols4
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxsols4%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxsols4%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /var/tmp
+ TMP /var/tmp
+ }
+ common:3 IF %UPDATER% == YES
+ {
+ TEMP /tmp
+ TMP /tmp
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 if X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%/include:%JDK14PATH%/include/solaris
+ JDKINCS -I%JDK14PATH%/include -I%JDK14PATH%/include/solaris
+ JDKLIB %JDK14PATH%/jre/lib/sparc:%JDK14PATH%/lib:%JDK14PATH%/jre/lib/sparc/native_threads:%JDK14PATH%/jre/plugin/sparc:%JDK14PATH%/jre/lib/sparc/motif21
+ JDKLIBS -L%JDK14PATH%/jre/lib/sparc -L%JDK14PATH%/lib -L%JDK14PATH%/jre/lib/sparc/native_threads -L%JDK14PATH%/jre/plugin/sparc -L%JDK14PATH%/jre/lib/sparc/motif21
+ JDKPATH %JDK14PATH%/bin
+ JDK_VERSION 142
+ XCLASSPATH .:%JDK14PATH%/jre/lib/rt.jar
+ }
+ jdk14path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/solaris
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/solaris
+ JDKLIB %JDK15PATH%/jre/lib/sparc:%JDK15PATH%/lib:%JDK15PATH%/jre/lib/sparc/native_threads:%JDK15PATH%/jre/plugin/sparc:%JDK15PATH%/jre/lib/sparc/motif21
+ JDKLIBS -L%JDK15PATH%/jre/lib/sparc -L%JDK15PATH%/lib -L%JDK15PATH%/jre/lib/sparc/native_threads -L%JDK15PATH%/jre/plugin/sparc -L%JDK15PATH%/jre/lib/sparc/motif21
+ JDKPATH %JDK15PATH%/bin
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ ojdk16
+ {
+ JAVA_HOME %OJDK16PATH%
+ JDKINC %OJDK16PATH%/include:%OJDK16PATH%/include/solaris
+ JDKINCS -I%OJDK16PATH%/include -I%OJDK16PATH%/include/solaris
+ JDKLIB %OJDK16PATH%/jre/lib/sparc:%OJDK16PATH%/lib:%OJDK16PATH%/jre/lib/sparc/native_threads:%OJDK16PATH%/jre/plugin/sparc:%OJDK16PATH%/jre/lib/sparc/xawt
+ JDKLIBS -L%OJDK16PATH%/jre/lib/sparc -L%OJDK16PATH%/lib -L%OJDK16PATH%/jre/lib/sparc/native_threads -L%OJDK16PATH%/jre/plugin/sparc -L%OJDK16PATH%/jre/lib/sparc/xawt
+ JDKPATH %OJDK16PATH%/bin
+ JDK_VERSION 160
+ XCLASSPATH .:%OJDK16PATH%/jre/lib/rt.jar
+ }
+ ojdk16path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_OJDK16PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LM_LICENSE_FILE
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 common1 distroot:0 jdk14path:0 jdk15path:0 ojdk16path:0 sysbaseroot cap cax compath common2 common:3 pro common jdk14 jdk15 ojdk16
+ reset
+ {
+ CLASSPATH
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ ojdk16
+ ojdk16path
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+unxsolu4
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOLARROOT%/etools
+ PERL %SOL_TMP%$/r$/bt_solaris_sparc$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COPYALL FALSE
+ DEVROOT %SOL_TMP%$/r
+ PCLEAN_PATH %SOL_TMP%$/r/etools
+ PERL %SOL_TMP%$/r$/bt_solaris_sparc$/bin$/perl
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build nice %PERL% %SOLARENV%/bin/build.pl %PROFULLSWITCH%
+ *build_client nice %PERL% %SOLARENV%/bin/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%/bin/deliver.pl
+ *mkout %PERL% %SOLARENV%/bin/mkout.pl
+ *r: cd %SOLARROOT%
+ *s: cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%/bin/zipdep.pl
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%/bin/deliver.pl
+ DMAKEROOT %SOLARENV%/inc/startup
+ FREETYPE_CFLAGS -I%SYSBASE%/usr/sfw/include -I%SYSBASE%/usr/sfw/include/freetype2
+ FREETYPE_LIBS -L%SYSBASE%/usr/sfw/lib/sparcv9 -lfreetype
+ LIBXML_CFLAGS -I%SYSBASE%/usr/include/libxml2
+ LIBXML_LIBS -L%SYSBASE%/usr/lib/sparcv9 -lxml2 -lpthread -lz -lm -lsocket -lnsl
+ LIBXSLT_CFLAGS -I%SYSBASE%/usr/include/libxml2
+ LIBXSLT_LIBS -L%SYSBASE%/usr/lib/sparcv9 -lxslt -lxml2 -lpthread -lz -lm -lsocket -lnsl
+ MKOUT %PERL% %SOLARENV%/bin/mkout.pl
+ PATHEXTRA /usr/ccs/bin:/usr/bin:/bin:/usr/sbin:/etc:/usr/bin/X11:/opt/langtools/bin:/usr/dt/bin
+ SOLAREXTRAINC -I%SOLAR_STLPATH% -I%SYSBASE%/usr/include
+ SOLAREXTRALIB -L%COMPATH%$/lib -L../lib -L%SYSBASE%/usr/lib -L/lib -L/usr/lib -L/usr/dt/lib -L/usr/openwin/lib -L%SOLAR_STLLIBPATH%
+ SOLAR_JAVA TRUE
+ SYSTEM_FREETYPE YES
+ SYSTEM_LIBXML YES
+ SYSTEM_LIBXSLT YES
+ ZIPDEP %PERL% %SOLARENV%/bin/zipdep.pl
+ __cdpath %DRIVE_O%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ ENABLE_GCONF TRUE
+# ENABLE_GNOMEVFS TRUE
+ GNUMAKE gmake
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT /so/env
+ SOLAR_SOURCE_ROOT %DRIVE_O%
+ SOLAR_SYSBASE_ROOT /so/env/solaris_2.10_sparc
+ }
+ common1
+ {
+ COMPATH /so/env/compilers/SUNWS12m1/sparc/SUNWspro
+ DEVROOT %SOLAR_ENV_ROOT%
+ PERL %SOLAR_ENV_ROOT%/bt_solaris_sparc/bin/perl
+ PKGFORMAT pkg
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%/%WORK_STAMP%
+ SOLAR_JDK15PATH %SOLAR_ENV_ROOT%/Solaris_JDK_1.5.0_15.sparc
+ SO_PACK %SOLAR_ENV_ROOT%/pack/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%/%WORK_STAMP%/ooo%UPDMINOREXT%
+ USE_SYSTEM_STL YES
+ }
+ common2
+ {
+ BUILD_TOOLS %SOLARROOT%/bt_solaris_sparc/%WORK_STAMP%/bin
+ COM C52
+ COMEX 4
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ CPU U
+ CPUNAME SPARC
+ CVER C52
+ ENV_TOOLS %SOLARROOT%/et_solaris_sparc/%WORK_STAMP%/bin
+ GUI UNX
+ GUIBASE unx
+ GVER VCL
+ INPATH unxsolu4%PROEXT%
+ JDK15PATH %SOLAR_JDK15PATH%
+ OS SOLARIS
+ OUTPATH unxsolu4
+ SOLAR_STLLIBPATH %SOLARVERSION%$/unxsolu4%PROEXT%$/lib%UPDMINOREXT%
+ SOLAR_STLPATH %SOLARVERSION%$/unxsolu4%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SYSBASE %SOLAR_SYSBASE_ROOT%
+ TEMP /var/tmp
+ TMP /var/tmp
+ }
+ common:3 IF %UPDATER% == YES
+ {
+ TEMP /tmp
+ TMP /tmp
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%/%WORK_STAMP%
+ }
+ envroot:0 if X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk15
+ {
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%/include:%JDK15PATH%/include/solaris
+ JDKINCS -I%JDK15PATH%/include -I%JDK15PATH%/include/solaris
+ JDKLIB %JDK15PATH%/jre/lib/sparcv9:%JDK15PATH%/lib:%JDK15PATH%/jre/lib/sparcv9/native_threads:%JDK15PATH%/jre/lib/sparcv9/server:%JDK15PATH%/jre/plugin/sparcv9:%JDK15PATH%/jre/lib/sparcv9/motif21
+ JDKLIBS -L%JDK15PATH%/jre/lib/sparcv9 -L%JDK15PATH%/lib -L%JDK15PATH%/jre/lib/sparcv9/native_threads -L%JDK15PATH%/jre/lib/sparcv9/server -L%JDK15PATH%/jre/plugin/sparcv9 -L%JDK15PATH%/jre/lib/sparcv9/motif21
+ JDKPATH %JDK15PATH%/bin/sparcv9
+ JDK_VERSION 150
+ XCLASSPATH .:%JDK15PATH%/jre/lib/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ pro
+ {
+ PROSWITCH -DPRODUCT
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ sysbaseroot
+ {
+ SOLAR_SYSBASE_ROOT %SYSBASE_ROOT%
+ }
+ }
+ extern
+ {
+ DIST_ROOT
+ ENV_ROOT
+ HOME
+ JDK_PATH
+ LM_LICENSE_FILE
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ SYSBASE_ROOT
+ USER
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 common1 distroot:0 jdk15path:0 sysbaseroot cap cax compath common2 common:3 pro common jdk15
+ reset
+ {
+ CLASSPATH
+ }
+ script
+ {
+ csh
+ {
+ 400: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/etools/lucopy.pl all $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 600: umask 002
+ 800: rehash
+ 820: wrapfetch.sh
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/etools/lucopy.pl all $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ pro
+ sourceroot
+ sysbaseroot
+ }
+}
+wntgcci1
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COMPATH %SOL_TMP%$/r$/MinGW
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ FSDK %SOL_TMP%$/r$/msvc7net$/FrameworkSDK
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
+ PCLEAN_PATH %SOLARROOT%$/etw
+ PERL %SOL_TMP%$/r$/btw$/perl$/bin$/perl
+ PSDK %SOL_TMP%$/r$/MinGW$/w32api
+ SHARED_COM_SDK_PATH %SOL_TMP%$/r$/msvc7net$/Common7$/ide
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COMPATH %SOL_TMP%$/r$/MinGW
+ COPYALL FALSE
+ FSDK %SOL_TMP%$/r$/msvc7net$/FrameworkSDK
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
+ PCLEAN_PATH %SOL_TMP%$/r$/etw
+ PERL %SOL_TMP%$/r$/btw$/perl$/bin$/perl
+ PSDK %SOL_TMP%$/r$/MinGW$/w32api
+ SHARED_COM_SDK_PATH %SOL_TMP%$/r$/msvc7net$/Common7$/ide
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build %PERL% %SOLARENV%$/bin$/build.pl %PROFULLSWITCH%
+ *build_client %PERL% %SOLARENV%$/bin$/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%$/bin$/deliver.pl
+ *dmake *dmake %PROFULLSWITCH%
+ *mkout %PERL% %SOLARENV%$/bin$/mkout.pl
+ *o cd %SOLARENV%$/..
+ *r cd %SOLARROOT%
+ *s cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
+ BIG_SVX
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
+ DMAKEROOT %SOLARENV%$/inc$/startup
+ ILIB .$:%UPDMINOREXT%$:%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%$:%PSDK%$/lib$:%FSDK%$/lib$:%COMPATH%$/lib$:
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIB .$:%UPDMINOREXT%$:%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%$:%PSDK%$/lib$:%PSDK%$/lib$/x86$:%FSDK%$/lib$:%COMPATH%$/lib$:%SOLAR_STLLIBPATH%
+ MKOUT %PERL% %SOLARENV%$/bin$/mkout.pl
+ PATH %PATH%$:%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%$:%SHARED_COM_SDK_PATH%$:%PSDK%$/bin$:%FSDK%$/bin
+ PSDKINC -I%PSDK%$/include
+ SOLAREXTRAINC -I%COMPATH%$/lib$/gcc-lib$/mingw32$/3.2$/include -I%DSDK%$/include
+ SOLAR_JAVA TRUE
+ XCLASSPATH .
+ ZIPDEP %PERL% %SOLARENV%$/bin$/zipdep.pl
+ GNUMAKE make
+ }
+ common0
+ {
+ SOLAR_ENV_ROOT r:
+ SOLAR_SOURCE_ROOT o:
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/MinGW
+ # FSDK %SOLAR_ENV_ROOT%$/msvc7net$/FrameworkSDK
+ DEVROOT %SOLAR_ENV_ROOT%
+ NSIS_PATH %SOLAR_ENV_ROOT%$/NSIS_242_unicode
+ PERL %SOLAR_ENV_ROOT%$/btw$/perl$/bin$/perl
+ PKGFORMAT some_dummy
+ PSDK %SOLAR_ENV_ROOT%$/MinGW$/w32api
+ SHARED_COM_SDK_PATH %SOLAR_ENV_ROOT%$/msvc7net$/Common7$/ide
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SO_PACK %SOLAR_ENV_ROOT%$/pack$/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+ }
+ common2
+ {
+ ENABLE_GRAPHITE TRUE
+ BUILD_TOOLS %SOLARROOT%$/btw$/%WORK_STAMP%
+ CALL_CDECL TRUE
+ CDPATHx %CDPATH%$:..$:..$/..$:..$/..$/..$:..$/source$:..$/..$/source$:o:$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+ COM GCC
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ COMP_ENV wntgcci1
+ CPU I
+ CPUNAME INTEL
+ CVER M1300
+ DYNAMIC_CRT TRUE
+ ENV_TOOLS %SOLARROOT%$/etw$/%WORK_STAMP%
+ GUI WNT
+ GUIBASE WIN
+ GVER NT351
+ INPATH wntgcci1%PROEXT%
+ OS WNT
+ OUTPATH wntgcci1
+ SET_EXEPTIONS TRUE
+ SOLAR_JDK13PATH %SOLARROOT%$/jdk1.3
+ SOLAR_JDK14PATH %SOLARROOT%$/j2sdk1.4.2_11
+ SOLAR_JDK15PATH %SOLARROOT%$/jdk1.5.0.06
+ SOLAR_STLPATH %SOLARVERSION%$/wntgcci1%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SORT sort -T %TMP%
+ use_shl_versions TRUE
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%$/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%$/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%$/%WORK_STAMP%
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ HOMEDRIVE %DEVROOT%
+ HOMEPATH $/jdk141
+ JAVAHOME %JDK14PATH%
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%$/include$/win32$:%JDK14PATH%$/include
+ JDKINCS -I%JDK14PATH%$/include -I%JDK14PATH%$/include$/win32
+ JDKLIB -L%JDK14PATH%$/lib
+ JDKLIBS -L%JDK14PATH%$/lib
+ JDKPATH %JDK14PATH%$/bin
+ JDK_VERSION 142
+ JREPATH %JDK14PATH%$/jre$/bin$/client
+ XCLASSPATH .$:%JDK14PATH%$/jre$/lib$/rt.jar
+ }
+ jdk14path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ HOMEDRIVE %DEVROOT%
+ HOMEPATH $/jdk151
+ JAVAHOME %JDK15PATH%
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%$/include$/win32$:%JDK15PATH%$/include
+ JDKINCS -I%JDK15PATH%$/include -I%JDK15PATH%$/include$/win32
+ JDKLIB -L%JDK15PATH%$/lib
+ JDKLIBS -L%JDK15PATH%$/lib
+ JDKPATH %JDK15PATH%$/bin
+ JDK_VERSION 150
+ JREPATH %JDK15PATH%$/jre$/bin$/client
+ XCLASSPATH .$:%JDK15PATH%$/jre$/lib$/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ psdk
+ {
+ PSDK %STAR_PSDK%
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ }
+ extern
+ {
+ COMSPEC
+ DIST_ROOT
+ ENV_ROOT
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 common1 distroot:0 cap cax psdk compath common2 jdk14path:0 jdk15path:0 common jdk14 jdk15
+ reset
+ {
+ COPYALL
+ NSIS_PATH
+ SOLAR_ENV_ROOT
+ WST
+ }
+ script
+ {
+ csh
+ {
+ 150: setenv MYENV_PATH $PATH
+ 160: setenv PATH $SSX_PATH
+ 200: if ( ${?COPYALL} ) $SOLAR_ENV_ROOT/btw/perl/bin/perl $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 260: setenv PATH $MYENV_PATH
+ 270: unsetenv MYENV_PATH
+ 850: if ( "$?SO_GEN_ERROR" == 0 ) setenv SO_GEN_ERROR
+ 851: if ( "$?SO_GEN_ERROR2" == 0 ) setenv SO_GEN_ERROR2
+ 900: if ( "$?SO_GEN_ERROR" == 1 ) echo $SO_GEN_ERROR
+ 901: if ( "$?SO_GEN_ERROR2" == 1 ) echo $SO_GEN_ERROR2
+ }
+ sh
+ {
+ 150: export MYENV_PATH=$PATH
+ 160: export PATH=$SSX_PATH
+ 260: export PATH=$MYENV_PATH
+ 270: unset MYENV_PATH
+ 400: if [ $COPYALL ]; then
+ 410: $SOLAR_ENV_ROOT/btw/perl/bin/perl $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 881: echo $SO_GEN_ERROR
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ pro
+ psdk STAR_PSDK
+ sourceroot
+ }
+}
+wntmsci11
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT %SOURCE_ROOT_TMP%
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ COMPATH %SOL_TMP%$/r$/msvc8p
+ COMPROOT %SOL_TMP%$/r$/msvc8p
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ DSDK %SOL_TMP%$/r$/msvc8p$/DirectXSDK
+ FSDK %SOL_TMP%$/r$/msvc8p$/Sdk$/v2.0
+ PCLEAN_PATH %SOLARROOT%$/etw
+ PERL %SOL_TMP%$/r$/btw$/perl$/bin$/perl
+ PSDK %SOL_TMP%$/r$/msvc8p$/PlatformSDK
+ SHARED_COM_SDK_PATH %SOL_TMP%$/r$/msvc8p$/Common7$/ide
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ cax
+ {
+ COMPATH %SOL_TMP%$/r$/msvc8p
+ COMPROOT %SOL_TMP%$/r$/msvc8p
+ COPYALL FALSE
+ DSDK %COMPATH%$/DirectXSDK
+ FSDK %COMPATH%$/Sdk$/v2.0
+ PCLEAN_PATH %SOL_TMP%$/r$/etw
+ PERL %SOL_TMP%$/r$/btw$/perl$/bin$/perl
+ PSDK %COMPATH%$/PlatformSDK
+ SHARED_COM_SDK_PATH %COMPATH%$/Common7$/ide
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+ }
+ common
+ {
+ *build %PERL% %SOLARENV%$/bin$/build.pl %PROFULLSWITCH%
+ *build_client %PERL% %SOLARENV%$/bin$/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ *deliver %PERL% %SOLARENV%$/bin$/deliver.pl
+ *mkout %PERL% %SOLARENV%$/bin$/mkout.pl
+ *mwscommit %PERL% %COMMON_ENV_TOOLS%/mwscommit.pl
+ *o cdd %SOLARENV%$/..
+ *r cdd %SOLARROOT%
+ *s cdd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
+ BIG_SVX
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%/copyprj.pl
+ DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
+ DMAKEROOT %SOLARENV%$/inc$/startup
+ ILIB .$:%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%$:%PSDK%$/vc$/lib$:%PSDK%$/lib$:%FSDK%$/lib$:%DSDK%$/lib$/x86
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIB .$:%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%$:%PSDK%$/vc$/lib$:%PSDK%$/lib$:%FSDK%$/lib$:%DSDK%$/lib$/x86$:%SOLAR_STLLIBPATH%
+ MKOUT %PERL% %SOLARENV%$/bin$/mkout.pl
+ MWSCOMMIT %PERL% %COMMON_ENV_TOOLS%/mwscommit.pl
+ PATH %PATH%$:%SHARED_COM_SDK_PATH%$:%PSDK%$/vc$/bin$:%PSDK%$/bin$:%FSDK%$/bin$:%DSDK%$/bin$/Utilities$/bin$/x86$:%PACKMS%
+ PROF_EDITION TRUE
+ PSDKINC -I%PSDK%$/vc$/include -I%PSDK%$/include -I%COMPATH%$/PlatformSDK_VC8$/include
+ SOLAREXTRAINC -I%DSDK%$/include
+ SOLAR_JAVA TRUE
+ TRUSTED_MANIFEST_LOCATION %SOLARENV%$/inc
+ VISTA_MANIFEST TRUE
+ WINDOWS_VISTA_PSDK TRUE
+ XCLASSPATH .
+ ZIPDEP %PERL% %SOLARENV%$/bin$/zipdep.pl
+ }
+ common0
+ {
+ BS_ROOT n:
+ SOLAR_ENV_ROOT r:
+ SOLAR_SOURCE_ROOT o:
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/msvc8p
+ COMPROOT %SOLAR_ENV_ROOT%$/msvc8p
+ DEVROOT %SOLAR_ENV_ROOT%
+ DSDK %SOLAR_ENV_ROOT%$/msvc8p$/DirectXSDK
+ FSDK %SOLAR_ENV_ROOT%$/msvc8p$/Sdk$/v2.0
+ PERL %SOLAR_ENV_ROOT%$/btw$/perl$/bin$/perl
+ PKGFORMAT msi
+ PSDK %SOLAR_ENV_ROOT%$/msvc8p$/PlatformSDK
+ SHARED_COM_SDK_PATH %SOLAR_ENV_ROOT%$/msvc8p$/Common7$/ide
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SO_PACK %SOLAR_ENV_ROOT%$/pack$/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+ }
+ common2
+ {
+ ENABLE_GRAPHITE TRUE
+ BUILD_TOOLS %SOLARROOT%$/btw$/%WORK_STAMP%
+ CALL_CDECL TRUE
+ CDPATHx %CDPATH%$:..$:..$/..$:..$/..$/..$:..$/source$:..$/..$/source$:o:$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+ COM MSC
+ COMEX 11
+ COMMON_BUILD_TOOLS %SOLARROOT%$/btools
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ COMP_ENV wntmsci11
+ CPU I
+ CPUNAME INTEL
+ CVER M1400
+ DYNAMIC_CRT TRUE
+ ENV_TOOLS %SOLARROOT%$/etw$/%WORK_STAMP%
+ GUI WNT
+ GUIBASE WIN
+ GVER NT351
+ INPATH wntmsci11%PROEXT%
+ OS WNT
+ OUTPATH wntmsci11
+ PACKMS %SO_PACK%$/wntmsci11$/MS
+ SET_EXEPTIONS TRUE
+ SHIPDRIVE %BS_ROOT%$/ship$/install
+ SOLAR_JDK13PATH %SOLARROOT%$/jdk1.3
+ SOLAR_JDK14PATH %SOLARROOT%$/j2sdk1.4.2_11
+ SOLAR_JDK15PATH %SOLARROOT%$/jdk1.5.0.06
+ SOLAR_STLPATH %SOLARVERSION%$/wntmsci11%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SORT sort -T %TMP%
+ use_shl_versions TRUE
+ }
+ compath
+ {
+ COMPATH %STAR_COMPATH%
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION %DIST_ROOT%$/%WORK_STAMP%
+ SOLARVER %DIST_ROOT%$/%WORK_STAMP%
+ SOLARVERSION %DIST_ROOT%$/%WORK_STAMP%
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT %ENV_ROOT%
+ }
+ jdk14
+ {
+ HOMEDRIVE %DEVROOT%
+ HOMEPATH $/jdk141
+ JAVAHOME %JDK14PATH%
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%$/include$/win32$:%JDK14PATH%$/include
+ JDKINCS -I%JDK14PATH%$/include -I%JDK14PATH%$/include$/win32
+ JDKLIB %JDK14PATH%$/lib
+ JDKLIBS %JDK14PATH%$/lib
+ JDKPATH %JDK14PATH%$/bin
+ JDK_VERSION 142
+ JREPATH %JDK14PATH%$/jre$/bin$/client
+ XCLASSPATH .$:%JDK14PATH%$/jre$/lib$/rt.jar
+ }
+ jdk14path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH %JDK_PATH%
+ }
+ jdk15
+ {
+ HOMEDRIVE %DEVROOT%
+ HOMEPATH $/jdk151
+ JAVAHOME %JDK15PATH%
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%$/include$/win32$:%JDK15PATH%$/include
+ JDKINCS -I%JDK15PATH%$/include -I%JDK15PATH%$/include$/win32
+ JDKLIB %JDK15PATH%$/lib
+ JDKLIBS %JDK15PATH%$/lib
+ JDKPATH %JDK15PATH%$/bin
+ JDK_VERSION 150
+ JREPATH %JDK15PATH%$/jre$/bin$/client
+ XCLASSPATH .$:%JDK15PATH%$/jre$/lib$/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH %JDK_PATH%
+ }
+ psdk
+ {
+ PSDK %STAR_PSDK%
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT %SOURCE_ROOT%
+ SOURCE_ROOT_USED TRUE
+ }
+ }
+ extern
+ {
+ COMSPEC
+ DIST_ROOT
+ ENV_ROOT
+ JDK_PATH
+ LOCALINI
+ SOL_TMP
+ SOURCE_ROOT
+ }
+ order common0 bs_sourceroot envroot:0 sourceroot:0 common1 distroot:0 cap cax psdk compath common2 jdk14path:0 jdk15path:0 common jdk14 jdk15
+ reset
+ {
+ COPYALL
+ SOLAR_ENV_ROOT
+ WST
+ }
+ script
+ {
+ post
+ {
+ 150: set MYENV_PATH=%PATH
+ 160: set PATH=%SSX_PATH
+ 200: if "%COPYALL%"=="TRUE" %SOLAR_ENV_ROOT%\btw\perl\bin\perl %SOLAR_ENV_ROOT%\etools\lucopy.pl -all %BTARGET% $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 260: set PATH=%MYENV_PATH
+ 270: unset MYENV_PATH
+ 400: if "%SO_GEN_ERROR%" NE "" @echo %SO_GEN_ERROR%
+ 401: if "%SO_GEN_ERROR2%" NE "" echo %SO_GEN_ERROR2%
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ pro
+ psdk STAR_PSDK
+ sourceroot
+ }
+}
+wntmsci12
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT $dp(%SOURCE_ROOT_TMP%)
+ SOURCE_ROOT $dp(%SOURCE_ROOT_TMP%)
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ BUILD_TOOLS %SOL_TMP%$/btw$/%BTOOLDIR%
+ COMPATH %SOL_TMP%$/r$/msvc9p
+ COMPROOT %SOL_TMP%$/r$/msvc9p
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ DSDK %SOL_TMP%$/r$/msvc9p$/DirectXSDK
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
+ FSDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v3.5
+ F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
+ PCLEAN_PATH %SOLARROOT%$/etw
+ PERL %SOL_TMP%$/r$/%PERLDIR%
+ PSDK %SOL_TMP%$/r$/msvc9p$/PlatformSDK$/v6.1
+ SHARED_COM_SDK_PATH %SOL_TMP%$/r$/msvc9p$/Common7$/IDE
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+# TOUCH %SOL_TMP%$/r$/btw$/%BTOOLDIR%$/touch.exe
+
+ }
+ cax
+ {
+ BUILD_TOOLS %SOL_TMP%$/r$/btw$/%BTOOLDIR%
+ COMPATH %SOL_TMP%$/r$/msvc9p
+ COMPROOT %SOL_TMP%$/r$/msvc9p
+ COPYALL FALSE
+ DSDK %COMPATH%$/DirectXSDK
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
+ FSDK %COMPATH%$/Sdk$/v3.5
+ F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
+ PCLEAN_PATH %SOL_TMP%$/r$/etw
+ PERL %SOL_TMP%$/r$/%PERLDIR%
+ PSDK %COMPATH%$/PlatformSDK$/v6.1
+ SHARED_COM_SDK_PATH %COMPATH%$/Common7$/IDE
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+# TOUCH %SOL_TMP%$/r$/btw$/%BTOOLDIR%$/touch.exe
+ }
+ common
+ {
+ *build %PERL% %SOLARENV%$/bin$/build.pl %PROFULLSWITCH%
+ *build_client %PERL% %SOLARENV%$/bin$/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%$/copyprj.pl
+ *deliver %PERL% %SOLARENV%$/bin$/deliver.pl
+ *mkout %PERL% %SOLARENV%$/bin$/mkout.pl
+ *mwscommit %PERL% %COMMON_ENV_TOOLS%$/mwscommit.pl
+ *o cd %SOLARENV%$/..
+ *r cd %SOLARROOT%
+ *s cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
+ *z_ooo %PERL% %SOLARENV%$/bin$/z_ooo.pl
+ BIG_SVX
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%$/copyprj.pl
+ CXX_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/cl.exe
+ DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
+ DMAKEROOT %SOLARENV%$/inc$/startup
+ ENABLE_PCH TRUE
+ ILIB .;%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%;%COMPATH%$/lib;%PSDK%$/lib;%DSDK%$/lib$/x86
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIB .;%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%;%COMPATH%$/lib;%PSDK%$/lib;%DSDK%$/lib$/x86;%SOLAR_STLLIBPATH%
+ LIBMGR_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/lib.exe
+ LINK_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/link.exe
+ MKOUT %PERL% %SOLARENV%$/bin$/mkout.pl
+ MWSCOMMIT %PERL% %COMMON_ENV_TOOLS%$/mwscommit.pl
+ OJDK16PATH %SOLAR_OJDK16PATH%
+ PATH $cp(%PSDK%$/Bin)$:%PATH%$:$cp(%SHARED_COM_SDK_PATH%)$:$cp(%COMPATH%$/bin)$:$cp(%FSDK%)$:$cp(%F20SDK%)$/bin$:$cp(%DSDK%$/Utilities$/bin$/x86)$:$cp(%PACKMS%)
+ PROF_EDITION TRUE
+ PSDKINC -I%PSDK%$/include
+ SOLAREXTRAINC -I%DSDK%$/include
+ SOLAR_JAVA TRUE
+ TRUSTED_MANIFEST_LOCATION %SOLARENV%$/inc
+ USE_DIRECTX5 TRUE
+ WINDOWS_VISTA_PSDK TRUE
+ SYSBASE TRUE
+ WITH_VC_REDIST TRUE
+ XCLASSPATH .
+ ZIPDEP %PERL% %SOLARENV%$/bin$/zipdep.pl
+ BUILD_X64 TRUE
+ CHECK_LUCENCE_INDEXER_OUTPUT TRUE
+ GNUCOPY cp
+ GNUMAKE make
+ }
+ common0
+ {
+ BS_ROOT n:
+ SOLAR_ENV_ROOT r:
+ SOLAR_SOURCE_ROOT o:
+ BTOOLDIR %WORK_STAMP%$/cygtools
+ PERLDIR btw$/%WORK_STAMP%$/cygtools$/perl
+ }
+ common02
+ {
+ PERL perl
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/msvc9p
+ COMPROOT %SOLAR_ENV_ROOT%$/msvc9p
+ DEVROOT %SOLAR_ENV_ROOT%
+ DSDK %SOLAR_ENV_ROOT%$/msvc9p$/DirectXSDK
+ FSDK %SOLAR_ENV_ROOT%$/msvc9p$/Sdk$/v3.5
+ F20SDK %SOLAR_ENV_ROOT%$/msvc9p$/Sdk$/v2.0
+ NSIS_PATH %SOLAR_ENV_ROOT%$/NSIS_242_unicode
+ PERL %SOLAR_ENV_ROOT%$/%PERLDIR%
+ PKGFORMAT msi
+ PSDK %SOLAR_ENV_ROOT%$/msvc9p$/PlatformSDK$/v6.1
+ SHARED_COM_SDK_PATH %SOLAR_ENV_ROOT%$/msvc9p$/Common7$/ide
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SO_PACK %SOLAR_ENV_ROOT%$/pack$/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+# TEMP $dp(%TEMP%)
+# TMP $dp(%TMP%)
+ }
+ common2
+ {
+ ENABLE_GRAPHITE TRUE
+ BUILD_TOOLS %SOLARROOT%$/btw$/%BTOOLDIR%
+ CALL_CDECL TRUE
+ CDPATHx %CDPATH%$:..$:..$/..$:..$/..$/..$:..$/source$:..$/..$/source$:$cp(%SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%)
+ COM MSC
+ COMEX 12
+ COMMON_BUILD_TOOLS $cp(%SOLARROOT%$/btools)
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ COMP_ENV wntmsci12
+ CPU I
+ CPUNAME INTEL
+ CVER M1500
+ DYNAMIC_CRT TRUE
+ ENV_TOOLS %SOLARROOT%$/etw$/%WORK_STAMP%
+ GUI WNT
+ GUIBASE WIN
+ GVER NT351
+ INPATH wntmsci12%PROEXT%
+ LIBMYSQL_PATH %SOLARROOT%$/mysql-connector-c-6.0.2$/wntmsci12
+ MOZILLABUILD %SOLARROOT%/mozilla-build-1.3
+ OS WNT
+ OUTPATH wntmsci12
+ PACKMS %SO_PACK%$/wntmsci12$/MS
+ SET_EXEPTIONS TRUE
+ SHIPDRIVE %SOLAR_ENV_ROOT%$/ship$/install
+ SOLAR_JDK13PATH %SOLARROOT%$/jdk1.3
+ SOLAR_JDK14PATH %SOLARROOT%$/j2sdk1.4.2_11
+ SOLAR_JDK15PATH %SOLARROOT%$/jdk1.5.0.06
+ SOLAR_OJDK16PATH %SOLARROOT%$/openjdk-6-b08-windows-i586
+ SOLAR_STLPATH %SOLARVERSION%$/wntmsci12%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SORT sort -T %TMP%
+# TOUCH %SOLARROOT%$/btw$/%BTOOLDIR%$/touch.exe
+ use_shl_versions TRUE
+ }
+ common:3 IF %UPDATER% == YES
+ {
+ SHIPDRIVE %BS_ROOT%$/ship$/install
+ }
+ compath
+ {
+ COMPATH $dp(%STAR_COMPATH%)
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION $dp(%DIST_ROOT%$/%WORK_STAMP%)
+ SOLARVER $dp(%DIST_ROOT%$/%WORK_STAMP%)
+ SOLARVERSION $dp(%DIST_ROOT%$/%WORK_STAMP%)
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT $dp(%ENV_ROOT%)
+ }
+ jdk14
+ {
+# HOMEDRIVE %DEVROOT%
+# HOMEPATH $/jdk141
+ JAVAHOME %JDK14PATH%
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%$/include$/win32;%JDK14PATH%$/include
+ JDKINCS -I%JDK14PATH%$/include -I%JDK14PATH%$/include$/win32
+ JDKLIB %JDK14PATH%$/lib
+ JDKLIBS %JDK14PATH%$/lib
+ JDKPATH %JDK14PATH%$/bin
+ JDK_VERSION 142
+ JREPATH %JDK14PATH%$/jre$/bin$/client
+ XCLASSPATH .;%JDK14PATH%$/jre$/lib$/rt.jar
+ }
+ jdk14path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH $dp(%JDK_PATH%)
+ }
+ jdk15
+ {
+# HOMEDRIVE %DEVROOT%
+# HOMEPATH $/jdk151
+ JAVAHOME %JDK15PATH%
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%$/include$/win32;%JDK15PATH%$/include
+ JDKINCS -I%JDK15PATH%$/include -I%JDK15PATH%$/include$/win32
+ JDKLIB %JDK15PATH%$/lib
+ JDKLIBS %JDK15PATH%$/lib
+ JDKPATH %JDK15PATH%$/bin
+ JDK_VERSION 150
+ JREPATH %JDK15PATH%$/jre$/bin$/client
+ XCLASSPATH .;%JDK15PATH%$/jre$/lib$/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH $dp(%JDK_PATH%)
+ }
+ ojdk16
+ {
+# HOMEDRIVE %DEVROOT%
+# HOMEPATH $/openjdk-6-b08-windows-i586
+ JAVA_HOME %OJDK16PATH%
+ JDKINC %OJDK16PATH%$/include$/win32;%OJDK16PATH%$/include
+ JDKINCS -I%OJDK16PATH%$/include -I%OJDK16PATH%$/include$/win32
+ JDKLIB %OJDK16PATH%$/lib
+ JDKLIBS %OJDK16PATH%$/lib
+ JDKPATH %OJDK16PATH%$/bin
+ JDK_VERSION 160
+ JREPATH %OJDK16PATH%$/jre$/bin$/client
+ XCLASSPATH .;%OJDK16PATH%$/jre$/lib$/rt.jar
+ }
+ ojdk16path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_OJDK16PATH $dp(%JDK_PATH%)
+ }
+ pro
+ {
+ RES_ENUS TRUE
+ }
+ psdk
+ {
+ PSDK $dp(%STAR_PSDK%)
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT $dp(%SOURCE_ROOT%)
+ SOURCE_ROOT_USED TRUE
+ }
+ tmp
+ {
+ SOL_TMP $dp(%SOL_TMP_DIR%)
+ }
+ }
+ extern
+ {
+ COMSPEC
+ DIST_ROOT
+ ENV_ROOT
+ JDK_PATH
+ LOCALINI
+ OSTYPE
+ $dp(SOL_TMP)
+ $dp(SOURCE_ROOT)
+ $dp(TMP)
+ $dp(TEMP)
+ }
+ order common0 bs_sourceroot tmp envroot:0 sourceroot:0 pro common1 distroot:0 cap cax common02 psdk compath common2 common:3 jdk14path:0 jdk15path:0 ojdk16path:0 common jdk14 jdk15 ojdk16
+ reset
+ {
+ COPYALL
+ CXX_X64_BINARY
+ DB2IMP
+ GCRINC
+ GCRLIB
+ GCRPATH
+ LIBMGR_X64_BINARY
+ LINK_X64_BINARY
+ NSIS_PATH
+ OLD_CHAOS
+ PERLDIR
+ SOLAR_ENV_ROOT
+ TFDEF
+ TFDIR
+ WST
+ }
+ script
+ {
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: perl $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ ojdk16
+ ojdk16path
+ pro
+ psdk STAR_PSDK
+ sourceroot
+ tmp SOL_TMP_DIR
+ }
+}
+wntmsci13
+{
+ environment
+ {
+ bs_sourceroot
+ {
+ SOLAR_SOURCE_ROOT $dp(%SOURCE_ROOT_TMP%)
+ SOURCE_ROOT $dp(%SOURCE_ROOT_TMP%)
+ SOURCE_ROOT_USED TRUE
+ }
+ cap
+ {
+ BUILD_TOOLS %SOL_TMP%$/r$/btw$/%BTOOLDIR%
+ COMPATH %SOL_TMP%$/r$/msvc9p
+ COMPROOT %SOL_TMP%$/r$/msvc9p
+ COPYALL TRUE
+ COPY_PACKED TRUE
+ DEVROOT %SOL_TMP%$/r
+ DSDK %SOL_TMP%$/r$/msvc9p$/DirectXSDK
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
+ FSDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v3.5
+ F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
+ PCLEAN_PATH %SOLARROOT%$/etw
+ PERL %SOL_TMP%$/r$/%PERLDIR%
+ PSDK %SOL_TMP%$/r$/msvc9p$/PlatformSDK$/v6.1
+ SHARED_COM_SDK_PATH %SOL_TMP%$/r$/msvc9p$/Common7$/IDE
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+# TOUCH %SOL_TMP%$/r$/btw$/%BTOOLDIR%$/touch.exe
+
+ }
+ cax
+ {
+ BUILD_TOOLS %SOL_TMP%$/r$/btw$/%BTOOLDIR%
+ COMPATH %SOL_TMP%$/r$/msvc9p
+ COMPROOT %SOL_TMP%$/r$/msvc9p
+ COPYALL FALSE
+ DSDK %COMPATH%$/DirectXSDK
+ ENV_TOOLS %SOL_TMP%$/r$/etw$/%WORK_STAMP%
+ FSDK %COMPATH%$/Sdk$/v3.5
+ F20SDK %SOL_TMP%$/r$/msvc9p$/Sdk$/v2.0
+ NSIS_PATH %SOL_TMP%$/r$/NSIS_242_unicode
+ PCLEAN_PATH %SOL_TMP%$/r$/etw
+ PERL %SOL_TMP%$/r$/%PERLDIR%
+ PSDK %COMPATH%$/PlatformSDK$/v6.1
+ SHARED_COM_SDK_PATH %COMPATH%$/Common7$/IDE
+ SOLARENV %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOL_TMP%$/r
+ SOLARVER %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SOLARVERSION %SOL_TMP%$/o%CWS_WORK_STAMP_EXT%$/%WORK_STAMP%
+ SO_PACK %SOL_TMP%$/r$/pack$/%WORK_STAMP%
+# TOUCH %SOL_TMP%$/r$/btw$/%BTOOLDIR%$/touch.exe
+ }
+ common
+ {
+ *build %PERL% %SOLARENV%$/bin$/build.pl %PROFULLSWITCH%
+ *build_client %PERL% %SOLARENV%$/bin$/build_client.pl
+ *copyprj %PERL% %COMMON_ENV_TOOLS%$/copyprj.pl
+ *deliver %PERL% %SOLARENV%$/bin$/deliver.pl
+ *mkout %PERL% %SOLARENV%$/bin$/mkout.pl
+ *mwscommit %PERL% %COMMON_ENV_TOOLS%$/mwscommit.pl
+ *o cd %SOLARENV%$/..
+ *r cd %SOLARROOT%
+ *s cd %SOLARVERSION%
+ *zipdep %PERL% %SOLARENV%$/bin$/zipdep.pl
+ *z_ooo %PERL% %SOLARENV%$/bin$/z_ooo.pl
+ BIG_SVX
+ COPYPRJ %PERL% %COMMON_ENV_TOOLS%$/copyprj.pl
+ CXX_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/cl.exe
+ DELIVER %PERL% %SOLARENV%$/bin$/deliver.pl
+ DMAKEROOT %SOLARENV%$/inc$/startup
+ ENABLE_PCH TRUE
+ ILIB .;%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%;%COMPATH%$/lib;%PSDK%$/lib;%DSDK%$/lib$/x86
+ JDK13PATH %SOLAR_JDK13PATH%
+ JDK14PATH %SOLAR_JDK14PATH%
+ JDK15PATH %SOLAR_JDK15PATH%
+ LIB .;%SOLARVERSION%$/%INPATH%$/lib%UPDMINOREXT%;%COMPATH%$/lib;%PSDK%$/lib;%DSDK%$/lib$/x86;%SOLAR_STLLIBPATH%
+ LIBMGR_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/lib.exe
+ LINK_X64_BINARY %COMPROOT%$/bin$/x86_amd64$/link.exe
+ MKOUT %PERL% %SOLARENV%$/bin$/mkout.pl
+ MWSCOMMIT %PERL% %COMMON_ENV_TOOLS%$/mwscommit.pl
+ OJDK16PATH %SOLAR_OJDK16PATH%
+ PATH $cp(%PSDK%$/Bin)$:%PATH%$:$cp(%SHARED_COM_SDK_PATH%)$:$cp(%COMPATH%$/bin)$:$cp(%FSDK%)$:$cp(%F20SDK%)$/bin$:$cp(%DSDK%$/Utilities$/bin$/x86)$:$cp(%PACKMS%)
+ PROF_EDITION TRUE
+ PSDKINC -I%PSDK%$/include
+ SOLAREXTRAINC -I%DSDK%$/include
+ SOLAR_JAVA TRUE
+ TRUSTED_MANIFEST_LOCATION %SOLARENV%$/inc
+ USE_DIRECTX5 TRUE
+ WINDOWS_VISTA_PSDK TRUE
+ SYSBASE TRUE
+ WITH_VC_REDIST TRUE
+ XCLASSPATH .
+ ZIPDEP %PERL% %SOLARENV%$/bin$/zipdep.pl
+ BUILD_X64 TRUE
+ GNUCOPY cp
+ GNUMAKE make
+ }
+ common0
+ {
+ BS_ROOT n:
+ SOLAR_ENV_ROOT r:
+ SOLAR_SOURCE_ROOT o:
+ BTOOLDIR %WORK_STAMP%$/cygtools
+ PERLDIR btw$/%WORK_STAMP%$/cygtools$/perl
+ }
+ common02
+ {
+ PERL perl
+ }
+ common1
+ {
+ COMPATH %SOLAR_ENV_ROOT%$/msvc9p
+ COMPROOT %SOLAR_ENV_ROOT%$/msvc9p
+ DEVROOT %SOLAR_ENV_ROOT%
+ DSDK %SOLAR_ENV_ROOT%$/msvc9p$/DirectXSDK
+ FSDK %SOLAR_ENV_ROOT%$/msvc9p$/Sdk$/v3.5
+ F20SDK %SOLAR_ENV_ROOT%$/msvc9p$/Sdk$/v2.0
+ NSIS_PATH %SOLAR_ENV_ROOT%$/NSIS_242_unicode
+ PERL %SOLAR_ENV_ROOT%$/%PERLDIR%
+ PKGFORMAT msi
+ PSDK %SOLAR_ENV_ROOT%$/msvc9p$/PlatformSDK$/v6.1
+ SHARED_COM_SDK_PATH %SOLAR_ENV_ROOT%$/msvc9p$/Common7$/ide
+ SHARED_SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SHARED_SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARENV %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%$/solenv
+ SOLARROOT %SOLAR_ENV_ROOT%
+ SOLARVER %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SOLARVERSION %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%
+ SO_PACK %SOLAR_ENV_ROOT%$/pack$/%WORK_STAMP%
+ SRC_ROOT %SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%
+# TEMP $dp(%TEMP%)
+# TMP $dp(%TMP%)
+ }
+ common2
+ {
+ ENABLE_GRAPHITE TRUE
+ BUILD_TOOLS %SOLARROOT%$/btw$/%BTOOLDIR%
+ CALL_CDECL TRUE
+ CDPATHx %CDPATH%$:..$:..$/..$:..$/..$/..$:..$/source$:..$/..$/source$:$cp(%SOLAR_SOURCE_ROOT%$/%WORK_STAMP%$/ooo%UPDMINOREXT%)
+ COM MSC
+ COMEX 12
+ COMMON_BUILD_TOOLS $cp(%SOLARROOT%$/btools)
+ COMMON_ENV_TOOLS %SOLARROOT%$/etools
+ COMP_ENV wntmsci13
+ CPU I
+ CPUNAME INTEL
+ CVER M1500
+ DYNAMIC_CRT TRUE
+ ENV_TOOLS %SOLARROOT%$/etw$/%WORK_STAMP%
+ GUI WNT
+ GUIBASE WIN
+ GVER NT351
+ INPATH wntmsci13%PROEXT%
+ MOZILLABUILD %SOLARROOT%/mozilla-build-1.3
+ OS WNT
+ OUTPATH wntmsci13
+ PACKMS %SO_PACK%$/wntmsci13$/MS
+ SET_EXEPTIONS TRUE
+ SHIPDRIVE %SOLAR_ENV_ROOT%$/ship$/install
+ SOLAR_JDK13PATH %SOLARROOT%$/jdk1.3
+ SOLAR_JDK14PATH %SOLARROOT%$/j2sdk1.4.2_11
+ SOLAR_JDK15PATH %SOLARROOT%$/jdk1.5.0.06
+ SOLAR_OJDK16PATH %SOLARROOT%$/openjdk-6-b08-windows-i586
+ SOLAR_STLPATH %SOLARVERSION%$/wntmsci13%PROEXT%$/inc%UPDMINOREXT%$/stl
+ SORT sort -T %TMP%
+# TOUCH %SOLARROOT%$/btw$/%BTOOLDIR%$/touch.exe
+ use_shl_versions TRUE
+ }
+ common:3 IF %UPDATER% == YES
+ {
+ SHIPDRIVE %BS_ROOT%$/ship$/install
+ }
+ compath
+ {
+ COMPATH $dp(%STAR_COMPATH%)
+ }
+ distroot:0 if X%DIST_ROOT%X != XX
+ {
+ SHARED_SOLARVERSION $dp(%DIST_ROOT%$/%WORK_STAMP%)
+ SOLARVER $dp(%DIST_ROOT%$/%WORK_STAMP%)
+ SOLARVERSION $dp(%DIST_ROOT%$/%WORK_STAMP%)
+ }
+ envroot:0 IF X%ENV_ROOT%X != XX
+ {
+ SOLAR_ENV_ROOT $dp(%ENV_ROOT%)
+ }
+ jdk14
+ {
+# HOMEDRIVE %DEVROOT%
+# HOMEPATH $/jdk141
+ JAVAHOME %JDK14PATH%
+ JAVA_HOME %JDK14PATH%
+ JDKINC %JDK14PATH%$/include$/win32;%JDK14PATH%$/include
+ JDKINCS -I%JDK14PATH%$/include -I%JDK14PATH%$/include$/win32
+ JDKLIB %JDK14PATH%$/lib
+ JDKLIBS %JDK14PATH%$/lib
+ JDKPATH %JDK14PATH%$/bin
+ JDK_VERSION 142
+ JREPATH %JDK14PATH%$/jre$/bin$/client
+ XCLASSPATH .;%JDK14PATH%$/jre$/lib$/rt.jar
+ }
+ jdk14path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK14PATH $dp(%JDK_PATH%)
+ }
+ jdk15
+ {
+# HOMEDRIVE %DEVROOT%
+# HOMEPATH $/jdk151
+ JAVAHOME %JDK15PATH%
+ JAVA_HOME %JDK15PATH%
+ JDKINC %JDK15PATH%$/include$/win32;%JDK15PATH%$/include
+ JDKINCS -I%JDK15PATH%$/include -I%JDK15PATH%$/include$/win32
+ JDKLIB %JDK15PATH%$/lib
+ JDKLIBS %JDK15PATH%$/lib
+ JDKPATH %JDK15PATH%$/bin
+ JDK_VERSION 150
+ JREPATH %JDK15PATH%$/jre$/bin$/client
+ XCLASSPATH .;%JDK15PATH%$/jre$/lib$/rt.jar
+ }
+ jdk15path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_JDK15PATH $dp(%JDK_PATH%)
+ }
+ ojdk16
+ {
+# HOMEDRIVE %DEVROOT%
+# HOMEPATH $/openjdk-6-b08-windows-i586
+ JAVA_HOME %OJDK16PATH%
+ JDKINC %OJDK16PATH%$/include$/win32;%OJDK16PATH%$/include
+ JDKINCS -I%OJDK16PATH%$/include -I%OJDK16PATH%$/include$/win32
+ JDKLIB %OJDK16PATH%$/lib
+ JDKLIBS %OJDK16PATH%$/lib
+ JDKPATH %OJDK16PATH%$/bin
+ JDK_VERSION 160
+ JREPATH %OJDK16PATH%$/jre$/bin$/client
+ XCLASSPATH .;%OJDK16PATH%$/jre$/lib$/rt.jar
+ }
+ ojdk16path:0 if X%JDK_PATH%X != XX
+ {
+ SOLAR_OJDK16PATH $dp(%JDK_PATH%)
+ }
+ pro
+ {
+ RES_ENUS TRUE
+ }
+ psdk
+ {
+ PSDK $dp(%STAR_PSDK%)
+ }
+ sourceroot:0 if X%SOURCE_ROOT%X != XX
+ {
+ SOLAR_SOURCE_ROOT $dp(%SOURCE_ROOT%)
+ SOURCE_ROOT_USED TRUE
+ }
+ tmp
+ {
+ SOL_TMP $dp(%SOL_TMP_DIR%)
+ }
+ }
+ extern
+ {
+ COMSPEC
+ DIST_ROOT
+ ENV_ROOT
+ JDK_PATH
+ LOCALINI
+ OSTYPE
+ $dp(SOL_TMP)
+ $dp(SOURCE_ROOT)
+ $dp(TMP)
+ $dp(TEMP)
+ }
+ order common0 bs_sourceroot tmp envroot:0 sourceroot:0 pro common1 distroot:0 cap cax common02 psdk compath common2 common:3 jdk14path:0 jdk15path:0 ojdk16path:0 common jdk14 jdk15 ojdk16
+ reset
+ {
+ COPYALL
+ CXX_X64_BINARY
+ DB2IMP
+ GCRINC
+ GCRLIB
+ GCRPATH
+ LIBMGR_X64_BINARY
+ LINK_X64_BINARY
+ NSIS_PATH
+ OLD_CHAOS
+ PERLDIR
+ SOLAR_ENV_ROOT
+ TFDEF
+ TFDIR
+ WST
+ }
+ script
+ {
+ sh
+ {
+ 400: if [ $COPYALL ]; then
+ 410: perl $SOLAR_ENV_ROOT/etools/lucopy.pl all $MAXPROC $LU_HGFLAG $LU_RFLAG $LU_NOSOURCE
+ 415: fi
+ 600: umask 002
+ 800: hash -r
+ 820: wrapfetch.sh
+ 850: if [ "0$SO_GEN_ERROR" -eq 0 ]; then
+ 851: export SO_GEN_ERROR
+ 852: fi
+ 860: if [ "0$SO_GEN_ERROR2" -eq 0 ]; then
+ 861: export SO_GEN_ERROR2
+ 862: fi
+ 870: if [ "0$SO_GEN_ERROR" -ne 0 ]; then
+ 871: echo $SO_GEN_ERROR
+ 872: fi
+ 880: if [ "0$SO_GEN_ERROR2" -ne 0 ]; then
+ 881: echo $SO_GEN_ERROR2
+ 882: fi
+ }
+ }
+ switches
+ {
+ bs_sourceroot SOURCE_ROOT_TMP
+ bsclient
+ cap
+ cax
+ compath STAR_COMPATH
+ distroot
+ envroot
+ jdk14
+ jdk14path
+ jdk15
+ jdk15path
+ l10n L10N_framework
+ ojdk16
+ ojdk16path
+ pro
+ psdk STAR_PSDK
+ sourceroot
+ tmp SOL_TMP_DIR
+ }
+}
+
diff --git a/solenv/doc/gbuild/doxygen.cfg b/solenv/doc/gbuild/doxygen.cfg
new file mode 100644
index 000000000000..2345b58d5c30
--- /dev/null
+++ b/solenv/doc/gbuild/doxygen.cfg
@@ -0,0 +1,1510 @@
+# Doxyfile 1.5.8
+
+# This file describes the settings to be used by the documentation system
+# doxygen (www.doxygen.org) for a project
+#
+# All text after a hash (#) is considered a comment and will be ignored
+# The format is:
+# TAG = value [value, ...]
+# For lists items can also be appended using:
+# TAG += value [value, ...]
+# Values that contain spaces should be placed between quotes (" ")
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+
+# This tag specifies the encoding used for all characters in the config file
+# that follow. The default is UTF-8 which is also the encoding used for all
+# text before the first occurrence of this tag. Doxygen uses libiconv (or the
+# iconv built into libc) for the transcoding. See
+# http://www.gnu.org/software/libiconv for the list of possible encodings.
+
+DOXYFILE_ENCODING = UTF-8
+
+# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
+# by quotes) that should identify the project.
+
+PROJECT_NAME = gbuild
+
+# The PROJECT_NUMBER tag can be used to enter a project or revision number.
+# This could be handy for archiving the generated documentation or
+# if some version control system is used.
+
+PROJECT_NUMBER =
+
+# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
+# base path where the generated documentation will be put.
+# If a relative path is entered, it will be relative to the location
+# where doxygen was started. If left blank the current directory will be used.
+
+OUTPUT_DIRECTORY = ./output
+
+# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
+# 4096 sub-directories (in 2 levels) under the output directory of each output
+# format and will distribute the generated files over these directories.
+# Enabling this option can be useful when feeding doxygen a huge amount of
+# source files, where putting all generated files in the same directory would
+# otherwise cause performance problems for the file system.
+
+CREATE_SUBDIRS = NO
+
+# The OUTPUT_LANGUAGE tag is used to specify the language in which all
+# documentation generated by doxygen is written. Doxygen will use this
+# information to generate all constant output in the proper language.
+# The default language is English, other supported languages are:
+# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
+# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
+# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
+# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
+# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
+# Spanish, Swedish, and Ukrainian.
+
+OUTPUT_LANGUAGE = English
+
+# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
+# include brief member descriptions after the members that are listed in
+# the file and class documentation (similar to JavaDoc).
+# Set to NO to disable this.
+
+BRIEF_MEMBER_DESC = YES
+
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
+# the brief description of a member or function before the detailed description.
+# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
+# brief descriptions will be completely suppressed.
+
+REPEAT_BRIEF = YES
+
+# This tag implements a quasi-intelligent brief description abbreviator
+# that is used to form the text in various listings. Each string
+# in this list, if found as the leading text of the brief description, will be
+# stripped from the text and the result after processing the whole list, is
+# used as the annotated text. Otherwise, the brief description is used as-is.
+# If left blank, the following values are used ("$name" is automatically
+# replaced with the name of the entity): "The $name class" "The $name widget"
+# "The $name file" "is" "provides" "specifies" "contains"
+# "represents" "a" "an" "the"
+
+ABBREVIATE_BRIEF =
+
+# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
+# Doxygen will generate a detailed section even if there is only a brief
+# description.
+
+ALWAYS_DETAILED_SEC = NO
+
+# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
+# inherited members of a class in the documentation of that class as if those
+# members were ordinary class members. Constructors, destructors and assignment
+# operators of the base classes will not be shown.
+
+INLINE_INHERITED_MEMB = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
+# path before files name in the file list and in the header files. If set
+# to NO the shortest path that makes the file name unique will be used.
+
+FULL_PATH_NAMES = YES
+
+# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
+# can be used to strip a user-defined part of the path. Stripping is
+# only done if one of the specified strings matches the left-hand part of
+# the path. The tag can be used to show relative paths in the file list.
+# If left blank the directory from which doxygen is run is used as the
+# path to strip.
+
+STRIP_FROM_PATH =
+
+# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
+# the path mentioned in the documentation of a class, which tells
+# the reader which header file to include in order to use a class.
+# If left blank only the name of the header file containing the class
+# definition is used. Otherwise one should specify the include paths that
+# are normally passed to the compiler using the -I flag.
+
+STRIP_FROM_INC_PATH =
+
+# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
+# (but less readable) file names. This can be useful is your file systems
+# doesn't support long names like on DOS, Mac, or CD-ROM.
+
+SHORT_NAMES = NO
+
+# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
+# will interpret the first line (until the first dot) of a JavaDoc-style
+# comment as the brief description. If set to NO, the JavaDoc
+# comments will behave just like regular Qt-style comments
+# (thus requiring an explicit @brief command for a brief description.)
+
+JAVADOC_AUTOBRIEF = NO
+
+# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
+# interpret the first line (until the first dot) of a Qt-style
+# comment as the brief description. If set to NO, the comments
+# will behave just like regular Qt-style comments (thus requiring
+# an explicit \brief command for a brief description.)
+
+QT_AUTOBRIEF = NO
+
+# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
+# treat a multi-line C++ special comment block (i.e. a block of //! or ///
+# comments) as a brief description. This used to be the default behaviour.
+# The new default is to treat a multi-line C++ comment block as a detailed
+# description. Set this tag to YES if you prefer the old behaviour instead.
+
+MULTILINE_CPP_IS_BRIEF = NO
+
+# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
+# member inherits the documentation from any documented member that it
+# re-implements.
+
+INHERIT_DOCS = YES
+
+# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
+# a new page for each member. If set to NO, the documentation of a member will
+# be part of the file/class/namespace that contains it.
+
+SEPARATE_MEMBER_PAGES = NO
+
+# The TAB_SIZE tag can be used to set the number of spaces in a tab.
+# Doxygen uses this value to replace tabs by spaces in code fragments.
+
+TAB_SIZE = 4
+
+# This tag can be used to specify a number of aliases that acts
+# as commands in the documentation. An alias has the form "name=value".
+# For example adding "sideeffect=\par Side Effects:\n" will allow you to
+# put the command \sideeffect (or @sideeffect) in the documentation, which
+# will result in a user-defined paragraph with heading "Side Effects:".
+# You can put \n's in the value part of an alias to insert newlines.
+
+ALIASES =
+
+# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
+# sources only. Doxygen will then generate output that is more tailored for C.
+# For instance, some of the names that are used will be different. The list
+# of all members will be omitted, etc.
+
+OPTIMIZE_OUTPUT_FOR_C = NO
+
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
+# sources only. Doxygen will then generate output that is more tailored for
+# Java. For instance, namespaces will be presented as packages, qualified
+# scopes will look different, etc.
+
+OPTIMIZE_OUTPUT_JAVA = NO
+
+# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
+# sources only. Doxygen will then generate output that is more tailored for
+# Fortran.
+
+OPTIMIZE_FOR_FORTRAN = NO
+
+# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
+# sources. Doxygen will then generate output that is tailored for
+# VHDL.
+
+OPTIMIZE_OUTPUT_VHDL = NO
+
+# Doxygen selects the parser to use depending on the extension of the files it parses.
+# With this tag you can assign which parser to use for a given extension.
+# Doxygen has a built-in mapping, but you can override or extend it using this tag.
+# The format is ext=language, where ext is a file extension, and language is one of
+# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
+# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
+# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
+# use: inc=Fortran f=C
+
+EXTENSION_MAPPING = mk=IDL
+
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
+# to include (a tag file for) the STL sources as input, then you should
+# set this tag to YES in order to let doxygen match functions declarations and
+# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
+# func(std::string) {}). This also make the inheritance and collaboration
+# diagrams that involve STL classes more complete and accurate.
+
+BUILTIN_STL_SUPPORT = NO
+
+# If you use Microsoft's C++/CLI language, you should set this option to YES to
+# enable parsing support.
+
+CPP_CLI_SUPPORT = NO
+
+# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
+# Doxygen will parse them like normal C++ but will assume all classes use public
+# instead of private inheritance when no explicit protection keyword is present.
+
+SIP_SUPPORT = NO
+
+# For Microsoft's IDL there are propget and propput attributes to indicate getter
+# and setter methods for a property. Setting this option to YES (the default)
+# will make doxygen to replace the get and set methods by a property in the
+# documentation. This will only work if the methods are indeed getting or
+# setting a simple type. If this is not the case, or you want to show the
+# methods anyway, you should set this option to NO.
+
+IDL_PROPERTY_SUPPORT = YES
+
+# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
+# tag is set to YES, then doxygen will reuse the documentation of the first
+# member in the group (if any) for the other members of the group. By default
+# all members of a group must be documented explicitly.
+
+DISTRIBUTE_GROUP_DOC = NO
+
+# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
+# the same type (for instance a group of public functions) to be put as a
+# subgroup of that type (e.g. under the Public Functions section). Set it to
+# NO to prevent subgrouping. Alternatively, this can be done per class using
+# the \nosubgrouping command.
+
+SUBGROUPING = YES
+
+# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
+# is documented as struct, union, or enum with the name of the typedef. So
+# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
+# with name TypeT. When disabled the typedef will appear as a member of a file,
+# namespace, or class. And the struct will be named TypeS. This can typically
+# be useful for C code in case the coding convention dictates that all compound
+# types are typedef'ed and only the typedef is referenced, never the tag name.
+
+TYPEDEF_HIDES_STRUCT = NO
+
+# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
+# determine which symbols to keep in memory and which to flush to disk.
+# When the cache is full, less often used symbols will be written to disk.
+# For small to medium size projects (<1000 input files) the default value is
+# probably good enough. For larger projects a too small cache size can cause
+# doxygen to be busy swapping symbols to and from disk most of the time
+# causing a significant performance penality.
+# If the system has enough physical memory increasing the cache will improve the
+# performance by keeping more symbols in memory. Note that the value works on
+# a logarithmic scale so increasing the size by one will rougly double the
+# memory usage. The cache size is given by this formula:
+# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
+# corresponding to a cache size of 2^16 = 65536 symbols
+
+SYMBOL_CACHE_SIZE = 0
+
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+
+# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
+# documentation are documented, even if no documentation was available.
+# Private class members and static file members will be hidden unless
+# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
+
+EXTRACT_ALL = YES
+
+# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
+# will be included in the documentation.
+
+EXTRACT_PRIVATE = YES
+
+# If the EXTRACT_STATIC tag is set to YES all static members of a file
+# will be included in the documentation.
+
+EXTRACT_STATIC = YES
+
+# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
+# defined locally in source files will be included in the documentation.
+# If set to NO only classes defined in header files are included.
+
+EXTRACT_LOCAL_CLASSES = YES
+
+# This flag is only useful for Objective-C code. When set to YES local
+# methods, which are defined in the implementation section but not in
+# the interface are included in the documentation.
+# If set to NO (the default) only methods in the interface are included.
+
+EXTRACT_LOCAL_METHODS = NO
+
+# If this flag is set to YES, the members of anonymous namespaces will be
+# extracted and appear in the documentation as a namespace called
+# 'anonymous_namespace{file}', where file will be replaced with the base
+# name of the file that contains the anonymous namespace. By default
+# anonymous namespace are hidden.
+
+EXTRACT_ANON_NSPACES = NO
+
+# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
+# undocumented members of documented classes, files or namespaces.
+# If set to NO (the default) these members will be included in the
+# various overviews, but no documentation section is generated.
+# This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_MEMBERS = NO
+
+# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
+# undocumented classes that are normally visible in the class hierarchy.
+# If set to NO (the default) these classes will be included in the various
+# overviews. This option has no effect if EXTRACT_ALL is enabled.
+
+HIDE_UNDOC_CLASSES = NO
+
+# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
+# friend (class|struct|union) declarations.
+# If set to NO (the default) these declarations will be included in the
+# documentation.
+
+HIDE_FRIEND_COMPOUNDS = NO
+
+# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
+# documentation blocks found inside the body of a function.
+# If set to NO (the default) these blocks will be appended to the
+# function's detailed documentation block.
+
+HIDE_IN_BODY_DOCS = NO
+
+# The INTERNAL_DOCS tag determines if documentation
+# that is typed after a \internal command is included. If the tag is set
+# to NO (the default) then the documentation will be excluded.
+# Set it to YES to include the internal documentation.
+
+INTERNAL_DOCS = NO
+
+# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
+# file names in lower-case letters. If set to YES upper-case letters are also
+# allowed. This is useful if you have classes or files whose names only differ
+# in case and if your file system supports case sensitive file names. Windows
+# and Mac users are advised to set this option to NO.
+
+CASE_SENSE_NAMES = YES
+
+# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
+# will show members with their full class and namespace scopes in the
+# documentation. If set to YES the scope will be hidden.
+
+HIDE_SCOPE_NAMES = NO
+
+# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
+# will put a list of the files that are included by a file in the documentation
+# of that file.
+
+SHOW_INCLUDE_FILES = YES
+
+# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
+# is inserted in the documentation for inline members.
+
+INLINE_INFO = YES
+
+# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
+# will sort the (detailed) documentation of file and class members
+# alphabetically by member name. If set to NO the members will appear in
+# declaration order.
+
+SORT_MEMBER_DOCS = YES
+
+# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
+# brief documentation of file, namespace and class members alphabetically
+# by member name. If set to NO (the default) the members will appear in
+# declaration order.
+
+SORT_BRIEF_DOCS = NO
+
+# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
+# hierarchy of group names into alphabetical order. If set to NO (the default)
+# the group names will appear in their defined order.
+
+SORT_GROUP_NAMES = NO
+
+# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
+# sorted by fully-qualified names, including namespaces. If set to
+# NO (the default), the class list will be sorted only by class name,
+# not including the namespace part.
+# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
+# Note: This option applies only to the class list, not to the
+# alphabetical list.
+
+SORT_BY_SCOPE_NAME = NO
+
+# The GENERATE_TODOLIST tag can be used to enable (YES) or
+# disable (NO) the todo list. This list is created by putting \todo
+# commands in the documentation.
+
+GENERATE_TODOLIST = YES
+
+# The GENERATE_TESTLIST tag can be used to enable (YES) or
+# disable (NO) the test list. This list is created by putting \test
+# commands in the documentation.
+
+GENERATE_TESTLIST = YES
+
+# The GENERATE_BUGLIST tag can be used to enable (YES) or
+# disable (NO) the bug list. This list is created by putting \bug
+# commands in the documentation.
+
+GENERATE_BUGLIST = YES
+
+# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
+# disable (NO) the deprecated list. This list is created by putting
+# \deprecated commands in the documentation.
+
+GENERATE_DEPRECATEDLIST= YES
+
+# The ENABLED_SECTIONS tag can be used to enable conditional
+# documentation sections, marked by \if sectionname ... \endif.
+
+ENABLED_SECTIONS =
+
+# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
+# the initial value of a variable or define consists of for it to appear in
+# the documentation. If the initializer consists of more lines than specified
+# here it will be hidden. Use a value of 0 to hide initializers completely.
+# The appearance of the initializer of individual variables and defines in the
+# documentation can be controlled using \showinitializer or \hideinitializer
+# command in the documentation regardless of this setting.
+
+MAX_INITIALIZER_LINES = 30
+
+# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
+# at the bottom of the documentation of classes and structs. If set to YES the
+# list will mention the files that were used to generate the documentation.
+
+SHOW_USED_FILES = YES
+
+# If the sources in your project are distributed over multiple directories
+# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
+# in the documentation. The default is NO.
+
+SHOW_DIRECTORIES = NO
+
+# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
+# This will remove the Files entry from the Quick Index and from the
+# Folder Tree View (if specified). The default is YES.
+
+SHOW_FILES = YES
+
+# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
+# Namespaces page.
+# This will remove the Namespaces entry from the Quick Index
+# and from the Folder Tree View (if specified). The default is YES.
+
+SHOW_NAMESPACES = YES
+
+# The FILE_VERSION_FILTER tag can be used to specify a program or script that
+# doxygen should invoke to get the current version for each file (typically from
+# the version control system). Doxygen will invoke the program by executing (via
+# popen()) the command <command> <input-file>, where <command> is the value of
+# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
+# provided by doxygen. Whatever the program writes to standard output
+# is used as the file version. See the manual for examples.
+
+FILE_VERSION_FILTER =
+
+# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
+# doxygen. The layout file controls the global structure of the generated output files
+# in an output format independent way. The create the layout file that represents
+# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
+# file name after the option, if omitted DoxygenLayout.xml will be used as the name
+# of the layout file.
+
+LAYOUT_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+
+# The QUIET tag can be used to turn on/off the messages that are generated
+# by doxygen. Possible values are YES and NO. If left blank NO is used.
+
+QUIET = NO
+
+# The WARNINGS tag can be used to turn on/off the warning messages that are
+# generated by doxygen. Possible values are YES and NO. If left blank
+# NO is used.
+
+WARNINGS = YES
+
+# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
+# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
+# automatically be disabled.
+
+WARN_IF_UNDOCUMENTED = YES
+
+# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
+# potential errors in the documentation, such as not documenting some
+# parameters in a documented function, or documenting parameters that
+# don't exist or using markup commands wrongly.
+
+WARN_IF_DOC_ERROR = YES
+
+# This WARN_NO_PARAMDOC option can be abled to get warnings for
+# functions that are documented, but have no documentation for their parameters
+# or return value. If set to NO (the default) doxygen will only warn about
+# wrong or incomplete parameter documentation, but not about the absence of
+# documentation.
+
+WARN_NO_PARAMDOC = NO
+
+# The WARN_FORMAT tag determines the format of the warning messages that
+# doxygen can produce. The string should contain the $file, $line, and $text
+# tags, which will be replaced by the file and line number from which the
+# warning originated and the warning text. Optionally the format may contain
+# $version, which will be replaced by the version of the file (if it could
+# be obtained via FILE_VERSION_FILTER)
+
+WARN_FORMAT = "$file:$line: $text"
+
+# The WARN_LOGFILE tag can be used to specify a file to which warning
+# and error messages should be written. If left blank the output is written
+# to stderr.
+
+WARN_LOGFILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+
+# The INPUT tag can be used to specify the files and/or directories that contain
+# documented source files. You may enter file names like "myfile.cpp" or
+# directories like "/usr/src/myproject". Separate the files or directories
+# with spaces.
+
+INPUT = solenv/gbuild
+
+# This tag can be used to specify the character encoding of the source files
+# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
+# also the default input encoding. Doxygen uses libiconv (or the iconv built
+# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
+# the list of possible encodings.
+
+INPUT_ENCODING = UTF-8
+
+# If the value of the INPUT tag contains directories, you can use the
+# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank the following patterns are tested:
+# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
+# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
+
+FILE_PATTERNS = *.mk
+
+# The RECURSIVE tag can be used to turn specify whether or not subdirectories
+# should be searched for input files as well. Possible values are YES and NO.
+# If left blank NO is used.
+
+RECURSIVE = YES
+
+# The EXCLUDE tag can be used to specify files and/or directories that should
+# excluded from the INPUT source files. This way you can easily exclude a
+# subdirectory from a directory tree whose root is specified with the INPUT tag.
+
+EXCLUDE =
+
+# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
+# directories that are symbolic links (a Unix filesystem feature) are excluded
+# from the input.
+
+EXCLUDE_SYMLINKS = NO
+
+# If the value of the INPUT tag contains directories, you can use the
+# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
+# certain files from those directories. Note that the wildcards are matched
+# against the file with absolute path, so to exclude all test directories
+# for example use the pattern */test/*
+
+EXCLUDE_PATTERNS =
+
+# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
+# (namespaces, classes, functions, etc.) that should be excluded from the
+# output. The symbol name can be a fully qualified name, a word, or if the
+# wildcard * is used, a substring. Examples: ANamespace, AClass,
+# AClass::ANamespace, ANamespace::*Test
+
+EXCLUDE_SYMBOLS =
+
+# The EXAMPLE_PATH tag can be used to specify one or more files or
+# directories that contain example code fragments that are included (see
+# the \include command).
+
+EXAMPLE_PATH =
+
+# If the value of the EXAMPLE_PATH tag contains directories, you can use the
+# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
+# and *.h) to filter out the source-files in the directories. If left
+# blank all files are included.
+
+EXAMPLE_PATTERNS =
+
+# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
+# searched for input files to be used with the \include or \dontinclude
+# commands irrespective of the value of the RECURSIVE tag.
+# Possible values are YES and NO. If left blank NO is used.
+
+EXAMPLE_RECURSIVE = NO
+
+# The IMAGE_PATH tag can be used to specify one or more files or
+# directories that contain image that are included in the documentation (see
+# the \image command).
+
+IMAGE_PATH =
+
+# The INPUT_FILTER tag can be used to specify a program that doxygen should
+# invoke to filter for each input file. Doxygen will invoke the filter program
+# by executing (via popen()) the command <filter> <input-file>, where <filter>
+# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
+# input file. Doxygen will then use the output that the filter program writes
+# to standard output.
+# If FILTER_PATTERNS is specified, this tag will be
+# ignored.
+
+INPUT_FILTER =
+
+# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
+# basis.
+# Doxygen will compare the file name with each pattern and apply the
+# filter if there is a match.
+# The filters are a list of the form:
+# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
+# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
+# is applied to all files.
+
+FILTER_PATTERNS =
+
+# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
+# INPUT_FILTER) will be used to filter the input files when producing source
+# files to browse (i.e. when SOURCE_BROWSER is set to YES).
+
+FILTER_SOURCE_FILES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+
+# If the SOURCE_BROWSER tag is set to YES then a list of source files will
+# be generated. Documented entities will be cross-referenced with these sources.
+# Note: To get rid of all source code in the generated output, make sure also
+# VERBATIM_HEADERS is set to NO.
+
+SOURCE_BROWSER = NO
+
+# Setting the INLINE_SOURCES tag to YES will include the body
+# of functions and classes directly in the documentation.
+
+INLINE_SOURCES = NO
+
+# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
+# doxygen to hide any special comment blocks from generated source code
+# fragments. Normal C and C++ comments will always remain visible.
+
+STRIP_CODE_COMMENTS = YES
+
+# If the REFERENCED_BY_RELATION tag is set to YES
+# then for each documented function all documented
+# functions referencing it will be listed.
+
+REFERENCED_BY_RELATION = NO
+
+# If the REFERENCES_RELATION tag is set to YES
+# then for each documented function all documented entities
+# called/used by that function will be listed.
+
+REFERENCES_RELATION = NO
+
+# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
+# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
+# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
+# link to the source code.
+# Otherwise they will link to the documentation.
+
+REFERENCES_LINK_SOURCE = YES
+
+# If the USE_HTAGS tag is set to YES then the references to source code
+# will point to the HTML generated by the htags(1) tool instead of doxygen
+# built-in source browser. The htags tool is part of GNU's global source
+# tagging system (see http://www.gnu.org/software/global/global.html). You
+# will need version 4.8.6 or higher.
+
+USE_HTAGS = NO
+
+# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
+# will generate a verbatim copy of the header file for each class for
+# which an include is specified. Set to NO to disable this.
+
+VERBATIM_HEADERS = YES
+
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+
+# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
+# of all compounds will be generated. Enable this if the project
+# contains a lot of classes, structs, unions or interfaces.
+
+ALPHABETICAL_INDEX = NO
+
+# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
+# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
+# in which this list will be split (can be a number in the range [1..20])
+
+COLS_IN_ALPHA_INDEX = 5
+
+# In case all classes in a project start with a common prefix, all
+# classes will be put under the same header in the alphabetical index.
+# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
+# should be ignored while generating the index headers.
+
+IGNORE_PREFIX =
+
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
+# generate HTML output.
+
+GENERATE_HTML = YES
+
+# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `html' will be used as the default path.
+
+HTML_OUTPUT = html
+
+# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
+# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
+# doxygen will generate files with .html extension.
+
+HTML_FILE_EXTENSION = .html
+
+# The HTML_HEADER tag can be used to specify a personal HTML header for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard header.
+
+HTML_HEADER =
+
+# The HTML_FOOTER tag can be used to specify a personal HTML footer for
+# each generated HTML page. If it is left blank doxygen will generate a
+# standard footer.
+
+HTML_FOOTER =
+
+# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
+# style sheet that is used by each HTML page. It can be used to
+# fine-tune the look of the HTML output. If the tag is left blank doxygen
+# will generate a default style sheet. Note that doxygen will try to copy
+# the style sheet file to the HTML output directory, so don't put your own
+# stylesheet in the HTML output directory as well, or it will be erased!
+
+HTML_STYLESHEET =
+
+# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
+# files or namespaces will be aligned in HTML using tables. If set to
+# NO a bullet list will be used.
+
+HTML_ALIGN_MEMBERS = YES
+
+# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
+# documentation will contain sections that can be hidden and shown after the
+# page has loaded. For this to work a browser that supports
+# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
+# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
+
+HTML_DYNAMIC_SECTIONS = NO
+
+# If the GENERATE_DOCSET tag is set to YES, additional index files
+# will be generated that can be used as input for Apple's Xcode 3
+# integrated development environment, introduced with OSX 10.5 (Leopard).
+# To create a documentation set, doxygen will generate a Makefile in the
+# HTML output directory. Running make will produce the docset in that
+# directory and running "make install" will install the docset in
+# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
+# it at startup.
+# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
+
+GENERATE_DOCSET = NO
+
+# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
+# feed. A documentation feed provides an umbrella under which multiple
+# documentation sets from a single provider (such as a company or product suite)
+# can be grouped.
+
+DOCSET_FEEDNAME = "Doxygen generated docs"
+
+# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
+# should uniquely identify the documentation set bundle. This should be a
+# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
+# will append .docset to the name.
+
+DOCSET_BUNDLE_ID = org.openoffice.gbuild
+
+# If the GENERATE_HTMLHELP tag is set to YES, additional index files
+# will be generated that can be used as input for tools like the
+# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
+# of the generated HTML documentation.
+
+GENERATE_HTMLHELP = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
+# be used to specify the file name of the resulting .chm file. You
+# can add a path in front of the file if the result should not be
+# written to the html output directory.
+
+CHM_FILE =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
+# be used to specify the location (absolute path including file name) of
+# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
+# the HTML help compiler on the generated index.hhp.
+
+HHC_LOCATION =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
+# controls if a separate .chi index file is generated (YES) or that
+# it should be included in the master .chm file (NO).
+
+GENERATE_CHI = NO
+
+# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
+# is used to encode HtmlHelp index (hhk), content (hhc) and project file
+# content.
+
+CHM_INDEX_ENCODING =
+
+# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
+# controls whether a binary table of contents is generated (YES) or a
+# normal table of contents (NO) in the .chm file.
+
+BINARY_TOC = NO
+
+# The TOC_EXPAND flag can be set to YES to add extra items for group members
+# to the contents of the HTML help documentation and to the tree view.
+
+TOC_EXPAND = NO
+
+# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
+# are set, an additional index file will be generated that can be used as input for
+# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
+# HTML documentation.
+
+GENERATE_QHP = NO
+
+# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
+# be used to specify the file name of the resulting .qch file.
+# The path specified is relative to the HTML output folder.
+
+QCH_FILE =
+
+# The QHP_NAMESPACE tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#namespace
+
+QHP_NAMESPACE =
+
+# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
+# Qt Help Project output. For more information please see
+# http://doc.trolltech.com/qthelpproject.html#virtual-folders
+
+QHP_VIRTUAL_FOLDER = doc
+
+# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
+# For more information please see
+# http://doc.trolltech.com/qthelpproject.html#custom-filters
+
+QHP_CUST_FILTER_NAME =
+
+# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
+# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
+
+QHP_CUST_FILTER_ATTRS =
+
+# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
+# filter section matches.
+# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
+
+QHP_SECT_FILTER_ATTRS =
+
+# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
+# be used to specify the location of Qt's qhelpgenerator.
+# If non-empty doxygen will try to run qhelpgenerator on the generated
+# .qhp file.
+
+QHG_LOCATION =
+
+# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
+# top of each HTML page. The value NO (the default) enables the index and
+# the value YES disables it.
+
+DISABLE_INDEX = NO
+
+# This tag can be used to set the number of enum values (range [1..20])
+# that doxygen will group on one line in the generated HTML documentation.
+
+ENUM_VALUES_PER_LINE = 4
+
+# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
+# structure should be generated to display hierarchical information.
+# If the tag value is set to FRAME, a side panel will be generated
+# containing a tree-like index structure (just like the one that
+# is generated for HTML Help). For this to work a browser that supports
+# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
+# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
+# probably better off using the HTML help feature. Other possible values
+# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
+# and Class Hierarchy pages using a tree view instead of an ordered list;
+# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
+# disables this behavior completely. For backwards compatibility with previous
+# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
+# respectively.
+
+GENERATE_TREEVIEW = NONE
+
+# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
+# used to set the initial width (in pixels) of the frame in which the tree
+# is shown.
+
+TREEVIEW_WIDTH = 250
+
+# Use this tag to change the font size of Latex formulas included
+# as images in the HTML documentation. The default is 10. Note that
+# when you change the font size after a successful doxygen run you need
+# to manually remove any form_*.png images from the HTML output directory
+# to force them to be regenerated.
+
+FORMULA_FONTSIZE = 10
+
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
+# generate Latex output.
+
+GENERATE_LATEX = YES
+
+# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `latex' will be used as the default path.
+
+LATEX_OUTPUT = latex
+
+# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
+# invoked. If left blank `latex' will be used as the default command name.
+
+LATEX_CMD_NAME = latex
+
+# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
+# generate index for LaTeX. If left blank `makeindex' will be used as the
+# default command name.
+
+MAKEINDEX_CMD_NAME = makeindex
+
+# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
+# LaTeX documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_LATEX = NO
+
+# The PAPER_TYPE tag can be used to set the paper type that is used
+# by the printer. Possible values are: a4, a4wide, letter, legal and
+# executive. If left blank a4wide will be used.
+
+PAPER_TYPE = a4wide
+
+# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
+# packages that should be included in the LaTeX output.
+
+EXTRA_PACKAGES =
+
+# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
+# the generated latex document. The header should contain everything until
+# the first chapter. If it is left blank doxygen will generate a
+# standard header. Notice: only use this tag if you know what you are doing!
+
+LATEX_HEADER =
+
+# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
+# is prepared for conversion to pdf (using ps2pdf). The pdf file will
+# contain links (just like the HTML output) instead of page references
+# This makes the output suitable for online browsing using a pdf viewer.
+
+PDF_HYPERLINKS = YES
+
+# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
+# plain latex in the generated Makefile. Set this option to YES to get a
+# higher quality PDF documentation.
+
+USE_PDFLATEX = YES
+
+# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
+# command to the generated LaTeX files. This will instruct LaTeX to keep
+# running if errors occur, instead of asking the user for help.
+# This option is also used when generating formulas in HTML.
+
+LATEX_BATCHMODE = NO
+
+# If LATEX_HIDE_INDICES is set to YES then doxygen will not
+# include the index chapters (such as File Index, Compound Index, etc.)
+# in the output.
+
+LATEX_HIDE_INDICES = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
+# The RTF output is optimized for Word 97 and may not look very pretty with
+# other RTF readers or editors.
+
+GENERATE_RTF = NO
+
+# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `rtf' will be used as the default path.
+
+RTF_OUTPUT = rtf
+
+# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
+# RTF documents. This may be useful for small projects and may help to
+# save some trees in general.
+
+COMPACT_RTF = NO
+
+# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
+# will contain hyperlink fields. The RTF file will
+# contain links (just like the HTML output) instead of page references.
+# This makes the output suitable for online browsing using WORD or other
+# programs which support those fields.
+# Note: wordpad (write) and others do not support links.
+
+RTF_HYPERLINKS = NO
+
+# Load stylesheet definitions from file. Syntax is similar to doxygen's
+# config file, i.e. a series of assignments. You only have to provide
+# replacements, missing definitions are set to their default value.
+
+RTF_STYLESHEET_FILE =
+
+# Set optional variables used in the generation of an rtf document.
+# Syntax is similar to doxygen's config file.
+
+RTF_EXTENSIONS_FILE =
+
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
+# generate man pages
+
+GENERATE_MAN = NO
+
+# The MAN_OUTPUT tag is used to specify where the man pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `man' will be used as the default path.
+
+MAN_OUTPUT = man
+
+# The MAN_EXTENSION tag determines the extension that is added to
+# the generated man pages (default is the subroutine's section .3)
+
+MAN_EXTENSION = .3
+
+# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
+# then it will generate one additional man file for each entity
+# documented in the real man page(s). These additional files
+# only source the real man page, but without them the man command
+# would be unable to find the correct page. The default is NO.
+
+MAN_LINKS = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_XML tag is set to YES Doxygen will
+# generate an XML file that captures the structure of
+# the code including all documentation.
+
+GENERATE_XML = NO
+
+# The XML_OUTPUT tag is used to specify where the XML pages will be put.
+# If a relative path is entered the value of OUTPUT_DIRECTORY will be
+# put in front of it. If left blank `xml' will be used as the default path.
+
+XML_OUTPUT = xml
+
+# The XML_SCHEMA tag can be used to specify an XML schema,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_SCHEMA =
+
+# The XML_DTD tag can be used to specify an XML DTD,
+# which can be used by a validating XML parser to check the
+# syntax of the XML files.
+
+XML_DTD =
+
+# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
+# dump the program listings (including syntax highlighting
+# and cross-referencing information) to the XML output. Note that
+# enabling this will significantly increase the size of the XML output.
+
+XML_PROGRAMLISTING = YES
+
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
+# generate an AutoGen Definitions (see autogen.sf.net) file
+# that captures the structure of the code including all
+# documentation. Note that this feature is still experimental
+# and incomplete at the moment.
+
+GENERATE_AUTOGEN_DEF = NO
+
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+
+# If the GENERATE_PERLMOD tag is set to YES Doxygen will
+# generate a Perl module file that captures the structure of
+# the code including all documentation. Note that this
+# feature is still experimental and incomplete at the
+# moment.
+
+GENERATE_PERLMOD = NO
+
+# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
+# the necessary Makefile rules, Perl scripts and LaTeX code to be able
+# to generate PDF and DVI output from the Perl module output.
+
+PERLMOD_LATEX = NO
+
+# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
+# nicely formatted so it can be parsed by a human reader.
+# This is useful
+# if you want to understand what is going on.
+# On the other hand, if this
+# tag is set to NO the size of the Perl module output will be much smaller
+# and Perl will parse it just the same.
+
+PERLMOD_PRETTY = YES
+
+# The names of the make variables in the generated doxyrules.make file
+# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
+# This is useful so different doxyrules.make files included by the same
+# Makefile don't overwrite each other's variables.
+
+PERLMOD_MAKEVAR_PREFIX =
+
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor
+#---------------------------------------------------------------------------
+
+# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
+# evaluate all C-preprocessor directives found in the sources and include
+# files.
+
+ENABLE_PREPROCESSING = YES
+
+# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
+# names in the source code. If set to NO (the default) only conditional
+# compilation will be performed. Macro expansion can be done in a controlled
+# way by setting EXPAND_ONLY_PREDEF to YES.
+
+MACRO_EXPANSION = NO
+
+# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
+# then the macro expansion is limited to the macros specified with the
+# PREDEFINED and EXPAND_AS_DEFINED tags.
+
+EXPAND_ONLY_PREDEF = NO
+
+# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
+# in the INCLUDE_PATH (see below) will be search if a #include is found.
+
+SEARCH_INCLUDES = YES
+
+# The INCLUDE_PATH tag can be used to specify one or more directories that
+# contain include files that are not input files but should be processed by
+# the preprocessor.
+
+INCLUDE_PATH =
+
+# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
+# patterns (like *.h and *.hpp) to filter out the header-files in the
+# directories. If left blank, the patterns specified with FILE_PATTERNS will
+# be used.
+
+INCLUDE_FILE_PATTERNS =
+
+# The PREDEFINED tag can be used to specify one or more macro names that
+# are defined before the preprocessor is started (similar to the -D option of
+# gcc). The argument of the tag is a list of macros of the form: name
+# or name=definition (no spaces). If the definition and the = are
+# omitted =1 is assumed. To prevent a macro definition from being
+# undefined via #undef or recursively expanded use the := operator
+# instead of the = operator.
+
+PREDEFINED =
+
+# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
+# this tag can be used to specify a list of macro names that should be expanded.
+# The macro definition that is found in the sources will be used.
+# Use the PREDEFINED tag if you want to use a different macro definition.
+
+EXPAND_AS_DEFINED =
+
+# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
+# doxygen's preprocessor will remove all function-like macros that are alone
+# on a line, have an all uppercase name, and do not end with a semicolon. Such
+# function macros are typically used for boiler-plate code, and will confuse
+# the parser if not removed.
+
+SKIP_FUNCTION_MACROS = YES
+
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references
+#---------------------------------------------------------------------------
+
+# The TAGFILES option can be used to specify one or more tagfiles.
+# Optionally an initial location of the external documentation
+# can be added for each tagfile. The format of a tag file without
+# this location is as follows:
+#
+# TAGFILES = file1 file2 ...
+# Adding location for the tag files is done as follows:
+#
+# TAGFILES = file1=loc1 "file2 = loc2" ...
+# where "loc1" and "loc2" can be relative or absolute paths or
+# URLs. If a location is present for each tag, the installdox tool
+# does not have to be run to correct the links.
+# Note that each tag file must have a unique name
+# (where the name does NOT include the path)
+# If a tag file is not located in the directory in which doxygen
+# is run, you must also specify the path to the tagfile here.
+
+TAGFILES =
+
+# When a file name is specified after GENERATE_TAGFILE, doxygen will create
+# a tag file that is based on the input files it reads.
+
+GENERATE_TAGFILE =
+
+# If the ALLEXTERNALS tag is set to YES all external classes will be listed
+# in the class index. If set to NO only the inherited external classes
+# will be listed.
+
+ALLEXTERNALS = NO
+
+# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
+# in the modules index. If set to NO, only the current project's groups will
+# be listed.
+
+EXTERNAL_GROUPS = YES
+
+# The PERL_PATH should be the absolute path and name of the perl script
+# interpreter (i.e. the result of `which perl').
+
+PERL_PATH = /usr/bin/perl
+
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool
+#---------------------------------------------------------------------------
+
+# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
+# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
+# or super classes. Setting the tag to NO turns the diagrams off. Note that
+# this option is superseded by the HAVE_DOT option below. This is only a
+# fallback. It is recommended to install and use dot, since it yields more
+# powerful graphs.
+
+CLASS_DIAGRAMS = YES
+
+# You can define message sequence charts within doxygen comments using the \msc
+# command. Doxygen will then run the mscgen tool (see
+# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
+# documentation. The MSCGEN_PATH tag allows you to specify the directory where
+# the mscgen tool resides. If left empty the tool is assumed to be found in the
+# default search path.
+
+MSCGEN_PATH =
+
+# If set to YES, the inheritance and collaboration graphs will hide
+# inheritance and usage relations if the target is undocumented
+# or is not a class.
+
+HIDE_UNDOC_RELATIONS = YES
+
+# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
+# available from the path. This tool is part of Graphviz, a graph visualization
+# toolkit from AT&T and Lucent Bell Labs. The other options in this section
+# have no effect if this option is set to NO (the default)
+
+HAVE_DOT = NO
+
+# By default doxygen will write a font called FreeSans.ttf to the output
+# directory and reference it in all dot files that doxygen generates. This
+# font does not include all possible unicode characters however, so when you need
+# these (or just want a differently looking font) you can specify the font name
+# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
+# which can be done by putting it in a standard location or by setting the
+# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
+# containing the font.
+
+DOT_FONTNAME = FreeSans
+
+# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
+# The default size is 10pt.
+
+DOT_FONTSIZE = 10
+
+# By default doxygen will tell dot to use the output directory to look for the
+# FreeSans.ttf font (which doxygen will put there itself). If you specify a
+# different font using DOT_FONTNAME you can set the path where dot
+# can find it using this tag.
+
+DOT_FONTPATH =
+
+# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect inheritance relations. Setting this tag to YES will force the
+# the CLASS_DIAGRAMS tag to NO.
+
+CLASS_GRAPH = YES
+
+# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for each documented class showing the direct and
+# indirect implementation dependencies (inheritance, containment, and
+# class references variables) of the class with other documented classes.
+
+COLLABORATION_GRAPH = YES
+
+# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
+# will generate a graph for groups, showing the direct groups dependencies
+
+GROUP_GRAPHS = YES
+
+# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
+# collaboration diagrams in a style similar to the OMG's Unified Modeling
+# Language.
+
+UML_LOOK = NO
+
+# If set to YES, the inheritance and collaboration graphs will show the
+# relations between templates and their instances.
+
+TEMPLATE_RELATIONS = NO
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
+# tags are set to YES then doxygen will generate a graph for each documented
+# file showing the direct and indirect include dependencies of the file with
+# other documented files.
+
+INCLUDE_GRAPH = YES
+
+# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
+# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
+# documented header file showing the documented files that directly or
+# indirectly include this file.
+
+INCLUDED_BY_GRAPH = YES
+
+# If the CALL_GRAPH and HAVE_DOT options are set to YES then
+# doxygen will generate a call dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable call graphs
+# for selected functions only using the \callgraph command.
+
+CALL_GRAPH = NO
+
+# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
+# doxygen will generate a caller dependency graph for every global function
+# or class method. Note that enabling this option will significantly increase
+# the time of a run. So in most cases it will be better to enable caller
+# graphs for selected functions only using the \callergraph command.
+
+CALLER_GRAPH = NO
+
+# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
+# will graphical hierarchy of all classes instead of a textual one.
+
+GRAPHICAL_HIERARCHY = YES
+
+# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
+# then doxygen will show the dependencies a directory has on other directories
+# in a graphical way. The dependency relations are determined by the #include
+# relations between the files in the directories.
+
+DIRECTORY_GRAPH = YES
+
+# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
+# generated by dot. Possible values are png, jpg, or gif
+# If left blank png will be used.
+
+DOT_IMAGE_FORMAT = png
+
+# The tag DOT_PATH can be used to specify the path where the dot tool can be
+# found. If left blank, it is assumed the dot tool can be found in the path.
+
+DOT_PATH =
+
+# The DOTFILE_DIRS tag can be used to specify one or more directories that
+# contain dot files that are included in the documentation (see the
+# \dotfile command).
+
+DOTFILE_DIRS =
+
+# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
+# nodes that will be shown in the graph. If the number of nodes in a graph
+# becomes larger than this value, doxygen will truncate the graph, which is
+# visualized by representing a node as a red box. Note that doxygen if the
+# number of direct children of the root node in a graph is already larger than
+# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
+# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
+
+DOT_GRAPH_MAX_NODES = 50
+
+# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
+# graphs generated by dot. A depth value of 3 means that only nodes reachable
+# from the root by following a path via at most 3 edges will be shown. Nodes
+# that lay further from the root node will be omitted. Note that setting this
+# option to 1 or 2 may greatly reduce the computation time needed for large
+# code bases. Also note that the size of a graph can be further restricted by
+# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
+
+MAX_DOT_GRAPH_DEPTH = 0
+
+# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
+# background. This is disabled by default, because dot on Windows does not
+# seem to support this out of the box. Warning: Depending on the platform used,
+# enabling this option may lead to badly anti-aliased labels on the edges of
+# a graph (i.e. they become hard to read).
+
+DOT_TRANSPARENT = NO
+
+# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
+# files in one run (i.e. multiple -o and -T options on the command line). This
+# makes dot run faster, but since only newer versions of dot (>1.8.10)
+# support this, this feature is disabled by default.
+
+DOT_MULTI_TARGETS = NO
+
+# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
+# generate a legend page explaining the meaning of the various boxes and
+# arrows in the dot generated graphs.
+
+GENERATE_LEGEND = YES
+
+# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
+# remove the intermediate dot files that are used to generate
+# the various graphs.
+
+DOT_CLEANUP = YES
+
+#---------------------------------------------------------------------------
+# Options related to the search engine
+#---------------------------------------------------------------------------
+
+# The SEARCHENGINE tag specifies whether or not a search engine should be
+# used. If set to NO the values of all tags below this one will be ignored.
+
+SEARCHENGINE = NO
diff --git a/solenv/doc/gbuild/solenv/gbuild/alllangres.mk b/solenv/doc/gbuild/solenv/gbuild/alllangres.mk
new file mode 100644
index 000000000000..8d5034e881dd
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/alllangres.mk
@@ -0,0 +1,90 @@
+#include <types.h>
+
+namespace gb
+{
+ class SrsTarget;
+ class ResTarget;
+ class AllLangResTarget;
+
+ class SrsPartTarget : public Target, public HasDependencies, public UsesRsc
+ {
+ private:
+ /// SrsPartTarget s do not need to be explicitly constructed.
+
+ /// They are a helper class for the SrsTarget class.
+ /// They are named after the path of their source file (without
+ /// file extension) from the root of their source repository.
+ SrsPartTarget(String name);
+ friend class SrsTarget;
+
+ /// Platformdependant command to generate the dependencies for the srs target.
+ static const Command command_dep(
+ String srsname,
+ Path sourcefile,
+ List<Path> include,
+ List<String> defs);
+ };
+
+ class SrsTarget : public Target, public HasDependencies, public IsCleanable
+ {
+ public:
+ /// Sets defines for srs processing.
+ /// \$\$(DEFS) contains the current flags and can be used, if
+ /// just a few need to be modified.
+ void set_defs(List<String> defs);
+ /// Sets the include paths for srs processing.
+ /// \$\$(INCLUDE) contains the current paths and can be used, if
+ /// just a few need to be modified.
+ void set_include(List<String> include);
+ /// Adds a SrsPartTarget to be processed.
+ void add_file(SrsPartTarget part);
+ /// Adds multiple SrsPartTarget s to be processed.
+ void add_files(List<SrsPartTarget> parts);
+ private:
+ /// SrsTarget s do not need to be explicitly constructed.
+
+ /// They are a helper class for the ResTarget class.
+ SrsTarget(String name);
+ friend class ResTarget;
+
+ List<String> DEFS;
+ List<String> INCLUDE
+ List<SrsPartTarget> PARTS;
+ static const List<String> DEFAULTDEFS;
+ };
+
+ class ResTarget : public Target, public IsCleanable, public HasSrs
+ {
+ public:
+ void add_file(Path file);
+ void add_files(List<Path> files);
+ private:
+ /// ResTarget do not need to be explicitly constructed.
+
+ /// They are a helper class for the AllLangResTarget class.
+ ResTarget(String name, String library, Language lang, Path reslocation);
+ friend class AllLangResTarget;
+
+ String LIBRARY;
+ Language LANGUAGE;
+ Path RESLOCATION;
+ };
+
+ class AllLangResTarget : public Target, public IsCleanable, public HasSrs
+ {
+ public:
+ AllLangResTarget(String name);
+ /// Sets the location where resources are to be found. reslocation is a path relative to the default_images directory.
+ /// Resources will be found in reslocation itself and in the subdirectories res/ and imglst/ of it and again in subdirectories
+ /// of those named as the language of the processed resource. In addition, resources are found in the res/ directory directly
+ /// below default_images and the subdirectory of it named as the language of the processed resource.
+ void set_reslocation(Path reslocation);
+ private:
+ /// Sets the languages for which to create resources.
+ static void set_langs(List<Language> langs);
+
+ /// The list of languages that need to be build.
+ static List<Language> LANGS;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/executable.mk b/solenv/doc/gbuild/solenv/gbuild/executable.mk
new file mode 100644
index 000000000000..8f7fcc9b0ce9
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/executable.mk
@@ -0,0 +1,25 @@
+#include <types.h>
+
+namespace gb
+{
+ using namespace types;
+
+ class LinkTarget;
+
+ class Executable : public IsCleanable, public HasDependencies, public IsLinking, public DeliversHeaders, public HasCompileSettings, public Target
+ {
+ public:
+ Executable(String name);
+
+ private:
+ /// private helper function for the constructor
+ void Executable_impl(LinkTarget library_linktarget);
+ /// platformdependant additional setup for constructor (used on Windows only)
+ void Executable_platform(LinkTarget library_linktarget);
+ /// helper function to wrap LinkTargets functions (this is more or less pimpl ...)
+ void forward_to_linktarget(Function f);
+
+ static const List<String> TARGETTYPEFLAGS;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/gbuild.mk b/solenv/doc/gbuild/solenv/gbuild/gbuild.mk
new file mode 100644
index 000000000000..97ca9b252789
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/gbuild.mk
@@ -0,0 +1,82 @@
+
+#include <types.mk>
+using namespace gb::types;
+
+// GNU make specific setup
+static const Command SHELL;
+
+
+// gbuild root directorys
+static Path SRCDIR;
+static Path OUTDIR;
+static Path WORKDIR;
+
+// Expected from configure/environment
+static const Integer OSL_DEBUG_LEVEL;
+static const List<Path> JDKINCS;
+static const List<Path> SOLARINC;
+static const List<Path> SOLARLIB;
+static const Path GBUILDDIR;
+static const Path INPATH;
+static const Path JAVA_HOME;
+static const Path UPD;
+static const String CVER;
+static const String LIBXML_CFLAGS;
+static const String OS;
+static const String STLPORT_VER;
+static const Bool DEBUG;
+static const Bool PRODUCT;
+
+// gbuild global variables derived from the configure/environment
+// some of these are defined per platform
+namespace gb
+{
+ /// building with generated dependencies
+ static const Bool FULLDEPS;
+ /// product build or non-product build with additional assertions and tests
+ static const Bool PRODUCT;
+ /// command to run awk scripts
+ static const Command AWK;
+ /// command to compile c source files
+ static const Command CC;
+ /// command to compile c++ source files
+ static const Command CXX;
+ /// command to process input with a gcc compatible preprocessor
+ static const Command GCCP;
+ /// command to link objects on the microsoft toolchain
+ static const Command LINK;
+ /// command to create a unique temporary file
+ static const Command MKTEMP;
+ /// debuglevel:
+ /// 0=no debugging,
+ /// 1=non-product build,
+ /// 2=debugging build (either product or nonproduct)
+ static const Integer DEBUGLEVEL;
+ /// compiler specific optimization flags
+ static const List<String> COMPILEROPTFLAGS;
+ /// default c compilation compiler flags
+ static const List<String> CFLAGS;
+ /// compiler specific defines
+ static const List<String> COMPILERDEFS;
+ /// cpu-specific default defines
+ static const List<String> CPUDEFS;
+ /// default c++ compilation compiler flags
+ static const List<String> CXXFLAGS;
+ /// platform- and compilerindependent default defines
+ static const List<String> GLOBALDEFS;
+ /// default objective c++ compilation compiler flags
+ static const List<String> OBJCXXFLAGS;
+ /// platfomspecific default defines
+ static const List<String> OSDEFS;
+ /// ?
+ static const Path SDKDIR;
+};
+
+// GXX_INCLUDE_PATH (Linux)
+// PTHREAD_CFLAGS (Linux)
+// SYSTEM_ICU (Linux)
+// SYSTEM_JPEG (Linux)
+// SYSTEM_LIBXML (Linux)
+// USE_SYSTEM_STL (Linux)
+
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/helper.mk b/solenv/doc/gbuild/solenv/gbuild/helper.mk
new file mode 100644
index 000000000000..3fa666b857a8
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/helper.mk
@@ -0,0 +1,42 @@
+#include <types.h>
+
+String NEWLINE;
+String COMMA;
+
+namespace gb
+{
+ using namespace types;
+
+ class Helper
+ {
+ public:
+ /// Abbreviates the common directory roots in a command
+ static Command abbreviate_dirs(Command c);
+ /// Announces the start/end of an task.
+ static void announce(String announcement);
+ /// Creates the default get_clean_target() function for the type.
+ static void make_clean_target(TargetType t);
+ /// Creates the default get_clean_target() function for the types.
+ static void make_clean_targets(List<TargetType> ts);
+ /// Creates the default get_dep_target() function for the type.
+ static void make_dep_target(TargetType t);
+ /// Creates the default get_dep_target() function for the types.
+ static void make_dep_targets(List<TargetType> ts);
+ /// Creates the default get_dep_target() function for the type modifying the \$(OUTDIR).
+ static void make_outdir_clean_target(TargetType t);
+ /// Creates the default get_dep_target() function for types modifying the \$(OUTDIR).
+ static void make_outdir_clean_targets(List<TargetType> ts);
+ /// Returns the clean target of a target modifying the \$(OUTDIR).
+ static Path get_outdir_clean_target(Path target);
+
+ /// The path to a zero length file.
+ static const Path NULLFILE;
+ /// The path to the misc directory for temporary files etc.
+ static const Path MISC;
+ /// The path to a phony target, that is always outdated.
+ static const Path PHONY;
+ /// Internally used dummy file.
+ static const Path MISCDUMMY;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/library.mk b/solenv/doc/gbuild/solenv/gbuild/library.mk
new file mode 100644
index 000000000000..eba19a86156a
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/library.mk
@@ -0,0 +1,41 @@
+#include <types.h>
+
+namespace gb
+{
+ using namespace types;
+
+ class LinkTarget;
+
+ class Library : public IsCleanable, public HasDependencies, public IsLinking, public DeliversHeaders, public HasCompileSettings, public Target
+ {
+ public:
+ Library(String name);
+ /// Returns how the library is named in the filesystem on the current platform.
+ /// Library filename schemes are defined in solenv/gbuild/libnames.mk (with some platformdependant hacks in solenv/gbuild/platform/*.mk.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_filename();
+
+ private:
+ /// private helper function for the constructor
+ void Library_impl(LinkTarget library_linktarget);
+ /// platformdependant additional setup for constructor (used on Windows only)
+ void Library_platform(
+ LinkTarget library_linktarget,
+ Path dllfile);
+ /// helper function to wrap LinkTargets functions (this is more or less pimpl ...)
+ void forward_to_linktarget(Function f);
+
+ /// List of buildable libraries (i.e. libraries that are not expected to exist outside of \$(OUTDIR) on the system).
+ static const List<Library> TARGETS;
+ /// List of additional defines for compiling objects for libraries
+ static const List<String> DEFS;
+ /// List of additional flags for linking a library
+ static const List<String> TARGETTYPEFLAGS;
+ /// Mapping from symbolic library names to dll filenames
+ static const Map<Library,Path> DLLFILENAMES;
+ /// Mapping from symbolic library names to filenames
+ static const Map<Library,Path> FILENAMES;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/linktarget.mk b/solenv/doc/gbuild/solenv/gbuild/linktarget.mk
new file mode 100644
index 000000000000..5fb7ead86b83
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/linktarget.mk
@@ -0,0 +1,128 @@
+#include <types.h>
+
+namespace gb
+{
+ using namespace types;
+
+ class LinkTarget;
+ class Library;
+ class StaticLibrary;
+ class SdiTarget;
+ class Package;
+
+ /// CObjects are never used standalone. They only exist as part of a
+ /// LinkTarget.
+ class CObject : public HasSource, public HasDependencies, public Target
+ {
+ public:
+ Path get_source();
+ private:
+ /// CObjects do not need to be explicitly constructed.
+ /// They are named after the path of their source file (without
+ /// file extension) from the root of their source repository.
+ CObject(String name);
+ friend class LinkTarget;
+
+ /// Platformdependent command to compile a plain C object.
+ static const Command command(
+ Path objectfile,
+ String name,
+ Path sourcefile,
+ List<String> defs,
+ List<String> cxxflags,
+ List<Path> include);
+ /// Platformdependent command to generate plain C object dependencies.
+ static const Command command_dep(
+ Path depfile,
+ String name,
+ Path sourcefile,
+ List<String> defs,
+ List<String> cxxflags,
+ List<Path> include);
+ };
+
+ /// CxxObjects are never used standalone. They only exist as part of a
+ /// LinkTarget.
+ class CxxObject : public HasSource, public HasDependencies, public Target
+ {
+ public:
+ Path get_source();
+ private:
+ /// CxxObjects do not need to be explicitly constructed.
+ /// They are named after the path of their source file (without
+ /// file extension) from the root of their source repository.
+ CxxObject(String name);
+ friend class LinkTarget;
+
+ /// Platformdependent command to compile a C++ object.
+ static const Command command(
+ Path objectfile,
+ String name,
+ Path sourcefile,
+ List<String> defs,
+ List<String> cxxflags,
+ List<Path> include);
+ /// Platformdependent command to generate C++ object dependencies.
+ static const Command command_dep(
+ Path objectfile,
+ String name,
+ Path sourcefile,
+ List<String> defs,
+ List<String> cxxflags,
+ List<Path> include);
+ };
+
+ class LinkTarget : public IsCleanable, public HasDependencies, public IsLinking, public DeliversHeaders, public HasCompileSettings, public Target
+ {
+ public:
+ LinkTarget(String name);
+
+ private:
+ void get_external_headers_check();
+ void add_internal_headers(const List<Target>& internal_headers);
+
+ /// @warning Evil Hack: SELF is set to the name of the LinkTarget
+ /// in the constructor. If SELF is not set to the LinkTarget name in
+ /// the execution of the header rule, the LinkTarget is used (linked
+ /// against) but was never defined. This might work out, if the
+ /// LinkTarget has been provided by other means (for example:
+ /// build.pl/dmake), but it should never happen in a project where
+ /// all LinkTarget s are controlled by gbuild.
+ LinkTarget& SELF;
+ List<CObject> COBJECTS;
+ List<CxxObject> CXXOBJECTS;
+ List<Library> LINKED_LIBS;
+ List<Path> AUXTARGETS;
+ List<Path> INCLUDE;
+ List<Path> INCLUDE_STL;
+ List<StaticLibrary> LINKED_STATIC_LIBS;
+ List<String> CFLAGS;
+ List<String> CXXFLAGS;
+ List<String> DEFS;
+ List<String> LDFLAGS;
+ List<String> TARGETTYPE_FLAGS;
+ Path DLLTARGET;
+
+ /// Platformdependent command for linking.
+ static const Command command (
+ Path linktargetfile,
+ String linktargetname,
+ List<String> linkflags,
+ List<Library> linked_libs,
+ List<StaticLibrary> linked_static_libs,
+ List<CObject> cobjects,
+ List<CxxObject> cxxobjects);
+ /// Command to collect all dependencies of this LinkTarget.
+ static const Command command_dep(
+ Path depfile,
+ String linktargetname,
+ List<CObject> cobjects,
+ List<CxxObject> cxxobjects);
+ static const List<String> DEFAULTDEFS;
+ static const List<String> CXXFLAGS;
+ static const List<String> LDFLAGS;
+ static const List<Path> INCLUDE;
+ static const List<Path> INCLUDE_STL;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/package.mk b/solenv/doc/gbuild/solenv/gbuild/package.mk
new file mode 100644
index 000000000000..53daeb5c80af
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/package.mk
@@ -0,0 +1,30 @@
+#include <types.h>
+
+namespace gb
+{
+ using namespace types;
+ class PackagePart
+ {
+ private:
+ /// PackagePart s do not need to be explicitly constructed.
+ /// They are named after the path of their source file (without
+ /// file extension) from the root of their source repository.
+ PackagePart(String name, Path Source);
+ friend Package;
+ /// Returns a list of aboslute paths where files are copied to with the PackagePart class.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ static const List<Path> get_destinations();
+ };
+
+ class Package : public Target, public IsCleanable
+ {
+ public:
+ /// Creates a new package that copies files from source_dir to the \$(OUTDIR).
+ Package(String name, Path source_dir);
+ /// Adds a file to the package. destination is the relative path in
+ /// the \$(OUTDIR) and source is the relative path in the source_dir.
+ add_file(Path destination, Path source);
+ }
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/sdi.mk b/solenv/doc/gbuild/solenv/gbuild/sdi.mk
new file mode 100644
index 000000000000..f9f913fb141c
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/sdi.mk
@@ -0,0 +1,23 @@
+#include <types.h>
+
+namespace gb
+{
+ using namespace types;
+
+ class SdiTarget : public Target, public IsCleanable
+ {
+ public:
+ /// Creates a new SdiTarget.
+ SdiTarget(String name, String exports);
+ /// Sets the include paths for this SdiTarget.
+ set_include(List<Path> includes);
+ private:
+ /// The command to execute svidl.
+ static const Command SVIDLCOMMAND;
+ /// The target on with to depend to make sure the svidl executable is available.
+ static const Path SVIDLTARGET;
+ /// The target on with to depend to make sure the auxiliary files (libraries etc.) for the svidl executable are available.
+ static const Path SVIDLAUXDEPS;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/static_library.mk b/solenv/doc/gbuild/solenv/gbuild/static_library.mk
new file mode 100644
index 000000000000..787c6e732ede
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/static_library.mk
@@ -0,0 +1,39 @@
+#include <types.h>
+
+namespace gb
+{
+ using namespace types;
+
+ class LinkTarget;
+
+ class StaticLibrary : public IsCleanable, public HasDependencies, public IsLinking, public DeliversHeaders, public HasCompileSettings, public Target
+ {
+ public:
+ StaticLibrary(String name);
+ /// Returns how the library is named in the filesystem on the current platform.
+ /// StaticLibrary filename schemes are defined in solenv/gbuild/libnames.mk (with some platformdependant hacks in solenv/gbuild/platform/*.mk.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_filename();
+
+ private:
+ /// private helper function for the constructor
+ void StaticLibrary_impl(LinkTarget library_linktarget);
+ /// helper function to wrap LinkTargets functions (this is more or less pimpl ...).
+ void forward_to_linktarget(Function f);
+
+ /// List of buildable static libraries (i.e. static libraries that are not expected to exist outside of \$(OUTDIR) on the system).
+ static const List<StaticLibrary> TARGETS;
+ /// List of additional defines for compiling objects for static libraries
+ static const List<String> DEFS;
+ /// List of additional flags for linking a static library
+ static const List<String> TARGETTYPEFLAGS;
+ /// Mapping from symbolic static library names to filenames
+ static const Map<StaticLibrary,Path> FILENAMES;
+ /// location to place static libraries in the \$(OUTDIR)
+ static const Path OUTDIRLOCATION;
+ /// platformdependant file extension for static libraries
+ static const String PLAINEXT;
+ };
+}
+/* vim: set filetype=cpp : */
diff --git a/solenv/doc/gbuild/solenv/gbuild/types.mk b/solenv/doc/gbuild/solenv/gbuild/types.mk
new file mode 100644
index 000000000000..ecb736834736
--- /dev/null
+++ b/solenv/doc/gbuild/solenv/gbuild/types.mk
@@ -0,0 +1,169 @@
+namespace gb {
+ class CObject;
+ class CxxObject;
+ class Library;
+ class StaticLibrary;
+ class Package;
+ class SdiTarget;
+};
+
+namespace gb { namespace types
+{
+ /// A type of target, with its set of rules etc., as used in the build system.
+ class TargetType {};
+ /// A plain old string.
+ class String {};
+ /// A partial, relative or absolute filesystem path.
+ class Path {};
+ /// A target to be build.
+ class Target
+ {
+ public:
+ /// The absolute filesystem path representing the target.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_target();
+ };
+ /// A partial or complete shell-command.
+ class Command {};
+ /// A integer number.
+ class Integer {};
+ /// A boolean value.
+
+ /// There are const boolean values true and false for
+ /// comparisons (written as $(true) and $(false) in makefiles.
+ class Bool {};
+ /// A language (for localisation)
+
+ /// A language represented by its ISO 639-1:2002 code.
+ class Language {};
+ /// A List of objects.
+
+ /// A List of objects represented by a whitespace separated list
+ /// in makefiles.
+ template <typename T>
+ class List<T> {};
+
+ /// A Mapping from with a key of type K and a value of type V
+
+ /// A Mapping is represented by a whitespace separated list
+ /// of key-value pairs. Key and value are separated by a colon (:).
+ template <typename K, typename V>
+ class Map<K,V> {};
+ /// A target that can be cleaned.
+ class IsCleanable
+ {
+ public:
+ /// The (phony) absolute filesystem path to clean the target.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_clean_target();
+ };
+ /// A target that has generated dependencies.
+ class HasDependencies
+ {
+ public:
+ /// The absolute filesystem path to the file containing the dependencies.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_dep_target();
+ };
+ /// A target that has a source file from which it is generated.
+ class HasSource
+ {
+ public:
+ /// The absolute filesystem path to the source file.
+ Path get_source();
+ };
+ /// A target that links objects and libraries.
+ class IsLinking
+ {
+ public:
+ /// Add a CObject to be compiled and linked.
+ void add_cobject(CObject cobject);
+ /// Add multiple CObject s to be compiled and linked.
+ void add_cobjects(List<CObject> cobjects);
+ /// Add a CxxObject to be compiled and linked.
+ void add_cxxobject(CxxObject cobject);
+ /// Add multiple CxxObject s to be compiled and linked.
+ void add_cxxobjects(List<CxxObject> cobjects);
+ /// Add multiple CxxObject s to be compiled and linked (with exceptions enabled).
+ void add_exception_objects(List<CxxObject> cobject);
+ /// Add libraries to link against dynamically.
+ void add_linked_libs(List<Library> linked_libs);
+ /// Add libraries to link against statically.
+ void add_linked_static_libs(List<StaticLibrary> linked_static_libs);
+ /// Add multiple CxxObject s to be compiled and linked (without exceptions enabled).
+ /// @deprecated We should not care about disabling exception.
+ void add_noexception_objects(List<CxxObject> cobject);
+ /// Set auxiliary files that are produced by linking (for cleanup and copying).
+ void set_auxtargets(List<Path> auxtargets);
+ /// Set the location for the produced DLL (used on Windows only).
+ void set_dll_target(Path dlltarget);
+ /// Set additional flags for the link command.
+ void set_ldflags(List<Path> ldflags);
+ };
+ /// A target that delivers headers of some kind.
+ class DeliversHeaders
+ {
+ public:
+ /// The absolute filesystem path which is touched when all headers for this target are prepared.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_headers_target();
+ /// The absolute filesystem path which is touched when all external headers for this target are prepared.
+
+ /// This function needs to be defined in solenv/gbuild/target_names.mk so that it is available to everywhere.
+ Path get_external_headers_target();
+ /// Add multiple Packages that need to be delivered/generated
+ /// before compilation or dependency generation can start.
+ void add_package_headers(List<Package> packages);
+ /// Add multiple SdiTargets that need to be delivered/generated
+ /// before compilation or dependency generation can start.
+ void add_sdi_headers(List<SdiTarget> sdis);
+ };
+ /// A target where settings for the compilation can be set.
+ class HasCompileSettings
+ {
+ public:
+ /// Sets flags for plain C compilation.
+ /// \$\$(CFLAGS) contains the current flags and can be used if
+ /// just a few need to be modified.
+ void set_cflags(List<String> cflags);
+ /// Sets flags for C++ compilation.
+ /// \$\$(CXXFLAGS) contains the current flags and can be used if
+ /// just a few need to be modified.
+ void set_cxxflags(List<String> cxxflags);
+ /// Sets defines for C/C++ compilation.
+ /// \$\$(DEFS) contains the current flags and can be used if
+ /// just a few need to be modified.
+ void set_defs(List<String> defs);
+ /// Sets the include paths for C/C++ compilation.
+ /// \$\$(INCLUDE) contains the current paths and can be used if
+ /// just a few need to be modified.
+ void set_include(List<Path> include);
+ /// Sets the stl include paths for C++ compilation.
+ /// \$\$(INCLUDE_STL) contains the current paths and can be used if
+ /// just a few need to be modified.
+ void set_include_stl(List<Path> include_stl);
+ };
+ /// A target using the resource compiler
+ class UsesRsc
+ {
+ public:
+ /// The command to execute rsc.
+ static const Command RSCCOMMAND;
+ /// The target on with to depend to make sure the rsc executable is available.
+ static const Path RSCTARGET;
+ };
+ /// A target processing a set of srs files
+ class HasSrs
+ {
+ public:
+ /// Add a SrsTarget to be processed.
+ void add_one_srs(SrsTarget srs);
+ /// Add multiple SrsTarget s to be processed.
+ void add_srs(List<SrsTarget> srs);
+ };
+}};
+/* vim: set filetype=cpp : */
diff --git a/solenv/gbuild/AllLangResTarget.mk b/solenv/gbuild/AllLangResTarget.mk
new file mode 100644
index 000000000000..1b7acc947bfc
--- /dev/null
+++ b/solenv/gbuild/AllLangResTarget.mk
@@ -0,0 +1,323 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# SrsPartMergeTarget class
+
+gb_SrsPartMergeTarget_TRANSEXTARGET := $(call gb_Executable_get_target,transex3)
+# gb_SrsPartMergeTarget_TRANSEXPRECOMMAND is set by the platforms
+
+gb_SrsPartMergeTarget_TRANSEXCOMMAND := $(gb_SrsPartMergeTarget_TRANSEXPRECOMMAND) $(gb_SrsPartMergeTarget_TRANSEXTARGET)
+gb_SrsPartMergeTarget_SDFLOCATION := $(LOCDIR)/l10n/$(INPATH)/misc/sdf/
+gb_SrsPartMergeTarget_REPOS := $(gb_REPOS)
+
+define gb_SrsPartMergeTarget__command
+$(call gb_Output_announce,$(3),$(true),srs,1)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_SrsPartMergeTarget_TRANSEXCOMMAND) \
+ -p $(firstword $(subst /, ,$(2))) \
+ -i $(3) \
+ -o $(1) \
+ -m $(SDF) \
+ -l all)
+
+endef
+
+define gb_SrsPartMergeTarget__rules
+$$(call gb_SrsPartMergeTarget_get_target,%) : $(1)/% $$(gb_Helper_MISCDUMMY) | $$(gb_SrsPartMergeTarget_TRANSEXTARGET)
+ $$(if $$(SDF),$$(call gb_SrsPartMergeTarget__command,$$@,$$*,$$<),mkdir -p $$(dir $$@) && cp $$< $$@)
+
+endef
+
+$(foreach repo,$(gb_SrsPartMergeTarget_REPOS),$(eval $(call gb_SrsPartMergeTarget__rules,$(repo))))
+
+# SrsPartTarget class
+
+gb_SrsPartTarget_REPOS := $(gb_REPOS)
+# defined by platform
+# gb_SrsPartTarget_RSCTARGET
+# gb_SrsPartTarget_RSCCOMMAND
+# gb_SrsPartTarget__command_dep
+
+define gb_SrsPartTarget__command
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "-s \
+ $(INCLUDE) \
+ -I$(dir $(3)) \
+ $(DEFS) \
+ -fp=$(1) \
+ $(if $<,$<,$(MERGEDFILE))" > $${RESPONSEFILE} && \
+ $(gb_SrsPartTarget_RSCCOMMAND) -presponse @$${RESPONSEFILE} && \
+ rm -rf $${RESPONSEFILE})
+
+endef
+
+define gb_SrsPartTarget__rules
+$$(call gb_SrsPartTarget_get_target,%) : $(1)/% $$(gb_Helper_MISCDUMMY) | $$(gb_SrsPartTarget_RSCTARGET)
+ $$(call gb_SrsPartTarget__command_dep,$$*,$$<)
+ $$(call gb_SrsPartTarget__command,$$@,$$*,$$<)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$$(call gb_SrsPartTarget_get_dep_target,%) : $(1)/% $$(gb_Helper_MISCDUMMY)
+ $$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $$(dir $$@) && \
+ echo '$$(call gb_SrsPartTarget_get_target,$$*) : $$(gb_Helper_PHONY)' > $$@)
+endif
+
+endef
+
+$(foreach repo,$(gb_SrsPartTarget_REPOS),$(eval $(call gb_SrsPartTarget__rules,$(repo))))
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_SrsPartTarget_get_dep_target,%) :
+ $(eval $(call gb_Output_error,Unable to find resource definition file $* in repositories: $(gb_SrsPartTarget_REPOS)))
+endif
+
+
+define gb_SrsPartTarget_SrsPartTarget
+ifeq ($(strip $(gb_WITH_LANG)),)
+$(call gb_SrsPartTarget_get_target,$(1)) : MERGEDFILE :=
+else
+$(call gb_SrsPartTarget_get_target,$(1)) : MERGEDFILE := $(call gb_SrsPartMergeTarget_get_target,$(1))
+$(call gb_SrsPartTarget_get_target,$(1)) : $(call gb_SrsPartMergeTarget_get_target,$(1))
+$(call gb_SrsPartMergeTarget_get_target,$(1)) : SDF := $(realpath $(gb_SrsPartMergeTarget_SDFLOCATION)$(dir $(1))localize.sdf)
+endif
+
+endef
+
+
+# SrsTarget class
+
+gb_SrsTarget_DEFAULTDEFS := $(gb_GLOBALDEFS)
+
+.PHONY : $(call gb_SrsTarget_get_clean_target,%)
+$(call gb_SrsTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),SRS,1)
+ -$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_SrsTarget_get_target,$*) \
+ $(call gb_SrsTarget_get_dep_target,$*) \
+ $(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_target,$(part))) \
+ $(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_dep_target,$(part))) \
+ $(foreach part,$(PARTS),$(call gb_SrsPartMergeTarget_get_target,$(part))))
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_SrsTarget__command_dep
+$(call gb_Output_announce,SRS:$(2),$(true),DEP,1)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ cat $(3) > $(1))
+endef
+endif
+
+$(call gb_SrsTarget_get_target,%) :
+ $(call gb_SrsTarget__command_dep,$(call gb_SrsTarget_get_dep_target,$*),$*,$(foreach part,$(PARTS),$(call gb_SrsPartTarget_get_dep_target,$(part))))
+ $(call gb_Output_announce,$*,$(true),SRS,1)
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && \
+ cat $^ > $@)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_SrsTarget_get_dep_target,%) :
+ $(call gb_SrsTarget__command_dep,$@,$*,$^)
+endif
+
+define gb_SrsTarget_SrsTarget
+$(call gb_SrsTarget_get_target,$(1)) : DEFS := $(gb_SrsTarget_DEFAULTDEFS)
+$(call gb_SrsTarget_get_target,$(1)) : INCLUDE := $(SOLARINC)
+$(call gb_SrsTarget_get_clean_target,$(1)) : PARTS :=
+$(call gb_SrsTarget_get_target,$(1)) : PARTS :=
+ifeq ($(gb_FULLDEPS),$(true))
+ifneq ($(wildcard $(call gb_SrsTarget_get_dep_target,$(1))),)
+include $(call gb_SrsTarget_get_dep_target,$(1))
+else
+$(firstword $(MAKEFILE_LIST)) : $(call gb_SrsTarget_get_dep_target,$(1))
+endif
+endif
+
+endef
+
+define gb_SrsTarget_set_defs
+$(call gb_SrsTarget_get_target,$(1)) : DEFS := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_SrsTarget_get_dep_target,$(1)) : DEFS := $(2)
+endif
+
+endef
+
+define gb_SrsTarget_set_include
+$(call gb_SrsTarget_get_target,$(1)) : INCLUDE := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_SrsTarget_get_dep_target,$(1)) : INCLUDE := $(2)
+endif
+
+endef
+
+define gb_SrsTarget_add_file
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_SrsTarget_get_dep_target,$(1)) : $(call gb_SrsPartTarget_get_dep_target,$(2))
+endif
+$(call gb_SrsPartTarget_SrsPartTarget,$(2))
+$(call gb_SrsTarget_get_target,$(1)) : $(call gb_SrsPartTarget_get_target,$(2))
+$(call gb_SrsTarget_get_clean_target,$(1)) : PARTS += $(2)
+$(call gb_SrsTarget_get_target,$(1)) : PARTS += $(2)
+
+endef
+
+define gb_SrsTarget_add_files
+$(foreach file,$(2),$(call gb_SrsTarget_add_file,$(1),$(file)))
+
+endef
+
+
+# ResTarget
+
+gb_ResTarget_RSCTARGET := $(gb_SrsPartTarget_RSCTARGET)
+gb_ResTarget_RSCCOMMAND := $(gb_SrsPartTarget_RSCCOMMAND)
+gb_ResTarget_DEFIMAGESLOCATION := $(SRCDIR)/default_images/
+
+$(call gb_ResTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),RES,2)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_ResTarget_get_target,$*) $(call gb_ResTarget_get_imagelist_target,$*) $(call gb_ResTarget_get_outdir_target,$*) $(call gb_ResTarget_get_outdir_imagelist_target,$*))
+
+$(call gb_ResTarget_get_target,%) : $(gb_Helper_MISCDUMMY) | $(gb_ResTarget_RSCTARGET)
+ $(call gb_Output_announce,$*,$(true),RES,2)
+ $(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $@) $(OUTDIR)/bin \
+ $(dir $(call gb_ResTarget_get_imagelist_target,$*)) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "-r -p \
+ -lg$(LANGUAGE) \
+ -fs=$@ \
+ -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/$(LIBRARY)) \
+ -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/imglst/$(LANGUAGE)) \
+ -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/imglst) \
+ -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res/$(LANGUAGE)) \
+ -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)/res) \
+ -lip=$(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION)) \
+ -lip=$(gb_ResTarget_DEFIMAGESLOCATION)res/$(LANGUAGE) \
+ -lip=$(gb_ResTarget_DEFIMAGESLOCATION)res \
+ -subMODULE=$(dir $(realpath $(gb_ResTarget_DEFIMAGESLOCATION)$(RESLOCATION))) \
+ -subGLOBALRES=$(gb_ResTarget_DEFIMAGESLOCATION)res \
+ -oil=$(dir $(call gb_ResTarget_get_imagelist_target,$*)) \
+ $(filter-out $(gb_Helper_MISCDUMMY),$^)" > $${RESPONSEFILE} && \
+ $(gb_ResTarget_RSCCOMMAND) @$${RESPONSEFILE} && \
+ rm -f $${RESPONSEFILE})
+
+$(call gb_ResTarget_get_outdir_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ $(call gb_Deliver_deliver,$<,$@) && \
+ $(call gb_Deliver_deliver,$(dir $<)/$(notdir $(ILSTTARGET)),$(ILSTTARGET)))
+
+define gb_ResTarget_ResTarget
+$(call gb_ResTarget_get_target,$(1)) : LIBRARY = $(2)
+$(call gb_ResTarget_get_target,$(1)) : LANGUAGE = $(3)
+$(call gb_ResTarget_get_target,$(1)) : RESLOCATION = $(2)
+$(call gb_AllLangResTarget_get_target,$(2)) : $(call gb_ResTarget_get_outdir_target,$(1))
+$(call gb_AllLangResTarget_get_clean_target,$(2)) : $(call gb_ResTarget_get_clean_target,$(1))
+$(call gb_ResTarget_get_imagelist_target,$(1)) : $(call gb_ResTarget_get_target,$(1))
+
+$(call gb_ResTarget_get_outdir_target,$(1)) : $(call gb_ResTarget_get_target,$(1))
+$(call gb_ResTarget_get_outdir_target,$(1)) : ILSTTARGET = $(call gb_ResTarget_get_outdir_imagelist_target,$(1))
+$(call gb_Deliver_add_deliverable,$(call gb_ResTarget_get_outdir_target,$(1)),$(call gb_ResTarget_get_target,$(1)))
+$(call gb_Deliver_add_deliverable,$(call gb_ResTarget_get_outdir_imagelist_target,$(1)),$(call gb_ResTarget_get_imagelist_target,$(1)))
+
+endef
+
+define gb_ResTarget_add_file
+$(call gb_ResTarget_get_target,$(1)) : $(2)
+
+endef
+
+define gb_ResTarget_add_one_srs
+$(call gb_ResTarget_add_file,$(1),$(call gb_SrsTarget_get_target,$(2)))
+$(call gb_ResTarget_get_clean_target,$(1)) : $(call gb_SrsTarget_get_clean_target,$(2))
+
+endef
+
+define gb_ResTarget_add_files
+$(foreach file,$(2),\
+ $(call gb_ResTarget_add_file,$(1),$(file)))
+
+endef
+
+define gb_ResTarget_add_srs
+$(foreach srs,$(2),\
+ $(call gb_ResTarget_add_one_srs,$(1),$(srs)))
+
+endef
+
+define gb_ResTarget_set_reslocation
+$(call gb_ResTarget_get_target,$(1)) : RESLOCATION = $(2)
+
+endef
+
+
+# AllLangResTarget
+
+gb_AllLangResTarget_LANGS := en-US $(filter-out en-US,$(gb_WITH_LANG))
+
+define gb_AllLangResTarget_set_langs
+gb_AllLangResTarget_LANGS := $(1)
+endef
+
+$(call gb_AllLangResTarget_get_clean_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_AllLangResTarget_get_target,$*))
+
+$(call gb_AllLangResTarget_get_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && touch $@)
+
+define gb_AllLangResTarget_AllLangResTarget
+$(foreach lang,$(gb_AllLangResTarget_LANGS),\
+ $(call gb_ResTarget_ResTarget,$(1)$(lang),$(1),$(lang)))
+$$(eval $$(call gb_Module_register_target,$(call gb_AllLangResTarget_get_target,$(1)),$(call gb_AllLangResTarget_get_clean_target,$(1))))
+
+endef
+
+define gb_AllLangResTarget_add_one_srs
+$(foreach lang,$(gb_AllLangResTarget_LANGS),\
+ $(call gb_ResTarget_add_one_srs,$(1)$(lang),$(2)))
+
+endef
+
+define gb_AllLangResTarget_add_srs
+$(foreach srs,$(2),\
+ $(call gb_AllLangResTarget_add_one_srs,$(1),$(srs)))
+
+endef
+
+define gb_AllLangResTarget_set_reslocation
+$(foreach lang,$(gb_AllLangResTarget_LANGS),\
+ $(call gb_ResTarget_set_reslocation,$(1)$(lang),$(2)))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/BuildDirs.mk b/solenv/gbuild/BuildDirs.mk
new file mode 100644
index 000000000000..e31712016f7f
--- /dev/null
+++ b/solenv/gbuild/BuildDirs.mk
@@ -0,0 +1,59 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+# extend for JDK include (seems only needed in setsolar env?)
+SOLARINC += $(JDKINCS)
+
+OUTDIR := $(SOLARVERSION)/$(INPATH)
+WORKDIR := $(SOLARVERSION)/$(INPATH)/workdir
+
+# Override for SetupLocal
+ifneq ($(and $(gb_LOCALBUILDDIR),$(wildcard $(gb_LOCALBUILDDIR)/SetupLocal.mk)),)
+include $(gb_LOCALBUILDDIR)/SetupLocal.mk
+endif
+
+ifeq ($(strip $(gb_REPOS)),)
+gb_REPOS := $(SOLARSRC)
+endif
+
+# HACK
+# unixify windoze paths
+ifeq ($(OS),WNT)
+override WORKDIR := $(shell cygpath -u $(WORKDIR))
+override OUTDIR := $(shell cygpath -u $(OUTDIR))
+override gb_REPOS := $(shell cygpath -u $(gb_REPOS))
+endif
+
+REPODIR := $(patsubst %/,%,$(dir $(firstword $(gb_REPOS))))
+
+ifeq ($(filter setuplocal removelocal,$(MAKECMDGOALS)),)
+ifneq ($(filter-out $(foreach repo,$(gb_REPOS),$(realpath $(repo))/%),$(realpath $(firstword $(MAKEFILE_LIST)))),)
+$(eval $(call gb_Output_error,The initial makefile $(realpath $(firstword $(MAKEFILE_LIST))) is not in the repositories $(foreach repo,$(gb_REPOS),$(realpath $(repo))).,ALL))
+endif
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/ComponentTarget.mk b/solenv/gbuild/ComponentTarget.mk
new file mode 100644
index 000000000000..5fc15baf744c
--- /dev/null
+++ b/solenv/gbuild/ComponentTarget.mk
@@ -0,0 +1,69 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+gb_ComponentTarget_REPOS := $(gb_REPOS)
+
+gb_ComponentTarget_XSLTCOMMANDFILE := $(SOLARENV)/bin/createcomponent.xslt
+gb_ComponentTarget_get_source = $(1)/$(2).component
+
+define gb_ComponentTarget__command
+$(call gb_Output_announce,$(3),$(true),CMP,1)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_XSLTPROC) --nonet --stringparam uri \
+ '$(subst \d,$$,$(COMPONENTPREFIX))$(LIBFILENAME)' -o $(1) \
+ $(gb_ComponentTarget_XSLTCOMMANDFILE) $(2))
+
+endef
+
+define gb_ComponentTarget__rules
+$$(call gb_ComponentTarget_get_target,%) : $$(call gb_ComponentTarget_get_source,$(1),%) | $(gb_XSLTPROCTARGET)
+ $$(call gb_ComponentTarget__command,$$@,$$<,$$*)
+
+$$(call gb_ComponentTarget_get_clean_target,%) :
+ $$(call gb_Output_announce,$$*,$(false),CMP,1)
+ rm -f $$(call gb_ComponentTarget_get_outdir_target,$$*) $$(call gb_ComponentTarget_get_target,$$*)
+
+endef
+
+$(foreach repo,$(gb_ComponentTarget_REPOS),$(eval $(call gb_ComponentTarget__rules,$(repo))))
+
+$(call gb_ComponentTarget_get_target,%) :
+ $(eval $(call gb_Outpt_error,Unable to find component file $(call gb_ComponentTarget_get_source,,$*) in the repositories: $(gb_ComponentTarget_REPOS) or xlstproc is missing.))
+
+$(call gb_ComponentTarget_get_external_target,%) :
+ $(call gb_Deliver_deliver,$<,$@)
+
+define gb_ComponentTarget_ComponentTarget
+$(call gb_ComponentTarget_get_target,$(1)) : LIBFILENAME := $(3)
+$(call gb_ComponentTarget_get_target,$(1)) : COMPONENTPREFIX := $(2)
+$(call gb_ComponentTarget_get_outdir_target,$(1)) : $(call gb_ComponentTarget_get_target,$(1))
+$(call gb_Deliver_add_deliverable,$(call gb_ComponentTarget_get_outdir_target,$(1)),$(call gb_ComponentTarget_get_target,$(1)))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/CppunitTest.mk b/solenv/gbuild/CppunitTest.mk
new file mode 100644
index 000000000000..a3b18a4a0bbd
--- /dev/null
+++ b/solenv/gbuild/CppunitTest.mk
@@ -0,0 +1,96 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# CppunitTest class
+
+# defined by platform
+# gb_CppunitTest_TARGETTYPE
+# gb_CppunitTest_get_filename
+gb_CppunitTest_CPPTESTTARGET := $(call gb_Executable_get_target,cppunittester)
+gb_CppunitTest_CPPTESTCOMMAND := $(gb_CppunitTest_CPPTESTPRECOMMAND) $(gb_CppunitTest_CPPTESTTARGET)
+gb_CppunitTest__get_linktargetname = CppunitTest/$(call gb_CppunitTest_get_filename,$(1))
+
+.PHONY : $(call gb_CppunitTest_get_clean_target,%)
+$(call gb_CppunitTest_get_clean_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_CppunitTest_get_target,$*) $(call gb_CppunitTest_get_target,$*).log)
+
+.PHONY : $(call gb_CppunitTest_get_target,%)
+$(call gb_CppunitTest_get_target,%) : $(gb_CppunitTest_CPPTESTTARGET)
+ $(call gb_Output_announce,$*,$(true),CUT,2)
+ $(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $@) && \
+ $(gb_CppunitTest_CPPTESTCOMMAND) $(call gb_LinkTarget_get_target,CppunitTest/$(call gb_CppunitTest_get_libfilename,$*)) > $@.log 2>&1 || (cat $@.log && false))
+
+define gb_CppunitTest_CppunitTest
+$(call gb_CppunitTest__CppunitTest_impl,$(1),$(call gb_CppunitTest__get_linktargetname,$(1)))
+
+endef
+
+define gb_CppunitTest__CppunitTest_impl
+$(call gb_LinkTarget_LinkTarget,$(2))
+$(call gb_LinkTarget_set_targettype,$(2),CppunitTest)
+$(call gb_LinkTarget_add_linked_libs,$(2),cppunit)
+$(call gb_CppunitTest_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2))
+$(call gb_CppunitTest_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
+$(call gb_CppunitTest_CppunitTest_platform,$(1),$(2),$(gb_CppunitTest_DLLDIR)/$(call gb_CppunitTest_get_libfilename,$(1)))
+$$(eval $$(call gb_Module_register_target,$(call gb_CppunitTest_get_target,$(1)),$(call gb_CppunitTest_get_clean_target,$(1))))
+
+endef
+
+define gb_CppunitTest__forward_to_Linktarget
+gb_CppunitTest_$(1) = $$(call gb_LinkTarget_$(1),$$(call gb_CppunitTest__get_linktargetname,$$(1)),$$(2),$$(3))
+
+endef
+
+$(eval $(foreach method,\
+ add_cobject \
+ add_cobjects \
+ add_cxxobject \
+ add_cxxobjects \
+ add_objcxxobject \
+ add_objcxxobjects \
+ add_exception_objects \
+ add_noexception_objects \
+ set_cflags \
+ set_cxxflags \
+ set_objcxxflags \
+ set_defs \
+ set_include \
+ set_ldflags \
+ set_library_path_flags \
+ add_linked_libs \
+ add_linked_static_libs \
+ add_package_headers \
+ add_sdi_headers \
+ add_precompiled_header \
+,\
+ $(call gb_CppunitTest__forward_to_Linktarget,$(method))\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/CustomTarget.mk b/solenv/gbuild/CustomTarget.mk
new file mode 100644
index 000000000000..082943504594
--- /dev/null
+++ b/solenv/gbuild/CustomTarget.mk
@@ -0,0 +1,96 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+gb_CustomTarget_REPOSITORYNAMES := $(gb_Helper_REPOSITORYNAMES)
+
+# N.B.: putting the "+" there at the start activates the GNU make job server
+define gb_CustomTarget__command
++$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(call gb_CustomTarget_get_workdir,$(2)) && \
+ $(MAKE) -C $(call gb_CustomTarget_get_workdir,$(2)) -f $< && \
+ touch $(1))
+
+endef
+
+define gb_CustomTarget__rules
+$$(call gb_CustomTarget_get_repo_target,$(1),%) :
+ $$(call gb_Output_announce,$$*,$$(true),MAK,3)
+ $$(call gb_CustomTarget__command,$$@,$$*)
+
+$$(call gb_CustomTarget_get_target,%) : $$(call gb_CustomTarget_get_repo_target,$(1),%)
+ $$(call gb_Helper_abbreviate_dirs,\
+ touch $$@)
+
+endef
+
+.PHONY: $(call gb_CustomTarget_get_clean_target,%)
+$(call gb_CustomTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),MAK,3)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -rf $(call gb_CustomTarget_get_workdir,$*) && \
+ rm -f $(call gb_CustomTarget_get_target,$*) \
+ $(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),$(call gb_CustomTarget_get_repo_target,$(reponame),$*)))
+
+
+$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),$(eval $(call gb_CustomTarget__rules,$(reponame))))
+
+define gb_CustomTarget__get_makefile
+$(1)/$(2)/Makefile
+endef
+
+define gb_CustomTarget_CustomTarget
+$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),\
+ $(eval $(call gb_CustomTarget_get_repo_target,$(reponame),$(1)) : $(call gb_CustomTarget__get_makefile,$($(reponame)),$(1))))
+
+$(call gb_CustomTarget_get_workdir,$(1))/% : $(call gb_CustomTarget_get_target,$(1))
+
+endef
+
+
+define gb_CustomTarget_add_dependency
+$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),\
+ $(eval $(call gb_CustomTarget_get_repo_target,$(reponame),$(1)) : $($(reponame))/$(2)))
+
+endef
+
+define gb_CustomTarget_add_dependencies
+$(foreach dependency,$(2),$(call gb_CustomTarget_add_dependency,$(1),$(dependency)))
+
+endef
+
+define gb_CustomTarget_add_outdir_dependency
+$(foreach reponame,$(gb_CustomTarget_REPOSITORYNAMES),\
+ $(eval $(call gb_CustomTarget_get_repo_target,$(reponame),$(1)) : $(2)))
+
+endef
+
+define gb_CustomTarget_add_outdir_dependencies
+$(foreach dependency,$(2),$(call gb_CustomTarget_add_outdir_dependency,$(1),$(dependency)))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Deliver.mk b/solenv/gbuild/Deliver.mk
new file mode 100644
index 000000000000..60772894f87c
--- /dev/null
+++ b/solenv/gbuild/Deliver.mk
@@ -0,0 +1,95 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+gb_Deliver_GNUCOPY := $(GNUCOPY)
+
+# if ($true) then old files will get removed from the target location before
+# they are copied there. In multi-user environments, this is needed you need to
+# be the owner of the target file to be able to modify timestamps
+gb_Deliver_CLEARONDELIVER := $(true)
+
+define gb_Deliver_init
+gb_Deliver_DELIVERABLES :=
+
+endef
+
+define gb_Deliver_add_deliverable
+gb_Deliver_DELIVERABLES += $$(patsubst $(REPODIR)/%,%,$(2)):$$(patsubst $(REPODIR)/%,%,$(1))
+$(if $(gb_HIRESTIME),,.LOW_RESOLUTION_TIME : $(1))
+
+endef
+
+ifeq ($(strip $(gb_Deliver_GNUCOPY)),)
+define gb_Deliver_deliver
+mkdir -p $(dir $(2)) && $(if $(gb_Deliver_CLEARONDELIVER),rm -f $(2) &&) cp -f $(1) $(2) && touch -r $(1) $(2)
+endef
+else
+define gb_Deliver_deliver
+mkdir -p $(dir $(2)) && $(gb_Deliver_GNUCOPY) $(if $(gb_Deliver_CLEARONDELIVER),--remove-destination) --force --preserve=timestamps $(1) $(2)
+endef
+endif
+
+
+# We are currently only creating a deliver.log, if only one module gets build.
+# As it is possible to add gbuild modules into other (which is done for example for
+# the toplevel ooo module already) it does not make sense to create a deliver.log once
+# fully migrated. The whole process should be rethought then.
+# We need the trailing whitespace so that the newline of echo does not become part of the last record.
+define gb_Deliver_setdeliverlogcommand
+ifeq ($$(words $(gb_Module_ALLMODULES)),1)
+$$(eval $$(call gb_Output_announce,$$(strip $$(gb_Module_ALLMODULES)),$$(true),LOG,1))
+deliverlog : COMMAND := \
+ mkdir -p $$(OUTDIR)/inc/$$(strip $$(gb_Module_ALLMODULES)) \
+ && RESPONSEFILE=$$(call var2file,$(shell $(gb_MKTEMP)),100,$$(sort $$(gb_Deliver_DELIVERABLES))) \
+ && $(gb_AWK) -f $$(GBUILDDIR)/processdelivered.awk < $$$${RESPONSEFILE} \
+ > $$(OUTDIR)/inc/$$(strip $(gb_Module_ALLMODULES))/gb_deliver.log \
+ && rm -f $$$${RESPONSEFILE}
+else
+$$(eval $$(call gb_Output_announce,more than one module - creating no deliver.log,$$(true),LOG,1))
+deliverlog : COMMAND := true
+endif
+endef
+
+# FIXME: this does not really work for real multi repository builds, but the
+# deliver.log format is broken in that case anyway
+.PHONY : deliverlog showdeliverables
+deliverlog:
+ $(eval $(call gb_Deliver_setdeliverlogcommand))
+ $(call gb_Helper_abbreviate_dirs, $(COMMAND))
+
+# all : deliverlog
+
+define gb_Deliver_print_deliverable
+$(info $(1) $(patsubst $(OUTDIR)/%,%,$(2)))
+endef
+
+showdeliverables :
+ $(eval MAKEFLAGS := s)
+ $(foreach deliverable,$(sort $(gb_Deliver_DELIVERABLES)),\
+ $(call gb_Deliver_print_deliverable,$(REPODIR)/$(firstword $(subst :, ,$(deliverable))),$(REPODIR)/$(lastword $(subst :, ,$(deliverable)))))
+ true
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Executable.mk b/solenv/gbuild/Executable.mk
new file mode 100644
index 000000000000..a1cf1c34856b
--- /dev/null
+++ b/solenv/gbuild/Executable.mk
@@ -0,0 +1,91 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# Executable class
+
+# defined by platform
+# gb_Executable_Executable_platform
+
+.PHONY : $(call gb_Executable_get_clean_target,%)
+$(call gb_Executable_get_clean_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_Executable_get_target,$*) \
+ $(AUXTARGETS))
+
+$(call gb_Executable_get_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ $(call gb_Deliver_deliver,$<,$@) \
+ $(foreach target,$(AUXTARGETS), && $(call gb_Deliver_deliver,$(dir $<)/$(notdir $(target)),$(target))))
+
+define gb_Executable_Executable
+$(call gb_Executable__Executable_impl,$(1),Executable/$(1)$(gb_Executable_EXT))
+
+endef
+
+define gb_Executable__Executable_impl
+$(call gb_LinkTarget_LinkTarget,$(2))
+$(call gb_LinkTarget_set_targettype,$(2),Executable)
+$(call gb_Executable_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2))
+$(call gb_Executable_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
+$(call gb_Executable_Executable_platform,$(1),$(2))
+$$(eval $$(call gb_Module_register_target,$(call gb_Executable_get_target,$(1)),$(call gb_Executable_get_clean_target,$(1))))
+$(call gb_Deliver_add_deliverable,$(call gb_Executable_get_target,$(1)),$(call gb_LinkTarget_get_target,$(2)))
+
+endef
+
+define gb_Executable_forward_to_Linktarget
+gb_Executable_$(1) = $$(call gb_LinkTarget_$(1),Executable/$$(1)$$(gb_Executable_EXT),$$(2),$$(3))
+
+endef
+
+$(eval $(foreach method,\
+ add_cobject \
+ add_cobjects \
+ add_cxxobject \
+ add_cxxobjects \
+ add_objcxxobject \
+ add_objcxxobjects \
+ add_exception_objects \
+ add_noexception_objects \
+ add_generated_exception_objects \
+ set_cflags \
+ set_cxxflags \
+ set_objcxxflags \
+ set_defs \
+ set_include \
+ set_ldflags \
+ set_library_path_flags \
+ add_linked_libs \
+ add_linked_static_libs \
+ add_package_headers \
+ add_sdi_headers \
+ add_precompiled_header \
+,\
+ $(call gb_Executable_forward_to_Linktarget,$(method))\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Helper.mk b/solenv/gbuild/Helper.mk
new file mode 100644
index 000000000000..c62825dcb2e2
--- /dev/null
+++ b/solenv/gbuild/Helper.mk
@@ -0,0 +1,167 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+gb_Helper_NULLFILE := /dev/null
+
+gb_Helper_MISC := $(WORKDIR)/Misc
+
+ifeq ($(JAVACOMPILER),)
+JAVACOMPILER := javac
+endif
+
+ifeq ($(JAVAINTERPRETER),)
+JAVAINTERPRETER := java
+endif
+
+# general propose phony target
+gb_Helper_PHONY := $(gb_Helper_MISC)/PHONY
+
+# general propose empty dummy target
+gb_Helper_MISCDUMMY := $(gb_Helper_MISC)/DUMMY
+
+gb_Helper_REPOSITORYNAMES :=
+
+.PHONY : $(WORKDIR)/Misc/PHONY
+$(gb_Helper_MISCDUMMY) :
+ @mkdir -p $(dir $@) && touch $@
+
+define gb_Helper_abbreviate_dirs
+R=$(REPODIR) && \
+$(subst $(REPODIR)/,$$R/,S=$(SRCDIR) && \
+$(subst $(SRCDIR)/,$$S/,O=$(OUTDIR)) && \
+$(subst $(SRCDIR)/,$$S/,$(subst $(OUTDIR)/,$$O/,W=$(WORKDIR) && $(subst $(WORKDIR)/,$$W/,$(1)))))
+endef
+
+define gb_Helper_make_clean_target
+gb_$(1)_get_clean_target = $(WORKDIR)/Clean/$(1)/$$(1)
+
+endef
+
+define gb_Helper_make_outdir_clean_target
+gb_$(1)_get_clean_target = $$(subst $(OUTDIR)/,$(WORKDIR)/Clean/OutDir/,$$(call gb_$(1)_get_target,$$(1)))
+
+endef
+
+define gb_Helper_make_dep_target
+gb_$(1)_get_dep_target = $(WORKDIR)/Dep/$(1)/$$(1).d
+
+endef
+
+define gb_Helper_make_clean_targets
+$(foreach targettype,$(1),\
+ $(call gb_Helper_make_clean_target,$(targettype)))
+
+endef
+
+define gb_Helper_make_outdir_clean_targets
+$(foreach targettype,$(1),\
+ $(call gb_Helper_make_outdir_clean_target,$(targettype)))
+
+endef
+
+define gb_Helper_make_dep_targets
+$(foreach targettype,$(1),\
+ $(call gb_Helper_make_dep_target,$(targettype)))
+
+endef
+
+define gb_Helper_get_outdir_clean_target
+$$(subst $(OUTDIR)/,$(WORKDIR)/Clean/OutDir/,$(1))
+endef
+
+define gb_Helper_register_repository
+gb_Helper_CURRENTREPOSITORY := $(1)
+gb_Helper_REPOSITORYNAMES += $(1)
+
+endef
+
+define gb_Helper_add_repository
+gb_Helper_CURRENTREPOSITORY :=
+include $(1)/Repository.mk
+ifeq ($$(gb_Helper_CURRENTREPOSITORY),)
+$$(eval $$(call gb_Output_error,No call to gb_Helper_register_repository in Repository.mk for repository $(1)))
+endif
+$$(gb_Helper_CURRENTREPOSITORY) := $(1)
+
+endef
+
+define gb_Helper_add_repositories
+$(foreach repo,$(1),$(call gb_Helper_add_repository,$(repo)))
+
+endef
+
+define gb_Helper_init_registries
+gb_Executable_VALIDGROUPS := UREBIN SDK OOO BRAND NONE
+gb_Library_VALIDGROUPS := OOOLIBS PLAINLIBS_NONE PLAINLIBS_URE PLAINLIBS_OOO RTLIBS RTVERLIBS STLLIBS UNOLIBS_URE UNOLIBS_OOO UNOVERLIBS
+gb_StaticLibrary_VALIDGROUPS := PLAINLIBS
+
+$$(foreach group,$$(gb_Executable_VALIDGROUPS),$$(eval gb_Executable_$$(group) :=))
+$$(foreach group,$$(gb_Library_VALIDGROUPS),$$(eval gb_Library_$$(group) :=))
+$$(foreach group,$$(gb_StaticLibrary_VALIDGROUPS),$$(eval gb_StaticLibrary_$$(group) :=))
+
+endef
+
+define gb_Helper_collect_libtargets
+gb_Library_TARGETS := $$(foreach group,$$(gb_Library_VALIDGROUPS),$$(gb_Library_$$(group)))
+gb_StaticLibrary_TARGETS := $$(foreach group,$$(gb_StaticLibrary_VALIDGROUPS),$$(gb_StaticLibrary_$$(group)))
+
+endef
+
+define gb_Helper_collect_knownlibs
+gb_Library_KNOWNLIBS := $$(foreach group,$$(gb_Library_VALIDGROUPS),$$(gb_Library_$$(group)))
+gb_StaticLibrary_KNOWNLIBS := $$(foreach group,$$(gb_StaticLibrary_VALIDGROUPS),$$(gb_StaticLibrary_$$(group)))
+
+endef
+
+define gb_Helper_register_executables
+ifeq ($$(filter $(1),$$(gb_Executable_VALIDGROUPS)),)
+$$(eval $$(call gb_Output_error,$(1) is not a valid group for executables. Valid groups are: $$(gb_Executable_VALIDGROUPS)))
+endif
+
+gb_Executable_$(1) += $(2)
+
+endef
+
+define gb_Helper_register_libraries
+ifeq ($$(filter $(1),$$(gb_Library_VALIDGROUPS)),)
+$$(eval $$(call gb_Output_error,$(1) is not a valid group for libraries. Valid groups are: $$(gb_Library_VALIDGROUPS)))
+endif
+
+gb_Library_$(1) += $(2)
+
+endef
+
+define gb_Helper_register_static_libraries
+ifeq ($$(filter $(1),$$(gb_StaticLibrary_VALIDGROUPS)),)
+$$(eval $$(call gb_Output_error,$(1) is not a valid group for static libraries. Valid groups are: $$(gb_StaticLibrary_VALIDGROUPS)))
+endif
+
+gb_StaticLibrary_$(1) += $(2)
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/JavaClassSet.mk b/solenv/gbuild/JavaClassSet.mk
new file mode 100644
index 000000000000..655aedbd17d9
--- /dev/null
+++ b/solenv/gbuild/JavaClassSet.mk
@@ -0,0 +1,81 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+gb_JavaClassSet_REPOSITORYNAMES := $(gb_Helper_REPOSITORYNAMES)
+gb_JavaClassSet_JAVACCOMMAND := $(JAVACOMPILER)
+
+define gb_JavaClassSet__command
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_JavaClassSet_JAVACCOMMAND) -cp "$(CLASSPATH)" -d $(call gb_JavaClassSet_get_classdir,$(2)) $(3) && \
+ touch $(1))
+
+endef
+
+define gb_JavaClassSet__rules
+$$(call gb_JavaClassSet_get_repo_target,$(1),%) :
+ $$(call gb_JavaClassSet__command,$$@,$$*,$$?)
+
+$$(call gb_JavaClassSet_get_target,%) : $$(call gb_JavaClassSet_get_repo_target,$(1),%)
+ $$(call gb_Output_announce,$$*,$$(true),JCS,3)
+ $$(call gb_Helper_abbreviate_dirs,\
+ touch $$@)
+
+endef
+
+$(call gb_JavaClassSet_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),JCS,3)
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -rf $(dir $(call gb_JavaClassSet_get_target,$*)))
+
+
+$(foreach reponame,$(gb_JavaClassSet_REPOSITORYNAMES),$(eval $(call gb_JavaClassSet__rules,$(reponame))))
+
+define gb_JavaClassSet_JavaClassSet
+endef
+
+define gb_JavaClassSet__get_sourcefile
+$(1)/$(2).java
+endef
+
+define gb_JavaClassSet_add_sourcefile
+$(foreach reponame,$(gb_JavaClassSet_REPOSITORYNAMES),\
+ $(eval $(call gb_JavaClassSet_get_repo_target,$(reponame),$(1)) : $(call gb_JavaClassSet__get_sourcefile,$($(reponame)),$(2))))
+
+endef
+
+define gb_JavaClassSet_add_sourcefiles
+$(foreach sourcefile,$(2),$(call gb_JavaClassSet_add_sourcefile,$(1),$(sourcefile)))
+
+endef
+
+define gb_JavaClassSet_set_classpath
+$(call gb_JavaClassSet_get_target,$(1)) : CLASSPATH := $(2)
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/JunitTest.mk b/solenv/gbuild/JunitTest.mk
new file mode 100644
index 000000000000..afc9486fd5a4
--- /dev/null
+++ b/solenv/gbuild/JunitTest.mk
@@ -0,0 +1,97 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# JunitTest class
+
+gb_JunitTest_JAVACOMMAND := $(JAVAINTERPRETER) $(JAVAIFLAGS)
+
+.PHONY : $(call gb_JunitTest_get_clean_target,%)
+$(call gb_JunitTest_get_clean_target,%) : $(call gb_JavaClassSet_get_clean_target,$(call gb_JunitTest_get_classsetname,%))
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $@ $@.log)
+
+.PHONY : $(call gb_JunitTest_get_target,$(1))
+$(call gb_JunitTest_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),JUT,2)
+ $(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(call gb_JunitTest_get_userdir,$*) && \
+ $(gb_JunitTest_JAVACOMMAND) -cp "$(CLASSPATH)" $(DEFS) org.junit.runner.JUnitCore $(CLASSES) 2>&1 > $@.log || (cat $@.log && false))
+ $(CLEAN_CMD)
+
+define gb_JunitTest_JunitTest
+$(call gb_JunitTest_get_target,$(1)) : CLASSPATH := $(value XCLASSPATH)$(gb_CLASSPATHSEP)$(call gb_JavaClassSet_get_classdir,$(call gb_JunitTest_get_classsetname,$(1)))$(gb_CLASSPATHSEP)$(OOO_JUNIT_JAR)$(gb_CLASSPATHSEP)$(OUTDIR)/lib
+$(call gb_JunitTest_get_target,$(1)) : CLASSES :=
+$(call gb_JunitTest_JunitTest_platform,$(1))
+
+$(call gb_JavaClassSet_JavaClassSet,$(call gb_JunitTest_get_classsetname,$(1)))
+$(call gb_JunitTest_get_target,$(1)) : $(call gb_JavaClassSet_get_target,$(call gb_JunitTest_get_classsetname,$(1)))
+$(eval $(call gb_Module_register_target,$(call gb_JunitTest_get_target,$(1)),$(call gb_JunitTest_get_clean_target,$(1))))
+endef
+
+define gb_JunitTest_set_defs
+$(call gb_JunitTest_get_target,$(1)) : DEFS := $(2)
+
+endef
+
+define gb_JunitTest_add_classes
+$(call gb_JunitTest_get_target,$(1)) : CLASSES += $(2)
+
+endef
+
+define gb_JunitTest_add_class
+$(call gb_JunitTest_add_classes,$(1),$(2))
+
+endef
+
+
+define gb_JunitTest_add_sourcefile
+$(call gb_JavaClassSet_add_sourcefile,$(call gb_JunitTest_get_classsetname,$(1)),$(2))
+
+endef
+
+define gb_JunitTest_add_sourcefiles
+$(foreach sourcefile,$(2),$(call gb_JunitTest_add_sourcefile,$(1),$(sourcefile)))
+
+endef
+
+define gb_JunitTest_set_classpath
+$(call gb_JunitTest_get_target,$(1)) : CLASSPATH := $(2)
+
+endef
+
+define gb_JunitTest_add_jar
+$(call gb_JunitTest_get_target,$(1)) : CLASSPATH := $$(CLASSPATH)$(gb_CLASSPATHSEP)$(2)
+$(call gb_JunitTest_get_target,$(1)) : $(2)
+
+endef
+
+define gb_JunitTest_add_jars
+$(foreach jar,$(2),$(call gb_JunitTest_add_jar,$(1),$(jar)))
+
+endef
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk
new file mode 100644
index 000000000000..d697b1a777ca
--- /dev/null
+++ b/solenv/gbuild/Library.mk
@@ -0,0 +1,133 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# Library class
+
+# defined globally in TargetLocations.mk
+# gb_Library_OUTDIRLOCATION := $(OUTDIR)/lib
+# gb_Library_DLLDIR := $(WORKDIR)/LinkTarget/Library
+# defined by platform
+# gb_Library_COMPONENTPREFIXES
+# gb_Library_DEFS
+# gb_Library_DLLFILENAMES
+# gb_Library_FILENAMES
+# gb_Library_Library_platform
+# gb_Library_TARGETS
+
+gb_Library__get_linktargetname = Library/$(call gb_Library_get_filename,$(1))
+
+# EVIL: gb_StaticLibrary and gb_Library need the same deliver rule because they are indistinguishable on windows
+.PHONY : $(WORKDIR)/Clean/OutDir/lib/%$(gb_Library_PLAINEXT)
+$(WORKDIR)/Clean/OutDir/lib/%$(gb_Library_PLAINEXT) :
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(OUTDIR)/lib/$*$(gb_Library_PLAINEXT) \
+ $(AUXTARGETS))
+
+# EVIL: gb_StaticLibrary and gb_Library need the same deliver rule because they are indistinguishable on windows
+$(gb_Library_OUTDIRLOCATION)/%$(gb_Library_PLAINEXT) :
+ $(call gb_Helper_abbreviate_dirs,\
+ $(call gb_Deliver_deliver,$<,$@) \
+ $(foreach target,$(AUXTARGETS), && $(call gb_Deliver_deliver,$(dir $<)/$(notdir $(target)),$(target))))
+
+define gb_Library_Library
+ifeq (,$$(findstring $(1),$$(gb_Library_KNOWNLIBS)))
+$$(eval $$(call gb_Output_info,Currently known libraries are: $(sort $(gb_Library_KNOWNLIBS)),ALL))
+$$(eval $$(call gb_Output_error,Library $(1) must be registered in Repository.mk))
+endif
+$(call gb_Library_get_target,$(1)) : AUXTARGETS :=
+$(call gb_Library__Library_impl,$(1),$(call gb_Library__get_linktargetname,$(1)))
+
+endef
+
+define gb_Library__Library_impl
+$(call gb_LinkTarget_LinkTarget,$(2))
+$(call gb_LinkTarget_set_targettype,$(2),Library)
+$(call gb_LinkTarget_set_defs,$(2),\
+ $$(DEFS) \
+ $(gb_Library_DEFS) \
+)
+$(call gb_Library_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2))
+$(call gb_Library_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
+$(call gb_Library_Library_platform,$(1),$(2),$(gb_Library_DLLDIR)/$(call gb_Library_get_dllname,$(1)))
+$$(eval $$(call gb_Module_register_target,$(call gb_Library_get_target,$(1)),$(call gb_Library_get_clean_target,$(1))))
+$(call gb_Deliver_add_deliverable,$(call gb_Library_get_target,$(1)),$(call gb_LinkTarget_get_target,$(2)))
+
+endef
+
+define gb_Library_set_componentfile
+$(call gb_ComponentTarget_ComponentTarget,$(2),$(call gb_Library__get_componentprefix,$(1)),$(call gb_Library_get_runtime_filename,$(1)))
+$(call gb_Library_get_target,$(1)) : $(call gb_ComponentTarget_get_outdir_target,$(2))
+$(call gb_Library_get_clean_target,$(1)) : $(call gb_ComponentTarget_get_clean_target,$(2))
+
+endef
+
+gb_Library__get_componentprefix = \
+ $(call gb_Library__get_layer_componentprefix,$(call \
+ gb_Library_get_layer,$(1)))
+
+gb_Library__get_layer_componentprefix = \
+ $(patsubst $(1):%,%,$(or \
+ $(filter $(1):%,$(gb_Library_COMPONENTPREFIXES)), \
+ $(call gb_Output_error,no ComponentTarget native prefix for layer '$(1)')))
+
+
+define gb_Library__forward_to_Linktarget
+gb_Library_$(1) = $$(call gb_LinkTarget_$(1),$$(call gb_Library__get_linktargetname,$$(1)),$$(2),$$(3))
+
+endef
+
+gb_Library_get_runtime_filename = \
+ $(or $(call gb_Library_get_dllname,$(1)),$(call gb_Library_get_filename,$(1)))
+
+$(eval $(foreach method,\
+ add_cobject \
+ add_cobjects \
+ add_cxxobject \
+ add_cxxobjects \
+ add_objcxxobject \
+ add_objcxxobjects \
+ add_exception_objects \
+ add_noexception_objects \
+ add_generated_exception_objects \
+ set_cflags \
+ set_cxxflags \
+ set_objcxxflags \
+ set_defs \
+ set_include \
+ set_ldflags \
+ set_library_path_flags \
+ add_linked_libs \
+ add_linked_static_libs \
+ add_package_headers \
+ add_sdi_headers \
+ add_precompiled_header \
+,\
+ $(call gb_Library__forward_to_Linktarget,$(method))\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
new file mode 100644
index 000000000000..612b85bf3e20
--- /dev/null
+++ b/solenv/gbuild/LinkTarget.mk
@@ -0,0 +1,641 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# CObject class
+
+gb_CObject_REPOS := $(gb_REPOS)
+
+gb_CObject_get_source = $(1)/$(2).c
+# defined by platform
+# gb_CObject__command
+
+# this rule generates an "always rebuild" dep file, to have something to include.
+# the dep file will be overridden on the fly, when the object is compiled
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_CObject__command_dep
+mkdir -p $(dir $(1)) && \
+ echo '$(call gb_CObject_get_target,$(2)) : $$(gb_Helper_PHONY)' > $(1)
+
+endef
+else
+gb_CObject__command_dep =
+endif
+
+define gb_CObject__rules
+$$(call gb_CObject_get_target,%) : $$(call gb_CObject_get_source,$(1),%)
+ $$(call gb_CObject__command,$$@,$$*,$$<,$$(DEFS),$$(CFLAGS),$$(INCLUDE))
+
+ifeq ($(gb_FULLDEPS),$(true))
+$$(call gb_CObject_get_dep_target,%) : $$(call gb_CObject_get_source,$(1),%)
+ $$(call gb_CObject__command_dep,$$@,$$*,$$<,$$(DEFS),$$(CFLAGS),$$(INCLUDE))
+endif
+
+endef
+
+$(foreach repo,$(gb_CObject_REPOS),$(eval $(call gb_CObject__rules,$(repo))))
+
+$(call gb_CObject_get_dep_target,%) :
+ $(eval $(call gb_Output_error,Unable to find plain C file $(call gb_CObject_get_source,,$*) in the repositories: $(gb_CObject_REPOS)))
+
+gb_CObject_CObject =
+
+
+# CxxObject class
+
+gb_CxxObject_REPOS := $(gb_REPOS)
+
+gb_CxxObject_get_source = $(1)/$(2).cxx
+# defined by platform
+# gb_CxxObject__command
+
+# This rule generates an "always rebuild" dep file, to have something to
+# include. The dep file will be overridden on the fly, when the object is
+# compiled.
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_CxxObject__command_dep
+mkdir -p $(dir $(1)) && \
+ echo '$(call gb_CxxObject_get_target,$(2)) : $$(gb_Helper_PHONY)' > $(1)
+
+endef
+else
+gb_CxxObject__command_dep =
+endif
+
+# Only enable PCH if the PCH_CXXFLAGS and the PCH_DEFS (from the linktarget)
+# are the same as the CXXFLAGS and DEFS we want to use for this object. This
+# should usually be the case. The DEFS/CXXFLAGS would have too be manually
+# overridden for one object file for them to differ. PCH_CXXFLAGS/PCH_DEFS
+# should never be overridden on an object -- they should be the same as for the
+# whole linktarget. In general it should be cleaner to use a static library
+# compiled with different flags and link that in rather than mixing different
+# flags in one linktarget.
+define gb_CxxObject__set_pchflags
+ifeq ($(gb_ENABLE_PCH),$(true))
+ifneq ($(strip $$(PCH_NAME)),)
+ifeq ($$(sort $$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_EXCEPTIONFLAGS)),$$(sort $$(CXXFLAGS) $$(DEFS)))
+$$@ : PCHFLAGS := $$(call gb_PrecompiledHeader_get_enableflags,$$(PCH_NAME))
+else
+ifeq ($$(sort $$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_NOEXCEPTIONFLAGS)),$$(sort $$(CXXFLAGS) $$(DEFS)))
+$$@ : PCHFLAGS := $$(call gb_NoexPrecompiledHeader_get_enableflags,$$(PCH_NAME))
+else
+$$(info No precompiled header available for $$*.)
+$$(info precompiled header flags ( ex) : $$(sort $$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_EXCEPTIONFLAGS)))
+$$(info precompiled header flags (noex) : $$(sort $$(PCH_CXXFLAGS) $$(PCH_DEFS) $$(gb_LinkTarget_NOEXCEPTIONFLAGS)))
+$$(info . object flags : $$(sort $$(CXXFLAGS) $$(DEFS)))
+$$@ : PCHFLAGS :=
+endif
+endif
+endif
+endif
+endef
+
+define gb_CxxObject__rules
+$$(call gb_CxxObject_get_target,%) : $$(call gb_CxxObject_get_source,$(1),%)
+ $$(eval $$(gb_CxxObject__set_pchflags))
+ $$(call gb_CxxObject__command,$$@,$$*,$$<)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$$(call gb_CxxObject_get_dep_target,%) : $$(call gb_CxxObject_get_source,$(1),%)
+ $$(eval $$(gb_CxxObject__set_pchflags))
+ $$(call gb_CxxObject__command_dep,$$@,$$*,$$<)
+endif
+
+endef
+
+$(foreach repo,$(gb_CxxObject_REPOS),$(eval $(call gb_CxxObject__rules,$(repo))))
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_CxxObject_get_dep_target,%) :
+ $(eval $(call gb_Output_error,Unable to find C++ file $(call gb_CxxObject_get_source,,$*) in repositories: $(gb_CxxObject_REPOS)))
+
+endif
+
+gb_CxxObject_CxxObject =
+
+
+# GenCxxObject class
+
+gb_GenCxxObject_get_source = $(WORKDIR)/$(1).cxx
+# defined by platform
+# gb_CxxObject__command
+
+# This rule generates an "always rebuild" dep file, to have something to
+# include. The dep file will be overridden on the fly, when the object is
+# compiled.
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_GenCxxObject__command_dep
+mkdir -p $(dir $(1)) && \
+ echo '$(call gb_GenCxxObject_get_target,$(2)) : $$(gb_Helper_PHONY)' > $(1)
+endef
+else
+gb_GenCxxObject__command_dep =
+endif
+
+$(call gb_GenCxxObject_get_target,%) : $(call gb_GenCxxObject_get_source,%)
+ $(call gb_CxxObject__command,$@,$*,$<)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_GenCxxObject_get_dep_target,%) : $(call gb_GenCxxObject_get_source,%)
+ $(call gb_GenCxxObject__command_dep,$@,$*,$<)
+
+$(call gb_GenCxxObject_get_dep_target,%) :
+ $(eval $(call gb_Output_error,Unable to find generated C++ file $(call gb_GenCxxObject_get_source,$*) in WORKDIR.))
+endif
+
+gb_GenCxxObject_GenCxxObject =
+
+
+# ObjCxxObject class
+#
+gb_ObjCxxObject_REPOS := $(gb_REPOS)
+
+gb_ObjCxxObject_get_source = $(1)/$(2).mm
+# defined by platform
+# gb_ObjCxxObject__command
+
+# this rule generates an "always rebuild" dep file, to have something to include.
+# the dep file will be overridden on the fly, when the object is compiled
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_ObjCxxObject__command_dep
+mkdir -p $(dir $(1)) && \
+ echo '$(call gb_ObjCxxObject_get_target,$(2)) : $$(gb_Helper_PHONY)' > $(1)
+
+endef
+else
+gb_ObjCxxObject__command_dep =
+endif
+
+define gb_ObjCxxObject__rules
+$$(call gb_ObjCxxObject_get_target,%) : $$(call gb_ObjCxxObject_get_source,$(1),%)
+ $$(call gb_ObjCxxObject__command,$$@,$$*,$$<,$$(DEFS),$$(OBJCXXFLAGS),$$(INCLUDE_STL) $$(INCLUDE))
+
+ifeq ($(gb_FULLDEPS),$(true))
+$$(call gb_ObjCxxObject_get_dep_target,%) : $$(call gb_ObjCxxObject_get_source,$(1),%)
+ $$(call gb_ObjCxxObject__command_dep,$$@,$$*,$$<,$$(DEFS),$$(OBJCXXFLAGS),$$(INCLUDE_STL) $$(INCLUDE))
+endif
+
+endef
+
+$(foreach repo,$(gb_ObjCxxObject_REPOS),$(eval $(call gb_ObjCxxObject__rules,$(repo))))
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_ObjCxxObject_get_dep_target,%) :
+ $(eval $(call gb_Output_error,Unable to find Objective C++ file $(call gb_ObjCxxObject_get_source,,$*) in repositories: $(gb_ObjCxxObject_REPOS)))
+endif
+
+gb_ObjCxxObject_ObjCxxObject =
+
+
+
+# LinkTarget class
+
+gb_LinkTarget_DEFAULTDEFS := $(gb_GLOBALDEFS)
+# defined by platform
+# gb_LinkTarget_CXXFLAGS
+# gb_LinkTarget_LDFLAGS
+# gb_LinkTarget_INCLUDE
+# gb_LinkTarget_INCLUDE_STL
+
+.PHONY : $(call gb_LinkTarget_get_clean_target,%)
+$(call gb_LinkTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),LNK,4)
+ RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),200,\
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_dep_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_dep_target,$(object))) \
+ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \
+ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_dep_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_dep_target,$(object))) \
+ $(call gb_LinkTarget_get_target,$*) \
+ $(call gb_LinkTarget_get_dep_target,$*) \
+ $(call gb_LinkTarget_get_headers_target,$*) \
+ $(call gb_LinkTarget_get_external_headers_target,$*) \
+ $(DLLTARGET) \
+ $(AUXTARGETS)) && \
+ cat $${RESPONSEFILE} |xargs -n 200 rm -f && \
+ rm -f $${RESPONSEFILE}
+
+
+# cat the deps of all objects in one file, then we need only open that one file
+define gb_LinkTarget__command_dep
+$(call gb_Output_announce,LNK:$(2),$(true),DEP,1)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ RESPONSEFILE=$(call var2file,$(shell $(gb_MKTEMP)),200,\
+ $(foreach object,$(3),$(call gb_CObject_get_dep_target,$(object))) \
+ $(foreach object,$(4),$(call gb_CxxObject_get_dep_target,$(object))) \
+ $(foreach object,$(5),$(call gb_ObjCxxObject_get_dep_target,$(object)))\
+ $(foreach object,$(6),$(call gb_GenCxxObject_get_dep_target,$(object)))\
+ ) && \
+ cat $${RESPONSEFILE} |xargs -n 200 cat > $(1)) && \
+ rm -f $${RESPONSEFILE}
+
+endef
+
+$(call gb_LinkTarget_get_target,%) : $(call gb_LinkTarget_get_headers_target,%) $(gb_Helper_MISCDUMMY)
+ $(call gb_LinkTarget__command,$@,$*)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_target,%) : $(call gb_LinkTarget_get_dep_target,%)
+$(call gb_LinkTarget_get_dep_target,%) : | $(call gb_LinkTarget_get_headers_target,%)
+ $(call gb_LinkTarget__command_dep,$@,$*,$(COBJECTS),$(CXXOBJECTS),$(OBJCXXOBJECTS),$(GENCXXOBJECTS))
+endif
+
+# Ok, this is some dark voodoo: When declaring a linktarget with
+# gb_LinkTarget_LinkTarget we set SELF in the headertarget to name of the
+# target. When the rule for the headertarget is executed and SELF does not
+# match the target name, we are depending on a linktarget that was never
+# declared. In a full build exclusively in gbuild that should never happen.
+# However, partial gbuild build will not know about how to build lower level
+# linktargets, just as gbuild can not know about linktargets generated in the
+# old build.pl/dmake system. Once all is migrated, gbuild should error out
+# when is is told to depend on a linktarget it does not know about and not
+# only warn.
+define gb_LinkTarget__get_external_headers_check
+ifneq ($$(SELF),$$*)
+$$(eval $$(call gb_Output_info,LinkTarget $$* not defined: Assuming headers to be there!,ALL))
+endif
+$$@ : COMMAND := $$(call gb_Helper_abbreviate_dirs, mkdir -p $$(dir $$@) && touch $$@ && mkdir -p $(call gb_LinkTarget_get_target,)pdb/$$(dir $$*))
+
+endef
+
+$(call gb_LinkTarget_get_external_headers_target,%) :
+ $(eval $(gb_LinkTarget__get_external_headers_check))
+ $(COMMAND)
+
+$(call gb_LinkTarget_get_headers_target,%) : $(call gb_LinkTarget_get_external_headers_target,%)
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && touch $@)
+
+# Explanation of some of the targets:
+# - gb_LinkTarget_get_external_headers_target is the targets that guarantees all
+# headers from linked against libraries are in OUTDIR.
+# - gb_LinkTarget_get_headers_target is the target that guarantees all headers
+# from the linked against the libraries and the linktargets own headers
+# (including generated headers) are in the OUTDIR.
+# - gb_LinkTarget_get_target links the objects into a file in WORKDIR.
+# gb_LinkTarget_get_target depends on gb_LinkTarget_get_headers_target which in
+# turn depends gb_LinkTarget_get_external_headers_target.
+# gb_LinkTarget_get_target depends additionally on the objects, which in turn
+# depend build-order only on the gb_LinkTarget_get_headers_target. The build
+# order-only dependency ensures all headers to be there for compiling and
+# dependency generation without causing all objects to be rebuild when one
+# header changes. Only the ones with an explicit dependency in their generated
+# dependency file will be rebuild.
+#
+# gb_LinkTarget_get_target is the target that links the objects into a file in
+# WORKDIR
+# Explanation of some of the variables:
+# - AUXTARGETS are the additionally generated files that need to be cleaned out
+# on clean.
+# - PCH_CXXFLAGS and PCH_DEFS are the flags that the precompiled headers will
+# be compiled with. They should never be overridden in a single object
+# files.
+# - TARGETTYPE is the type of linktarget as some platforms need very different
+# command to link different targettypes.
+#
+# Since most variables are set on the linktarget and not on the object, the
+# object learns about these setting via GNU makes scoping of target variables.
+# Therefore it is important that objects are only directly depended on by the
+# linktarget. This for example means that you cannot build a single object
+# alone, because then you would directly depend on the object.
+define gb_LinkTarget_LinkTarget
+$(call gb_LinkTarget_get_clean_target,$(1)) : AUXTARGETS :=
+$(call gb_LinkTarget_get_external_headers_target,$(1)) : SELF := $(1)
+$(call gb_LinkTarget_get_target,$(1)) : DLLTARGET :=
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : COBJECTS :=
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : CXXOBJECTS :=
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : OBJCXXOBJECTS :=
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : GENCXXOBJECTS :=
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : CFLAGS := $$(gb_LinkTarget_CFLAGS)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : CXXFLAGS := $$(gb_LinkTarget_CXXFLAGS)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PCH_CXXFLAGS := $$(gb_LinkTarget_CXXFLAGS) $(gb_COMPILEROPTFLAGS)
+$(call gb_LinkTarget_get_target,$(1)) : OBJCXXFLAGS := $$(gb_LinkTarget_OBJCXXFLAGS)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : DEFS := $$(gb_LinkTarget_DEFAULTDEFS)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PCH_DEFS := $$(gb_LinkTarget_DEFAULTDEFS)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : INCLUDE := $$(gb_LinkTarget_INCLUDE)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : INCLUDE_STL := $$(gb_LinkTarget_INCLUDE_STL)
+$(call gb_LinkTarget_get_target,$(1)) : LDFLAGS := $$(gb_LinkTarget_LDFLAGS)
+$(call gb_LinkTarget_get_target,$(1)) : LINKED_LIBS :=
+$(call gb_LinkTarget_get_target,$(1)) : LINKED_STATIC_LIBS :=
+$(call gb_LinkTarget_get_target,$(1)) : TARGETTYPE :=
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PCH_NAME :=
+$(call gb_LinkTarget_get_target,$(1)) : PCHOBJS :=
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PDBFILE :=
+
+ifeq ($(gb_FULLDEPS),$(true))
+ifneq ($(wildcard $(call gb_LinkTarget_get_dep_target,$(1))),)
+include $(call gb_LinkTarget_get_dep_target,$(1))
+else
+$(firstword $(MAKEFILE_LIST)) : $(call gb_LinkTarget_get_dep_target,$(1))
+endif
+$(call gb_LinkTarget_get_dep_target,$(1)) : COBJECTS :=
+$(call gb_LinkTarget_get_dep_target,$(1)) : CXXOBJECTS :=
+$(call gb_LinkTarget_get_dep_target,$(1)) : OBJCXXOBJECTS :=
+$(call gb_LinkTarget_get_dep_target,$(1)) : GENCXXOBJECTS :=
+$(call gb_LinkTarget_get_dep_target,$(1)) : CFLAGS := $$(gb_LinkTarget_CFLAGS)
+$(call gb_LinkTarget_get_dep_target,$(1)) : CXXFLAGS := $$(gb_LinkTarget_CXXFLAGS)
+$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_CXXFLAGS := $$(gb_LinkTarget_CXXFLAGS) $(gb_COMPILEROPTFLAGS)
+$(call gb_LinkTarget_get_dep_target,$(1)) : OBJCXXFLAGS := $$(gb_LinkTarget_OBJCXXFLAGS)
+$(call gb_LinkTarget_get_dep_target,$(1)) : DEFS := $$(gb_LinkTarget_DEFAULTDEFS)
+$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_DEFS := $$(gb_LinkTarget_DEFAULTDEFS)
+$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE := $$(gb_LinkTarget_INCLUDE)
+$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE_STL := $$(gb_LinkTarget_INCLUDE_STL)
+$(call gb_LinkTarget_get_dep_target,$(1)) : TARGETTYPE :=
+$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_NAME :=
+endif
+
+endef
+
+define gb_LinkTarget_set_defs
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : DEFS := $(2)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PCH_DEFS := $(2)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : DEFS := $(2)
+$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_DEFS := $(2)
+endif
+
+endef
+
+define gb_LinkTarget_set_cflags
+$(call gb_LinkTarget_get_target,$(1)) : CFLAGS := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : CFLAGS := $(2)
+endif
+
+endef
+
+define gb_LinkTarget_set_cxxflags
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : CXXFLAGS := $(2)
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PCH_CXXFLAGS := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : CXXFLAGS := $(2)
+$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_CXXFLAGS := $(2)
+endif
+
+endef
+
+define gb_LinkTarget_set_objcxxflags
+$(call gb_LinkTarget_get_target,$(1)) : OBJCXXFLAGS := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : OBJCXXFLAGS := $(2)
+endif
+
+endef
+
+define gb_LinkTarget_set_include
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : INCLUDE := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE := $(2)
+endif
+
+endef
+
+define gb_LinkTarget_set_include_stl
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : INCLUDE_STL := $(2)
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : INCLUDE_STL := $(2)
+endif
+
+endef
+
+define gb_LinkTarget_set_ldflags
+$(call gb_LinkTarget_get_target,$(1)) : LDFLAGS := $(2)
+endef
+
+define gb_LinkTarget_add_linked_libs
+ifneq (,$$(filter-out $(gb_Library_KNOWNLIBS),$(2)))
+$$(eval $$(call gb_Output_info,currently known libraries are: $(sort $(gb_Library_KNOWNLIBS)),ALL))
+$$(eval $$(call gb_Output_error,Cannot link against library/libraries $$(filter-out $(gb_Library_KNOWNLIBS),$(2)). Libraries must be registered in Repository.mk))
+endif
+
+$(call gb_LinkTarget_get_target,$(1)) : LINKED_LIBS += $(2)
+
+$(call gb_LinkTarget_get_target,$(1)) : $$(foreach lib,$(2),$$(call gb_Library_get_target,$$(lib)))
+$(call gb_LinkTarget_get_external_headers_target,$(1)) : \
+$$(foreach lib,$(2),$$(call gb_Library_get_headers_target,$$(lib)))
+
+endef
+
+define gb_LinkTarget_add_linked_static_libs
+ifneq (,$$(filter-out $(gb_StaticLibrary_KNOWNLIBS),$(2)))
+$$(eval $$(call gb_Output_info, currently known static libraries are: $(sort $(gb_StaticLibrary_KNOWNLIBS)),ALL))
+$$(eval $$(call gb_Output_error,Cannot link against static library/libraries $$(filter-out $(gb_StaticLibrary_KNOWNLIBS),$(2)). Static libraries must be registered in Repository.mk))
+endif
+
+$(call gb_LinkTarget_get_target,$(1)) : LINKED_STATIC_LIBS += $(2)
+
+$(call gb_LinkTarget_get_target,$(1)) : $$(foreach lib,$(2),$$(call gb_StaticLibrary_get_target,$$(lib)))
+$(call gb_LinkTarget_get_external_headers_target,$(1)) : \
+$$(foreach lib,$(2),$$(call gb_StaticLibrary_get_headers_target,$$(lib)))
+
+endef
+
+define gb_LinkTarget_add_cobject
+$(call gb_LinkTarget_get_target,$(1)) : COBJECTS += $(2)
+$(call gb_LinkTarget_get_clean_target,$(1)) : COBJECTS += $(2)
+
+$(call gb_LinkTarget_get_target,$(1)) : $(call gb_CObject_get_target,$(2))
+$(call gb_CObject_get_target,$(2)) : | $(call gb_LinkTarget_get_headers_target,$(1))
+$(call gb_CObject_get_target,$(2)) : CFLAGS += $(3)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : COBJECTS += $(2)
+$(call gb_LinkTarget_get_dep_target,$(1)) : $(call gb_CObject_get_dep_target,$(2))
+endif
+
+endef
+
+define gb_LinkTarget_add_cxxobject
+$(call gb_LinkTarget_get_target,$(1)) : CXXOBJECTS += $(2)
+$(call gb_LinkTarget_get_clean_target,$(1)) : CXXOBJECTS += $(2)
+
+$(call gb_LinkTarget_get_target,$(1)) : $(call gb_CxxObject_get_target,$(2))
+$(call gb_CxxObject_get_target,$(2)) : | $(call gb_LinkTarget_get_headers_target,$(1))
+$(call gb_CxxObject_get_target,$(2)) : CXXFLAGS += $(3)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : CXXOBJECTS += $(2)
+$(call gb_LinkTarget_get_dep_target,$(1)) : $(call gb_CxxObject_get_dep_target,$(2))
+endif
+
+endef
+
+define gb_LinkTarget_add_objcxxobject
+$(call gb_LinkTarget_get_target,$(1)) : OBJCXXOBJECTS += $(2)
+$(call gb_LinkTarget_get_clean_target,$(1)) : OBJCXXOBJECTS += $(2)
+
+$(call gb_LinkTarget_get_target,$(1)) : $(call gb_ObjCxxObject_get_target,$(2))
+$(call gb_ObjCxxObject_get_target,$(2)) : | $(call gb_LinkTarget_get_headers_target,$(1))
+$(call gb_ObjCxxObject_get_target,$(2)) : OBJCXXFLAGS += $(3)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : OBJCXXOBJECTS += $(2)
+$(call gb_LinkTarget_get_dep_target,$(1)) : $(call gb_ObjCxxObject_get_dep_target,$(2))
+endif
+
+endef
+
+define gb_LinkTarget_add_generated_cxx_object
+$(call gb_LinkTarget_get_target,$(1)) : GENCXXOBJECTS += $(2)
+$(call gb_LinkTarget_get_clean_target,$(1)) : GENCXXOBJECTS += $(2)
+
+$(call gb_LinkTarget_get_target,$(1)) : $(call gb_GenCxxObject_get_target,$(2))
+$(call gb_GenCxxObject_get_source,$(2)) : | $(call gb_LinkTarget_get_headers_target,$(1))
+$(call gb_GenCxxObject_get_target,$(2)) : CXXFLAGS += $(3) $(gb_COMPILEROPTFLAGS)
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_LinkTarget_get_dep_target,$(1)) : GENCXXOBJECTS += $(2)
+$(call gb_LinkTarget_get_dep_target,$(1)) : $(call gb_GenCxxObject_get_dep_target,$(2))
+endif
+
+endef
+
+define gb_LinkTarget_add_noexception_object
+$(call gb_LinkTarget_add_cxxobject,$(1),$(2),$(gb_LinkTarget_NOEXCEPTIONFLAGS) $(gb_COMPILEROPTFLAGS))
+endef
+
+define gb_LinkTarget_add_exception_object
+$(call gb_LinkTarget_add_cxxobject,$(1),$(2),$(gb_LinkTarget_EXCEPTIONFLAGS) $(gb_COMPILEROPTFLAGS))
+endef
+
+define gb_LinkTarget_add_cobjects
+$(foreach obj,$(2),$(call gb_LinkTarget_add_cobject,$(1),$(obj),$(3)))
+endef
+
+define gb_LinkTarget_add_cxxobjects
+$(foreach obj,$(2),$(call gb_LinkTarget_add_cxxobject,$(1),$(obj),$(3)))
+endef
+
+define gb_LinkTarget_add_objcxxobjects
+$(foreach obj,$(2),$(call gb_LinkTarget_add_objcxxobject,$(1),$(obj),$(3)))
+endef
+
+define gb_LinkTarget_add_noexception_objects
+$(foreach obj,$(2),$(call gb_LinkTarget_add_noexception_object,$(1),$(obj)))
+endef
+
+define gb_LinkTarget_add_exception_objects
+$(foreach obj,$(2),$(call gb_LinkTarget_add_exception_object,$(1),$(obj)))
+endef
+
+define gb_LinkTarget_add_generated_exception_object
+$(call gb_LinkTarget_add_generated_cxx_object,$(1),$(2),$(gb_LinkTarget_EXCEPTIONFLAGS))
+endef
+
+define gb_LinkTarget_add_generated_exception_objects
+$(foreach obj,$(2),$(call gb_LinkTarget_add_generated_exception_object,$(1),$(obj)))
+endef
+
+define gb_LinkTarget_set_targettype
+$(call gb_LinkTarget_get_target,$(1)) \
+$(call gb_LinkTarget_get_dep_target,$(1)) : TARGETTYPE := $(2)
+endef
+
+define gb_LinkTarget_set_dlltarget
+$(call gb_LinkTarget_get_clean_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : DLLTARGET := $(2)
+endef
+
+define gb_LinkTarget_set_auxtargets
+$(call gb_LinkTarget_get_clean_target,$(1)) : AUXTARGETS := $(2)
+endef
+
+define gb_LinkTarget__add_internal_headers
+$(call gb_LinkTarget_get_headers_target,$(1)) : $(2)
+$(2) :| $(call gb_LinkTarget_get_external_headers_target,$(1))
+
+endef
+
+define gb_LinkTarget_add_package_headers
+$(foreach package,$(2),$(call gb_LinkTarget__add_internal_headers,$(1),$(call gb_Package_get_target,$(package))))
+$(call gb_LinkTarget_get_clean_target,$(1)) : $(foreach package,$(2),$(call gb_Package_get_clean_target,$(package)))
+
+endef
+
+define gb_LinkTarget_add_sdi_headers
+$(call gb_LinkTarget__add_internal_headers,$(1),$(foreach sdi,$(2),$(call gb_SdiTarget_get_target,$(sdi))))
+$(call gb_LinkTarget_get_clean_target,$(1)) : $(foreach sdi,$(2),$(call gb_SdiTarget_get_clean_target,$(sdi)))
+endef
+
+define gb_LinkTarget__add_precompiled_header_impl
+$(call gb_LinkTarget__add_internal_headers,$(1),$(call gb_PrecompiledHeader_get_target,$(3)))
+$(call gb_LinkTarget_get_clean_target,$(1)) : $(call gb_PrecompiledHeader_get_clean_target,$(3))
+$(call gb_PrecompiledHeader_get_target,$(3)) : $(2).cxx
+
+$(call gb_LinkTarget__add_internal_headers,$(1),$(call gb_NoexPrecompiledHeader_get_target,$(3)))
+$(call gb_LinkTarget_get_clean_target,$(1)) : $(call gb_NoexPrecompiledHeader_get_clean_target,$(3))
+$(call gb_NoexPrecompiledHeader_get_target,$(3)) : $(2).cxx
+
+$(call gb_LinkTarget_get_target,$(1)) : PCH_NAME := $(3)
+$(call gb_LinkTarget_get_target,$(1)) : PCHOBJS = $(call gb_PrecompiledHeader_get_target,$(3)).obj $(call gb_NoexPrecompiledHeader_get_target,$(3)).obj
+
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : DEFS := $$(DEFS) -DPRECOMPILED_HEADERS
+$(call gb_LinkTarget_get_headers_target,$(1)) \
+$(call gb_LinkTarget_get_target,$(1)) : PCH_DEFS = $$(DEFS)
+ifeq ($(gb_FULLDEPS),$(true))
+-include \
+ $(call gb_PrecompiledHeader_get_dep_target,$(3)) \
+ $(call gb_NoexPrecompiledHeader_get_dep_target,$(3))
+$(call gb_LinkTarget_get_dep_target,$(1)) : DEFS := $$(DEFS) -DPRECOMPILED_HEADERS
+$(call gb_LinkTarget_get_dep_target,$(1)) : PCH_DEFS = $$(DEFS)
+endif
+
+endef
+
+define gb_LinkTarget_add_precompiled_header
+ifeq ($(gb_ENABLE_PCH),$(true))
+$(call gb_LinkTarget__add_precompiled_header_impl,$(1),$(2),$(notdir $(2)))
+endif
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Module.mk b/solenv/gbuild/Module.mk
new file mode 100644
index 000000000000..b909b46e27a0
--- /dev/null
+++ b/solenv/gbuild/Module.mk
@@ -0,0 +1,212 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# Module class
+
+gb_Module_ALLMODULES :=
+gb_Module_MODULELOCATIONS :=
+gb_Module_TARGETSTACK :=
+gb_Module_CHECKTARGETSTACK :=
+gb_Module_SUBSEQUENTCHECKTARGETSTACK :=
+gb_Module_CLEANTARGETSTACK :=
+
+.PHONY : $(call gb_Module_get_clean_target,%)
+$(call gb_Module_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),MOD,5)
+ $(call gb_Output_announce_title,module $* cleared.)
+ -$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_Module_get_target,$*) $(call gb_Module_get_check_target,$*) $(call gb_Module_get_subsequentcheck_target,$*))
+
+$(call gb_Module_get_check_target,%) :
+ $(call gb_Output_announce,$*,$(true),CHK,5)
+ $(call gb_Output_announce_title,module $* checks done.)
+ -$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && \
+ touch $@)
+
+$(call gb_Module_get_subsequentcheck_target,%) :
+ $(call gb_Output_announce,$*,$(true),SCK,5)
+ $(call gb_Output_announce_title,module $* subsequentchecks done.)
+ -$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && \
+ touch $@)
+
+$(call gb_Module_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),MOD,5)
+ $(call gb_Output_announce_title,module $* done.)
+ -$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && \
+ touch $@)
+
+.PHONY : all allandcheck clean check subsequentcheck
+.DEFAULT_GOAL := allandcheck
+
+allandcheck : all check
+
+# compatibility with the old build system
+ifneq ($(strip $(OOO_SUBSEQUENT_TESTS)),)
+.DEFAULT_GOAL := subsequentcheck
+endif
+
+all :
+ $(call gb_Output_announce,top level modules: $(foreach module,$(filter-out deliverlog,$^),$(notdir $(module))),$(true),ALL,6)
+ $(call gb_Output_announce,loaded modules: $(sort $(gb_Module_ALLMODULES)),$(true),ALL,6)
+ $(call gb_Output_announce_title,all done.)
+ $(call gb_Output_announce_bell)
+
+check :
+ $(call gb_Output_announce,loaded modules: $(sort $(gb_Module_ALLMODULES)),$(true),CHK,6)
+ $(call gb_Output_announce_title,all tests checked.)
+ $(call gb_Output_announce_bell)
+
+subsequentcheck : all
+ $(call gb_Output_announce,loaded modules: $(sort $(gb_Module_ALLMODULES)),$(true),SCK,6)
+ $(call gb_Output_announce_title,all subsequent tests checked.)
+ $(call gb_Output_announce_bell)
+
+clean :
+ $(call gb_Output_announce,top level modules: $(foreach module,$^,$(notdir $(module))),$(false),ALL,6)
+ $(call gb_Output_announce,loaded modules: $(sort $(gb_Module_ALLMODULES)),$(false),ALL,6)
+ $(call gb_Output_announce_title,all cleared.)
+ $(call gb_Output_announce_bell)
+
+define gb_Module_Module
+gb_Module_ALLMODULES += $(1)
+gb_Module_MODULELOCATIONS += $(1):$(dir $(realpath $(lastword $(MAKEFILE_LIST))))
+gb_Module_TARGETSTACK := $(call gb_Module_get_target,$(1)) $(gb_Module_TARGETSTACK)
+gb_Module_CHECKTARGETSTACK := $(call gb_Module_get_check_target,$(1)) $(gb_Module_CHECKTARGETSTACK)
+gb_Module_SUBSEQUENTCHECKTARGETSTACK := $(call gb_Module_get_subsequentcheck_target,$(1)) $(gb_Module_SUBSEQUENTCHECKTARGETSTACK)
+gb_Module_CLEANTARGETSTACK := $(call gb_Module_get_clean_target,$(1)) $(gb_Module_CLEANTARGETSTACK)
+
+endef
+
+# This is called inside the included file and pushes one target on each stack.
+# This has to be called with full late evaluation ($$(eval $$(call ))) and
+# should never be inlined ($(call )) as the calls defining it might be sourced
+# before gb_Module.
+define gb_Module_register_target
+gb_Module_CURRENTTARGET := $(1)
+gb_Module_CURRENTCLEANTARGET := $(2)
+
+endef
+
+# Here we include the file (in it there will be a call to gb_Module_register_target)
+define gb_Module__read_targetfile
+gb_Module_CURRENTTARGET :=
+gb_Module_CURRENTCLEANTARGET :=
+include $(patsubst $(1):%,%,$(filter $(1):%,$(gb_Module_MODULELOCATIONS)))$(2).mk
+ifneq ($$(words $$(gb_Module_CURRENTTARGET)) $$(words $$(gb_Module_CURRENTCLEANTARGET)),1 1)
+$$(eval $$(call gb_Output_error,No $(3) registered while reading $(patsubst $(1):%,%,$(filter $(1):%,$(gb_Module_MODULELOCATIONS)))$(2).mk!))
+endif
+
+endef
+
+define gb_Module_add_target
+$(call gb_Module__read_targetfile,$(1),$(2),target)
+
+$(call gb_Module_get_target,$(1)) : $$(gb_Module_CURRENTTARGET)
+$(call gb_Module_get_clean_target,$(1)) : $$(gb_Module_CURRENTCLEANTARGET)
+
+endef
+
+define gb_Module_add_check_target
+$(call gb_Module__read_targetfile,$(1),$(2),check target)
+
+$(call gb_Module_get_check_target,$(1)) : $$(gb_Module_CURRENTTARGET)
+$(call gb_Module_get_clean_target,$(1)) : $$(gb_Module_CURRENTCLEANTARGET)
+
+endef
+
+define gb_Module_add_subsequentcheck_target
+$(call gb_Module__read_targetfile,$(1),$(2),subsequentcheck target)
+
+$(call gb_Module_get_subsequentcheck_target,$(1)) : $$(gb_Module_CURRENTTARGET)
+$(call gb_Module_get_clean_target,$(1)) : $$(gb_Module_CURRENTCLEANTARGET)
+
+endef
+
+define gb_Module_add_moduledir
+include $(patsubst $(1):%,%,$(filter $(1):%,$(gb_Module_MODULELOCATIONS)))/$(2)/Module_$(2).mk
+$(call gb_Module_get_target,$(1)) : $$(firstword $$(gb_Module_TARGETSTACK))
+$(call gb_Module_get_check_target,$(1)) : $$(firstword $$(gb_Module_CHECKTARGETSTACK))
+$(call gb_Module_get_subsequentcheck_target,$(1)) : $$(firstword $$(gb_Module_SUBSEQUENTCHECKTARGETSTACK))
+$(call gb_Module_get_clean_target,$(1)) : $$(firstword $$(gb_Module_CLEANTARGETSTACK))
+gb_Module_TARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_TARGETSTACK)),$$(gb_Module_TARGETSTACK))
+gb_Module_CHECKTARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_CHECKTARGETSTACK)),$$(gb_Module_CHECKTARGETSTACK))
+gb_Module_SUBSEQUENTCHECKTARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_SUBSEQUENTCHECKTARGETSTACK)),$$(gb_Module_SUBSEQUENTCHECKTARGETSTACK))
+gb_Module_CLEANTARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_CLEANTARGETSTACK)),$$(gb_Module_CLEANTARGETSTACK))
+
+endef
+
+define gb_Module_add_targets
+$(foreach target,$(2),$(call gb_Module_add_target,$(1),$(target)))
+
+endef
+
+define gb_Module_add_check_targets
+$(foreach target,$(2),$(call gb_Module_add_check_target,$(1),$(target)))
+
+endef
+
+define gb_Module_add_subsequentcheck_targets
+$(foreach target,$(2),$(call gb_Module_add_subsequentcheck_target,$(1),$(target)))
+
+endef
+
+define gb_Module_add_moduledirs
+$(foreach target,$(2),$(call gb_Module_add_moduledir,$(1),$(target)))
+endef
+
+define gb_Module_make_global_targets
+ifneq ($$(gb_Module_TARGETSTACK),)
+$$(eval $$(call gb_Output_error,Corrupted module target stack!1))
+endif
+
+include $(1)
+
+all : $$(firstword $$(gb_Module_TARGETSTACK))
+check : $$(firstword $$(gb_Module_CHECKTARGETSTACK))
+subsequentcheck : $$(firstword $$(gb_Module_SUBSEQUENTCHECKTARGETSTACK))
+clean : $$(firstword $$(gb_Module_CLEANTARGETSTACK))
+
+ifneq ($$(words $$(gb_Module_TARGETSTACK)),1)
+$$(eval $$(call gb_Output_error,Corrupted module target stack! $(gb_Module_TARGETSTACK)))
+endif
+
+gb_Module_TARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_TARGETSTACK)),$$(gb_Module_TARGETSTACK))
+gb_Module_CHECKTARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_CHECKTARGETSTACK)),$$(gb_Module_CHECKTARGETSTACK))
+gb_Module_SUBSEQUENTCHECKTARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_SUBSEQUENTCHECKTARGETSTACK)),$$(gb_Module_SUBSEQUENTCHECKTARGETSTACK))
+gb_Module_CLEANTARGETSTACK := $$(wordlist 2,$$(words $$(gb_Module_CLEANTARGETSTACK)),$$(gb_Module_CLEANTARGETSTACK))
+
+ifneq ($$(and $$(gb_Module_TARGETSTACK),$$(gb_Module_CHECKTARGETSTACK),$$(gb_Module_SUBSEQUENTCHECKTARGETSTACK)),)
+$$(eval $$(call gb_Output_error,Corrupted module target stack!3))
+endif
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Output.mk b/solenv/gbuild/Output.mk
new file mode 100644
index 000000000000..dabb9b080d09
--- /dev/null
+++ b/solenv/gbuild/Output.mk
@@ -0,0 +1,147 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+# user notifications and formatting
+
+define gb_Output__format_type
+[ $(word 2,$(1) build clean) $(2) ]
+endef
+
+define gb_Output__format_target
+$(1)
+endef
+
+define gb_Output_error
+$(error $(1))
+endef
+
+define gb_Output_announce_title
+endef
+
+define gb_Output_announce_bell
+endef
+
+define gb_Output_info
+$(info [ info $(2) ] $(1))
+endef
+
+define gb_Output_warn
+$(warning $(NEWLINE)[ WARN $(2) ] !!!$(NEWLINE)[ WARN $(2) ] !!! $(1)$(NEWLINE)[ WARN $(2) ] !!!)
+endef
+
+gb_Output_ESCAPE := $(shell echo|awk 'BEGIN { printf "%c", 27 }' -)
+gb_Output_BELL := $(shell echo|awk 'BEGIN { printf "%c", 7 }' -)
+
+# only enable colorized output if
+# - gb_COLOR is set
+# - we have a known term
+ifneq ($(strip $(gb_COLOR)),)
+ifneq ($(filter $(TERM),Eterm aterm gnome kterm linux rxvt rxvt-unicode screen xterm xterm-color),)
+
+gb_Output_COLOR_RESET := $(gb_Output_ESCAPE)[0m
+gb_Output_COLOR_RESETANDESCAPE := $(gb_Output_COLOR_RESET)$(gb_Output_ESCAPE)
+
+gb_Output_COLOR_OUTBUILD_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTBUILD_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTBUILD_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTBUILD_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTBUILD_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;46m
+gb_Output_COLOR_OUTBUILD_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;44m
+
+gb_Output_COLOR_INBUILD_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[36;40m
+gb_Output_COLOR_INBUILD_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[36;1;40m
+gb_Output_COLOR_INBUILD_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[32;40m
+gb_Output_COLOR_INBUILD_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[32;1;40m
+gb_Output_COLOR_INBUILD_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;46m
+gb_Output_COLOR_INBUILD_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;44m
+
+gb_Output_COLOR_OUTCLEAN_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTCLEAN_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTCLEAN_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTCLEAN_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[37;40m
+gb_Output_COLOR_OUTCLEAN_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[33;1;41m
+gb_Output_COLOR_OUTCLEAN_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;41m
+
+gb_Output_COLOR_INCLEAN_LEVEL1 := $(gb_Output_COLOR_RESETANDESCAPE)[33;40m
+gb_Output_COLOR_INCLEAN_LEVEL2 := $(gb_Output_COLOR_RESETANDESCAPE)[33;1;40m
+gb_Output_COLOR_INCLEAN_LEVEL3 := $(gb_Output_COLOR_RESETANDESCAPE)[31;40m
+gb_Output_COLOR_INCLEAN_LEVEL4 := $(gb_Output_COLOR_RESETANDESCAPE)[31;1;40m
+gb_Output_COLOR_INCLEAN_LEVEL5 := $(gb_Output_COLOR_RESETANDESCAPE)[33;1;41m
+gb_Output_COLOR_INCLEAN_LEVEL6 := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;41m
+
+gb_Output_COLOR_ERROR := $(gb_Output_COLOR_RESETANDESCAPE)[37;1;41m
+
+define gb_Output__format_type
+$(subst :, ,$(word 2,$(1) \
+ $(gb_Output_COLOR_OUTBUILD_LEVEL$(3))[:$(gb_Output_COLOR_INBUILD_LEVEL$(3))__.oO:$(subst $(WHITESPACE),:,$(2))$(gb_Output_COLOR_OUTBUILD_LEVEL$(3)):] \
+ $(gb_Output_COLOR_OUTCLEAN_LEVEL$(3))[:$(gb_Output_COLOR_INCLEAN_LEVEL$(3))Xx.__:$(subst $(WHITESPACE),:,$(2))$(gb_Output_COLOR_OUTCLEAN_LEVEL$(3)):]))$(gb_Output_COLOR_RESET)
+endef
+
+define gb_Output_info
+$(info $(gb_Output_COLOR_OUTBUILD_LEVEL6)[ $(gb_Output_COLOR_INBUILD_LEVEL6)info $(2)$(gb_Output_COLOR_OUTBUILD_LEVEL6) ]$(gb_Output_COLOR_RESET) $(1))
+endef
+
+define gb_Output_warn
+$(warning $(NEWLINE)$(gb_Output_COLOR_OUTCLEAN_LEVEL6)[ $(gb_Output_COLOR_INCLEAN_LEVEL6)WARN $(2)$(gb_Output_COLOR_OUTCLEAN_LEVEL6) ]$(gb_Output_COLOR_RESET) !!!$(NEWLINE)$(gb_Output_COLOR_OUTCLEAN_LEVEL6)[ $(gb_Output_COLOR_INCLEAN_LEVEL6)WARN $(2)$(gb_Output_COLOR_OUTCLEAN_LEVEL6) ]$(gb_Output_COLOR_RESET) !!! $(1)$(NEWLINE)$(gb_Output_COLOR_OUTCLEAN_LEVEL6)[ $(gb_Output_COLOR_INCLEAN_LEVEL6)WARN $(2)$(gb_Output_COLOR_OUTCLEAN_LEVEL6) ]$(gb_Output_COLOR_RESET) !!!)
+endef
+
+define gb_Output_error
+$(error $(gb_Output_COLOR_ERROR)$(1)$(gb_Output_COLOR_RESET))
+endef
+
+endif
+endif
+
+# only enable title output if
+# - gb_TITLES is set
+# - we have a known term
+ifneq ($(strip $(gb_TITLES)),)
+ifneq ($(filter $(TERM),Eterm aterm gnome kterm rxvt rxvt-unicode screen xterm xterm-color),)
+define gb_Output_announce_title
+$(info $(gb_Output_ESCAPE)]2;gbuild: $(1)$(gb_Output_BELL)$(gb_Output_ESCAPE)[A)
+endef
+
+$(call gb_Output_announce_title,...)
+
+endif
+endif
+
+# only enable bell output if
+# - gb_BELL is set
+# - gb_TTY is true (not piping to a file)
+ifneq ($(strip $(gb_BELL)),)
+define gb_Output_announce_bell
+$(info $(gb_Output_BELL)$(gb_Output_ESCAPE)[A)
+endef
+endif
+
+define gb_Output_announce
+$(info $(call gb_Output__format_type,$(2),$(3),$(4)) $(call gb_Output__format_target,$(1)))
+endef
+
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Package.mk b/solenv/gbuild/Package.mk
new file mode 100644
index 000000000000..6e16b21d9b05
--- /dev/null
+++ b/solenv/gbuild/Package.mk
@@ -0,0 +1,80 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# PackagePart class
+
+$(foreach destination,$(call gb_PackagePart_get_destinations), $(destination)/%) :
+ $(call gb_Deliver_deliver,$<,$@)
+
+define gb_PackagePart_PackagePart
+$(OUTDIR)/$(1) : $(2)
+$(2) :| $(3)
+$(call gb_Deliver_add_deliverable,$(OUTDIR)/$(1),$(2))
+
+endef
+
+
+# Package class
+
+.PHONY : $(call gb_Package_get_clean_target,%)
+$(call gb_Package_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),PKG,2)
+ -$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(FILES))
+
+$(call gb_Package_get_preparation_target,%) :
+ mkdir -p $(dir $@) && touch $@
+
+$(call gb_Package_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),PKG,2)
+ mkdir -p $(dir $@) && touch $@
+
+
+define gb_Package_Package
+gb_Package_SOURCEDIR_$(1) := $(2)
+$(call gb_Package_get_clean_target,$(1)) : FILES := $(call gb_Package_get_target,$(1)) $(call gb_Package_get_preparation_target,$(1))
+$$(eval $$(call gb_Module_register_target,$(call gb_Package_get_target,$(1)),$(call gb_Package_get_clean_target,$(1))))
+$(call gb_Package_get_target,$(1)) : $(call gb_Package_get_preparation_target,$(1))
+
+endef
+
+define gb_Package_add_file
+$(call gb_Package_get_target,$(1)) : $(OUTDIR)/$(2)
+$(call gb_Package_get_clean_target,$(1)) : FILES += $(OUTDIR)/$(2)
+$(call gb_PackagePart_PackagePart,$(2),$$(gb_Package_SOURCEDIR_$(1))/$(3),$(call gb_Package_get_preparation_target,$(1)))
+
+endef
+
+define gb_Package_add_customtarget
+$(call gb_Package_get_preparation_target,$(1)) : $(call gb_CustomTarget_get_target,$(2))
+$(call gb_Package_get_clean_target,$(1)) : $(call gb_CustomTarget_get_clean_target,$(2))
+$(call gb_CustomTarget_CustomTarget,$(2))
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/PrecompiledHeaders.mk b/solenv/gbuild/PrecompiledHeaders.mk
new file mode 100644
index 000000000000..2c7ececf4a0a
--- /dev/null
+++ b/solenv/gbuild/PrecompiledHeaders.mk
@@ -0,0 +1,77 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+
+# PrecompiledHeader class
+
+ifeq ($(gb_ENABLE_PCH),$(true))
+
+# gb_PrecompiledHeader_get_enableflags defined by platform
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_PrecompiledHeader_DEBUGDIR := debug
+gb_NoexPrecompiledHeader_DEBUGDIR := debug
+else
+gb_PrecompiledHeader_DEBUGDIR := nodebug
+gb_NoexPrecompiledHeader_DEBUGDIR := nodebug
+endif
+
+$(call gb_PrecompiledHeader_get_dep_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && \
+ echo '$(call gb_PrecompiledHeader_get_target,$*) : $$(gb_Helper_PHONY)' > $@)
+
+$(call gb_NoexPrecompiledHeader_get_dep_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@) && \
+ echo '$(call gb_NoexPrecompiledHeader_get_target,$*) : $$(gb_Helper_PHONY)' > $@)
+
+$(call gb_PrecompiledHeader_get_target,%) :
+ $(call gb_PrecompiledHeader__command,$@,$*,$<,$(PCH_DEFS),$(PCH_CXXFLAGS) $(gb_PrecompiledHeader_EXCEPTIONFLAGS),$(INCLUDE_STL) $(INCLUDE))
+
+$(call gb_NoexPrecompiledHeader_get_target,%) :
+ $(call gb_NoexPrecompiledHeader__command,$@,$*,$<,$(PCH_DEFS),$(PCH_CXXFLAGS) $(gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS),$(INCLUDE_STL) $(INCLUDE))
+
+.PHONY : $(call gb_PrecompiledHeader_get_clean_target,%) $(call gb_NoExPrecompiledHeader_get_clean_target,%)
+$(call gb_PrecompiledHeader_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),PCH,1)
+ -$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_PrecompiledHeader_get_target,$*) \
+ $(call gb_PrecompiledHeader_get_target,$*).obj \
+ $(call gb_PrecompiledHeader_get_target,$*).pdb \
+ $(call gb_PrecompiledHeader_get_dep_target,$*))
+
+
+$(call gb_NoexPrecompiledHeader_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),PCH,1)
+ -$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_NoexPrecompiledHeader_get_target,$*) \
+ $(call gb_NoexPrecompiledHeader_get_target,$*).obj \
+ $(call gb_NoexPrecompiledHeader_get_target,$*).pdb \
+ $(call gb_NoexPrecompiledHeader_get_dep_target,$*))
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/SdiTarget.mk b/solenv/gbuild/SdiTarget.mk
new file mode 100644
index 000000000000..8f8670c6950d
--- /dev/null
+++ b/solenv/gbuild/SdiTarget.mk
@@ -0,0 +1,71 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+# SdiTarget is evil, in that it does not support multiple repositories for now (hardcoded to SRCDIR)
+# Also there is no way to cleanly deliver the generated header to OUTDIR.
+# (This can be workarounded by using gb_Package, but really should not.)
+
+# SdiTarget class
+
+gb_SdiTarget_SVIDLTARGET := $(call gb_Executable_get_target,svidl)
+gb_SdiTarget_SVIDLCOMMAND := $(gb_SdiTarget_SVIDLPRECOMMAND) $(gb_SdiTarget_SVIDLTARGET)
+
+$(call gb_SdiTarget_get_target,%) : $(SRCDIR)/%.sdi | $(gb_SdiTarget_SVIDLTARGET)
+ $(call gb_Output_announce,$*,$(true),SDI,1)
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@))
+ $(call gb_Helper_abbreviate_dirs_native,\
+ cd $(dir $<) && \
+ $(gb_SdiTarget_SVIDLCOMMAND) -quiet \
+ $(INCLUDE) \
+ -fs$@.hxx \
+ -fd$@.ilb \
+ -fl$@.lst \
+ -fz$@.sid \
+ -fx$(EXPORTS) \
+ -fm$@ \
+ $<)
+
+.PHONY : $(call gb_SdiTarget_get_clean_target,%)
+$(call gb_SdiTarget_get_clean_target,%) :
+ $(call gb_Output_announce,$*,$(false),SDI,1)
+ -$(call gb_Helper_abbreviate_dirs,\
+ rm -f $(foreach ext,.hxx .ilb .lst .sid,\
+ $(call gb_SdiTarget_get_target,$*)$(ext)) \
+ $(call gb_SdiTarget_get_target,$*))
+
+define gb_SdiTarget_SdiTarget
+$(call gb_SdiTarget_get_target,$(1)) : INCLUDE := $$(subst -I. ,-I$$(dir $(SRCDIR)/$(1)) ,$$(SOLARINC))
+$(call gb_SdiTarget_get_target,$(1)) : EXPORTS := $(SRCDIR)/$(2).sdi
+endef
+
+define gb_SdiTarget_set_include
+$(call gb_SdiTarget_get_target,$(1)) : INCLUDE := $(2)
+
+endef
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/StaticLibrary.mk b/solenv/gbuild/StaticLibrary.mk
new file mode 100644
index 000000000000..a2521bc4d242
--- /dev/null
+++ b/solenv/gbuild/StaticLibrary.mk
@@ -0,0 +1,109 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+
+# Static Library class
+
+# defined globally in gbuild.mk
+# gb_StaticLibrary_OUTDIRLOCATION := $(OUTDIR)/lib
+# defined by platform
+# gb_StaticLibrary_DEFS
+# gb_StaticLibrary_FILENAMES
+# gb_StaticLibrary_TARGETS
+
+gb_StaticLibrary__get_linktargetname = StaticLibrary/$(call gb_StaticLibrary_get_filename,$(1))
+
+# EVIL: gb_StaticLibrary and gb_Library need the same deliver rule because they are indistinguishable on windows
+.PHONY : $(WORKDIR)/Clean/OutDir/lib/%$(gb_StaticLibrary_PLAINEXT)
+$(WORKDIR)/Clean/OutDir/lib/%$(gb_StaticLibrary_PLAINEXT) :
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(OUTDIR)/lib/$*$(gb_StaticLibrary_PLAINEXT) \
+ $(AUXTARGETS))
+
+# EVIL: gb_StaticLibrary and gb_Library need the same deliver rule because they are indistinguishable on windows
+$(gb_StaticLibrary_OUTDIRLOCATION)/%$(gb_StaticLibrary_PLAINEXT) :
+ $(call gb_Helper_abbreviate_dirs,\
+ $(call gb_Deliver_deliver,$<,$@) \
+ $(foreach target,$(AUXTARGETS), && $(call gb_Deliver_deliver,$(dir $<)/$(notdir $(target)),$(target))))
+
+define gb_StaticLibrary_StaticLibrary
+ifeq (,$$(findstring $(1),$$(gb_StaticLibrary_KNOWNLIBS)))
+$$(eval $$(call gb_Output_info,Currently known static libraries are: $(sort $(gb_StaticLibrary_KNOWNLIBS)),ALL))
+$$(eval $$(call gb_Output_error,Static library $(1) must be registered in Repository.mk))
+endif
+$(call gb_StaticLibrary_get_target,$(1)) : AUXTARGETS :=
+$(call gb_StaticLibrary__StaticLibrary_impl,$(1),$(call gb_StaticLibrary__get_linktargetname,$(1)))
+
+endef
+
+define gb_StaticLibrary__StaticLibrary_impl
+$(call gb_LinkTarget_LinkTarget,$(2))
+$(call gb_LinkTarget_set_targettype,$(2),StaticLibrary)
+$(call gb_LinkTarget_set_defs,$(2),\
+ $$(DEFS) \
+ $(gb_StaticLibrary_DEFS) \
+)
+$(call gb_StaticLibrary_get_target,$(1)) : $(call gb_LinkTarget_get_target,$(2))
+$(call gb_StaticLibrary_get_clean_target,$(1)) : $(call gb_LinkTarget_get_clean_target,$(2))
+$(call gb_StaticLibrary_StaticLibrary_platform,$(1),$(2))
+$$(eval $$(call gb_Module_register_target,$(call gb_StaticLibrary_get_target,$(1)),$(call gb_StaticLibrary_get_clean_target,$(1))))
+$(call gb_Deliver_add_deliverable,$(call gb_StaticLibrary_get_target,$(1)),$(call gb_LinkTarget_get_target,$(2)))
+
+endef
+
+define gb_StaticLibrary_forward_to_Linktarget
+gb_StaticLibrary_$(1) = $$(call gb_LinkTarget_$(1),$$(call gb_StaticLibrary__get_linktargetname,$$(1)),$$(2),$$(3))
+
+endef
+
+$(eval $(foreach method,\
+ add_cobject \
+ add_cobjects \
+ add_cxxobject \
+ add_cxxobjects \
+ add_objcxxobject \
+ add_objcxxobjects \
+ add_exception_objects \
+ add_noexception_objects \
+ add_generated_exception_objects \
+ set_cflags \
+ set_cxxflags \
+ set_objcxxflags \
+ set_defs \
+ set_include \
+ set_ldflags \
+ set_library_path_flags \
+ add_linked_libs \
+ add_linked_static_libs \
+ add_package_headers \
+ add_sdi_headers \
+ add_precompiled_header \
+,\
+ $(call gb_StaticLibrary_forward_to_Linktarget,$(method))\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
new file mode 100644
index 000000000000..aba209c29136
--- /dev/null
+++ b/solenv/gbuild/TargetLocations.mk
@@ -0,0 +1,162 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# outdir target pattern
+
+gb_ComponentTarget_get_outdir_target = $(OUTDIR)/xml/component/$(1).component
+gb_Executable_get_target = $(OUTDIR)/bin/$(1)$(gb_Executable_EXT)
+gb_PackagePart_get_destinations = $(OUTDIR)/xml $(OUTDIR)/inc $(OUTDIR)/bin
+gb_PackagePart_get_target = $(OUTDIR)/$(1)
+gb_ResTarget_get_outdir_imagelist_target = $(OUTDIR)/res/img/$(1).ilst
+gb_ResTarget_get_outdir_target = $(OUTDIR)/bin/$(1).res
+
+define gb_Library_get_target
+$(patsubst $(1):%,$(gb_Library_OUTDIRLOCATION)/%,$(filter $(filter $(1),$(gb_Library_TARGETS)):%,$(gb_Library_FILENAMES)))
+endef
+
+define gb_StaticLibrary_get_target
+$(patsubst $(1):%,$(gb_StaticLibrary_OUTDIRLOCATION)/%,$(filter $(filter $(1),$(gb_StaticLibrary_TARGETS)):%,$(gb_StaticLibrary_FILENAMES)))
+endef
+
+
+# workdir target patterns
+
+gb_AllLangResTarget_get_target = $(WORKDIR)/AllLangRes/$(1)
+gb_CObject_get_target = $(WORKDIR)/CObject/$(1).o
+gb_ComponentTarget_get_target = $(WORKDIR)/ComponentTarget/$(1).component
+gb_CppunitTest_get_target = $(WORKDIR)/CppunitTest/$(1).test
+gb_CustomTarget_get_repo_target = $(WORKDIR)/CustomTarget/$(2)_$(1).done
+gb_CustomTarget_get_target = $(WORKDIR)/CustomTarget/$(1).done
+gb_CustomTarget_get_workdir = $(WORKDIR)/CustomTarget/$(1)
+gb_CxxObject_get_target = $(WORKDIR)/CxxObject/$(1).o
+gb_GenCxxObject_get_target = $(WORKDIR)/GenCxxObject/$(1).o
+gb_Executable_get_external_headers_target = $(WORKDIR)/ExternalHeaders/Executable/$(1)
+gb_Executable_get_headers_target = $(WORKDIR)/Headers/Executable/$(1)
+gb_JavaClassSet_get_classdir = $(WORKDIR)/JavaClassSet/$(1)
+gb_JavaClassSet_get_repo_target = $(WORKDIR)/JavaClassSet/$(2)/$(1).done
+gb_JavaClassSet_get_target = $(WORKDIR)/JavaClassSet/$(1)/done
+gb_JunitTest_get_classsetname = JunitTest/$(1)
+gb_JunitTest_get_target = $(WORKDIR)/JunitTest/$(1)/done
+gb_JunitTest_get_userdir = $(WORKDIR)/JunitTest/$(1)/user
+gb_LinkTarget_get_external_headers_target = $(WORKDIR)/ExternalHeaders/$(1)
+gb_LinkTarget_get_headers_target = $(WORKDIR)/Headers/$(1)
+gb_LinkTarget_get_target = $(WORKDIR)/LinkTarget/$(1)
+gb_Module_get_check_target = $(WORKDIR)/Module/check/$(1)
+gb_Module_get_subsequentcheck_target = $(WORKDIR)/Module/subsequentcheck/$(1)
+gb_Module_get_target = $(WORKDIR)/Module/$(1)
+gb_NoexPrecompiledHeader_get_dep_target = $(WORKDIR)/Dep/NoexPrecompiledHeader/$(gb_NoexPrecompiledHeader_DEBUGDIR)/$(1).hxx.pch.d
+gb_NoexPrecompiledHeader_get_target = $(WORKDIR)/NoexPrecompiledHeader/$(gb_NoexPrecompiledHeader_DEBUGDIR)/$(1).hxx.pch
+gb_ObjCxxObject_get_target = $(WORKDIR)/ObjCxxObject/$(1).o
+gb_Package_get_preparation_target = $(WORKDIR)/Package/prepared/$(1)
+gb_Package_get_target = $(WORKDIR)/Package/$(1)
+gb_PrecompiledHeader_get_dep_target = $(WORKDIR)/Dep/PrecompiledHeader/$(gb_PrecompiledHeader_DEBUGDIR)/$(1).hxx.pch.d
+gb_PrecompiledHeader_get_target = $(WORKDIR)/PrecompiledHeader/$(gb_PrecompiledHeader_DEBUGDIR)/$(1).hxx.pch
+gb_ResTarget_get_imagelist_target = $(WORKDIR)/ResTarget/$(1).ilst
+gb_ResTarget_get_target = $(WORKDIR)/ResTarget/$(1).res
+gb_SdiTarget_get_target = $(WORKDIR)/SdiTarget/$(1)
+gb_SrsPartMergeTarget_get_target = $(WORKDIR)/SrsPartMergeTarget/$(1)
+gb_SrsPartTarget_get_target = $(WORKDIR)/SrsPartTarget/$(1)
+gb_SrsTarget_get_target = $(WORKDIR)/SrsTarget/$(1).srs
+
+define gb_Library_get_external_headers_target
+$(patsubst $(1):%,$(WORKDIR)/ExternalHeaders/Library/%,$(filter $(1):%,$(gb_Library_FILENAMES)))
+endef
+
+define gb_Library_get_headers_target
+$(patsubst $(1):%,$(WORKDIR)/Headers/Library/%,$(filter $(1):%,$(gb_Library_FILENAMES)))
+endef
+
+define gb_StaticLibrary_get_external_headers_target
+$(patsubst $(1):%,$(WORKDIR)/ExternalHeaders/StaticLibrary/%,$(filter $(1):%,$(gb_StaticLibrary_FILENAMES)))
+endef
+
+define gb_StaticLibrary_get_headers_target
+$(patsubst $(1):%,$(WORKDIR)/Headers/StaticLibrary/%,$(filter $(1):%,$(gb_StaticLibrary_FILENAMES)))
+endef
+
+$(eval $(call gb_Helper_make_clean_targets,\
+ AllLangResTarget \
+ ComponentTarget \
+ JavaClassSet \
+ JunitTest \
+ LinkTarget \
+ Module \
+ NoexPrecompiledHeader \
+ PackagePart \
+ PrecompiledHeader \
+ ResTarget \
+ SdiTarget \
+ SrsTarget \
+ CppunitTest \
+ CustomTarget \
+))
+
+$(eval $(call gb_Helper_make_outdir_clean_targets,\
+ Executable \
+ Library \
+ Package \
+ StaticLibrary \
+))
+
+$(eval $(call gb_Helper_make_dep_targets,\
+ CObject \
+ CxxObject \
+ ObjCxxObject \
+ LinkTarget \
+ SrsPartTarget \
+ SrsTarget \
+))
+# needs to use same dep target because we use gb_CxxObject__command
+gb_GenCxxObject_get_dep_target = $(gb_CxxObject_get_dep_target)
+
+# other getters
+
+define gb_Library_get_layer
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_LAYER)))
+endef
+
+define gb_Executable_get_layer
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Executable_LAYER)))
+endef
+
+define gb_Library_get_filename
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_FILENAMES)))
+endef
+
+define gb_StaticLibrary_get_filename
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_StaticLibrary_FILENAMES)))
+endef
+
+
+# static members declared here because they are used globally
+
+gb_Library_OUTDIRLOCATION = $(OUTDIR)/lib
+gb_Library_DLLDIR = $(WORKDIR)/LinkTarget/Library
+gb_CppunitTest_DLLDIR = $(WORKDIR)/LinkTarget/CppunitTest
+gb_StaticLibrary_OUTDIRLOCATION = $(OUTDIR)/lib
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/Tempfile.mk b/solenv/gbuild/Tempfile.mk
new file mode 100644
index 000000000000..5b80452056e0
--- /dev/null
+++ b/solenv/gbuild/Tempfile.mk
@@ -0,0 +1,18 @@
+# Write string to temporary file by chopping into pieces that
+# fit the commandline
+# parameters: filename, maxitems (for one write), string
+# returns: filename
+define var2file
+$(strip $(1)
+$(eval gb_var2file_helpervar := $$(shell printf "%s" "" > $(1) ))\
+$(foreach item,$(3),$(eval gb_var2file_curblock += $(item)
+ ifeq ($$(words $$(gb_var2file_curblock)),$(2))
+ gb_var2file_helpervar := $$(shell printf "%s" "$$(gb_var2file_curblock)" >> $(1) )
+ gb_var2file_curblock :=
+ endif
+ ))\
+ $(eval gb_var2file_helpervar := $(shell echo " "$(gb_var2file_curblock) >> $(1) )
+ gb_var2file_curblock :=
+ ))
+endef
+
diff --git a/solenv/gbuild/extensions/post_PackModule.mk b/solenv/gbuild/extensions/post_PackModule.mk
new file mode 100644
index 000000000000..3a573cbc5d7e
--- /dev/null
+++ b/solenv/gbuild/extensions/post_PackModule.mk
@@ -0,0 +1,62 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# this is an optional extension to gbuild
+# it depends on scripts outside the gbuild directory
+# nothing in the gbuild core should ever depend on it
+
+.PHONY : packmodule cleanpackmodule
+
+define gb_PackModule_setpackmodulecommand
+ifeq ($$(words $(gb_Module_ALLMODULES)),1)
+$$(eval $$(call gb_Output_announce,$$(strip $$(gb_Module_ALLMODULES)),$$(true),ZIP,5))
+packmodule : COMMAND := $$(SOLARENV)/bin/packmodule $$(OUTDIR) $$(strip $$(gb_Module_ALLMODULES))
+else
+$$(eval $$(call gb_Output_announce,more than one module - creating no zipped package,$$(true),ZIP,5))
+packmodule : COMMAND := true
+endif
+endef
+
+packmodule : all deliverlog
+ $(eval $(call gb_PackModule_setpackmodulecommand))
+ $(COMMAND)
+
+define gb_PackModule_setcleanpackmodulecommand
+ifeq ($$(words $(gb_Module_ALLMODULES)),1)
+$$(eval $$(call gb_Output_announce,$$(strip $$(gb_Module_ALLMODULES)),$$(false),ZIP,5))
+cleanpackmodule : COMMAND := rm -f $$(OUTDIR)/zip/$$(strip $$(gb_Module_ALLMODULES)).zip
+else
+$$(eval $$(call gb_Output_announce,more than one module - deleting no zipped package,$$(false),ZIP,5))
+cleanpackmodule : COMMAND := true
+endif
+endef
+
+cleanpackmodule : clean
+ $(eval $(call gb_PackModule_setcleanpackmodulecommand))
+ $(COMMAND)
+
+# vim: set noet ts=4 sw=4:
diff --git a/solenv/gbuild/extensions/post_SetupLocal.mk b/solenv/gbuild/extensions/post_SetupLocal.mk
new file mode 100644
index 000000000000..483b8a163056
--- /dev/null
+++ b/solenv/gbuild/extensions/post_SetupLocal.mk
@@ -0,0 +1,68 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+.PHONY : setuplocal removelocal
+ifneq ($(gb_LOCALBUILDDIR),)
+ifneq ($(wildcard $(gb_LOCALBUILDDIR)/SetupLocal.mk),)
+setuplocal :
+ $(eval $(call gb_Output_error,$(gb_LOCALBUILDDIR) exists already.))
+
+else
+
+setuplocal :
+ $(eval MODULE := $(firstword $(MODULE) $(lastword $(subst /, ,$(dir $(realpath $(firstword $(MAKEFILE_LIST))))))))
+ $(eval modulerepo := $(patsubst %/$(MODULE),%,$(foreach repo,$(gb_REPOS),$(wildcard $(repo)/$(MODULE)))))
+ $(eval $(call gb_Output_announce,setting up local build directory (module: $(MODULE)).,$(true),SYC,5))
+ mkdir -p $(gb_LOCALBUILDDIR)/srcdir $(gb_LOCALBUILDDIR)/workdir $(gb_LOCALBUILDDIR)/outdir
+ rsync --archive --exclude 'workdir/**' $(SOLARVERSION)/$(INPATH)/ $(gb_LOCALBUILDDIR)/outdir
+ cp $(modulerepo)/Repository.mk $(gb_LOCALBUILDDIR)/srcdir/Repository.mk
+ cp $(modulerepo)/RepositoryFixes.mk $(gb_LOCALBUILDDIR)/srcdir/RepositoryFixes.mk
+ rsync --archive $(modulerepo)/$(MODULE)/ $(gb_LOCALBUILDDIR)/srcdir/$(MODULE)
+ echo "gb_REPOS := $(gb_LOCALBUILDDIR)/srcdir $(filter-out $(patsubst %/$(MODULE),%,$(foreach repo,$(gb_REPOS),$(wildcard $(repo)/$(MODULE)))),$(gb_REPOS))" > $(gb_LOCALBUILDDIR)/SetupLocal.mk
+ echo "#original gb_REPOS was $(gb_REPOS)" >> $(gb_LOCALBUILDDIR)/SetupLocal.mk
+ echo "OUTDIR := $(gb_LOCALBUILDDIR)/outdir" >> $(gb_LOCALBUILDDIR)/SetupLocal.mk
+ echo "#original OUTDIR was $(OUTDIR)" >> $(gb_LOCALBUILDDIR)/SetupLocal.mk
+ echo "WORKDIR := $(gb_LOCALBUILDDIR)/workdir" >> $(gb_LOCALBUILDDIR)/SetupLocal.mk
+ echo "#original WORKDIR was $(WORKDIR)" >> $(gb_LOCALBUILDDIR)/SetupLocal.mk
+
+endif
+
+removelocal :
+ $(eval $(call gb_Output_warn,removing directory $(gb_LOCALBUILDDIR).,SYC))
+ sleep 10
+ rm -rf $(gb_LOCALBUILDDIR)
+
+else
+setuplocal:
+ $(eval $(call gb_Output_error,setuplocal: gb_LOCALBUILDDIR is not set.))
+
+removelocal:
+ $(eval $(call gb_Output_error,setuplocal: gb_LOCALBUILDDIR is not set.))
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/extensions/pre_SharedLangList.mk b/solenv/gbuild/extensions/pre_SharedLangList.mk
new file mode 100644
index 000000000000..47669daa0a13
--- /dev/null
+++ b/solenv/gbuild/extensions/pre_SharedLangList.mk
@@ -0,0 +1,38 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+# share language list with dmake build system
+include $(SOLARENV)/inc/langlist.mk
+
+ifneq ($(WITH_LANG),ALL)
+gb_WITH_LANG=$(WITH_LANG)
+else
+# expand ALL based on language list)
+gb_WITH_LANG=$(completelangiso)
+endif
+
+# vim: set noet ts=4 sw=4:
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
new file mode 100644
index 000000000000..3c7010a32158
--- /dev/null
+++ b/solenv/gbuild/gbuild.mk
@@ -0,0 +1,254 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# vars needed from the env/calling makefile
+
+# CVER
+# DEBUG
+# GBUILDDIR
+# INPATH
+# JAVA_HOME
+# JDKINCS
+# LIBXML_CFLAGS
+# OS
+# PRODUCT
+# SOLARINC
+# SOLARLIB
+# STLPORT_VER
+# UPD
+
+# GXX_INCLUDE_PATH (Linux)
+# PTHREAD_CFLAGS (Linux)
+# SYSTEM_ICU (Linux)
+# SYSTEM_JPEG (Linux)
+# SYSTEM_LIBXML (Linux)
+# USE_SYSTEM_STL (Linux)
+
+SHELL := /bin/sh
+true := T
+false :=
+define NEWLINE
+
+
+endef
+
+define WHITESPACE
+
+endef
+
+COMMA :=,
+
+# optional extensions that should never be essential
+ifneq ($(wildcard $(GBUILDDIR)/extensions/pre_*.mk),)
+include $(wildcard $(GBUILDDIR)/extensions/pre_*.mk)
+endif
+
+include $(GBUILDDIR)/Output.mk
+
+# BuildDirs uses the Output functions already
+include $(GBUILDDIR)/BuildDirs.mk
+
+
+ifneq ($(strip $(PRODUCT)$(product)),)
+gb_PRODUCT := $(true)
+else
+ifneq ($(strip $(product)),)
+gb_PRODUCT := $(true)
+else
+gb_PRODUCT := $(false)
+endif
+endif
+
+ifneq ($(strip $(DEBUG)$(debug)),)
+gb_DEBUGLEVEL := 2
+else
+ifeq ($(gb_PRODUCT),$(true))
+gb_DEBUGLEVEL := 0
+else
+gb_DEBUGLEVEL := 1
+endif
+endif
+
+ifneq ($(strip $(ENABLE_PCH)),)
+gb_ENABLE_PCH := $(true)
+else
+gb_ENABLE_PCH := $(false)
+endif
+
+# for clean, setuplocal and removelocal goals we switch off dependencies
+ifneq ($(filter clean setuplocal removelocal showdeliverables,$(MAKECMDGOALS)),)
+gb_FULLDEPS := $(false)
+else
+gb_FULLDEPS := $(true)
+endif
+
+include $(GBUILDDIR)/Helper.mk
+include $(GBUILDDIR)/TargetLocations.mk
+
+$(eval $(call gb_Helper_init_registries))
+$(eval $(call gb_Helper_add_repositories,$(gb_REPOS)))
+$(eval $(call gb_Helper_collect_libtargets))
+
+ifeq ($(OS),LINUX)
+include $(GBUILDDIR)/platform/linux.mk
+else
+ifeq ($(OS),WNT)
+ifneq ($(USE_MINGW),)
+include $(GBUILDDIR)/platform/winmingw.mk
+else
+include $(GBUILDDIR)/platform/windows.mk
+endif
+else
+ifeq ($(OS),SOLARIS)
+include $(GBUILDDIR)/platform/solaris.mk
+else
+ifeq ($(OS),MACOSX)
+include $(GBUILDDIR)/platform/macosx.mk
+else
+$(eval $(call gb_Output_error,Unsupported OS: $(OS)))
+endif
+endif
+endif
+endif
+
+include $(GBUILDDIR)/Tempfile.mk
+
+include $(foreach repo,$(gb_REPOS),$(repo)/RepositoryFixes.mk)
+
+$(eval $(call gb_Helper_collect_knownlibs))
+
+gb_GLOBALDEFS := \
+ -D_REENTRANT \
+ -DCUI \
+ -DENABLE_LAYOUT_EXPERIMENTAL=0 \
+ -DENABLE_LAYOUT=0 \
+ -DOSL_DEBUG_LEVEL=$(gb_DEBUGLEVEL) \
+ -DSOLAR_JAVA \
+ -DSTLPORT_VERSION=$(STLPORT_VER) \
+ -DSUPD=$(UPD) \
+ -DVCL \
+ $(gb_OSDEFS) \
+ $(gb_COMPILERDEFS) \
+ $(gb_CPUDEFS) \
+
+ifeq ($(gb_PRODUCT),$(true))
+gb_GLOBALDEFS += \
+ -DPRODUCT \
+ -DPRODUCT_FULL \
+
+else
+gb_GLOBALDEFS += \
+ -DDBG_UTIL \
+ -D_STLP_DEBUG \
+ -D_DEBUG \
+
+endif
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_GLOBALDEFS += \
+ -DDEBUG \
+
+else
+gb_GLOBALDEFS += \
+ -DOPTIMIZE \
+ -DNDEBUG \
+
+endif
+
+ifneq ($(strip $(ENABLE_GTK)),)
+gb_GLOBALDEFS += -DENABLE_GTK
+endif
+
+ifneq ($(strip $(ENABLE_KDE)),)
+gb_GLOBALDEFS += -DENABLE_KDE
+endif
+
+ifneq ($(strip $(ENABLE_KDE4)),)
+gb_GLOBALDEFS += -DENABLE_KDE4
+endif
+
+ifeq ($(strip $(ENABLE_GRAPHITE)),TRUE)
+gb_GLOBALDEFS += -DENABLE_GRAPHITE
+endif
+
+gb_GLOBALDEFS := $(sort $(gb_GLOBALDEFS))
+
+include $(GBUILDDIR)/Deliver.mk
+
+$(eval $(call gb_Deliver_init))
+
+# We are using a set of scopes that we might as well call classes.
+
+# It is important to include them in the right order as that is
+# -- at least in part -- defining precedence. This is not an issue in the
+# WORKDIR as there are no nameing collisions there, but OUTDIR is a mess
+# and precedence is important there. This is also platform dependant.
+# For example:
+# $(OUTDIR)/bin/% for executables collides
+# with $(OUTDIR)/bin/%.res for resources on unix
+# $(OUTDIR)/lib/%.lib collides
+# on windows (static and dynamic libs)
+# $(OUTDIR)/xml/% for packageparts collides
+# with $(OUTDIR)/xml/component/%.component for components
+# This is less of an issue with GNU Make versions > 3.82 which matches for
+# shortest stem instead of first match. However, upon intoduction this version
+# is not available everywhere by default.
+
+include $(foreach class, \
+ ComponentTarget \
+ AllLangResTarget \
+ LinkTarget \
+ Library \
+ StaticLibrary \
+ Executable \
+ SdiTarget \
+ Package \
+ CustomTarget \
+ PrecompiledHeaders \
+ CppunitTest \
+ JavaClassSet \
+ JunitTest \
+ Module \
+,$(GBUILDDIR)/$(class).mk)
+
+# optional extensions that should never be essential
+ifneq ($(wildcard $(GBUILDDIR)/extensions/post_*.mk),)
+include $(wildcard $(GBUILDDIR)/extensions/post_*.mk)
+endif
+
+ifeq ($(SYSTEM_LIBXSLT),YES)
+gb_XSLTPROCTARGET :=
+gb_XSLTPROC := xsltproc
+else
+gb_XSLTPROCTARGET := $(call gb_Executable_get_target,xsltproc)
+gb_XSLTPROC := $(gb_XSLTPROCPRECOMMAND) $(gb_XSLTPROCTARGET)
+endif
+
+export gb_AWK
+export gb_XSLTPROC
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/linux.mk b/solenv/gbuild/platform/linux.mk
new file mode 100755
index 000000000000..2cbeca889001
--- /dev/null
+++ b/solenv/gbuild/platform/linux.mk
@@ -0,0 +1,407 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+GUI := UNX
+COM := GCC
+
+gb_MKTEMP := mktemp -t gbuild.XXXXXX
+
+gb_CC := cc
+gb_CXX := g++
+gb_GCCP := gcc
+gb_AR := ar
+gb_AWK := awk
+gb_CLASSPATHSEP := :
+
+# normalize setsolar and configure env.
+ifeq ($(CPU),X)
+CPUNAME := X86_64
+endif
+
+# use CC/CXX if they are nondefaults
+ifneq ($(origin CC),default)
+gb_CC := $(CC)
+gb_GCCP := $(CC)
+endif
+ifneq ($(origin CXX),default)
+gb_CXX := $(CXX)
+endif
+
+gb_OSDEFS := \
+ -D$(OS) \
+ -D_PTHREADS \
+ -DUNIX \
+ -DUNX \
+ $(PTHREAD_CFLAGS) \
+
+ifeq ($(GXX_INCLUDE_PATH),)
+GXX_INCLUDE_PATH=$(COMPATH)/include/c++/$(shell gcc -dumpversion)
+endif
+
+gb_COMPILERDEFS := \
+ -D$(COM) \
+ -DHAVE_GCC_VISIBILITY_FEATURE \
+ -DCPPU_ENV=gcc3 \
+ -DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \
+
+ifeq ($(CPUNAME),X86_64)
+gb_CPUDEFS := -D$(CPUNAME)
+else
+gb_CPUDEFS := -DX86
+endif
+
+gb_CFLAGS := \
+ -Wall \
+ -Wendif-labels \
+ -Wextra \
+ -Wshadow \
+ -fPIC \
+ -fmessage-length=0 \
+ -fno-common \
+ -fno-strict-aliasing \
+ -fvisibility=hidden \
+ -pipe \
+
+gb_CXXFLAGS := \
+ -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 \
+
+ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
+gb_CFLAGS_WERROR := -Werror
+gb_CXXFLAGS_WERROR := -Werror
+endif
+
+ifneq ($(strip $(SYSBASE)),)
+gb_CXXFLAGS += --sysroot=$(SYSBASE)
+gb_CFLAGS += --sysroot=$(SYSBASE)
+endif
+gb_LinkTarget_EXCEPTIONFLAGS := \
+ -DEXCEPTIONS_ON \
+ -fexceptions \
+ -fno-enforce-eh-specs \
+
+gb_LinkTarget_NOEXCEPTIONFLAGS := \
+ -DEXCEPTIONS_OFF \
+ -fno-exceptions \
+
+gb_LinkTarget_LDFLAGS := \
+ -Wl,--sysroot=$(SYSBASE) \
+ -Wl,-rpath-link,$(SYSBASE)/lib:$(SYSBASE)/usr/lib \
+ -Wl,-z,combreloc \
+ -Wl,-z,defs \
+ $(subst -L../lib , ,$(SOLARLIB)) \
+
+ifeq ($(HAVE_LD_HASH_STYLE),TRUE)
+gb_LinkTarget_LDFLAGS += \
+ -Wl,--hash-style=both \
+
+endif
+
+ifneq ($(HAVE_LD_BSYMBOLIC_FUNCTIONS),)
+gb_LinkTarget_LDFLAGS += \
+ -Wl,--dynamic-list-cpp-new \
+ -Wl,--dynamic-list-cpp-typeinfo \
+ -Wl,-Bsymbolic-functions \
+
+endif
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_COMPILEROPTFLAGS := -O0
+else
+gb_COMPILEROPTFLAGS := -Os
+endif
+
+gb_COMPILERNOOPTFLAGS := -O0
+
+# Helper class
+
+gb_Helper_abbreviate_dirs_native = $(gb_Helper_abbreviate_dirs)
+
+
+# CObject class
+
+define gb_CObject__command
+$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(call gb_CObject_get_dep_target,$(2))) && \
+ $(gb_CC) \
+ $(DEFS) $(CFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -MMD -MT $(call gb_CObject_get_target,$(2)) \
+ -MF $(call gb_CObject_get_dep_target,$(2)) \
+ -I$(dir $(3)) \
+ $(INCLUDE))
+endef
+
+
+# CxxObject class
+
+define gb_CxxObject__command
+$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(call gb_CxxObject_get_dep_target,$(2))) && \
+ $(gb_CXX) \
+ $(DEFS) $(CXXFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -MMD -MT $(call gb_CxxObject_get_target,$(2)) \
+ -MF $(call gb_CxxObject_get_dep_target,$(2)) \
+ -I$(dir $(3)) \
+ $(INCLUDE_STL) $(INCLUDE))
+endef
+
+
+# LinkTarget class
+
+define gb_LinkTarget__get_rpath_for_layer
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS)))
+endef
+
+gb_LinkTarget__RPATHS := \
+ URELIB:\dORIGIN \
+ UREBIN:\dORIGIN/../lib:\dORIGIN \
+ OOO:\dORIGIN:\dORIGIN/../ure-link/lib \
+ BRAND:\dORIGIN:\dORIGIN/../basis-link/program:\dORIGIN/../basis-link/ure-link/lib \
+ SDKBIN:\dORIGIN/../../ure-link/lib \
+ NONEBIN:\dORIGIN/../lib:\dORIGIN \
+
+gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
+gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_LinkTarget_CXXFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
+gb_LinkTarget_CFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
+
+endif
+
+gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC)))
+gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
+
+define gb_LinkTarget__command_dynamiclink
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_CXX) \
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(subst \d,$$,$(RPATH)) $(LDFLAGS) \
+ $(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ -Wl$(COMMA)--start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) -Wl$(COMMA)--end-group \
+ -o $(1))
+endef
+
+define gb_LinkTarget__command_staticlink
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_AR) -rsu $(1) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ 2> /dev/null)
+endef
+
+define gb_LinkTarget__command
+$(call gb_Output_announce,$(2),$(true),LNK,4)
+$(if $(filter Library CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
+$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
+endef
+
+
+# Library class
+
+gb_Library_DEFS :=
+gb_Library_TARGETTYPEFLAGS := -shared -Wl,-z,noexecstack
+gb_Library_SYSPRE := lib
+gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
+gb_Library_PLAINEXT := .so
+gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
+ifeq ($(gb_PRODUCT),$(true))
+gb_Library_STLEXT := port_gcc$(gb_Library_PLAINEXT)
+else
+gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_PLAINEXT)
+endif
+
+ifeq ($(CPUNAME),X86_64)
+gb_Library_OOOEXT := lx$(gb_Library_PLAINEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
+else
+gb_Library_OOOEXT := li$(gb_Library_PLAINEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
+endif
+
+gb_Library_PLAINLIBS_NONE += \
+ dl \
+ jpeg \
+ m \
+ pthread \
+ X11 \
+ z
+
+gb_Library_FILENAMES := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_STLEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
+
+
+gb_Library_LAYER := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \
+
+define gb_Library_get_rpath
+'-Wl,-rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1)))' \
+'-Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION)'
+endef
+
+define gb_Library_Library_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
+
+endef
+
+
+# StaticLibrary class
+
+gb_StaticLibrary_DEFS :=
+gb_StaticLibrary_SYSPRE := lib
+gb_StaticLibrary_PLAINEXT := .a
+gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)
+
+gb_StaticLibrary_FILENAMES := \
+ $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
+ $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
+
+gb_StaticLibrary_StaticLibrary_platform =
+
+
+# Executable class
+
+gb_Executable_EXT :=
+
+gb_Executable_LAYER := \
+ $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \
+ $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \
+ $(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \
+ $(foreach exe,$(gb_Executable_BRAND),$(exe):BRAND) \
+ $(foreach exe,$(gb_Executable_NONE),$(exe):NONEBIN) \
+
+
+define gb_Executable_get_rpath
+'-Wl,-rpath,$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))' \
+-Wl,-rpath-link,$(gb_Library_OUTDIRLOCATION)
+endef
+
+define gb_Executable_Executable_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1))
+
+endef
+
+
+# CppunitTest class
+
+gb_CppunitTest_CPPTESTPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+gb_CppunitTest_SYSPRE := libtest_
+gb_CppunitTest_EXT := .so
+gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
+gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename)
+
+define gb_CppunitTest_CppunitTest_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH :=
+
+endef
+
+# JunitTest class
+
+define gb_JunitTest_JunitTest_platform
+$(call gb_JunitTest_get_target,$(1)) : DEFS := \
+ -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(OUTDIR)/installation/opt/openoffice.org3/program/soffice}" \
+ -Dorg.openoffice.test.arg.env=LD_LIBRARY_PATH \
+ -Dorg.openoffice.test.arg.user=file://$(call gb_JunitTest_get_userdir,$(1)) \
+
+endef
+
+# SdiTarget class
+
+gb_SdiTarget_SVIDLPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+
+# SrsPartMergeTarget
+
+gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+
+# SrsPartTarget class
+
+gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc
+gb_SrsPartTarget_RSCCOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)
+
+define gb_SrsPartTarget__command_dep
+$(call gb_Helper_abbreviate_dirs,\
+ $(gb_GCCP) \
+ -MM -MT $(call gb_SrsPartTarget_get_target,$(1)) \
+ $(INCLUDE) \
+ $(DEFS) \
+ -c -x c++-header $(2) \
+ -o $(call gb_SrsPartTarget_get_dep_target,$(1)))
+endef
+
+
+# ComponentTarget
+
+gb_XSLTPROCPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+gb_Library_COMPONENTPREFIXES := \
+ OOO:vnd.sun.star.expand:\dOOO_BASE_DIR/program/ \
+ URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \
+
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
new file mode 100755
index 000000000000..d6b84dc43e6d
--- /dev/null
+++ b/solenv/gbuild/platform/macosx.mk
@@ -0,0 +1,454 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+GUI := UNX
+COM := GCC
+
+# Darwin mktemp -t expects a prefix, not a pattern
+gb_MKTEMP := /usr/bin/mktemp -t gbuild.
+
+gb_CC := cc
+gb_CXX := g++
+gb_GCCP := gcc
+gb_AR := ar
+gb_AWK := awk
+gb_CLASSPATHSEP := :
+
+# use CC/CXX if they are nondefaults
+ifneq ($(origin CC),default)
+gb_CC := $(CC)
+gb_GCCP := $(CC)
+endif
+ifneq ($(origin CXX),default)
+gb_CXX := $(CXX)
+endif
+
+gb_OSDEFS := \
+ -D$(OS) \
+ -D_PTHREADS \
+ -DUNIX \
+ -DUNX \
+ -D_REENTRANT \
+ -DNO_PTHREAD_PRIORITY \
+ -DQUARTZ \
+ $(EXTRA_CDEFS) \
+
+gb_COMPILERDEFS := \
+ -D$(COM) \
+ -DHAVE_GCC_VISIBILITY_FEATURE \
+ -DCPPU_ENV=gcc3 \
+ -DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \
+
+ifeq ($(CPUNAME),POWERPC)
+gb_CPUDEFS := -DPOWERPC -DPPC
+else
+gb_CPUDEFS := -DX86
+endif
+
+ifeq ($(strip $(SYSBASE)),)
+gb_SDKDIR := /Developer/SDKs/MacOSX10.4u.sdk
+else
+gb_SDKDIR := $(SYSBASE)/MacOSX10.4u.sdk
+endif
+
+
+gb_CFLAGS := \
+ -isysroot $(gb_SDKDIR) \
+ -Wall \
+ -Wendif-labels \
+ -Wextra \
+ -Wshadow \
+ -fPIC \
+ -fmessage-length=0 \
+ -fno-common \
+ -fno-strict-aliasing \
+ -pipe \
+
+gb_CXXFLAGS := \
+ -isysroot $(gb_SDKDIR) \
+ -Wall \
+ -Wendif-labels \
+ -Wextra \
+ -Wno-ctor-dtor-privacy \
+ -Wno-long-double \
+ -Wno-non-virtual-dtor \
+ -fPIC \
+ -fmessage-length=0 \
+ -fno-common \
+ -fno-strict-aliasing \
+ -fsigned-char \
+ -malign-natural \
+ -pipe \
+ #-Wshadow \ break in compiler headers already
+ #-fsigned-char \ might be removed?
+ #-malign-natural \ might be removed?
+
+# these are to get g++ to switch to Objective-C++ mode
+# (see toolkit module for a case where it is necessary to do it this way)
+gb_OBJCXXFLAGS := -x objective-c++ -fobjc-exceptions
+
+ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
+gb_CFLAGS_WERROR := -Werror
+gb_CXXFLAGS_WERROR := -Werror
+endif
+
+gb_LinkTarget_EXCEPTIONFLAGS := \
+ -DEXCEPTIONS_ON \
+ -fexceptions \
+ -fno-enforce-eh-specs \
+
+gb_LinkTarget_NOEXCEPTIONFLAGS := \
+ -DEXCEPTIONS_OFF \
+ -fno-exceptions \
+
+gb_LinkTarget_LDFLAGS := \
+ -Wl,-syslibroot,$(gb_SDKDIR) \
+ $(subst -L../lib , ,$(SOLARLIB)) \
+#man ld says: obsolete -Wl,-multiply_defined,suppress \
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_COMPILEROPTFLAGS := -O0
+else
+gb_COMPILEROPTFLAGS := -O2
+endif
+
+gb_COMPILERNOOPTFLAGS := -O0
+
+# Helper class
+
+gb_Helper_abbreviate_dirs_native = $(gb_Helper_abbreviate_dirs)
+
+
+# CObject class
+
+define gb_CObject__command
+$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(call gb_CObject_get_dep_target,$(2))) && \
+ $(gb_CC) \
+ $(DEFS) $(CFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -MMD -MT $(call gb_CObject_get_target,$(2)) \
+ -MF $(call gb_CObject_get_dep_target,$(2)) \
+ -I$(dir $(3)) \
+ $(INCLUDE))
+endef
+
+
+# CxxObject class
+
+# N.B: $(CXXFLAGS) may contain -x objective-c++, which must come before -c
+define gb_CxxObject__command
+$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(call gb_CxxObject_get_dep_target,$(2))) && \
+ $(gb_CXX) \
+ $(DEFS) $(CXXFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -MMD -MT $(call gb_CxxObject_get_target,$(2)) \
+ -MF $(call gb_CxxObject_get_dep_target,$(2)) \
+ -I$(dir $(3)) \
+ $(INCLUDE_STL) $(INCLUDE))
+endef
+
+
+# ObjCxxObject class
+
+define gb_ObjCxxObject__command
+$(call gb_Output_announce,$(2),$(true),OCX,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(call gb_ObjCxxObject_get_dep_target,$(2))) && \
+ $(gb_CXX) \
+ $(DEFS) $(OBJCXXFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -MMD -MT $(call gb_ObjCxxObject_get_target,$(2)) \
+ -MF $(call gb_ObjCxxObject_get_dep_target,$(2)) \
+ -I$(dir $(3)) \
+ $(INCLUDE_STL) $(INCLUDE))
+endef
+
+
+# LinkTarget class
+
+define gb_LinkTarget__get_rpath_for_layer
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS)))
+endef
+
+gb_LinkTarget__RPATHS := \
+ URELIB:@__________________________________________________URELIB/ \
+ UREBIN: \
+ OOO:@__________________________________________________OOO/ \
+ BRAND: \
+ SDKBIN: \
+ NONEBIN: \
+
+define gb_LinkTarget__get_installname
+$(if $(2),-install_name '$(2)$(1)',)
+endef
+
+gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
+gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
+gb_LinkTarget_OBJCXXFLAGS := $(gb_CXXFLAGS) $(gb_OBJCXXFLAGS) $(gb_COMPILEROPTFLAGS)
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_LinkTarget_CFLAGS += -g
+gb_LinkTarget_CXXFLAGS += -g
+gb_LinkTarget_OBJCXXFLAGS += -g
+endif
+
+gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC)))
+gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
+
+# FIXME framework handling very hackish
+define gb_LinkTarget__get_liblinkflags
+$(patsubst lib%.dylib,-l%,$(foreach lib,$(filter-out $(gb_Library__FRAMEWORKS),$(1)),$(call gb_Library_get_filename,$(lib)))) \
+$(addprefix -framework ,$(filter $(gb_Library__FRAMEWORKS),$(1)))
+endef
+
+define gb_LinkTarget__get_layer
+$(if $(filter Executable,$(1)),\
+ $$(call gb_Executable_get_layer,$(2)),\
+ $$(call gb_Library_get_layer,$(2)))
+endef
+
+# FIXME the DYLIB_FILE mess is only necessary because
+# solver layout is different from installation layout
+define gb_LinkTarget__command_dynamiclink
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ DYLIB_FILE=`$(gb_MKTEMP)` && \
+ $(PERL) $(SOLARENV)/bin/macosx-dylib-link-list.pl \
+ $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(subst \d,$$,$(RPATH)) $(LDFLAGS) \
+ $(patsubst lib%.dylib,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) > $${DYLIB_FILE} && \
+ $(gb_CXX) \
+ $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(subst \d,$$,$(RPATH)) $(LDFLAGS) \
+ $(call gb_LinkTarget__get_liblinkflags,$(LINKED_LIBS)) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
+ -o $(1) \
+ `cat $${DYLIB_FILE}` && \
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),\
+ $(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl Library $(LAYER) $(1) && \
+ ln -sf $(1) $(patsubst %.dylib,%.jnilib,$(1)) &&) \
+ rm -f $${DYLIB_FILE})
+endef
+
+# parameters: 1-linktarget 2-cobjects 3-cxxobjects
+define gb_LinkTarget__command_staticlink
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_AR) -rsu $(1) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(OBJCXXOBJECTS),$(call gb_ObjCxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ 2> /dev/null)
+endef
+
+define gb_LinkTarget__command
+$(call gb_Output_announce,$(2),$(true),LNK,4)
+$(if $(filter Library CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1),$(2)))
+$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
+endef
+
+
+# Library class
+
+gb_Library_DEFS :=
+gb_Library_TARGETTYPEFLAGS := -dynamiclib -single_module
+gb_Library_SYSPRE := lib
+gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
+gb_Library_PLAINEXT := .dylib
+gb_Library_RTEXT := gcc3$(gb_Library_PLAINEXT)
+ifeq ($(gb_PRODUCT),$(true))
+gb_Library_STLEXT := port_gcc$(gb_Library_PLAINEXT)
+else
+gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_PLAINEXT)
+endif
+
+ifeq ($(CPUNAME),INTEL)
+gb_Library_OOOEXT := mxi$(gb_Library_PLAINEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
+else # ifeq ($(CPUNAME),POWERPC)
+gb_Library_OOOEXT := mxp$(gb_Library_PLAINEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
+endif
+
+gb_Library__FRAMEWORKS := \
+ Cocoa \
+
+gb_Library_PLAINLIBS_NONE += \
+ Cocoa \
+ objc \
+ jpeg \
+ m \
+ pthread \
+ z \
+
+gb_Library_FILENAMES := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_STLEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
+
+
+gb_Library_LAYER := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \
+
+define gb_Library_get_rpath
+$(call gb_LinkTarget__get_installname,$(call gb_Library_get_filename,$(1)),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1))))
+endef
+
+define gb_Library_Library_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
+$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Library_get_layer,$(1))
+
+endef
+
+
+# StaticLibrary class
+
+gb_StaticLibrary_DEFS :=
+gb_StaticLibrary_SYSPRE := lib
+gb_StaticLibrary_PLAINEXT := .a
+gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)
+
+gb_StaticLibrary_FILENAMES := \
+ $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
+ $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
+
+gb_StaticLibrary_StaticLibrary_platform =
+
+
+# Executable class
+
+gb_Executable_EXT :=
+gb_Executable_TARGETTYPEFLAGS := -bind_at_load
+
+gb_Executable_LAYER := \
+ $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \
+ $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \
+ $(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \
+ $(foreach exe,$(gb_Executable_BRAND),$(exe):BRAND) \
+ $(foreach exe,$(gb_Executable_NONE),$(exe):NONEBIN) \
+
+
+define gb_Executable_get_rpath
+$(call gb_LinkTarget__get_installname,$(1),$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1))))
+endef
+
+define gb_Executable_Executable_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1))
+$(call gb_LinkTarget_get_target,$(2)) : LAYER := $(call gb_Executable_get_layer,$(1))
+
+endef
+
+
+# CppunitTest class
+
+gb_CppunitTest_CPPTESTPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib
+gb_CppunitTest_SYSPRE := libtest_
+gb_CppunitTest_EXT := .dylib
+gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
+gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename)
+
+define gb_CppunitTest_CppunitTest_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH :=
+$(call gb_LinkTarget_get_target,$(2)) : LAYER := NONE
+
+endef
+
+# JunitTest class
+
+define gb_JunitTest_JunitTest_platform
+$(call gb_JunitTest_get_target,$(1)) : DEFS := \
+ -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(OUTDIR)/installation/opt/OpenOffice.org.app/Contents/MacOS/soffice}" \
+ -Dorg.openoffice.test.arg.env=DYLD_LIBRARY_PATH \
+ -Dorg.openoffice.test.arg.user=file://$(call gb_JunitTest_get_userdir,$(1)) \
+
+endef
+
+# SdiTarget class
+
+gb_SdiTarget_SVIDLPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib
+
+# SrsPartMergeTarget
+
+gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib
+
+# SrsPartTarget class
+
+gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc
+gb_SrsPartTarget_RSCCOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)
+
+define gb_SrsPartTarget__command_dep
+$(call gb_Helper_abbreviate_dirs,\
+ $(gb_GCCP) \
+ -MM -MT $(call gb_SrsPartTarget_get_target,$(1)) \
+ $(INCLUDE) \
+ $(DEFS) \
+ -c -x c++-header $(2) \
+ -o $(call gb_SrsPartTarget_get_dep_target,$(1)))
+endef
+
+
+# ComponentTarget
+
+gb_XSLTPROCPRECOMMAND := DYLD_LIBRARY_PATH=$(OUTDIR)/lib
+gb_Library_COMPONENTPREFIXES := \
+ OOO:vnd.sun.star.expand:\dOOO_BASE_DIR/program/ \
+ URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \
+
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk
new file mode 100755
index 000000000000..f953dfbee599
--- /dev/null
+++ b/solenv/gbuild/platform/solaris.mk
@@ -0,0 +1,385 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+GUI := UNX
+COM := C52
+
+gb_MKTEMP := mktemp -t gbuild.XXXXXX
+
+gb_CC := cc
+gb_CXX := CC
+gb_GCCP := cc
+gb_AR := ar
+gb_AWK := /usr/xpg4/bin/awk
+gb_CLASSPATHSEP := :
+
+# use CC/CXX if they are nondefaults
+ifneq ($(origin CC),default)
+gb_CC := $(CC)
+gb_GCCP := $(CC)
+endif
+ifneq ($(origin CXX),default)
+gb_CXX := $(CXX)
+endif
+
+gb_OSDEFS := \
+ -D$(OS) \
+ -D$(GUI) \
+ -DSYSV \
+ -DSUN \
+ -DSUN4 \
+ -D_REENTRANT \
+ -D_POSIX_PTHREAD_SEMANTICS \
+ -D_PTHREADS \
+ -DUNIX \
+
+gb_COMPILERDEFS := \
+ -D$(COM) \
+ -DCPPU_ENV=sunpro5 \
+
+gb_CPUDEFS := -D$(CPUNAME)
+ifeq ($(CPUNAME),SPARC)
+gb_CPUDEFS += -D__sparcv8plus
+endif
+
+gb_CFLAGS := \
+ -temp=/tmp \
+ -KPIC \
+ -mt \
+ -xldscope=hidden \
+ -xCC \
+ -xc99=none \
+
+gb_CXXFLAGS := \
+ -temp=/tmp \
+ -KPIC \
+ -mt \
+ -xldscope=hidden \
+ -features=no%altspell \
+ -library=no%Cstd \
+ +w2 \
+ -erroff=doubunder,identexpected,inllargeuse,inllargeint,notemsource,reftotemp,truncwarn,wnoretvalue,anonnotype \
+
+ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
+gb_CFLAGS_WERROR := -errwarn=%all
+gb_CXXFLAGS_WERROR := -xwe
+endif
+
+gb_LinkTarget_EXCEPTIONFLAGS := \
+ -DEXCEPTIONS_ON \
+
+gb_LinkTarget_NOEXCEPTIONFLAGS := \
+ -DEXCEPTIONS_OFF \
+ -noex \
+
+gb_LinkTarget_LDFLAGS := \
+ $(subst -L../lib , ,$(SOLARLIB)) \
+ -temp=/tmp \
+ -w \
+ -mt \
+ -z combreloc \
+ -norunpath \
+ -PIC \
+ -library=no%Cstd \
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_COMPILEROPTFLAGS :=
+else
+ifeq ($(CPUNAME),INTEL)
+gb_COMPILEROPTFLAGS := -xarch=generic -xO3
+else # ifeq ($(CPUNAME),SPARC)
+# -m32 -xarch=sparc restrict target to 32 bit sparc
+# -xO3 optimization level 3
+# -xspace don't do optimizations which do increase binary size
+# -xprefetch=yes do prefetching (helps on UltraSparc III)
+gb_COMPILEROPTFLAGS := -m32 -xarch=sparc -xO3 -xspace -xprefetch=yes
+endif
+endif
+
+gb_COMPILERNOOPTFLAGS :=
+
+# Helper class
+
+gb_Helper_abbreviate_dirs_native = $(gb_Helper_abbreviate_dirs)
+
+
+# CObject class
+
+define gb_CObject__command
+$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ rm -f $(call gb_CObject_get_dep_target,$(2)) && \
+ mkdir -p $(dir $(call gb_CObject_get_dep_target,$(2))) && \
+ $(gb_CC) \
+ -c $(3) \
+ -o $(1) \
+ -xMMD \
+ -xMF $(call gb_CObject_get_dep_target,$(2)) \
+ $(DEFS) $(CFLAGS) \
+ -I$(dir $(3)) \
+ $(INCLUDE))
+endef
+
+
+# CxxObject class
+
+define gb_CxxObject__command
+$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ mkdir -p $(dir $(call gb_CxxObject_get_dep_target,$(2))) && \
+ $(gb_CXX) \
+ $(DEFS) $(CXXFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -xMMD \
+ -xMF $(call gb_CxxObject_get_dep_target,$(2)) \
+ -I$(dir $(3)) \
+ $(INCLUDE_STL) $(INCLUDE))
+endef
+
+
+# LinkTarget class
+
+define gb_LinkTarget__get_rpath_for_layer
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_LinkTarget__RPATHS)))
+endef
+
+gb_LinkTarget__RPATHS := \
+ URELIB:\dORIGIN \
+ UREBIN:\dORIGIN/../lib:\dORIGIN \
+ OOO:\dORIGIN:\dORIGIN/../ure-link/lib \
+ BRAND:\dORIGIN:\dORIGIN/../basis-link/program:\dORIGIN/../basis-link/ure-link/lib \
+ SDKBIN:\dORIGIN/../../ure-link/lib \
+ NONEBIN:\dORIGIN/../lib:\dORIGIN \
+
+gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
+gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_LinkTarget_CXXFLAGS += -g
+gb_LinkTarget_CFLAGS += -g
+endif
+
+gb_LinkTarget_INCLUDE := $(filter-out %/stl, $(subst -I. , ,$(SOLARINC)))
+gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
+
+define gb_LinkTarget__command_dynamiclink
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_CXX) \
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(subst \d,$$,$(RPATH)) $(LDFLAGS) \
+ $(patsubst lib%.so,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib)))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) \
+ -o $(1))
+endef
+
+define gb_LinkTarget__command_staticlink
+$(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_AR) -rsu $(1) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ 2> /dev/null)
+endef
+
+define gb_LinkTarget__command
+$(call gb_Output_announce,$(2),$(true),LNK,4)
+$(if $(filter Library CppunitTest Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclink,$(1)))
+$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlink,$(1)))
+endef
+
+# Library class
+
+gb_Library_DEFS :=
+gb_Library_TARGETTYPEFLAGS := -Bdynamic -z text -G
+gb_Library_SYSPRE := lib
+gb_Library_UNOVERPRE := $(gb_Library_SYSPRE)uno_
+gb_Library_PLAINEXT := .so
+gb_Library_RTEXT := C52$(gb_Library_PLAINEXT)
+ifeq ($(gb_PRODUCT),$(true))
+gb_Library_STLEXT := port_sunpro$(gb_Library_PLAINEXT)
+else
+gb_Library_STLEXT := port_sunpro_debug$(gb_Library_PLAINEXT)
+endif
+
+ifeq ($(CPUNAME),INTEL)
+gb_Library_OOOEXT := si$(gb_Library_PLAINEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
+else # ifeq ($(CPUNAME),SPARC)
+gb_Library_OOOEXT := ss$(gb_Library_PLAINEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
+endif
+
+gb_Library_PLAINLIBS_NONE += \
+ dl \
+ jpeg \
+ m \
+ pthread \
+ X11 \
+ z
+
+gb_Library_FILENAMES := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_OOOEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_STLEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(gb_Library_UNOVERPRE)$(lib)$(gb_Library_PLAINEXT)) \
+
+
+gb_Library_LAYER := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):URELIB) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):URELIB) \
+
+define gb_Library_get_rpath
+'-R$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Library_get_layer,$(1)))'
+endef
+
+define gb_Library_Library_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Library_get_rpath,$(1))
+
+endef
+
+
+# StaticLibrary class
+
+gb_StaticLibrary_DEFS :=
+gb_StaticLibrary_SYSPRE := lib
+gb_StaticLibrary_PLAINEXT := .a
+gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)
+
+gb_StaticLibrary_FILENAMES := \
+ $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
+ $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
+
+gb_StaticLibrary_StaticLibrary_platform =
+
+
+# Executable class
+
+gb_Executable_EXT :=
+
+gb_Executable_LAYER := \
+ $(foreach exe,$(gb_Executable_UREBIN),$(exe):UREBIN) \
+ $(foreach exe,$(gb_Executable_SDK),$(exe):SDKBIN) \
+ $(foreach exe,$(gb_Executable_OOO),$(exe):OOO) \
+ $(foreach exe,$(gb_Executable_BRAND),$(exe):BRAND) \
+ $(foreach exe,$(gb_Executable_NONE),$(exe):NONEBIN) \
+
+
+define gb_Executable_get_rpath
+'-R$(call gb_LinkTarget__get_rpath_for_layer,$(call gb_Executable_get_layer,$(1)))'
+endef
+
+define gb_Executable_Executable_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH := $(call gb_Executable_get_rpath,$(1))
+
+endef
+
+
+# CppunitTest class
+
+gb_CppunitTest_CPPTESTPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+gb_CppunitTest_SYSPRE := libtest_
+gb_CppunitTest_EXT := .so
+gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
+gb_CppunitTest_get_libfilename = $(gb_CppunitTest_get_filename)
+
+define gb_CppunitTest_CppunitTest_platform
+$(call gb_LinkTarget_get_target,$(2)) : RPATH :=
+
+endef
+
+# JunitTest class
+
+define gb_JunitTest_JunitTest_platform
+$(call gb_JunitTest_get_target,$(1)) : DEFS := \
+ -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:$(OUTDIR)/installation/opt/openoffice.org3/program/soffice}" \
+ -Dorg.openoffice.test.arg.env=LD_LIBRARY_PATH \
+ -Dorg.openoffice.test.arg.user=file://$(call gb_JunitTest_get_userdir,$(1)) \
+
+endef
+
+# SdiTarget class
+
+gb_SdiTarget_SVIDLPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+
+# SrsPartMergeTarget
+
+gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+
+# SrsPartTarget class
+
+gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc
+gb_SrsPartTarget_RSCCOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)
+
+# Sun cc/CC support -xM1/-xMF flags, but unfortunately refuse input files that
+# do not have the right suffix, so use makedepend here...
+define gb_SrsPartTarget__command_dep
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(INCLUDE) \
+ $(DEFS) \
+ $(2) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(call gb_SrsPartTarget_get_target,$(1)) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_SrsPartTarget_get_dep_target,$(1)))
+endef
+
+
+# ComponentTarget
+
+gb_XSLTPROCPRECOMMAND := LD_LIBRARY_PATH=$(OUTDIR)/lib
+gb_Library_COMPONENTPREFIXES := \
+ OOO:vnd.sun.star.expand:\dOOO_BASE_DIR/program/ \
+ URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \
+
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/windows.mk b/solenv/gbuild/platform/windows.mk
new file mode 100755
index 000000000000..a4137c077b09
--- /dev/null
+++ b/solenv/gbuild/platform/windows.mk
@@ -0,0 +1,679 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+GUI := WNT
+COM := MSC
+
+# set tmpdir to some mixed case path, suitable for native tools
+gb_TMPDIR:=$(if $(TMPDIR),$(shell cygpath -m $(TMPDIR)),$(shell cygpath -m /tmp))
+gb_MKTEMP := mktemp --tmpdir=$(gb_TMPDIR) -t gbuild.XXXXXX
+
+gb_CC := cl
+gb_CXX := cl
+gb_LINK := link
+gb_AWK := awk
+gb_CLASSPATHSEP := ;
+
+# use CC/CXX if they are nondefaults
+ifneq ($(origin CC),default)
+gb_CC := $(CC)
+gb_GCCP := $(CC)
+endif
+ifneq ($(origin CXX),default)
+gb_CXX := $(CXX)
+endif
+
+gb_OSDEFS := \
+ -DWINVER=0x0500 \
+ -D_WIN32_IE=0x0500 \
+ -DNT351 \
+ -DWIN32 \
+ -DWNT \
+
+gb_COMPILERDEFS := \
+ -DMSC \
+ -D_CRT_NON_CONFORMING_SWPRINTFS \
+ -D_CRT_NONSTDC_NO_DEPRECATE \
+ -D_CRT_SECURE_NO_DEPRECATE \
+ -D_MT \
+ -DBOOST_MEM_FN_ENABLE_CDECL \
+ -DCPPU_ENV=msci \
+ -DFULL_DESK \
+ -DM1500 \
+
+gb_CPUDEFS := -DINTEL -D_X86_=1
+
+gb_CFLAGS := \
+ -Gd \
+ -GR \
+ -Gs \
+ -GS \
+ -Gy \
+ -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:forScope,wchar_t- \
+ -Zm500 \
+
+gb_CXXFLAGS := \
+ -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:forScope,wchar_t- \
+ -Zm500 \
+
+gb_STDLIBS := \
+ uwinapi \
+ kernel32 \
+ msvcrt \
+ oldnames \
+
+ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
+gb_CFLAGS_WERROR := -WX
+gb_CXXFLAGS_WERROR := -WX
+endif
+
+gb_LinkTarget_EXCEPTIONFLAGS := \
+ -DEXCEPTIONS_ON \
+ -EHa \
+
+gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS)
+
+
+gb_LinkTarget_NOEXCEPTIONFLAGS := \
+ -DEXCEPTIONS_OFF \
+
+gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS := $(gb_LinkTarget_NOEXCEPTIONFLAGS)
+
+gb_LinkTarget_LDFLAGS := \
+ -MACHINE:IX86 \
+ -NODEFAULTLIB \
+ -OPT:NOREF \
+ -SUBSYSTEM:CONSOLE \
+ -safeseh \
+ -nxcompat \
+ -dynamicbase \
+ $(patsubst %,-LIBPATH:%,$(filter-out .,$(subst ;, ,$(subst \,/,$(ILIB))))) \
+
+ifneq ($(ENABLE_CRASHDUMP),)
+gb_LinkTarget_LDFLAGS += -DEBUG
+gb_CFLAGS+=-Zi
+gb_CXXFLAGS+=-Zi
+endif
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_CXXFLAGS +=-Zi
+gb_CFLAGS +=-Zi
+gb_COMPILEROPTFLAGS :=
+gb_LinkTarget_LDFLAGS += -DEBUG
+else
+gb_COMPILEROPTFLAGS := -Ob1 -Oxs -Oy-
+endif
+
+gb_COMPILERNOOPTFLAGS := -Od
+
+
+# Helper class
+gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+gb_Helper_WORKDIR_NATIVE := $(shell cygpath -m $(WORKDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+gb_Helper_OUTDIR_NATIVE := $(shell cygpath -m $(OUTDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+gb_Helper_REPODIR_NATIVE := $(shell cygpath -m $(REPODIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+
+define gb_Helper_abbreviate_dirs_native
+R=$(gb_Helper_REPODIR_NATIVE) && $(subst $(REPODIR)/,$$R/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,O=$(gb_Helper_OUTDIR_NATIVE) && W=$(gb_Helper_WORKDIR_NATIVE) && S=$(gb_Helper_SRCDIR_NATIVE))) && \
+$(subst $(REPODIR)/,$$R/,$(subst $(SRCDIR)/,$$S/,$(subst $(OUTDIR)/,$$O/,$(subst $(WORKDIR)/,$$W/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,$(subst $(gb_Helper_SRCDIR_NATIVE)/,$$S/,$(subst $(gb_Helper_OUTDIR_NATIVE)/,$$O/,$(subst $(gb_Helper_WORKDIR_NATIVE)/,$$W/,$(1)))))))))
+endef
+
+
+# CObject class
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_CObject__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_CObject_get_dep_target,$(2)))
+endef
+else
+CObject__command_deponcompile =
+endif
+
+define gb_CObject__command
+$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ unset INCLUDE && \
+ $(gb_CC) \
+ $(DEFS) $(CFLAGS) -Fd$(PDBFILE) \
+ $(PCHFLAGS) \
+ -I$(dir $(3)) \
+ $(INCLUDE) \
+ -c $(3) \
+ -Fo$(1))
+$(call gb_CObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
+endef
+
+
+# CxxObject class
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_CxxObject__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_CxxObject_get_dep_target,$(2)))
+ endef
+else
+gb_CxxObject__command_deponcompile =
+endif
+
+define gb_CxxObject__command
+$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ unset INCLUDE && \
+ $(gb_CXX) \
+ $(DEFS) $(CXXFLAGS) -Fd$(PDBFILE)\
+ $(PCHFLAGS) \
+ -I$(dir $(3)) \
+ $(INCLUDE_STL) $(INCLUDE) \
+ -c $(3) \
+ -Fo$(1))
+$(call gb_CxxObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
+endef
+
+
+# PrecompiledHeader class
+
+gb_PrecompiledHeader_get_enableflags = -Yu$(1).hxx \
+ -Fp$(call gb_PrecompiledHeader_get_target,$(1))
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_PrecompiledHeader__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(4) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_PrecompiledHeader_get_dep_target,$(2)))
+endef
+else
+gb_PrecompiledHeader__command_deponcompile =
+endif
+
+
+define gb_PrecompiledHeader__command
+$(call gb_Output_announce,$(2),$(true),PCH,1)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \
+ unset INCLUDE && \
+ $(gb_CXX) \
+ $(4) $(5) -Fd$(PDBFILE) \
+ -I$(dir $(3)) \
+ $(6) \
+ -c $(3) \
+ -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj)
+$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
+endef
+
+# NoexPrecompiledHeader class
+
+gb_NoexPrecompiledHeader_get_enableflags = -Yu$(1).hxx \
+ -Fp$(call gb_NoexPrecompiledHeader_get_target,$(1))
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_NoexPrecompiledHeader__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(4) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_NoexPrecompiledHeader_get_dep_target,$(2)))
+endef
+else
+gb_NoexPrecompiledHeader__command_deponcompile =
+endif
+
+
+define gb_NoexPrecompiledHeader__command
+$(call gb_Output_announce,$(2),$(true),PCH,1)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) $(dir $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) && \
+ unset INCLUDE && \
+ $(gb_CXX) \
+ $(4) $(5) -Fd$(PDBFILE) \
+ -I$(dir $(3)) \
+ $(6) \
+ -c $(3) \
+ -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj)
+$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
+endef
+
+
+# LinkTarget class
+
+gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
+gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
+
+gb_LinkTarget_INCLUDE :=\
+ $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) \
+ $(foreach inc,$(subst ;, ,$(JDKINC)),-I$(inc)) \
+
+gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
+
+gb_LinkTarget_get_pdbfile = $(call gb_LinkTarget_get_target,)pdb/$(1).pdb
+
+define gb_LinkTarget__command
+$(call gb_Output_announce,$(2),$(true),LNK,4)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ rm -f $(1) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
+ $(PCHOBJS)" > $${RESPONSEFILE} && \
+ $(gb_LINK) \
+ $(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
+ $(if $(filter StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \
+ $(if $(filter Executable,$(TARGETTYPE)),$(gb_Executable_TARGETTYPEFLAGS)) \
+ $(LDFLAGS) \
+ @$${RESPONSEFILE} \
+ $(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_filename,$(lib))) \
+ $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_filename,$(lib))) \
+ $(if $(DLLTARGET),-out:$(DLLTARGET) -implib:$(1),-out:$(1)); RC=$$?; rm $${RESPONSEFILE} \
+ $(if $(DLLTARGET),; if [ ! -f $(DLLTARGET) ]; then rm -f $(1) && false; fi) ; exit $$RC)
+endef
+
+
+# Library class
+
+gb_Library_DEFS := -D_DLL
+gb_Library_TARGETTYPEFLAGS := -DLL
+gb_Library_get_rpath :=
+
+gb_Library_SYSPRE := i
+gb_Library_PLAINEXT := .lib
+
+gb_Library_PLAINLIBS_NONE += \
+ advapi32 \
+ gdi32 \
+ gnu_getopt \
+ kernel32 \
+ msvcrt \
+ mpr \
+ oldnames \
+ ole32 \
+ oleaut32 \
+ shell32 \
+ unicows \
+ user32 \
+ uuid \
+ uwinapi \
+ z \
+
+gb_Library_LAYER := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):OOO) \
+
+gb_Library_FILENAMES :=\
+ $(foreach lib,$(gb_Library_TARGETS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+
+gb_Library_DLLEXT := .dll
+gb_Library_MAJORVER := 3
+gb_Library_RTEXT := MSC$(gb_Library_DLLEXT)
+ifeq ($(gb_PRODUCT),$(true))
+gb_Library_STLEXT := port_vc7145$(gb_Library_DLLEXT)
+else
+gb_Library_STLEXT := port_vc7145_stldebug$(gb_Library_DLLEXT)
+endif
+gb_Library_OOOEXT := mi$(gb_Library_DLLEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_DLLEXT)
+gb_Library_UNOVEREXT := $(gb_Library_MAJORVER)$(gb_Library_DLLEXT)
+gb_Library_RTVEREXT := $(gb_Library_MAJORVER)$(gb_Library_RTEXT)
+
+gb_Library_DLLFILENAMES :=\
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(lib)$(gb_Library_OOOEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(lib)$(gb_Library_DLLEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(lib)$(gb_Library_DLLEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(lib)$(gb_Library_DLLEXT)) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(lib)$(gb_Library_RTVEREXT)) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):$(lib)$(gb_Library_STLEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(lib)$(gb_Library_UNOVEREXT)) \
+
+define gb_Library_Library_platform
+$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
+
+$(call gb_LinkTarget_set_auxtargets,$(2),\
+ $(patsubst %.lib,%.exp,$(call gb_LinkTarget_get_target,$(2))) \
+ $(3).manifest \
+ $(call gb_LinkTarget_get_pdbfile,$(2)) \
+ $(patsubst %.dll,%.pdb,$(3)) \
+ $(patsubst %.dll,%.ilk,$(3)) \
+)
+
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS := $(OUTDIR)/bin/$(notdir $(3))
+
+ifneq ($(ENABLE_CRASHDUMP),)
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS += \
+ $(OUTDIR)/bin/$(notdir $(patsubst %.dll,%.pdb,$(3))) \
+ $(OUTDIR)/bin/$(notdir $(patsubst %.dll,%.ilk,$(3))) \
+
+endif
+
+$(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(3)),$(3))
+
+$(call gb_LinkTarget_get_target,$(2)) \
+$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2))
+
+endef
+
+define gb_Library_get_dllname
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES)))
+endef
+
+
+# StaticLibrary class
+
+gb_StaticLibrary_DEFS :=
+gb_StaticLibrary_TARGETTYPEFLAGS := -LIB
+gb_StaticLibrary_SYSPRE :=
+gb_StaticLibrary_PLAINEXT := .lib
+gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)
+
+gb_StaticLibrary_FILENAMES := \
+ $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
+ $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
+
+gb_StaticLibrary_FILENAMES := $(patsubst salcpprt:salcpprt%,salcpprt:cpprtl%,$(gb_StaticLibrary_FILENAMES))
+
+define gb_StaticLibrary_StaticLibrary_platform
+$(call gb_LinkTarget_get_target,$(2)) \
+$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2))
+
+$(call gb_LinkTarget_set_auxtargets,$(2),\
+ $(call gb_LinkTarget_get_pdbfile,$(2)) \
+)
+
+endef
+
+# Executable class
+
+gb_Executable_EXT := .exe
+gb_Executable_TARGETTYPEFLAGS := -RELEASE -BASE:0x1b000000 -OPT:NOREF -INCREMENTAL:NO -DEBUG
+gb_Executable_get_rpath :=
+
+define gb_Executable_Executable_platform
+$(call gb_LinkTarget_set_auxtargets,$(2),\
+ $(patsubst %.exe,%.pdb,$(call gb_LinkTarget_get_target,$(2))) \
+ $(call gb_LinkTarget_get_pdbfile,$(2)) \
+ $(call gb_LinkTarget_get_target,$(2)).manifest \
+)
+
+$(call gb_Executable_get_target,$(1)) \
+$(call gb_Executable_get_clean_target,$(1)) : AUXTARGETS := $(call gb_Executable_get_target,$(1)).manifest
+$(call gb_Deliver_add_deliverable,$(call gb_Executable_get_target,$(1)).manifest,$(call gb_LinkTarget_get_target,$(2)).manifest)
+
+$(call gb_LinkTarget_get_target,$(2)) \
+$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2))
+
+endef
+
+# CppunitTest class
+
+gb_CppunitTest_CPPTESTPRECOMMAND :=
+gb_CppunitTest_SYSPRE := itest_
+gb_CppunitTest_EXT := .lib
+gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
+gb_CppunitTest_get_libfilename = test_$(1).dll
+
+define gb_CppunitTest_CppunitTest_platform
+$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
+
+$(call gb_LinkTarget_set_auxtargets,$(2),\
+ $(patsubst %.lib,%.exp,$(call gb_LinkTarget_get_target,$(2))) \
+ $(3).manifest \
+ $(patsubst %.dll,%.pdb,$(3)) \
+ $(call gb_LinkTarget_get_pdbfile,$(2)) \
+ $(patsubst %.dll,%.ilk,$(3)) \
+)
+
+$(call gb_LinkTarget_get_target,$(2)) \
+$(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_get_pdbfile,$(2))
+
+endef
+
+# JunitTest class
+
+gb_defaultlangiso := en-US
+gb_smoketest_instset := $(SRCDIR)/instsetoo_native/$(INPATH)/OpenOffice/archive/install/$(gb_defaultlangiso)/OOo_*_install-arc_$(gb_defaultlangiso).zip
+
+ifeq ($(OOO_TEST_SOFFICE),)
+
+
+# Work around Windows problems with long pathnames (see issue 50885) by
+# installing into the temp directory instead of the module output tree (in which
+# case $(target).instpath contains the path to the temp installation,
+# which is removed after smoketest); can be removed once issue 50885 is fixed;
+# on other platforms, a single installation to solver is created in
+# smoketestoo_native.
+
+# for now, no dependency on $(shell ls $(gb_smoketest_instset))
+# because that doesn't work before the instset is built
+# and there is not much of a benefit anyway (gbuild not knowing about smoketest)
+define gb_JunitTest_JunitTest_platform_longpathname_hack
+$(call gb_JunitTest_get_target,$(1)) : $(call gb_JunitTest_get_target,$(1)).instpath
+$(call gb_JunitTest_get_target,$(1)) : CLEAN_CMD = $(call gb_Helper_abbreviate_dirs,rm -rf `cat $$@.instpath` $$@.instpath)
+
+$(call gb_JunitTest_get_target,$(1)).instpath :
+ INST_DIR=$$$$(cygpath -m `mktemp -d -t testinst.XXXXXX`) \
+ && unzip -d "$$$${INST_DIR}" $$(gb_smoketest_instset) \
+ && mv "$$$${INST_DIR}"/OOo_*_install-arc_$$(gb_defaultlangiso) "$$$${INST_DIR}"/opt\
+ && mkdir -p $$(dir $$@) \
+ && echo "$$$${INST_DIR}" > $$@
+
+endef
+else # OOO_TEST_SOFFICE
+gb_JunitTest_JunitTest_platform_longpathname_hack =
+endif # OOO_TEST_SOFFICE
+
+define gb_JunitTest_JunitTest_platform
+$(call gb_JunitTest_JunitTest_platform_longpathname_hack,$(1))
+
+$(call gb_JunitTest_get_target,$(1)) : DEFS := \
+ -Dorg.openoffice.test.arg.soffice="$$$${OOO_TEST_SOFFICE:-path:`cat $(call gb_JunitTest_get_target,$(1)).instpath`/opt/OpenOffice.org 3/program/soffice.exe}" \
+ -Dorg.openoffice.test.arg.env=PATH \
+ -Dorg.openoffice.test.arg.user=file:///$(call gb_JunitTest_get_userdir,$(1)) \
+
+endef
+
+
+# SdiTarget class
+
+gb_SdiTarget_SVIDLPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
+
+# SrsPartMergeTarget
+
+gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
+
+# SrsPartTarget class
+
+gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc.exe
+gb_SrsPartTarget_RSCCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_SrsPartTarget__command_dep
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(INCLUDE) \
+ $(DEFS) \
+ $(2) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(call gb_SrsPartTarget_get_target,$(1)) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_SrsPartTarget_get_dep_target,$(1)))
+endef
+else
+gb_SrsPartTarget__command_dep =
+endif
+
+
+# ComponentTarget
+
+gb_XSLTPROCPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
+gb_Library_COMPONENTPREFIXES := \
+ OOO:vnd.sun.star.expand:\dBRAND_BASE_DIR/program/ \
+ URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/platform/winmingw.mk b/solenv/gbuild/platform/winmingw.mk
new file mode 100644
index 000000000000..b9eec5eaf417
--- /dev/null
+++ b/solenv/gbuild/platform/winmingw.mk
@@ -0,0 +1,609 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2009 by Sun Microsystems, Inc.
+#
+# 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.
+#
+#*************************************************************************
+
+GUI := WNT
+COM := GCC
+
+gb_MKTEMP := mktemp -t gbuild.XXXXXX
+
+gb_CC := $(CC)
+gb_CXX := $(CXX)
+gb_LINK := $(shell $(CC) -print-prog-name=ld)
+gb_AR := $(shell $(CC) -print-prog-name=ar)
+gb_AWK := awk
+ifeq ($(USE_MINGW),cygwin)
+gb_MINGWLIBDIR := $(COMPATH)/lib/mingw
+else
+ifeq ($(USE_MINGW),cygwin-w64-mingw32)
+gb_MINGWLIBDIR := $(COMPATH)/usr/i686-w64-mingw32/sys-root/mingw/lib
+else
+gb_MINGWLIBDIR := $(COMPATH)/lib
+endif
+endif
+ifeq ($(MINGW_SHARED_GXXLIB),YES)
+gb_MINGW_LIBSTDCPP := $(subst -l,,$(MINGW_SHARED_LIBSTDCPP))
+else
+gb_MINGW_LIBSTDCPP := \
+ stdc++ \
+ moldname
+endif
+ifeq ($(MINGW_SHARED_GCCLIB),YES)
+gb_MINGW_LIBGCC := \
+ gcc_s \
+ gcc
+else
+ifeq ($(MINGW_GCCLIB_EH),YES)
+gb_MINGW_LIBGCC := \
+ gcc \
+ gcc_eh
+else
+gb_MINGW_LIBGCC := gcc
+endif
+endif
+
+gb_OSDEFS := \
+ -DWINVER=0x0500 \
+ -D_WIN32_IE=0x0500 \
+ -DNT351 \
+ -DWIN32 \
+ -DWNT \
+
+ifeq ($(GXX_INCLUDE_PATH),)
+GXX_INCLUDE_PATH=$(COMPATH)/include/c++/$(shell gcc -dumpversion)
+endif
+
+gb_COMPILERDEFS := \
+ -DGCC \
+ -D$(CVER) \
+ -DCVER=$(CVER) \
+ -DGLIBC=2 \
+ -DGXX_INCLUDE_PATH=$(GXX_INCLUDE_PATH) \
+ -DCPPU_ENV=gcc3 \
+ -D_MT \
+ -D_NATIVE_WCHAR_T_DEFINED \
+ -D_MSC_EXTENSIONS \
+ -D_FORCENAMELESSUNION \
+
+ifeq ($(USE_MINGW),cygwin-w64-mingw32)
+gb_COMPILERDEFS +=-D_declspec=__declspec
+endif
+
+gb_CPUDEFS := \
+ -DINTEL \
+ -D_M_IX86 \
+
+gb_CFLAGS := \
+ -Wall \
+ -Wendif-labels \
+ -Wextra \
+ -fmessage-length=0 \
+ -fno-strict-aliasing \
+ -pipe \
+ -nostdinc \
+
+gb_CXXFLAGS := \
+ -Wall \
+ -Wendif-labels \
+ -Wextra \
+ -Wno-ctor-dtor-privacy \
+ -Wno-non-virtual-dtor \
+ -Wreturn-type \
+ -Wshadow \
+ -Wuninitialized \
+ -fmessage-length=0 \
+ -fno-strict-aliasing \
+ -fno-use-cxa-atexit \
+ -pipe \
+ -nostdinc \
+
+ifneq ($(EXTERNAL_WARNINGS_NOT_ERRORS),TRUE)
+gb_CFLAGS_WERROR := -Werror
+gb_CXXFLAGS_WERROR := -Werror
+endif
+
+ifneq ($(SYSBASE),)
+gb_CXXFLAGS += --sysroot=$(SYSBASE)
+gb_CFLAGS += --sysroot=$(SYSBASE)
+endif
+gb_LinkTarget_EXCEPTIONFLAGS := \
+ -DEXCEPTIONS_ON \
+ -fexceptions \
+ -fno-enforce-eh-specs \
+
+gb_PrecompiledHeader_EXCEPTIONFLAGS := $(gb_LinkTarget_EXCEPTIONFLAGS)
+
+
+gb_LinkTarget_NOEXCEPTIONFLAGS := \
+ -DEXCEPTIONS_OFF \
+ -fno-exceptions \
+
+gb_NoexPrecompiledHeader_NOEXCEPTIONFLAGS := $(gb_LinkTarget_NOEXCEPTIONFLAGS)
+
+gb_LinkTarget_LDFLAGS := \
+ --export-all-symbols \
+ --kill-at \
+ --subsystem console \
+ --exclude-libs ALL \
+ --enable-stdcall-fixup \
+ --enable-runtime-pseudo-reloc-v2 \
+ -L$(gb_Library_DLLDIR) \
+ $(patsubst %,-L%,$(filter-out .,$(subst ;, ,$(subst \,/,$(ILIB))))) \
+
+ifeq ($(MINGW_GCCLIB_EH),YES)
+gb_LinkTarget_LDFLAGS += -shared-libgcc
+endif
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_COMPILEROPTFLAGS := -O0
+else
+gb_COMPILEROPTFLAGS := -Os
+endif
+
+gb_COMPILERNOOPTFLAGS := -O0
+
+gb_STDLIBS := \
+ mingwthrd \
+ $(gb_MINGW_LIBSTDCPP) \
+ mingw32 \
+ $(gb_MINGW_LIBGCC) \
+ uwinapi \
+ moldname \
+ mingwex \
+ kernel32 \
+ msvcrt \
+
+
+# Helper class
+
+gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+gb_Helper_WORKDIR_NATIVE := $(shell cygpath -m $(WORKDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+gb_Helper_OUTDIR_NATIVE := $(shell cygpath -m $(OUTDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+gb_Helper_REPODIR_NATIVE := $(shell cygpath -m $(REPODIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
+
+define gb_Helper_abbreviate_dirs_native
+R=$(gb_Helper_REPODIR_NATIVE) && $(subst $(REPODIR)/,$$R/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,O=$(gb_Helper_OUTDIR_NATIVE) && W=$(gb_Helper_WORKDIR_NATIVE) && S=$(gb_Helper_SRCDIR_NATIVE))) && \
+$(subst $(REPODIR)/,$$R/,$(subst $(SRCDIR)/,$$S/,$(subst $(OUTDIR)/,$$O/,$(subst $(WORKDIR)/,$$W/,$(subst $(gb_Helper_REPODIR_NATIVE)/,$$R/,$(subst $(gb_Helper_SRCDIR_NATIVE)/,$$S/,$(subst $(gb_Helper_OUTDIR_NATIVE)/,$$O/,$(subst $(gb_Helper_WORKDIR_NATIVE)/,$$W/,$(1)))))))))
+endef
+
+# CObject class
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_CObject__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_CObject_get_dep_target,$(2)))
+endef
+else
+CObject__command_deponcompile =
+endif
+
+define gb_CObject__command
+$(call gb_Output_announce,$(2),$(true),C ,3)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_CC) \
+ $(DEFS) $(CFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -I$(dir $(3)) \
+ $(INCLUDE))
+$(call gb_CObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
+endef
+
+
+
+# CxxObject class
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_CxxObject__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(filter-out -DPRECOMPILED_HEADERS,$(4)) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% %/pch -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_CxxObject_get_dep_target,$(2)))
+endef
+else
+gb_CxxObject__command_deponcompile =
+endif
+
+define gb_CxxObject__command
+$(call gb_Output_announce,$(2),$(true),CXX,3)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_CXX) \
+ $(DEFS) $(CXXFLAGS) \
+ -c $(3) \
+ -o $(1) \
+ -I$(dir $(3)) \
+ $(INCLUDE_STL) $(INCLUDE))
+$(call gb_CxxObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CXXFLAGS),$(INCLUDE_STL) $(INCLUDE))
+endef
+
+
+# PrecompiledHeader class
+
+gb_PrecompiledHeader_EXT := .gch
+
+gb_PrecompiledHeader_get_enableflags = -I$(WORKDIR)/PrecompiledHeader/$(gb_PrecompiledHeader_DEBUGDIR) \
+ -DPRECOMPILED_HEADERS \
+ -Winvalid-pch \
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_PrecompiledHeader__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(4) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_PrecompiledHeader_get_dep_target,$(2)))
+endef
+else
+gb_PrecompiledHeader__command_deponcompile =
+endif
+
+define gb_PrecompiledHeader__command
+$(call gb_Output_announce,$(2),$(true),PCH,1)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) $(dir $(call gb_PrecompiledHeader_get_dep_target,$(2))) && \
+ $(gb_CXX) \
+ -x c++-header \
+ $(4) $(5) \
+ -I$(dir $(3)) \
+ $(6) \
+ -c $(3) \
+ -o$(1))
+$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
+
+endef
+
+# NoexPrecompiledHeader class
+
+gb_NoexPrecompiledHeader_EXT := .gch
+
+gb_NoexPrecompiledHeader_get_enableflags = -I$(WORKDIR)/NoexPrecompiledHeader/$(gb_NoexPrecompiledHeader_DEBUGDIR) \
+ -Winvalid-pch \
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_NoexPrecompiledHeader__command_deponcompile
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(4) $(5) \
+ -I$(dir $(3)) \
+ $(filter-out -I$(COMPATH)% -I$(JAVA_HOME),$(6)) \
+ $(3) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(1) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_NoexPrecompiledHeader_get_dep_target,$(2)))
+endef
+else
+gb_NoexPrecompiledHeader__command_deponcompile =
+endif
+
+define gb_NoexPrecompiledHeader__command
+$(call gb_Output_announce,$(2),$(true),PCH,1)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) $(dir $(call gb_NoexPrecompiledHeader_get_dep_target,$(2))) && \
+ $(gb_CXX) \
+ -x c++-header \
+ $(4) $(5) \
+ -I$(dir $(3)) \
+ $(6) \
+ -c $(3) \
+ -o$(1))
+$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
+
+endef
+
+
+# LinkTarget class
+
+gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
+gb_LinkTarget_CXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR)
+
+ifeq ($(gb_DEBUGLEVEL),2)
+gb_LinkTarget_CXXFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
+gb_LinkTarget_CFLAGS += -ggdb3 -finline-limit=0 -fno-inline -fno-default-inline
+
+endif
+
+gb_LinkTarget_INCLUDE :=\
+ $(filter-out %/stl, $(subst -I. , ,$(SOLARINC))) \
+ $(foreach inc,$(subst ;, ,$(JDKINC)),-I$(inc)) \
+
+gb_LinkTarget_INCLUDE_STL := $(filter %/stl, $(subst -I. , ,$(SOLARINC)))
+
+define gb_LinkTarget__command_dynamiclinkexecutable
+$(call gb_Output_announce,$(2),$(true),LNK,4)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) " > $${RESPONSEFILE} && \
+ $(gb_LINK) \
+ $(gb_Executable_TARGETTYPEFLAGS) \
+ $(LDFLAGS) \
+ $(gb_MINGWLIBDIR)/crt2.o \
+ $(MINGW_CLIB_DIR)/crtbegin.o \
+ @$${RESPONSEFILE} \
+ --start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) --end-group \
+ --start-group $(patsubst %.dll,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_dllname,$(lib)))) --end-group \
+ $(MINGW_CLIB_DIR)/crtend.o \
+ -Map $(basename $(1)).map \
+ -o $(1))
+endef
+
+define gb_LinkTarget__command_dynamiclinklibrary
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ rm -f $(1) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) " > $${RESPONSEFILE} && \
+ $(gb_LINK) \
+ $(gb_Library_TARGETTYPEFLAGS) \
+ $(LDFLAGS) \
+ --enable-auto-image-base \
+ -e _DllMainCRTStartup@12 \
+ $(gb_MINGWLIBDIR)/dllcrt2.o \
+ $(MINGW_CLIB_DIR)/crtbegin.o \
+ @$${RESPONSEFILE} \
+ --start-group $(foreach lib,$(LINKED_STATIC_LIBS),$(call gb_StaticLibrary_get_target,$(lib))) --end-group \
+ --start-group $(patsubst %.dll,-l%,$(foreach lib,$(LINKED_LIBS),$(call gb_Library_get_dllname,$(lib)))) --end-group \
+ $(MINGW_CLIB_DIR)/crtend.o \
+ -Map $(basename $(DLLTARGET)).map \
+ -o $(DLLTARGET) && touch $(1))
+endef
+
+define gb_LinkTarget__command_staticlinklibrary
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ RESPONSEFILE=`$(gb_MKTEMP)` && \
+ echo "$(foreach object,$(CXXOBJECTS),$(call gb_CxxObject_get_target,$(object))) \
+ $(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
+ $(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) " > $${RESPONSEFILE} && \
+ $(gb_AR) -rsu\
+ $(1) \
+ @$${RESPONSEFILE})
+endef
+
+define gb_LinkTarget__command
+$(call gb_Output_announce,$(2),$(true),LNK,4)
+$(if $(filter Executable,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclinkexecutable,$(1),$(2)))
+$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(call gb_LinkTarget__command_dynamiclinklibrary,$(1),$(2)))
+$(if $(filter StaticLibrary,$(TARGETTYPE)),$(call gb_LinkTarget__command_staticlinklibrary,$(1)))
+endef
+
+
+# Library class
+
+gb_Library_DEFS := -D_DLL
+gb_Library_TARGETTYPEFLAGS := -shared
+gb_Library_get_rpath :=
+
+gb_Library_SYSPRE := i
+gb_Library_PLAINEXT := .lib
+
+gb_Library_PLAINLIBS_NONE += \
+ mingwthrd \
+ mingw32 \
+ mingwex \
+ $(gb_MINGW_LIBSTDCPP) \
+ $(gb_MINGW_LIBGCC) \
+ advapi32 \
+ gdi32 \
+ kernel32 \
+ msvcrt \
+ mpr \
+ moldname \
+ ole32 \
+ oleaut32 \
+ shell32 \
+ unicows \
+ user32 \
+ uuid \
+ uwinapi \
+ z \
+
+gb_Library_LAYER := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_STLLIBS),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):OOO) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):OOO) \
+
+gb_Library_FILENAMES :=\
+ $(foreach lib,$(gb_Library_TARGETS),$(lib):$(gb_Library_SYSPRE)$(lib)$(gb_Library_PLAINEXT)) \
+
+gb_Library_DLLEXT := .dll
+gb_Library_MAJORVER := 3
+gb_Library_RTEXT := gcc3$(gb_Library_DLLEXT)
+ifeq ($(gb_PRODUCT),$(true))
+gb_Library_STLEXT := port_gcc$(gb_Library_DLLEXT)
+else
+gb_Library_STLEXT := port_gcc_stldebug$(gb_Library_DLLEXT)
+endif
+gb_Library_OOOEXT := gi$(gb_Library_DLLEXT)
+gb_Library_UNOEXT := .uno$(gb_Library_DLLEXT)
+gb_Library_UNOVEREXT := $(gb_Library_MAJORVER)$(gb_Library_DLLEXT)
+gb_Library_RTVEREXT := $(gb_Library_MAJORVER)$(gb_Library_RTEXT)
+
+gb_Library_DLLFILENAMES := \
+ $(foreach lib,$(gb_Library_OOOLIBS),$(lib):$(lib)$(gb_Library_OOOEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_NONE),$(lib):$(lib)$(gb_Library_DLLEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_URE),$(lib):$(lib)$(gb_Library_DLLEXT)) \
+ $(foreach lib,$(gb_Library_PLAINLIBS_OOO),$(lib):$(lib)$(gb_Library_DLLEXT)) \
+ $(foreach lib,$(gb_Library_RTLIBS),$(lib):$(lib)$(gb_Library_RTEXT)) \
+ $(foreach lib,$(gb_Library_RTVERLIBS),$(lib):$(lib)$(gb_Library_RTVEREXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_URE),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOLIBS_OOO),$(lib):$(lib)$(gb_Library_UNOEXT)) \
+ $(foreach lib,$(gb_Library_UNOVERLIBS),$(lib):$(lib)$(gb_Library_UNOVEREXT)) \
+
+gb_Library_IARCSYSPRE := lib
+gb_Library_IARCEXT := .a
+
+gb_Library_ILIBEXT := .lib
+
+define gb_Library_Library_platform
+$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
+
+$(call gb_LinkTarget_set_auxtargets,$(2),\
+ $(patsubst %.dll,%.map,$(3)) \
+)
+
+$(call gb_Library_get_target,$(1)) \
+$(call gb_Library_get_clean_target,$(1)) : AUXTARGETS := $(OUTDIR)/bin/$(notdir $(3))
+
+$(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(3)),$(3))
+
+endef
+
+define gb_Library_get_dllname
+$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES)))
+endef
+
+
+# StaticLibrary class
+
+gb_StaticLibrary_DEFS :=
+gb_StaticLibrary_SYSPRE := lib
+gb_StaticLibrary_PLAINEXT := .a
+gb_StaticLibrary_JPEGEXT := lib$(gb_StaticLibrary_PLAINEXT)
+
+gb_StaticLibrary_FILENAMES := \
+ $(foreach lib,$(gb_StaticLibrary_JPEGLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_JPEGEXT)) \
+ $(foreach lib,$(gb_StaticLibrary_PLAINLIBS),$(lib):$(gb_StaticLibrary_SYSPRE)$(lib)$(gb_StaticLibrary_PLAINEXT)) \
+
+gb_StaticLibrary_FILENAMES := $(patsubst salcpprt:salcpprt%,salcpprt:cpprtl%,$(gb_StaticLibrary_FILENAMES))
+
+gb_StaticLibrary_StaticLibrary_platform =
+
+# Executable class
+
+gb_Executable_EXT := .exe
+gb_Executable_TARGETTYPEFLAGS :=
+gb_Executable_get_rpath :=
+gb_Executable_Executable_platform =
+
+
+# CppunitTest class
+
+gb_CppunitTest_CPPTESTPRECOMMAND :=
+gb_CppunitTest_SYSPRE := itest_
+gb_CppunitTest_EXT := .lib
+gb_CppunitTest_get_filename = $(gb_CppunitTest_SYSPRE)$(1)$(gb_CppunitTest_EXT)
+gb_CppunitTest_get_libfilename = test_$(1).dll
+
+define gb_CppunitTest_CppunitTest_platform
+$(call gb_LinkTarget_set_dlltarget,$(2),$(3))
+
+$(call gb_LinkTarget_set_auxtargets,$(2),\
+ $(patsubst %.dll,%.map,$(3)) \
+)
+
+endef
+
+# SdiTarget class
+
+gb_SdiTarget_SVIDLPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
+
+# SrsPartMergeTarget
+
+gb_SrsPartMergeTarget_TRANSEXPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
+
+# SrsPartTarget class
+
+gb_SrsPartTarget_RSCTARGET := $(OUTDIR)/bin/rsc.exe
+gb_SrsPartTarget_RSCCOMMAND := SOLARBINDIR=$(OUTDIR)/bin $(gb_SrsPartTarget_RSCTARGET)
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_SrsPartTarget__command_dep
+$(call gb_Helper_abbreviate_dirs_native,\
+ $(OUTDIR)/bin/makedepend$(gb_Executable_EXT) \
+ $(INCLUDE) \
+ $(DEFS) \
+ $(2) \
+ -f - \
+ | $(gb_AWK) -f $(GBUILDDIR)/processdeps.awk \
+ -v OBJECTFILE=$(call gb_SrsPartTarget_get_target,$(1)) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_SrsPartTarget_get_dep_target,$(1)))
+endef
+else
+gb_SrsPartTarget__command_dep =
+endif
+
+# ComponentTarget
+
+gb_XSLTPROCPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
+gb_Library_COMPONENTPREFIXES := \
+ OOO:vnd.sun.star.expand:\dBRAND_BASE_DIR/program/ \
+ URELIB:vnd.sun.star.expand:\dURE_INTERNAL_LIB_DIR/ \
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/processdelivered.awk b/solenv/gbuild/processdelivered.awk
new file mode 100644
index 000000000000..9fdb2ec30c74
--- /dev/null
+++ b/solenv/gbuild/processdelivered.awk
@@ -0,0 +1,36 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+BEGIN {
+ RS=" "
+ FS=":"
+}
+
+{
+ if( NF == 2 )
+ print "COPY " $1 " " $2;
+}
diff --git a/solenv/gbuild/processdeps.awk b/solenv/gbuild/processdeps.awk
new file mode 100644
index 000000000000..9014427fa461
--- /dev/null
+++ b/solenv/gbuild/processdeps.awk
@@ -0,0 +1,78 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+# this awk script mangles makedepend output for a single object file
+# usage:
+# awk -f .../processdeps.awk \
+# -v OUTDIR=outdir \
+# -v SRCDIR=srcdir \
+# -v WORKDIR=workdir \
+# -v REPODIR=repodir \
+# -v OBJECTFILE=objectfile
+# called like this the script will read from stdin
+# and write to stdout. It will:
+# - replace the objectfile with the one given on the commandline
+# - normalize paths to mixed paths (replacing all \ with /)
+# - replace the string given as WORKDIR with $(WORKDIR)/
+# - replace the string given as OUTDIR with $(OUTDIR)/
+# - replace the string given as SRCDIR with $(SRCDIR)/
+# - replace the string given as REPODIR with $(REPODIR)/
+# - translates absolute mixed windows paths to cygwin paths by
+# substituting a path starting with X:... to /cygdrive/X/...
+
+function mangle_path(path) {
+ gsub("\\\\", "/", path);
+ if( path ~ /^[a-zA-Z]:/ )
+ path = tolower(substr(path,0,1)) substr(path,2);
+ gsub(WORKDIR, "$(WORKDIR)/", path);
+ gsub(OUTDIR, "$(OUTDIR)/", path);
+ gsub(SRCDIR, "$(SRCDIR)/", path);
+ gsub(REPODIR, "$(REPODIR)/", path);
+ if( path ~ /^[a-zA-Z]:/ )
+ path = "/cygdrive/" tolower(substr(path,0,1)) substr(path,3);
+ return path;
+}
+
+BEGIN {
+ WORKDIR = tolower(substr(WORKDIR,0,1)) substr(WORKDIR,2);
+ OUTDIR = tolower(substr(OUTDIR,0,1)) substr(OUTDIR,2);
+ SRCDIR = tolower(substr(SRCDIR,0,1)) substr(SRCDIR,2);
+ REPODIR = tolower(substr(REPODIR,0,1)) substr(REPODIR,2);
+# print "# WORKDIR=" WORKDIR;
+# print "# OUTDIR=" OUTDIR;
+# print "# SRCDIR=" SRCDIR;
+# print "# REPODIR=" REPODIR;
+ print mangle_path(OBJECTFILE) ": \\";
+}
+
+/^[^#]/ {
+ print "\t" mangle_path($2) " \\";
+}
+
+END {
+ print "\n";
+}
diff --git a/solenv/gbuild/templates/AllLangResTarget.mk b/solenv/gbuild/templates/AllLangResTarget.mk
new file mode 100644
index 000000000000..c38b8ea42fc2
--- /dev/null
+++ b/solenv/gbuild/templates/AllLangResTarget.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# RES is the name of the resource; its file name will be RES-LOCALE.res
+# MODULE is the name of the code module the makefile is located in
+
+$(eval $(call gb_AllLangResTarget_AllLangResTarget,RES))
+
+# declaration of images folder (e.g. default_images/MODULE/res)
+$(eval $(call gb_AllLangResTarget_set_reslocation,RES,MODULE))
+
+# declaration of a resource intermediate file (srs)
+$(eval $(call gb_AllLangResTarget_add_srs,RES, RES/res))
+$(eval $(call gb_SrsTarget_SrsTarget,RES/res))
+
+# add any additional include paths here
+$(eval $(call gb_SrsTarget_set_include,RES/res,\
+ $$(INCLUDE) \
+))
+
+# add src files here (complete path relative to repository root)
+$(eval $(call gb_SrsTarget_add_files,RES/res,\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/CppunitTest.mk b/solenv/gbuild/templates/CppunitTest.mk
new file mode 100644
index 000000000000..56f3452ede14
--- /dev/null
+++ b/solenv/gbuild/templates/CppunitTest.mk
@@ -0,0 +1,41 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+$(eval $(call gb_CppunitTest_CppunitTest,MODULE_NAME))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,MODULE_NAME, \
+))
+
+$(eval $(call gb_CppunitTest_add_linked_libs,MODULE_NAME, \
+ $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_CppunitTest_set_include,MODULE_NAME,\
+ $$(INCLUDE) \
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/Executable.mk b/solenv/gbuild/templates/Executable.mk
new file mode 100644
index 000000000000..691e53012d58
--- /dev/null
+++ b/solenv/gbuild/templates/Executable.mk
@@ -0,0 +1,45 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+$(eval $(call gb_Executable_Executable,EXEC))
+
+$(eval $(call gb_Executable_set_include,EXEC,\
+ $$(INCLUDE) \
+))
+
+$(eval $(call gb_Executable_set_cxxflags,EXEC,\
+ $$(CXXFLAGS) \
+))
+
+$(eval $(call gb_Executable_add_linked_libs,EXEC,\
+ $(gb_STDLIBS) \
+))
+
+$(eval $(call gb_Executable_add_exception_objects,EXEC,\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/JunitTest.mk b/solenv/gbuild/templates/JunitTest.mk
new file mode 100644
index 000000000000..4492d9ef45f3
--- /dev/null
+++ b/solenv/gbuild/templates/JunitTest.mk
@@ -0,0 +1,49 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+$(eval $(call gb_JunitTest_JunitTest,MODULE_TYPE))
+
+$(eval $(call gb_JunitTest_set_defs,MODULE_TYPE,\
+ $$(DEFS) \
+ -Dorg.openoffice.test.arg.tdoc=$(SRCDIR)/MODULE/DOCUMENTPATH \
+))
+
+$(eval $(call gb_JunitTest_add_jars,MODULE_TYPE,\
+ $(OUTDIR)/bin/OOoRunner.jar \
+ $(OUTDIR)/bin/ridl.jar \
+ $(OUTDIR)/bin/test.jar \
+ $(OUTDIR)/bin/unoil.jar \
+ $(OUTDIR)/bin/jurt.jar \
+))
+
+$(eval $(call gb_JunitTest_add_sourcefiles,MODULE_TYPE,\
+))
+
+$(eval $(call gb_JunitTest_add_classes,MODULE_COMPLEX,\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/Library.mk b/solenv/gbuild/templates/Library.mk
new file mode 100644
index 000000000000..2e62cfe9a64b
--- /dev/null
+++ b/solenv/gbuild/templates/Library.mk
@@ -0,0 +1,86 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# MODULE is the name of the module the makefile is located in
+
+# declare a library
+# LIB is the name of the library as it is found in Repository.mk
+$(eval $(call gb_Library_Library,LIB))
+
+# declare packages that will be delivered before compilation of LIB
+# learn more about TYPE in the Package.mk template
+$(eval $(call gb_Library_add_package_headers,LIB,MODULE_TYPE))
+
+# for platforms supporting PCH: declare the location of the pch file
+# this is the name of the cxx file (without extension)
+$(eval $(call gb_Library_add_precompiled_header,LIB,$(SRCDIR)/MODULE/PCH_FILE))
+
+# in case UNO services are exported: declare location of component file
+$(eval $(call gb_Library_set_componentfile,LIB,MODULE/COMPONENT_FILE))
+
+# add any additional include paths for this library here
+$(eval $(call gb_Library_set_include,LIB,\
+ $$(INCLUDE) \
+))
+
+# add any additional definitions to be set for compilation here
+# (e.g. -DLIB_DLLIMPLEMENTATION)
+$(eval $(call gb_Library_set_defs,LIB,\
+ $$(DEFS) \
+))
+
+# add libraries to be linked to LIB; again these names need to be given as
+# specified in Repository.mk
+$(eval $(call gb_Library_add_linked_libs,LIB,\
+ $(gb_STDLIBS) \
+))
+
+# add all source files that shall be compiled with exceptions enabled
+# the name is relative to $(SRCROOT) and must not contain an extension
+$(eval $(call gb_Library_add_exception_objects,LIB,\
+))
+
+# in case sdi files need to be processed: declare "root" (main) sdi target and sdi header target
+# "ROOT_SDI_FILE" is the file that is handed over to svidl (all other sdi files are included in the root file)
+$(eval $(call gb_Library_add_sdi_headers,LIB,MODULE/sdi/ROOT_SDI_FILE))
+$(eval $(call gb_SdiTarget_SdiTarget,MODULE/sdi/ROOT_SDI_FILE,MODULE/sdi/LIB))
+
+# add any additional include paths for sdi processing here
+$(eval $(call gb_SdiTarget_set_include,MODULE/sdi/ROOT_SDI_FILE,\
+ $$(INCLUDE) \
+))
+
+# this is an example how files can be added that require special compiler settings, e.g. building without optimizing
+ifeq ($(OS),WNT)
+$(eval $(call gb_Library_add_cxxobjects,LIB,\
+ MODULE/source/foo/bar \
+ , $(gb_COMPILERNOOPTFLAGS) $(gb_LinkTarget_EXCEPTIONFLAGS) \
+))
+
+endif
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/Makefile b/solenv/gbuild/templates/Makefile
new file mode 100644
index 000000000000..90947b2e5f48
--- /dev/null
+++ b/solenv/gbuild/templates/Makefile
@@ -0,0 +1,38 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+ifeq ($(strip $(SOLARENV)),)
+$(error No environment set!)
+endif
+
+gb_PARTIALBUILD := T
+GBUILDDIR := $(SOLARENV)/gbuild
+include $(GBUILDDIR)/gbuild.mk
+
+$(eval $(call gb_Module_make_global_targets,$(shell ls $(dir $(realpath $(firstword $(MAKEFILE_LIST))))/Module*.mk)))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/Module.mk b/solenv/gbuild/templates/Module.mk
new file mode 100644
index 000000000000..6adb9bfab4a2
--- /dev/null
+++ b/solenv/gbuild/templates/Module.mk
@@ -0,0 +1,45 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# replace MODULE by the name of the module you are creating
+
+$(eval $(call gb_Module_Module,MODULE))
+
+# the targets to be inserted are their file names without .mk extension
+$(eval $(call gb_Module_add_targets,MODULE,\
+))
+
+# add any runtime tests (unit tests) here
+# remove if no tests
+$(eval $(call gb_Module_add_check_targets,MODULE,\
+))
+
+# add any subsequent checks (e.g. complex tests) here
+$(eval $(call gb_Module_add_subsequentcheck_targets,MODULE,\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/Package.mk b/solenv/gbuild/templates/Package.mk
new file mode 100644
index 000000000000..1b9ae0315990
--- /dev/null
+++ b/solenv/gbuild/templates/Package.mk
@@ -0,0 +1,42 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+# MODULE is the name of the module the makefile is located in
+
+# TYPE is an arbitrary name that should denote what is inside this package
+# typical names are "inc", "uiconfig", "xml" etc.
+# "MODULE_TYPE" is the package name
+# the file name of the corresponding makefile should be Package_TYPE.mk
+# SOURCE is the name of the root folder of the package that shall be delivered
+$(eval $(call gb_Package_Package,MODULE_TYPE,$(SRCDIR)/MODULE/SOURCE))
+
+# add files to the package
+# SOURCE_RELPATH/file.ext is the name of the source file (relative to the root give above)
+# DESTINATION_RELPATH/file.ext is the destination file (relative to $(OUTDIR))
+$(eval $(call gb_Package_add_file,MODULE_TYPE,DESTINATION_RELPATH/file.ext,SOURCE_RELPATH/file.ext))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/StaticLibrary.mk b/solenv/gbuild/templates/StaticLibrary.mk
new file mode 100644
index 000000000000..5b0176b8b41c
--- /dev/null
+++ b/solenv/gbuild/templates/StaticLibrary.mk
@@ -0,0 +1,35 @@
+#*************************************************************************
+#
+# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+#
+# Copyright 2000, 2011 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.
+#
+#*************************************************************************
+
+$(eval $(call gb_StaticLibrary_StaticLibrary,LIB))
+
+$(eval $(call gb_StaticLibrary_add_package_headers,LIB,MODULE_inc))
+
+$(eval $(call gb_StaticLibrary_add_exception_objects,LIB,\
+))
+
+# vim: set noet sw=4 ts=4:
diff --git a/solenv/gbuild/templates/makefile.mk b/solenv/gbuild/templates/makefile.mk
new file mode 100644
index 000000000000..e312a7ccab65
--- /dev/null
+++ b/solenv/gbuild/templates/makefile.mk
@@ -0,0 +1,40 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+PRJ=..
+TARGET=prj
+
+.INCLUDE : settings.mk
+
+.IF "$(VERBOSE)"!=""
+VERBOSEFLAG :=
+.ELSE
+VERBOSEFLAG := -s
+.ENDIF
+
+all:
+ cd $(PRJ) && $(GNUMAKE) $(VERBOSEFLAG) -r -j$(MAXPROCESS) $(gb_MAKETARGET) && $(GNUMAKE) $(VERBOSEFLAG) -r deliverlog
diff --git a/solenv/inc/_cppunit.mk b/solenv/inc/_cppunit.mk
index 8d9e45d33331..85804dd41ac6 100644
--- a/solenv/inc/_cppunit.mk
+++ b/solenv/inc/_cppunit.mk
@@ -1,7 +1,7 @@
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL1TARGET)"!=""
+.IF "$(SHL1TARGETN)"!=""
ALLTAR : test1
test1 .PHONY : $(SHL1TARGETN)
@echo ----------------------------------------------------------
@@ -13,7 +13,7 @@ test1 .PHONY : $(SHL1TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL2TARGET)"!=""
+.IF "$(SHL2TARGETN)"!=""
ALLTAR : test2
test2 .PHONY : $(SHL2TARGETN)
@echo ----------------------------------------------------------
@@ -25,7 +25,7 @@ test2 .PHONY : $(SHL2TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL3TARGET)"!=""
+.IF "$(SHL3TARGETN)"!=""
ALLTAR : test3
test3 .PHONY : $(SHL3TARGETN)
@echo ----------------------------------------------------------
@@ -37,7 +37,7 @@ test3 .PHONY : $(SHL3TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL4TARGET)"!=""
+.IF "$(SHL4TARGETN)"!=""
ALLTAR : test4
test4 .PHONY : $(SHL4TARGETN)
@echo ----------------------------------------------------------
@@ -49,7 +49,7 @@ test4 .PHONY : $(SHL4TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL5TARGET)"!=""
+.IF "$(SHL5TARGETN)"!=""
ALLTAR : test5
test5 .PHONY : $(SHL5TARGETN)
@echo ----------------------------------------------------------
@@ -61,7 +61,7 @@ test5 .PHONY : $(SHL5TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL6TARGET)"!=""
+.IF "$(SHL6TARGETN)"!=""
ALLTAR : test6
test6 .PHONY : $(SHL6TARGETN)
@echo ----------------------------------------------------------
@@ -73,7 +73,7 @@ test6 .PHONY : $(SHL6TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL7TARGET)"!=""
+.IF "$(SHL7TARGETN)"!=""
ALLTAR : test7
test7 .PHONY : $(SHL7TARGETN)
@echo ----------------------------------------------------------
@@ -85,7 +85,7 @@ test7 .PHONY : $(SHL7TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL8TARGET)"!=""
+.IF "$(SHL8TARGETN)"!=""
ALLTAR : test8
test8 .PHONY : $(SHL8TARGETN)
@echo ----------------------------------------------------------
@@ -97,7 +97,7 @@ test8 .PHONY : $(SHL8TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL9TARGET)"!=""
+.IF "$(SHL9TARGETN)"!=""
ALLTAR : test9
test9 .PHONY : $(SHL9TARGETN)
@echo ----------------------------------------------------------
@@ -109,7 +109,7 @@ test9 .PHONY : $(SHL9TARGETN)
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL10TARGET)"!=""
+.IF "$(SHL10TARGETN)"!=""
ALLTAR : test10
test10 .PHONY : $(SHL10TARGETN)
@echo ----------------------------------------------------------
diff --git a/solenv/inc/_tg_rslb.mk b/solenv/inc/_tg_rslb.mk
index 8248733fb6fb..1edebb8a04df 100644..100755
--- a/solenv/inc/_tg_rslb.mk
+++ b/solenv/inc/_tg_rslb.mk
@@ -2,22 +2,6 @@
.IF "$(RESLIB1TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES1PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB1NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB1HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB1SRSFILES)))
-$(HIDRES1PARTICLE): $(RESLIB1HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB1HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES1PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI1) : \
$(RESLIB1SRSFILES) \
$(RESLIB1TARGETN) \
@@ -79,22 +63,6 @@ $(RESLIB1TARGETN): \
.IF "$(RESLIB2TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES2PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB2NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB2HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB2SRSFILES)))
-$(HIDRES2PARTICLE): $(RESLIB2HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB2HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES2PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI2) : \
$(RESLIB2SRSFILES) \
$(RESLIB2TARGETN) \
@@ -156,22 +124,6 @@ $(RESLIB2TARGETN): \
.IF "$(RESLIB3TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES3PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB3NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB3HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB3SRSFILES)))
-$(HIDRES3PARTICLE): $(RESLIB3HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB3HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES3PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI3) : \
$(RESLIB3SRSFILES) \
$(RESLIB3TARGETN) \
@@ -233,22 +185,6 @@ $(RESLIB3TARGETN): \
.IF "$(RESLIB4TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES4PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB4NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB4HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB4SRSFILES)))
-$(HIDRES4PARTICLE): $(RESLIB4HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB4HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES4PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI4) : \
$(RESLIB4SRSFILES) \
$(RESLIB4TARGETN) \
@@ -310,22 +246,6 @@ $(RESLIB4TARGETN): \
.IF "$(RESLIB5TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES5PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB5NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB5HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB5SRSFILES)))
-$(HIDRES5PARTICLE): $(RESLIB5HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB5HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES5PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI5) : \
$(RESLIB5SRSFILES) \
$(RESLIB5TARGETN) \
@@ -387,22 +307,6 @@ $(RESLIB5TARGETN): \
.IF "$(RESLIB6TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES6PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB6NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB6HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB6SRSFILES)))
-$(HIDRES6PARTICLE): $(RESLIB6HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB6HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES6PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI6) : \
$(RESLIB6SRSFILES) \
$(RESLIB6TARGETN) \
@@ -464,22 +368,6 @@ $(RESLIB6TARGETN): \
.IF "$(RESLIB7TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES7PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB7NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB7HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB7SRSFILES)))
-$(HIDRES7PARTICLE): $(RESLIB7HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB7HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES7PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI7) : \
$(RESLIB7SRSFILES) \
$(RESLIB7TARGETN) \
@@ -541,22 +429,6 @@ $(RESLIB7TARGETN): \
.IF "$(RESLIB8TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES8PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB8NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB8HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB8SRSFILES)))
-$(HIDRES8PARTICLE): $(RESLIB8HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB8HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES8PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI8) : \
$(RESLIB8SRSFILES) \
$(RESLIB8TARGETN) \
@@ -618,22 +490,6 @@ $(RESLIB8TARGETN): \
.IF "$(RESLIB9TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES9PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB9NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB9HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB9SRSFILES)))
-$(HIDRES9PARTICLE): $(RESLIB9HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB9HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES9PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI9) : \
$(RESLIB9SRSFILES) \
$(RESLIB9TARGETN) \
@@ -695,22 +551,6 @@ $(RESLIB9TARGETN): \
.IF "$(RESLIB10TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES10PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB10NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB10HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB10SRSFILES)))
-$(HIDRES10PARTICLE): $(RESLIB10HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB10HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES10PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI10) : \
$(RESLIB10SRSFILES) \
$(RESLIB10TARGETN) \
diff --git a/solenv/inc/_tg_scp.mk b/solenv/inc/_tg_scp.mk
index 33ff97e21986..d13e57990592 100644
--- a/solenv/inc/_tg_scp.mk
+++ b/solenv/inc/_tg_scp.mk
@@ -7,7 +7,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP1FILES=$(foreach,i,$(SCP1FILES) $(foreach,j,$(SCP1LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP1FILES+=$(foreach,i,$(SCP1FILES) $(foreach,j,$(SCP1LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP1TARGETN): $(LOCALSCP1FILES)
@echo "Making: " $(@:f)
@@ -25,7 +25,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP2FILES=$(foreach,i,$(SCP2FILES) $(foreach,j,$(SCP2LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP2FILES+=$(foreach,i,$(SCP2FILES) $(foreach,j,$(SCP2LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP2TARGETN): $(LOCALSCP2FILES)
@echo "Making: " $(@:f)
@@ -43,7 +43,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP3FILES=$(foreach,i,$(SCP3FILES) $(foreach,j,$(SCP3LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP3FILES+=$(foreach,i,$(SCP3FILES) $(foreach,j,$(SCP3LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP3TARGETN): $(LOCALSCP3FILES)
@echo "Making: " $(@:f)
@@ -61,7 +61,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP4FILES=$(foreach,i,$(SCP4FILES) $(foreach,j,$(SCP4LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP4FILES+=$(foreach,i,$(SCP4FILES) $(foreach,j,$(SCP4LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP4TARGETN): $(LOCALSCP4FILES)
@echo "Making: " $(@:f)
@@ -79,7 +79,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP5FILES=$(foreach,i,$(SCP5FILES) $(foreach,j,$(SCP5LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP5FILES+=$(foreach,i,$(SCP5FILES) $(foreach,j,$(SCP5LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP5TARGETN): $(LOCALSCP5FILES)
@echo "Making: " $(@:f)
@@ -97,7 +97,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP6FILES=$(foreach,i,$(SCP6FILES) $(foreach,j,$(SCP6LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP6FILES+=$(foreach,i,$(SCP6FILES) $(foreach,j,$(SCP6LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP6TARGETN): $(LOCALSCP6FILES)
@echo "Making: " $(@:f)
@@ -115,7 +115,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP7FILES=$(foreach,i,$(SCP7FILES) $(foreach,j,$(SCP7LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP7FILES+=$(foreach,i,$(SCP7FILES) $(foreach,j,$(SCP7LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP7TARGETN): $(LOCALSCP7FILES)
@echo "Making: " $(@:f)
@@ -133,7 +133,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP8FILES=$(foreach,i,$(SCP8FILES) $(foreach,j,$(SCP8LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP8FILES+=$(foreach,i,$(SCP8FILES) $(foreach,j,$(SCP8LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP8TARGETN): $(LOCALSCP8FILES)
@echo "Making: " $(@:f)
@@ -151,7 +151,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP9FILES=$(foreach,i,$(SCP9FILES) $(foreach,j,$(SCP9LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP9FILES+=$(foreach,i,$(SCP9FILES) $(foreach,j,$(SCP9LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP9TARGETN): $(LOCALSCP9FILES)
@echo "Making: " $(@:f)
@@ -169,7 +169,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP10FILES=$(foreach,i,$(SCP10FILES) $(foreach,j,$(SCP10LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP10FILES+=$(foreach,i,$(SCP10FILES) $(foreach,j,$(SCP10LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP10TARGETN): $(LOCALSCP10FILES)
@echo "Making: " $(@:f)
diff --git a/solenv/inc/_tg_sdi.mk b/solenv/inc/_tg_sdi.mk
index 5b3db9c696b7..45ea433b04b2 100644
--- a/solenv/inc/_tg_sdi.mk
+++ b/solenv/inc/_tg_sdi.mk
@@ -1,14 +1,5 @@
# unroll begin
-.IF "$(HIDSID1PARTICLE)"!=""
-$(HIDSID1PARTICLE): $(SDI1TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI1NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID1PARTICLE)"!=""
-
.IF "$(SDI1TARGET)"!=""
$(SDI1TARGET): $(SVSDI1DEPEND) $(SDI1NAME).sdi
@echo "Making: " $(@:f)
@@ -27,15 +18,6 @@ $(SDI1TARGET): $(SVSDI1DEPEND) $(SDI1NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID2PARTICLE)"!=""
-$(HIDSID2PARTICLE): $(SDI2TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI2NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID2PARTICLE)"!=""
-
.IF "$(SDI2TARGET)"!=""
$(SDI2TARGET): $(SVSDI2DEPEND) $(SDI2NAME).sdi
@echo "Making: " $(@:f)
@@ -54,15 +36,6 @@ $(SDI2TARGET): $(SVSDI2DEPEND) $(SDI2NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID3PARTICLE)"!=""
-$(HIDSID3PARTICLE): $(SDI3TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI3NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID3PARTICLE)"!=""
-
.IF "$(SDI3TARGET)"!=""
$(SDI3TARGET): $(SVSDI3DEPEND) $(SDI3NAME).sdi
@echo "Making: " $(@:f)
@@ -81,15 +54,6 @@ $(SDI3TARGET): $(SVSDI3DEPEND) $(SDI3NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID4PARTICLE)"!=""
-$(HIDSID4PARTICLE): $(SDI4TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI4NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID4PARTICLE)"!=""
-
.IF "$(SDI4TARGET)"!=""
$(SDI4TARGET): $(SVSDI4DEPEND) $(SDI4NAME).sdi
@echo "Making: " $(@:f)
@@ -108,15 +72,6 @@ $(SDI4TARGET): $(SVSDI4DEPEND) $(SDI4NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID5PARTICLE)"!=""
-$(HIDSID5PARTICLE): $(SDI5TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI5NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID5PARTICLE)"!=""
-
.IF "$(SDI5TARGET)"!=""
$(SDI5TARGET): $(SVSDI5DEPEND) $(SDI5NAME).sdi
@echo "Making: " $(@:f)
@@ -135,15 +90,6 @@ $(SDI5TARGET): $(SVSDI5DEPEND) $(SDI5NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID6PARTICLE)"!=""
-$(HIDSID6PARTICLE): $(SDI6TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI6NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID6PARTICLE)"!=""
-
.IF "$(SDI6TARGET)"!=""
$(SDI6TARGET): $(SVSDI6DEPEND) $(SDI6NAME).sdi
@echo "Making: " $(@:f)
@@ -162,15 +108,6 @@ $(SDI6TARGET): $(SVSDI6DEPEND) $(SDI6NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID7PARTICLE)"!=""
-$(HIDSID7PARTICLE): $(SDI7TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI7NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID7PARTICLE)"!=""
-
.IF "$(SDI7TARGET)"!=""
$(SDI7TARGET): $(SVSDI7DEPEND) $(SDI7NAME).sdi
@echo "Making: " $(@:f)
@@ -189,15 +126,6 @@ $(SDI7TARGET): $(SVSDI7DEPEND) $(SDI7NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID8PARTICLE)"!=""
-$(HIDSID8PARTICLE): $(SDI8TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI8NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID8PARTICLE)"!=""
-
.IF "$(SDI8TARGET)"!=""
$(SDI8TARGET): $(SVSDI8DEPEND) $(SDI8NAME).sdi
@echo "Making: " $(@:f)
@@ -216,15 +144,6 @@ $(SDI8TARGET): $(SVSDI8DEPEND) $(SDI8NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID9PARTICLE)"!=""
-$(HIDSID9PARTICLE): $(SDI9TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI9NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID9PARTICLE)"!=""
-
.IF "$(SDI9TARGET)"!=""
$(SDI9TARGET): $(SVSDI9DEPEND) $(SDI9NAME).sdi
@echo "Making: " $(@:f)
@@ -243,15 +162,6 @@ $(SDI9TARGET): $(SVSDI9DEPEND) $(SDI9NAME).sdi
# Instruction for ???
# unroll begin
-.IF "$(HIDSID10PARTICLE)"!=""
-$(HIDSID10PARTICLE): $(SDI10TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI10NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID10PARTICLE)"!=""
-
.IF "$(SDI10TARGET)"!=""
$(SDI10TARGET): $(SVSDI10DEPEND) $(SDI10NAME).sdi
@echo "Making: " $(@:f)
diff --git a/solenv/inc/_tg_shl.mk b/solenv/inc/_tg_shl.mk
index 56a187abcce4..5f58147fdff1 100644
--- a/solenv/inc/_tg_shl.mk
+++ b/solenv/inc/_tg_shl.mk
@@ -333,7 +333,7 @@ $(SHL1TARGETN) : \
$(SHL1STDLIBS) \
$(SHL1STDSHL) $(STDSHL1) \
$(SHL1LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -357,7 +357,7 @@ $(SHL1TARGETN) : \
$(SHL1STDLIBS) \
$(SHL1STDSHL) $(STDSHL1) \
$(SHL1LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -440,8 +440,10 @@ $(SHL1TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_1.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL1RPATH) $@
+.IF "$(SHL1CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL1CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL1NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS1) $(SHL1TARGETN)
@@ -527,7 +529,6 @@ $(SHL1TARGETN) : \
$(SHL1STDLIBS:^"-l") \
$(SHL1LINKRES) \
$(SHL1STDSHL:^"-l") $(STDSHL1:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -538,16 +539,6 @@ $(SHL1TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL1TARGET)
-
-runtest_$(SHL1TARGET) : $(SHL1TARGETN)
- testshl $(SHL1TARGETN) sce/$(SHL1TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL1TARGETN)"!=""
# unroll begin
@@ -885,7 +876,7 @@ $(SHL2TARGETN) : \
$(SHL2STDLIBS) \
$(SHL2STDSHL) $(STDSHL2) \
$(SHL2LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -909,7 +900,7 @@ $(SHL2TARGETN) : \
$(SHL2STDLIBS) \
$(SHL2STDSHL) $(STDSHL2) \
$(SHL2LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -992,8 +983,10 @@ $(SHL2TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_2.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL2RPATH) $@
+.IF "$(SHL2CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL2CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL2NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS2) $(SHL2TARGETN)
@@ -1079,7 +1072,6 @@ $(SHL2TARGETN) : \
$(SHL2STDLIBS:^"-l") \
$(SHL2LINKRES) \
$(SHL2STDSHL:^"-l") $(STDSHL2:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -1090,16 +1082,6 @@ $(SHL2TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL2TARGET)
-
-runtest_$(SHL2TARGET) : $(SHL2TARGETN)
- testshl $(SHL2TARGETN) sce/$(SHL2TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL2TARGETN)"!=""
# unroll begin
@@ -1437,7 +1419,7 @@ $(SHL3TARGETN) : \
$(SHL3STDLIBS) \
$(SHL3STDSHL) $(STDSHL3) \
$(SHL3LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -1461,7 +1443,7 @@ $(SHL3TARGETN) : \
$(SHL3STDLIBS) \
$(SHL3STDSHL) $(STDSHL3) \
$(SHL3LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -1544,8 +1526,10 @@ $(SHL3TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_3.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL3RPATH) $@
+.IF "$(SHL3CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL3CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL3NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS3) $(SHL3TARGETN)
@@ -1631,7 +1615,6 @@ $(SHL3TARGETN) : \
$(SHL3STDLIBS:^"-l") \
$(SHL3LINKRES) \
$(SHL3STDSHL:^"-l") $(STDSHL3:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -1642,16 +1625,6 @@ $(SHL3TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL3TARGET)
-
-runtest_$(SHL3TARGET) : $(SHL3TARGETN)
- testshl $(SHL3TARGETN) sce/$(SHL3TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL3TARGETN)"!=""
# unroll begin
@@ -1989,7 +1962,7 @@ $(SHL4TARGETN) : \
$(SHL4STDLIBS) \
$(SHL4STDSHL) $(STDSHL4) \
$(SHL4LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -2013,7 +1986,7 @@ $(SHL4TARGETN) : \
$(SHL4STDLIBS) \
$(SHL4STDSHL) $(STDSHL4) \
$(SHL4LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -2096,8 +2069,10 @@ $(SHL4TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_4.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL4RPATH) $@
+.IF "$(SHL4CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL4CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL4NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS4) $(SHL4TARGETN)
@@ -2183,7 +2158,6 @@ $(SHL4TARGETN) : \
$(SHL4STDLIBS:^"-l") \
$(SHL4LINKRES) \
$(SHL4STDSHL:^"-l") $(STDSHL4:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -2194,16 +2168,6 @@ $(SHL4TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL4TARGET)
-
-runtest_$(SHL4TARGET) : $(SHL4TARGETN)
- testshl $(SHL4TARGETN) sce/$(SHL4TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL4TARGETN)"!=""
# unroll begin
@@ -2541,7 +2505,7 @@ $(SHL5TARGETN) : \
$(SHL5STDLIBS) \
$(SHL5STDSHL) $(STDSHL5) \
$(SHL5LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -2565,7 +2529,7 @@ $(SHL5TARGETN) : \
$(SHL5STDLIBS) \
$(SHL5STDSHL) $(STDSHL5) \
$(SHL5LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -2648,8 +2612,10 @@ $(SHL5TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_5.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL5RPATH) $@
+.IF "$(SHL5CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL5CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL5NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS5) $(SHL5TARGETN)
@@ -2735,7 +2701,6 @@ $(SHL5TARGETN) : \
$(SHL5STDLIBS:^"-l") \
$(SHL5LINKRES) \
$(SHL5STDSHL:^"-l") $(STDSHL5:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -2746,16 +2711,6 @@ $(SHL5TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL5TARGET)
-
-runtest_$(SHL5TARGET) : $(SHL5TARGETN)
- testshl $(SHL5TARGETN) sce/$(SHL5TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL5TARGETN)"!=""
# unroll begin
@@ -3093,7 +3048,7 @@ $(SHL6TARGETN) : \
$(SHL6STDLIBS) \
$(SHL6STDSHL) $(STDSHL6) \
$(SHL6LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -3117,7 +3072,7 @@ $(SHL6TARGETN) : \
$(SHL6STDLIBS) \
$(SHL6STDSHL) $(STDSHL6) \
$(SHL6LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -3200,8 +3155,10 @@ $(SHL6TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_6.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL6RPATH) $@
+.IF "$(SHL6CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL6CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL6NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS6) $(SHL6TARGETN)
@@ -3287,7 +3244,6 @@ $(SHL6TARGETN) : \
$(SHL6STDLIBS:^"-l") \
$(SHL6LINKRES) \
$(SHL6STDSHL:^"-l") $(STDSHL6:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -3298,16 +3254,6 @@ $(SHL6TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL6TARGET)
-
-runtest_$(SHL6TARGET) : $(SHL6TARGETN)
- testshl $(SHL6TARGETN) sce/$(SHL6TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL6TARGETN)"!=""
# unroll begin
@@ -3645,7 +3591,7 @@ $(SHL7TARGETN) : \
$(SHL7STDLIBS) \
$(SHL7STDSHL) $(STDSHL7) \
$(SHL7LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -3669,7 +3615,7 @@ $(SHL7TARGETN) : \
$(SHL7STDLIBS) \
$(SHL7STDSHL) $(STDSHL7) \
$(SHL7LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -3752,8 +3698,10 @@ $(SHL7TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_7.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL7RPATH) $@
+.IF "$(SHL7CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL7CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL7NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS7) $(SHL7TARGETN)
@@ -3839,7 +3787,6 @@ $(SHL7TARGETN) : \
$(SHL7STDLIBS:^"-l") \
$(SHL7LINKRES) \
$(SHL7STDSHL:^"-l") $(STDSHL7:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -3850,16 +3797,6 @@ $(SHL7TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL7TARGET)
-
-runtest_$(SHL7TARGET) : $(SHL7TARGETN)
- testshl $(SHL7TARGETN) sce/$(SHL7TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL7TARGETN)"!=""
# unroll begin
@@ -4197,7 +4134,7 @@ $(SHL8TARGETN) : \
$(SHL8STDLIBS) \
$(SHL8STDSHL) $(STDSHL8) \
$(SHL8LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -4221,7 +4158,7 @@ $(SHL8TARGETN) : \
$(SHL8STDLIBS) \
$(SHL8STDSHL) $(STDSHL8) \
$(SHL8LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -4304,8 +4241,10 @@ $(SHL8TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_8.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL8RPATH) $@
+.IF "$(SHL8CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL8CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL8NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS8) $(SHL8TARGETN)
@@ -4391,7 +4330,6 @@ $(SHL8TARGETN) : \
$(SHL8STDLIBS:^"-l") \
$(SHL8LINKRES) \
$(SHL8STDSHL:^"-l") $(STDSHL8:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -4402,16 +4340,6 @@ $(SHL8TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL8TARGET)
-
-runtest_$(SHL8TARGET) : $(SHL8TARGETN)
- testshl $(SHL8TARGETN) sce/$(SHL8TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL8TARGETN)"!=""
# unroll begin
@@ -4749,7 +4677,7 @@ $(SHL9TARGETN) : \
$(SHL9STDLIBS) \
$(SHL9STDSHL) $(STDSHL9) \
$(SHL9LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -4773,7 +4701,7 @@ $(SHL9TARGETN) : \
$(SHL9STDLIBS) \
$(SHL9STDSHL) $(STDSHL9) \
$(SHL9LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -4856,8 +4784,10 @@ $(SHL9TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_9.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL9RPATH) $@
+.IF "$(SHL9CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL9CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL9NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS9) $(SHL9TARGETN)
@@ -4943,7 +4873,6 @@ $(SHL9TARGETN) : \
$(SHL9STDLIBS:^"-l") \
$(SHL9LINKRES) \
$(SHL9STDSHL:^"-l") $(STDSHL9:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -4954,16 +4883,6 @@ $(SHL9TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL9TARGET)
-
-runtest_$(SHL9TARGET) : $(SHL9TARGETN)
- testshl $(SHL9TARGETN) sce/$(SHL9TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL9TARGETN)"!=""
# unroll begin
@@ -5301,7 +5220,7 @@ $(SHL10TARGETN) : \
$(SHL10STDLIBS) \
$(SHL10STDSHL) $(STDSHL10) \
$(SHL10LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -5325,7 +5244,7 @@ $(SHL10TARGETN) : \
$(SHL10STDLIBS) \
$(SHL10STDSHL) $(STDSHL10) \
$(SHL10LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -5408,8 +5327,10 @@ $(SHL10TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_10.cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL10RPATH) $@
+.IF "$(SHL10CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL10CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL10NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS10) $(SHL10TARGETN)
@@ -5495,7 +5416,6 @@ $(SHL10TARGETN) : \
$(SHL10STDLIBS:^"-l") \
$(SHL10LINKRES) \
$(SHL10STDSHL:^"-l") $(STDSHL10:^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -5506,16 +5426,6 @@ $(SHL10TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL10TARGET)
-
-runtest_$(SHL10TARGET) : $(SHL10TARGETN)
- testshl $(SHL10TARGETN) sce/$(SHL10TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL10TARGETN)"!=""
# unroll begin
diff --git a/solenv/inc/_tg_srs.mk b/solenv/inc/_tg_srs.mk
index a71216f0a7e9..375fab35b800 100644
--- a/solenv/inc/_tg_srs.mk
+++ b/solenv/inc/_tg_srs.mk
@@ -1,22 +1,10 @@
# unroll begin
.IF "$(SRS1NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID1FILES=$(foreach,i,$(SRC1FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS1PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS1NAME)_srs.hid
-$(HIDSRS1PARTICLE) : $(HID1FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID1FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS1PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS1NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS1NAME).dprr: $(SRC1FILES) $(HIDSRS1PARTICLE) $(HID1FILES)
+$(MISC)/$(TARGET).$(SRS1NAME).dprr: $(SRC1FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS1NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS1NAME).srs} -fo=$@ -p=$(TARGET) $(SRC1FILES)
@@ -54,22 +42,10 @@ $(SRS)/$(SRS1NAME).srs: $(SRC1FILES)
# unroll begin
.IF "$(SRS2NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID2FILES=$(foreach,i,$(SRC2FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS2PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS2NAME)_srs.hid
-$(HIDSRS2PARTICLE) : $(HID2FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID2FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS2PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS2NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS2NAME).dprr: $(SRC2FILES) $(HIDSRS2PARTICLE) $(HID2FILES)
+$(MISC)/$(TARGET).$(SRS2NAME).dprr: $(SRC2FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS2NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS2NAME).srs} -fo=$@ -p=$(TARGET) $(SRC2FILES)
@@ -107,22 +83,10 @@ $(SRS)/$(SRS2NAME).srs: $(SRC2FILES)
# unroll begin
.IF "$(SRS3NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID3FILES=$(foreach,i,$(SRC3FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS3PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS3NAME)_srs.hid
-$(HIDSRS3PARTICLE) : $(HID3FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID3FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS3PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS3NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS3NAME).dprr: $(SRC3FILES) $(HIDSRS3PARTICLE) $(HID3FILES)
+$(MISC)/$(TARGET).$(SRS3NAME).dprr: $(SRC3FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS3NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS3NAME).srs} -fo=$@ -p=$(TARGET) $(SRC3FILES)
@@ -160,22 +124,10 @@ $(SRS)/$(SRS3NAME).srs: $(SRC3FILES)
# unroll begin
.IF "$(SRS4NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID4FILES=$(foreach,i,$(SRC4FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS4PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS4NAME)_srs.hid
-$(HIDSRS4PARTICLE) : $(HID4FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID4FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS4PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS4NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS4NAME).dprr: $(SRC4FILES) $(HIDSRS4PARTICLE) $(HID4FILES)
+$(MISC)/$(TARGET).$(SRS4NAME).dprr: $(SRC4FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS4NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS4NAME).srs} -fo=$@ -p=$(TARGET) $(SRC4FILES)
@@ -213,22 +165,10 @@ $(SRS)/$(SRS4NAME).srs: $(SRC4FILES)
# unroll begin
.IF "$(SRS5NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID5FILES=$(foreach,i,$(SRC5FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS5PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS5NAME)_srs.hid
-$(HIDSRS5PARTICLE) : $(HID5FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID5FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS5PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS5NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS5NAME).dprr: $(SRC5FILES) $(HIDSRS5PARTICLE) $(HID5FILES)
+$(MISC)/$(TARGET).$(SRS5NAME).dprr: $(SRC5FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS5NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS5NAME).srs} -fo=$@ -p=$(TARGET) $(SRC5FILES)
@@ -266,22 +206,10 @@ $(SRS)/$(SRS5NAME).srs: $(SRC5FILES)
# unroll begin
.IF "$(SRS6NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID6FILES=$(foreach,i,$(SRC6FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS6PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS6NAME)_srs.hid
-$(HIDSRS6PARTICLE) : $(HID6FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID6FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS6PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS6NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS6NAME).dprr: $(SRC6FILES) $(HIDSRS6PARTICLE) $(HID6FILES)
+$(MISC)/$(TARGET).$(SRS6NAME).dprr: $(SRC6FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS6NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS6NAME).srs} -fo=$@ -p=$(TARGET) $(SRC6FILES)
@@ -319,22 +247,10 @@ $(SRS)/$(SRS6NAME).srs: $(SRC6FILES)
# unroll begin
.IF "$(SRS7NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID7FILES=$(foreach,i,$(SRC7FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS7PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS7NAME)_srs.hid
-$(HIDSRS7PARTICLE) : $(HID7FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID7FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS7PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS7NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS7NAME).dprr: $(SRC7FILES) $(HIDSRS7PARTICLE) $(HID7FILES)
+$(MISC)/$(TARGET).$(SRS7NAME).dprr: $(SRC7FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS7NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS7NAME).srs} -fo=$@ -p=$(TARGET) $(SRC7FILES)
@@ -372,22 +288,10 @@ $(SRS)/$(SRS7NAME).srs: $(SRC7FILES)
# unroll begin
.IF "$(SRS8NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID8FILES=$(foreach,i,$(SRC8FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS8PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS8NAME)_srs.hid
-$(HIDSRS8PARTICLE) : $(HID8FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID8FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS8PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS8NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS8NAME).dprr: $(SRC8FILES) $(HIDSRS8PARTICLE) $(HID8FILES)
+$(MISC)/$(TARGET).$(SRS8NAME).dprr: $(SRC8FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS8NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS8NAME).srs} -fo=$@ -p=$(TARGET) $(SRC8FILES)
@@ -425,22 +329,10 @@ $(SRS)/$(SRS8NAME).srs: $(SRC8FILES)
# unroll begin
.IF "$(SRS9NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID9FILES=$(foreach,i,$(SRC9FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS9PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS9NAME)_srs.hid
-$(HIDSRS9PARTICLE) : $(HID9FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID9FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS9PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS9NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS9NAME).dprr: $(SRC9FILES) $(HIDSRS9PARTICLE) $(HID9FILES)
+$(MISC)/$(TARGET).$(SRS9NAME).dprr: $(SRC9FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS9NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS9NAME).srs} -fo=$@ -p=$(TARGET) $(SRC9FILES)
@@ -478,22 +370,10 @@ $(SRS)/$(SRS9NAME).srs: $(SRC9FILES)
# unroll begin
.IF "$(SRS10NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID10FILES=$(foreach,i,$(SRC10FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS10PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS10NAME)_srs.hid
-$(HIDSRS10PARTICLE) : $(HID10FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID10FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS10PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS10NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS10NAME).dprr: $(SRC10FILES) $(HIDSRS10PARTICLE) $(HID10FILES)
+$(MISC)/$(TARGET).$(SRS10NAME).dprr: $(SRC10FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS10NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS10NAME).srs} -fo=$@ -p=$(TARGET) $(SRC10FILES)
diff --git a/solenv/inc/cppunit.mk b/solenv/inc/cppunit.mk
index 2173f1a9ff9a..b30ca7152700 100644
--- a/solenv/inc/cppunit.mk
+++ b/solenv/inc/cppunit.mk
@@ -44,7 +44,7 @@
# unroll begin
# ---- create the test libraries ------------------------------------
-.IF "$(SHL$(TNR)TARGET)"!=""
+.IF "$(SHL$(TNR)TARGETN)"!=""
ALLTAR : test$(TNR)
test$(TNR) .PHONY : $(SHL$(TNR)TARGETN)
@echo ----------------------------------------------------------
diff --git a/solenv/inc/extension_post.mk b/solenv/inc/extension_post.mk
index bfd8e6695684..5204af7dd29a 100644
--- a/solenv/inc/extension_post.mk
+++ b/solenv/inc/extension_post.mk
@@ -69,10 +69,22 @@ $(COMPONENT_JARFILES) : $(CLASSDIR)/$$(@:f)
.ENDIF # "$(COMPONENT_JARFILES)"!=""
.IF "$(COMPONENT_LIBRARIES)"!=""
+PACK_RUNTIME!:=TRUE
# TODO(Q3): strip the binary?
$(COMPONENT_LIBRARIES) : $(DLLDEST)/$$(@:f)
@@-$(MKDIRHIER) $(@:d)
$(COMMAND_ECHO)$(COPY) $< $@
+.ENDIF # "$(COMPONENT_LIBRARIES)"!=""
+
+.IF "$(PACK_RUNTIME)"!=""
+PACK_RUNTIME_FLAG:=$(MISC)/$(TARGET)_pack_runtime.flag
+$(EXTENSION_TARGET) : $(PACK_RUNTIME_FLAG)
+
+$(EXTENSIONDIR) :
+ @@-$(MKDIRHIER) $(@:d)
+
+$(PACK_RUNTIME_FLAG) : $(EXTENSIONDIR)
+ @@-$(MKDIRHIER) $(@:d)
.IF "$(OS)$(CPU)"=="WNTI" && "$(WITH_EXTENSION_INTEGRATION)"!="YES"
.IF "$(COM)"=="GCC"
$(GNUCOPY) $(SOLARBINDIR)/mingwm10.dll $(EXTENSIONDIR)
@@ -120,7 +132,8 @@ $(COMPONENT_LIBRARIES) : $(DLLDEST)/$$(@:f)
.ENDIF # "$(PACKMS)"!=""
.ENDIF #"$(COM)"=="GCC"
.ENDIF # "$(OS)$(CPU)"=="WNTI" && "$(WITH_EXTENSION_INTEGRATION)"!="YES"
-.ENDIF # "$(COMPONENT_LIBRARIES)"!=""
+ @$(TOUCH) $@
+.ENDIF # "$(PACK_RUNTIME)"!=""
IMPLEMENTATION_IDENTIFIER*="com.sun.star.$(EXTENSIONNAME)-$(PLATFORMID)"
diff --git a/solenv/inc/installationtest.mk b/solenv/inc/installationtest.mk
index 15a80b02dcde..7b926cc75b66 100644
--- a/solenv/inc/installationtest.mk
+++ b/solenv/inc/installationtest.mk
@@ -89,35 +89,46 @@ $(MISC)/$(TARGET)/installation.flag : $(shell \
echo "$$my_tmp" > $@
.END
-cpptest .PHONY : $(MISC)/$(TARGET)/services.rdb
+cpptest .PHONY :
$(RM) -r $(MISC)/$(TARGET)/user
$(MKDIRHIER) $(MISC)/$(TARGET)/user
$(CPPUNITTESTER) \
- -env:UNO_SERVICES=$(my_file)$(PWD)/$(MISC)/$(TARGET)/services.rdb \
+ -env:UNO_SERVICES=$(my_file)$(SOLARXMLDIR)/ure/services.rdb \
-env:UNO_TYPES=$(my_file)$(SOLARBINDIR)/types.rdb \
-env:arg-soffice=$(my_soffice) -env:arg-user=$(MISC)/$(TARGET)/user \
- $(my_cppenv) $(OOO_CPPTEST_ARGS)
- $(RM) -r $(MISC)/$(TARGET)/user
+ $(my_cppenv) $(TEST_ARGUMENTS:^"-env:arg-testarg.") $(CPPTEST_LIBRARY)
+ # As a workaround for #i111400#, ignore failure of $(RM):
+ - $(RM) -r $(MISC)/$(TARGET)/user
.IF "$(OS)" == "WNT" && "$(OOO_TEST_SOFFICE)" == ""
$(RM) -r $(installationtest_instpath) $(MISC)/$(TARGET)/installation.flag
cpptest : $(MISC)/$(TARGET)/installation.flag
.END
-$(MISC)/$(TARGET)/services.rdb :
- $(MKDIRHIER) $(@:d)
- $(RM) $@
- $(REGCOMP) -register -r $@ -wop -c bridgefac.uno -c connector.uno \
- -c remotebridge.uno -c uuresolver.uno
-
.IF "$(SOLAR_JAVA)" == "TRUE" && "$(OOO_JUNIT_JAR)" != ""
-javatest .PHONY : $(JAVATARGET)
+javatest_% .PHONY : $(JAVATARGET)
+ $(COMMAND_ECHO)$(RM) -r $(MISC)/$(TARGET)/user
+ $(COMMAND_ECHO)$(MKDIRHIER) $(MISC)/$(TARGET)/user
+ $(COMMAND_ECHO)$(JAVAI) $(JAVAIFLAGS) $(JAVACPS) \
+ '$(OOO_JUNIT_JAR)$(PATH_SEPERATOR)$(CLASSPATH)' \
+ -Dorg.openoffice.test.arg.soffice=$(my_soffice) \
+ -Dorg.openoffice.test.arg.user=$(my_file)$(PWD)/$(MISC)/$(TARGET)/user \
+ $(my_javaenv) $(TEST_ARGUMENTS:^"-Dorg.openoffice.test.arg.testarg.") \
+ org.junit.runner.JUnitCore \
+ $(subst,/,. $(PACKAGE)).$(@:s/javatest_//)
$(RM) -r $(MISC)/$(TARGET)/user
- $(MKDIRHIER) $(MISC)/$(TARGET)/user
- $(JAVAI) $(JAVAIFLAGS) $(JAVACPS) \
+.IF "$(OS)" == "WNT" && "$(OOO_TEST_SOFFICE)" == ""
+ $(RM) -r $(installationtest_instpath) $(MISC)/$(TARGET)/installation.flag
+javatest : $(MISC)/$(TARGET)/installation.flag
+.END
+javatest .PHONY : $(JAVATARGET)
+ $(COMMAND_ECHO)$(RM) -r $(MISC)/$(TARGET)/user
+ $(COMMAND_ECHO)$(MKDIRHIER) $(MISC)/$(TARGET)/user
+ $(COMMAND_ECHO)$(JAVAI) $(JAVAIFLAGS) $(JAVACPS) \
'$(OOO_JUNIT_JAR)$(PATH_SEPERATOR)$(CLASSPATH)' \
-Dorg.openoffice.test.arg.soffice=$(my_soffice) \
-Dorg.openoffice.test.arg.user=$(my_file)$(PWD)/$(MISC)/$(TARGET)/user \
- $(my_javaenv) org.junit.runner.JUnitCore \
+ $(my_javaenv) $(TEST_ARGUMENTS:^"-Dorg.openoffice.test.arg.testarg.") \
+ org.junit.runner.JUnitCore \
$(foreach,i,$(JAVATESTFILES) $(subst,/,. $(PACKAGE)).$(i:s/.java//))
$(RM) -r $(MISC)/$(TARGET)/user
.IF "$(OS)" == "WNT" && "$(OOO_TEST_SOFFICE)" == ""
diff --git a/solenv/inc/javaunittest.mk b/solenv/inc/javaunittest.mk
index e129052a445e..6d7c564da2a0 100644
--- a/solenv/inc/javaunittest.mk
+++ b/solenv/inc/javaunittest.mk
@@ -52,9 +52,8 @@
# <platform>/class/, so that they are not accidentally included in jar files
# packed from <platform>/class/ subdirectories.
-TESTS := $(subst,.java,.test $(JAVATESTFILES))
JAVAFILES +:= $(JAVATESTFILES)
-JARFILES +:= OOoRunner.jar
+EXTRAJARFILES += $(OOO_JUNIT_JAR)
.INCLUDE: settings.mk
@@ -67,22 +66,26 @@ CLASSDIR !:= $(CLASSDIR)/test
.INCLUDE: target.mk
-ALLTAR: $(TESTS)
-
-$(JAVAFILES): $(MISC)/$(TARGET).classdir.flag
+$(JAVATARGET) : $(MISC)/$(TARGET).classdir.flag
$(MISC)/$(TARGET).classdir.flag:
- $(MKDIR) $(CLASSDIR)
$(TOUCH) $@
-.IF "$(TESTS)" != ""
-$(TESTS): $(JAVACLASSFILES)
-.ENDIF
+.IF "$(JAVATESTFILES)" != ""
+ALLTAR : test
+.END
-%.test .PHONY: %.java
- $(JAVAI) $(JAVAIFLAGS) $(JAVACPS) $(CLASSPATH) org.openoffice.Runner \
- -TestBase java_complex -NoOffice yes \
- -o $(subst,/,. $(subst,.test, $(PACKAGE).$@))
+.IF "$(SOLAR_JAVA)" == "TRUE" && "$(OOO_JUNIT_JAR)" != ""
+test .PHONY : $(JAVATARGET)
+ $(JAVAI) $(JAVAIFLAGS) $(JAVACPS) \
+ '$(OOO_JUNIT_JAR)$(PATH_SEPERATOR)$(CLASSPATH)' \
+ org.junit.runner.JUnitCore \
+ $(foreach,i,$(JAVATESTFILES) $(subst,/,. $(PACKAGE)).$(i:s/.java//))
+.ELSE
+test .PHONY :
+ echo 'test needs SOLAR_JAVA=TRUE and OOO_JUNIT_JAR'
+.END
.IF "$(IDLTESTFILES)" != ""
diff --git a/solenv/inc/langlist.mk b/solenv/inc/langlist.mk
new file mode 100644
index 000000000000..e3ac2e5065ff
--- /dev/null
+++ b/solenv/inc/langlist.mk
@@ -0,0 +1,163 @@
+#*************************************************************************
+#
+# 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.
+#
+#*************************************************************************
+
+completelangiso=af \
+ar \
+as \
+as-IN \
+ast \
+be-BY \
+bo \
+bg \
+br \
+brx \
+bn \
+bn-BD \
+bn-IN \
+bs \
+by \
+ca \
+ca-XV \
+cs \
+cy \
+da \
+de \
+dgo \
+dz \
+el \
+en-GB \
+en-US \
+en-ZA \
+eo \
+es \
+et \
+eu \
+fa \
+fi \
+fr \
+ga \
+gd \
+gl \
+gu \
+gu-IN \
+he \
+hi \
+hi-IN \
+hr \
+ht \
+hu \
+is \
+it \
+ja \
+kid \
+ky \
+ka \
+kab \
+kk \
+km \
+kn \
+ko \
+kok \
+ks \
+ku \
+lo \
+lt \
+lv \
+mai \
+mk \
+mn \
+mni \
+ms \
+ml \
+ml-IN \
+mr \
+mr-IN \
+my \
+ne \
+nb \
+nl \
+nn \
+nr \
+ns \
+nso \
+om \
+oms \
+oc \
+or \
+or-IN \
+pap \
+pa \
+pa-IN \
+pl \
+ps \
+pt \
+pt-BR \
+gug \
+pyg \
+ro \
+ru \
+rw \
+sat \
+sa \
+sa-IN \
+si \
+sc \
+sd \
+sq \
+sk \
+sl \
+sh \
+son \
+sr \
+ss \
+st \
+sv \
+sw \
+sw-TZ \
+te \
+te-IN \
+ti \
+ti-ER \
+ta \
+ta-IN \
+tlh \
+th \
+tn \
+tr \
+ts \
+tg \
+ug \
+ur \
+ur-IN \
+uk \
+uz \
+ve \
+vi \
+xh \
+zh-CN \
+zh-TW \
+zu
diff --git a/solenv/inc/libs.mk b/solenv/inc/libs.mk
index f8ed465f2168..6c1777349d39 100644
--- a/solenv/inc/libs.mk
+++ b/solenv/inc/libs.mk
@@ -66,7 +66,7 @@ SALHELPERLIB=-lsalhelper$(UDK_MAJOR)$(COMID)
SALHELPERLIB=-luno_salhelper$(COMID)
.ENDIF # "$(GUI)$(COM)"=="WNTGCC"
XMLSCRIPTLIB =-lxcr$(DLLPOSTFIX)
-COMPHELPERLIB=-lcomphelp$(COMPHLP_MAJOR)$(COMID)
+COMPHELPERLIB=-lcomphelp$(COMID)
CONNECTIVITYLIB=-lconnectivity
LDAPBERLIB=-lldapber
TOOLSLIBST=-latools
@@ -183,9 +183,7 @@ SAXLIB=-lsax$(DLLPOSTFIX)
MAILLIB=-lmail
DOCMGRLIB=-ldmg$(DLLPOSTFIX)
BASICLIB=-lsb$(DLLPOSTFIX)
-.IF "$(ENABLE_VBA)"=="YES"
VBAHELPERLIB=-lvbahelper$(DLLPOSTFIX)
-.ENDIF
DBTOOLSLIB=-ldbtools$(DLLPOSTFIX)
HM2LIBSH=-lhmwrpdll
HM2LIBST=-lhmwrap
@@ -355,6 +353,7 @@ LPSOLVELIB=-llpsolve55
SOFFICELIB=-lsofficeapp
UNOPKGAPPLIB=-lunopkgapp
TESTLIB=-ltest
+XMLREADERLIB=-lxmlreader
.ELSE # ("$(GUI)"=="UNX" || "$(COM)"=="GCC") && "$(GUI)"!="OS2"
@@ -535,5 +534,6 @@ SOFFICELIB=isofficeapp.lib
UNOPKGAPPLIB=iunopkgapp.lib
TESTLIB=itest.lib
BOOSTTHREADLIB=boostthread.lib
+XMLREADERLIB=ixmlreader.lib
.ENDIF # ("$(GUI)"=="UNX" || "$(COM)"=="GCC") && "$(GUI)"!="OS2"
diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk
index 3e2745f9ddf7..f828ae6400de 100644
--- a/solenv/inc/minor.mk
+++ b/solenv/inc/minor.mk
@@ -1,5 +1,5 @@
-RSCVERSION=330
-RSCREVISION=330m19(Build:6)
-BUILD=6
-LAST_MINOR=m19
-SOURCEVERSION=OOO330
+RSCVERSION=300
+RSCREVISION=300m101(Build:1)
+BUILD=1
+LAST_MINOR=m101
+SOURCEVERSION=DEV300
diff --git a/solenv/inc/postmac.h b/solenv/inc/postmac.h
index a50e7b6e93d6..f53ee6ae0e03 100644
--- a/solenv/inc/postmac.h
+++ b/solenv/inc/postmac.h
@@ -26,8 +26,8 @@
*
************************************************************************/
-#undef Boolean
-#undef BOOL
+//#undef Boolean
+//#undef BOOL
#undef Button
#undef Byte
#undef Control
@@ -46,7 +46,7 @@
#undef SetCursor
#undef StringPtr
#undef DirInfo
-#undef ULONG
+//#undef ULONG
#undef Line
#undef TimeValue
#undef Pattern
diff --git a/solenv/inc/premac.h b/solenv/inc/premac.h
index f602c64f07c5..abf0a7b6ca92 100644
--- a/solenv/inc/premac.h
+++ b/solenv/inc/premac.h
@@ -27,8 +27,8 @@
************************************************************************/
-#define Boolean MacOSBoolean
-#define BOOL MacOSBOOL
+//#define Boolean MacOSBoolean
+//#define BOOL MacOSBOOL
#define Button MacOSButton
#define Byte MacOSByte
#define Control MacOSControl
@@ -46,7 +46,7 @@
#define SetCursor MacOSSetCursor
#define StringPtr MacOSStringPtr
#define DirInfo MacOSDirInfo
-#define ULONG MacOSULONG
+//#define ULONG MacOSULONG
#define Line MacOSLine
#define TimeValue MacOSTimeValue
#define Pattern MacOSPattern
diff --git a/solenv/inc/pstrules.mk b/solenv/inc/pstrules.mk
index 74c50ae9616d..a845b9ae86fe 100644
--- a/solenv/inc/pstrules.mk
+++ b/solenv/inc/pstrules.mk
@@ -153,24 +153,3 @@ $(PAR)/%.par :
# $(COMMAND_ECHO)$(SCPCOMP) -l $(@:b).$(LANGFILEEXT) -s $(MISC)/{$(subst,$(@:d:d:d), $(@:d:d))}/$(*:b).pre -o $@
.ENDIF # "$(PARFILES)"!=""
-
-.IF "$(TESTDIR)"!=""
-
-# workaround for strange dmake bug:
-# if the previous block was a rule or a target, "\#" isn't recognized
-# as an escaped "#". if it was an assignment, escaping works...
-some_unique_variable_name:=1
-
-.IF "$(OS)" == "WNT"
-REGEXP:="s/^[\#].*//"
-.ELSE
-REGEXP:='s/^[\#].*//'
-.ENDIF
-
-$(MISC)/%.exp : sce/%.sce
- @@-$(RM) $@
- @@-$(RM) $(@:d)$(@:b).tst
- $(COMMAND_ECHO)$(TYPE) $< | sed $(REGEXP) | sed "s/^/test_/" > $(@:d)$(@:b).tst
- $(COMMAND_ECHO)$(TYPE) $(@:d)$(@:b).tst | sed "/test_./ w $@"
-
-.ENDIF # "$(TESTDIR)"!=""
diff --git a/solenv/inc/rules.mk b/solenv/inc/rules.mk
index a2797d2aee82..db97eddea355 100644
--- a/solenv/inc/rules.mk
+++ b/solenv/inc/rules.mk
@@ -600,7 +600,7 @@ $(MISC)/%.dpr :
.IF "$(nodep)"==""
@echo "Making: " $(@:f)
@@-$(RM) $@
- $(COMMAND_ECHO)dmake $(MFLAGS) $(MAKEFILE) $(CALLMACROS) NO_HIDS=true make_srs_deps=true $(DEPSRSFILES)
+ $(COMMAND_ECHO)dmake $(MFLAGS) $(MAKEFILE) $(CALLMACROS) make_srs_deps=true $(DEPSRSFILES)
$(COMMAND_ECHO)-$(TYPE) $(MISC)/$(TARGET).*.dprr >> $@
.ENDIF # "$(nodep)"==""
@@ -689,11 +689,6 @@ $(OUT)/ucr/$(IDLPACKAGE)/%.urd : %.idl
$(OUT)/ucrdoc/$(IDLPACKAGE)/%.urd : %.idl
@noop $(assign all_outdated_doc_idl+:=$<)
-# generate hid files
-$(SRS)/%.hid : %.src
- @echo Compiling: $(PRJNAME)/$(PATH_IN_MODULE)/$(*:f).src
- $(COMMAND_ECHO)$(AUGMENT_LIBRARY_PATH) $(PERL) $(SOLARENV)/bin/mhids.pl $*.src $(SRS) $(PRJNAME) $(CDEFS) $(INCLUDE)
-
# make *.xml descriptions available in $(MISC)
$(MISC)/%$($(WINVERSIONNAMES)_MAJOR).xml : %.xml
$(COMMAND_ECHO)$(COPY) $< $@
diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk
index 99226cd6348f..de93a62e9c75 100644
--- a/solenv/inc/settings.mk
+++ b/solenv/inc/settings.mk
@@ -302,6 +302,12 @@ dbgutil=
# ---------------------------------------------------------------------------
DMAKE_WORK_DIR*:=$(subst,/,/ $(PWD))
+.IF "$(GUI)"=="WNT"
+posix_PWD:=/cygdrive/$(PWD:s/://)
+.ELSE #GUI)"=="WNT"
+posix_PWD:=$(PWD)
+.ENDIF #GUI)"=="WNT"
+
.IF "$(TMP)"!=""
tmp*=$(TMP)
@@ -386,9 +392,11 @@ COMPILER_WARN_ALL=TRUE
COMPILER_WARN_ERRORS=TRUE
.ENDIF
-.IF "$(COMMON_BUILD)"!=""
-common_build*=$(COMMON_BUILD)
-.ENDIF
+#.IF "$(COMMON_BUILD)"!=""
+#common_build*=$(COMMON_BUILD)
+#.ENDIF
+common_build:=
+COMMON_BUILD:=
.IF "$(USE_SHL_VERSIONS)"!=""
use_shl_versions*=$(USE_SHL_VERSIONS)
@@ -573,24 +581,24 @@ PATH_IN_MODULE:=$(subst,$(shell @+cd $(PRJ) && pwd $(PWDFLAGS))/, $(PWD))
PATH_IN_MODULE:=
.ENDIF # "$(PRJ)"!="."
-# common output tree
-.IF "$(common_build)"!=""
-COMMON_OUTDIR*=common
-.IF "$(no_common_build_reslib)"==""
-common_build_reslib=true
-.ENDIF # "$(no_common_build_reslib)"==""
-.IF "$(no_common_build_zip)"==""
-common_build_zip=true
-.ENDIF # "$(no_common_build_zip)"==""
-.IF "$(no_common_build_sign_jar)"==""
-common_build_sign_jar=true
-.ENDIF # "$(no_common_build_sign_jar)"==""
-.IF "$(no_common_build_srs)"==""
-common_build_srs=true
-.ENDIF # "$(no_common_build_srs)"==""
-.ELSE # "$(common_build)"!=""
+## common output tree
+#.IF "$(common_build)"!=""
+#COMMON_OUTDIR*=common
+#.IF "$(no_common_build_reslib)"==""
+#common_build_reslib=true
+#.ENDIF # "$(no_common_build_reslib)"==""
+#.IF "$(no_common_build_zip)"==""
+#common_build_zip=true
+#.ENDIF # "$(no_common_build_zip)"==""
+#.IF "$(no_common_build_sign_jar)"==""
+#common_build_sign_jar=true
+#.ENDIF # "$(no_common_build_sign_jar)"==""
+#.IF "$(no_common_build_srs)"==""
+#common_build_srs=true
+#.ENDIF # "$(no_common_build_srs)"==""
+#.ELSE # "$(common_build)"!=""
COMMON_OUTDIR:=$(OUTPATH)
-.ENDIF # "$(common_build)"!=""
+#.ENDIF # "$(common_build)"!=""
LOCAL_OUT:=$(OUT)
LOCAL_COMMON_OUT:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(OUT))
@@ -598,27 +606,25 @@ LOCAL_COMMON_OUT:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(OUT))
# --- generate output tree -----------------------------------------
+# disable for makefiles wrapping a gnumake module
+.IF "$(TARGET)"!="prj"
# As this is not part of the initial startup makefile we define an infered
# target instead of using $(OUT)/inc/myworld.mk as target name.
# (See iz62795)
-$(OUT)/inc/%world.mk :
+$(posix_PWD)/$(OUT)/inc/%world.mk :
@$(MKOUT) $(ROUT)
@echo $(EMQ)# > $@
-# don't need/want output trees in solenv!!!
-.IF "$(PRJNAME)"!="solenv"
-.INCLUDE : $(OUT)/inc/myworld.mk
-.ENDIF # "$(PRJNAME)"!="solenv"
+.INCLUDE : $(posix_PWD)/$(OUT)/inc/myworld.mk
.IF "$(common_build)"!=""
-$(LOCAL_COMMON_OUT)/inc/%world.mk :
+$(posix_PWD)/$(LOCAL_COMMON_OUT)/inc/%world.mk :
@$(MKOUT) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(ROUT))
@echo $(EMQ)# > $@
-.IF "$(PRJNAME)"!="solenv"
-.INCLUDE : $(LOCAL_COMMON_OUT)/inc/myworld.mk
-.ENDIF # "$(PRJNAME)"!="solenv"
+.INCLUDE : $(posix_PWD)/$(LOCAL_COMMON_OUT)/inc/myworld.mk
.ENDIF # "$(common_build)"!=""
+.ENDIF # "$(TARGET)"!="prj"
.INCLUDE .IGNORE : office.mk
@@ -803,12 +809,7 @@ SOLARCOMMONSDFDIR=$(SOLARSDFDIR)
.EXPORT : SOLARBINDIR
-.IF "$(GUI)"=="WNT"
-# we assume that we build using cygwin
-L10N_MODULE*=$(cygpath -m $(realpath $(SOLARSRC)$/l10n))
-.ELSE
-L10N_MODULE*=$(SOLARSRC)$/l10n
-.ENDIF
+L10N_MODULE*=$(SOURCE_ROOT_DIR)/l10n/l10n
ALT_L10N_MODULE*=$(SOLARSRC)$/l10n_so
.IF "$(WITH_LANG)"!=""
@@ -1020,15 +1021,15 @@ LNTFLAGSOUTOBJ=-os
.ENDIF
.IF "$(OOO_LIBRARY_PATH_VAR)" != ""
-# Add SOLARLIBDIR to the end of a (potentially previously undefined) library
-# path (LD_LIBRARY_PATH, PATH, etc.; there is no real reason to prefer adding at
-# the end over adding at the start); the ": &&" in the bash case enables this to
-# work at the start of a recipe line that is not prefixed by "+" as well as in
-# the middle of an existing && chain:
+# Add SOLARLIBDIR at the begin of a (potentially previously undefined) library
+# path (LD_LIBRARY_PATH, PATH, etc.; prepending avoids fetching libraries from
+# an existing office/URE installation; the ": &&" enables this to work at the
+# start of a recipe line that is not prefixed by "+" as well as in the middle of
+# an existing && chain:
AUGMENT_LIBRARY_PATH = : && \
- $(OOO_LIBRARY_PATH_VAR)=$${{$(OOO_LIBRARY_PATH_VAR)+$${{$(OOO_LIBRARY_PATH_VAR)}}:}}$(normpath, $(SOLARSHAREDBIN))
+ $(OOO_LIBRARY_PATH_VAR)=$(normpath, $(SOLARSHAREDBIN))$${{$(OOO_LIBRARY_PATH_VAR):+:$${{$(OOO_LIBRARY_PATH_VAR)}}}}
AUGMENT_LIBRARY_PATH_LOCAL = : && \
- $(OOO_LIBRARY_PATH_VAR)=$${{$(OOO_LIBRARY_PATH_VAR)+$${{$(OOO_LIBRARY_PATH_VAR)}}:}}$(normpath, $(PWD)/$(DLLDEST)):$(normpath, $(SOLARSHAREDBIN))
+ $(OOO_LIBRARY_PATH_VAR)=$(normpath, $(PWD)/$(DLLDEST)):$(normpath, $(SOLARSHAREDBIN))$${{$(OOO_LIBRARY_PATH_VAR):+:$${{$(OOO_LIBRARY_PATH_VAR)}}}}
.END
# for multiprocess building in external modules
@@ -1364,6 +1365,20 @@ XERCES_JAR*=$(SOLARBINDIR)/xercesImpl.jar
CPPUNIT_CFLAGS =
.END
+COMPONENTPREFIX_URE_NATIVE = vnd.sun.star.expand:$$URE_INTERNAL_LIB_DIR/
+COMPONENTPREFIX_URE_JAVA = vnd.sun.star.expand:$$URE_INTERNAL_JAVA_DIR/
+.IF "$(OS)" == "WNT"
+COMPONENTPREFIX_BASIS_NATIVE = vnd.sun.star.expand:$$BRAND_BASE_DIR/program/
+.ELSE
+COMPONENTPREFIX_BASIS_NATIVE = vnd.sun.star.expand:$$OOO_BASE_DIR/program/
+.END
+COMPONENTPREFIX_BASIS_JAVA = vnd.sun.star.expand:$$OOO_BASE_DIR/program/classes/
+COMPONENTPREFIX_BASIS_PYTHON = vnd.openoffice.pymodule:
+COMPONENTPREFIX_INBUILD_NATIVE = \
+ vnd.sun.star.expand:$$OOO_INBUILD_SHAREDLIB_DIR/
+COMPONENTPREFIX_INBUILD_JAVA = vnd.sun.star.expand:$$OOO_INBUILD_JAR_DIR/
+COMPONENTPREFIX_EXTENSION = ./
+
# workaround for strange dmake bug:
# if the previous block was a rule or a target, "\#" isn't recognized
# as an escaped "#". if it was an assignment, escaping works...
diff --git a/solenv/inc/target.mk b/solenv/inc/target.mk
index 0fe06145879d..6e8007425454 100644
--- a/solenv/inc/target.mk
+++ b/solenv/inc/target.mk
@@ -960,31 +960,26 @@ NO_SDINAME_allowed
.IF "$(SDI1NAME)"!=""
.DIRCACHE=no
SDI1TARGET=$(MISC)/$(SDI1NAME).don
-HIDSID1PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(SDI1NAME)_sid.hid
.ENDIF
.IF "$(SDI2NAME)"!=""
.DIRCACHE=no
SDI2TARGET=$(MISC)/$(SDI2NAME).don
-HIDSID2PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(SDI2NAME)_sid.hid
.ENDIF
.IF "$(SDI3NAME)"!=""
.DIRCACHE=no
SDI3TARGET=$(MISC)/$(SDI3NAME).don
-HIDSID3PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(SDI3NAME)_sid.hid
.ENDIF
.IF "$(SDI4NAME)"!=""
.DIRCACHE=no
SDI4TARGET=$(MISC)/$(SDI4NAME).don
-HIDSID4PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(SDI4NAME)_sid.hid
.ENDIF
.IF "$(SDI5NAME)"!=""
.DIRCACHE=no
SDI5TARGET=$(MISC)/$(SDI5NAME).don
-HIDSID5PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(SDI5NAME)_sid.hid
.ENDIF
.IF "$(XMLPROPERTIES)"!=""
@@ -1008,17 +1003,6 @@ TARGETDPJ=$(MISC)/$(TARGET).dpj
.ENDIF # "$(L10N_framework)"==""
.ENDIF
-.IF "$(no_hids)$(NO_HIDS)"==""
-BUILDHIDS:=TRUE
-.IF "$(GEN_HID_OTHER)"!=""
-PRJHIDOTHERTARGET=$(SRS)/hidother.hid
-COMMONPRJHIDOTHERTARGET=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC)/$(TARGET)_othr.hid)
-.ENDIF
-.IF "$(GEN_HID2)"!=""
-PRJHID2TARGET=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid.lst
-.ENDIF
-.ENDIF # "$(no_hids)$(NO_HIDS)"==""
-
.IF "$(make_srs_deps)"==""
.IF "$(SRCFILES)" != "" || "$(SRC1FILES)" != "" || "$(SRC2FILES)" != ""
DPRTARGET= $(MISC)/$(TARGET).dpr
@@ -1056,8 +1040,6 @@ ALLTAR: \
$(DPRTARGET) \
$(DPZTARGET) \
$(ZIPALL) \
- $(HIDSID1PARTICLE) $(HIDSID2PARTICLE) \
- $(HIDSID3PARTICLE) $(HIDSID4PARTICLE) $(HIDSID5PARTICLE) \
$(SDITARGET) $(SDI1TARGET) $(SDI2TARGET) \
$(SDI3TARGET) $(SDI4TARGET) $(SDI5TARGET) \
$(XMLPROPERTIESN) \
@@ -1095,8 +1077,6 @@ ALLTAR: \
$(RESLIB3TARGETN) $(RESLIB4TARGETN) \
$(RESLIB5TARGETN) $(RESLIB6TARGETN) \
$(RESLIB7TARGETN) $(RESLIB8TARGETN) \
- $(COMMONPRJHIDOTHERTARGET) \
- $(PRJHID2TARGET) \
$(LOCALIZE_ME_DEST)\
last_target
@@ -1134,8 +1114,6 @@ ALLTAR: \
$(COMP9RDBTARGETN) \
$(IDL1TARGET) $(IDL2TARGET) $(IDL3TARGET) \
$(IDL4TARGET) $(IDL5TARGET) \
- $(HIDSID1PARTICLE) $(HIDSID2PARTICLE) \
- $(HIDSID3PARTICLE) $(HIDSID4PARTICLE) $(HIDSID5PARTICLE) \
$(SDI1TARGET) $(SDI2TARGET) $(SDI3TARGET) \
$(SDI4TARGET) $(SDI5TARGET) \
$(HXXCOPYTARGET) \
@@ -1204,8 +1182,6 @@ ALLTAR: \
$(RESLIB5TARGETN) $(RESLIB6TARGETN) \
$(RESLIB7TARGETN) $(RESLIB8TARGETN) \
$(RESLIB9TARGETN) \
- $(COMMONPRJHIDOTHERTARGET) \
- $(PRJHID2TARGET) \
$(SIGNFORNETSCAPE) \
$(SIGNFOREXPLORER) \
$(SIGNFORJARSIGNER) \
@@ -1538,22 +1514,14 @@ $(MISC)/$(TARGET)_%.done : %.xrb
@@$(RM) $(MISC)/$(<:b).interm$(TARGET)
.ENDIF # "$(XMLPROPERTIES)"!=""
-.IF "$(HIDSID1PARTICLE)$(SDI1TARGET)$(HIDSID2PARTICLE)$(SDI2TARGET)$(HIDSID3PARTICLE)$(SDI3TARGET)$(HIDSID4PARTICLE)$(SDI4TARGET)$(HIDSID5PARTICLE)$(SDI5TARGET)$(HIDSID6PARTICLE)$(SDI6TARGET)$(HIDSID7PARTICLE)$(SDI7TARGET)$(HIDSID8PARTICLE)$(SDI8TARGET)$(HIDSID9PARTICLE)$(SDI9TARGET)"!=""
+.IF "$(SDI1TARGET)$(SDI2TARGET)$(SDI3TARGET)$(SDI4TARGET)$(SDI5TARGET)$(SDI6TARGET)$(SDI7TARGET)$(SDI8TARGET)$(SDI9TARGET)"!=""
.INCLUDE : _tg_sdi.mk
-.ENDIF # "$(HIDSID1PARTICLE)$(SDI1TARGET)$(HIDSID2PARTICLE)$(SDI2TARGET)$(HIDSID3PARTICLE)$(SDI3TARGET)$(HIDSID4PARTICLE)$(SDI4TARGET)$(HIDSID5PARTICLE)$(SDI5TARGET)$(HIDSID6PARTICLE)$(SDI6TARGET)$(HIDSID7PARTICLE)$(SDI7TARGET)$(HIDSID8PARTICLE)$(SDI8TARGET)$(HIDSID9PARTICLE)$(SDI9TARGET)"!=""
+.ENDIF # "$(SDI1TARGET)$(SDI2TARGET)$(SDI3TARGET)$(SDI4TARGET)$(SDI5TARGET)$(SDI6TARGET)$(SDI7TARGET)$(SDI8TARGET)$(SDI9TARGET)"!=""
.IF "$(DEF1NAME)$(DEF2NAME)$(DEF3NAME)$(DEF4NAME)$(DEF5NAME)$(DEF6NAME)$(DEF7NAME)$(DEF8NAME)$(DEF9NAME)"!=""
.INCLUDE : _tg_def.mk
.ENDIF
-.IF "$(COMMONPRJHIDOTHERTARGET)"!=""
-$(COMMONPRJHIDOTHERTARGET) : $(PRJHIDOTHERTARGET)
- @echo "Making: " $@
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
- $(COMMAND_ECHO)$(TYPE) $(PRJHIDOTHERTARGET) > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF
-
# -------
# - LIB -
# -------
@@ -2022,17 +1990,17 @@ UNOUCRDEPxxx : $(UNOUCRDEP);
.ENDIF # "$(UNOTYPES)" != ""
-#new hid.lst trigger with GEN_HID2=TRUE
-$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid.lst .PHONY :
- @echo "Making: " $@
- @echo $(WORK_STAMP).$(LAST_MINOR) 010101010101010 > $@.$(ROUT).tmp
- $(COMMAND_ECHO)$(TYPE) $(SOLARCOMMONBINDIR)/hid/*.hid | tr -d "\015" | $(SORT) -u >> $@.$(ROUT).tmp
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
- @-$(RENAME) $@.$(ROUT).tmp $@
- @-mkdir $(@:d)hid
- $(COMMAND_ECHO)$(PERL) $(SOLARENV)/bin/gen_userfeedback_VCL_names.pl $@ $(SOLARCOMMONBINDIR)/win $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv.$(ROUT).tmp
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv $(FI)
- @-$(RENAME) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv.$(ROUT).tmp $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv
+##new hid.lst trigger with GEN_HID2=TRUE
+#$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid.lst .PHONY :
+# @echo "Making: " $@
+# @echo $(WORK_STAMP).$(LAST_MINOR) 010101010101010 > $@.$(ROUT).tmp
+# $(COMMAND_ECHO)$(TYPE) $(SOLARCOMMONBINDIR)/hid/*.hid | tr -d "\015" | $(SORT) -u >> $@.$(ROUT).tmp
+# @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
+# @-$(RENAME) $@.$(ROUT).tmp $@
+# @-mkdir $(@:d)hid
+# $(COMMAND_ECHO)$(PERL) $(SOLARENV)/bin/gen_userfeedback_VCL_names.pl $@ $(SOLARCOMMONBINDIR)/win $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv.$(ROUT).tmp
+# @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv $(FI)
+# @-$(RENAME) $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv.$(ROUT).tmp $(subst,$(OUTPATH),$(COMMON_OUTDIR) $(BIN))/hid/userfeedback_VCL_names.csv
.IF "$(SOLAR_JAVA)"!=""
diff --git a/solenv/inc/tg_ext.mk b/solenv/inc/tg_ext.mk
index f15bd8f99804..cd66717b96c4 100644
--- a/solenv/inc/tg_ext.mk
+++ b/solenv/inc/tg_ext.mk
@@ -303,11 +303,11 @@ $(MISC)/$(TARFILE_ROOTDIR).done : $(MISC)/$(TARFILE_MD5)-$(TARFILE_NAME).unpack
#.IF "$(my4ver:s/.//:s/,//)" >= "300"
# $(COMMAND_ECHO)cd $(MISC) && ( $(TYPE:s/+//) $(BACK_PATH)$(PATH_IN_MODULE)/{$(PATCH_FILES)} | tr -d "\015" | patch $(PATCHFLAGS) -p2 )
#.ELSE # "$(my4ver:s/.//:s/,//)" >= "300"
- $(COMMAND_ECHO)cd $(MISC) && $(TYPE:s/+//) $(BACK_PATH)$(PATH_IN_MODULE)/{$(PATCH_FILES)} | tr -d "\015" | patch $(PATCHFLAGS) -p2
+ $(COMMAND_ECHO)cd $(MISC) && $(TYPE:s/+//) $(MBACK_PATH)$(PATH_IN_MODULE)/{$(PATCH_FILES)} | tr -d "\015" | patch $(PATCHFLAGS) -p2
#.ENDIF # "$(my4ver:s/.//:s/,//)" >= "300"
.ELSE # "$(GUI)"=="WNT"
.IF "$(BSCLIENT)"=="TRUE"
- $(COMMAND_ECHO)cd $(MISC) && $(TYPE) $(BACK_PATH)$(PATH_IN_MODULE)/{$(PATCH_FILES)} | $(GNUPATCH) -f $(PATCHFLAGS) -p2
+ $(COMMAND_ECHO)cd $(MISC) && $(TYPE) $(MBACK_PATH)$(PATH_IN_MODULE)/{$(PATCH_FILES)} | $(GNUPATCH) -f $(PATCHFLAGS) -p2
.ELSE # "$(BSCLIENT)"!=""
$(COMMAND_ECHO)cd $(MISC) && $(TYPE) $(MBACK_PATH)$(PATH_IN_MODULE)/{$(PATCH_FILES)} | $(GNUPATCH) $(PATCHFLAGS) -p2
.ENDIF # "$(BSCLIENT)"!=""
diff --git a/solenv/inc/tg_jar.mk b/solenv/inc/tg_jar.mk
index 6faf113aeaa5..5c6101d90c12 100644
--- a/solenv/inc/tg_jar.mk
+++ b/solenv/inc/tg_jar.mk
@@ -67,6 +67,14 @@ $(JARMANIFEST) .PHONY : $(CUSTOMMANIFESTFILEDEP)
.ENDIF # "$(JARMANIFEST)"!=""
.ENDIF # "$(NEW_JAR_PACK)"!=""
+.IF "$(JARCLASSEXCLUDES)" == ""
+ZIPJAR_EXCLUDE=
+.ELSE # "$(JARCLASSEXCLUDES)" == ""
+ZIPJAR_EXCLUDE=$(foreach,i,$(JARCLASSEXCLUDES) -x "$i")
+# format:
+# JARCLASSEXCLUDES=foo/* bar/*
+.ENDIF # "$(JARCLASSEXCLUDES)" == ""
+
#
# build jar
#
@@ -82,8 +90,8 @@ $(JARTARGETN) :
@-find . -type d -user $(USER) ! -perm -5 -print | xargs test "$$1" != "" && chmod +r $$1
.ENDIF
.IF "$(JARMANIFEST)"!=""
- $(COMMAND_ECHO)cd $(CLASSDIR)/$(TARGET) && zip $(ZIP_VERBOSITY) -u -rX ../$(@:f) $(subst,$(CLASSDIR)/$(TARGET)/, $(JARMANIFEST)) $(CHECKZIPRESULT)
+ $(COMMAND_ECHO)cd $(CLASSDIR)/$(TARGET) && zip $(ZIP_VERBOSITY) -u -rX ../$(@:f) $(subst,$(CLASSDIR)/$(TARGET)/, $(JARMANIFEST)) $(ZIPJAR_EXCLUDE) $(CHECKZIPRESULT)
.ENDIF # "$(JARMANIFEST)"!=""
- $(COMMAND_ECHO)cd $(CLASSDIR) && zip $(ZIP_VERBOSITY) -u -rX $(@:f) $(subst,\,/ $(JARCLASSDIRS)) $(CHECKZIPRESULT)
+ $(COMMAND_ECHO)cd $(CLASSDIR) && zip $(ZIP_VERBOSITY) -u -rX $(@:f) $(subst,\,/ $(JARCLASSDIRS)) $(ZIPJAR_EXCLUDE) $(CHECKZIPRESULT)
.ENDIF
diff --git a/solenv/inc/tg_java.mk b/solenv/inc/tg_java.mk
index 1f6a50347b79..054dcc5fbaff 100644
--- a/solenv/inc/tg_java.mk
+++ b/solenv/inc/tg_java.mk
@@ -42,13 +42,11 @@ $(MISC)/java/com/sun/star/upd/$(VERSIONINFOFILE)_updversion.java .PHONY:
.IF "$(JAVATARGET)"!=""
.IF "$(PACKAGE)"!=""
-$(CLASSDIR)/$(IDLPACKAGE)/%.class .NOINFER .IGNORE : %.java
-# echo $@
- @@-$(RM) $(JAVATARGET)
+$(CLASSDIR)/$(PACKAGE)/%.class .NOINFER .IGNORE : %.java
+ $(COMMAND_ECHO)-$(RM) $(JAVATARGET)
.ELSE # "$(PACKAGE)"!=""
$(CLASSDIR)/%.class .NOINFER .IGNORE : %.java
-# echo $@
- @@-$(RM) $(JAVATARGET)
+ $(COMMAND_ECHO)-$(RM) $(JAVATARGET)
.ENDIF # "$(PACKAGE)"!=""
$(JAVATARGET) : $(JAVAFILES) $(JAVACLASSFILES)
@@ -78,7 +76,6 @@ $(JAVATARGET) : $(JAVAFILES) $(JAVACLASSFILES)
@@-find $(CLASSDIR) -type d -user $(USER) \! -perm -5 -print | xargs chmod a+r $$1
.ENDIF
.ENDIF
- @echo > $@
+ @$(TOUCH) $@
.ENDIF # "$(JAVATARGET)"!=""
-
diff --git a/solenv/inc/tg_rslb.mk b/solenv/inc/tg_rslb.mk
index 913608e01db1..0b1659a28796 100644
--- a/solenv/inc/tg_rslb.mk
+++ b/solenv/inc/tg_rslb.mk
@@ -30,22 +30,6 @@
.IF "$(RESLIB$(TNR)TARGETN)"!=""
-.IF "$(BUILDHIDS)"!=""
-HIDRES$(TNR)PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(MISC))/$(RESLIB$(TNR)NAME)_res.hid
-
-#HACK cut off the dirty srs files which are included from solver
-RESLIB$(TNR)HIDFILES:=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(subst,.srs,_srs.hid $(RESLIB$(TNR)SRSFILES)))
-$(HIDRES$(TNR)PARTICLE): $(RESLIB$(TNR)HIDFILES)
- @echo "Making: " $(@:f)
- @$(IFEXIST) $@ $(THEN) $(RM:s/+//) $@ $(FI)
-# need to strip since solaris cannot handle tab-only whitespace here
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(strip, $(subst,/,/ $(RESLIB$(TNR)HIDFILES))) )| xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDRES$(TNR)PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
-
$(RSC_MULTI$(TNR)) : \
$(RESLIB$(TNR)SRSFILES) \
$(RESLIB$(TNR)TARGETN) \
diff --git a/solenv/inc/tg_scp.mk b/solenv/inc/tg_scp.mk
index fd970deaae18..0033dd9a76be 100644
--- a/solenv/inc/tg_scp.mk
+++ b/solenv/inc/tg_scp.mk
@@ -36,7 +36,7 @@ $(PAR)/%.par : $(SOLARPARDIR)/%.par
@@-$(MKDIRHIER) $(@:d:d)
$(COMMAND_ECHO)$(COPY) $< $@
-LOCALSCP$(TNR)FILES=$(foreach,i,$(SCP$(TNR)FILES) $(foreach,j,$(SCP$(TNR)LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
+LOCALSCP$(TNR)FILES+=$(foreach,i,$(SCP$(TNR)FILES) $(foreach,j,$(SCP$(TNR)LINK_PRODUCT_TYPE) $(PAR)/$j/$i ))
$(SCP$(TNR)TARGETN): $(LOCALSCP$(TNR)FILES)
@echo "Making: " $(@:f)
diff --git a/solenv/inc/tg_sdi.mk b/solenv/inc/tg_sdi.mk
index a515fc1ed13a..66b8c89850b8 100644
--- a/solenv/inc/tg_sdi.mk
+++ b/solenv/inc/tg_sdi.mk
@@ -29,15 +29,6 @@
# instructions for ???
# unroll begin
-.IF "$(HIDSID$(TNR)PARTICLE)"!=""
-$(HIDSID$(TNR)PARTICLE): $(SDI$(TNR)TARGET)
- @echo "Making: " $(@:f)
- @-$(RM) $@.$(ROUT).tmp $@
- @$(TYPE) $(MISC)/$(SDI$(TNR)NAME).sid | $(AWK) '$$1=="#define" { print $$2, $$3 }' > $@.$(ROUT).tmp
- @-$(RM) $@
- @$(RENAME) $@.$(ROUT).tmp $@
-.ENDIF # "$(HIDSID$(TNR)PARTICLE)"!=""
-
.IF "$(SDI$(TNR)TARGET)"!=""
$(SDI$(TNR)TARGET): $(SVSDI$(TNR)DEPEND) $(SDI$(TNR)NAME).sdi
@echo "Making: " $(@:f)
diff --git a/solenv/inc/tg_shl.mk b/solenv/inc/tg_shl.mk
index 30e12faeccad..cd02492d825a 100644
--- a/solenv/inc/tg_shl.mk
+++ b/solenv/inc/tg_shl.mk
@@ -362,7 +362,7 @@ $(SHL$(TNR)TARGETN) : \
$(SHL$(TNR)STDLIBS) \
$(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
$(SHL$(TNR)LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -386,7 +386,7 @@ $(SHL$(TNR)TARGETN) : \
$(SHL$(TNR)STDLIBS) \
$(SHL$(TNR)STDSHL) $(STDSHL$(TNR)) \
$(SHL$(TNR)LINKRES) \
- ) $(LINKOUTPUTFILTER)
+ )
# double check if target was really written... still making sense?
@@$(LS) $@
@echo linking $@.manifest ...
@@ -469,8 +469,10 @@ $(SHL$(TNR)TARGETN) : \
@+source $(MISC)/$(TARGET).$(@:b)_$(TNR).cmd
@$(PERL) $(SOLARENV)/bin/macosx-change-install-names.pl \
shl $(SHL$(TNR)RPATH) $@
+.IF "$(SHL$(TNR)CREATEJNILIB)"!=""
@echo "Making: " $(@:f).jnilib
@macosx-create-bundle $@
+.ENDIF # "$(SHL$(TNR)CREATEJNILIB)"!=""
.IF "$(UPDATER)"=="YES"
.IF "$(SHL$(TNR)NOCHECK)"==""
$(SOLARENV)/bin/checkdll.sh -L$(LB) -L$(SOLARLIBDIR) $(EXTRALIBPATHS$(TNR)) $(SHL$(TNR)TARGETN)
@@ -556,7 +558,6 @@ $(SHL$(TNR)TARGETN) : \
$(SHL$(TNR)STDLIBS:^"-l") \
$(SHL$(TNR)LINKRES) \
$(SHL$(TNR)STDSHL:^"-l") $(STDSHL$(TNR):^"-l") \
- $(LINKOUTPUTFILTER)
@$(LS) $@ >& $(NULLDEV)
.ENDIF # "$(USE_DEFFILE)"!=""
@@ -567,16 +568,6 @@ $(SHL$(TNR)TARGETN) : \
.ENDIF # "$(GUI)" == "OS2"
-
-.IF "$(TESTDIR)"!=""
-.IF "$(NO_TESTS)"==""
-
-ALLTAR : runtest_$(SHL$(TNR)TARGET)
-
-runtest_$(SHL$(TNR)TARGET) : $(SHL$(TNR)TARGETN)
- testshl $(SHL$(TNR)TARGETN) sce/$(SHL$(TNR)TARGET).sce -msg -skip
-.ENDIF # "$(NO_TESTS)"==""
-.ENDIF # "$(TESTDIR)"!=""
.ENDIF # "$(SHL$(TNR)TARGETN)"!=""
# unroll end
diff --git a/solenv/inc/tg_srs.mk b/solenv/inc/tg_srs.mk
index 4e70eb06b1b4..a919069cd3cd 100644
--- a/solenv/inc/tg_srs.mk
+++ b/solenv/inc/tg_srs.mk
@@ -29,22 +29,10 @@
# unroll begin
.IF "$(SRS$(TNR)NAME)"!=""
-.IF "$(BUILDHIDS)"!=""
-HID$(TNR)FILES=$(foreach,i,$(SRC$(TNR)FILES:f) $(SRS)/$(i:s/.src/.hid/))
-HIDSRS$(TNR)PARTICLE=$(subst,$(OUTPATH),$(COMMON_OUTDIR) $(SRS))/$(SRS$(TNR)NAME)_srs.hid
-$(HIDSRS$(TNR)PARTICLE) : $(HID$(TNR)FILES)
- @echo "Making: " $(@:f)
- @-$(RM) $@
- $(COMMAND_ECHO)$(TYPE) $(mktmp $(subst,/,/ $(HID$(TNR)FILES))) | xargs -s 1000 cat > $@.$(ROUT).tmp
- @$(RENAME) $@.$(ROUT).tmp $@
-
-ALLTAR : $(HIDSRS$(TNR)PARTICLE)
-
-.ENDIF # "$(BUILDHIDS)"!=""
$(MISC)/$(TARGET).$(SRS$(TNR)NAME).dprr: $(LOCALIZE_ME_DEST)
-$(MISC)/$(TARGET).$(SRS$(TNR)NAME).dprr: $(SRC$(TNR)FILES) $(HIDSRS$(TNR)PARTICLE) $(HID$(TNR)FILES)
+$(MISC)/$(TARGET).$(SRS$(TNR)NAME).dprr: $(SRC$(TNR)FILES)
@echo "Making: " $(@:f)
@@-$(RM) $(MISC)/$(TARGET).$(SRS$(TNR)NAME).dprr
$(COMMAND_ECHO)$(RSC) $(VERBOSITY) $(SRSDEFAULT) $(RSC_SRS_CHARSET) $(RSCFLAGS) -I$(RSCEXTINC) -I$(INCLOCPRJ) -I$(INCLOCAL) -I$(INC) -I$(INCCOM) $(RSCDEFS) $(RSCUPDVERDEF) -fp={$(SRS)/$(SRS$(TNR)NAME).srs} -fo=$@ -p=$(TARGET) $(SRC$(TNR)FILES)
diff --git a/solenv/inc/unitools.mk b/solenv/inc/unitools.mk
index 17c7c03a6c62..f54918b78b0c 100644
--- a/solenv/inc/unitools.mk
+++ b/solenv/inc/unitools.mk
@@ -127,6 +127,12 @@ GNUTAR*=gtar
DEREFERENCE=-L
.ELSE # "$(OS)"=="SOLARIS"
AWK*=awk
+# this is not true, as BSD does not default to a GNU cp, but BSD cp
+# so in dmake makefiles one should be restricted to use the subset
+# of features that both BSD and GNU make support.
+# as the GNU make build system requires GNUCOPY to really be a GNU copy
+# we work around that for now by not setting GNUCOPY in sdev300.ini
+# for fbsd for now, but for all other platforms it is set.
GNUCOPY*=cp
GNUPATCH*=patch
DEREFERENCE=-L
diff --git a/solenv/inc/unx.mk b/solenv/inc/unx.mk
index 5733e026f566..cecb6f319f40 100644
--- a/solenv/inc/unx.mk
+++ b/solenv/inc/unx.mk
@@ -203,6 +203,9 @@ DLLPOST!:=$(DLLPOST).$($(UNIXVERSIONNAMES)_MAJOR)
KDE_CFLAGS:=-I$(KDE_ROOT)/include -DQT_CLEAN_NAMESPACE
KDE_LIBS:=-lkdeui -lkdecore -lqt-mt
SOLARLIB+=-L$(KDE_ROOT)/lib
+.IF "$(OS)$(CPU)" == "LINUXX"
+SOLARLIB+=-L$(KDE_ROOT)/lib64
+.ENDIF # "$(OS)$(CPU)" == "LINUXX"
.ENDIF # "$(KDE_ROOT)"!=""
.ENDIF # "$(ENABLE_KDE)" != ""
diff --git a/solenv/inc/unxmacx.mk b/solenv/inc/unxmacx.mk
index 134395567966..99beaa797626 100644
--- a/solenv/inc/unxmacx.mk
+++ b/solenv/inc/unxmacx.mk
@@ -45,8 +45,9 @@ CDEFS+=-DGLIBC=2 -D_PTHREADS -D_REENTRANT -DNO_PTHREAD_PRIORITY $(PROCESSOR_DEFI
# unless you want to do runtime checks for 10.5 api, you also want to use the 10.4 sdk
# (safer/easier than dealing with the MAC_OS_X_VERSION_MAX_ALLOWED macro)
# http://developer.apple.com/technotes/tn2002/tn2064.html
-MACOSX_DEPLOYMENT_TARGET=10.4
-.EXPORT: MACOSX_DEPLOYMENT_TARGET
+# done in setsolar/configure now. left here for documentation
+#MACOSX_DEPLOYMENT_TARGET=10.4
+#.EXPORT: MACOSX_DEPLOYMENT_TARGET
CDEFS+=-DQUARTZ
EXTRA_CDEFS*=-isysroot /Developer/SDKs/MacOSX10.4u.sdk
.ENDIF
diff --git a/solenv/inc/version.hrc b/solenv/inc/version.hrc
index c098be0ccad8..344abbe07fad 100755
--- a/solenv/inc/version.hrc
+++ b/solenv/inc/version.hrc
@@ -25,21 +25,11 @@
*
*************************************************************************/
-#define VERSION 3
-#define SUBVERSION 3
+#include "versionlist.hrc"
+
//#define VERVARIANT 0 // never define this one, will be provided by build environment (BUILD_ID)
-// .0 + VER_CONCEPT
-// .100 + VER_ALPHA
-// .200 + VER_BETA
-// .300 + VER_GAMMA
-// .500 + VER_FINAL
-//#define VER_CONCEPT 0
-//#define VER_BETA 6
-#define VER_FINAL 0
-#define VER_DAY 1
-#define VER_MONTH 8
-#define VER_YEAR 2010
+#define VER_FINAL 0
#ifndef VER_FIRSTYEAR
#define VER_FIRSTYEAR VER_YEAR
diff --git a/solenv/inc/version.lst b/solenv/inc/version.lst
index ac49f6c6fcf6..200cdf53e924 100644..100755
--- a/solenv/inc/version.lst
+++ b/solenv/inc/version.lst
@@ -26,5 +26,9 @@
#*************************************************************************
OOOBASEVERSIONMAJOR=3
-OOOBASEVERSIONMINOR=3
+OOOBASEVERSIONMINOR=4
OOOBASEVERSIONMICRO=0
+
+OOOBASEVERSIONDAY=1
+OOOBASEVERSIONMONTH=10
+OOOBASEVERSIONYEAR=2010
diff --git a/solenv/inc/version_so.hrc b/solenv/inc/version_so.hrc
index b7e95397b091..2e4db98a2925 100755
--- a/solenv/inc/version_so.hrc
+++ b/solenv/inc/version_so.hrc
@@ -25,21 +25,11 @@
*
*************************************************************************/
-#define VERSION 3
-#define SUBVERSION 3
+#include "versionlist.hrc"
+
//#define VERVARIANT 0 // never define this one, will be provided by build environment (BUILD_ID)
-// .0 + VER_CONCEPT
-// .100 + VER_ALPHA
-// .200 + VER_BETA
-// .300 + VER_GAMMA
-// .500 + VER_FINAL
-//#define VER_CONCEPT 0
-//#define VER_BETA 6
-#define VER_FINAL 0
-#define VER_DAY 1
-#define VER_MONTH 8
-#define VER_YEAR 2010
+#define VER_FINAL 0
#ifndef VER_FIRSTYEAR
#define VER_FIRSTYEAR VER_YEAR
diff --git a/solenv/inc/versionlist.mk b/solenv/inc/versionlist.mk
index 31a255e48be1..672df7bd7602 100644..100755
--- a/solenv/inc/versionlist.mk
+++ b/solenv/inc/versionlist.mk
@@ -27,4 +27,4 @@
.INCLUDE: version.lst
-.EXPORT : OOOBASEVERSIONMAJOR OOOBASEVERSIONMINOR OOOBASEVERSIONMICRO
+.EXPORT : OOOBASEVERSIONMAJOR OOOBASEVERSIONMINOR OOOBASEVERSIONMICRO OOOBASEVERSIONDAY OOOBASEVERSIONMONTH OOOBASEVERSIONYEAR
diff --git a/solenv/inc/wntgcci.mk b/solenv/inc/wntgcci.mk
index 73f33998cc7b..531b4baef719 100755
--- a/solenv/inc/wntgcci.mk
+++ b/solenv/inc/wntgcci.mk
@@ -85,7 +85,7 @@ CDEFS+=-D_DLL
# -Wshadow does not work for C with nested uses of pthread_cleanup_push:
CFLAGSWARNCC=-Wall -Wextra -Wendif-labels
CFLAGSWARNCXX=$(CFLAGSWARNCC) -Wshadow -Wno-ctor-dtor-privacy \
- -Wno-non-virtual-dtor -Wno-uninitialized
+ -Wno-non-virtual-dtor
CFLAGSWALLCC=$(CFLAGSWARNCC)
CFLAGSWALLCXX=$(CFLAGSWARNCXX)
CFLAGSWERRCC=-Werror
@@ -127,7 +127,7 @@ LINKFLAGSDEBUG=-g
LINKFLAGSOPT=
.IF "$(MINGW_SHARED_GXXLIB)"=="YES" && "$(DYNAMIC_CRT)"!=""
-STDLIBCPP=-lstdc++_s
+STDLIBCPP=$(MINGW_SHARED_LIBSTDCPP)
.ELSE
STDLIBCPP=-lstdc++
.ENDIF
diff --git a/solenv/inc/wntmsc.mk b/solenv/inc/wntmsc.mk
index 2138405a6b9a..1276f773e336 100644..100755
--- a/solenv/inc/wntmsc.mk
+++ b/solenv/inc/wntmsc.mk
@@ -232,13 +232,12 @@ _VC_MANIFEST_BASENAME=__VC90
.ENDIF
.IF "$(CL_X64)" == ""
-LINK=link /MACHINE:IX86
+LINK=link /MACHINE:IX86 /IGNORE:4102 /IGNORE:4197
.ELSE
LINK=link /MACHINE:X64
.ENDIF
# do *not* add $(NOLOGO) to LINK or LINKFLAGS. Strangely, the wntmsci12 linker links fine then, but exits with
# a return value 1, which makes dmake think it failed
-LINKOUTPUTFILTER= $(PIPEERROR) $(GREP) -v "LNK4197:"
.IF "$(PRODUCT)"!="full"
.ELSE
LINKFLAGS=/MAP /OPT:NOREF
diff --git a/solenv/makefile.mk b/solenv/makefile.mk
index 31bed765ac7f..c4a2d0893d7c 100644..100755
--- a/solenv/makefile.mk
+++ b/solenv/makefile.mk
@@ -32,9 +32,14 @@ TARGET=init
# --- Settings ----------------------------------
.INCLUDE : settings.mk
.INCLUDE : target.mk
+.INCLUDE : versionlist.mk
-ALLTAR : comment
-
-comment:
- @echo just for sideeffects...
+ALLTAR : $(INCCOM)/versionlist.hrc
+$(INCCOM)/versionlist.hrc : ./inc/version.lst
+ $(COMMAND_ECHO)echo "#define VERSION $(OOOBASEVERSIONMAJOR)" > $@
+ $(COMMAND_ECHO)echo "#define SUBVERSION $(OOOBASEVERSIONMINOR)" >> $@
+ $(COMMAND_ECHO)echo "#define MICROVERSION $(OOOBASEVERSIONMICRO)" >> $@
+ $(COMMAND_ECHO)echo "#define VER_DAY $(OOOBASEVERSIONDAY)" >> $@
+ $(COMMAND_ECHO)echo "#define VER_MONTH $(OOOBASEVERSIONMONTH)" >> $@
+ $(COMMAND_ECHO)echo "#define VER_YEAR $(OOOBASEVERSIONYEAR)" >> $@
diff --git a/solenv/prj/d.lst b/solenv/prj/d.lst
index edbfc190c808..05ceea226515 100644..100755
--- a/solenv/prj/d.lst
+++ b/solenv/prj/d.lst
@@ -1,2 +1,4 @@
-mkdir: %_DEST%\bin%_EXT%
-..\inc\version.lst %_DEST%\bin%_EXT%\version.lst
+mkdir: %_DEST%\bin%_EXT%
+mkdir: %_DEST%\inc%_EXT%
+..\inc\version.lst %_DEST%\bin%_EXT%\version.lst
+..\%__SRC%\inc\versionlist.hrc %_DEST%\inc%_EXT%\versionlist.hrc
diff --git a/solenv/src/component.map b/solenv/src/component.map
index ac2c3750bfe0..62b8829a0f51 100755
--- a/solenv/src/component.map
+++ b/solenv/src/component.map
@@ -1,7 +1,6 @@
UDK_3_0_0 {
global:
component_getImplementationEnvironment;
- component_writeInfo;
component_getFactory;
local:
*;
diff --git a/solenv/src/reg-component.map b/solenv/src/reg-component.map
new file mode 100755
index 000000000000..ac2c3750bfe0
--- /dev/null
+++ b/solenv/src/reg-component.map
@@ -0,0 +1,8 @@
+UDK_3_0_0 {
+ global:
+ component_getImplementationEnvironment;
+ component_writeInfo;
+ component_getFactory;
+ local:
+ *;
+};
diff --git a/solenv/src/unloadablecomponent.map b/solenv/src/unloadablecomponent.map
index 30c5bb729ac7..2da0c5709c7b 100755
--- a/solenv/src/unloadablecomponent.map
+++ b/solenv/src/unloadablecomponent.map
@@ -1,7 +1,6 @@
UDK_3_0_0 {
global:
component_getImplementationEnvironment;
- component_writeInfo;
component_getFactory;
component_canUnload;
local: