summaryrefslogtreecommitdiff
path: root/oowintool
diff options
context:
space:
mode:
Diffstat (limited to 'oowintool')
-rwxr-xr-xoowintool336
1 files changed, 0 insertions, 336 deletions
diff --git a/oowintool b/oowintool
deleted file mode 100755
index fc18a8dd0..000000000
--- a/oowintool
+++ /dev/null
@@ -1,336 +0,0 @@
-#!/usr/bin/perl -w
-
-use File::Copy;
-
-my $output_format = 'u';
-
-sub reg_get_value($)
-{
- # it is believed that the registry moves keys around
- # depending on OS version, this will de-mangle that
- my $key = shift;
- my $fhandle;
- my $value;
-
- open ($fhandle, "/proc/registry/$key") || return;
- # reg keys have 0x00 0x5c at the end
- $value = (split /\0/, <$fhandle>)[0];
- close ($fhandle);
-
- if ( defined $value ) {
- chomp ($value);
- $value =~ s|\r\n||;
-# print "Value '$value' at '$key'\n";
- }
-
- return $value;
-}
-
-sub reg_find_key($)
-{
- # it is believed that the registry moves keys around
- # depending on OS version, this will de-mangle that
- my $key = shift;
- $key =~ s| |\\ |;
- $key = `cd /proc/registry/ ; ls $key`;
-
- return $key;
-}
-
-sub print_syntax()
-{
- print "oowintool [option] ...\n";
- print " encoding options\n";
- print " -w - windows form\n";
- print " -u - unix form (default)\n";
- print " commands:\n";
- print " --msvc-ver - dump version of MSVC eg. 6.0\n";
- print " --msvc-copy-dlls <dest> - copy msvc[pr]??.dlls into <dest>/msvcp??/\n";
- print " --msvc-productdir - dump productdir\n";
- print " --msvs-productdir - dump productdir\n";
- print " --dotnetsdk-dir - dump .NET SDK path\n";
- print " --csc-compilerdir - dump .NET SDK compiler path\n";
- print " --windows-sdk-home - dump Windows SDK install dir\n";
- print " --jdk-home - dump the jdk install dir\n";
- print " --nsis-dir - dump NSIS path\n";
- print " --help - this message\n";
-}
-
-sub cygpath($$$)
-{
- my ($path, $input_format, $format) = @_;
-
- return $path if ( ! defined $path );
- # Strip trailing path separators
- if ($input_format eq 'u') {
- $path =~ s|/*\s*$||;
- } else {
- $path =~ s|\\*\s*$||;
- }
-
- # 'Unterminated quoted string errors' from 'ash' when
- # forking cygpath so - reimplement cygpath in perl [ gack ]
- if ($format eq 'u' && $input_format eq 'w') {
- $path =~ s|\\|/|g;
- $path =~ s|([a-zA-Z]):/|/cygdrive/$1/|g;
- }
- elsif ($format eq 'w' && $input_format eq 'u') {
- $path =~ s|/cygdrive/([a-zA-Z])/|/$1/|g;
- $path =~ s|/|\\|g;
- }
-
- return $path;
-}
-
-sub print_path($$)
-{
- my ($path, $unix) = @_;
-
- $path = cygpath ($path, $unix, $output_format);
-
- print $path;
-}
-
-sub print_windows_sdk_home()
-{
- my ($value, $key);
- $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/v6.1/InstallationFolder');
- if (!defined $value)
- {
- $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Microsoft SDKs/Windows/CurrentInstallFolder');
- }
- if (!defined $value)
- {
- $value = reg_get_value ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSDK/Directories/Install Dir');
- }
- if (!defined $value)
- {
- $key = reg_find_key ('HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/MicrosoftSDK/InstalledSDKs/*/Install Dir');
- $value = reg_get_value ($key);
- }
- if (!defined $value)
- {
- my $dir = cygpath (find_msvc()->{'product_dir'}, 'w', $output_format);
- $value = `/bin/find "$dir" -iname platformsdk | head -n 1`;
- }
-
- defined $value || die "Windows Sdk not found";
-
- print cygpath ($value, 'w', $output_format);
-}
-
-my %msvs_2008 = (
- 'ver' => '9.0',
- 'key' => 'Microsoft/VisualStudio/9.0/Setup/VS/ProductDir',
- 'dll_path' => 'VC/redist/x86/Microsoft.VC90.CRT',
- 'dll_suffix' => '90'
-);
-my %msvc_2008 = (
- 'ver' => '9.0',
- 'key' => 'Microsoft/VisualStudio/9.0/Setup/VC/ProductDir',
- 'dll_path' => 'redist/x86/Microsoft.VC90.CRT',
- 'dll_suffix' => '90'
-);
-my %msvs_express_2008 = (
- 'ver' => '9.0',
- 'key' => 'Microsoft/VCExpress/9.0/Setup/VS/ProductDir',
- 'dll_path' => 'VC/redist/x86/Microsoft.VC90.CRT',
- 'dll_suffix' => '90'
-);
-my %msvc_express_2008 = (
- 'ver' => '9.0',
- 'key' => 'Microsoft/VCExpress/9.0/Setup/VC/ProductDir',
- 'dll_path' => 'redist/x86/Microsoft.VC90.CRT',
- 'dll_suffix' => '90'
-);
-my %msvs_2010 = (
- 'ver' => '10.0',
- 'key' => 'Microsoft/VisualStudio/10.0/Setup/VS/ProductDir',
- 'dll_path' => 'VC/redist/x86/Microsoft.VC100.CRT',
- 'dll_suffix' => '100'
-);
-my %msvc_2010 = (
- 'ver' => '10.0',
- 'key' => 'Microsoft/VisualStudio/10.0/Setup/VC/ProductDir',
- 'dll_path' => 'redist/x86/Microsoft.VC100.CRT',
- 'dll_suffix' => '100'
-);
-
-sub find_msvs()
-{
- my @ms_versions = ( \%msvs_2008, \%msvs_express_2008, \%msvs_2010 );
-
- for $ver (@ms_versions)
- {
- my $install = reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/" . $ver->{'key'});
- if (defined $install && $install ne '') {
- $ver->{'product_dir'} = $install;
- return $ver;
- }
- }
- die "Can't find MS Visual Studio / VC++";
-}
-
-sub find_msvc()
-{
- my @ms_versions = ( \%msvc_2008, \%msvc_express_2008, \%msvc_2010 );
-
- for $ver (@ms_versions)
- {
- my $install = reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/" . $ver->{'key'});
- if (defined $install && $install ne '') {
- $ver->{'product_dir'} = $install;
- return $ver;
- }
- }
- die "Can't find MS Visual Studio / VC++";
-}
-
-sub print_msvc_ver()
-{
- my $ver = find_msvc();
- print $ver->{'ver'};
-}
-
-sub print_msvc_product_dir()
-{
- my $ver = find_msvc();
- print cygpath ($ver->{'product_dir'}, 'w', $output_format);
-}
-
-sub print_msvs_productdir()
-{
- my $ver = find_msvs();
- print cygpath ($ver->{'product_dir'}, 'w', $output_format);
-}
-
-sub print_csc_compiler_dir()
-{
- my $dir = cygpath (reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/InstallRoot"), 'w', $output_format);
- my $csc_exe = `/bin/find "$dir" -iname csc.exe | grep "v3\.5\." | head -n 1` ||
- `/bin/find "$dir" -iname csc.exe | grep "v4\." | head -n 1` ||
- `/bin/find "$dir" -iname csc.exe | grep "v2\." | head -n 1`;
- print `dirname $csc_exe`;
-}
-
-sub print_dotnetsdk_dir()
-{
- my $dir =
- reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/sdkInstallRootv1.1") ||
- reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/.NETFramework/sdkInstallRootv2.0");
- if ($dir) {
- print cygpath ($dir, 'w', $output_format);
- }
-}
-
-sub print_jdk_dir()
-{
- my $dir =
- reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java\ Development\ Kit/1.5/JavaHome") ||
- reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java\ Development\ Kit/1.6/JavaHome") ||
- reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java\ Development\ Kit/1.4/JavaHome") ||
- reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/JavaSoft/Java\ Development\ Kit/1.3/JavaHome");
- print cygpath($dir, 'w', $output_format);
-}
-
-sub print_nsis_dir()
-{
- my $dir = reg_get_value ("HKEY_LOCAL_MACHINE/SOFTWARE/NSIS/@");
- print cygpath ($dir, 'w', $output_format) if defined $dir;
-}
-
-sub copy_dll($$$)
-{
- my ($src, $fname, $dest) = @_;
-
- -f "$src/$fname" || die "can't find $src";
- -d $dest || die "no directory $dest";
-
- print STDERR "Copying $src/$fname to $dest\n";
- copy ("$src/$fname", $dest) || die "copy failed: $!";
- chmod (0755, "$dest/$fname") || die "failed to set dll executable: $!";
-}
-
-sub msvc_find_version($)
-{
- my $checkpath = shift;
- my $ver = find_msvc();
- my $srcdir = (cygpath ($ver->{'product_dir'}, 'w', 'u') . '/' .
- $ver->{$checkpath});
- -d $srcdir && return $ver;
- $ver = find_msvs();
- $srcdir = (cygpath ($ver->{'product_dir'}, 'w', 'u') . '/' .
- $ver->{$checkpath});
- -d $srcdir && return $ver;
- return undef;
-}
-
-sub msvc_copy_dlls($)
-{
- my $dest = shift;
- my $ver = msvc_find_version('dll_path');
- defined $ver || return;
- my $srcdir = (cygpath ($ver->{'product_dir'}, 'w', 'u') . '/' .
- $ver->{'dll_path'});
-
- copy_dll ($srcdir, "msvcp" . $ver->{'dll_suffix'} . ".dll",
- $dest . $ver->{'dll_suffix'});
- copy_dll ($srcdir, "msvcr" . $ver->{'dll_suffix'} . ".dll",
- $dest . $ver->{'dll_suffix'});
- if ($ver->{'dll_suffix'} == 90) {
- copy_dll ($srcdir, "msvcm" . $ver->{'dll_suffix'} . ".dll",
- $dest . $ver->{'dll_suffix'});
- copy_dll ($srcdir, "Microsoft.VC90.CRT.manifest", $dest . $ver->{'dll_suffix'});
- }
-}
-
-if (!@ARGV) {
- print_syntax();
- exit 1;
-}
-
-my @commands = ();
-my $opt;
-while (@ARGV) {
- $opt = shift @ARGV;
-
- if ($opt eq '-w' || $opt eq '-u') {
- $output_format = substr($opt, 1, 1);
- } else {
- push @commands, $opt;
- }
-}
-
-while (@commands) {
- $opt = shift @commands;
-
- if (0) {
- } elsif ($opt eq '--msvc-ver') {
- print_msvc_ver();
- } elsif ($opt eq '--msvc-copy-dlls') {
- my $dest = shift @commands;
- defined $dest || die "copy-dlls requires a destination directory";
- msvc_copy_dlls( $dest );
- } elsif ($opt eq '--msvs-productdir') {
- print_msvs_productdir();
- } elsif ($opt eq '--msvc-productdir') {
- print_msvc_product_dir();
- } elsif ($opt eq '--dotnetsdk-dir') {
- print_dotnetsdk_dir();
- } elsif ($opt eq '--csc-compilerdir') {
- print_csc_compiler_dir();
- } elsif ($opt eq '--windows-sdk-home') {
- print_windows_sdk_home();
- } elsif ($opt eq '--jdk-home') {
- print_jdk_dir();
- } elsif ($opt eq '--nsis-dir') {
- print_nsis_dir();
- } elsif ($opt eq '--help' || $opt eq '/?') {
- print_syntax();
- } else {
- print "Unknown option '$opt'\n";
- print_syntax();
- exit 1;
- }
-}
-