#!/usr/bin/perl -w
#
# Update spec files across dlls that share an implementation
#
# Copyright 2011 Alexandre Julliard
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
#

use strict;

my %funcs;
my $group_head;

my @dll_groups =
(
 [
  "msvcrt",
  "msvcirt",
  "msvcrt40",
  "msvcrt20",
  "msvcrtd",
  "crtdll",
 ],
 [
  "msvcrt",
  "msvcp90",
  "msvcp100",
  "msvcp110",
  "msvcp120",
  "msvcp140",
  "msvcp71",
  "msvcp80",
  "msvcp70",
  "msvcp60",
 ],
 [
  "msvcr120",
  "msvcr120_app",
  "concrt140",
 ],
 [
  "ucrtbase",
  "api-ms-win-crt-conio-l1-1-0",
  "api-ms-win-crt-convert-l1-1-0",
  "api-ms-win-crt-environment-l1-1-0",
  "api-ms-win-crt-filesystem-l1-1-0",
  "api-ms-win-crt-heap-l1-1-0",
  "api-ms-win-crt-locale-l1-1-0",
  "api-ms-win-crt-math-l1-1-0",
  "api-ms-win-crt-multibyte-l1-1-0",
  "api-ms-win-crt-private-l1-1-0",
  "api-ms-win-crt-process-l1-1-0",
  "api-ms-win-crt-runtime-l1-1-0",
  "api-ms-win-crt-stdio-l1-1-0",
  "api-ms-win-crt-string-l1-1-0",
  "api-ms-win-crt-time-l1-1-0",
  "api-ms-win-crt-utility-l1-1-0",
  "vcruntime140",
 ],
 [
  "msvcp120",
  "msvcp120_app",
 ],
 [
  "d3dx10_43",
  "d3dx10_42",
  "d3dx10_41",
  "d3dx10_40",
  "d3dx10_39",
  "d3dx10_38",
  "d3dx10_37",
  "d3dx10_36",
  "d3dx10_35",
  "d3dx10_34",
  "d3dx10_33",
 ],
 [
  "xinput1_3",
  "xinput1_4",
  "xinput1_2",
  "xinput1_1",
  "xinput9_1_0",
 ],
 [
  "setupapi",
  "cfgmgr32",
  "api-ms-win-devices-config-l1-1-1",
  "api-ms-win-devices-query-l1-1-1",
 ],
 [
  "vcomp",
  "vcomp140",
  "vcomp120",
  "vcomp110",
  "vcomp100",
  "vcomp90",
 ],
 [
  "advapi32",
  "api-ms-win-core-localregistry-l1-1-0",
  "api-ms-win-downlevel-advapi32-l1-1-0",
  "api-ms-win-downlevel-advapi32-l2-1-0",
  "api-ms-win-security-base-l1-1-0",
  "api-ms-win-core-registry-l1-1-0",
  "api-ms-win-core-registry-l2-1-0",
  "api-ms-win-eventing-classicprovider-l1-1-0",
  "api-ms-win-eventing-consumer-l1-1-0",
  "api-ms-win-eventing-controller-l1-1-0",
  "api-ms-win-eventing-legacy-l1-1-0",
  "api-ms-win-eventing-provider-l1-1-0",
  "api-ms-win-eventlog-legacy-l1-1-0",
  "api-ms-win-security-audit-l1-1-1",
  "api-ms-win-security-base-l1-2-0",
  "api-ms-win-security-base-private-l1-1-1",
  "api-ms-win-security-credentials-l1-1-0",
  "api-ms-win-security-lsalookup-l1-1-0",
  "api-ms-win-security-lsalookup-l1-1-1",
  "api-ms-win-security-lsalookup-l2-1-1",
  "api-ms-win-security-lsapolicy-l1-1-0",
  "api-ms-win-security-provider-l1-1-0",
  "api-ms-win-security-sddl-l1-1-0",
  "api-ms-win-security-systemfunctions-l1-1-0",
  "api-ms-win-service-core-l1-1-0",
  "api-ms-win-service-core-l1-1-1",
  "api-ms-win-service-management-l1-1-0",
  "api-ms-win-service-management-l2-1-0",
  "api-ms-win-service-private-l1-1-1",
  "api-ms-win-service-winsvc-l1-1-0",
  "api-ms-win-service-winsvc-l1-2-0",
 ],
 [
  "authz",
  "ext-ms-win-authz-context-l1-1-0",
 ],
 [
  "credui",
  "ext-ms-win-security-credui-l1-1-0",
 ],
 [
  "cryptui",
  "ext-ms-win-security-cryptui-l1-1-0",
 ],
 [
  "netapi32",
  "ext-ms-win-domainjoin-netjoin-l1-1-0",
 ],
 [
  "ntdll",
  "api-ms-win-core-xstate-l1-1-0",
 ],
 [
  "ntdll",
  "powrprof",
  "api-ms-win-power-base-l1-1-0",
  "api-ms-win-power-setting-l1-1-0",
 ],
 [
  "ntdsapi",
  "api-ms-win-security-activedirectoryclient-l1-1-0",
 ],
 [
  "rasapi32",
  "ext-ms-win-ras-rasapi32-l1-1-0",
 ],
 [
  "kernel32",
  "api-ms-win-appmodel-identity-l1-1-0",
  "api-ms-win-appmodel-runtime-l1-1-1",
  "api-ms-win-downlevel-normaliz-l1-1-0",
  "api-ms-win-core-appcompat-l1-1-1",
  "api-ms-win-core-atoms-l1-1-0",
  "api-ms-win-core-debug-l1-1-0",
  "api-ms-win-core-debug-l1-1-1",
  "api-ms-win-core-delayload-l1-1-0",
  "api-ms-win-core-delayload-l1-1-1",
  "api-ms-win-core-errorhandling-l1-1-0",
  "api-ms-win-core-errorhandling-l1-1-1",
  "api-ms-win-core-errorhandling-l1-1-2",
  "api-ms-win-core-errorhandling-l1-1-3",
  "api-ms-win-core-interlocked-l1-1-0",
  "api-ms-win-core-interlocked-l1-2-0",
  "api-ms-win-core-misc-l1-1-0",
  "api-ms-win-core-profile-l1-1-0",
  "api-ms-win-core-realtime-l1-1-0",
  "api-ms-win-core-sidebyside-l1-1-0",
  "api-ms-win-core-string-l1-1-0",
  "api-ms-win-core-string-obsolete-l1-1-0",
  "api-ms-win-core-sysinfo-l1-1-0",
  "api-ms-win-core-sysinfo-l1-2-0",
  "api-ms-win-core-util-l1-1-0",
  "api-ms-win-core-synch-l1-1-0",
  "api-ms-win-core-synch-l1-2-0",
  "api-ms-win-core-synch-l1-2-1",
  "api-ms-win-core-console-l1-1-0",
  "api-ms-win-core-console-l2-1-0",
  "api-ms-win-core-file-l1-1-0",
  "api-ms-win-core-file-l1-2-1",
  "api-ms-win-core-file-l1-2-0",
  "api-ms-win-core-file-l2-1-0",
  "api-ms-win-core-file-l2-1-1",
  "api-ms-win-core-file-l2-1-2",
  "api-ms-win-core-handle-l1-1-0",
  "api-ms-win-core-heap-l1-1-0",
  "api-ms-win-core-heap-l1-2-0",
  "api-ms-win-core-heap-l2-1-0",
  "api-ms-win-core-heap-obsolete-l1-1-0",
  "api-ms-win-core-io-l1-1-0",
  "api-ms-win-core-io-l1-1-1",
  "api-ms-win-core-job-l1-1-0",
  "api-ms-win-core-job-l2-1-0",
  "api-ms-win-core-kernel32-legacy-l1-1-0",
  "api-ms-win-core-kernel32-legacy-l1-1-1",
  "api-ms-win-core-kernel32-private-l1-1-1",
  "api-ms-win-core-libraryloader-l1-2-2",
  "api-ms-win-core-localization-l1-1-0",
  "api-ms-win-core-localization-l1-2-0",
  "api-ms-win-core-localization-l2-1-0",
  "api-ms-win-core-localization-obsolete-l1-1-0",
  "api-ms-win-core-localization-obsolete-l1-2-0",
  "api-ms-win-core-localization-obsolete-l1-3-0",
  "api-ms-win-core-localization-private-l1-1-0",
  "api-ms-win-core-memory-l1-1-0",
  "api-ms-win-core-memory-l1-1-1",
  "api-ms-win-core-memory-l1-1-2",
  "api-ms-win-core-namespace-l1-1-0",
  "api-ms-win-core-normalization-l1-1-0",
  "api-ms-win-core-privateprofile-l1-1-1",
  "api-ms-win-core-processenvironment-l1-1-0",
  "api-ms-win-core-processenvironment-l1-2-0",
  "api-ms-win-core-psapi-l1-1-0",
  "api-ms-win-core-psapi-ansi-l1-1-0",
  "api-ms-win-core-psapi-obsolete-l1-1-0",
  "api-ms-win-core-threadpool-l1-1-0",
  "api-ms-win-core-threadpool-l1-2-0",
  "api-ms-win-core-threadpool-legacy-l1-1-0",
  "api-ms-win-core-threadpool-private-l1-1-0",
  "api-ms-win-core-timezone-l1-1-0",
  "api-ms-win-core-toolhelp-l1-1-0",
  "api-ms-win-core-sysinfo-l1-2-1",
  "api-ms-win-core-fibers-l1-1-0",
  "api-ms-win-core-fibers-l1-1-1",
  "api-ms-win-core-localization-l1-2-1",
  "api-ms-win-core-datetime-l1-1-0",
  "api-ms-win-core-datetime-l1-1-1",
  "api-ms-win-core-windowserrorreporting-l1-1-0",
  "api-ms-win-core-wow64-l1-1-0",
  "api-ms-win-core-wow64-l1-1-1",
  "api-ms-win-core-xstate-l2-1-0",
  "api-ms-win-core-processtopology-obsolete-l1-1-0",
  "api-ms-win-core-util-l1-1-0",
  "ext-ms-win-kernel32-package-current-l1-1-0",
  "ext-ms-win-kernel32-package-l1-1-1",
 ],
 [
  "kernel32",
  "user32",
  "api-ms-win-core-appinit-l1-1-0",
  "api-ms-win-core-libraryloader-l1-1-0",
  "api-ms-win-core-libraryloader-l1-1-1",
  "api-ms-win-core-libraryloader-l1-2-0",
 ],
 [
  "kernel32",
  "advapi32",
  "api-ms-win-core-namedpipe-l1-1-0",
  "api-ms-win-core-namedpipe-l1-2-0",
  "api-ms-win-core-processthreads-l1-1-0",
  "api-ms-win-core-processthreads-l1-1-1",
  "api-ms-win-core-processthreads-l1-1-2",
 ],
 [
  "kernel32",
  "advapi32",
  "user32",
  "shlwapi",
  "version",
  "kernelbase",
  "api-ms-win-core-bem-l1-1-0",
 ],
 [
  "kernelbase",
  "api-ms-win-appmodel-runtime-l1-1-2",
  "api-ms-win-core-quirks-l1-1-0",
  "api-ms-win-security-grouppolicy-l1-1-0",
 ],
 [
  "ole32",
  "api-ms-win-downlevel-ole32-l1-1-0",
  "api-ms-win-core-com-l1-1-0",
  "api-ms-win-core-com-l1-1-1",
  "api-ms-win-core-com-private-l1-1-0",
  "combase",
  "iprop",
 ],
 [
  "shell32",
  "api-ms-win-downlevel-shell32-l1-1-0",
  "api-ms-win-shell-shellcom-l1-1-0",
  "api-ms-win-shell-shellfolders-l1-1-0",
 ],
 [
  "shlwapi",
  "api-ms-win-downlevel-shlwapi-l1-1-0",
  "api-ms-win-downlevel-shlwapi-l2-1-0",
  "api-ms-win-core-registryuserspecific-l1-1-0",
  "api-ms-win-core-shlwapi-legacy-l1-1-0",
  "api-ms-win-core-shlwapi-obsolete-l1-1-0",
  "api-ms-win-core-shlwapi-obsolete-l1-2-0",
  "api-ms-win-core-url-l1-1-0",
 ],
 [
  "user32",
  "api-ms-win-core-stringansi-l1-1-0",
  "api-ms-win-core-string-l2-1-0",
  "api-ms-win-downlevel-user32-l1-1-0",
  "api-ms-win-ntuser-dc-access-l1-1-0",
  "api-ms-win-rtcore-ntuser-private-l1-1-0",
  "ext-ms-win-ntuser-message-l1-1-1",
  "ext-ms-win-ntuser-private-l1-1-1",
  "ext-ms-win-ntuser-rectangle-ext-l1-1-0",
  "api-ms-win-ntuser-rectangle-l1-1-0",
  "ext-ms-win-ntuser-uicontext-ext-l1-1-0",
  "ext-ms-win-ntuser-windowclass-l1-1-1",
  "ext-ms-win-ntuser-window-l1-1-1",
  "ext-ms-win-rtcore-ntuser-dc-access-l1-1-0",
  "ext-ms-win-rtcore-ntuser-dpi-l1-1-0",
  "ext-ms-win-rtcore-ntuser-sysparams-l1-1-0",
 ],
 [
  "version",
  "api-ms-win-core-versionansi-l1-1-0",
  "api-ms-win-core-version-l1-1-0",
  "api-ms-win-core-version-l1-1-1",
  "api-ms-win-core-version-private-l1-1-0",
  "api-ms-win-downlevel-version-l1-1-0",
 ],
 [
  "winmm",
  "api-ms-win-mm-joystick-l1-1-0",
  "api-ms-win-mm-misc-l1-1-1",
  "api-ms-win-mm-mme-l1-1-0",
  "api-ms-win-mm-time-l1-1-0",
 ],
 [
  "msvcrt",
  "ntdll",
  "ntoskrnl.exe",
  "api-ms-win-core-apiquery-l1-1-0",
  "api-ms-win-core-rtlsupport-l1-1-0",
  "api-ms-win-core-rtlsupport-l1-2-0",
  "api-ms-win-core-crt-l1-1-0",
  "api-ms-win-core-crt-l2-1-0",
 ],
 [
  "gdi32",
  "api-ms-win-dx-d3dkmt-l1-1-0",
  "ext-ms-win-gdi-dc-create-l1-1-1",
  "ext-ms-win-gdi-dc-l1-2-0",
  "ext-ms-win-gdi-devcaps-l1-1-0",
  "ext-ms-win-gdi-draw-l1-1-1",
  "ext-ms-win-gdi-render-l1-1-0",
  "ext-ms-win-rtcore-gdi-object-l1-1-0",
  "ext-ms-win-rtcore-gdi-rgn-l1-1-0",
 ],
 [
  "combase",
  "api-ms-win-core-winrt-errorprivate-l1-1-1",
  "api-ms-win-core-winrt-l1-1-0",
  "api-ms-win-core-winrt-registration-l1-1-0",
  "api-ms-win-core-winrt-roparameterizediid-l1-1-0",
  "api-ms-win-core-winrt-string-l1-1-0",
 ],
 [
  "bthprops.cpl",
  "irprops.cpl",
 ],
 [
  "sfc_os",
  "sfc",
 ],
 [
  "bcrypt",
  "ncrypt",
 ],
 [
  "ntoskrnl.exe",
  "hal",
 ],
);

my $update_flags = 0;
my $show_duplicates = 0;

foreach my $arg (@ARGV)
{
    if ($arg eq "-f") { $update_flags = 1; }
    elsif ($arg eq "-d") { $show_duplicates = 1; }
}

# update a file if changed
sub update_file($$)
{
    my $file = shift;
    my $new = shift;

    open FILE, ">$file.new" or die "cannot create $file.new";
    print FILE $new;
    close FILE;
    rename "$file.new", "$file";
    print "$file updated\n";
}

# parse a spec file line
sub parse_line($$$)
{
    my ($name, $line, $str) = @_;

    if ($str =~ /^\s*(\@|\d+)\s+(stdcall|cdecl|varargs|thiscall|stub|extern)\s+((?:-\S+\s+)*)([A-Za-z0-9_\@\$?]+)(?:\s*(\([^)]*\)))?(?:\s+([A-Za-z0-9_\@\$?.]+))?(\s*\#.*)?/)
    {
        return ( "ordinal" => $1, "callconv" => $2, "flags" => $3, "name" => $4, "args" => $5 || "",
                 "target" => $6 || $4, "comment" => $7, "spec" => $name );
    }
    return () if $str =~ /^\s*$/;
    return () if $str =~ /^\s*\#/;
    printf STDERR "$name.spec:$line: error: Unrecognized line $_\n";
}

sub read_spec_file($)
{
    my $name = shift;
    my $file = "dlls/$name/$name.spec";
    my %stubs;
    open SPEC, "<$file" or die "cannot open $file";
    while (<SPEC>)
    {
        chomp;
        my %descr = parse_line( $name, $., $_ );
        next unless %descr;

        my $func = $descr{name};
        next if defined $funcs{$func};
        next if $func eq "@";
        $funcs{$func} = \%descr;
    }
    close SPEC;
}

sub update_spec_file($)
{
    my $name = shift;
    my $file = "dlls/$name/$name.spec";
    my %stubs;
    my ($old, $new);

    open SPEC, "<$file" or die "cannot open $file";
    while (<SPEC>)
    {
        $old .= $_;
        chomp;

        my $commented_out = 0;
        my %descr = parse_line( $name, $., $_ );
        if (!%descr)
        {
            # check for commented out exports
            if (/^\s*\#\s*((?:\@|\d+)\s+)?((?:extern|stub|stdcall|cdecl|varargs|thiscall)\s+.*)/)
            {
                $commented_out = 1;
                %descr = parse_line( $name, $., ($1 || "\@ ") . $2 );
            }
        }
        goto done unless %descr;

        my $func = $descr{name};
        if (!defined $funcs{$func})
        {
            $funcs{$func} = \%descr unless $commented_out;
            goto done;
        }

        my %parent = %{$funcs{$func}};
        goto done if $parent{spec} eq $descr{spec};  # the definition is in this spec file
        goto done if $descr{comment} && $descr{comment} =~ /don't forward/;
        if ($descr{callconv} ne "stub" && $descr{target} !~ /\./ && !$commented_out)
        {
            printf "%s:%u: note: %s already defined in %s\n", $file, $., $func, $parent{spec} if $show_duplicates;
            goto done;
        }

        my $flags = $descr{flags};
        if ($parent{callconv} ne "stub" || $update_flags)
        {
            $flags = $parent{flags};
            $flags =~ s/-ordinal\s*// if $descr{ordinal} eq "@";
            $flags =~ s/-noname\s*// if $descr{ordinal} eq "@";
            if ($descr{flags} =~ /-private/)  # preserve -private flag
            {
                $flags = "-private " . $flags unless $flags =~ /-private/;
            }
        }

        if ($parent{callconv} ne "stub" || $parent{args})
        {
            my $callconv = $parent{callconv} ne "stub" ? $parent{callconv} :
                           $parent{spec} =~ /(msvc|ucrtbase)/ ? "cdecl" : "stdcall";  # hack
            $_ = sprintf "$descr{ordinal} %s %s%s", $callconv, $flags, $func;

            if ($parent{target} =~ /$group_head\./)  # use the same forward as parent if possible
            {
                $_ .= sprintf "%s %s", $parent{args}, $parent{target};
            }
            else
            {
                $_ .= sprintf "%s %s.%s", $parent{args}, $parent{spec}, $func;
            }
        }
        else
        {
            $_ = sprintf "$descr{ordinal} stub %s%s", $flags, $func;
        }
        $_ .= $descr{comment} || "";

      done:
        $new .= "$_\n";
    }
    close SPEC;
    update_file( $file, $new ) if $old ne $new;
}

sub sync_spec_files(@)
{
    %funcs = ();
    $group_head = shift;
    read_spec_file( $group_head );
    foreach my $spec (@_) { update_spec_file($spec); }
}

foreach my $group (@dll_groups)
{
    sync_spec_files( @{$group} );
}
