| 113 | === Misc === |
| 114 | The following are some important pieces of the puzzle. |
| 115 | |
| 116 | ==== ''build-dll-win32.sh'' ==== |
| 117 | The DLL compiling logic Is implemented in this shell script. This script should be used to compile libraries on Windows (The Makefiles have |
| 118 | been updated to point to this shell script on Windows.). This script will automatically split a DLL is needed without any extra user action needed. |
| 119 | |
| 120 | The resulting libraries can also be used as if they were not split without any special treatment. |
| 121 | |
| 122 | ==== ''compiler/main/Manifest.hs'' ==== |
| 123 | Contains the new logic for manifest files. Coincidentally, SxS manifest do allow for an RPATH like functionality. |
| 124 | By using config files (which cannot be embedded in the exe) you can specify probing paths for SxS searches. |
| 125 | |
| 126 | {{{ |
| 127 | <!-- <appname>.exe.config --> |
| 128 | <configuration> |
| 129 | <windows> |
| 130 | <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> |
| 131 | <probing privatePath="bin;..\bin" /> |
| 132 | </assemblyBinding> |
| 133 | </windows> |
| 134 | </configuration> |
| 135 | }}} |
| 136 | |
| 137 | Unfortunately according to MSDN you are limited to a laughable 9 entries.. |
| 138 | |
| 139 | ==== ''driver\utils\dynwrapper.c'' ==== |
| 140 | As with Linux, a dynamic GHC on Windows is a wrapper. However unlike Linux it's not a shell script |
| 141 | but a driver exe. The main application is compiled into a dll named *application.exe.dll* and the |
| 142 | wrapper loads this dll and sets the search path for libraries. |
| 143 | |
| 144 | This process is driven by ''rules\build-prog.mk''. |
| 145 | |