Hi again Martijn, Sorry I didn't see you had made use of check_find_package_result().
This introduces a more fundamental problem, now sys expat is required. If I hide expat from my system and configure kicad with that check in, the output is: -- The C compiler identification is GNU -- The CXX compiler identification is GNU -- Check for working C compiler: C:/dev-env/apps/MinGW/bin/gcc.exe -- Check for working C compiler: C:/dev-env/apps/MinGW/bin/gcc.exe -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Check for working CXX compiler: C:/dev-env/apps/MinGW/bin/g++.exe -- Check for working CXX compiler: C:/dev-env/apps/MinGW/bin/g++.exe -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for installed OpenGL -- found -- Check for installed Expat -- not found CMake Error at CMakeModules/CheckFindPackageResult.cmake:6 (message): Expat was not found - it is required to build Kicad Call Stack (most recent call first): CMakeLists.txt:134 (check_find_package_result) CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: EXPAT_INCLUDE_DIR (ADVANCED) used as include directory in directory C:/dev-env/src/kicad/kicad -- Configuring incomplete, errors occurred! See my earlier explanation about how QUIET and check_find_package_result() work together. Just a bit of rejigging required and it'll work how you want it to. Best Regards, Brian. On 15 October 2010 00:17, Brian Sidebotham <[email protected]> wrote: > Hi Martijn, > > I don't think this patch is correct. You have made the build alter if > expat is found as a system library. In this case you add the system > expat library to the linker. The trouble is, although I have a system > expat, I compile wxWidgets to use its own implementation as I'm sure > this is the more thoroughly controlled code path (less susceptible to > bugs). > > Instead, you could check for just the component expat for wxWidgets, > and only if you cannot locate expat shoudl you then do the sys expat > check and conditionally add the expat library link option, and then > continue on to check for the full list of other wxWidgets components. > > QUIET does not mean not required - it just means do not fail at this > point, and do not print messages to the screeen. This is important, > although most checks in the KiCad cmake files are straight forward. A > patch I put together the other day would require this operation. It > was along the lines of: > > --- > > find_package(wxWidgets COMPONENTS gl adv html core net base xml QUIET) > > # On a windows console (i.e. not MSYS), a monolithic build cannot > detect other components, > # only gl and mono can be detected > if(WIN32) > if(NOT wxWidgets_FOUND) > find_package(wxWidgets COMPONENTS mono gl QUIET) > endif(NOT wxWidgets_FOUND) > endif(WIN32) > > --- > > If REQUIRED was used, it would have failed before doing the > exceptional check for the win32 monolithic build. KiCad uses this > method, and then fails through the check_find_package_result() method > if needed after all possible checks have been run. This is a neat way > of handling multiple checks. You can find the > check_find_package_result() cmake macro under the CMakeModules > directory of the kicad source. > > This is only my opinion of course, others might expand on this or > approve it and tell me to shut up! ;-) > > Best Regards, > > Brian. > > On 14 October 2010 12:10, Martijn Kuipers <[email protected]> wrote: >> Dear Devs, >> >> Kicad has a dependency on expat. It can either be provided by expat or by >> wxWidgets. However, cmake does not look for expat and as such if not found, >> a linker error occurs (which is bad, since it happens near the end of the >> building process). >> >> This patch adds a non-required dependency on expat (since it can be provided >> by wxWidgets) and if it finds the library it adds it to the linker flag >> (-lexpat). If the library is not found, it is added as a component to >> wxWidgets library. >> >> This patch allows me to build kicad, with the system provided library for >> expat. I have tested this on OSX, but I think it is needed on all platforms. >> >> >> Note, all dependencies in the CMake files are of type QUIET, which means not >> required. It also means, the compiler will try to build kicad, whether it >> finds the libraries or not. From a quick look it might make sense to make >> wxWidgets REQUIRED and to make expat REQUIRED if it is not provided by >> wxWidgets. This is not added to this patch, because I would like to hear >> your opinion on this first. >> >> /Martijn >> >> >> >> >> >> >> _______________________________________________ >> Mailing list: https://launchpad.net/~kicad-developers >> Post to : [email protected] >> Unsubscribe : https://launchpad.net/~kicad-developers >> More help : https://help.launchpad.net/ListHelp >> >> > _______________________________________________ Mailing list: https://launchpad.net/~kicad-developers Post to : [email protected] Unsubscribe : https://launchpad.net/~kicad-developers More help : https://help.launchpad.net/ListHelp

