On Mon, Aug 15, 2016 at 09:52:07AM +0200, Christian Hesse wrote: > From: Christian Hesse <mail@xxxxxxxx> > > Commit 08aade70 (mingw: declare main()'s argv as const) changed > declaration of main function. This breaks linking external projects > (e.g. cgit) to libgit.a with: > > error: Multiple definition of `main' I'd expect the culprit is actually 3f2e229 (add an extra level of indirection to main(), 2016-07-01). > So do not add common-main to lib and let projects have their own > main function. That is certainly an option, but I think it means that those projects are potentially buggy in the same way that some git commands were prior to the common-main series. Namely, the common main() may do some run-time setup that parts of libgit.a assume has been done. I would not be surprised if cgit crashes on Windows, for instance, for the reasons detailed in 650c449 (common-main: call git_extract_argv0_path(), 2016-07-01). I would also not be surprised if nobody actually builds cgit on Windows. :) The "right" way to do it (according to the way libgit.a views the world) is for cgit's main to become cmd_main(), and let libgit.a do its run-time startup before getting there. -Peff -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html