xref: /OK3568_Linux_fs/buildroot/package/mraa/0002-CMakeLists.txt-add-BUILDCPP-option.patch (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1From cb88e4dd1fbbb9d24e625dba2768b88ed99da309 Mon Sep 17 00:00:00 2001
2From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
3Date: Sat, 13 Jun 2020 22:51:37 +0200
4Subject: [PATCH] CMakeLists.txt: add BUILDCPP option
5
6C++ is a mandatory dependency since version 1.4.0 and
7https://github.com/eclipse/mraa/commit/122cab1f1e53b7c9c7cd82905b962071f9bad9dc
8
9As a result, build on embedded toolchains that do not support C++ fails
10on:
11
12CMake Error at CMakeLists.txt:2 (project):
13  The CMAKE_CXX_COMPILER:
14
15    /home/naourr/work/instance-1/output-1/per-package/mraa/host/bin/arm-linux-g++
16
17  is not a full path to an existing compiler tool.
18
19Fixes:
20 - http://autobuild.buildroot.org/results/31086422e03611c16ab59c4418e3669b580bc0c0
21
22Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
23[Retrieved from:
24https://github.com/eclipse/mraa/commit/cb88e4dd1fbbb9d24e625dba2768b88ed99da309]
25---
26 CMakeLists.txt                | 69 +++++++++++++++++++----------------
27 src/java/CMakeLists.txt       |  4 +-
28 src/javascript/CMakeLists.txt | 34 +++++++++--------
29 3 files changed, 59 insertions(+), 48 deletions(-)
30
31diff --git a/CMakeLists.txt b/CMakeLists.txt
32index 250d9106e..90c0dc920 100644
33--- a/CMakeLists.txt
34+++ b/CMakeLists.txt
35@@ -1,5 +1,5 @@
36 cmake_minimum_required (VERSION 2.8.11)
37-project (mraa C CXX)
38+project (mraa C)
39
40 FIND_PACKAGE (Threads REQUIRED)
41
42@@ -11,6 +11,8 @@ else ()
43   set (CMAKE_C_STANDARD 99)
44 endif ()
45
46+option (BUILDCPP "Enable C++ (needed by FTDI4222 and tests)" ON)
47+
48 ###############################################################################
49 # Detect supported warning flags
50 # Modified from work By Dan Liew (fpbench - MIT)
51@@ -33,15 +35,18 @@ set (MRAA_C_WARNING_FLAGS
52   -Werror=missing-parameter-type
53 )
54
55-# Warning flags for the C++ compiler only
56-set (MRAA_CXX_WARNING_FLAGS
57-  -Wnon-virtual-dtor
58-  -Woverloaded-virtual
59-  -Wreorder
60-)
61-
62 include (CheckCCompilerFlag)
63-include (CheckCXXCompilerFlag)
64+if (BUILDCPP)
65+  # Warning flags for the C++ compiler only
66+  set (MRAA_CXX_WARNING_FLAGS
67+    -Wnon-virtual-dtor
68+    -Woverloaded-virtual
69+    -Wreorder
70+  )
71+
72+  enable_language (CXX)
73+  include (CheckCXXCompilerFlag)
74+endif ()
75 function (MRAA_SANITIZE_FLAG_NAME OUTPUT_VAR FLAG)
76   string (REPLACE "-" "_" SANITIZED_FLAG_NAME "${FLAG}")
77   string (REPLACE "/" "_" SANITIZED_FLAG_NAME "${SANITIZED_FLAG_NAME}")
78@@ -62,28 +67,30 @@ foreach (flag ${MRAA_BOTH_WARNING_FLAGS} ${MRAA_C_WARNING_FLAGS})
79   endif ()
80 endforeach ()
81
82-# Globally set C++ compiler warning flags that are supported and emit
83-# a warning about unsupported flags
84-foreach (flag ${MRAA_BOTH_WARNING_FLAGS} ${MRAA_CXX_WARNING_FLAGS})
85-  MRAA_SANITIZE_FLAG_NAME (SANITIZED_FLAG_NAME "${flag}")
86-  CHECK_CXX_COMPILER_FLAG ("${flag}" HAS_CXX_${SANITIZED_FLAG_NAME})
87-  if (HAS_CXX_${SANITIZED_FLAG_NAME})
88-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
89-  else ()
90-    message (WARNING "C++ compiler does not support flag \"${flag}\"")
91-  endif ()
92-endforeach ()
93-
94-# This function adds the c++11 flag to a c++ target (if supported)
95-function(use_cxx_11 targetname)
96-  include(CheckCXXCompilerFlag)
97-  CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
98-  if (COMPILER_SUPPORTS_CXX11)
99-    set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "-std=c++11")
100-  else()
101-    message(FATAL_ERROR "Target '${targetname}' requires c++11 which is not supported by this compiler")
102-  endif()
103-endfunction()
104+if (BUILDCPP)
105+  # Globally set C++ compiler warning flags that are supported and emit
106+  # a warning about unsupported flags
107+  foreach (flag ${MRAA_BOTH_WARNING_FLAGS} ${MRAA_CXX_WARNING_FLAGS})
108+    MRAA_SANITIZE_FLAG_NAME (SANITIZED_FLAG_NAME "${flag}")
109+    CHECK_CXX_COMPILER_FLAG ("${flag}" HAS_CXX_${SANITIZED_FLAG_NAME})
110+    if (HAS_CXX_${SANITIZED_FLAG_NAME})
111+      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}")
112+    else ()
113+      message (WARNING "C++ compiler does not support flag \"${flag}\"")
114+    endif ()
115+  endforeach ()
116+
117+  # This function adds the c++11 flag to a c++ target (if supported)
118+  function(use_cxx_11 targetname)
119+    include(CheckCXXCompilerFlag)
120+    CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
121+    if (COMPILER_SUPPORTS_CXX11)
122+      set_target_properties(${targetname} PROPERTIES COMPILE_FLAGS "-std=c++11")
123+    else()
124+      message(FATAL_ERROR "Target '${targetname}' requires c++11 which is not supported by this compiler")
125+    endif()
126+  endfunction()
127+endif()
128
129 # Set CMAKE_INSTALL_LIBDIR if not defined
130 include(GNUInstallDirs)
131diff --git a/src/java/CMakeLists.txt b/src/java/CMakeLists.txt
132index 231c755fa..cfa72a0df 100644
133--- a/src/java/CMakeLists.txt
134+++ b/src/java/CMakeLists.txt
135@@ -16,7 +16,9 @@ include_directories (
136 set_source_files_properties (mraajava.i PROPERTIES SWIG_FLAGS ";-package;mraa;-I${CMAKE_BINARY_DIR}/src")
137 set_source_files_properties (mraajava.i PROPERTIES CPLUSPLUS ON)
138
139-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -DJAVACALLBACK")
140+if (BUILDCPP)
141+  set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -DJAVACALLBACK")
142+endif()
143 set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DJAVACALLBACK")
144
145 if (NOT DEFINED ENV{JAVA_HOME_NATIVE})
146diff --git a/src/javascript/CMakeLists.txt b/src/javascript/CMakeLists.txt
147index 25fd36275..99a96b49d 100644
148--- a/src/javascript/CMakeLists.txt
149+++ b/src/javascript/CMakeLists.txt
150@@ -36,25 +36,27 @@ set_target_properties (mraajs PROPERTIES
151 )
152
153 message (STATUS "INFO - swig Version ${SWIG_VERSION}")
154-message (STATUS "INFO - CXX compiler Version ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
155+if (BUILDCPP)
156+  message (STATUS "INFO - CXX compiler Version ${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}")
157
158-if (${V8_VERSION_MAJOR} GREATER 3)
159-  message (STATUS "INFO - Using V8 version > 3 so requiring C++11 compiler")
160-  # Node 0.12.x V8 engine major version is '3'.
161-  # Node 2.1.0  V8 engine major version is '4'.
162-  set_property (TARGET mraajs PROPERTY CXX_STANDARD 11)
163-  set_property (TARGET mraajs PROPERTY CXX_STANDARD_REQUIRED ON)
164-  if (CMAKE_VERSION VERSION_LESS "3.1")
165-    message (WARNING "Need to use CMAKE version 3.1+, but it is ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}, using a workaround.")
166-    if (CMAKE_COMPILER_IS_GNUCXX)
167-      if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7")
168-        message (FATAL_ERROR "GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard.")
169+  if (${V8_VERSION_MAJOR} GREATER 3)
170+    message (STATUS "INFO - Using V8 version > 3 so requiring C++11 compiler")
171+    # Node 0.12.x V8 engine major version is '3'.
172+    # Node 2.1.0  V8 engine major version is '4'.
173+    set_property (TARGET mraajs PROPERTY CXX_STANDARD 11)
174+    set_property (TARGET mraajs PROPERTY CXX_STANDARD_REQUIRED ON)
175+    if (CMAKE_VERSION VERSION_LESS "3.1")
176+      message (WARNING "Need to use CMAKE version 3.1+, but it is ${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}.${CMAKE_PATCH_VERSION}, using a workaround.")
177+      if (CMAKE_COMPILER_IS_GNUCXX)
178+        if (CMAKE_CXX_COMPILER_VERSION VERSION_LESS "4.7")
179+          message (FATAL_ERROR "GNU gcc compiler is also too old (need 4.7+, but ${CMAKE_CXX_COMPILER_VERSION}) and does not support C++11 standard.")
180+        endif ()
181+        set (MRAA_CXX11_WORKAROUND_OPTION "-std=gnu++11")
182+      else ()
183+        set (MRAA_CXX11_WORKAROUND_OPTION "-std=c++11")
184       endif ()
185-      set (MRAA_CXX11_WORKAROUND_OPTION "-std=gnu++11")
186-    else ()
187-      set (MRAA_CXX11_WORKAROUND_OPTION "-std=c++11")
188+      set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MRAA_CXX11_WORKAROUND_OPTION} ")
189     endif ()
190-    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${MRAA_CXX11_WORKAROUND_OPTION} ")
191   endif ()
192 endif ()
193
194