Hello Inkscape Devs,

I recently found an issue that I wanted to fix (not particularly related to this thread but it's: https://bugs.launchpad.net/inkscape/+bug/307833).

As a first time dev/user of the website/wiki/build system, I wanted to point out some issues I ran into while building Inkscape that may not be obvious to those that constantly use it. I do want to point out that overall, I think building was relatively easy.

I attempted to build under Windows 8.1 x64:

1. Bazaar seems to take awhile to download the sources, it was around 30 minutes for the 'bzr checkout lp:inkscape' command, this may be a misunderstanding of the wiki instructions and bzr though. Another 10-15 minutes was required for the devlibs64.

2. I initially tried to build a 32-bit target, however I think the compiler stated in the Wiki (GCC 4.6.1) may have been outdated for the project since there are new warnings that were turned on that I had to turn off in the build.xml for the compiler to stop complaining.

3. When building 32-bit I eventually was able to compile and link, however when copying the binaries the libgomp-1.dll appeared to be missing and the build failed - possibly due to the old compiler toolchain used from the Wiki instructions? For reference I was using: http://wiki.inkscape.org/wiki/index.php/Compiling_Inkscape_on_Windows#Setting_up_the_build_environment

4. I noticed that the btool with the "-j" parallel job configuration didn't seem to spawn more than 1 compiler process. Only after looking at the source did I realized that I needed to build it with "-fopenmp". The "-fopenmp" option was the alternative build step for btool in the Wiki instructions, I think it should be instead the first option (and possibly move the other two alternatives into another section), wiki for reference: http://wiki.inkscape.org/wiki/index.php/Compiling_Inkscape_on_Windows#Building_Inkscape

5. I gave up on 32-bit target and tried the 64-bit build. This worked after I realized that the config.h was not being regenerated after I had previously built it for a 32-bit target, after deleting this file the build succeeded. To be more specific I think I was getting some invalid functions being called due to POPPLER_NEW_ERRORAPI not being defined correctly. A separate folder for all generated build files would make this more intuitive to me, but I understand it would likely be a bit of work.

6. I didn't seem to easily find where the output was being generated, initially I thought the inkscape.exe in the build folder was the final one, and of course attempting to run it causes dll dependency failures. Only after poking around did I realize the 'inkscape' subfolder was the final output folder.

7. I'm confused by the unittests, I think I've run across 2-3 different frameworks:
    a. A standalone test executable w/o a real framework located at: inkscape/src/io/streamtest.cpp
    b. Some CxxTest's located at: inkscape/src/svg/test-svg.cpp
    c. What I think are tests using GTest, I haven't found these in the source I pulled down, but the Jenkins job I think is using them (I found this after some mailing list searches): http://ec2-54-69-235-61.us-west-2.compute.amazonaws.com:8080/job/Inkscape_trunk_unittests/
        (This seems to question whether I have the correct sources or not since I can't find these test names anywhere)

***8. Linking is slow, on the order of minutes, so it makes development turn-around time on changes very long. This is actually a really big turnoff for developing. I think this hits inkscape.exe and inkview.exe.

        The linking is with the default link arguments, I did change compilation from -O2 to -O0 and added -g for debugging. This also ties back to #5, where if a separate build folder existed I could have one for debug builds and one for release/optimized and not have to clobber them each time. Maybe there's an Ant/btool property I'm missing? I'm not sure if 'ld' has incremental linking support, and if it would even help, similar to what Visual C++ has.


Nice to haves:
9. I've heard some mention of cmake support (http://wiki.inkscape.org/wiki/index.php/CMake), but I don't know the status. In general if Visual Studio was supported under Windows it would make it much easier for debugging in the IDE. The recent community edition might make this option more attractive under Windows.

10. Bazaar seems to be used in relatively few projects, I know this would be a huge undertaking to switch and may not be worth the effort, but it might be a barrier for new contributors. It's something I think is minor, but it is yet another 'thing' I need to read up on/learn.


Thanks.
-- Mark