diff options
author | Norbert Thiebaud <nthiebaud@gmail.com> | 2011-03-08 19:43:29 -0600 |
---|---|---|
committer | Norbert Thiebaud <nthiebaud@gmail.com> | 2011-03-08 19:43:29 -0600 |
commit | f0e5895d5baa04826d1884fc4720c6180f2eda04 (patch) | |
tree | d839e9131057f9d1271ec2578d1b370dcb89e032 /solenv | |
parent | 7572bcf0b17da4b37bf4ba834347196567ec3c37 (diff) | |
parent | 853a58836446858b75bf82916272e9fd27a7a892 (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')
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: |