kicad-developers team mailing list archive
-
kicad-developers team
-
Mailing list archive
-
Message #14394
Re: KiCad build.
On 08/19/2014 03:37 PM, Wayne Stambaugh wrote:
> On 8/19/2014 4:17 PM, Dick Hollenbeck wrote:
>> On 08/18/2014 06:47 PM, Wayne Stambaugh wrote:
>>> On 8/18/2014 6:45 PM, Brian Sidebotham wrote:
>>>> On 16 August 2014 17:44, Wayne Stambaugh <stambaughw@xxxxxxxxxxx> wrote:
>>>>> One of the tasks that I have committed to working on in the KiCad road
>>>>> map is to clean up the current mess we have created by allowing
>>>>> dependency libraries to be built as part of the KiCad source build. The
>>>>> only exception I see for the time being is Boost. Although I am have my
>>>>> reservations on that as well. Why you ask? I've spent several days
>>>>> trying to get KiCad to build on Windows using MSYS2 as my build
>>>>> environment and mingw64 as my target environment. Every single library
>>>>> dependency with the exception of our custom Boost and avhttp (which
>>>>> could easily be build and installed using CMake) are already packaged
>>>>> for me. However, the current KiCad build insists on downloading and
>>>>> building some libraries from source that are already installed. This is
>>>>> silly. I can resolve the issues by passing all of the
>>>>> PACKAGE_ROOT_PATHs when I run CMake but that is silly as well since my
>>>>> build environment already points the correct path.
>>>>>
>>>>> Originally I intended to create a separate project to build the KiCad
>>>>> library dependencies but I have since changed my mind. I do *not* think
>>>>> it is asking too much of developers to learn how to build and/or install
>>>>> libraries on their preferred platform. If as a developer you must have
>>>>> this done for you automatically, I am going to please ask that *you*
>>>>> create a separate platform specific build tool such as the excellent
>>>>> kicad-winbuilder that Brian has created. This will significantly
>>>>> simplify the KiCad CMake files and eliminate the situation I described
>>>>> above. My preference and goal is that the KiCad CMake files be used to
>>>>> build KiCad, not library dependencies.
>>>>>
>>>>> Initially, I plan to remove the dependencies that do not require any
>>>>> patching to build which currently are avhttp, swig, cairo, libpng,
>>>>> pixman, pcre, pkgconfig, and glew. Then I will remove the dependencies
>>>>> with platform specific patches which are openssl, wxwidgets and
>>>>> wxpython. Then I will try to figure out what to do with the problem
>>>>> child that is Boost. I would also suggest that all platform specific
>>>>> library dependency build patches be remove as well leaving only the
>>>>> Boost patches that are required for all platforms (except the context
>>>>> switching patches).
>>>>>
>>>>> My goal here is not to step on anyone's toes it is to get our build
>>>>> system under control so that I can build *KiCad* rather than figure out
>>>>> how to get the dependencies to build or not as the platform dictates. I
>>>>> expect our code to be well designed and I don't think expecting the same
>>>>> from our build system design is out of line. If any one has major
>>>>> objections then we will have to figure something out because I am not
>>>>> going to continue to spend valuable time fighting our build tools to get
>>>>> them to properly use the dependencies already installed on my platform.
>>>>>
>>>>> Wayne
>>>>>
>>>>
>>>> Hi Wayne,
>>>>
>>>> I think that sounds like a sane decision, although of course KiCad
>>>> will be subject to the bugs in other libraries, but it's up to
>>>> distribution maintainers to sort those out in my opinion.
>>>>
>>>> I hope that we can use some sort of deprecation system, please mark a
>>>> lib as being deprecated so that I can sort out Winbuilder before the
>>>> CMake system is broke. It's much easier to work that way round as
>>>> opposed to a reactionary approach where we break everything and then
>>>> everyone has to fix their build before being able to do anything. I
>>>> will do the leg work to keep the Winbuilder people happy and do any
>>>> projects necessary to package dependencies required by it.
>>>
>>> I will be making changes very slowly because I expect there to be some
>>> breakage with some of the FindFoo.cmake changes I'm going to make. This
>>> will give everyone time to respond should I break anything. I will be
>>> pushing hard against adding personal install paths to every
>>> FindFoo.cmake file. CMake knows how to find the correct default paths
>>> on most platforms and I will always give the developer the chance to
>>> override those using either and environment variable or a definition on
>>> the CMake command line for custom library testing. I will start out
>>> with the dependencies that don't require any patches to build and then
>>> address the more complex ones like wxWidgets and finish up with the
>>> nightmare that is Boost. If I change more than one FindFoo.cmake every
>>> two weeks, that will be a blistering pace. The goal is to get each
>>> dependency test working and properly designed before moving to the next one.
>>>
>>> Cheers,
>>>
>>> Wayne
>>
>>
>> The current thinking among those using CMake for several large projects is that it can
>> either find or it can build in the first pass. It struggles with finding a prerequisite
>> and building the prerequisite as a fallback, then continuing to build that which does the
>> depending. This is why when you dig into it, quite a number of larger projects have split
>> their CMake builders into two. Sometimes this is done with or without a 3rd umbrella
>> builder on top of the two.
>>
>> a) prerequisite builder
>> b) core project builder
>
> I would be happy if b) would work well on every platform where the
> developer had the appropriate prerequisites already built and installed.
> As far as a) goes, I would prefer that this be completely separate code
> and not a requirement to build KiCad.
They are called prerequisites because they are. I don't begin to understand this statement.
It's like saying I wish my car never ran out of gas, so therefore I won't buy any.
The prerequisites have to come from somewhere, the gas has to come from somewhere.
Your statement confuses me to the point where I think its time for others to take up the
mantle here.
You folks have a difficult struggle ahead. Again, somebody needs to get on the phone with
kitware and get their advice and help. You have the pieces, you need the expertise and help.
I am out on this topic, I tried. I don't feel like I succeeded.
Dick
Follow ups
References