A Tale (Tail?) of Trailing Slashes
Well, we’re now a bit over a week into the Summer of Code program, and I figured it would be time for an update. Over the last week, I’ve been working on getting AbiCollab to build on Windows. Now that I have makefiles somewhat figured out (see my last post for more about that), I went ahead and created a diving make buildsystem for AbiCollab. This may sound easy, but there was one minor complication: it looked like my include paths were being ignored! Marc even tried hardcoding them once (instead of using $(shell pwd) ) and it still didn’t work. Nevermind that other plugins had nearly identical makefiles with fully functioning include paths…
Ahh, but they weren’t quite identical. I tried to shuffle around the build order for directories, and this gave me an important clue: I could get one source file to build to an object file, but only that one file. With my spirit renewed (when your mentor is confused/stumped and everybody else says makefiles are black magic, it can be a bit difficult to push ahead), I compared the makefile from the functioning folder with the one from a problematic folder. The only difference I could see was that in the “broken” makefile, some of the include paths (all except $(shell pwd) itself, I think) had trailing slashes, and there were no trailing slashes in the functioning one. It seemed like too simple, but yet, perfectly logical, since the makefiles were otherwise identical and identical with functioning ones in other plugins.
After removing them and attempting a make (which was mostly successful: definitely proceeding past where it had before), I was ecstatic and shouted for joy (IN ALL CAPS) in #abiword - the weird problem that had held back my progress was now resolved!
Mind you, there are still a few more problems, but if this was easy, Google wouldn’t be sponsoring me :) I’m definitely having a blast so far, and I’m totally pumped with how awesome AbiCollab will be. An advantage of being stuck for a few days on a problem is that I skimmed a bunch of the files trying to figure out the problem, so I have familiarity that will definitely be handy. So that’s where I am right now - working on more compilation fixes, currently wrestling with getting the TCP backend (with asio and boost) to build.
Till next time, keep hacking, ants!