diff options
author | Jan Holesovsky <kendy@suse.cz> | 2011-05-27 20:39:04 +0200 |
---|---|---|
committer | Jan Holesovsky <kendy@suse.cz> | 2011-05-27 20:39:04 +0200 |
commit | ca907e02205e8e99e28608ddfe7bdaca24f23aa4 (patch) | |
tree | afdf8fb6a8aef6920ad0f658bdad85c419e0c43e | |
parent | 817da75b0809642d68b3cab35a1a9348139e9321 (diff) | |
parent | 35c884841001c6367d428db8e4407afc4d5077ca (diff) |
Merge remote-tracking branch 'origin/integration/dev300_m106'
Conflicts:
Makefile.in
Repository.mk
autogen.sh
bin/lo-commit-stat
configure.in
distro-configs/LibreOfficeOpenBSD.conf
distro-configs/LibreOfficeWin32.conf
instsetoo_native/util/openoffice.lst
ooo.lst.in
scp2/source/ooo/module_langpack.ulf
set_soenv.in
solenv/bin/ooinstall
solenv/gbuild/CppunitTest.mk
solenv/gbuild/Library.mk
solenv/gbuild/LinkTarget.mk
solenv/gbuild/TargetLocations.mk
solenv/gbuild/platform/macosx.mk
solenv/gbuild/platform/solaris.mk
solenv/gbuild/platform/unxgcc.mk
solenv/gbuild/platform/windows.mk
solenv/inc/minor.mk
solenv/inc/settings.mk
tail_build/prj/makefile.mk
64 files changed, 2017 insertions, 266 deletions
diff --git a/.gitignore b/.gitignore index bdc4858d0db7..d82ad755e3fa 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,6 @@ /bin/repo-list /src.downloaded /ooo.lst -/instsetoo_native/* # misc /set_soenv.last @@ -131,6 +130,9 @@ /formula /fpicker /framework +/gdk-pixbuf +/gettext +/glib /graphite /helpcontent2 /hsqldb @@ -154,7 +156,11 @@ /l10n /l10ntools /languagetool +/libcroco /libegg +/libgsf +/libpng +/librsvg /libtextcat /libvisio /libwpd @@ -191,6 +197,7 @@ /package /packimages /padmin +/pango /postprocess /psprint_config /python diff --git a/Makefile.in b/Makefile.in index 7c9477f58cb8..c1d911d32cc9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -8,19 +8,22 @@ else GBUILD_OPT:=--gmake endif -all: Makefile dmake/dmake@EXEEXT_FOR_BUILD@ src.downloaded +prefix = @prefix@ +exec_prefix = @exec_prefix@ +libdir = @libdir@ +all: Makefile dmake/dmake@EXEEXT_FOR_BUILD@ src.downloaded @. ./*Env.Set.sh && \ cd instsetoo_native && \ build.pl $(GBUILD_OPT) -P@BUILD_NCPUS@ --all -- -P@BUILD_MAX_JOBS@ install: @. ./*Env.Set.sh && \ - echo "Installing in $${prefix:-@prefix@}..." && \ - ooinstall "$${prefix:-@prefix@}" && \ + echo "Installing in $${libdir:-@libdir@}/@INSTALL_DIRNAME@..." && \ + ooinstall "$${libdir:-@libdir@}/@INSTALL_DIRNAME@" && \ echo "" && \ echo "Installation finished, you can now execute:" && \ - echo "$${prefix:-@prefix@}/program/soffice" + echo "$${libdir:-@libdir@}/@INSTALL_DIRNAME@/program/soffice" dev-install: @. ./*Env.Set.sh && \ diff --git a/Repository.mk b/Repository.mk index 3609e71f90a7..0afca0dca6ae 100644..100755 --- a/Repository.mk +++ b/Repository.mk @@ -43,8 +43,10 @@ $(eval $(call gb_Helper_register_executables,OOO, \ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \ adabasui \ + AppleRemote \ avmedia \ basegfx \ + basebmp \ canvastools \ chartcontroller \ chartmodel \ @@ -57,6 +59,7 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \ dbmm \ dbtools \ dbu \ + desktop_detector \ doctok \ drawinglayer \ editeng \ @@ -111,6 +114,11 @@ $(eval $(call gb_Helper_register_libraries,OOOLIBS, \ utl \ vbahelper \ vcl \ + vclplug_gen \ + vclplug_gtk \ + vclplug_kde \ + vclplug_kde4 \ + vclplug_svp \ writerfilter \ xcr \ xo \ @@ -129,6 +137,9 @@ $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \ icui18n \ icule \ icuuc \ + icule \ + graphite_dll \ + cppunit \ rdf \ ssl \ xslt \ @@ -139,6 +150,7 @@ $(eval $(call gb_Helper_register_libraries,RTLIBS, \ comphelper \ i18nisolang1 \ i18nutil \ + jvmaccess \ ucbhelper \ )) @@ -170,6 +182,7 @@ $(eval $(call gb_Helper_register_libraries,UNOVERLIBS, \ $(eval $(call gb_Helper_register_static_libraries,PLAINLIBS, \ crypto \ + graphite2_off \ libeay32 \ ssleay32 \ jpeglib \ diff --git a/RepositoryFixes.mk b/RepositoryFixes.mk index f56313869d82..2e7be72f73ca 100644..100755 --- a/RepositoryFixes.mk +++ b/RepositoryFixes.mk @@ -109,9 +109,14 @@ gb_Library_FILENAMES := $(patsubst z:iz%,z:zlib%,$(gb_Library_FILENAMES)) gb_Library_NOILIBFILENAMES:=\ advapi32 \ gdi32 \ + gdiplus \ + graphite_dll \ gnu_getopt \ icuuc \ + icule \ + imm32\ kernel32 \ + msimg32 \ msvcrt \ msvcprt \ mpr \ @@ -125,6 +130,7 @@ gb_Library_NOILIBFILENAMES:=\ user32 \ uuid \ uwinapi \ + winspool \ gb_Library_FILENAMES := $(filter-out $(foreach lib,$(gb_Library_NOILIBFILENAMES),$(lib):%),$(gb_Library_FILENAMES)) gb_Library_FILENAMES += $(foreach lib,$(gb_Library_NOILIBFILENAMES),$(lib):$(lib)$(gb_Library_PLAINEXT)) diff --git a/autogen.sh b/autogen.sh index 7d57e13203f9..444d970e51d9 100755 --- a/autogen.sh +++ b/autogen.sh @@ -44,20 +44,19 @@ sub read_args($) sub invalid_distro($$) { my ($config, $distro) = @_; - print STDERR "can't find distro option set: $config\n"; - print STDERR "valid values are:\n"; + print STDERR "Can't find distro option set: $config\nThis is not necessarily a problem.\n"; + print STDERR "Distros with distro option sets are:\n"; my $dirh; opendir ($dirh, "distro-configs"); - while (readdir ($dirh)) { + while (($_ = readdir ($dirh))) { /(.*)\.conf$/ || next; print STDERR "\t$1\n"; } closedir ($dirh); - exit (1); } my @cmdline_args = (); -if (@ARGV == 0) { +if (!@ARGV) { my $lastrun = "autogen.lastrun"; @cmdline_args = read_args ($lastrun) if (-f $lastrun); } else { @@ -72,8 +71,9 @@ for my $arg (@cmdline_args) { my $config = "distro-configs/$1.conf"; if (! -f $config) { invalid_distro ($config, $1); - } - push @args, read_args ($config); + } else { + push @args, read_args ($config); + } } else { push @args, $arg; } @@ -98,8 +98,8 @@ die "failed to generate configure" if (! -x "configure"); if (defined $ENV{NOCONFIGURE}) { print "Skipping configure process."; } else { - if (@ARGV > 0) { - print "writing args to autogen.lastrun\n"; + if ($#cmdline_args > 0) { +# print "writing args to autogen.lastrun\n"; my $fh; open ($fh, ">autogen.lastrun") || die "can't open autogen.lastrun: $!"; for my $arg (@cmdline_args) { diff --git a/bin/lo-pack-sources b/bin/lo-pack-sources new file mode 100755 index 000000000000..26ac6c1fc94d --- /dev/null +++ b/bin/lo-pack-sources @@ -0,0 +1,651 @@ +#!/usr/bin/perl + eval 'exec /usr/bin/perl -S $0 ${1+"$@"}' + if $running_under_some_shell; +#!/usr/bin/perl + +use strict; +use File::Copy; +use File::Temp qw/ tempfile tempdir /; + +# get libreoffice-build version from the given libreoffice-build sources +sub get_config_version($) +{ + my ($lo_build_dir) = @_; + my $version; + + open (CONFIGURE, "$lo_build_dir/configure.in") || + die "can't open \"$lo_build_dir/configure.in\" for reading: $!\n"; + + while (my $line = <CONFIGURE>) { + chomp $line; + + if ($line =~ /AC_INIT\s*\(\s*libreoffice-build\s*,\s*([\w\.]*)\)/) { + $version="$1"; + } + } + close (CONFIGURE); + return $version; +} + +# set libreoffice-build version in the given libreoffice-build sources +sub set_config_version($$) +{ + my ($lo_build_dir, $version) = @_; + my $configure = "$lo_build_dir/configure.in"; + + open (CONFIGURE, "$configure") || + die "can't open \"$configure\" for reading: $!\n"; + + my ( $tmp_fh, $tmp_filename ) = tempfile( "$configure.XXXXXX" ); + if ( !defined $tmp_fh ) { + close (CONFIGURE); + die "Error: can't create temporary file: \"$configure.XXXXXX\"\n"; + } + + while (my $line = <CONFIGURE>) { + chomp $line; + + if ($line =~ /^(\s*AC_INIT\s*\(\s*libreoffice-build\s*,\s*)([\w\.]*)(\s*\)\s*)$/) { + print ${tmp_fh} "$1$version$3\n"; + } else { + print ${tmp_fh} "$line\n"; + } + } + close (CONFIGURE); + close (${tmp_fh}); + + # preserve permissions on target file by applying them to temp file + my ( $mode, $uid, $gid ) = ( stat($configure) )[ 2, 4, 5 ]; + $mode = $mode & 07777; + + chmod $mode, $tmp_filename; + chown $uid, $gid, $tmp_filename; + + rename ($tmp_filename, $configure) || + die "Can't rename \"$tmp_filename\" to \"$configure\": $!\n"; +} + +# increment the version for a test build: +# + add 'a' if the version ended with a number +# + bump the letter otherwise +sub inc_test_version($) +{ + my ($version) = @_; + + my $lastchar = chop $version; + my $new_version; + + if ($lastchar =~ /\d/) { + return "$version" . "$lastchar" . "a"; + } elsif ($lastchar =~ /\w/) { + # select next letter alhabeticaly: a->b, b->c, ... + $lastchar =~ tr/0a-zA-Z/a-zA-Z0/; + return "$version" . "$lastchar"; + } else { + die "Can't generate test version from \"$version$lastchar\n"; + } +} + +sub get_release_version($$$$) +{ + my ($config_version, $state_config_version, $state_release_version, $inc_version) = @_; + my $release_version; + + if (defined $state_config_version && + defined $state_release_version && + "$state_config_version" eq "$config_version") { + $release_version = "$state_release_version"; + } else { + $release_version = "$config_version"; + } + + if ( defined $inc_version ) { + $release_version = inc_test_version($release_version); + } + + return $release_version; +} + + +sub generate_lo_build_blacklist($) +{ + my ($blacklist) = @_; + + # FIXME: crazy hacks to copy libreoffice-build without too big and useless subdirectories and to show a progress + open (BLACKLIST, ">$blacklist") || die "Can't open $blacklist: $!\n"; + + # IMPORTANT: Do not remove .git directories because "git log" is called during "make dist" + print BLACKLIST "*/.svn\n"; + print BLACKLIST "rawbuild/*\n"; + print BLACKLIST "build/*\n"; + print BLACKLIST "clone/*\n"; + print BLACKLIST "src/libreoffice-*.tar.bz2\n"; + print BLACKLIST "src/????????????????????????????????-*\n"; + + close BLACKLIST; +} + +sub generate_lo_piece_blacklist($) +{ + my ($blacklist) = @_; + + # FIXME: crazy hacks to copy libreoffice-build without too big and useless subdirectories and to show a progress + open (BLACKLIST, ">$blacklist") || die "Can't open $blacklist: $!\n"; + + # IMPORTANT: Do not remove .git directories because "git log" is called during "make dist" + print BLACKLIST ".git\n"; + print BLACKLIST ".gitignore\n"; + print BLACKLIST ".gitattributes\n"; + print BLACKLIST "autom4te.cache/*\n"; + print BLACKLIST "autom4te.cache\n"; + print BLACKLIST "autogen.lastrun\n"; + print BLACKLIST "clone/*\n"; + print BLACKLIST "config.log\n"; + print BLACKLIST "config.parms\n"; + print BLACKLIST "git-hooks\n"; + print BLACKLIST "Linux*Env.Set.sh\n"; + print BLACKLIST "warn\n"; + + close BLACKLIST; +} + +# remove symlinks to clone subdir +sub remove_module_symlinks($$) +{ + my ($tempdir, $piece_tarball_name) = @_; + + print STDERR "find $tempdir/$piece_tarball_name -mindepth 1 -maxdepth 1 -type l -exec rm {} \\;\n"; + system ("find $tempdir/$piece_tarball_name -mindepth 1 -maxdepth 1 -type l -exec rm {} \\;") && + die "Error: can't delete symlinks to clone dir in $tempdir: $!\n"; +} + + +# copy files to temp dir; showing a progress; using a black list +sub copy_dir_filter_and_show_progress($$$) +{ + my ($source_dir, $target_dir, $blacklist) = @_; + + print "Copying \"$source_dir\" -> \"$target_dir\"..."; + # FIXME: crazy hacks to copy dir with a blacklist and showing a progress + system ("tar -cf - -C $source_dir -X $blacklist \.\/ | " . + "tar -xf - -C $target_dir --checkpoint 2>&1 | " . + "awk '{ ORS=\"\" ; if (++nlines\%50 == 0) printf \".\"; fflush() }'") && + die "Error: copying failed: $!\n"; + print "\n"; +} + +# copy the local version of libreoffice-build into a tmp directory +# omit the .svn subdirectories +sub copy_lo_build_to_tempdir($) +{ + my ($lo_build_dir) = @_; + + my $tempdir = tempdir( 'libreoffice-XXXXXX', DIR => File::Spec->tmpdir ); + my $blacklist = "$tempdir/libreoffice-build.copy.blacklist"; + + generate_lo_build_blacklist($blacklist); + copy_dir_filter_and_show_progress($lo_build_dir, $tempdir, $blacklist); + + unlink $blacklist; + + return $tempdir; +} + +# copy the piece lo source directory into a tmp directory +# omit the .git subdirectories +sub copy_lo_piece_to_tempdir($$$) +{ + my ($piece_dir, $piece, $piece_tarball_name) = @_; + + + my $tempdir = tempdir( 'libreoffice-XXXXXX', DIR => File::Spec->tmpdir ); + my $blacklist = "$tempdir/libreoffice-$piece.copy.blacklist"; + + mkdir "$tempdir/$piece_tarball_name" || die "Can't create directory \"$tempdir/$piece_tarball_name\": $!\n"; + + generate_lo_piece_blacklist($blacklist); + copy_dir_filter_and_show_progress("$piece_dir", "$tempdir/$piece_tarball_name", $blacklist); + remove_module_symlinks($tempdir, $piece_tarball_name); + + unlink $blacklist; + + return $tempdir; +} + +sub generate_lo_piece_changelog($$$) +{ + my ($lo_piece_clone, $lo_piece_release_dir, $piece) = @_; + print "Generating changelog for $piece...\n"; + print "1:$lo_piece_clone, 2:$lo_piece_release_dir, 3:$piece\n"; + # FIXME: crazy hacks to copy dir with a blacklist and showing a progress + system ("cd $lo_piece_clone && " . + "git log --date=short --pretty='format:@%cd %an <%ae> [%H]%n%n%s%n%n%e%b' | " . + " sed -e 's|^\([^@]\)|\t\1|' -e 's|^@||' >$lo_piece_release_dir/ChangeLog" ) && + die "Error: generating failed: $!\n"; +} + +sub run_autoreconf($$) +{ + my ($dir, $piece) = @_; + + print "Running autoreconf for $piece...\n"; + system ("cd $dir && " . + "autoreconf -f -i && " . + "rm -rf autom4te.cache && " . + "cd - >/dev/null 2>&1") && die "Error: autoreconf failed: $!\n"; +} + +sub generate_version_file($$$) +{ + my ($dir, $piece, $release_version) = @_; + + # FIXME: crazy hacks to copy libreoffice-build without too big and useless subdirectories and to show a progress + open (VERFILE, ">$dir/$piece.ver") || die "Can't open $dir/lo-$piece.ver: $!\n"; + + print VERFILE "lo_bootstrap_ver=$release_version\n"; + + close VERFILE; +} + +sub release_lo_build($) +{ + my ($lo_build_dir) = @_; + + print "Creating libreoffice-build tarball...\n"; + system ("cd $lo_build_dir && " . + "./autogen.sh --with-distro=GoOoLinux && " . + "make dist && " . + "cd - >/dev/null 2>&1") && die "Error: releasing failed: $!\n"; +} + +sub release_lo_piece($$) +{ + my ($lo_piece_dir, $piece_tarball_name) = @_; + + print "Creating $piece_tarball_name.tar.bz2..."; + system ("cd $lo_piece_dir && " . + "tar -cjf $piece_tarball_name.tar.bz2 --checkpoint * 2>&1 | awk '{ ORS=\"\" ; if (++nlines\%50 == 0) printf \".\"; fflush() }' && " . + "cd - >/dev/null 2>&1") && die "Error: releasing failed: $!\n"; + print "\n"; +} + +sub generate_md5($$$) +{ + my ($dir, $tarball_name, $tarball_suffix) = @_; + + print "Generating MD5...\n"; + system ("cd $dir && " . + "md5sum $tarball_name$tarball_suffix >$tarball_name$tarball_suffix.md5 && " . + "cd - >/dev/null 2>&1") && die "Error: releasing failed: $!\n"; +} + +sub default_releases_state_file($) +{ + my ($lo_build_dir) = @_; + + my $rootdir = $lo_build_dir; + $rootdir =~ s/^(.*?)\/?[^\/]+\/?$/$1/; + + my $releases_state_file; + if ($rootdir) { + $releases_state_file = "$rootdir/.releases"; + } else { + $releases_state_file = ".releases"; + } + + return "$releases_state_file"; +} + +sub default_releases_archive($) +{ + my ($lo_build_dir) = @_; + + my $rootdir = $lo_build_dir; + $rootdir =~ s/^(.*?)\/?[^\/]+\/?$/$1/; + + my $releases_archive_dir; + if ($rootdir) { + $releases_archive_dir = "$rootdir/archive"; + } else { + $releases_archive_dir = "archive"; + } + + return "$releases_archive_dir"; +} + +sub load_releases_state($) +{ + my ($releases_state_file) = @_; + + my $state_config_version; + my $state_release_version; + + if (open (STATE, "$releases_state_file")) { + + while (my $line = <STATE>) { + chomp $line; + + if ($line =~ /^\s*configure_version\s*=\s*(.*)$/) { + $state_config_version = "$1"; + } elsif ($line =~ /^\s*released_version\s*=\s*(.*)$/) { + $state_release_version = "$1"; + } + } + close (STATE); + } + + return $state_config_version, $state_release_version; +} + +sub save_releases_state($$$) +{ + my ($releases_state_file, $config_version, $release_version) = @_; + + open (STATE, '>', "$releases_state_file") || + die "Can't open \"$releases_state_file\" for writing: $!\n"; + + print STATE "configure_version = $config_version\n"; + print STATE "released_version = $release_version\n"; + + close (STATE); +} + +sub remove_tempdir($) +{ + my ($tempdir) = @_; + +# print "Cleaning $tempdir...\n"; + system ("rm -rf $tempdir") && die "Error: rm failed: $!\n"; +} + +sub save_file($$$) +{ + my ($source_dir, $target_dir, $file) = @_; + + unless ( -d "$target_dir" ) { + mkdir ("$target_dir") || + die "Can't create directory \"$target_dir\": $!\n"; + } + + if ( -f "$target_dir/$file" ) { + print "Warning: $target_dir/$file already exists and will be replaced\n"; + unlink ("$target_dir/$file"); + } + + print "Copying into archive: $target_dir/$file ...\n"; + copy ("$source_dir/$file", "$target_dir/$file") || + die "Error: Can't copy $source_dir/$file to $target_dir/$file: $!\n"; +} + +sub check_if_file_exists($$) +{ + my ($file, $force) = @_; + + if (-e $file) { + if (defined $force) { + print "Warning: $file already exists and will be replaced!\n"; + } else { + die "Error: $file alrady exists.\n". + " Use --force if you want to replace it.\n"; + } + } +} + +sub check_if_tarball_already_released($$$) +{ + my ($tarball, $releases_archive_dir, $force) = @_; + + check_if_file_exists($tarball, $force); + check_if_file_exists("$releases_archive_dir/$tarball", $force) if (defined $releases_archive_dir); +} + +sub check_if_already_released($$$$$$) +{ + my ($lo_build_tarball_name, $p_piece_tarball_name, $releases_archive_dir, $force, $pack_lo_build, $pack_lo_pieces) = @_; + + check_if_tarball_already_released("$lo_build_tarball_name.tar.gz", $releases_archive_dir, $force) if ($pack_lo_build); + + if ($pack_lo_pieces) { + foreach my $tarball_name ( values %{$p_piece_tarball_name} ) { + check_if_tarball_already_released("$tarball_name.tar.bz2", $releases_archive_dir, $force); + } + } +} + +sub prepare_lo_build_tarball($$$$) +{ + my ($lo_build_dir, $release_version, $md5, $lo_build_tarball_name) = @_; + + my $temp_dir = copy_lo_build_to_tempdir("$lo_build_dir"); + set_config_version($temp_dir, $release_version); + release_lo_build($temp_dir); + generate_md5($temp_dir, $lo_build_tarball_name, ".tar.gz") if (defined $md5); + + return $temp_dir; +} + +sub prepare_lo_piece_tarball($$$$$) +{ + my ($piece_dir, $release_version, $md5, $piece, $piece_tarball_name) = @_; + + my $temp_dir = copy_lo_piece_to_tempdir($piece_dir, $piece, $piece_tarball_name); + generate_lo_piece_changelog($piece_dir, "$temp_dir/$piece_tarball_name", $piece); + run_autoreconf("$temp_dir/$piece_tarball_name", $piece) if ($piece eq 'bootstrap'); + generate_version_file("$temp_dir/$piece_tarball_name", $piece, $release_version) if ($piece eq 'bootstrap'); + release_lo_piece($temp_dir, $piece_tarball_name); + generate_md5($temp_dir, $piece_tarball_name, ".tar.bz2") if (defined $md5); + + return $temp_dir; +} + +sub move_tarball_to_final_location($$$$) +{ + my ($temp_dir, $releases_archive_dir, $md5, $tarball) = @_; + + save_file($temp_dir, ".", "$tarball"); + save_file($temp_dir, ".", "$tarball.md5") if (defined $md5); + if ( defined $releases_archive_dir ) { + save_file($temp_dir, $releases_archive_dir, "$tarball"); + save_file($temp_dir, $releases_archive_dir, "$tarball.md5") if (defined $md5); + } + + remove_tempdir($temp_dir); +} + + +sub generate_tarballs($$$$$$$$$) +{ + my ($source_dir, $releases_archive_dir, $release_version, $md5, $lo_build_tarball_name, $p_piece_tarball_name, $pack_lo_build, $pack_lo_pieces, $is_lo_build_dir) = @_; + + if ($pack_lo_build) { +# my $temp_dir=prepare_lo_build_tarball($source_dir, $release_version, $md5, $lo_build_tarball_name); +# move_tarball_to_final_location($temp_dir, $releases_archive_dir, $md5, "$lo_build_tarball_name.tar.gz"); + my $temp_dir=prepare_lo_piece_tarball($source_dir, $release_version, $md5, "bootstrap", $lo_build_tarball_name); + move_tarball_to_final_location($temp_dir, $releases_archive_dir, $md5, "$lo_build_tarball_name.tar.bz2"); + } + + if ($pack_lo_pieces) { + my $piece_dir = $source_dir; + foreach my $piece ( keys %{$p_piece_tarball_name} ) { + print "\n--- Generating $piece ---\n"; + $piece_dir = "$source_dir/clone/$piece" if ($is_lo_build_dir); + my $temp_dir=prepare_lo_piece_tarball($piece_dir, $release_version, $md5, $piece, $p_piece_tarball_name->{$piece}); + move_tarball_to_final_location($temp_dir, $releases_archive_dir, $md5, "$p_piece_tarball_name->{$piece}.tar.bz2"); + } + } + +} + + +sub usage() +{ + print "This tool helps to pack the libreoffice-build and piece sources\n\n" . + + "Usage:\n". + "\tlo-pack-sources [--help] [--force] [--version]\n" . + "\t [--set-version=<ver>] [--inc-version] [--md5]\n" . + "\t [--no-lo-build] [--no-lo-pieces] [--piece=<piece>]\n" . + "\t [dir]\n\n" . + + "Options:\n\n" . + "\t--help: print this help\n" . + "\t--force: replace an already existing release of the same version\n" . + "\t--version: just print version of the released package but do not\n" . + "\t\trelease it; the version is affected by the other options, e.g.\n" . + "\t\t--inc-version\n" . + "\t--set-version: force another version\n" . + "\t--inc-version: increment the latest version; there is a difference\n" . + "\t\tbetween test release (default) and final (not yet supported)\n" . + "\t--md5: generate md5 sum for the final tarball\n" . + "\t--no-lo-build: do not pack the libreoffice-build tarball\n" . + "\t--no-lo-pieces: do not pack the libreoffice-build piece sources\n" . + "\t--piece=<piece>: pack just a single piece, .e.g. \"writer\",\n" . + "\tdir: path of the source directory, either libreoffice-build or piece\n"; +} + + +my $ptf; +my $md5; +my $inc_version; +my $config_version; +my $set_version; +my $get_config_version; +my $release_version; +my $pack_lo_build=1; +my $pack_lo_pieces=1; +my $source_dir; +my $releases_archive_dir; +my $releases_state_file; +my $state_config_version; +my $state_release_version; +my $lo_build_tarball_name; +my $lo_build_tempdir; +my $force; +my $verbose=1; +my $is_lo_build_dir=0; +my @pieces=("artwork", "base", "calc", "components", + "extensions", "extras", "filters", "help", "impress", + "libs-core", "libs-extern", "libs-extern-sys", "libs-gui", + "postprocess", "sdk", "testing", "translations", "ure", "writer"); +my %piece_tarball_name; + +################### +# Arguments parsing +################### + +for my $arg (@ARGV) { + if ($arg eq '--help' || $arg eq '-h') { + usage; + exit 0; + } elsif ($arg eq '--force') { + $force=1; + } elsif ($arg eq '--md5') { + $md5=1; + } elsif ($arg eq '--version') { + $get_config_version=1; + $verbose = undef; + } elsif ($arg eq '--inc-version') { + $inc_version=1 + } elsif ($arg =~ m/--set-version=(.*)/) { + $set_version="$1"; + } elsif ($arg eq '--no-lo-build') { + $pack_lo_build=0; + } elsif ($arg eq '--no-lo-pieces') { + $pack_lo_pieces=0; + } elsif ($arg =~ m/--piece=(.*)/) { + # process just one piece and do not pack libreoffice-build + @pieces=(); + push @pieces, "$1"; + $pack_lo_build=0; + } elsif ($arg =~ /^-/ ) { + die "Error: unknown option: $arg\n"; + } else { + if (! defined $source_dir) { + $source_dir = $arg; + } else { + die "Error: Too many arguments $arg\n"; + } + } +} + +################### +# Initial checks +################### + +unless ( defined $source_dir ) { + die "Error: undefined source directory, try --help\n"; +} + +unless ( -d "$source_dir" ) { + die "Error: is not a directory: $source_dir\n"; +} + +# check if it is a valid libreoffice-bootstrap directory +$is_lo_build_dir=1 if (-f "$source_dir/autogen.sh" && -f "$source_dir/set_soenv.in"); + +# all tarballs are generated from the libreoffice-bootstrap directory +if (@pieces > 1 && $is_lo_build_dir == 0 ) { + die "Error: \"$source_dir\" is not a valid libreoffice-bootstrap directory\n"; +} + +# just a single piece tarball can be generated from piece directory; version must be explicitely set in this case +if (@pieces == 1 && $is_lo_build_dir == 0 && ! defined $set_version ) { + die "Error: version must be set using the --set-version=<version> option\n" unless (defined $set_version); +} + +if (defined $set_version && defined $inc_version) { + die "Error: --set-version and --inc-version options can't be used together\n"; +} + + +################### +# Main logic +################### + + +print "Source: $source_dir\n" if ($verbose); + +if ($is_lo_build_dir) { + # detect some paths + $releases_state_file = default_releases_state_file($source_dir) unless (defined $releases_state_file); + $releases_archive_dir = default_releases_archive($source_dir) unless (defined $releases_archive_dir); + + # detect versions + $config_version = get_config_version($source_dir); + ($state_config_version, $state_release_version) = load_releases_state($releases_state_file); + if (defined $set_version) { + $release_version = "$set_version"; + } else { + $release_version = get_release_version($config_version, $state_config_version, $state_release_version, $inc_version); + } +} else { + # must be single piece release with predefined version + $release_version = "$set_version"; +} + +# define tarball names +$lo_build_tarball_name = "libreoffice-bootstrap-$release_version"; +foreach my $piece (@pieces) { + $piece_tarball_name{$piece} = "libreoffice-$piece-$release_version"; +} + +print "Default version : $config_version\n" if ($verbose && defined $config_version); +print "Last used version : $state_release_version\n" if ($verbose && defined $state_release_version); +print "New version : $release_version\n" if ($verbose); + +# do the real job +if ( defined $get_config_version ) { + print "$release_version\n"; +} else { + check_if_already_released($lo_build_tarball_name, \%piece_tarball_name, $releases_archive_dir, $force, $pack_lo_build, $pack_lo_pieces); + + # give a chance to stop the process + print ("\nWaiting 3 seconds...\n"); + sleep 3; + + generate_tarballs($source_dir, $releases_archive_dir, $release_version, $md5, $lo_build_tarball_name, \%piece_tarball_name, $pack_lo_build, $pack_lo_pieces, $is_lo_build_dir); + + if ( defined $releases_state_file ) { + save_releases_state($releases_state_file, $config_version, $release_version); + } +} diff --git a/configure.in b/configure.in index 6ed7ea1fc14e..31f8a4d6a208 100755 --- a/configure.in +++ b/configure.in @@ -79,11 +79,6 @@ AC_ARG_ENABLE(ext-presenter-minimizer, [Enables the Presentation Minimizer extension.]), ,) -AC_ARG_ENABLE(ext-presenter-ui, - AS_HELP_STRING([--enable-ext-presenter-ui], - [Enables extra functionality during slideshows, e.g. selecting pen color.]), -,) - AC_ARG_ENABLE(ext-report-builder, AS_HELP_STRING([--enable-ext-report-builder], [Enables the build of the Report Builder extension.]), @@ -283,6 +278,20 @@ AC_ARG_ENABLE(cairo, available.]), ,enable_cairo=yes) +AC_ARG_ENABLE(librsvg, +[ --enable-librsvg Determines whether to use librsvg library on + platforms where librsvg is available. + (actually, it is possible to build with + --disable-librsvg and to still have SVG support + within a running soffice instance, since this + dependency is a runtime only dependency. + To have SVG suppport at runtime, the librsvg, the cairo + and the gobject library - and all depending libraries + as well - need to be accessible by the running soffice + instance. + The intention of defaulting this flag to yes is to + indicate this fact to the build maintainer) +],,enable_librsvg=yes) AC_ARG_ENABLE(opengl, AS_HELP_STRING([--disable-opengl], [Determines whether to build the OpenGL 3D slide transitions component.]), @@ -1219,6 +1228,20 @@ AC_ARG_WITH(vendor, ], ,) +AC_ARG_WITH(install-dirname, + AS_HELP_STRING([--with-install-dirname], + [Specify the directory name of the core LibO install dir. The final + installation path is defined by <libdir>/<install-dirname>. + The default value is "libreoffice" and the default installation + patch is /usr/lib/libreoffice. + + FIXME: It affects only the installation by "make install" and not the + generated installation sets.]) + [ + Usage: --with-install-dirname=lo-3.4.2 + ], +,) + AC_ARG_WITH(unix-wrapper, AS_HELP_STRING([--with-unix-wrapper], [Redefines the name of the UNIX wrapper that will be used in the desktop @@ -1386,6 +1409,7 @@ case "$host_os" in solaris*) test_gtk=yes build_gstreamer=yes + test_librsvg=yes test_kde=yes test_freetype=yes test_gstreamer=yes @@ -1418,6 +1442,7 @@ case "$host_os" in linux-gnu*|k*bsd*-gnu*) test_gtk=yes build_gstreamer=yes + test_librsvg=yes test_kde=yes test_kde4=yes test_freetype=yes @@ -1449,6 +1474,7 @@ case "$host_os" in test_cups=no test_randr=no + test_librsvg=no test_freetype=no test_cairo=no test_fontconfig=no @@ -1465,6 +1491,7 @@ case "$host_os" in ;; darwin*) # Mac OS X or iOS test_gtk=yes + test_librsvg=no test_randr=no test_freetype=no test_fontconfig=no @@ -1484,6 +1511,7 @@ case "$host_os" in freebsd*) test_gtk=yes build_gstreamer=yes + test_librsvg=yes test_kde=yes test_kde4=yes test_freetype=yes @@ -1511,6 +1539,7 @@ case "$host_os" in *netbsd*) test_gtk=yes build_gstreamer=yes + test_librsvg=yes test_kde=no test_kde4=yes test_freetype=yes @@ -2212,6 +2241,7 @@ fi dnl =================================================================== dnl Check which Microsoft C/C++ or MinGW compiler is used for WINNT dnl =================================================================== +SHOWINCLUDES_PREFIX= if test "$_os" = "WINNT"; then if test "$WITH_MINGW" != "yes"; then AC_MSG_CHECKING([for a friendly Microsoft C/C++ compiler installation path]) @@ -2231,7 +2261,7 @@ if test "$_os" = "WINNT"; then fi with_cl_home=`cygpath -d "$with_cl_home"` with_cl_home=`cygpath -u "$with_cl_home"` - AC_MSG_RESULT([done]) + AC_MSG_RESULT([$with_cl_home]) dnl =========================================================== dnl Check for mspdb80.dll/mspdb100.dll @@ -2264,7 +2294,7 @@ if test "$_os" = "WINNT"; then fi if test -z "$MSPDB_PATH"; then - AC_MSG_ERROR([You need a mspdb80.dllor mspdb100.dll, make sure it's in the path or use --with-mspdb-path]) + AC_MSG_ERROR([You need a mspdb80.dllor mspdb100.dll, make sure it is in the path or use --with-mspdb-path]) fi MSPDB_PATH=`cygpath -d "$MSPDB_PATH"` MSPDB_PATH=`cygpath -u "$MSPDB_PATH"` @@ -2272,27 +2302,29 @@ if test "$_os" = "WINNT"; then PATH="$MSPDB_PATH:$PATH" AC_MSG_CHECKING([the Microsoft C/C++ Compiler]) - if test "$CL_X64" = ""; then - if test -x "$with_cl_home/bin/cl.exe"; then - CC="$with_cl_home/bin/cl.exe" + if test -z "$CC"; then + if test "$CL_X64" = ""; then + if test -x "$with_cl_home/bin/cl.exe"; then + CC="$with_cl_home/bin/cl.exe" + fi + else + if test -x "$with_cl_home/bin/amd64/cl.exe"; then + CC="$with_cl_home/bin/amd64/cl.exe" + fi fi - else - if test -x "$with_cl_home/bin/amd64/cl.exe"; then - CC="$with_cl_home/bin/amd64/cl.exe" + if test -z "$CC"; then + AC_PATH_PROG(CC, cl.exe) fi - fi - if test -z "$CC"; then - AC_PATH_PROG(CC, cl.exe) - fi - - if test -e "$CC"; then # This gives us a posix path with 8.3 filename restrictions CC=`cygpath -d "$CC"` CC=`cygpath -u "$CC"` + fi + + if test -n "$CC"; then # Remove /cl.exe from CC case insensitive AC_MSG_RESULT([found ($CC)]) if test "$CL_X64" = ""; then - COMPATH=`echo $CC | $SED 's@\/[[Bb]][[Ii]][[Nn]]\/[[cC]][[lL]]\.[[eE]][[xX]][[eE]]@@'` + COMPATH=`echo $CC | $SED -e 's@\/[[Bb]][[Ii]][[Nn]]\/[[cC]][[lL]]\.[[eE]][[xX]][[eE]].*@@' -e 's@^.* @@'` else if test -n "$with_cl_home"; then COMPATH=`echo $with_cl_home` @@ -2324,6 +2356,19 @@ if test "$_os" = "WINNT"; then AC_MSG_ERROR([Microsoft C/C++ Compiler not found. Use --with-cl-home or set path to cl.exe.]) fi + dnl We need to guess the prefix of the -showIncludes output, it can be + dnl localized + AC_MSG_CHECKING([the dependency generation prefix (cl.exe -showIncludes)]) + echo "#include <stdlib.h>" > conftest.c + SHOWINCLUDES_PREFIX=`$CC -c -showIncludes conftest.c 2>/dev/null | \ + grep 'stdlib\.h' | head -n1 | sed 's/ [[[:alpha:]]]:.*//'` + rm -f conftest.c conftest.obj + if test -z "$SHOWINCLUDES_PREFIX" ; then + AC_MSG_ERROR([cannot determine the -showIncludes prefix]) + else + AC_MSG_RESULT(["$SHOWINCLUDES_PREFIX"]) + fi + # Check for 64-bit (cross-)compiler to use to build the 64-bit # version of the Explorer extension (and maybe other small # bits, too) needed when installing a 32-bit LibreOffice on a @@ -2389,6 +2434,7 @@ fi AC_SUBST(COMEX) AC_SUBST(MSPDB_PATH) AC_SUBST(USE_MINGW) +AC_SUBST(SHOWINCLUDES_PREFIX) if test "$_os" != "WINNT" -o "$WITH_MINGW" = "yes"; then @@ -2651,7 +2697,7 @@ dnl =================================================================== dnl Testing for C++ compiler and version... dnl =================================================================== if test "$_os" = "WINNT" -a "$WITH_MINGW" != "yes"; then - if test -e "$CC"; then + if test -n "$CC" -a -z "$CXX"; then CXX="$CC" fi fi @@ -6173,7 +6219,12 @@ fi dnl We also need to check for --with-gnu-cp if test -z "$with_gnu_cp"; then - AC_PATH_PROGS(GNUCP, gnucp cp) + # check the place where the good stuff is hidden on Solaris... + if test -x /usr/gnu/bin/cp; then + GNUCP=/usr/gnu/bin/cp + else + AC_PATH_PROGS(GNUCP, gnucp cp) + fi if test -z $GNUCP; then AC_MSG_ERROR([Neither gnucp nor cp found. Install GNU cp and/or specify --with-gnu-cp=/path/to/it]) fi @@ -6350,6 +6401,7 @@ if test "$test_gtk" = "yes"; then if test "$ENABLE_GTK" = "TRUE" ; then PKG_CHECK_MODULES(GTK, gtk+-2.0 >= 2.4 gdk-pixbuf-xlib-2.0 >= 2.2 ,,AC_MSG_ERROR([requirements to build the gtk-plugin not met. Use --disable-gtk or install the missing packages])) + PKG_CHECK_MODULES(GTHREAD, gthread-2.0,,AC_MSG_ERROR([requirements to build the gtk-plugin not met. Use --disable-gtk or install the missing packages])) BUILD_TYPE="$BUILD_TYPE GTK" if test "x$enable_systray" = "xyes"; then @@ -6385,6 +6437,8 @@ AC_SUBST(ENABLE_DBUS) AC_SUBST(ENABLE_SYSTRAY_GTK) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) +AC_SUBST(GTHREAD_CFLAGS) +AC_SUBST(GTHREAD_LIBS) PKG_CHECK_MODULES( LIBPNG, libpng, ENABLE_QUICKSTART_LIBPNG="TRUE", ENABLE_QUICKSTART_LIBPNG="" ) AC_SUBST(LIBPNG_LIBS) @@ -6474,6 +6528,29 @@ fi AC_SUBST(ENABLE_GSTREAMER) dnl =================================================================== +dnl Check whether the librsvg libraries are available. +dnl =================================================================== + +ENABLE_LIBRSVG="" +LIBRSVG_CFLAGS="" +LIBRSVG_LIBS="" + +if test "$test_librsvg" = "yes"; then + AC_MSG_CHECKING([whether to use librsvg]) + if test "x$enable_librsvg" != "xno" ; then + PKG_CHECK_MODULES( LIBRSVG, librsvg-2.0 >= 2.14,,AC_MSG_ERROR([requirements to build with librsvg support not met. Use --disable-librsvg or install the missing packages])) + ENABLE_LIBRSVG="TRUE" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi +fi + +AC_SUBST(ENABLE_LIBRSVG) +AC_SUBST(LIBRSVG_CFLAGS) +AC_SUBST(LIBRSVG_LIBS) + +dnl =================================================================== dnl Check whether the OpenGL libraries are available dnl =================================================================== @@ -6528,17 +6605,6 @@ fi AC_SUBST(SYSTEM_MESA_HEADERS) AC_SUBST(ENABLE_OPENGL) -# presenter extra ui extension? -AC_MSG_CHECKING([whether to build extra presenter ui]) -AS_IF([test "x$enable_ext_presenter_ui" = "xyes"], [ - AC_MSG_RESULT([yes]) - ENABLE_PRESENTER_EXTRA_UI=YES -],[ - AC_MSG_RESULT([no]) - ENABLE_PRESENTER_EXTRA_UI=NO -]) -AC_SUBST(ENABLE_PRESENTER_EXTRA_UI) - # presenter minimizer extension? AC_MSG_CHECKING([whether to build the Presentation Minimizer extension]) AS_IF([test "x$enable_ext_presenter_minimizer" = "xyes"], [ @@ -7849,6 +7915,205 @@ AC_SUBST(USE_XINERAMA) AC_SUBST(XINERAMA_LINK) dnl =================================================================== +dnl Test whether to build librsvg or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of librsvg]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_LIBRSVG=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_LIBRSVG=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_LIBRSVG=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_LIBRSVG) + +dnl =================================================================== +dnl Test whether to build gdk-pixbuf or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of gdk-pixbuf]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_GDKPIXBUF=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_GDKPIXBUF=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_GDKPIXBUF=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_GDKPIXBUF) + +dnl =================================================================== +dnl Test whether to build glib or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of glib]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_GLIB=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_GLIB=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_GLIB=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_GLIB) + +dnl =================================================================== +dnl Test whether to build gettext or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of gettext]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_GETTEXT=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_GETTEXT=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_GETTEXT=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_GETTEXT) + +dnl =================================================================== +dnl Test whether to build libcroco or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of libcroco]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_LIBCROCO=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_LIBCROCO=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_LIBCROCO=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_LIBCROCO) + +dnl =================================================================== +dnl Test whether to build pango or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of pango]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_PANGO=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_PANGO=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_PANGO=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_PANGO) + +dnl =================================================================== +dnl Test whether to build libgsf or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of libgsf]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_LIBGSF=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_LIBGSF=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_LIBGSF) + +dnl =================================================================== +dnl Test whether to build libpng or rely on the system version +dnl =================================================================== +AC_MSG_CHECKING([whether to build own version of libpng]) + +case "$_os" in + WINNT*) # Windows + SYSTEM_LIBPNG=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_LIBPNG=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_LIBPNG=YES + AC_MSG_RESULT([no]) + ;; +esac +AC_SUBST(SYSTEM_LIBPNG) + +dnl =================================================================== +dnl Test whether to build libjpeg or rely on the system version +dnl =================================================================== +dnl FIXME: this is currently because we have jpeg-6b for our filters +dnl and jpeg-8 as dependency for librsvg +dnl this should be unified into using only one version for both + +AC_MSG_CHECKING([whether to build own version of libjpeg]) + +if test "$SYSTEM_JPEG" == "YES"; then +SYSTEM_LIBJPEG=YES +else +case "$_os" in + WINNT*) # Windows + SYSTEM_LIBJPEG=NO + AC_MSG_RESULT([yes]) + ;; + Darwin*) + SYSTEM_LIBJPEG=NO + AC_MSG_RESULT([yes]) + ;; + *) + SYSTEM_LIBJPEG=YES + AC_MSG_RESULT([no]) + ;; +esac +fi + +if test "$SYSTEM_LIBJPEG" == "YES"; then + AC_MSG_RESULT([no]) +else + AC_MSG_RESULT([yes]) +fi +AC_SUBST(SYSTEM_LIBJPEG) + +dnl =================================================================== dnl Check for runtime JVM search path dnl =================================================================== if test "$SOLAR_JAVA" != ""; then @@ -7969,8 +8234,12 @@ if test "$ANT_HOME" != "NO_ANT_HOME"; then if test -f $ANT_HOME/lib/ant/ant.jar; then ANT_LIB="$ANT_HOME/lib/ant" else - AC_MSG_ERROR([Ant libraries not found!]) - fi + if test -f /usr/share/lib/ant/ant.jar; then + ANT_LIB=/usr/share/lib/ant + else + AC_MSG_ERROR([Ant libraries not found!]) + fi + fi fi fi fi @@ -8052,7 +8321,11 @@ if test "$SOLAR_JAVA" != "" && test "$with_junit" != "no"; then if test -e /usr/share/java/junit4.jar; then OOO_JUNIT_JAR=/usr/share/java/junit4.jar else - OOO_JUNIT_JAR=/usr/share/java/junit.jar + if test -e /usr/share/lib/java/junit.jar; then + OOO_JUNIT_JAR=/usr/share/lib/java/junit.jar + else + OOO_JUNIT_JAR=/usr/share/java/junit.jar + fi fi else OOO_JUNIT_JAR=$with_junit @@ -8107,6 +8380,7 @@ fi # check that the list is valid for lang in $WITH_LANG ; do test "$lang" = "ALL" && continue; + test "$lang" = "kid" && continue; # need to check for the exact string, so add space before and after the list of all languages all_langs=" $ALL_LANGS " test `echo "$all_langs" | sed "s|.* $lang .*|found|"` = "found" && continue; @@ -8164,6 +8438,14 @@ else fi AC_SUBST(UNIXWRAPPERNAME) +INSTALL_DIRNAME=`echo AC_PACKAGE_NAME | tr [[:upper:]] [[:lower:]]` +AC_MSG_CHECKING([for install dirname]) +if test -n "$with_install_dirname" -a "$with_install_dirname" != "no" -a "$with_install_dirname" != "yes" ; then + INSTALL_DIRNAME="$with_install_dirname" +fi +AC_MSG_RESULT([$INSTALL_DIRNAME]) +AC_SUBST(INSTALL_DIRNAME) + AC_MSG_CHECKING([whether to statically link to Gtk]) if test -n "$enable_static_gtk" && test "$enable_static_gtk" != "no"; then ENABLE_STATIC_GTK="TRUE" @@ -140,7 +140,7 @@ downloaditem() failed="$failed $2" wret=0 fi - if [ -f $2 -a -n "$md5sum" ]; then + if [ -f $2 -a -n "$3" -a -n "$md5sum" ]; then sum=`$md5sum $md5special $2 | sed "s/ .*//"` if [ "$sum" != "$3" ]; then echo checksum failure for $2 2>&1 | tee -a $logfile @@ -189,6 +189,27 @@ if [ "$COM" = "MSC" ]; then fi +if [ -f $start_dir/bootstrap.ver -a ! -d $start_dir/.git ] ; then + # bootstrap is from sources, so get the other source tarballs + . $start_dir/bootstrap.ver + lo_src_dir="$start_dir/src" + mkdir -p "$lo_src_dir" + for piece in `cat $start_dir/bin/repo-list` ; do + tarname="libreoffice-$piece-$lo_bootstrap_ver" + if [ ! -f "$TARFILE_LOCATION/$tarname.tar.bz2" ] ; then + downloaditem "http://download.documentfoundation.org/libreoffice/src/" "$tarname.tar.bz2" "" + fi + if [ ! -d $lo_src_dir/$tarname ] ; then + echo "Unpacking $tarname.tar.bz2..." + tar -xf "$TARFILE_LOCATION/$tarname.tar.bz2" -C "$lo_src_dir" + fi + # create symlinks + for dir in `find "$lo_src_dir/$tarname" -mindepth 1 -maxdepth 1 -type d` ; do + ln -sf "$dir" "$start_dir" + done + done +fi + rm $TARFILE_LOCATION/tmp/*-* cd $start_dir diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt b/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt index ede3f7cb4f42..18b3ca47bdf2 100644 --- a/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt +++ b/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt @@ -11,3 +11,4 @@ InstallFinalize 400 InstallInitialize 250 InstallValidate 200 ScheduleReboot ISSCHEDULEREBOOT 375 +SetInstalllocation 390 diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt b/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt index 17a47e8e9889..8708803f2cc9 100644 --- a/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt +++ b/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt @@ -122,6 +122,7 @@ setAllUsersProfile2K 51 ALLUSERSPROFILE [%ALLUSERSPROFILE] SetAllUsersProfileNT 51 ALLUSERSPROFILE [%SystemRoot]\Profiles\All Users setUserProfileNT 51 USERPROFILE [%USERPROFILE] SetARPInstallLocation 51 ARPINSTALLLOCATION [INSTALLLOCATION] +SetInstalllocation 51 RegisterExtensions [INSTALLLOCATION] NewProductFound 19 OOO_CUSTOMACTION_1 SameProductFound 19 OOO_CUSTOMACTION_2 SetLanguageSelected 51 LANG_SELECTED 1 diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt b/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt index defde2299409..13ac5a5aaf55 100644 --- a/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt +++ b/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt @@ -173,6 +173,7 @@ ScheduleReboot ISSCHEDULEREBOOT 3125 SelfRegModules 2850 SelfUnregModules 1100 SetARPInstallLocation 990 +SetInstalllocation 3140 SetODBCFolders 550 StartServices VersionNT 2800 StopServices VersionNT 950 diff --git a/instsetoo_native/util/openoffice.lst b/instsetoo_native/util/openoffice.lst index 9f7188d578e7..d5121ad0bee0 100644 --- a/instsetoo_native/util/openoffice.lst +++ b/instsetoo_native/util/openoffice.lst @@ -56,7 +56,7 @@ LibreOffice PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta2 POSTVERSIONEXTENSION POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 @@ -121,7 +121,7 @@ LibreOffice_wJRE PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta2 POSTVERSIONEXTENSION POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 @@ -185,7 +185,7 @@ LibreOffice_Dev PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta2 BASISROOTNAME LibO-dev UNIXBASISROOTNAME lo-dev POSTVERSIONEXTENSION @@ -261,7 +261,7 @@ URE PRODUCTEXTENSION BRANDPACKAGEVERSION 3 LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta2 LICENSENAME LGPL SETSTATICPATH 1 NOVERSIONINDIRNAME 1 @@ -299,7 +299,7 @@ LibreOffice_SDK PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta2 POSTVERSIONEXTENSION SDK POSTVERSIONEXTENSIONUNIX sdk BRANDPACKAGEVERSION 3 @@ -345,7 +345,7 @@ LibreOffice_Dev_SDK PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION + SHORT_PRODUCTEXTENSION beta2 BASISROOTNAME LibO-dev UNIXBASISROOTNAME lo-dev POSTVERSIONEXTENSION SDK @@ -397,7 +397,7 @@ OxygenOffice PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION rc2 + SHORT_PRODUCTEXTENSION beta2 POSTVERSIONEXTENSION POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 @@ -467,7 +467,7 @@ OxygenOffice_wJRE PRODUCTVERSION 3.4 PRODUCTEXTENSION LONG_PRODUCTEXTENSION - SHORT_PRODUCTEXTENSION rc2 + SHORT_PRODUCTEXTENSION beta2 POSTVERSIONEXTENSION POSTVERSIONEXTENSIONUNIX BRANDPACKAGEVERSION 3 diff --git a/ooo.lst.in b/ooo.lst.in index c698634d86ca..bcd039083db6 100644 --- a/ooo.lst.in +++ b/ooo.lst.in @@ -41,7 +41,6 @@ c441926f3a552ed3e5b274b62e86af16-STLport-4.0.tar.gz ca66e26082cab8bb817185a116db809b-redland-1.0.8.tar.gz d4c4d91ab3a8e52a2e69d48d34ef4df4-core.zip d70951c80dabecc2892c919ff5d07172-db-4.7.25.NC-custom.tar.gz -dbd5f3b47ed13132f04c685d608a7547-jpeg-6b.tar.gz e0707ff896045731ff99e99799606441-README_db-4.7.25.NC-custom.txt e81c2f0953aa60f8062c05a4673f2be0-Python-2.6.1.tar.bz2 e61d0364a30146aaa3001296f853b2b9-libxslt-1.1.26.tar.gz @@ -65,6 +64,17 @@ eeb2c7ddf0d302fba4bfc6e97eac9624-libbase-1.1.6.zip f94d9870737518e3b597f9265f4e9803-libserializer-1.1.6.zip ba2930200c9f019c2d93a8c88c651a0f-flow-engine-0.9.4.zip ff369e69ef0f0143beb5626164e87ae2-neon-0.29.5.tar.gz +3dd55b952826d2b32f51308f2f91aa89-gettext-0.18.1.1.tar.gz +9f6e85e1e38490c3956f4415bcd33e6e-glib-2.28.1.tar.gz +a7d6c5f2fe2d481149ed3ba807b5c043-gdk-pixbuf-2.23.0.tar.gz +3a84ac2da37cae5bf7ce616228c6fbde-libgsf-1.14.19.tar.gz +22ad1c8d3fda7e73b0798035f3dd96bc-pango-1.28.3.tar.gz +0611e099e807210cf738dcb41425d104-libcroco-0.6.2.tar.gz +d7a242ca43e33e1b63d3073f9d46a6a8-librsvg-2.32.1.tar.gz +220035f111ea045a51e290906025e8b5-libpng-1.5.1.tar.gz +a2c10c04f396a9ce72894beb18b4e1f9-jpeg-8c.tar.gz +c735eab2d659a96e5a594c9e8541ad63-zlib-1.2.5.tar.gz + 314e582264c36b3735466c522899aa07-icu4c-4_4_2-src.tgz 451ccf439a36a568653b024534669971-ConvertTextToNumber-1.3.2.oxt 47e1edaa44269bc537ae8cabebb0f638-JLanguageTool-1.0.0.tar.bz2 diff --git a/scp2/source/accessories/module_samples_accessories.ulf b/scp2/source/accessories/module_samples_accessories.ulf index 42166a600afb..b6a0f5229786 100644 --- a/scp2/source/accessories/module_samples_accessories.ulf +++ b/scp2/source/accessories/module_samples_accessories.ulf @@ -284,10 +284,16 @@ en-US = "Lao" [STR_DESC_MODULE_LANGPACK_LO] en-US = "Installs Lao support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_NS] +[STR_NAME_MODULE_LANGPACK_MY] +en-US = "Burmese" + +[STR_DESC_MODULE_LANGPACK_MY] +en-US = "Installs Burmese (Myanmar) support in %PRODUCTNAME %PRODUCTVERSION" + +[STR_NAME_MODULE_LANGPACK_NSO] en-US = "Northern Sotho" -[STR_DESC_MODULE_LANGPACK_NS] +[STR_DESC_MODULE_LANGPACK_NSO] en-US = "Installs Northern Sotho support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_BN] @@ -428,10 +434,10 @@ en-US = "Ukrainian" [STR_DESC_MODULE_LANGPACK_UK] en-US = "Installs Ukrainian support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_BE_BY] +[STR_NAME_MODULE_LANGPACK_BE] en-US = "Belarusian" -[STR_DESC_MODULE_LANGPACK_BE_BY] +[STR_DESC_MODULE_LANGPACK_BE] en-US = "Installs Belarusian support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_SL] diff --git a/scp2/source/accessories/module_templates_accessories.ulf b/scp2/source/accessories/module_templates_accessories.ulf index 31411cb4743b..da17fc11244f 100644 --- a/scp2/source/accessories/module_templates_accessories.ulf +++ b/scp2/source/accessories/module_templates_accessories.ulf @@ -279,10 +279,16 @@ en-US = "Lao" [STR_DESC_MODULE_LANGPACK_LO] en-US = "Installs Lao support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_NS] +[STR_NAME_MODULE_LANGPACK_MY] +en-US = "Burmese" + +[STR_DESC_MODULE_LANGPACK_MY] +en-US = "Installs Burmese (Myanmar) support in %PRODUCTNAME %PRODUCTVERSION" + +[STR_NAME_MODULE_LANGPACK_NSO] en-US = "Northern Sotho" -[STR_DESC_MODULE_LANGPACK_NS] +[STR_DESC_MODULE_LANGPACK_NSO] en-US = "Installs Northern Sotho support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_BN] @@ -423,10 +429,10 @@ en-US = "Ukrainian" [STR_DESC_MODULE_LANGPACK_UK] en-US = "Installs Ukrainian support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_BE_BY] +[STR_NAME_MODULE_LANGPACK_BE] en-US = "Belarusian" -[STR_DESC_MODULE_LANGPACK_BE_BY] +[STR_DESC_MODULE_LANGPACK_BE] en-US = "Installs Belarusian support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_SL] diff --git a/scp2/source/base/registryitem_base.scp b/scp2/source/base/registryitem_base.scp index 833ed3905241..833ed3905241 100755..100644 --- a/scp2/source/base/registryitem_base.scp +++ b/scp2/source/base/registryitem_base.scp diff --git a/scp2/source/calc/registryitem_calc.scp b/scp2/source/calc/registryitem_calc.scp index 8220610ec5c3..8220610ec5c3 100755..100644 --- a/scp2/source/calc/registryitem_calc.scp +++ b/scp2/source/calc/registryitem_calc.scp diff --git a/scp2/source/canvas/mtfrenderer.scp b/scp2/source/canvas/mtfrenderer.scp index fa2a3f908a49..fa2a3f908a49 100755..100644 --- a/scp2/source/canvas/mtfrenderer.scp +++ b/scp2/source/canvas/mtfrenderer.scp diff --git a/scp2/source/draw/registryitem_draw.scp b/scp2/source/draw/registryitem_draw.scp index d722319649cd..d722319649cd 100755..100644 --- a/scp2/source/draw/registryitem_draw.scp +++ b/scp2/source/draw/registryitem_draw.scp diff --git a/scp2/source/extensions/module_extensions_lightproof.ulf b/scp2/source/extensions/module_extensions_lightproof.ulf index 944f4e745f34..b78fe12a00d7 100644 --- a/scp2/source/extensions/module_extensions_lightproof.ulf +++ b/scp2/source/extensions/module_extensions_lightproof.ulf @@ -274,10 +274,16 @@ en-US = "Lao" [STR_DESC_MODULE_LANGPACK_LO] en-US = "Installs Lao support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_NS] +[STR_NAME_MODULE_LANGPACK_MY] +en-US = "Burmese" + +[STR_DESC_MODULE_LANGPACK_MY] +en-US = "Installs Burmese (Myanmar) support in %PRODUCTNAME %PRODUCTVERSION" + +[STR_NAME_MODULE_LANGPACK_NSO] en-US = "Northern Sotho" -[STR_DESC_MODULE_LANGPACK_NS] +[STR_DESC_MODULE_LANGPACK_NSO] en-US = "Installs Northern Sotho support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_BN] @@ -418,10 +424,10 @@ en-US = "Ukrainian" [STR_DESC_MODULE_LANGPACK_UK] en-US = "Installs Ukrainian support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_BE_BY] +[STR_NAME_MODULE_LANGPACK_BE] en-US = "Belarusian" -[STR_DESC_MODULE_LANGPACK_BE_BY] +[STR_DESC_MODULE_LANGPACK_BE] en-US = "Installs Belarusian support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_SL] diff --git a/scp2/source/extensions/module_extensions_sun_templates.ulf b/scp2/source/extensions/module_extensions_sun_templates.ulf index 944f4e745f34..b78fe12a00d7 100644 --- a/scp2/source/extensions/module_extensions_sun_templates.ulf +++ b/scp2/source/extensions/module_extensions_sun_templates.ulf @@ -274,10 +274,16 @@ en-US = "Lao" [STR_DESC_MODULE_LANGPACK_LO] en-US = "Installs Lao support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_NS] +[STR_NAME_MODULE_LANGPACK_MY] +en-US = "Burmese" + +[STR_DESC_MODULE_LANGPACK_MY] +en-US = "Installs Burmese (Myanmar) support in %PRODUCTNAME %PRODUCTVERSION" + +[STR_NAME_MODULE_LANGPACK_NSO] en-US = "Northern Sotho" -[STR_DESC_MODULE_LANGPACK_NS] +[STR_DESC_MODULE_LANGPACK_NSO] en-US = "Installs Northern Sotho support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_BN] @@ -418,10 +424,10 @@ en-US = "Ukrainian" [STR_DESC_MODULE_LANGPACK_UK] en-US = "Installs Ukrainian support in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_LANGPACK_BE_BY] +[STR_NAME_MODULE_LANGPACK_BE] en-US = "Belarusian" -[STR_DESC_MODULE_LANGPACK_BE_BY] +[STR_DESC_MODULE_LANGPACK_BE] en-US = "Installs Belarusian support in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_LANGPACK_SL] diff --git a/scp2/source/impress/registryitem_impress.scp b/scp2/source/impress/registryitem_impress.scp index 063bcf91f4eb..063bcf91f4eb 100755..100644 --- a/scp2/source/impress/registryitem_impress.scp +++ b/scp2/source/impress/registryitem_impress.scp diff --git a/scp2/source/ooo/directory_ooo_macosx.scp b/scp2/source/ooo/directory_ooo_macosx.scp index ee4ad7522938..ee4ad7522938 100755..100644 --- a/scp2/source/ooo/directory_ooo_macosx.scp +++ b/scp2/source/ooo/directory_ooo_macosx.scp diff --git a/scp2/source/ooo/file_library_ooo.scp b/scp2/source/ooo/file_library_ooo.scp index 922c07a5754a..bbca5d19a91e 100755..100644 --- a/scp2/source/ooo/file_library_ooo.scp +++ b/scp2/source/ooo/file_library_ooo.scp @@ -803,17 +803,6 @@ End #ifdef WNT -File gid_File_Lib_relnotes - BIN_FILE_BODY; - Styles = (PACKED, BINARYTABLE, BINARYTABLE_ONLY, DONTRENAMEINPATCH); - Dir = SCP2_OOO_BIN_DIR; - Name = "relnotes.dll"; -End - -#endif - -#ifdef WNT - File gid_File_Lib_Patchmsi TXT_FILE_BODY; Name = "patchmsi.dll"; @@ -1729,6 +1718,153 @@ STD_LIB_FILE(gid_File_Lib_Unordf, unordf) STD_LIB_FILE( gid_File_Lib_For, for) STD_LIB_FILE( gid_File_Lib_Forui, forui) +// RSVG and dependencies +#if ! defined (SYSTEM_GETTEXT) +File gid_File_Lib_Intl + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libintl.8.dylib"; + #elif defined WNT + Name = "intl.dll"; + #endif +End +#endif + +#if ! defined SYSTEM_GLIB +File gid_File_Lib_Glib + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libglib-2.0.0.dylib"; + #elif defined WNT + Name = "libglib-2.0-0.dll"; + #endif +End +File gid_File_Lib_Gthread + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libgthread-2.0.0.dylib"; + #elif defined WNT + Name = "libgthread-2.0-0.dll"; + #endif +End +File gid_File_Lib_Gobject + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libgobject-2.0.0.dylib"; + #elif defined WNT + Name = "libgobject-2.0-0.dll"; + #endif +End +File gid_File_Lib_Gio + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libgio-2.0.0.dylib"; + #elif defined WNT + Name = "libgio-2.0-0.dll"; + #endif +End +File gid_File_Lib_Gmodule + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libgmodule-2.0.0.dylib"; + #elif defined WNT + Name = "libgmodule-2.0-0.dll"; + #endif +End +#endif + +#if ! defined SYSTEM_GDKPIXBUF +File gid_File_Lib_Gdkpixbuf + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libgdk_pixbuf-2.0.0.dylib"; + #elif defined WNT + Name = "libgdk_pixbuf-2.0-0.dll"; + #endif +End +#endif + +#if ! defined SYSTEM_LIBCROCO +File gid_File_Lib_Libcroco + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libcroco-0.6.3.0.1.dylib"; + #elif defined WNT + Name = "libcroco-0.6-3.dll"; + #endif +End +#endif + +#if ! defined SYSTEM_PANGO +File gid_File_Lib_Libpango + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libpango-1.0.0.dylib"; + #elif defined WNT + Name = "libpango-1.0-0.dll"; + #endif +End +File gid_File_Lib_Libpangocairo + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "libpangocairo-1.0.0.dylib"; + #elif defined WNT + Name = "libpangocairo-1.0-0.dll"; + #endif +End +#if defined WNT +File gid_File_Lib_Libpangowin32 + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + Name = "libpangowin32-1.0-0.dll"; +End +#endif +#endif + +#if ! defined SYSTEM_LIBGSF +File gid_File_Lib_Libgsf + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; +#ifdef WNT + Name = "gsf-1.dll"; +#endif +End +#endif + +#if ! defined SYSTEM_LIBRSVG +File gid_File_Lib_Librsvg + TXT_FILE_BODY; + Styles = (PACKED); + Dir = SCP2_OOO_BIN_DIR; + #ifdef MACOSX + Name = "librsvg-2.2.dylib"; + #elif defined WNT + Name = "librsvg-2-2.dll"; + #endif +End +#endif #ifdef WNT File gid_File_Lib_sellangmsi diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp index 0c618093bc85..bd291fb786e2 100644 --- a/scp2/source/ooo/file_ooo.scp +++ b/scp2/source/ooo/file_ooo.scp @@ -2133,3 +2133,4 @@ End // UnixRights = 444; // End // #endif + diff --git a/scp2/source/ooo/makefile.mk b/scp2/source/ooo/makefile.mk index 1df99f36fb3e..4dba9553e8b0 100644 --- a/scp2/source/ooo/makefile.mk +++ b/scp2/source/ooo/makefile.mk @@ -246,6 +246,38 @@ SCPDEFS+=-DMINGW_GCCDLL=\""$(MINGW_GCCDLL)"\" SCPDEFS+=-DMINGW_GXXDLL=\""$(MINGW_GXXDLL)"\" .ENDIF +.IF "$(SYSTEM_GDKPIXBUF)" == "YES" +SCPDEFS+=-DSYSTEM_GDKPIXBUF +.ENDIF + +.IF "$(SYSTEM_GETTEXT)" == "YES" +SCPDEFS+=-DSYSTEM_GETTEXT +.ENDIF + +.IF "$(SYSTEM_GLIB)" == "YES" +SCPDEFS+=-DSYSTEM_GLIB +.ENDIF + +.IF "$(SYSTEM_LIBCROCO)" == "YES" +SCPDEFS+=-DSYSTEM_LIBCROCO +.ENDIF + +.IF "$(SYSTEM_LIBJPEG)" == "YES" +SCPDEFS+=-DSYSTEM_LIBJPEG +.ENDIF + +.IF "$(SYSTEM_LIBRSVG)" == "YES" +SCPDEFS+=-DSYSTEM_LIBRSVG +.ENDIF + +.IF "$(SYSTEM_PANGO)" == "YES" +SCPDEFS+=-DSYSTEM_PANGO +.ENDIF + +.IF "$(SYSTEM_LIBGSF)" == "YES" +SCPDEFS+=-DSYSTEM_LIBGSF +.ENDIF + .IF "$(ENABLE_LOMENUBAR)" == "TRUE" SCPDEFS+=-DENABLE_LOMENUBAR .ENDIF diff --git a/scp2/source/ooo/module_helppack.ulf b/scp2/source/ooo/module_helppack.ulf index 64604c3cf424..b9bb3616fabd 100644 --- a/scp2/source/ooo/module_helppack.ulf +++ b/scp2/source/ooo/module_helppack.ulf @@ -271,10 +271,10 @@ en-US = "Lao" [STR_DESC_MODULE_HELPPACK_LO] en-US = "Installs Lao help in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_HELPPACK_NS] +[STR_NAME_MODULE_HELPPACK_NSO] en-US = "Northern Sotho" -[STR_DESC_MODULE_HELPPACK_NS] +[STR_DESC_MODULE_HELPPACK_NSO] en-US = "Installs Northern Sotho help in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_HELPPACK_BN] @@ -421,10 +421,10 @@ en-US = "Ukrainian" [STR_DESC_MODULE_HELPPACK_UK] en-US = "Installs Ukrainian help in %PRODUCTNAME %PRODUCTVERSION" -[STR_NAME_MODULE_HELPPACK_BE_BY] +[STR_NAME_MODULE_HELPPACK_BE] en-US = "Belarusian" -[STR_DESC_MODULE_HELPPACK_BE_BY] +[STR_DESC_MODULE_HELPPACK_BE] en-US = "Installs Belarusian help in %PRODUCTNAME %PRODUCTVERSION" [STR_NAME_MODULE_HELPPACK_SL] diff --git a/scp2/source/ooo/module_hidden_ooo.scp b/scp2/source/ooo/module_hidden_ooo.scp index 4e4fbb9fe678..d2d46cd9f1e0 100644 --- a/scp2/source/ooo/module_hidden_ooo.scp +++ b/scp2/source/ooo/module_hidden_ooo.scp @@ -303,6 +303,32 @@ Module gid_Module_Root_Files_5 Default = YES; Styles = (HIDDEN_ROOT); Files = (gid_File_Dat_Root5, +#if ! defined SYSTEM_GETTEXT + gid_File_Lib_Intl, +#endif +#if ! defined SYSTEM_GLIB + gid_File_Lib_Glib, + gid_File_Lib_Gobject, + gid_File_Lib_Gthread, + gid_File_Lib_Gmodule, + gid_File_Lib_Gio, +#endif +#if ! defined SYSTEM_GDKPIXBUF + gid_File_Lib_Gdkpixbuf, +#endif +#if ! defined SYSTEM_LIBCROCO + gid_File_Lib_Libcroco, +#endif +#if ! defined SYSTEM_PANGO + gid_File_Lib_Libpango, + gid_File_Lib_Libpangocairo, +#ifdef WNT + gid_File_Lib_Libpangowin32, +#endif +#endif +#if ! defined SYSTEM_LIBGSF + gid_File_Lib_Libgsf, +#endif gid_File_Lib_Dict_Ja, gid_File_Lib_Dict_Zh, gid_File_Lib_Collator_Data, @@ -430,7 +456,6 @@ Module gid_Module_Root_Files_5 gid_File_Lib_Lomenubar, #endif gid_File_Lib_sn_tools, - gid_File_Lib_relnotes, GID_FILE_LIB_WPD, gid_File_Lib_Mingw_GccS, gid_File_Lib_Mingw_Stdcpp, @@ -862,4 +887,3 @@ End // Styles = (HIDDEN_ROOT); // End // #endif - diff --git a/scp2/source/ooo/module_lang_template.scp b/scp2/source/ooo/module_lang_template.scp index f801a6201dc6..f801a6201dc6 100755..100644 --- a/scp2/source/ooo/module_lang_template.scp +++ b/scp2/source/ooo/module_lang_template.scp diff --git a/scp2/source/ooo/module_langpack.ulf b/scp2/source/ooo/module_langpack.ulf index 3f9e27bf1784..7e1f9e6e8d3e 100644 --- a/scp2/source/ooo/module_langpack.ulf +++ b/scp2/source/ooo/module_langpack.ulf @@ -271,10 +271,16 @@ en-US = "Lao" [STR_DESC_MODULE_LANGPACK_LO] en-US = "Installs the Lao user interface" -[STR_NAME_MODULE_LANGPACK_NS] +[STR_NAME_MODULE_LANGPACK_MY] +en-US = "Burmese" + +[STR_DESC_MODULE_LANGPACK_MY] +en-US = "Installs the Burmese (Myanmar) user interface" + +[STR_NAME_MODULE_LANGPACK_NSO] en-US = "Northern Sotho" -[STR_DESC_MODULE_LANGPACK_NS] +[STR_DESC_MODULE_LANGPACK_NSO] en-US = "Installs the Northern Sotho user interface" [STR_NAME_MODULE_LANGPACK_BN] @@ -421,10 +427,10 @@ en-US = "Ukrainian" [STR_DESC_MODULE_LANGPACK_UK] en-US = "Installs the Ukrainian user interface" -[STR_NAME_MODULE_LANGPACK_BE_BY] +[STR_NAME_MODULE_LANGPACK_BE] en-US = "Belarusian" -[STR_DESC_MODULE_LANGPACK_BE_BY] +[STR_DESC_MODULE_LANGPACK_BE] en-US = "Installs the Belarusian user interface" [STR_NAME_MODULE_LANGPACK_SL] diff --git a/scp2/source/ooo/shortcut_ooo.scp b/scp2/source/ooo/shortcut_ooo.scp index cec7ed172b52..9f400afbbed0 100644 --- a/scp2/source/ooo/shortcut_ooo.scp +++ b/scp2/source/ooo/shortcut_ooo.scp @@ -87,6 +87,13 @@ Shortcut gid_Shortcut_Lib_Hsqldb_2 Styles = (NETWORK, RELATIVE); End +Shortcut gid_Shortcut_Lib_Libcroco + FileID = gid_File_Lib_Libcroco; + Dir = SCP2_OOO_BIN_DIR; + Name = "libcroco-0.6.3.dylib"; + Styles = (NETWORK, RELATIVE); +End + #endif //i44154 -end- diff --git a/scp2/source/ooo/ure.scp b/scp2/source/ooo/ure.scp index 6d61daff3df0..6d61daff3df0 100755..100644 --- a/scp2/source/ooo/ure.scp +++ b/scp2/source/ooo/ure.scp diff --git a/scp2/source/ooo/ure_into_ooo.scp b/scp2/source/ooo/ure_into_ooo.scp index 397d8fd8f2da..397d8fd8f2da 100755..100644 --- a/scp2/source/ooo/ure_into_ooo.scp +++ b/scp2/source/ooo/ure_into_ooo.scp diff --git a/scp2/source/ooo/ure_standalone.scp b/scp2/source/ooo/ure_standalone.scp index 8579139f95e3..8579139f95e3 100755..100644 --- a/scp2/source/ooo/ure_standalone.scp +++ b/scp2/source/ooo/ure_standalone.scp diff --git a/scp2/source/ooo/windowscustomaction_ooo.scp b/scp2/source/ooo/windowscustomaction_ooo.scp index dd0874492ec9..f35482e4dd39 100755..100644 --- a/scp2/source/ooo/windowscustomaction_ooo.scp +++ b/scp2/source/ooo/windowscustomaction_ooo.scp @@ -210,12 +210,12 @@ End WindowsCustomAction gid_Customaction_Register_Extensions Name = "RegisterExtensions"; - Typ = "65"; + Typ = "1025"; Source = "shlxtmsi.dll"; Target = "RegisterExtensions"; Inbinarytable = 1; - Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end"); - Assignment2 = ("AdminExecuteSequence", "Not REMOVE=\"ALL\"", "end"); + Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "behind_SetInstalllocation"); + Assignment2 = ("AdminExecuteSequence", "Not REMOVE=\"ALL\"", "behind_SetInstalllocation"); End WindowsCustomAction gid_Customaction_Remove_Extensions @@ -273,8 +273,8 @@ WindowsCustomAction gid_Customaction_CopyExtensionData Source = "shlxtmsi.dll"; Target = "copyExtensionData"; Inbinarytable = 1; - Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "RegisterExtensions"); - Assignment2 = ("AdminExecuteSequence", "", "RegisterExtensions"); + Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end"); + Assignment2 = ("AdminExecuteSequence", "", "end"); End WindowsCustomAction gid_Customaction_RegCleanOld @@ -459,24 +459,6 @@ WindowsCustomAction gid_Customaction_CheckVersions Assignment2 = ("InstallUISequence", "NOT Installed", "NewProductFound"); End -WindowsCustomAction gid_Customaction_ShowReleaseNotes1 - Name = "ShowReleaseNotesBefore"; - Typ = "65"; - Source = "relnotes.dll"; - Target = "ShowReleaseNotesBefore"; - Inbinarytable = 1; - Assignment1 = ("InstallExecuteSequence", "(Not Installed or ISPATCH) and Not REMOVE=\"ALL\"", "behind_InstallValidate"); -End - -WindowsCustomAction gid_Customaction_ShowReleaseNotes2 - Name = "ShowReleaseNotesAfter"; - Typ = "65"; - Source = "relnotes.dll"; - Target = "ShowReleaseNotesAfter"; - Inbinarytable = 1; - Assignment1 = ("InstallExecuteSequence", "(Not Installed or ISPATCH) and Not REMOVE=\"ALL\"", "end"); -End - WindowsCustomAction gid_Customaction_SelectLanguage Name = "SelectLanguage"; Typ = "321"; @@ -492,8 +474,8 @@ WindowsCustomAction gid_Customaction_RebaseLibrariesonproperties Source = "rebase.dll"; Target = "RebaseLibrariesOnProperties"; Inbinarytable = 1; - Assignment1 = ("InstallExecuteSequence", "Not REMOVE=\"ALL\"", "end"); - Assignment2 = ("AdminExecuteSequence", "Not REMOVE=\"ALL\"", "end"); + Assignment1 = ("InstallExecuteSequence", "VersionNT < 600 And Not REMOVE=\"ALL\"", "end"); + Assignment2 = ("AdminExecuteSequence", "VersionNT < 600 And Not REMOVE=\"ALL\"", "end"); End WindowsCustomAction gid_Customaction_LookForRegisteredExtensions diff --git a/scp2/source/writer/registryitem_writer.scp b/scp2/source/writer/registryitem_writer.scp index 6e3d9741430b..6e3d9741430b 100755..100644 --- a/scp2/source/writer/registryitem_writer.scp +++ b/scp2/source/writer/registryitem_writer.scp diff --git a/set_soenv.in b/set_soenv.in index ee990a9f2800..569a867f4677 100755 --- a/set_soenv.in +++ b/set_soenv.in @@ -77,7 +77,7 @@ my ( $oldPATH, $SRC_ROOT, $SO_HOME, $JAVA_HOME, $JDK, $JAVAFLAGS, $OOO_SHELL, $UPD, $WORK_STAMP, $gb_REPOS, $BUILD_TYPE, $SOLARSRC, $DEVROOT, $SOLARVER, $SOLARVERSION, $WORKDIR, $OUTDIR, $SOLARENV, $SOLARDEFIMG, $DMAKEROOT, $CLASSPATH, $XCLASSPATH, $COMPATH, - $MSPDB_PATH, $MIDL_PATH, $CSC_PATH, + $MSPDB_PATH, $MIDL_PATH, $CSC_PATH, $SHOWINCLUDES_PREFIX, $PATH, $SOLAREXTRAINC, $SOLAREXTRALIB, $SOLARLIB, $JAVALIB, $SOLARINC, $FRAMEWORKSHOME, $COMEX, $PERL, $COMP_ENV, $ILIB, $JAVAHOME, $WINDOWS_SDK_HOME, $DIRECTXSDK_LIB, $DOTNET_FRAMEWORK_HOME, @@ -123,12 +123,8 @@ $JDK = '@JDK@'; $JAVAFLAGS = '@JAVAFLAGS@'; $MINGW = '@WITH_MINGW@'; # use MinGW for Windows build $USE_MINGW = '@USE_MINGW@'; # use MinGW in cygwin or pure-mingw -if ( $MINGW eq "yes" ) -{ $CC = '@CC@'; # C compiler - $CXX = '@CXX@'; } # C++ compiler -else -{ $CC = PathFormat('@CC@'); # C compiler - $CXX = PathFormat('@CXX@'); } # C++ compiler +$CC = '@CC@'; # C compiler +$CXX = '@CXX@'; # C++ compiler $MOZILLA_VERSION = '@MOZILLA_VERSION@'; # mozilla version to use to build mozilla $MOZILLA_TOOLKIT = '@MOZILLA_TOOLKIT@'; # GUI toolkit to use to build mozilla $FLIPCMD = ""; # Flip '/' to '\' wrapper (only for winnt) @@ -199,7 +195,7 @@ if ( $platform =~ m/solaris/ ) $CPU = "I"; $CPUNAME = "INTEL"; $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386"; - $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."motif21"; + $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."xawt"; $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."i386".$ds."native_threads"; } @@ -215,7 +211,7 @@ if ( $platform =~ m/solaris/ ) $CPU = "S"; $CPUNAME = "SPARC"; $JRELIBDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc"; - $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."motif21"; + $JRETOOLKITDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."xawt"; $JRETHREADDIR = '$JAVA_HOME'.$ds."jre".$ds."lib".$ds."sparc".$ds."native_threads"; } @@ -639,6 +635,7 @@ elsif ( $platform =~ m/cygwin|mingw32/ ) $MSPDB_PATH = PathFormat('@MSPDB_PATH@'); $MIDL_PATH = PathFormat('@MIDL_PATH@'); $CSC_PATH = PathFormat('@CSC_PATH@'); + $SHOWINCLUDES_PREFIX = '@SHOWINCLUDES_PREFIX@'; $WINDOWS_SDK_HOME = PathFormat('@WINDOWS_SDK_HOME@'); $DIRECTXSDK_LIB = PathFormat('@DIRECTXSDK_LIB@'); $USE_DIRECTX5 = ""; @@ -1558,12 +1555,13 @@ ToFile( "DEFAULT_TO_ENGLISH_FOR_PACKING", "yes", "e" ); ToFile( "ENABLE_GTK", "@ENABLE_GTK@", "e" ); ToFile( "GTK_CFLAGS", "@GTK_CFLAGS@", "e" ); ToFile( "GTK_LIBS", "@GTK_LIBS@", "e" ); +ToFile( "GTHREAD_CFLAGS", "@GTHREAD_CFLAGS@", "e" ); +ToFile( "GTHREAD_LIBS", "@GTHREAD_LIBS@", "e" ); ToFile( "ENABLE_SYSTRAY_GTK", "@ENABLE_SYSTRAY_GTK@", "e" ); ToFile( "ENABLE_STATIC_GTK", "@ENABLE_STATIC_GTK@", "e" ); ToFile( "ENABLE_CAIRO", "@ENABLE_CAIRO@", "e" ); ToFile( "ENABLE_OPENGL", "@ENABLE_OPENGL@", "e" ); ToFile( "ENABLE_PDFIMPORT", "@ENABLE_PDFIMPORT@", "e" ); -ToFile( "ENABLE_PRESENTER_EXTRA_UI","@ENABLE_PRESENTER_EXTRA_UI@","e" ); ToFile( "ENABLE_MINIMIZER", "@ENABLE_MINIMIZER@","e" ); ToFile( "ENABLE_PRESENTER_SCREEN","@ENABLE_PRESENTER_SCREEN@","e" ); ToFile( "ENABLE_REPORTBUILDER","@ENABLE_REPORTBUILDER@","e" ); @@ -1987,6 +1985,15 @@ ToFile( "MDDS_CPPFLAGS", "@MDDS_CPPFLAGS@", "e" ); ToFile( "SYSTEM_MDDS", "@SYSTEM_MDDS@", "e" ); ToFile( "SYSTEM_VIGRA", "@SYSTEM_VIGRA@", "e" ); ToFile( "SYSTEM_NEON", "@SYSTEM_NEON@", "e" ); +ToFile( "SYSTEM_LIBRSVG", "@SYSTEM_LIBRSVG@", "e" ); +ToFile( "SYSTEM_GDKPIXBUF", "@SYSTEM_GDKPIXBUF@", "e" ); +ToFile( "SYSTEM_GLIB", "@SYSTEM_GLIB@", "e" ); +ToFile( "SYSTEM_GETTEXT", "@SYSTEM_GETTEXT@", "e" ); +ToFile( "SYSTEM_LIBCROCO", "@SYSTEM_LIBCROCO@", "e" ); +ToFile( "SYSTEM_PANGO", "@SYSTEM_PANGO@", "e" ); +ToFile( "SYSTEM_LIBGSF", "@SYSTEM_LIBGSF@", "e" ); +ToFile( "SYSTEM_LIBPNG", "@SYSTEM_LIBPNG@", "e" ); +ToFile( "SYSTEM_LIBJPEG", "@SYSTEM_LIBJPEG@", "e" ); ToFile( "NEON_VERSION", "@NEON_VERSION@", "e" ); ToFile( "NEON_LIBS", "@NEON_LIBS@", "e" ); ToFile( "NEON_CFLAGS", "@NEON_CFLAGS@", "e" ); 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 |