[Buildroot] [PATCH v2] cmake: make ctest a target package too

Samuel Martin s.martin49 at gmail.com
Sat Nov 22 08:27:28 UTC 2014


Hi Davide, all,

On Fri, Nov 21, 2014 at 11:49 PM, Davide Viti <zinosat at tiscali.it> wrote:
> Useful for packages shipped with a testsuite which makes use of ctest
>
> Signed-off-by: Davide Viti <zinosat at tiscali.it>
> ---
>      - rebase
>      - use CMAKE_CONF_OPTS in place of bootstrap (Samuel Martin)
>      - use system libraries to speed up compilation [1] (Samuel Martin)
>      - install only ctest on the target (Samuel Martin)
>      - system curl and expat rely on disabled libxmlrpc (Samuel Martin)
>      - usa CMAKE_POST_INSTALL_TARGET_HOOKS
>      - specify host tools path during install [2]
>
> [1] Using system libraries speeds up compilation of around 20%
> [2] the install rule has to be overridden because of http://public.kitware.com/Bug/view.php?id=15248
>     http://www.cmake.org/gitweb?p=stage/cmake.git;a=patch;h=15f55cca does not work for me on BR
>
>  package/Config.in       |  1 +
>  package/cmake/Config.in | 10 ++++++++++
>  package/cmake/cmake.mk  | 21 +++++++++++++++++++++
>  3 files changed, 32 insertions(+)
>  create mode 100644 package/cmake/Config.in
>
> diff --git a/package/Config.in b/package/Config.in
> index 28cf703..bbd454d 100644
> --- a/package/Config.in
> +++ b/package/Config.in
> @@ -101,6 +101,7 @@ menu "Development tools"
>         source "package/bison/Config.in"
>         source "package/bsdiff/Config.in"
>         source "package/bustle/Config.in"
> +       source "package/cmake/Config.in"
>         source "package/cppunit/Config.in"
>         source "package/cvs/Config.in"
>  if BR2_PACKAGE_BUSYBOX_SHOW_OTHERS
> diff --git a/package/cmake/Config.in b/package/cmake/Config.in
> new file mode 100644
> index 0000000..120efc8
> --- /dev/null
> +++ b/package/cmake/Config.in
> @@ -0,0 +1,10 @@
> +config BR2_PACKAGE_CMAKE
> +       bool "ctest"
> +       help
> +         CTest is a testing tool distributed as a part of CMake. It
> +         can be used to automate updating (using CVS for example),
> +         configuring, building, testing, performing memory checking,
> +         performing coverage, and submitting results to a CDash or
> +         Dart dashboard system.
> +
> +         http://www.cmake.org/
> diff --git a/package/cmake/cmake.mk b/package/cmake/cmake.mk
> index e09fddf..d7ee974 100644
> --- a/package/cmake/cmake.mk
> +++ b/package/cmake/cmake.mk
> @@ -11,6 +11,15 @@ CMAKE_LICENSE = BSD-3c
>  CMAKE_LICENSE_FILES = Copyright.txt
>
>  HOST_CMAKE_DEPENDENCIES = host-pkgconf
> +CMAKE_DEPENDENCIES = zlib libcurl libarchive expat bzip2
> +
> +CMAKE_CONF_OPTS = \
> +               -DKWSYS_LFS_WORKS=$(if $(BR2_LARGEFILE),TRUE,FALSE) \
> +               -DKWSYS_CHAR_IS_SIGNED=TRUE \
> +               -DCMAKE_USE_SYSTEM_LIBRARIES=1 \
> +               -DCTEST_USE_XMLRPC=OFF \
> +               -DBUILD_CursesDialog=OFF \
> +               -DCMAKE_INSTALL_PREFIX="$(TARGET_DIR)/usr"

Do you need to overload the CMAKE_INSTALL_PREFIX? (suggestion below...)

>
>  define HOST_CMAKE_CONFIGURE_CMDS
>         (cd $(@D); \
> @@ -33,4 +42,16 @@ define HOST_CMAKE_INSTALL_CMDS
>         $(HOST_MAKE_ENV) $(MAKE) -C $(@D) install
>  endef
>
> +define CMAKE_REMOVE_EXTRA_DATA
> +       rm $(TARGET_DIR)/usr/bin/{cmake,cpack}
> +       rm -fr $(TARGET_DIR)/usr/share/cmake-3.0
> +endef
> +
> +CMAKE_POST_INSTALL_TARGET_HOOKS += CMAKE_REMOVE_EXTRA_DATA
> +
> +define CMAKE_INSTALL_TARGET_CMDS
> +       (cd $(@D); $(HOST_MAKE_ENV) cmake -P cmake_install.cmake)

Does this work instead?
--
(cd $(@D); $(HOST_MAKE_ENV) DESTDIR=$(TARGET_DIR) cmake -P cmake_install.cmake)
--

> +endef
> +
> +$(eval $(cmake-package))
>  $(eval $(host-generic-package))
> --
> 2.1.3
>
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot

Otherwise, it looks good! :-)

-- 
Samuel



More information about the buildroot mailing list