diff options
Diffstat (limited to 'oowintool')
-rwxr-xr-x | oowintool | 336 |
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; - } -} - |