Skip to content

Commit

Permalink
Update to cmake 3.7.2 from yocto master
Browse files Browse the repository at this point in the history
This was requested as important for the kde runtime:
flatpak/freedesktop-sdk-images#21
  • Loading branch information
alexlarsson committed Apr 18, 2017
1 parent 05777b3 commit 67adb8e
Show file tree
Hide file tree
Showing 9 changed files with 351 additions and 0 deletions.
47 changes: 47 additions & 0 deletions meta-freedesktop/recipes-devtools/cmake/cmake.inc
@@ -0,0 +1,47 @@
# Copyright (C) 2005, Koninklijke Philips Electronics NV. All Rights Reserved
# Released under the MIT license (see packages/COPYING)

SUMMARY = "Cross-platform, open-source make system"
HOMEPAGE = "http://www.cmake.org/"
BUGTRACKER = "http://public.kitware.com/Bug/my_view_page.php"
SECTION = "console/utils"
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://Copyright.txt;md5=7a64bc564202bf7401d9a8ef33c9564d \
file://Source/cmake.h;beginline=1;endline=3;md5=4494dee184212fc89c469c3acd555a14"

CMAKE_MAJOR_VERSION = "${@'.'.join(d.getVar('PV', True).split('.')[0:2])}"

SRC_URI = "https://cmake.org/files/v${CMAKE_MAJOR_VERSION}/cmake-${PV}.tar.gz \
file://support-oe-qt4-tools-names.patch \
file://qt4-fail-silent.patch \
file://avoid-gcc-warnings-with-Wstrict-prototypes.patch \
file://0001-KWIML-tests-Remove-format-security-from-flags.patch \
"

SRC_URI[md5sum] = "79bd7e65cd81ea3aa2619484ad6ff25a"
SRC_URI[sha256sum] = "dc1246c4e6d168ea4d6e042cfba577c1acd65feea27e56f5ff37df920c30cae0"

UPSTREAM_CHECK_REGEX = "cmake-(?P<pver>\d+(\.\d+)+)\.tar"

# Ugly hack to work around undefined OE_QMAKE_PATH_EXTERNAL_HOST_BINS variable
# and possibly missing qmake binary (qtbase-native can be removed from sysroot
# e.g. in order to upgrade it, even when there is target qtbase)

# Fixes errors like this in cmake(-native).do_configure:
#| -- Performing Test run_pic_test - Success
#| CMake Error at tmp-eglibc/sysroots/qemuarm/usr/lib/cmake/Qt5Core/Qt5CoreConfig.cmake:27 (message):
#| The imported target "Qt5::Core" references the file
#|
#| "/qmake"
#|
#| but this file does not exist. Possible reasons include:

do_configure_prepend() {
sed -i 's/^find_package(Qt5Core QUIET)$/#find_package(Qt5Core QUIET)/g' ${S}/Tests/RunCMake/CMakeLists.txt
sed -i 's/^ find_package(Qt5Core REQUIRED)/# find_package(Qt5Core REQUIRED)/g' ${S}/Tests/Qt4And5Automoc/CMakeLists.txt
sed -i 's/^ find_package(Qt5Widgets QUIET NO_MODULE)/# find_package(Qt5Widgets QUIET NO_MODULE)/g' ${S}/Tests/CMakeLists.txt
sed -i 's/^find_package(Qt5Widgets QUIET)/#find_package(Qt5Widgets QUIET)/g' ${S}/Source/QtDialog/CMakeLists.txt
sed -i 's/^ find_package(Qt5Widgets REQUIRED)/# find_package(Qt5Widgets REQUIRED)/g' ${S}/Tests/QtAutoUicInterface/CMakeLists.txt
sed -i 's/^ find_package(Qt5Widgets REQUIRED)/# find_package(Qt5Widgets REQUIRED)/g' ${S}/Tests/QtAutogen/CMakeLists.txt
sed -i 's/^ find_package(Qt5Core REQUIRED)/# find_package(Qt5Core REQUIRED)/g' ${S}/Tests/QtAutogen/autorcc_depends/CMakeLists.txt
}
@@ -0,0 +1,33 @@
From 0941395b146804abcd87004589ff6e7a2953412d Mon Sep 17 00:00:00 2001
From: Jussi Kukkonen <jussi.kukkonen@intel.com>
Date: Thu, 16 Mar 2017 14:39:04 +0200
Subject: [PATCH] KWIML tests: Remove format-security from flags

For the tests where "format" is removed from flags, "format-security"
should be removed as well. Otherwise building cmake with
"-Wformat -Wformat-security" fails:

| cc1: error: -Wformat-security ignored without -Wformat [-Werror=format-security]

Upstream-Status: Backport [part of commit f77420cfc9]
Signed-off-by: Jussi Kukkonen <jussi.kukkonen@intel.com>
---
Utilities/KWIML/test/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Utilities/KWIML/test/CMakeLists.txt b/Utilities/KWIML/test/CMakeLists.txt
index 4f6f37b..1bf93bb 100644
--- a/Utilities/KWIML/test/CMakeLists.txt
+++ b/Utilities/KWIML/test/CMakeLists.txt
@@ -10,7 +10,7 @@ endif()
# Suppress printf/scanf format warnings; we test if the sizes match.
foreach(lang C CXX)
if(KWIML_LANGUAGE_${lang} AND CMAKE_${lang}_COMPILER_ID STREQUAL "GNU")
- set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wno-format")
+ set(CMAKE_${lang}_FLAGS "${CMAKE_${lang}_FLAGS} -Wno-format -Wno-format-security")
endif()
endforeach()

--
2.1.4

@@ -0,0 +1,22 @@
set( CMAKE_SYSTEM_NAME Linux )
set( CMAKE_C_FLAGS $ENV{CFLAGS} CACHE STRING "" FORCE )
set( CMAKE_CXX_FLAGS $ENV{CXXFLAGS} CACHE STRING "" FORCE )
set( CMAKE ASM_FLAGS ${CMAKE_C_FLAGS} CACHE STRING "" FORCE )
set( CMAKE_LDFLAGS_FLAGS ${CMAKE_CXX_FLAGS} CACHE STRING "" FORCE )

set( CMAKE_FIND_ROOT_PATH $ENV{OECORE_TARGET_SYSROOT} $ENV{OECORE_NATIVE_SYSROOT} )
set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER )
set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY )
set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY )

# Set CMAKE_SYSTEM_PROCESSOR from the sysroot name (assuming processor-distro-os).
if ($ENV{SDKTARGETSYSROOT} MATCHES "/sysroots/([a-zA-Z0-9_-]+)-.+-.+")
set(CMAKE_SYSTEM_PROCESSOR ${CMAKE_MATCH_1})
endif()

# Include the toolchain configuration subscripts
file( GLOB toolchain_config_files "${CMAKE_TOOLCHAIN_FILE}.d/*.cmake" )
foreach(config ${toolchain_config_files})
include(${config})
endforeach()
@@ -0,0 +1,42 @@
From 4bc17345c01ea467099e28c7df30c23ace9e7811 Mon Sep 17 00:00:00 2001
From: Andre McCurdy <armccurdy@gmail.com>
Date: Fri, 14 Oct 2016 16:26:58 -0700
Subject: [PATCH] CheckFunctionExists.c: avoid gcc warnings with
-Wstrict-prototypes

Avoid warnings (and therefore build failures etc) if a user happens
to add -Wstrict-prototypes to CFLAGS.

| $ gcc --version
| gcc (Ubuntu 4.8.4-2ubuntu1~14.04.3) 4.8.4
|
| $ gcc -Wstrict-prototypes -Werror -DCHECK_FUNCTION_EXISTS=pthread_create -o foo.o -c Modules/CheckFunctionExists.c
| Modules/CheckFunctionExists.c:7:3: error: function declaration isn't a prototype [-Werror=strict-prototypes]
| CHECK_FUNCTION_EXISTS();
| ^
| cc1: all warnings being treated as errors
|

Upstream-Status: Pending

Signed-off-by: Andre McCurdy <armccurdy@gmail.com>
---
Modules/CheckFunctionExists.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/Modules/CheckFunctionExists.c b/Modules/CheckFunctionExists.c
index 2304000..224e340 100644
--- a/Modules/CheckFunctionExists.c
+++ b/Modules/CheckFunctionExists.c
@@ -4,7 +4,7 @@
extern "C"
#endif
char
- CHECK_FUNCTION_EXISTS();
+ CHECK_FUNCTION_EXISTS(void);
#ifdef __CLASSIC_C__
int main()
{
--
1.9.1

@@ -0,0 +1,26 @@
Disable use of ext2fs/ext2_fs.h by cmake's internal libarchive copy

We don't want to add a dependency on e2fsprogs-native for cmake-native,
and we don't use CPack so just disable this functionality.

Upstream-Status: Inappropriate [config]

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>

--- a/Utilities/cmlibarchive/CMakeLists.txt
+++ b/Utilities/cmlibarchive/CMakeLists.txt
@@ -237,12 +237,8 @@ LA_CHECK_INCLUDE_FILE("copyfile.h" HAVE_COPYFILE_H)
LA_CHECK_INCLUDE_FILE("direct.h" HAVE_DIRECT_H)
LA_CHECK_INCLUDE_FILE("dlfcn.h" HAVE_DLFCN_H)
LA_CHECK_INCLUDE_FILE("errno.h" HAVE_ERRNO_H)
-LA_CHECK_INCLUDE_FILE("ext2fs/ext2_fs.h" HAVE_EXT2FS_EXT2_FS_H)
-
-CHECK_C_SOURCE_COMPILES("#include <sys/ioctl.h>
-#include <ext2fs/ext2_fs.h>
-int main(void) { return EXT2_IOC_GETFLAGS; }" HAVE_WORKING_EXT2_IOC_GETFLAGS)
-
+SET(HAVE_EXT2FS_EXT2_FS_H 0)
+SET(HAVE_WORKING_EXT2_IOC_GETFLAGS 0)
LA_CHECK_INCLUDE_FILE("fcntl.h" HAVE_FCNTL_H)
LA_CHECK_INCLUDE_FILE("grp.h" HAVE_GRP_H)
LA_CHECK_INCLUDE_FILE("inttypes.h" HAVE_INTTYPES_H)
@@ -0,0 +1 @@
alias cmake="cmake -DCMAKE_TOOLCHAIN_FILE=$OECORE_NATIVE_SYSROOT/usr/share/cmake/OEToolchainConfig.cmake"
@@ -0,0 +1,77 @@
Fail silently if system Qt installation is broken

Fixes a regression in behaviour from 2.8.10 to 2.8.11 resulting in the
following error if the system Qt installation is broken:

CMake Error at Modules/FindQt4.cmake:1028 (set_property):
set_property could not find TARGET Qt4::QtCore. Perhaps it has not yet
been created.
Call Stack (most recent call first):
Tests/RunCMake/CMakeLists.txt:79 (find_package)

Upstream-Status: Pending

Signed-off-by: Paul Eggleton <paul.eggleton@linux.intel.com>

The patch was slightly adapted in order to match cmake 3.2.2:
Another set_property was introduced which had to be included
within the if(QT_QTCORE_FOUND) statement.

Signed-off-by: Moritz Blume <moritz.blume@bmw-carit.de>
---
Modules/FindQt4.cmake | 39 ++++++++++++++++++++-------------------
1 file changed, 20 insertions(+), 19 deletions(-)

diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
index 6704769..9048e35 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -1000,25 +1000,26 @@ if (QT_QMAKE_EXECUTABLE AND
endif()
endmacro()

-
- # Set QT_xyz_LIBRARY variable and add
- # library include path to QT_INCLUDES
- _QT4_ADJUST_LIB_VARS(QtCore)
- set_property(TARGET Qt4::QtCore APPEND PROPERTY
- INTERFACE_INCLUDE_DIRECTORIES
- "${QT_MKSPECS_DIR}/default"
- ${QT_INCLUDE_DIR}
- )
- set_property(TARGET Qt4::QtCore APPEND PROPERTY
- INTERFACE_COMPILE_DEFINITIONS
- $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>
- )
- set_property(TARGET Qt4::QtCore PROPERTY
- INTERFACE_QT_MAJOR_VERSION 4
- )
- set_property(TARGET Qt4::QtCore APPEND PROPERTY
- COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION
- )
+ if(QT_QTCORE_FOUND)
+ # Set QT_xyz_LIBRARY variable and add
+ # library include path to QT_INCLUDES
+ _QT4_ADJUST_LIB_VARS(QtCore)
+ set_property(TARGET Qt4::QtCore APPEND PROPERTY
+ INTERFACE_INCLUDE_DIRECTORIES
+ "${QT_MKSPECS_DIR}/default"
+ ${QT_INCLUDE_DIR}
+ )
+ set_property(TARGET Qt4::QtCore APPEND PROPERTY
+ INTERFACE_COMPILE_DEFINITIONS
+ $<$<NOT:$<CONFIG:Debug>>:QT_NO_DEBUG>
+ )
+ set_property(TARGET Qt4::QtCore PROPERTY
+ INTERFACE_QT_MAJOR_VERSION 4
+ )
+ set_property(TARGET Qt4::QtCore APPEND PROPERTY
+ COMPATIBLE_INTERFACE_STRING QT_MAJOR_VERSION
+ )
+ endif()

foreach(QT_MODULE ${QT_MODULES})
_QT4_ADJUST_LIB_VARS(${QT_MODULE})
--
1.9.1

@@ -0,0 +1,54 @@
cmake: support OpenEmbedded Qt4 tool binary names

The FindQt4 module looks for Qt4 binaries to be able to gather the
paths used for compilation and also to be using during other processes
(translation update, translation binary generating and like) however
OpenEmbedded has renamed those to allow old QMake to be used in
parallel with the current one. This patch adds support for the
OpenEmbedded specific binary names.

Upstream-Status: Inappropriate [embedded specific]

Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>

The patch was slightly adapted in order to match cmake 3.2.2:
Instead of find_program, _find_qt4_program is now used.

Signed-off-by: Moritz Blume <moritz.blume@bmw-carit.de>
---
Modules/FindQt4.cmake | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/Modules/FindQt4.cmake b/Modules/FindQt4.cmake
index 11091b5..6704769 100644
--- a/Modules/FindQt4.cmake
+++ b/Modules/FindQt4.cmake
@@ -522,7 +522,7 @@ endfunction()

set(QT4_INSTALLED_VERSION_TOO_OLD FALSE)

-set(_QT4_QMAKE_NAMES qmake qmake4 qmake-qt4 qmake-mac)
+set(_QT4_QMAKE_NAMES qmake qmake2 qmake4 qmake-qt4 qmake-mac)
_qt4_find_qmake("${_QT4_QMAKE_NAMES}" QT_QMAKE_EXECUTABLE QTVERSION)

if (QT_QMAKE_EXECUTABLE AND
@@ -1148,12 +1148,12 @@ if (QT_QMAKE_EXECUTABLE AND
_find_qt4_program(QT_MOC_EXECUTABLE Qt4::moc moc-qt4 moc4 moc)
_find_qt4_program(QT_UIC_EXECUTABLE Qt4::uic uic-qt4 uic4 uic)
_find_qt4_program(QT_UIC3_EXECUTABLE Qt4::uic3 uic3)
- _find_qt4_program(QT_RCC_EXECUTABLE Qt4::rcc rcc)
- _find_qt4_program(QT_DBUSCPP2XML_EXECUTABLE Qt4::qdbuscpp2xml qdbuscpp2xml)
- _find_qt4_program(QT_DBUSXML2CPP_EXECUTABLE Qt4::qdbusxml2cpp qdbusxml2cpp)
+ _find_qt4_program(QT_RCC_EXECUTABLE Qt4::rcc rcc4 rcc)
+ _find_qt4_program(QT_DBUSCPP2XML_EXECUTABLE Qt4::qdbuscpp2xml qdbuscpp2xml4 qdbuscpp2xml)
+ _find_qt4_program(QT_DBUSXML2CPP_EXECUTABLE Qt4::qdbusxml2cpp qdbusxml2cpp4 qdbusxml2cpp)
_find_qt4_program(QT_LUPDATE_EXECUTABLE Qt4::lupdate lupdate-qt4 lupdate4 lupdate)
_find_qt4_program(QT_LRELEASE_EXECUTABLE Qt4::lrelease lrelease-qt4 lrelease4 lrelease)
- _find_qt4_program(QT_QCOLLECTIONGENERATOR_EXECUTABLE Qt4::qcollectiongenerator qcollectiongenerator-qt4 qcollectiongenerator)
+ _find_qt4_program(QT_QCOLLECTIONGENERATOR_EXECUTABLE Qt4::qcollectiongenerator qcollectiongenerator-qt4 qcollectiongenerator qcollectiongenerator4)
_find_qt4_program(QT_DESIGNER_EXECUTABLE Qt4::designer designer-qt4 designer4 designer)
_find_qt4_program(QT_LINGUIST_EXECUTABLE Qt4::linguist linguist-qt4 linguist4 linguist)

--
1.9.1

49 changes: 49 additions & 0 deletions meta-freedesktop/recipes-devtools/cmake/cmake_3.7.2.bb
@@ -0,0 +1,49 @@
require cmake.inc

inherit cmake

DEPENDS += "curl expat zlib libarchive xz ncurses bzip2"

SRC_URI_append_class-nativesdk = " \
file://OEToolchainConfig.cmake \
file://environment.d-cmake.sh"

# Strip ${prefix} from ${docdir}, set result into docdir_stripped
python () {
prefix=d.getVar("prefix", True)
docdir=d.getVar("docdir", True)

if not docdir.startswith(prefix):
bb.fatal('docdir must contain prefix as its prefix')

docdir_stripped = docdir[len(prefix):]
if len(docdir_stripped) > 0 and docdir_stripped[0] == '/':
docdir_stripped = docdir_stripped[1:]

d.setVar("docdir_stripped", docdir_stripped)
}

EXTRA_OECMAKE=" \
-DCMAKE_DOC_DIR=${docdir_stripped}/cmake-${CMAKE_MAJOR_VERSION} \
-DCMAKE_USE_SYSTEM_LIBRARIES=1 \
-DCMAKE_USE_SYSTEM_LIBRARY_JSONCPP=0 \
-DCMAKE_USE_SYSTEM_LIBRARY_LIBUV=0 \
-DKWSYS_CHAR_IS_SIGNED=1 \
-DBUILD_CursesDialog=0 \
-DKWSYS_LFS_WORKS=1 \
"

do_install_append_class-nativesdk() {
mkdir -p ${D}${datadir}/cmake
install -m 644 ${WORKDIR}/OEToolchainConfig.cmake ${D}${datadir}/cmake/

mkdir -p ${D}${SDKPATHNATIVE}/environment-setup.d
install -m 644 ${WORKDIR}/environment.d-cmake.sh ${D}${SDKPATHNATIVE}/environment-setup.d/cmake.sh
}

FILES_${PN}_append_class-nativesdk = " ${SDKPATHNATIVE}"

FILES_${PN} += "${datadir}/cmake-${CMAKE_MAJOR_VERSION}"
FILES_${PN}-doc += "${docdir}/cmake-${CMAKE_MAJOR_VERSION}"

BBCLASSEXTEND = "nativesdk"

0 comments on commit 67adb8e

Please sign in to comment.