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