xref: /aosp_15_r20/external/crosvm/third_party/libslirp-rs/README.md (revision bb4ee6a4ae7042d18b07a98463b9c8b875e44b39)
1*bb4ee6a4SAndroid Build Coastguard WorkerFork init'ed from 19553209436ae7b9e036641f4013246111192d5c.
2*bb4ee6a4SAndroid Build Coastguard Worker
3*bb4ee6a4SAndroid Build Coastguard WorkerThis directory is NOT a crate. It contains heavily forked code from the
4*bb4ee6a4SAndroid Build Coastguard Workerlibslirp-rs project that has been tightly integrated with `net_util`.
5*bb4ee6a4SAndroid Build Coastguard Worker
6*bb4ee6a4SAndroid Build Coastguard Workerlibslirp-rs depends on a bunch of libraries (libslirp and its dependencies).
7*bb4ee6a4SAndroid Build Coastguard WorkerRun `upload_libslirp_prebuilts.ps1` helps to setup msys, fetch sources, build and
8*bb4ee6a4SAndroid Build Coastguard Workerupload prebuilts given the version of the prebuilts.
9*bb4ee6a4SAndroid Build Coastguard Worker
10*bb4ee6a4SAndroid Build Coastguard Worker
11*bb4ee6a4SAndroid Build Coastguard Worker
12*bb4ee6a4SAndroid Build Coastguard Worker## Manually building dependencies
13*bb4ee6a4SAndroid Build Coastguard Worker
14*bb4ee6a4SAndroid Build Coastguard Worker### On windows
15*bb4ee6a4SAndroid Build Coastguard Worker
16*bb4ee6a4SAndroid Build Coastguard WorkerInstall [Msys2](https://www.msys2.org) which is used for building libslirp, a third party library
17*bb4ee6a4SAndroid Build Coastguard Workerused by the emulator. Open a msys2 window, install necessary packages with the following commands:
18*bb4ee6a4SAndroid Build Coastguard Worker
19*bb4ee6a4SAndroid Build Coastguard Worker```sh
20*bb4ee6a4SAndroid Build Coastguard Workerpacman -S mingw-w64-x86_64-meson ninja git mingw-w64-x86_64-gcc mingw-w64-x86_64-glib2 mingw-w64-x86_64-pkg-config
21*bb4ee6a4SAndroid Build Coastguard Worker```
22*bb4ee6a4SAndroid Build Coastguard Worker
23*bb4ee6a4SAndroid Build Coastguard WorkerNote: You may need to add msys locations(which by default is C:\\msys64\\mingw64\\bin) to your PATH.
24*bb4ee6a4SAndroid Build Coastguard Worker
25*bb4ee6a4SAndroid Build Coastguard WorkerFollowing commands should build the libslirp library and place it in `build` directory.
26*bb4ee6a4SAndroid Build Coastguard Worker
27*bb4ee6a4SAndroid Build Coastguard Worker```sh
28*bb4ee6a4SAndroid Build Coastguard Workergit clone https://gitlab.freedesktop.org/slirp/libslirp.git
29*bb4ee6a4SAndroid Build Coastguard Workercd libslirp
30*bb4ee6a4SAndroid Build Coastguard Workermeson build
31*bb4ee6a4SAndroid Build Coastguard Workerninja -C build
32*bb4ee6a4SAndroid Build Coastguard Worker```
33*bb4ee6a4SAndroid Build Coastguard Worker
34*bb4ee6a4SAndroid Build Coastguard Worker### Building on linux for windows
35*bb4ee6a4SAndroid Build Coastguard Worker
36*bb4ee6a4SAndroid Build Coastguard Workerlibslirp depends on msys2's package that provides
37*bb4ee6a4SAndroid Build Coastguard Worker[libglib-2.0-0.dll](https://packages.msys2.org/package/mingw-w64-x86_64-glib2) and glib inturn
38*bb4ee6a4SAndroid Build Coastguard Workerdepends on a few other libraries. On linux libglib-2.0-0.dll is not available as a dll with mingw
39*bb4ee6a4SAndroid Build Coastguard Workersetup or in another other apt packages. So you need to build dependent libraries either manually or
40*bb4ee6a4SAndroid Build Coastguard Workerget them prebuilt from somewhere. Once you have those, create a file name `cross-compile` in
41*bb4ee6a4SAndroid Build Coastguard Workerlibslirp directory that looks something like
42*bb4ee6a4SAndroid Build Coastguard Worker
43*bb4ee6a4SAndroid Build Coastguard Worker```
44*bb4ee6a4SAndroid Build Coastguard Workerc = 'x86_64-w64-mingw32-gcc'
45*bb4ee6a4SAndroid Build Coastguard Workercpp = 'x86_64-w64-mingw32-g++'
46*bb4ee6a4SAndroid Build Coastguard Workerar = 'x86_64-w64-mingw32-ar'
47*bb4ee6a4SAndroid Build Coastguard Workerstrip = 'x86_64-w64-mingw32-strip'
48*bb4ee6a4SAndroid Build Coastguard Workerpkgconfig = 'x86_64-w64-mingw32-pkg-config'
49*bb4ee6a4SAndroid Build Coastguard Workerexe_wrapper = 'wine64'
50*bb4ee6a4SAndroid Build Coastguard Worker
51*bb4ee6a4SAndroid Build Coastguard Worker[built-in options]
52*bb4ee6a4SAndroid Build Coastguard Workerpkg_config_path = ['/tmp/x86_64-w64-mingw32/lib/', '/tmp/x86_64-w64-mingw32/', '/tmp/mingw64/lib/pkgconfig']
53*bb4ee6a4SAndroid Build Coastguard Worker
54*bb4ee6a4SAndroid Build Coastguard Worker[host_machine]
55*bb4ee6a4SAndroid Build Coastguard Workersystem = 'windows'
56*bb4ee6a4SAndroid Build Coastguard Workercpu_family = 'x86_64'
57*bb4ee6a4SAndroid Build Coastguard Workercpu = 'x86_64'
58*bb4ee6a4SAndroid Build Coastguard Workerendian = 'little'
59*bb4ee6a4SAndroid Build Coastguard Worker```
60*bb4ee6a4SAndroid Build Coastguard Worker
61*bb4ee6a4SAndroid Build Coastguard Workerand then run the following command to build
62*bb4ee6a4SAndroid Build Coastguard Worker
63*bb4ee6a4SAndroid Build Coastguard Worker```sh
64*bb4ee6a4SAndroid Build Coastguard Workermeson build --cross-file=cross-compile
65*bb4ee6a4SAndroid Build Coastguard Workerninja -C build
66*bb4ee6a4SAndroid Build Coastguard Worker```
67*bb4ee6a4SAndroid Build Coastguard Worker
68*bb4ee6a4SAndroid Build Coastguard WorkerNote: Above steps highly depends on how you have setup your cross-compiling environment.
69