From: "Ulrich Ölmann" <u.oelmann@pengutronix.de>
To: PTXdist Development Mailing List <ptxdist@pengutronix.de>
Cc: "Ulrich Ölmann" <u.oelmann@pengutronix.de>
Subject: [ptxdist] [PATCH 4/5] templates: add src-meson-prog template
Date: Wed, 5 Jun 2019 01:16:54 +0200 [thread overview]
Message-ID: <20190604231655.13949-5-u.oelmann@pengutronix.de> (raw)
In-Reply-To: <20190604231655.13949-1-u.oelmann@pengutronix.de>
Signed-off-by: Ulrich Ölmann <u.oelmann@pengutronix.de>
---
doc/dev_manual.rst | 36 +++++++--
rules/templates/src-meson-prog/@name@.c | 12 +++
rules/templates/src-meson-prog/COPYING | 12 +++
rules/templates/src-meson-prog/config.h.in | 1 +
rules/templates/src-meson-prog/meson.build | 13 +++
rules/templates/src-meson-prog/wizard.sh | 17 ++++
rules/templates/template-src-meson-prog-in | 8 ++
rules/templates/template-src-meson-prog-make | 83 ++++++++++++++++++++
scripts/lib/ptxd_lib_template.sh | 7 ++
9 files changed, 182 insertions(+), 7 deletions(-)
create mode 100644 rules/templates/src-meson-prog/@name@.c
create mode 100644 rules/templates/src-meson-prog/COPYING
create mode 100644 rules/templates/src-meson-prog/config.h.in
create mode 100644 rules/templates/src-meson-prog/meson.build
create mode 100644 rules/templates/src-meson-prog/wizard.sh
create mode 100644 rules/templates/template-src-meson-prog-in
create mode 100644 rules/templates/template-src-meson-prog-make
diff --git a/doc/dev_manual.rst b/doc/dev_manual.rst
index e17aa9b1bb58..dfadcb241891 100644
--- a/doc/dev_manual.rst
+++ b/doc/dev_manual.rst
@@ -206,6 +206,14 @@ handle:
and their settings. Creating such a package will also create a simple
template project to be used as a starting point for development.
+- **src-meson-prog**: This kind of package is built for the target.
+ It’s intended for developments based on the *meson* buildsystem.
+ Various projects are using *meson* today and can be built
+ with this package type. PTXdist will prepare it to compile sources in
+ accordance to the target libraries and their settings. Creating such
+ a package will also create a simple template project to be used as a
+ starting point for development.
+
- **font**: This package is a helper to add X font files to the root
filesystem. This package does not create an additional IPKG, instead
it adds the font to the existing font IPKG. This includes the
@@ -1156,12 +1164,12 @@ So, in the rule file only the two variables ``FOO_MAKE_ENV`` and
package’s buildsystem. If the package cannot be built in parallel, we
can also add the ``FOO_MAKE_PAR := NO``. ``YES`` is the default.
-Managing CMake / QMake Packages
-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Managing CMake/QMake/Meson Packages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
-Building packages that use ``cmake`` or ``qmake`` is much like building
-packages with an autotools based buildsystem. We need to specify the
-configuration tool:
+Building packages that use ``cmake``, ``qmake`` or ``meson`` is much like
+building packages with an autotools based buildsystem. We need to specify
+the configuration tool:
.. code-block:: make
@@ -1173,6 +1181,12 @@ or
FOO_CONF_TOOL := qmake
+or respectively
+
+.. code-block:: make
+
+ FOO_CONF_TOOL := meson
+
And provide the correct configuration options. The syntax is different so
PTXdist provides additional macros to simplify configurable features.
For ``cmake`` the configuration options typically look like this:
@@ -1192,8 +1206,16 @@ For ``qmake`` the configuration options typically look like this:
$(CROSS_QMAKE_OPT) \
PREFIX=/usr
-Please note that currently only host and target ``cmake`` packages and only
-target ``qmake`` packages are supported.
+And for ``meson`` the configuration options typically look like this:
+
+.. code-block:: make
+
+ FOO_CONF_OPT := \
+ $(CROSS_MESON_USR) \
+ -Dbar=$(call ptx/truefalse,PTXCONF_FOO_BAR)
+
+Please note that currently only host and target ``cmake``\/``meson`` packages
+and only target ``qmake`` packages are supported.
Managing Python Packages
^^^^^^^^^^^^^^^^^^^^^^^^
diff --git a/rules/templates/src-meson-prog/@name@.c b/rules/templates/src-meson-prog/@name@.c
new file mode 100644
index 000000000000..061debf310bc
--- /dev/null
+++ b/rules/templates/src-meson-prog/@name@.c
@@ -0,0 +1,12 @@
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "config.h"
+
+int main(int argc, char *argv[])
+{
+ printf("Hello World, I'm @name@!\n");
+ printf("My license is " LICENSE_STR ".\n");
+
+ exit(EXIT_SUCCESS);
+}
diff --git a/rules/templates/src-meson-prog/COPYING b/rules/templates/src-meson-prog/COPYING
new file mode 100644
index 000000000000..1844a019b31f
--- /dev/null
+++ b/rules/templates/src-meson-prog/COPYING
@@ -0,0 +1,12 @@
+Copyright (C) 2006 by Rob Landley <rob@landley.net>
+
+Permission to use, copy, modify, and/or distribute this software for any purpose
+with or without fee is hereby granted.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
+REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
+INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
+OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF
+THIS SOFTWARE.
diff --git a/rules/templates/src-meson-prog/config.h.in b/rules/templates/src-meson-prog/config.h.in
new file mode 100644
index 000000000000..b0ee7ec65121
--- /dev/null
+++ b/rules/templates/src-meson-prog/config.h.in
@@ -0,0 +1 @@
+#define LICENSE_STR "@license@"
diff --git a/rules/templates/src-meson-prog/meson.build b/rules/templates/src-meson-prog/meson.build
new file mode 100644
index 000000000000..946e1850cfd5
--- /dev/null
+++ b/rules/templates/src-meson-prog/meson.build
@@ -0,0 +1,13 @@
+project('@name@', 'c',
+ license : '0BSD',
+ default_options : ['warning_level=3'])
+
+conf_data = configuration_data()
+conf_data.set('license', meson.project_license()[0])
+configure_file(input : 'config.h.in',
+ output : 'config.h',
+ configuration : conf_data)
+
+executable('@name@',
+ '@name@.c',
+ install : true)
diff --git a/rules/templates/src-meson-prog/wizard.sh b/rules/templates/src-meson-prog/wizard.sh
new file mode 100644
index 000000000000..305530b654d4
--- /dev/null
+++ b/rules/templates/src-meson-prog/wizard.sh
@@ -0,0 +1,17 @@
+#!/bin/bash
+
+NAME="${1}"
+if [ -z "$NAME" ]; then
+ echo -n "project name: "
+ read NAME
+fi
+
+mv "@name@.c" "${NAME}.c"
+
+for i in \
+ meson.build \
+ ${NAME}.c \
+; do
+ sed -i -e "s/\@name\@/${NAME}/g" $i
+done
+
diff --git a/rules/templates/template-src-meson-prog-in b/rules/templates/template-src-meson-prog-in
new file mode 100644
index 000000000000..34dc24f9fc56
--- /dev/null
+++ b/rules/templates/template-src-meson-prog-in
@@ -0,0 +1,8 @@
+## SECTION=@section@
+
+config @PACKAGE@
+ bool
+ prompt "@package@"
+ select HOST_MESON
+ help
+ FIXME
diff --git a/rules/templates/template-src-meson-prog-make b/rules/templates/template-src-meson-prog-make
new file mode 100644
index 000000000000..394fb2516e6f
--- /dev/null
+++ b/rules/templates/template-src-meson-prog-make
@@ -0,0 +1,83 @@
+# -*-makefile-*-
+#
+# Copyright (C) @YEAR@ by @AUTHOR@
+#
+# See CREDITS for details about who has contributed to this project.
+#
+# For further information about the PTXdist project and license conditions
+# see the README file.
+#
+
+#
+# We provide this package
+#
+PACKAGES-$(PTXCONF_@PACKAGE@) += @package@
+
+#
+# Paths and names
+#
+@PACKAGE@_VERSION := @VERSION@
+@PACKAGE@ := @package@-$(@PACKAGE@_VERSION)
+@PACKAGE@_URL := file://local_src/@package@
+@PACKAGE@_DIR := $(BUILDDIR)/$(@PACKAGE@)
+@PACKAGE@_LICENSE := 0BSD
+@PACKAGE@_LICENSE_FILES := file://COPYING;md5=240269ccb62c2c66a81d8fdd094dd69f
+
+# ----------------------------------------------------------------------------
+# Get
+# ----------------------------------------------------------------------------
+
+#$(@PACKAGE@_SOURCE):
+# @$(call targetinfo)
+# @$(call get, @PACKAGE@)
+
+# ----------------------------------------------------------------------------
+# Prepare
+# ----------------------------------------------------------------------------
+
+#@PACKAGE@_CONF_ENV := $(CROSS_ENV)
+
+#
+# meson
+#
+@PACKAGE@_CONF_TOOL := meson
+#@PACKAGE@_CONF_OPT := $(CROSS_MESON_USR)
+
+# ----------------------------------------------------------------------------
+# Target-Install
+# ----------------------------------------------------------------------------
+
+$(STATEDIR)/@package@.targetinstall:
+ @$(call targetinfo)
+
+ @$(call install_init, @package@)
+ @$(call install_fixup, @package@, PRIORITY, optional)
+ @$(call install_fixup, @package@, SECTION, base)
+ @$(call install_fixup, @package@, AUTHOR, "@AUTHOR@")
+ @$(call install_fixup, @package@, DESCRIPTION, missing)
+
+# #
+# # example code:; copy all binaries
+# #
+
+ @for i in $(shell cd $(@PACKAGE@_PKGDIR) && find bin sbin usr/bin usr/sbin -type f); do \
+ $(call install_copy, @package@, 0, 0, 0755, -, /$$i); \
+ done
+
+# #
+# # FIXME: add all necessary things here
+# #
+
+ @$(call install_finish, @package@)
+
+ @$(call touch)
+
+# ----------------------------------------------------------------------------
+# Clean
+# ----------------------------------------------------------------------------
+
+#$(STATEDIR)/@package@.clean:
+# @$(call targetinfo)
+# @$(call clean_pkg, @PACKAGE@)
+
+# vim: syntax=make
diff --git a/scripts/lib/ptxd_lib_template.sh b/scripts/lib/ptxd_lib_template.sh
index fe18aa6d5577..8ac3312dc775 100644
--- a/scripts/lib/ptxd_lib_template.sh
+++ b/scripts/lib/ptxd_lib_template.sh
@@ -334,6 +334,13 @@ export -f ptxd_template_new_src_qmake_prog
ptxd_template_help_list[${#ptxd_template_help_list[@]}]="src-qmake-prog"
ptxd_template_help_list[${#ptxd_template_help_list[@]}]="create qmake binary"
+ptxd_template_new_src_meson_prog() {
+ ptxd_template_src_base
+}
+export -f ptxd_template_new_src_meson_prog
+ptxd_template_help_list[${#ptxd_template_help_list[@]}]="src-meson-prog"
+ptxd_template_help_list[${#ptxd_template_help_list[@]}]="create meson binary"
+
ptxd_template_new_src_linux_driver() {
ptxd_template_src_base
}
--
2.20.1
_______________________________________________
ptxdist mailing list
ptxdist@pengutronix.de
next prev parent reply other threads:[~2019-06-04 23:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-06-04 23:16 [ptxdist] [PATCH 0/5] Clean up templates and " Ulrich Ölmann
2019-06-04 23:16 ` [ptxdist] [PATCH 1/5] templates: wizard.sh: remove unused variable Ulrich Ölmann
2019-06-04 23:16 ` [ptxdist] [PATCH 2/5] templates: wizard.sh: use neat parameter expansion and prevent word splitting Ulrich Ölmann
2019-06-04 23:16 ` [ptxdist] [PATCH 3/5] templates: wizard.sh: use only one sed process Ulrich Ölmann
2019-06-04 23:16 ` Ulrich Ölmann [this message]
2019-06-04 23:16 ` [ptxdist] [PATCH 5/5] templates: src-meson-prog: introduce version into template project Ulrich Ölmann
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190604231655.13949-5-u.oelmann@pengutronix.de \
--to=u.oelmann@pengutronix.de \
--cc=ptxdist@pengutronix.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox