nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 1 | # Windows Split DLLs |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 2 | |
nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 3 | A build mode where chrome.dll is split into two separate DLLs. This was |
| 4 | undertaken as one possible workaround for toolchain limitations on Windows. |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 5 | |
Nico Weber | c36b015 | 2020-04-18 03:12:46 | [diff] [blame] | 6 | We removed support for this again after the toolchain limitations were fixed, |
| 7 | see https://crbug.com/726150. |
| 8 | |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 9 | ## How |
| 10 | |
Nico Weber | c36b015 | 2020-04-18 03:12:46 | [diff] [blame] | 11 | Split DLL used to be controlled by the `is_multi_dll_chrome` gn variable. |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 12 | |
| 13 | ## Details |
| 14 | |
Nico Weber | c36b015 | 2020-04-18 03:12:46 | [diff] [blame] | 15 | This forcible split was implemented by putting .lib files in either one DLL or |
nodir | 62c9184e | 2015-08-25 00:57:46 | [diff] [blame] | 16 | the other, and causing unresolved externals that result during linking to be |
| 17 | forcibly exported from the other DLL. This works relatively cleanly for function |
| 18 | import/export, however it cannot work for data export. |
andybons | 3322f76 | 2015-08-24 21:37:09 | [diff] [blame] | 19 | |
Nico Weber | c36b015 | 2020-04-18 03:12:46 | [diff] [blame] | 20 | Some more details can be found on the initial commit of the `split_link` script |
xiaoyin.l | 1003c0b | 2016-12-06 02:51:17 | [diff] [blame] | 21 | https://src.chromium.org/viewvc/chrome?revision=200049&view=revision and the |
| 22 | associated bugs: https://crbug.com/237249 https://crbug.com/237267. |