On Friday, 28 February 2020 04:02:18 UTC+11, Nicholas Alexander wrote: > Hi Mark, > > > > On Thu, Feb 27, 2020 at 6:10 AM <markdo...@gmail.com> wrote: > Hi, I'm new to this. I have made Intellisense work in VS2019 with Firefox to > give full insight to the code. Would anyone be interested in my steps or is > this something obvious? > > > > I have no idea if this is obvious, but it sounds cool! A really rough sketch > of your steps, like `./mach build-backend -b ...` and then modify this and > edit this might help us understand how subtle this is, where we might improve > to make this easier, etc. Maybe others are doing this regularly and it is > well understood? I hope others will speak up if that's so. > > > It feels like https://bugzilla.mozilla.org/show_bug.cgi?id=1535732 may be > relevant, although that seems to be a blend of "official as in automation" > and "official as in supported for developers". > > > Nick
If people find this useful, we might be able to bring it back into the docs for getting Firefox to build for Windows: VS2017/VS2019 SETUP: I wanted to do the following: - Enable Intellisense to get a better view into the codebase with Visual Studio's great tools (I'm operating with VS2019 Enterprise at the moment) - Step through as much of the code as I can Ingredients: VS2017 or VS2019 Community minimum. Method: Install the MozillaBuild tools (https://wiki.mozilla.org/MozillaBuild) In the MinGW32 shell, Clone the source code: hg clone https://hg.mozilla.org/mozilla-central Change this to stop unified builds for debug stepping purposes: - https://bugzilla.mozilla.org/attachment.cgi?id=9097538&action=diff Create a file mozconfig in the top source directory (mozilla-central) in order to be able to step through all the code in VS: ac_add_options --disable-optimize ac_add_options --target=x86_64-pc-mingw32 ac_add_options --host=x86_64-pc-mingw32 Kill tasks to enable a clean build/tool setup if they exist: Any tasks running from \Users\[LoginID]\.mozbuild (or the directory you installed the tools to) Remove \Users\[ID]\mercurial.ini folder Remove \Users\[ID]\.mozbuild folder In the MinGW32 shell, clean and install tools: mach clobber mach bootstrap Start the MinGW32 shell again, and configure and build: mach configure mach build Set the Windows Path in the environment variables for the clang compiler to the \Users\[LoginID]\.mozbuild version. Remove references to other clang directories from the PATH variables. Start the MinGW32 shell again: mach build-backend -b VisualStudio For the next changes, VSCode has nice multi-line/multi-file search/replace. In the top object folder (obj-x86_64-pc-mingw32): Set project settings debugger to Native Only: Searching only *.vcxproj.user files, replace: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> </Project> with <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Build|Win32'"> <LocalDebuggerDebuggerType>NativeOnly</LocalDebuggerDebuggerType> <DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor> </PropertyGroup> </Project> Pre-processor macro definitions: Searching only *.vcxproj files, replace: ;_SECURE_ATL with ;_SECURE_ATL;MOZILLA_INTERNAL_API;MOZILLA_OFFICIAL (Optional VS2019 only) Retarget solution to latest tools/platform: Searching only *.vcxproj files, replace: <PlatformToolset>v141</PlatformToolset> with <PlatformToolset>v142</PlatformToolset> In VS2017/2019, install and enable child-process debugging: - https://marketplace.visualstudio.com/items?itemName=vsdbgplat.MicrosoftChildProcessDebuggingPowerTool In VS, go to the Child Process Debugging Settings and make sure "Enable child process debugging" is checked and saved. Load the obj-x86_64-pc-mingw32\msvc\mozilla.sln solution in VS2017/VS2019, and select Firefox.exe project as the Startup Project. Work through remaining Intellisense errors (in the Error List view, select Intellisense Only. A few particular fixes will clear up the rest of them): Add cairo/ in front of missing cairo header references to find them correctly. Comment out defines that include assertions only (e.g. static_assert calls) Add /std:c++17 to Intellisense Additional Options in the firefox.exe properties NMake section. This enables VS Intellisense to understand the C++17 language constructs without complaining. Click Project/Rescan Solution (will probably happen automatically if you close and reload the solution) Add Intellisense Preprocessor definitions in appropriate projects if assertions still demand it: MOZILLA_INTERNAL_API MOZILLA_OFFICIAL Make a backup of the msvc folder in obj-x86_64-pc-mingw32. If "mach build" decides to run "mach build-backend -b VisualStudio" you will lose your changes to the Visual Studio build. Optional: Install Mercurial for Windows Install Mercurial Support extension in VS Let me know if you have any questions. It took a lot of messing around to get past certain issues. _______________________________________________ dev-builds mailing list dev-builds@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-builds