From b6c355245860cb15fea991fb6632dfa5cfedea2b Mon Sep 17 00:00:00 2001 From: Robin Mills Date: Fri, 30 Sep 2016 13:14:39 +0000 Subject: [PATCH] #1230 Work in Progress. CMake/MinGW/32. --- README-CMAKE | 3 +++ TODO-CMAKE | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/README-CMAKE b/README-CMAKE index b93182bd..a22e4971 100644 --- a/README-CMAKE +++ b/README-CMAKE @@ -17,6 +17,9 @@ NOTE: The msvc-2003 build files are deprecated and will not be supported after v0.26. + Exiv2 will not build on MinGW (neither 32bit nor 64bit) + This is discussed in TODO-CMAKE + Robin Mills robin@clanmills.com 2016-09-23 diff --git a/TODO-CMAKE b/TODO-CMAKE index 596a5fa6..0f6c7226 100644 --- a/TODO-CMAKE +++ b/TODO-CMAKE @@ -9,10 +9,52 @@ Current Status -ToDo: * CMake/MinGW is not working. - See config/buildserver/dailyBuild.sh for explanation. - +ToDo: * CMake/MinGW is not working. I hope to fix this for v0.26 + + # Reasons why I can't get cmake to work: + # + # 1) Even although gcc is on the path, we must tell cmake not to use /c/MinGW/bin/gcc) + # 2) It's using the wrong headers. Needs /c/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include + # cmake -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX=$dist -DEXIV2_ENABLE_NLS=OFF \ + # -DCMAKE_C_COMPILER=$(which gcc) -DCMAKE_CXX_COMPILER=$(which g++) \ + # "-DCMAKE_CXX_FLAGS=-I/c/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include" + # $exiv2 + # 3) even so, it errors instantly on: + # In file included from c:/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include/stddef.h:7:0, + # from c:/Qt/Qt5.6.0/Tools/mingw492_32/lib/gcc/i686-w64-mingw32/4.9.2/include/stddef.h:1, + # from C:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/xmpsdk/include/XMP_Const.h:14, + # from C:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/xmpsdk/src/XMPCore_Impl.hpp:13, + # from C:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/xmpsdk/src/ExpatAdapter.cpp:10: + # c:/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include/crtdefs.h:26:9: error: 'size_t' does not name a type + # typedef size_t rsize_t; + # 4) Building cmake itself required setting CC CXX CXXFLAGS and LDFLAGS + # AND editing a system file in Qt with an erroneous #pragma error NTDDI_VERSION and _WIN32_WINNT + # In file included from c:/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include/windows.h:10:0, + # from c:/Users/rmills/gnu/cmake/cmake-3.6.2/Utilities/cmlibarchive/libarchive/archive_windows.h:74, + # from c:/Users/rmills/gnu/cmake/cmake-3.6.2/Utilities/cmlibarchive/libarchive/archive_platform.h:60, + # from c:/Users/rmills/gnu/cmake/cmake-3.6.2/Utilities/cmlibarchive/libarchive/xxhash.c:35: + # c:/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include/sdkddkver.h:186:2: error: #error NTDDI_VERSION and _WIN32_WINNT mismatch! + # My work-around was to comment off the #error statement! + + CMake generates the wrong include response files. + + On my system, these should have the code: + -IC:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/src + -IC:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/include + -IC:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/include/exiv2 + -IC:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/build + -IC:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/xmpsdk/include + -IC:/MinGW/msys/1.0/home/rmills/gnu/exiv2/trunk/xmpsdk/src + -IC:/Qt/Qt5.6.0/Tools/mingw492_32/i686-w64-mingw32/include + -IC:/Qt/Qt5.6.0/Tools/mingw492_32/lib/gcc/i686-w64-mingw32/4.9.2/include + -IC:/MinGW/msys/1.0/local/include + + Even with this correction, the build fails. + + I put the correct include code into includes.rsp and find to propagate it to the wrong files. + /home/rmills/gnu/exiv2/trunk/build> find . -name "includes_*.rsp" -exec cp includes.rsp {} \; + Robin Mills robin@clanmills.com -2016-09-29 +2016-09-30