winebuild: Add support for excluding a specific CPU architecture.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2019-10-16 14:28:38 +02:00
parent bd7ba264b6
commit 6306a1730a
2 changed files with 9 additions and 6 deletions

View File

@ -470,7 +470,7 @@ static int parse_spec_extern( ORDDEF *odp, DLLSPEC *spec )
*/
static const char *parse_spec_flags( DLLSPEC *spec, ORDDEF *odp )
{
unsigned int i;
unsigned int i, cpu_mask = 0;
const char *token;
do
@ -493,13 +493,14 @@ static const char *parse_spec_flags( DLLSPEC *spec, ORDDEF *odp )
odp->flags |= FLAG_CPU_WIN64;
else
{
int cpu = get_cpu_from_name( cpu_name );
int cpu = get_cpu_from_name( cpu_name + (cpu_name[0] == '!') );
if (cpu == -1)
{
error( "Unknown architecture '%s'\n", cpu_name );
return NULL;
}
odp->flags |= FLAG_CPU( cpu );
if (cpu_name[0] == '!') cpu_mask |= FLAG_CPU( cpu );
else odp->flags |= FLAG_CPU( cpu );
}
cpu_name = strtok( NULL, "," );
}
@ -537,6 +538,7 @@ static const char *parse_spec_flags( DLLSPEC *spec, ORDDEF *odp )
token = GetToken(0);
} while (token && *token == '-');
if (cpu_mask) odp->flags |= FLAG_CPU_MASK & ~cpu_mask;
return token;
}

View File

@ -326,13 +326,14 @@ of a
specification when an application expects to find the function's
implementation inside the dll.
.TP
.RE
.BI -arch= cpu\fR[\fB,\fIcpu\fR]
.B -arch=\fR[\fB!\fR]\fIcpu\fR[\fB,\fIcpu\fR]
The entry point is only available on the specified CPU
architecture(s). The names \fBwin32\fR and \fBwin64\fR match all
32-bit or 64-bit CPU architectures respectively. In 16-bit dlls,
specifying \fB-arch=win32\fR causes the entry point to be exported
from the 32-bit wrapper module.
from the 32-bit wrapper module. A CPU name can be prefixed with
\fB!\fR to exclude only that specific architecture.
.RE
.SS "Function ordinals"
Syntax:
.br