Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
4243befc
Commit
4243befc
authored
Apr 08, 2024
by
Jacek Caban
Committed by
Alexandre Julliard
Apr 09, 2024
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
winebuild: Add -marm64x option for generating hybrid ARM64X import libraries.
parent
6ad60648
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
30 additions
and
13 deletions
+30
-13
build.h
tools/winebuild/build.h
+3
-1
import.c
tools/winebuild/import.c
+14
-2
main.c
tools/winebuild/main.c
+3
-1
parser.c
tools/winebuild/parser.c
+6
-6
spec32.c
tools/winebuild/spec32.c
+2
-3
utils.c
tools/winebuild/utils.c
+2
-0
No files found.
tools/winebuild/build.h
View file @
4243befc
...
@@ -162,6 +162,7 @@ typedef struct
...
@@ -162,6 +162,7 @@ typedef struct
int
unicode_app
;
/* default to unicode entry point */
int
unicode_app
;
/* default to unicode entry point */
ORDDEF
*
entry_points
;
/* spec entry points */
ORDDEF
*
entry_points
;
/* spec entry points */
struct
exports
exports
;
/* dll exports */
struct
exports
exports
;
/* dll exports */
struct
exports
native_exports
;
/* dll native exports */
struct
resource
*
resources
;
/* array of dll resources (format differs between Win16/Win32) */
struct
resource
*
resources
;
/* array of dll resources (format differs between Win16/Win32) */
struct
apiset
apiset
;
/* list of defined api sets */
struct
apiset
apiset
;
/* list of defined api sets */
}
DLLSPEC
;
}
DLLSPEC
;
...
@@ -327,7 +328,7 @@ extern void output_bin_resources( DLLSPEC *spec, unsigned int start_rva );
...
@@ -327,7 +328,7 @@ extern void output_bin_resources( DLLSPEC *spec, unsigned int start_rva );
extern
void
output_spec32_file
(
DLLSPEC
*
spec
);
extern
void
output_spec32_file
(
DLLSPEC
*
spec
);
extern
void
output_fake_module
(
DLLSPEC
*
spec
);
extern
void
output_fake_module
(
DLLSPEC
*
spec
);
extern
void
output_data_module
(
DLLSPEC
*
spec
);
extern
void
output_data_module
(
DLLSPEC
*
spec
);
extern
void
output_def_file
(
DLLSPEC
*
spec
,
int
import_only
);
extern
void
output_def_file
(
DLLSPEC
*
spec
,
struct
exports
*
exports
,
int
import_only
);
extern
void
output_apiset_lib
(
DLLSPEC
*
spec
,
const
struct
apiset
*
apiset
);
extern
void
output_apiset_lib
(
DLLSPEC
*
spec
,
const
struct
apiset
*
apiset
);
extern
void
load_res16_file
(
const
char
*
name
,
DLLSPEC
*
spec
);
extern
void
load_res16_file
(
const
char
*
name
,
DLLSPEC
*
spec
);
extern
void
output_res16_data
(
DLLSPEC
*
spec
);
extern
void
output_res16_data
(
DLLSPEC
*
spec
);
...
@@ -372,6 +373,7 @@ extern int force_pointer_size;
...
@@ -372,6 +373,7 @@ extern int force_pointer_size;
extern
int
unwind_tables
;
extern
int
unwind_tables
;
extern
int
use_dlltool
;
extern
int
use_dlltool
;
extern
int
use_msvcrt
;
extern
int
use_msvcrt
;
extern
int
native_arch
;
extern
int
safe_seh
;
extern
int
safe_seh
;
extern
int
prefer_native
;
extern
int
prefer_native
;
extern
int
data_only
;
extern
int
data_only
;
...
...
tools/winebuild/import.c
View file @
4243befc
...
@@ -1377,19 +1377,31 @@ void output_static_lib( const char *output_name, struct strarray files, int crea
...
@@ -1377,19 +1377,31 @@ void output_static_lib( const char *output_name, struct strarray files, int crea
/* create a Windows-style import library using dlltool */
/* create a Windows-style import library using dlltool */
static
void
build_dlltool_import_lib
(
const
char
*
lib_name
,
DLLSPEC
*
spec
,
struct
strarray
files
)
static
void
build_dlltool_import_lib
(
const
char
*
lib_name
,
DLLSPEC
*
spec
,
struct
strarray
files
)
{
{
const
char
*
def_file
,
*
native_def_file
=
NULL
;
struct
strarray
args
;
struct
strarray
args
;
char
*
def_file
;
def_file
=
open_temp_output_file
(
".def"
);
def_file
=
open_temp_output_file
(
".def"
);
output_def_file
(
spec
,
1
);
output_def_file
(
spec
,
&
spec
->
exports
,
1
);
fclose
(
output_file
);
fclose
(
output_file
);
if
(
native_arch
!=
-
1
)
{
native_def_file
=
open_temp_output_file
(
".def"
);
output_def_file
(
spec
,
&
spec
->
native_exports
,
1
);
fclose
(
output_file
);
}
args
=
find_tool
(
"dlltool"
,
NULL
);
args
=
find_tool
(
"dlltool"
,
NULL
);
strarray_add
(
&
args
,
"-k"
);
strarray_add
(
&
args
,
"-k"
);
strarray_add
(
&
args
,
strendswith
(
lib_name
,
".delay.a"
)
?
"-y"
:
"-l"
);
strarray_add
(
&
args
,
strendswith
(
lib_name
,
".delay.a"
)
?
"-y"
:
"-l"
);
strarray_add
(
&
args
,
lib_name
);
strarray_add
(
&
args
,
lib_name
);
strarray_add
(
&
args
,
"-d"
);
strarray_add
(
&
args
,
"-d"
);
strarray_add
(
&
args
,
def_file
);
strarray_add
(
&
args
,
def_file
);
if
(
native_def_file
)
{
strarray_add
(
&
args
,
"-N"
);
strarray_add
(
&
args
,
native_def_file
);
}
switch
(
target
.
cpu
)
switch
(
target
.
cpu
)
{
{
...
...
tools/winebuild/main.c
View file @
4243befc
...
@@ -36,6 +36,7 @@
...
@@ -36,6 +36,7 @@
int
UsePIC
=
0
;
int
UsePIC
=
0
;
int
nb_errors
=
0
;
int
nb_errors
=
0
;
int
display_warnings
=
0
;
int
display_warnings
=
0
;
int
native_arch
=
-
1
;
int
kill_at
=
0
;
int
kill_at
=
0
;
int
verbose
=
0
;
int
verbose
=
0
;
int
link_ext_symbols
=
0
;
int
link_ext_symbols
=
0
;
...
@@ -386,6 +387,7 @@ static void option_callback( int optc, char *optarg )
...
@@ -386,6 +387,7 @@ static void option_callback( int optc, char *optarg )
else
if
(
!
strcmp
(
optarg
,
"64"
))
force_pointer_size
=
8
;
else
if
(
!
strcmp
(
optarg
,
"64"
))
force_pointer_size
=
8
;
else
if
(
!
strcmp
(
optarg
,
"no-cygwin"
))
use_msvcrt
=
1
;
else
if
(
!
strcmp
(
optarg
,
"no-cygwin"
))
use_msvcrt
=
1
;
else
if
(
!
strcmp
(
optarg
,
"unicode"
))
main_spec
->
unicode_app
=
1
;
else
if
(
!
strcmp
(
optarg
,
"unicode"
))
main_spec
->
unicode_app
=
1
;
else
if
(
!
strcmp
(
optarg
,
"arm64x"
))
native_arch
=
CPU_ARM64
;
else
if
(
!
strncmp
(
optarg
,
"cpu="
,
4
))
cpu_option
=
xstrdup
(
optarg
+
4
);
else
if
(
!
strncmp
(
optarg
,
"cpu="
,
4
))
cpu_option
=
xstrdup
(
optarg
+
4
);
else
if
(
!
strncmp
(
optarg
,
"fpu="
,
4
))
fpu_option
=
xstrdup
(
optarg
+
4
);
else
if
(
!
strncmp
(
optarg
,
"fpu="
,
4
))
fpu_option
=
xstrdup
(
optarg
+
4
);
else
if
(
!
strncmp
(
optarg
,
"arch="
,
5
))
arch_option
=
xstrdup
(
optarg
+
5
);
else
if
(
!
strncmp
(
optarg
,
"arch="
,
5
))
arch_option
=
xstrdup
(
optarg
+
5
);
...
@@ -648,7 +650,7 @@ int main(int argc, char **argv)
...
@@ -648,7 +650,7 @@ int main(int argc, char **argv)
if
(
!
spec_file_name
)
fatal_error
(
"missing .spec file
\n
"
);
if
(
!
spec_file_name
)
fatal_error
(
"missing .spec file
\n
"
);
if
(
!
parse_input_file
(
spec
))
break
;
if
(
!
parse_input_file
(
spec
))
break
;
open_output_file
();
open_output_file
();
output_def_file
(
spec
,
0
);
output_def_file
(
spec
,
&
spec
->
exports
,
0
);
close_output_file
();
close_output_file
();
break
;
break
;
case
MODE_IMPLIB
:
case
MODE_IMPLIB
:
...
...
tools/winebuild/parser.c
View file @
4243befc
...
@@ -943,16 +943,15 @@ static void assign_ordinals( struct exports *exports )
...
@@ -943,16 +943,15 @@ static void assign_ordinals( struct exports *exports )
}
}
static
void
assign_exports
(
DLLSPEC
*
spec
)
static
void
assign_exports
(
DLLSPEC
*
spec
,
unsigned
int
cpu
,
struct
exports
*
exports
)
{
{
struct
exports
*
exports
=
&
spec
->
exports
;
unsigned
int
i
;
unsigned
int
i
;
exports
->
entry_points
=
xmalloc
(
spec
->
nb_entry_points
*
sizeof
(
*
exports
->
entry_points
)
);
exports
->
entry_points
=
xmalloc
(
spec
->
nb_entry_points
*
sizeof
(
*
exports
->
entry_points
)
);
for
(
i
=
0
;
i
<
spec
->
nb_entry_points
;
i
++
)
for
(
i
=
0
;
i
<
spec
->
nb_entry_points
;
i
++
)
{
{
ORDDEF
*
entry
=
&
spec
->
entry_points
[
i
];
ORDDEF
*
entry
=
&
spec
->
entry_points
[
i
];
if
((
entry
->
flags
&
FLAG_CPU_MASK
)
&&
!
(
entry
->
flags
&
FLAG_CPU
(
target
.
cpu
)))
if
((
entry
->
flags
&
FLAG_CPU_MASK
)
&&
!
(
entry
->
flags
&
FLAG_CPU
(
cpu
)))
continue
;
continue
;
exports
->
entry_points
[
exports
->
nb_entry_points
++
]
=
entry
;
exports
->
entry_points
[
exports
->
nb_entry_points
++
]
=
entry
;
}
}
...
@@ -1018,7 +1017,7 @@ void add_16bit_exports( DLLSPEC *spec32, DLLSPEC *spec16 )
...
@@ -1018,7 +1017,7 @@ void add_16bit_exports( DLLSPEC *spec32, DLLSPEC *spec16 )
odp
->
u
.
func
.
nb_args
*
sizeof
(
odp
->
u
.
func
.
args
[
0
])
);
odp
->
u
.
func
.
nb_args
*
sizeof
(
odp
->
u
.
func
.
args
[
0
])
);
}
}
assign_exports
(
spec32
);
assign_exports
(
spec32
,
target
.
cpu
,
&
spec32
->
exports
);
}
}
...
@@ -1061,7 +1060,8 @@ int parse_spec_file( FILE *file, DLLSPEC *spec )
...
@@ -1061,7 +1060,8 @@ int parse_spec_file( FILE *file, DLLSPEC *spec )
}
}
current_line
=
0
;
/* no longer parsing the input file */
current_line
=
0
;
/* no longer parsing the input file */
assign_exports
(
spec
);
assign_exports
(
spec
,
target
.
cpu
,
&
spec
->
exports
);
if
(
native_arch
!=
-
1
)
assign_exports
(
spec
,
native_arch
,
&
spec
->
native_exports
);
return
!
nb_errors
;
return
!
nb_errors
;
}
}
...
@@ -1303,6 +1303,6 @@ int parse_def_file( FILE *file, DLLSPEC *spec )
...
@@ -1303,6 +1303,6 @@ int parse_def_file( FILE *file, DLLSPEC *spec )
}
}
current_line
=
0
;
/* no longer parsing the input file */
current_line
=
0
;
/* no longer parsing the input file */
assign_exports
(
spec
);
assign_exports
(
spec
,
target
.
cpu
,
&
spec
->
exports
);
return
!
nb_errors
;
return
!
nb_errors
;
}
}
tools/winebuild/spec32.c
View file @
4243befc
...
@@ -1343,9 +1343,8 @@ void output_data_module( DLLSPEC *spec )
...
@@ -1343,9 +1343,8 @@ void output_data_module( DLLSPEC *spec )
*
*
* Build a Win32 def file from a spec file.
* Build a Win32 def file from a spec file.
*/
*/
void
output_def_file
(
DLLSPEC
*
spec
,
int
import_only
)
void
output_def_file
(
DLLSPEC
*
spec
,
struct
exports
*
exports
,
int
import_only
)
{
{
struct
exports
*
exports
;
DLLSPEC
*
spec32
=
NULL
;
DLLSPEC
*
spec32
=
NULL
;
const
char
*
name
;
const
char
*
name
;
int
i
,
total
;
int
i
,
total
;
...
@@ -1355,8 +1354,8 @@ void output_def_file( DLLSPEC *spec, int import_only )
...
@@ -1355,8 +1354,8 @@ void output_def_file( DLLSPEC *spec, int import_only )
spec32
=
alloc_dll_spec
();
spec32
=
alloc_dll_spec
();
add_16bit_exports
(
spec32
,
spec
);
add_16bit_exports
(
spec32
,
spec
);
spec
=
spec32
;
spec
=
spec32
;
exports
=
&
spec
->
exports
;
}
}
exports
=
&
spec
->
exports
;
if
(
spec_file_name
)
if
(
spec_file_name
)
output
(
"; File generated automatically from %s; do not edit!
\n\n
"
,
output
(
"; File generated automatically from %s; do not edit!
\n\n
"
,
...
...
tools/winebuild/utils.c
View file @
4243befc
...
@@ -615,6 +615,7 @@ DLLSPEC *alloc_dll_spec(void)
...
@@ -615,6 +615,7 @@ DLLSPEC *alloc_dll_spec(void)
spec
->
subsystem_minor
=
0
;
spec
->
subsystem_minor
=
0
;
spec
->
dll_characteristics
=
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
|
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
;
spec
->
dll_characteristics
=
IMAGE_DLLCHARACTERISTICS_NX_COMPAT
|
IMAGE_DLLCHARACTERISTICS_DYNAMIC_BASE
;
spec
->
exports
.
base
=
MAX_ORDINALS
;
spec
->
exports
.
base
=
MAX_ORDINALS
;
spec
->
native_exports
.
base
=
MAX_ORDINALS
;
return
spec
;
return
spec
;
}
}
...
@@ -644,6 +645,7 @@ void free_dll_spec( DLLSPEC *spec )
...
@@ -644,6 +645,7 @@ void free_dll_spec( DLLSPEC *spec )
free
(
odp
->
link_name
);
free
(
odp
->
link_name
);
}
}
free_exports
(
&
spec
->
exports
);
free_exports
(
&
spec
->
exports
);
free_exports
(
&
spec
->
native_exports
);
free
(
spec
->
file_name
);
free
(
spec
->
file_name
);
free
(
spec
->
dll_name
);
free
(
spec
->
dll_name
);
free
(
spec
->
c_name
);
free
(
spec
->
c_name
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment