Skip to contentSkip to conversation

cmocka: new package

PATCH Superseded Nimai Mahajan 2 participants 3 messages Jul 26, 2015 – Jul 28, 2015

lore
Share & tools
lore
#0 lore raw

PATCH v2 1/1 cmocka: new package

From: Nimai Mahajan <[email protected]>

---
Changes v1->v2: Removed host-cmake dependency (Baruch)

 package/Config.in          |  1 +
 package/cmocka/Config.in   | 11 +++++++++++
 package/cmocka/cmocka.hash |  2 ++
 package/cmocka/cmocka.mk   | 17 +++++++++++++++++
 4 files changed, 31 insertions(+)
 create mode 100644 package/cmocka/Config.in
 create mode 100644 package/cmocka/cmocka.hash
 create mode 100644 package/cmocka/cmocka.mk
package/Config.in +1 -0
index f029e1d..e0dd14e 100644
@@ -1037,6 +1037,7 @@ menu "Other"
 	source "package/boost/Config.in"
 	source "package/clapack/Config.in"
 	source "package/classpath/Config.in"
+	source "package/cmocka/Config.in"
 	source "package/cppcms/Config.in"
 	source "package/ding-libs/Config.in"
 	source "package/eigen/Config.in"
package/cmocka/Config.in new file +11 -0
new file mode 100644
index 0000000..37064bf
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_CMOCKA
+	bool "cmocka"
+	help
+	  cmocka is an elegant unit testing framework for C with support
+	  for mock objects. It only requires the standard C library,
+	  works on a range of computing platforms (including embedded)
+	  and with different compilers. It is a fork of Google's very
+	  popular cmockery unit testing framework to fix bugs and support 
+	  it in the future.
+
+	  https://cmocka.org/
package/cmocka/cmocka.hash new file +2 -0
new file mode 100644
index 0000000..96b81cb
@@ -0,0 +1,2 @@
+# Locally computed:
+sha256 b36050d7a1224296803d216cba1a9d4c58c31bf308b2d6d6649d61aa5a36753b cmocka-1.0.1.tar.xz
package/cmocka/cmocka.mk new file +17 -0
new file mode 100644
index 0000000..812df76
@@ -0,0 +1,17 @@
+################################################################################
+#
+# cmocka
+#
+################################################################################
+
+CMOCKA_VERSION = 1.0.1
+CMOCKA_SOURCE = cmocka-$(CMOCKA_VERSION).tar.xz
+CMOCKA_SITE = https://cmocka.org/files/1.0/
+CMOCKA_LICENSE = Apache-2.0
+CMOCKA_LICENSE_FILES = COPYING
+CMOCKA_INSTALL_STAGING = YES
+
+# cmocka only supports out of source builds
+CMOCKA_SUPPORTS_IN_SOURCE_BUILD = NO
+
+$(eval $(cmake-package))
Signature · 1 line
1.9.1
#1 lore raw

PATCH v2 1/1 cmocka: new package

Hi Nimai,

Le 26/07/2015 06:59, Nimai Mahajan a ?crit :

Quoted 33 lines

From: Nimai Mahajan <[email protected]>

---
Changes v1->v2: Removed host-cmake dependency (Baruch)

 package/Config.in          |  1 +
 package/cmocka/Config.in   | 11 +++++++++++
 package/cmocka/cmocka.hash |  2 ++
 package/cmocka/cmocka.mk   | 17 +++++++++++++++++
 4 files changed, 31 insertions(+)
 create mode 100644 package/cmocka/Config.in
 create mode 100644 package/cmocka/cmocka.hash
 create mode 100644 package/cmocka/cmocka.mk
package/Config.in +1 -0
index f029e1d..e0dd14e 100644
@@ -1037,6 +1037,7 @@ menu "Other"
 	source "package/boost/Config.in"
 	source "package/clapack/Config.in"
 	source "package/classpath/Config.in"
+	source "package/cmocka/Config.in"
 	source "package/cppcms/Config.in"
 	source "package/ding-libs/Config.in"
 	source "package/eigen/Config.in"
package/cmocka/Config.in new file +0 -0
new file mode 100644
index 0000000..37064bf

package/cmocka/Config.in line 2

Quoted 2 lines
package/cmocka/Config.in new file +2 -0
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_CMOCKA
+	bool "cmocka"

cmocka only build a shared library libcmocka.so, so this package must not be selected on static only build (it's hard coded in src/CMakeLists.txt):
depends on !BR2_STATIC_LIBS

package/cmocka/Config.in line 11

Quoted 9 lines
package/cmocka/Config.in new file +9 -0
+	help
+	  cmocka is an elegant unit testing framework for C with support
+	  for mock objects. It only requires the standard C library,
+	  works on a range of computing platforms (including embedded)
+	  and with different compilers. It is a fork of Google's very
+	  popular cmockery unit testing framework to fix bugs and support 
+	  it in the future.
+
+	  https://cmocka.org/

And add a comment here:
comment "cmocka needs a toolchain w/ dynamic library"
depends on BR2_STATIC_LIBS

Also I tried to build with a uClibc-ng toolchain without stack protection support (libssp) and cmocka fail to build. I haven't tested with a musl toolchain.

CMake Error at /home/naourr/git/buildroot/test/uclibc-ng/host/usr/share/cmake-3.1/Modules/TestBigEndian.cmake:51 (message):
no suitable type found
Call Stack (most recent call first):
ConfigureChecks.cmake:142 (test_big_endian)
CMakeLists.txt:43 (include)

-- Configuring incomplete, errors occurred!
See also "/home/naourr/git/buildroot/test/uclibc-ng/build/cmocka-1.0.1/buildroot-build/CMakeFiles/CMakeOutput.log". See also "/home/naourr/git/buildroot/test/uclibc-ng/build/cmocka-1.0.1/buildroot-build/CMakeFiles/CMakeError.log".

Here the content of CMakeError.log (see -fstack-protector):

/home/naourr/git/buildroot/test/uclibc-ng/host/usr/bin/i686-buildroot-linux-uclibc-gcc
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os
-std=gnu99 -pedantic -pedantic-errors -Wall -Wextra -Wshadow
-Wmissing-prototypes -Wdeclaration-after-statement -Wunused -Wfloat-equal
-Wpointer-arith -Wwrite-strings -Wformat-security -Wmissing-format-attribute
-Wundef -fPIC -fstack-protector -D_GNU_SOURCE CMakeFiles/cmTryCompileExec2344790343.dir/CMAKE_SIZEOF_UNSIGNED_LONG.c.o -o
cmTryCompileExec2344790343 -rdynamic -lrt /home/naourr/git/buildroot/test/uclibc-ng/host/usr/lib/gcc/i686-buildroot-linux-uclibc/4.9.3/../../../../i686-buildroot-linux-uclibc/bin/ld:
ne peut trouver -lssp_nonshared /home/naourr/git/buildroot/test/uclibc-ng/host/usr/lib/gcc/i686-buildroot-linux-uclibc/4.9.3/../../../../i686-buildroot-linux-uclibc/bin/ld:
ne peut trouver -lssp
collect2: erreur: ld a retourn? 1 code d'?tat d'ex?cution

-fstack-protector is added by cmake/Modules/DefineCompilerFlags.cmake:

        check_c_compiler_flag_ssp("-fstack-protector" WITH_STACK_PROTECTOR)
        if (WITH_STACK_PROTECTOR)
            set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector")
        endif (WITH_STACK_PROTECTOR)

For some reason, -fstack-protector is still added even when the ssp support is disabled in the toolchain. It build fine when -fstack-protector is removed.

Thoughts ?

Best regards,
Romain Naour

Quoted 32 lines
package/cmocka/cmocka.hash new file +2 -0
new file mode 100644
index 0000000..96b81cb
@@ -0,0 +1,2 @@
+# Locally computed:
+sha256 b36050d7a1224296803d216cba1a9d4c58c31bf308b2d6d6649d61aa5a36753b cmocka-1.0.1.tar.xz
package/cmocka/cmocka.mk new file +17 -0
new file mode 100644
index 0000000..812df76
@@ -0,0 +1,17 @@
+################################################################################
+#
+# cmocka
+#
+################################################################################
+
+CMOCKA_VERSION = 1.0.1
+CMOCKA_SOURCE = cmocka-$(CMOCKA_VERSION).tar.xz
+CMOCKA_SITE = https://cmocka.org/files/1.0/
+CMOCKA_LICENSE = Apache-2.0
+CMOCKA_LICENSE_FILES = COPYING
+CMOCKA_INSTALL_STAGING = YES
+
+# cmocka only supports out of source builds
+CMOCKA_SUPPORTS_IN_SOURCE_BUILD = NO
+
+$(eval $(cmake-package))
#2 lore raw

PATCH v2 1/1 cmocka: new package

Quoted 32 lines · Romain Naour

Hi Nimai,

Le 26/07/2015 06:59, Nimai Mahajan a ?crit :

Quoted 29 lines

From: Nimai Mahajan <[email protected]>

---
Changes v1->v2: Removed host-cmake dependency (Baruch)

package/Config.in | 1 +
package/cmocka/Config.in | 11 +++++++++++
package/cmocka/cmocka.hash | 2 ++
package/cmocka/cmocka.mk | 17 +++++++++++++++++

4 files changed, 31 insertions(+)

create mode 100644 package/cmocka/Config.in
create mode 100644 package/cmocka/cmocka.hash
create mode 100644 package/cmocka/cmocka.mk

package/Config.in +0 -0
index f029e1d..e0dd14e 100644
@@ -1037,6 +1037,7 @@ menu "Other"

source "package/boost/Config.in"
source "package/clapack/Config.in"
source "package/classpath/Config.in"
+ source "package/cmocka/Config.in"
source "package/cppcms/Config.in"
source "package/ding-libs/Config.in"
source "package/eigen/Config.in"

package/cmocka/Config.in new file +0 -0
new file mode 100644
Quoted 8 lines

package/cmocka/Config.in line 2

Quoted 6 lines

index 0000000..37064bf

package/cmocka/Config.in new file +2 -0
@@ -0,0 +1,11 @@
+config BR2_PACKAGE_CMOCKA
+ bool "cmocka"

cmocka only build a shared library libcmocka.so, so this package must not

be

Quoted 13 lines

selected on static only build (it's hard coded in src/CMakeLists.txt):
depends on !BR2_STATIC_LIBS

package/cmocka/Config.in line 11

Quoted 9 lines
package/cmocka/Config.in new file +9 -0
+ help
+ cmocka is an elegant unit testing framework for C with support
+ for mock objects. It only requires the standard C library,
+ works on a range of computing platforms (including embedded)
+ and with different compilers. It is a fork of Google's very
+ popular cmockery unit testing framework to fix bugs and support
+ it in the future.
+
+ https://cmocka.org/
Quoted 6 lines

And add a comment here:
comment "cmocka needs a toolchain w/ dynamic library" depends on BR2_STATIC_LIBS

Also I tried to build with a uClibc-ng toolchain without stack protection support (libssp) and cmocka fail to build. I haven't tested with a musl

toolchain.

Quoted 3 lines

CMake Error at

/home/naourr/git/buildroot/test/uclibc-ng/host/usr/share/cmake-3.1/Modules/TestBigEndian.cmake:51

Quoted 10 lines

(message):
no suitable type found
Call Stack (most recent call first):
ConfigureChecks.cmake:142 (test_big_endian)
CMakeLists.txt:43 (include)

-- Configuring incomplete, errors occurred!
See also

"/home/naourr/git/buildroot/test/uclibc-ng/build/cmocka-1.0.1/buildroot-build/CMakeFiles/CMakeOutput.log".

Quoted 2 lines

See also

"/home/naourr/git/buildroot/test/uclibc-ng/build/cmocka-1.0.1/buildroot-build/CMakeFiles/CMakeError.log".

Quoted 4 lines

Here the content of CMakeError.log (see -fstack-protector):

/home/naourr/git/buildroot/test/uclibc-ng/host/usr/bin/i686-buildroot-linux-uclibc-gcc

Review

Quoted 4 lines
(quoted diff) +0 -4
-D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os
-std=gnu99 -pedantic -pedantic-errors -Wall -Wextra -Wshadow
-Wmissing-prototypes -Wdeclaration-after-statement -Wunused -Wfloat-equal
-Wpointer-arith -Wwrite-strings -Wformat-security

-Wmissing-format-attribute

Quoted 2 lines

-Wundef -fPIC -fstack-protector -D_GNU_SOURCE CMakeFiles/cmTryCompileExec2344790343.dir/CMAKE_SIZEOF_UNSIGNED_LONG.c.o

-o

Quoted 2 lines

cmTryCompileExec2344790343 -rdynamic -lrt

/home/naourr/git/buildroot/test/uclibc-ng/host/usr/lib/gcc/i686-buildroot-linux-uclibc/4.9.3/../../../../i686-buildroot-linux-uclibc/bin/ld:

Quoted 2 lines

ne peut trouver -lssp_nonshared

/home/naourr/git/buildroot/test/uclibc-ng/host/usr/lib/gcc/i686-buildroot-linux-uclibc/4.9.3/../../../../i686-buildroot-linux-uclibc/bin/ld:

Quoted 11 lines

ne peut trouver -lssp
collect2: erreur: ld a retourn? 1 code d'?tat d'ex?cution

-fstack-protector is added by cmake/Modules/DefineCompilerFlags.cmake:

check_c_compiler_flag_ssp("-fstack-protector" WITH_STACK_PROTECTOR) if (WITH_STACK_PROTECTOR)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fstack-protector") endif (WITH_STACK_PROTECTOR)

For some reason, -fstack-protector is still added even when the ssp

support is

Quoted 1 line

disabled in the toolchain. It build fine when -fstack-protector is

removed.

Quoted 5 lines

Thoughts ?

Best regards,
Romain Naour

Thanks for testing Romain ... my fault, I only tested this with the internal glibc toolchain (on ARM and x86) which I have readily available and thought it was okay. I will play around with your findings and test out what works best for uClibc. I am still learning the intricacies of Buildroot and Cmake (and Git for that matter) but will see what I can find, otherwise I request the help of the gurus here :-) I researched many other test frameworks and found this one to be the most feature rich and flexible for C so worth having in Buildroot I'd say.

Quoted 8 lines

package/cmocka/cmocka.hash line 2

Quoted 8 lines
package/cmocka/cmocka.hash new file +2 -0
new file mode 100644
index 0000000..96b81cb
@@ -0,0 +1,2 @@
+# Locally computed:
+sha256 b36050d7a1224296803d216cba1a9d4c58c31bf308b2d6d6649d61aa5a36753b

cmocka-1.0.1.tar.xz

Quoted 7 lines

package/cmocka/cmocka.mk

Quoted 7 lines
package/cmocka/cmocka.mk new file +0 -0
new file mode 100644
index 0000000..812df76
@@ -0,0 +1,17 @@

+################################################################################

Quoted 4 lines

package/cmocka/cmocka.mk line 4

Quoted 4 lines
package/cmocka/cmocka.mk new file +3 -0
+#
+# cmocka
+#

+################################################################################

Quoted 5 lines
Quoted 5 lines
package/cmocka/cmocka.mk new file +5 -0
+
+CMOCKA_VERSION = 1.0.1
+CMOCKA_SOURCE = cmocka-$(CMOCKA_VERSION).tar.xz
+CMOCKA_SITE = https://cmocka.org/files/1.0/
+CMOCKA_LICENSE = Apache-2.0
Quoted 9 lines

package/cmocka/cmocka.mk line 17

Quoted 8 lines
package/cmocka/cmocka.mk new file +7 -0
+CMOCKA_LICENSE_FILES = COPYING
+CMOCKA_INSTALL_STAGING = YES
+
+# cmocka only supports out of source builds
+CMOCKA_SUPPORTS_IN_SOURCE_BUILD = NO
+
+$(eval $(cmake-package))

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20150727/3deaca83/attachment.html>