summaryrefslogtreecommitdiff
path: root/solenv
diff options
context:
space:
mode:
Diffstat (limited to 'solenv')
-rwxr-xr-xsolenv/bin/checkdll.sh2
-rw-r--r--solenv/bin/macosx-change-install-names.pl20
-rw-r--r--solenv/bin/modules/installer/globals.pm7
-rw-r--r--solenv/bin/modules/installer/parameter.pm1
-rw-r--r--solenv/bin/modules/installer/systemactions.pm2
-rw-r--r--solenv/bin/modules/installer/windows/file.pm12
-rw-r--r--solenv/bin/modules/installer/windows/idtglobal.pm3
-rw-r--r--solenv/bin/modules/installer/windows/msp.pm197
-rw-r--r--solenv/bin/modules/installer/windows/property.pm6
-rw-r--r--solenv/bin/modules/installer/windows/registry.pm76
-rw-r--r--solenv/bin/modules/installer/worker.pm6
-rwxr-xr-xsolenv/bin/ooinstall26
-rw-r--r--solenv/gbuild/ComponentTarget.mk10
-rw-r--r--solenv/gbuild/Library.mk7
-rw-r--r--solenv/gbuild/LinkTarget.mk3
-rwxr-xr-x[-rw-r--r--]solenv/gbuild/TargetLocations.mk2
-rw-r--r--solenv/gbuild/WinResTarget.mk70
-rwxr-xr-xsolenv/gbuild/filter-showIncludes.pl62
-rw-r--r--solenv/gbuild/gbuild.mk1
-rw-r--r--solenv/gbuild/platform/macosx.mk4
-rw-r--r--solenv/gbuild/platform/solaris.mk13
-rw-r--r--solenv/gbuild/platform/unxgcc.mk4
-rw-r--r--solenv/gbuild/platform/windows.mk190
-rw-r--r--solenv/gbuild/platform/winmingw.mk69
-rw-r--r--solenv/inc/langlist.mk1
-rw-r--r--solenv/inc/minor.mk6
-rw-r--r--solenv/inc/settings.mk4
27 files changed, 670 insertions, 134 deletions
diff --git a/solenv/bin/checkdll.sh b/solenv/bin/checkdll.sh
index 42a6725750a4..aa281af5d353 100755
--- a/solenv/bin/checkdll.sh
+++ b/solenv/bin/checkdll.sh
@@ -42,7 +42,7 @@ if [ -x $checkdll ]; then
-L) shift; option=$1;;
--) break;;
esac
- case "${libpath+X}" in
+ case "${libpath:+X}" in
X) libpath=$libpath:$option;;
*) libpath=$option;;
esac
diff --git a/solenv/bin/macosx-change-install-names.pl b/solenv/bin/macosx-change-install-names.pl
index 52b2ffa343ec..7ac07d9f88b0 100644
--- a/solenv/bin/macosx-change-install-names.pl
+++ b/solenv/bin/macosx-change-install-names.pl
@@ -43,6 +43,7 @@ sub action($$$)
'shl/URELIB/URELIB' => '@loader_path',
'shl/OOO/URELIB' => '@loader_path/../ure-link/lib',
'shl/OOO/OOO' => '@loader_path',
+ 'shl/LOADER/LOADER' => '@loader_path',
'shl/OXT/URELIB' => '@executable_path/urelibs',
'shl/BOXT/URELIB' => '@executable_path/urelibs',
'shl/BOXT/OOO' => '@loader_path/../../../basis-link/program',
@@ -57,7 +58,7 @@ sub action($$$)
}
@ARGV == 3 || @ARGV >= 2 && $ARGV[0] eq "extshl" or die
- 'Usage: app|shl|extshl UREBIN|URELIB|OOO|SDK|BRAND|OXT|BOXT|NONE <filepath>*';
+ 'Usage: app|shl|extshl UREBIN|URELIB|OOO|SDK|BRAND|OXT|BOXT|NONE|LOADER <filepath>*';
$type = shift @ARGV;
$loc = shift @ARGV;
if ($type eq "SharedLibrary")
@@ -85,10 +86,21 @@ if ($type eq "extshl")
$change .= " -change $1 " . action($type, $loc, $loc) . "/$2";
$inames{$file} = $2;
}
- foreach $file (@ARGV)
+ if( $loc eq "LOADER" )
{
- my $call = "install_name_tool$change -id \@__________________________________________________$loc/$inames{$file} $file";
- system($call) == 0 or die "cannot $call";
+ foreach $file (@ARGV)
+ {
+ my $call = "install_name_tool$change -id \@loader_path/$inames{$file} $file";
+ system($call) == 0 or die "cannot $call";
+ }
+ }
+ else
+ {
+ foreach $file (@ARGV)
+ {
+ my $call = "install_name_tool$change -id \@__________________________________________________$loc/$inames{$file} $file";
+ system($call) == 0 or die "cannot $call";
+ }
}
}
foreach $file (@ARGV)
diff --git a/solenv/bin/modules/installer/globals.pm b/solenv/bin/modules/installer/globals.pm
index 2f7249c24f47..ace634a3ac5e 100644
--- a/solenv/bin/modules/installer/globals.pm
+++ b/solenv/bin/modules/installer/globals.pm
@@ -94,7 +94,8 @@ BEGIN
"fur",
"ny",
"so",
- "kab"
+ "kab",
+ "tk"
);
@items_at_modules = ("Files", "Dirs", "Unixlinks");
@asianlanguages = ("ja", "ko", "zh-CN", "zh-TW");
@@ -385,6 +386,10 @@ BEGIN
%allcomponents_in_this_database = ();
%allshortcomponents = ();
%alluniquedirectorynames = ();
+ %allregistrycomponents_ = ();
+ %allregistrycomponents_in_this_database_ = ();
+ %allshortregistrycomponents = ();
+ %allregistryidentifier = ();
$installlocationdirectory = "";
$installlocationdirectoryset = 0;
diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm
index 8c844d55609c..9c5ec8c24394 100644
--- a/solenv/bin/modules/installer/parameter.pm
+++ b/solenv/bin/modules/installer/parameter.pm
@@ -397,7 +397,6 @@ sub setglobalvariables
if ($installer::globals::unpackpath eq "") # unpackpath not set
{
$installer::globals::unpackpath = cwd();
- if ( $installer::globals::iswin ) { $installer::globals::unpackpath =~ s/\//\\/g; }
}
if ( $installer::globals::localunpackdir ne "" ) { $installer::globals::unpackpath = $installer::globals::localunpackdir; }
diff --git a/solenv/bin/modules/installer/systemactions.pm b/solenv/bin/modules/installer/systemactions.pm
index b96b1268a716..09b4cb1882a3 100644
--- a/solenv/bin/modules/installer/systemactions.pm
+++ b/solenv/bin/modules/installer/systemactions.pm
@@ -859,7 +859,7 @@ sub find_file_with_file_extension
push(@installer::globals::logfileinfo, $infoline);
opendir(DIR, $dir);
- @sourcefiles = readdir(DIR);
+ @sourcefiles = sort readdir(DIR);
closedir(DIR);
my $onefile;
diff --git a/solenv/bin/modules/installer/windows/file.pm b/solenv/bin/modules/installer/windows/file.pm
index 059c394278d6..c4315b43aceb 100644
--- a/solenv/bin/modules/installer/windows/file.pm
+++ b/solenv/bin/modules/installer/windows/file.pm
@@ -282,7 +282,7 @@ sub get_file_component_name
}
else
{
- if ( length($componentname) > 72 )
+ if ( length($componentname) > 60 )
{
# Using md5sum needs much time
# chomp(my $shorter = `echo $componentname | md5sum | sed -e "s/ .*//g"`);
@@ -674,7 +674,15 @@ sub get_language_for_file
if ( $fileref->{'specificlanguage'} ) { $language = $fileref->{'specificlanguage'}; }
- if (!($language eq ""))
+ if ( $language eq "" )
+ {
+ $language = 0; # language independent
+ # If this is not a font, the return value should be "0" (Check ICE 60)
+ my $styles = "";
+ if ( $fileref->{'Styles'} ) { $styles = $fileref->{'Styles'}; }
+ if ( $styles =~ /\bFONT\b/ ) { $language = ""; }
+ }
+ else
{
$language = installer::windows::language::get_windows_language($language);
}
diff --git a/solenv/bin/modules/installer/windows/idtglobal.pm b/solenv/bin/modules/installer/windows/idtglobal.pm
index 333df0e8ea08..94b5dcc62399 100644
--- a/solenv/bin/modules/installer/windows/idtglobal.pm
+++ b/solenv/bin/modules/installer/windows/idtglobal.pm
@@ -49,11 +49,14 @@ sub shorten_feature_gid
my ($stringref) = @_;
$$stringref =~ s/gid_Module_/gm_/;
+ $$stringref =~ s/_Extension_/_ex_/;
$$stringref =~ s/_Root_/_r_/;
$$stringref =~ s/_Prg_/_p_/;
$$stringref =~ s/_Optional_/_o_/;
+ $$stringref =~ s/_Tools_/_tl_/;
$$stringref =~ s/_Wrt_Flt_/_w_f_/;
$$stringref =~ s/_Javafilter_/_jf_/;
+ $$stringref =~ s/_Productivity_/_pr_/;
}
############################################
diff --git a/solenv/bin/modules/installer/windows/msp.pm b/solenv/bin/modules/installer/windows/msp.pm
index 85945a05499d..7593c96a6ea8 100644
--- a/solenv/bin/modules/installer/windows/msp.pm
+++ b/solenv/bin/modules/installer/windows/msp.pm
@@ -27,6 +27,7 @@
package installer::windows::msp;
+use File::Copy;
use installer::control;
use installer::converter;
use installer::exiter;
@@ -85,6 +86,196 @@ sub install_installation_sets
}
#################################################################################
+# Collecting the destinations of all files with flag PATCH in a hash.
+#################################################################################
+
+sub collect_patch_file_destinations
+{
+ my ( $filesarray ) = @_;
+
+ my %patchfiledestinations = ();
+ my %nopatchfiledestinations = ();
+ my $patchcounter = 0;
+ my $nopatchcounter = 0;
+
+ for ( my $i = 0; $i <= $#{$filesarray}; $i++ )
+ {
+ my $onefile = ${$filesarray}[$i];
+ my $styles = "";
+
+ if ( $onefile->{'Styles'} ) { $styles = $onefile->{'Styles'} };
+
+ if ( $styles =~ /\bPATCH\b/ )
+ {
+ $patchfiledestinations{$onefile->{'destination'}} = 1;
+ $patchcounter++;
+ }
+ else
+ {
+ $nopatchfiledestinations{$onefile->{'destination'}} = 1;
+ $nopatchcounter++;
+ }
+ }
+
+ return (\%patchfiledestinations, \%nopatchfiledestinations, $patchcounter, $nopatchcounter);
+}
+
+#################################################################################
+# Returning the first path segment of a path
+#################################################################################
+
+sub get_first_path_segment
+{
+ my ( $path ) = @_;
+
+ my $firstsegment = "";
+ my $remainder = $path;
+
+ if ( $path =~ /^\s*(.*?)[\/\\](.*)\s*$/ )
+ {
+ $firstsegment = $1;
+ $remainder = $2;
+ }
+
+ return ($firstsegment, $remainder);
+}
+
+#################################################################################
+# Finding the flexible path in the destinations, that are saved in
+# the hash $nopatchfiledestinations.
+#################################################################################
+
+sub prepare_path_in_nopatchfilehash
+{
+ my ($nopatchfiledestinations, $newpath) = @_;
+
+ my $infoline = "";
+ my $flexiblepath = "";
+ my $found = 0;
+ my %checked_destinations = ();
+
+ foreach my $onedestination ( keys %{$nopatchfiledestinations} )
+ {
+ $flexiblepath = "";
+ $found = 0;
+
+ my $found_first_segement = 1;
+ my $firstsegement = "";
+ my $fixedpath = $onedestination;
+ my $testfile = $newpath . $installer::globals::separator . $fixedpath;
+
+ while (( ! -f $testfile ) && ( $found_first_segement ))
+ {
+ $firstsegement = "";
+ ( $firstsegement, $fixedpath ) = get_first_path_segment($fixedpath);
+
+ if ( $firstsegement ne "" )
+ {
+ $found_first_segement = 1;
+ $flexiblepath = $flexiblepath . $firstsegement . $installer::globals::separator;
+ }
+ else
+ {
+ $found_first_segement = 0;
+ }
+
+ $testfile = $newpath . $installer::globals::separator . $fixedpath;
+ }
+
+ if ( -f $testfile ) { $found = 1; }
+
+ if ( $found ) { last; }
+ }
+
+ if ( ! $found ) { installer::exiter::exit_program("ERROR: Could not determine flexible destination path for msp patch creation!", "prepare_path_in_nopatchfilehash"); }
+
+ $infoline = "Setting flexible path for msp creation: $flexiblepath\n";
+ push( @installer::globals::logfileinfo, $infoline);
+
+ foreach my $onedestination ( keys %{$nopatchfiledestinations} )
+ {
+ $onedestination =~ s/^\s*\Q$flexiblepath\E//;
+ $checked_destinations{$onedestination} = 1;
+ }
+
+ return \%checked_destinations;
+}
+
+#################################################################################
+# Synchronizing the two installed products in that way, that only
+# files with flag PATCH are different.
+#################################################################################
+
+sub synchronize_installation_sets
+{
+ my ($olddatabase, $newdatabase, $filesarray) = @_;
+
+ my $infoline = "\nSynchronizing installed products because of PATCH flag\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "Old product: $olddatabase\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ $infoline = "New product: $newdatabase\n";
+ push( @installer::globals::logfileinfo, $infoline);
+
+ my ( $patchfiledestinations, $nopatchfiledestinations, $patchfilecounter, $nopatchfilecounter ) = collect_patch_file_destinations($filesarray);
+
+ $infoline = "Number of files with PATCH flag: $patchfilecounter\n";
+ push( @installer::globals::logfileinfo, $infoline);
+
+ $infoline = "Number of files without PATCH flag: $nopatchfilecounter\n";
+ push( @installer::globals::logfileinfo, $infoline);
+
+ foreach my $localfile ( sort keys %{$patchfiledestinations} )
+ {
+ $infoline = "\tPATCH file: $localfile\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
+
+ my $oldpath = $olddatabase;
+ if ( $^O =~ /cygwin/i ) { $oldpath =~ s/\\/\//g; }
+ installer::pathanalyzer::get_path_from_fullqualifiedname(\$oldpath);
+ $oldpath =~ s/\\\s*$//;
+ $oldpath =~ s/\/\s*$//;
+
+ my $newpath = $newdatabase;
+ if ( $^O =~ /cygwin/i ) { $newpath =~ s/\\/\//g; }
+ installer::pathanalyzer::get_path_from_fullqualifiedname(\$newpath);
+ $newpath =~ s/\\\s*$//;
+ $newpath =~ s/\/\s*$//;
+
+ # The destination path is not correct. destinations in the hash contain
+ # the flexible installation path, that is not part in the administrative installation
+ $nopatchfiledestinations = prepare_path_in_nopatchfilehash($nopatchfiledestinations, $newpath);
+
+ foreach my $onedestination ( keys %{$nopatchfiledestinations} )
+ {
+ my $source = $oldpath . $installer::globals::separator . $onedestination;
+ my $dest = $newpath . $installer::globals::separator . $onedestination;
+
+ if ( -f $source )
+ {
+ if ( -f $dest )
+ {
+ my $copyreturn = copy($source, $dest);
+ # installer::systemactions::copy_one_file($source, $dest);
+ # $infoline = "Synchronizing file: $source to $dest\n";
+ # push( @installer::globals::logfileinfo, $infoline);
+ }
+ else
+ {
+ $infoline = "Not synchronizing. Destination file \"$dest\" does not exist.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
+ }
+ else
+ {
+ $infoline = "Not synchronizing. Source file \"$source\" does not exist.\n";
+ push( @installer::globals::logfileinfo, $infoline);
+ }
+ }
+}
+
+#################################################################################
# Extracting all tables from a pcp file
#################################################################################
@@ -1197,6 +1388,12 @@ sub create_msp_patch
installer::logger::print_message( "... installing products ...\n" );
my ($olddatabase, $newdatabase) = install_installation_sets($installationdir);
+ installer::logger::include_timestamp_into_logfile("\nPerformance Info: Starting synchronization of installation sets");
+
+ # Synchronizing installed products, allowing only different files with PATCH flag
+ installer::logger::print_message( "... synchronizing installation sets ...\n" );
+ synchronize_installation_sets($olddatabase, $newdatabase, $filesarray);
+
installer::logger::include_timestamp_into_logfile("\nPerformance Info: Starting pcp file creation");
# Create pcp file
diff --git a/solenv/bin/modules/installer/windows/property.pm b/solenv/bin/modules/installer/windows/property.pm
index 29e8b4d57b00..5cfa674dd7c0 100644
--- a/solenv/bin/modules/installer/windows/property.pm
+++ b/solenv/bin/modules/installer/windows/property.pm
@@ -307,6 +307,12 @@ sub set_important_properties
push(@{$propertyfile}, $onepropertyline);
}
+ if ( $allvariables->{'EXCLUDE_FROM_REBASE'} )
+ {
+ my $onepropertyline = "EXCLUDE_FROM_REBASE" . "\t" . $allvariables->{'EXCLUDE_FROM_REBASE'} . "\n";
+ push(@{$propertyfile}, $onepropertyline);
+ }
+
if ( $allvariables->{'PREREQUIREDPATCH'} )
{
my $onepropertyline = "PREREQUIREDPATCH" . "\t" . $allvariables->{'PREREQUIREDPATCH'} . "\n";
diff --git a/solenv/bin/modules/installer/windows/registry.pm b/solenv/bin/modules/installer/windows/registry.pm
index bc907d704f50..ad036865ebc3 100644
--- a/solenv/bin/modules/installer/windows/registry.pm
+++ b/solenv/bin/modules/installer/windows/registry.pm
@@ -61,12 +61,13 @@ sub get_registry_component_name
# Attention: Maximum length for the componentname is 72
+ # identifying this component as registryitem component
+ $componentname = "registry_" . $componentname;
+
$componentname =~ s/gid_module_/g_m_/g;
$componentname =~ s/_optional_/_o_/g;
$componentname =~ s/_javafilter_/_jf_/g;
- $componentname = $componentname . "_registry"; # identifying this component as registryitem component
-
# This componentname must be more specific
my $addon = "_";
if ( $allvariables->{'PRODUCTNAME'} ) { $addon = $addon . $allvariables->{'PRODUCTNAME'}; }
@@ -96,11 +97,74 @@ sub get_registry_component_name
elsif (( $styles =~ /\bHELPPACK\b/ ) && ( $installer::globals::helppack )) { $componentname = $componentname . "_help"; }
if ( $styles =~ /\bALWAYS_REQUIRED\b/ ) { $componentname = $componentname . "_forced"; }
+ # Attention: Maximum length for the componentname is 72
+ # %installer::globals::allregistrycomponents_in_this_database_ : resetted for each database
+ # %installer::globals::allregistrycomponents_ : 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::allregistrycomponents_{$fullname}) ) && ( ! exists($installer::globals::allregistrycomponents_in_this_database_{$fullname}) ))
+ {
+ # This is not allowed: One component cannot be installed with different packages.
+ installer::exiter::exit_program("ERROR: Windows registry component \"$fullname\" is already included into another package. This is not allowed.", "get_registry_component_name");
+ }
+
+ if ( exists($installer::globals::allregistrycomponents_{$fullname}) )
+ {
+ $componentname = $installer::globals::allregistrycomponents_{$fullname};
+ }
+ else
+ {
+ if ( length($componentname) > 60 )
+ {
+ $componentname = generate_new_short_registrycomponentname($componentname); # This has to be unique for the complete product, not only one package
+ }
+
+ $installer::globals::allregistrycomponents_{$fullname} = $componentname;
+ $installer::globals::allregistrycomponents_in_this_database_{$fullname} = 1;
+ }
+
if ( $isrootmodule ) { $installer::globals::registryrootcomponent = $componentname; }
return $componentname;
}
+#########################################################
+# 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::allshortregistrycomponents
+# after a package was created.
+#########################################################
+
+sub generate_new_short_registrycomponentname
+{
+ 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::allshortregistrycomponents{$shortcomponentname}) )
+ {
+ $counter++;
+ $shortcomponentname = $startversion . $counter;
+ }
+
+ $installer::globals::allshortregistrycomponents{$shortcomponentname} = 1;
+
+ return $shortcomponentname;
+}
+
##############################################################
# Returning identifier for registry table.
##############################################################
@@ -122,8 +186,16 @@ sub get_registry_identifier
$identifier =~ s/_clsid_/_c_/;
$identifier =~ s/_currentversion_/_cv_/;
$identifier =~ s/_microsoft_/_ms_/;
+ $identifier =~ s/_manufacturer_/_mf_/;
+ $identifier =~ s/_productname_/_pn_/;
+ $identifier =~ s/_productversion_/_pv_/;
$identifier =~ s/_staroffice_/_so_/;
+ $identifier =~ s/_software_/_sw_/;
+ $identifier =~ s/_capabilities_/_cap_/;
$identifier =~ s/_classpath_/_cp_/;
+ $identifier =~ s/_extension_/_ex_/;
+ $identifier =~ s/_fileassociations_/_fa_/;
+ $identifier =~ s/_propertysheethandlers_/_psh_/;
$identifier =~ s/__/_/g;
# Saving this in the registry collector
diff --git a/solenv/bin/modules/installer/worker.pm b/solenv/bin/modules/installer/worker.pm
index c50813f4ee27..ad4ac9d47de8 100644
--- a/solenv/bin/modules/installer/worker.pm
+++ b/solenv/bin/modules/installer/worker.pm
@@ -547,7 +547,7 @@ sub clean_jds_temp_dirs
###########################################################
# Setting one language in the language independent
-# array of include pathes with $(LANG)
+# array of include paths with $(LANG)
###########################################################
sub get_language_specific_include_pathes
@@ -2314,7 +2314,7 @@ sub add_variables_from_inc_to_hashref
}
##############################################
-# Collecting all files from include pathes
+# Collecting all files from include paths
##############################################
sub collect_all_files_from_includepathes
@@ -2322,7 +2322,7 @@ sub collect_all_files_from_includepathes
my ($patharrayref) = @_;
installer::logger::globallog("Reading all directories: Start");
- installer::logger::print_message( "... reading include pathes ...\n" );
+ installer::logger::print_message( "... reading include paths ...\n" );
# empty the global
@installer::globals::allincludepathes =();
diff --git a/solenv/bin/ooinstall b/solenv/bin/ooinstall
index b080598c91ed..c4f44b4d713b 100755
--- a/solenv/bin/ooinstall
+++ b/solenv/bin/ooinstall
@@ -13,7 +13,13 @@ use Cwd;
$path = '';
$do_link = 0;
+$is_windows = 0;
my $tmp_dir;
+
+if ($ENV{GUI} eq 'WNT') {
+ $is_windows = 1;
+}
+
if( defined($ENV{TMPDIR}) ) {
$tmp_dir = $ENV{TMPDIR};
} elsif( defined($ENV{TMP}) ) {
@@ -87,9 +93,9 @@ else {
$langs = join (",", @larr);
$destdir='';
-if ( defined $ENV{OODESTDIR} &&
- $ENV{OODESTDIR} ne "" ) {
- $destdir = "-destdir \"$ENV{OODESTDIR}\"";
+if ( defined $ENV{DESTDIR} &&
+ $ENV{DESTDIR} ne "" ) {
+ $destdir = "-destdir \"$ENV{DESTDIR}\"";
}
$strip='';
@@ -98,12 +104,18 @@ if ( defined $ENV{DISABLE_STRIP} &&
$strip = "-dontstrip";
}
-print "Running OOo installer\n";
+$msi='';
+if ($is_windows) {
+ $msi = "-msitemplate $ENV{SRC_ROOT}/instsetoo_native/$ENV{INPATH}/misc/openoffice/msi_templates " .
+ "-msilanguage $ENV{SRC_ROOT}/instsetoo_native/$ENV{INPATH}/misc/win_ulffiles";
+}
+
+print "Running LibreOffice installer\n";
system ("cd $ENV{SRC_ROOT}/instsetoo_native/util ; " .
"perl -w $ENV{SOLARENV}/bin/make_installer.pl " .
"-f openoffice.lst -l $langs -p LibreOffice " .
"-u $tmp_dir " .
- "-buildid $BUILD $destdir $strip " .
+ "-buildid $BUILD $destdir $strip $msi " .
"-simple $path") && die "Failed to install: $!";
if ($ENV{BUILD_TYPE} =~ m/ODK/) {
@@ -112,11 +124,11 @@ if ($ENV{BUILD_TYPE} =~ m/ODK/) {
"perl -w $ENV{SOLARENV}/bin/make_installer.pl " .
"-f openoffice.lst -l en-US -p LibreOffice_SDK " .
"-u $tmp_dir " .
- "-buildid $BUILD $destdir $strip " .
+ "-buildid $BUILD $destdir $strip $msi" .
"-simple $path") && die "Failed to install: $!";
}
print "Installer finished\n";
-if ($do_link) {
+if ($do_link && !$is_windows) {
`$ENV{SOLARENV}/bin/linkoo $path $ENV{SRC_ROOT}`;
}
diff --git a/solenv/gbuild/ComponentTarget.mk b/solenv/gbuild/ComponentTarget.mk
index 504bd5a64930..7b76fd39df84 100644
--- a/solenv/gbuild/ComponentTarget.mk
+++ b/solenv/gbuild/ComponentTarget.mk
@@ -53,16 +53,16 @@ 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.))
+ $(eval $(call gb_Outpt_error,Unable to find component file $(call gb_ComponentTarget_get_source,,$*) in the repositories: $(gb_ComponentTarget_REPOS) or xsltproc 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)))
+$(call gb_ComponentTarget_get_target,$(4)) : LIBFILENAME := $(3)
+$(call gb_ComponentTarget_get_target,$(4)) : COMPONENTPREFIX := $(2)
+$(call gb_ComponentTarget_get_outdir_target,$(1)) : $(call gb_ComponentTarget_get_target,$(4))
+$(call gb_Deliver_add_deliverable,$(call gb_ComponentTarget_get_outdir_target,$(1)),$(call gb_ComponentTarget_get_target,$(4)))
endef
diff --git a/solenv/gbuild/Library.mk b/solenv/gbuild/Library.mk
index 47640bdf0255..7eafe5b93e68 100644
--- a/solenv/gbuild/Library.mk
+++ b/solenv/gbuild/Library.mk
@@ -60,6 +60,7 @@ $$(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)))
+$(call gb_Library_add_default_nativeres,$(1),default)
endef
@@ -79,9 +80,9 @@ $(call gb_Deliver_add_deliverable,$(call gb_Library_get_target,$(1)),$(call gb_L
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))
+$(call gb_ComponentTarget_ComponentTarget,$(or $(strip $(3)),$(strip $(2))),$(call gb_Library__get_componentprefix,$(1)),$(call gb_Library_get_runtime_filename,$(1)),$(2))
+$(call gb_Library_get_target,$(1)) : $(call gb_ComponentTarget_get_outdir_target,$(or $(strip $(3)),$(strip $(2))))
+$(call gb_Library_get_clean_target,$(1)) : $(call gb_ComponentTarget_get_clean_target,$(or $(strip $(3)),$(strip $(2))))
endef
diff --git a/solenv/gbuild/LinkTarget.mk b/solenv/gbuild/LinkTarget.mk
index dfbbb916da71..3584fd35118f 100644
--- a/solenv/gbuild/LinkTarget.mk
+++ b/solenv/gbuild/LinkTarget.mk
@@ -453,6 +453,7 @@ $(call gb_LinkTarget_get_target,$(1)) : PCHOBJS :=
$(call gb_LinkTarget_get_headers_target,$(1)) \
$(call gb_LinkTarget_get_target,$(1)) : PDBFILE :=
$(call gb_LinkTarget_get_target,$(1)) : EXTRAOBJECTLISTS :=
+$(call gb_LinkTarget_get_target,$(1)) : NATIVERES :=
ifeq ($(gb_FULLDEPS),$(true))
ifneq ($(wildcard $(call gb_LinkTarget_get_dep_target,$(1))),)
@@ -694,6 +695,7 @@ endef
define gb_LinkTarget_add_linktarget_objects
$(call gb_LinkTarget_get_target,$(1)) : $(foreach linktarget,$(2),$(call gb_LinkTarget_get_target,$(linktarget)))
+$(info gb_LinkTarget_add_linktarget_objects,$(1),$(2))
$(call gb_LinkTarget_get_target,$(1)) : EXTRAOBJECTLISTS += $(foreach linktarget,$(2),$(call gb_LinkTarget_get_objects_list,$(linktarget)))
endef
@@ -703,6 +705,7 @@ 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 import objects library/libraries $$(filter-out $(gb_Library_KNOWNLIBS),$(2)). Libraries must be registered in Repository.mk))
endif
+$(info gb_LinkTarget_add_library_objects,$(1),$(2))
$(call gb_LinkTarget_add_linktarget_objects,$(1),$(foreach lib,$(2),$(call gb_Library_get_linktargetname,$(lib))))
endef
diff --git a/solenv/gbuild/TargetLocations.mk b/solenv/gbuild/TargetLocations.mk
index f2c7320452df..40ccb305ae7f 100644..100755
--- a/solenv/gbuild/TargetLocations.mk
+++ b/solenv/gbuild/TargetLocations.mk
@@ -92,6 +92,7 @@ gb_SrsPartTarget_get_target = $(WORKDIR)/SrsPartTarget/$(1)
gb_SrsTarget_get_target = $(WORKDIR)/SrsTarget/$(1).srs
gb_SrsTemplatePartTarget_get_target = $(WORKDIR)/inc/$(firstword $(subst /, ,$(1)))/$(subst _tmpl,,$(notdir $(1)))
gb_SrsTemplateTarget_get_target = $(WORKDIR)/SrsTemplateTarget/$(1)
+gb_WinResTarget_get_target = $(WORKDIR)/WinResTarget/$(1)$(gb_WinResTarget_POSTFIX)
define gb_Library_get_external_headers_target
$(patsubst $(1):%,$(WORKDIR)/ExternalHeaders/Library/%,$(filter $(1):%,$(gb_Library_FILENAMES)))
@@ -116,6 +117,7 @@ $(eval $(call gb_Helper_make_clean_targets,\
JunitTest \
LinkTarget \
Module \
+ WinResTarget \
NoexPrecompiledHeader \
PackagePart \
PrecompiledHeader \
diff --git a/solenv/gbuild/WinResTarget.mk b/solenv/gbuild/WinResTarget.mk
new file mode 100644
index 000000000000..af768ff2c596
--- /dev/null
+++ b/solenv/gbuild/WinResTarget.mk
@@ -0,0 +1,70 @@
+
+# WinResTarget class
+
+gb_WinResTarget_DEFAULTDEFS := $(gb_RCDEFS)
+
+define gb_WinResTarget_WinResTarget
+$(call gb_WinResTarget_WinResTarget_init,$(1))
+$$(eval $$(call gb_Module_register_target,$(call gb_WinResTarget_get_target,$(1)),$(call gb_WinResTarget_get_clean_target,$(1))))
+
+endef
+
+define gb_WinResTarget_WinResTarget_init
+$(call gb_WinResTarget_get_target,$(1)) : DEFS := $(gb_WinResTarget_DEFAULTDEFS)
+$(call gb_WinResTarget_get_target,$(1)) : INCLUDE := $(SOLARINC)
+$(call gb_WinResTarget_get_clean_target,$(1)) : RCFILE :=
+$(call gb_WinResTarget_get_target,$(1)) : RCFILE :=
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_WinResTarget_get_target,$(1)) : $(call gb_WinResTarget_get_dep_target,$(1))
+ifneq ($(wildcard $(call gb_WinResTarget_get_dep_target,$(1))),)
+include $(call gb_WinResTarget_get_dep_target,$(1))
+else
+$(firstword $(MAKEFILE_LIST)) : $(call gb_WinResTarget_get_dep_target,$(1))
+endif
+$(call gb_WinResTarget_get_dep_target,$(1)) : DEFS := $$(gb_WinResTarget_DEFAULTDEFS)
+$(call gb_WinResTarget_get_dep_target,$(1)) : INCLUDE := $$(gb_WinResTarget_INCLUDE)
+$(call gb_WinResTarget_get_dep_target,$(1)) : RCFILE :=
+endif
+
+endef
+
+ifeq ($(gb_FULLDEPS),$(true))
+$(call gb_WinResTarget_get_dep_target,%) : $(gb_Helper_MISCDUMMY)
+ mkdir -p $(dir $@) && \
+ echo '$(call gb_WinResTarget_get_target,$*) : $$(gb_Helper_PHONY)' > $@
+endif
+
+
+$(call gb_WinResTarget_get_target,%) :
+ $(call gb_Output_announce,$*,$(true),RES,1)
+ $(call gb_WinResTarget__command_dep,$*,$<)
+ $(call gb_Helper_abbreviate_dirs,\
+ mkdir -p $(dir $@))
+ $(call gb_WinResTarget__command,$@)
+
+$(call gb_WinResTarget_get_clean_target,%) :
+ $(call gb_Helper_abbreviate_dirs,\
+ rm -f $(call gb_WinResTarget_get_target,$*))
+
+define gb_WinResTarget_set_defs
+$(call gb_WinResTarget_get_target,$(1)) : DEFS := $(2)
+$(call gb_WinResTarget_get_dep_target,$(1)) : DEFS := $(2)
+
+endef
+
+define gb_WinResTarget_set_include
+$(call gb_WinResTarget_get_target,$(1)) : INCLUDE := $(2)
+
+endef
+
+define gb_WinResTarget_add_file
+$(call gb_WinResTarget_get_clean_target,$(1)) : RCFILE=$(gb_Helper_SRCDIR_NATIVE)/$(2).rc
+$(call gb_WinResTarget_get_target,$(1)) : RCFILE=$(foreach file,$(gb_REPOS),$(realpath $(file)/$(strip $(2)).rc))
+$(call gb_WinResTarget_get_target,$(1)) : $(foreach file,$(gb_REPOS),$(realpath $(file)/$(strip $(2)).rc))
+
+endef
+
+define gb_WinResTarget_add_dependency
+$(call gb_WinResTarget_get_target,$(1)) : $(foreach file,$(2),$(foreach repo,$(gb_REPOS),$(realpath $(repo)/$(strip $(file)))))
+
+endef
diff --git a/solenv/gbuild/filter-showIncludes.pl b/solenv/gbuild/filter-showIncludes.pl
new file mode 100755
index 000000000000..f72a9eb07fd8
--- /dev/null
+++ b/solenv/gbuild/filter-showIncludes.pl
@@ -0,0 +1,62 @@
+#!/usr/bin/env perl
+#
+# filter-showIncludes.pl depfile.d objfile.o orginal.cxx
+#
+# Create dependency information from the output of cl.exe's showInclude. It
+# needs additional information - the output name to which to write, objfile
+# that depends on the includes, and the original file name.
+#
+# It also consolidates the file names to a canonical form, and filters out
+# duplicates.
+#
+# LGPL v3 / GPL v3 / MPL 1.1
+#
+# Original author: Jan Holesovsky <kendy@suse.cz>
+
+my $outfile = $ARGV[0];
+my $objfile = $ARGV[1];
+my $srcfile = $ARGV[2];
+if ( !defined $outfile || !defined $objfile || !defined $srcfile ) {
+ die "Not enough parameters to create dependencies.";
+}
+
+my $showincludes_prefix = $ENV{'SHOWINCLUDES_PREFIX'};
+if ( !defined( $showincludes_prefix ) || $showincludes_prefix eq "" ) {
+ $showincludes_prefix = 'Note: including file:';
+}
+
+open( OUT, "> $outfile" ) or die "Cannot open $outfile for writing.";
+print OUT "$objfile: \\\n $srcfile";
+
+my %seen;
+my $first_line = 1;
+while ( <STDIN> ) {
+ if ( /^$showincludes_prefix/ ) {
+ s/^$showincludes_prefix\s*//;
+ s/\r$//;
+
+ chomp;
+ s/\\/\//g;
+
+ # X: -> /cygdrive/x/
+ s/^(.):/\/cygdrive\/\l\1/;
+
+ s/ /\\ /g;
+
+ if ( !defined $seen{$_} ) {
+ $seen{$_} = 1;
+ print OUT " \\\n $_";
+ }
+ }
+ else {
+ # skip the first line, it always just duplicates what is being
+ # compiled
+ print unless ( $first_line );
+ }
+ $first_line = 0;
+}
+
+print OUT "\n";
+close( OUT ) or die "Cannot close $outfile.";
+
+# vim: shiftwidth=4 softtabstop=4 expandtab:
diff --git a/solenv/gbuild/gbuild.mk b/solenv/gbuild/gbuild.mk
index 4c20c8d77d11..9943b334903a 100644
--- a/solenv/gbuild/gbuild.mk
+++ b/solenv/gbuild/gbuild.mk
@@ -264,6 +264,7 @@ $(eval $(call gb_Deliver_init))
include $(foreach class, \
ComponentTarget \
AllLangResTarget \
+ WinResTarget \
LinkTarget \
Library \
StaticLibrary \
diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk
index b016a95fdc0f..ae57972d814d 100644
--- a/solenv/gbuild/platform/macosx.mk
+++ b/solenv/gbuild/platform/macosx.mk
@@ -29,7 +29,7 @@ GUI := UNX
COM := GCC
# Darwin mktemp -t expects a prefix, not a pattern
-gb_MKTEMP := /usr/bin/mktemp -t gbuild.
+gb_MKTEMP ?= /usr/bin/mktemp -t gbuild.
gb_CC := cc
gb_CXX := g++
@@ -246,7 +246,7 @@ 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)
+gb_LinkTarget_OBJCXXFLAGS := $(gb_CXXFLAGS) $(gb_CXXFLAGS_WERROR) $(gb_OBJCXXFLAGS) $(gb_COMPILEROPTFLAGS)
gb_LinkTarget_OBJCFLAGS := $(gb_CFLAGS) $(gb_OBJCFLAGS) $(gb_COMPILEROPTFLAGS)
ifeq ($(gb_SYMBOL),$(true))
diff --git a/solenv/gbuild/platform/solaris.mk b/solenv/gbuild/platform/solaris.mk
index 591c10003cea..d30fe2fdb03a 100644
--- a/solenv/gbuild/platform/solaris.mk
+++ b/solenv/gbuild/platform/solaris.mk
@@ -101,6 +101,8 @@ gb_LinkTarget_LDFLAGS := \
-temp=/tmp \
-w \
-mt \
+ -Bdirect \
+ -z defs \
-z combreloc \
-norunpath \
-PIC \
@@ -244,14 +246,23 @@ gb_Library_OOOEXT := ss$(gb_Library_PLAINEXT)
gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
endif
+gb_STDLIBS := \
+ Crun \
+ m \
+ c \
+
gb_Library_PLAINLIBS_NONE += \
+ $(gb_STDLIBS) \
dl \
+ freetype \
GL \
GLU \
jpeg \
- m \
pthread \
X11 \
+ Xext \
+ SM \
+ ICE \
z
gb_Library_FILENAMES := \
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index c17805fb1883..dde1bc8ed5b1 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -298,12 +298,16 @@ gb_Library_UNOEXT := .uno$(gb_Library_PLAINEXT)
gb_Library_PLAINLIBS_NONE += \
dl \
+ freetype \
GL \
GLU \
+ ICE \
jpeg \
m \
pthread \
+ SM \
X11 \
+ Xext \
z
gb_Library_FILENAMES := \
diff --git a/solenv/gbuild/platform/windows.mk b/solenv/gbuild/platform/windows.mk
index 05d73080af60..5fff55f4bf09 100644
--- a/solenv/gbuild/platform/windows.mk
+++ b/solenv/gbuild/platform/windows.mk
@@ -37,6 +37,7 @@ gb_CXX := cl
gb_LINK := link
gb_AWK := awk
gb_CLASSPATHSEP := ;
+gb_RC := rc
# use CC/CXX if they are nondefaults
ifneq ($(origin CC),default)
@@ -67,6 +68,13 @@ gb_COMPILERDEFS := \
gb_CPUDEFS := -DINTEL -D_X86_=1
+gb_RCDEFS := \
+ -DWINVER=0x0400 \
+ -DWIN32 \
+
+gb_RCFLAGS := \
+ -V
+
gb_CFLAGS := \
-Gd \
-GR \
@@ -211,6 +219,16 @@ endif
gb_COMPILERNOOPTFLAGS := -Od
+ifeq ($(gb_FULLDEPS),$(true))
+gb_COMPILERDEPFLAGS := -showIncludes
+define gb_create_deps
+| $(GBUILDDIR)/filter-showIncludes.pl $(2) $(1) $(3)
+endef
+else
+gb_COMPILERDEPFLAGS :=
+define gb_create_deps
+endef
+endif
# Helper class
gb_Helper_SRCDIR_NATIVE := $(shell cygpath -m $(SRCDIR) | $(gb_AWK) -- '{ print tolower(substr($$0,1,1)) substr($$0,2) }')
@@ -239,27 +257,6 @@ 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,\
@@ -268,37 +265,16 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(gb_CC) \
$(DEFS) $(CFLAGS) -Fd$(PDBFILE) \
$(PCHFLAGS) \
+ $(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \
$(INCLUDE) \
-c $(realpath $(3)) \
- -Fo$(1))
-$(call gb_CObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
+ -Fo$(1)) $(call gb_create_deps,$(1),$(call gb_CObject_get_dep_target,$(2)),$(realpath $(3)))
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,\
@@ -307,40 +283,18 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(gb_CXX) \
$(DEFS) $(CXXFLAGS) -Fd$(PDBFILE)\
$(PCHFLAGS) \
+ $(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \
$(INCLUDE_STL) $(INCLUDE) \
-c $(realpath $(3)) \
- -Fo$(1))
-$(call gb_CxxObject__command_deponcompile,$(1),$(2),$(3),$(DEFS),$(CFLAGS),$(INCLUDE))
+ -Fo$(1)) $(call gb_create_deps,$(1),$(call gb_CxxObject_get_dep_target,$(2)),$(realpath $(3)))
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
-
+ -Fp$(call gb_PrecompiledHeader_get_target,$(1))
define gb_PrecompiledHeader__command
$(call gb_Output_announce,$(2),$(true),PCH,1)
@@ -349,39 +303,17 @@ $(call gb_Helper_abbreviate_dirs_native,\
unset INCLUDE && \
$(gb_CXX) \
$(4) $(5) -Fd$(PDBFILE) \
+ $(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \
$(6) \
-c $(realpath $(3)) \
- -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj)
-$(call gb_PrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
+ -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(1),$(call gb_PrecompiledHeader_get_dep_target,$(2)),$(realpath $(3)))
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
-
+ -Fp$(call gb_NoexPrecompiledHeader_get_target,$(1))
define gb_NoexPrecompiledHeader__command
$(call gb_Output_announce,$(2),$(true),PCH,1)
@@ -390,14 +322,13 @@ $(call gb_Helper_abbreviate_dirs_native,\
unset INCLUDE && \
$(gb_CXX) \
$(4) $(5) -Fd$(PDBFILE) \
+ $(gb_COMPILERDEPFLAGS) \
-I$(realpath $(dir $(3))) \
$(6) \
-c $(realpath $(3)) \
- -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj)
-$(call gb_NoexPrecompiledHeader__command_deponcompile,$(1),$(2),$(3),$(4),$(5),$(6))
+ -Yc$(notdir $(patsubst %.cxx,%.hxx,$(3))) -Fp$(1) -Fo$(1).obj) $(call gb_create_deps,$(1),$(call gb_NoexPrecompiledHeader,$(2)),$(realpath $(3)))
endef
-
# LinkTarget class
gb_LinkTarget_CFLAGS := $(gb_CFLAGS) $(gb_CFLAGS_WERROR) $(gb_COMPILEROPTFLAGS)
@@ -421,7 +352,7 @@ $(call gb_Helper_abbreviate_dirs_native,\
$(foreach object,$(GENCXXOBJECTS),$(call gb_GenCxxObject_get_target,$(object))) \
$(foreach object,$(COBJECTS),$(call gb_CObject_get_target,$(object))) \
$(foreach extraobjectlist,$(EXTRAOBJECTLISTS),$(shell cat $(extraobjectlist))) \
- $(PCHOBJS))) && \
+ $(PCHOBJS) $(NATIVERES))) && \
$(gb_LINK) \
$(if $(filter Library CppunitTest,$(TARGETTYPE)),$(gb_Library_TARGETTYPEFLAGS)) \
$(if $(filter StaticLibrary,$(TARGETTYPE)),$(gb_StaticLibrary_TARGETTYPEFLAGS)) \
@@ -447,8 +378,11 @@ gb_Library_PLAINEXT := .lib
gb_Library_PLAINLIBS_NONE += \
advapi32 \
gdi32 \
+ gdiplus \
gnu_getopt \
+ imm32\
kernel32 \
+ msimg32 \
msvcrt \
msvcprt \
mpr \
@@ -461,6 +395,7 @@ gb_Library_PLAINLIBS_NONE += \
user32 \
uuid \
uwinapi \
+ winspool \
z \
gb_Library_LAYER := \
@@ -525,6 +460,26 @@ $(call gb_LinkTarget_get_headers_target,$(2)) : PDBFILE = $(call gb_LinkTarget_g
endef
+define gb_Library_add_default_nativeres
+$(call gb_WinResTarget_WinResTarget_init,$(1)/$(2))
+$(call gb_WinResTarget_add_file,$(1)/$(2),solenv/inc/shlinfo)
+$(call gb_WinResTarget_set_defs,$(1)/$(2),\
+ $$(DEFS) \
+ -DADDITIONAL_VERINFO1 \
+ -DADDITIONAL_VERINFO2 \
+ -DADDITIONAL_VERINFO3 \
+)
+$(call gb_Library_add_nativeres,$(1),$(2))
+$(call gb_Library_get_clean_target,$(1)) : $(call gb_WinResTarget_get_clean_target,$(1)/$(2))
+
+endef
+
+define gb_Library_add_nativeres
+$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : $(call gb_WinResTarget_get_target,$(1)/$(2))
+$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : NATIVERES += $(call gb_WinResTarget_get_target,$(1)/$(2))
+
+endef
+
define gb_Library_get_dllname
$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES)))
endef
@@ -685,6 +640,45 @@ else
gb_SrsPartTarget__command_dep =
endif
+# WinResTarget class
+
+gb_WinResTarget_POSTFIX :=.res
+
+define gb_WinResTarget__command
+$(call gb_Output_announce,$(2),$(true),RES,3)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_RC) \
+ $(DEFS) $(FLAGS) \
+ -I$(dir $(3)) \
+ $(INCLUDE) \
+ -Fo$(1) \
+ $(RCFILE) )
+endef
+
+$(eval $(call gb_Helper_make_dep_targets,\
+ WinResTarget \
+))
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_WinResTarget__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_WinResTarget_get_target,$(1)) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_WinResTarget_get_dep_target,$(1)))
+endef
+else
+gb_WinResTarget__command_dep =
+endif
# ComponentTarget
diff --git a/solenv/gbuild/platform/winmingw.mk b/solenv/gbuild/platform/winmingw.mk
index d846f7c18cdf..c8fe4f0d85a9 100644
--- a/solenv/gbuild/platform/winmingw.mk
+++ b/solenv/gbuild/platform/winmingw.mk
@@ -100,6 +100,13 @@ gb_CPUDEFS := \
-DINTEL \
-D_M_IX86 \
+gb_RCDEFS := \
+ -DWINVER=0x0400 \
+ -DWIN32 \
+
+gb_RCFLAGS := \
+ -V
+
gb_CFLAGS := \
-Wall \
-Wendif-labels \
@@ -546,6 +553,26 @@ $(call gb_Deliver_add_deliverable,$(OUTDIR)/bin/$(notdir $(3)),$(3))
endef
+define gb_Library_add_default_nativeres
+$(call gb_WinResTarget_WinResTarget_init,$(1)/$(2))
+$(call gb_WinResTarget_add_file,$(1)/$(2),solenv/inc/shlinfo)
+$(call gb_WinResTarget_set_defs,$(1)/$(2),\
+ $$(DEFS) \
+ -DADDITIONAL_VERINFO1 \
+ -DADDITIONAL_VERINFO2 \
+ -DADDITIONAL_VERINFO3 \
+)
+$(call gb_Library_add_nativeres,$(1),$(2))
+$(call gb_Library_get_clean_target,$(1)) : $(call gb_WinResTarget_get_clean_target,$(1)/$(2))
+
+endef
+
+define gb_Library_add_nativeres
+$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : $(call gb_WinResTarget_get_target,$(1)/$(2))
+$(call gb_LinkTarget_get_target,$(call gb_Library__get_linktargetname,$(1))) : NATIVERES += $(call gb_WinResTarget_get_target,$(1)/$(2))
+
+endef
+
define gb_Library_get_dllname
$(patsubst $(1):%,%,$(filter $(1):%,$(gb_Library_DLLFILENAMES)))
endef
@@ -624,6 +651,48 @@ else
gb_SrsPartTarget__command_dep =
endif
+# WinResTarget class
+
+gb_WinResTarget_POSTFIX :=_res.o
+
+define gb_WinResTarget__command
+$(call gb_Output_announce,$(2),$(true),RES,3)
+$(call gb_Helper_abbreviate_dirs_native,\
+ mkdir -p $(dir $(1)) && \
+ $(gb_RC) \
+ $(DEFS) $(FLAGS) \
+ -I$(dir $(3)) \
+ $(INCLUDE) \
+ -Fo$(patsubst %_res.o,%.res,$(1)) \
+ $(RCFILE) )
+ windres $(patsubst %_res.o,%.res,$(1)) $(1)
+ rm $(patsubst %_res.o,%.res,$(1))
+endef
+
+$(eval $(call gb_Helper_make_dep_targets,\
+ WinResTarget \
+))
+
+ifeq ($(gb_FULLDEPS),$(true))
+define gb_WinResTarget__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_WinResTarget_get_target,$(1)) \
+ -v OUTDIR=$(OUTDIR)/ \
+ -v WORKDIR=$(WORKDIR)/ \
+ -v SRCDIR=$(SRCDIR)/ \
+ -v REPODIR=$(REPODIR)/ \
+ > $(call gb_WinResTarget_get_dep_target,$(1)))
+endef
+else
+gb_WinResTarget__command_dep =
+endif
+
# ComponentTarget
gb_XSLTPROCPRECOMMAND := PATH="$${PATH}:$(OUTDIR)/bin"
diff --git a/solenv/inc/langlist.mk b/solenv/inc/langlist.mk
index 18680e77ce38..f4e485380ae1 100644
--- a/solenv/inc/langlist.mk
+++ b/solenv/inc/langlist.mk
@@ -150,6 +150,7 @@ tlh \
th \
tn \
tr \
+tk \
ts \
tg \
ug \
diff --git a/solenv/inc/minor.mk b/solenv/inc/minor.mk
index dfd0189badb8..38646f16b5b3 100644
--- a/solenv/inc/minor.mk
+++ b/solenv/inc/minor.mk
@@ -1,5 +1,5 @@
-RSCVERSION=340
-RSCREVISION=340m1(Build:1)
+RSCVERSION=350
+RSCREVISION=350m1(Build:1)
BUILD=1
LAST_MINOR=m1
-SOURCEVERSION=OOO340
+SOURCEVERSION=OOO350
diff --git a/solenv/inc/settings.mk b/solenv/inc/settings.mk
index 04dfd3490387..da564bf60724 100644
--- a/solenv/inc/settings.mk
+++ b/solenv/inc/settings.mk
@@ -826,6 +826,10 @@ SOLARCOMMONSDFDIR=$(SOLARSDFDIR)
.EXPORT : SOLARBINDIR
+.IF "$(GUI)" == "WNT"
+L10N_MODULE*=$(shell cygpath -m $(SRC_ROOT)/translations)
+.ELSE
+.ENDIF
.IF "$(WITH_LANG)"!=""
.INCLUDE .IGNORE: $(L10N_MODULE)/$(COMMON_OUTDIR)$(PROEXT)/inc/localization_present.mk