Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-cw
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-cw
Commits
89503c18
Commit
89503c18
authored
Jul 01, 2005
by
Alexandre Julliard
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added a --target option to allow cross-compilation.
parent
c7dbffca
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
94 additions
and
2 deletions
+94
-2
import.c
tools/winebuild/import.c
+2
-0
main.c
tools/winebuild/main.c
+87
-2
winebuild.man.in
tools/winebuild/winebuild.man.in
+5
-0
No files found.
tools/winebuild/import.c
View file @
89503c18
...
...
@@ -582,6 +582,7 @@ static const char *ldcombine_files( char **argv )
close
(
fd
);
atexit
(
remove_ld_tmp_file
);
if
(
!
ld_command
)
ld_command
=
xstrdup
(
"ld"
);
for
(
i
=
0
;
argv
[
i
];
i
++
)
len
+=
strlen
(
argv
[
i
])
+
1
;
cmd
=
xmalloc
(
len
+
strlen
(
ld_tmp_file
)
+
8
+
strlen
(
ld_command
)
);
sprintf
(
cmd
,
"%s -r -o %s"
,
ld_command
,
ld_tmp_file
);
...
...
@@ -612,6 +613,7 @@ void read_undef_symbols( char **argv )
if
(
argv
[
1
])
name
=
ldcombine_files
(
argv
);
else
name
=
argv
[
0
];
if
(
!
nm_command
)
nm_command
=
xstrdup
(
"nm"
);
cmd
=
xmalloc
(
strlen
(
nm_command
)
+
strlen
(
name
)
+
5
);
sprintf
(
cmd
,
"%s -u %s"
,
nm_command
,
name
);
if
(
!
(
f
=
popen
(
cmd
,
"r"
)))
...
...
tools/winebuild/main.c
View file @
89503c18
...
...
@@ -77,8 +77,8 @@ char *input_file_name = NULL;
char
*
spec_file_name
=
NULL
;
const
char
*
output_file_name
=
NULL
;
char
*
ld_command
=
"ld"
;
char
*
nm_command
=
"nm"
;
char
*
ld_command
=
NULL
;
char
*
nm_command
=
NULL
;
static
FILE
*
output_file
;
static
const
char
*
current_src_dir
;
...
...
@@ -99,6 +99,35 @@ enum exec_mode_values
static
enum
exec_mode_values
exec_mode
=
MODE_NONE
;
static
const
struct
{
const
char
*
name
;
enum
target_cpu
cpu
;
}
cpu_names
[]
=
{
{
"i386"
,
CPU_x86
},
{
"i486"
,
CPU_x86
},
{
"i586"
,
CPU_x86
},
{
"i686"
,
CPU_x86
},
{
"i786"
,
CPU_x86
},
{
"sparc"
,
CPU_SPARC
},
{
"alpha"
,
CPU_ALPHA
},
{
"powerpc"
,
CPU_POWERPC
}
};
static
const
struct
{
const
char
*
name
;
enum
target_platform
platform
;
}
platform_names
[]
=
{
{
"macos"
,
PLATFORM_APPLE
},
{
"darwin"
,
PLATFORM_APPLE
},
{
"sunos"
,
PLATFORM_SVR4
},
{
"windows"
,
PLATFORM_WINDOWS
},
{
"winnt"
,
PLATFORM_WINDOWS
}
};
/* set the dll file name from the input file name */
static
void
set_dll_file_name
(
const
char
*
name
,
DLLSPEC
*
spec
)
{
...
...
@@ -138,6 +167,56 @@ static void set_subsystem( const char *subsystem, DLLSPEC *spec )
free
(
str
);
}
/* set the target CPU and platform */
static
void
set_target
(
const
char
*
target
)
{
unsigned
int
i
;
char
*
p
,
*
platform
,
*
spec
=
xstrdup
(
target
);
/* target specification is in the form CPU-MANUFACTURER-OS or CPU-MANUFACTURER-KERNEL-OS */
/* get the CPU part */
if
(
!
(
p
=
strchr
(
spec
,
'-'
)))
fatal_error
(
"Invalid target specification '%s'
\n
"
,
target
);
*
p
++
=
0
;
for
(
i
=
0
;
i
<
sizeof
(
cpu_names
)
/
sizeof
(
cpu_names
[
0
]);
i
++
)
{
if
(
!
strcmp
(
cpu_names
[
i
].
name
,
spec
))
break
;
}
if
(
i
<
sizeof
(
cpu_names
)
/
sizeof
(
cpu_names
[
0
]))
target_cpu
=
cpu_names
[
i
].
cpu
;
else
fatal_error
(
"Unrecognized CPU '%s'
\n
"
,
spec
);
platform
=
p
;
if
((
p
=
strrchr
(
p
,
'-'
)))
platform
=
p
+
1
;
/* get the OS part */
target_platform
=
PLATFORM_UNSPECIFIED
;
/* default value */
for
(
i
=
0
;
i
<
sizeof
(
platform_names
)
/
sizeof
(
platform_names
[
0
]);
i
++
)
{
if
(
!
strncmp
(
platform_names
[
i
].
name
,
platform
,
strlen
(
platform_names
[
i
].
name
)
))
{
target_platform
=
platform_names
[
i
].
platform
;
break
;
}
}
free
(
spec
);
if
(
!
ld_command
)
{
ld_command
=
xmalloc
(
strlen
(
target
)
+
sizeof
(
"-ld"
)
);
strcpy
(
ld_command
,
target
);
strcat
(
ld_command
,
"-ld"
);
}
if
(
!
nm_command
)
{
nm_command
=
xmalloc
(
strlen
(
target
)
+
sizeof
(
"-nm"
)
);
strcpy
(
nm_command
,
target
);
strcat
(
nm_command
,
"-nm"
);
}
}
/* cleanup on program exit */
static
void
cleanup
(
void
)
{
...
...
@@ -178,6 +257,7 @@ static const char usage_str[] =
" -o --output=NAME Set the output file name (default: stdout)
\n
"
" -r --res=RSRC.RES Load resources from RSRC.RES
\n
"
" --subsystem=SUBSYS Set the subsystem (one of native, windows, console)
\n
"
" --target=TARGET Specify target CPU and platform for cross-compiling
\n
"
" --version Print the version and exit
\n
"
" -w --warnings Turn on warnings
\n
"
"
\n
Mode options:
\n
"
...
...
@@ -200,6 +280,7 @@ enum long_options_values
LONG_OPT_RELAY16
,
LONG_OPT_RELAY32
,
LONG_OPT_SUBSYSTEM
,
LONG_OPT_TARGET
,
LONG_OPT_VERSION
};
...
...
@@ -216,6 +297,7 @@ static const struct option long_options[] =
{
"relay16"
,
0
,
0
,
LONG_OPT_RELAY16
},
{
"relay32"
,
0
,
0
,
LONG_OPT_RELAY32
},
{
"subsystem"
,
1
,
0
,
LONG_OPT_SUBSYSTEM
},
{
"target"
,
1
,
0
,
LONG_OPT_TARGET
},
{
"version"
,
0
,
0
,
LONG_OPT_VERSION
},
/* aliases for short options */
{
"source-dir"
,
1
,
0
,
'C'
},
...
...
@@ -371,6 +453,9 @@ static char **parse_options( int argc, char **argv, DLLSPEC *spec )
case
LONG_OPT_SUBSYSTEM
:
set_subsystem
(
optarg
,
spec
);
break
;
case
LONG_OPT_TARGET
:
set_target
(
optarg
);
break
;
case
LONG_OPT_VERSION
:
printf
(
"winebuild version "
PACKAGE_VERSION
"
\n
"
);
exit
(
0
);
...
...
tools/winebuild/winebuild.man.in
View file @
89503c18
...
...
@@ -191,6 +191,11 @@ argument array to use Unicode strings. A graphical executable has a
Optionally a major and minor subsystem version can also be specified;
the default subsystem version is 4.0.
.TP
.BI --target= cpu-manufacturer[-kernel]-os
Specify the target CPU and platform on which the generated code will
be built. The target specification is in the standard autoconf format
as returned by config.sub.
.TP
.B \--version
Display the program version and exit.
.TP
...
...
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