mirror of
https://github.com/thead-yocto-mirror/meta-riscv
synced 2026-09-07 17:25:16 +02:00
Rename the folder to recipes-devtools as most other layers call it. Signed-off-by: Moritz Fischer <moritz.fischer@ettus.com>
366 lines
13 KiB
Diff
366 lines
13 KiB
Diff
From c3c94f9356879c162b14f55a0fcd1facc0f4e36f Mon Sep 17 00:00:00 2001
|
|
From: Khem Raj <raj.khem@gmail.com>
|
|
Date: Fri, 9 Mar 2018 02:00:47 -0800
|
|
Subject: [PATCH] add acinclude.m4
|
|
|
|
Signed-off-by: Khem Raj <raj.khem@gmail.com>
|
|
---
|
|
acinclude.m4 | 345 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
1 file changed, 345 insertions(+)
|
|
create mode 100644 acinclude.m4
|
|
|
|
diff --git a/acinclude.m4 b/acinclude.m4
|
|
new file mode 100644
|
|
index 0000000..15353f2
|
|
--- /dev/null
|
|
+++ b/acinclude.m4
|
|
@@ -0,0 +1,345 @@
|
|
+#=========================================================================
|
|
+# Local Autoconf Macros
|
|
+#=========================================================================
|
|
+# This file contains the macros for the Modular C++ Build System and
|
|
+# additional autoconf macros which developers can use in their
|
|
+# configure.ac scripts. Please read the documentation in
|
|
+# 'mcppbs-doc.txt' for more details on how the Modular C++ Build System
|
|
+# works. The documenation for each macro should include information
|
|
+# about the author, date, and copyright.
|
|
+
|
|
+#-------------------------------------------------------------------------
|
|
+# MCPPBS_PROG_INSTALL
|
|
+#-------------------------------------------------------------------------
|
|
+# This macro will add an --enable-stow command line option to the
|
|
+# configure script. When enabled, this macro will first check to see if
|
|
+# the stow program is available and if so it will set the $stow shell
|
|
+# variable to the binary name and the $enable_stow shell variable to
|
|
+# "yes". These variables can be used in a makefile to conditionally use
|
|
+# stow for installation.
|
|
+#
|
|
+# This macro uses two environment variables to help setup default stow
|
|
+# locations. The $STOW_PREFIX is used for stowing native built packages.
|
|
+# The packages are staged in $STOW_PREFIX/pkgs and then symlinks are
|
|
+# created from within $STOW_PREFIX into the pkgs subdirectory. If you
|
|
+# only do native builds then this is all you need to set. If you don't
|
|
+# set $STOW_PREFIX then the default is just the normal default prefix
|
|
+# which is almost always /usr/local.
|
|
+#
|
|
+# For non-native builds we probably want to install the packages in a
|
|
+# different location which includes the host architecture name as part
|
|
+# of the prefix. For these kind of builds, we can specify the $STOW_ROOT
|
|
+# environment variable and the effective prefix will be
|
|
+# $STOW_ROOT/${host_alias} where ${host_alias} is specified on the
|
|
+# configure command line with "--host".
|
|
+#
|
|
+# Here is an example setup:
|
|
+#
|
|
+# STOW_ROOT="$HOME/install"
|
|
+# STOW_ARCH="i386-macosx10.4"
|
|
+# STOW_PREFIX="${STOW_ROOT}/${STOW_ARCH}"
|
|
+#
|
|
+
|
|
+AC_DEFUN([MCPPBS_PROG_INSTALL],
|
|
+[
|
|
+
|
|
+ # Configure command line option
|
|
+
|
|
+ AC_ARG_ENABLE(stow,
|
|
+ AS_HELP_STRING(--enable-stow,[Enable stow-based install]),
|
|
+ [enable_stow="yes"],[enable_stow="no"])
|
|
+
|
|
+ AC_SUBST([enable_stow])
|
|
+
|
|
+ # Environment variables
|
|
+
|
|
+ AC_ARG_VAR([STOW_ROOT], [Root for non-native stow-based installs])
|
|
+ AC_ARG_VAR([STOW_PREFIX], [Prefix for stow-based installs])
|
|
+
|
|
+ # Check for install script
|
|
+
|
|
+ AC_PROG_INSTALL
|
|
+
|
|
+ # Deterimine if native build and set prefix appropriately
|
|
+
|
|
+ AS_IF([ test ${enable_stow} = "yes" ],
|
|
+ [
|
|
+ AC_CHECK_PROGS([stow],[stow],[no])
|
|
+ AS_IF([ test ${stow} = "no" ],
|
|
+ [
|
|
+ AC_MSG_ERROR([Cannot use --enable-stow since stow is not available])
|
|
+ ])
|
|
+
|
|
+ # Check if native or non-native build
|
|
+
|
|
+ AS_IF([ test "${build}" = "${host}" ],
|
|
+ [
|
|
+
|
|
+ # build == host so this is a native build. Make sure --prefix not
|
|
+ # set and $STOW_PREFIX is set, then set prefix=$STOW_PREFIX.
|
|
+
|
|
+ AS_IF([ test "${prefix}" = "NONE" && test -n "${STOW_PREFIX}" ],
|
|
+ [
|
|
+ prefix="${STOW_PREFIX}"
|
|
+ AC_MSG_NOTICE([Using \$STOW_PREFIX from environment])
|
|
+ AC_MSG_NOTICE([prefix=${prefix}])
|
|
+ ])
|
|
+
|
|
+ ],[
|
|
+
|
|
+ # build != host so this is a non-native build. Make sure --prefix
|
|
+ # not set and $STOW_ROOT is set, then set
|
|
+ # prefix=$STOW_ROOT/${host_alias}.
|
|
+
|
|
+ AS_IF([ test "${prefix}" = "NONE" && test -n "${STOW_ROOT}" ],
|
|
+ [
|
|
+ prefix="${STOW_ROOT}/${host_alias}"
|
|
+ AC_MSG_NOTICE([Using \$STOW_ROOT from environment])
|
|
+ AC_MSG_NOTICE([prefix=${prefix}])
|
|
+ ])
|
|
+
|
|
+ ])
|
|
+
|
|
+ ])
|
|
+
|
|
+])
|
|
+
|
|
+#-------------------------------------------------------------------------
|
|
+# MCPPBS_PROG_RUN
|
|
+# -------------------------------------------------------------------------
|
|
+# If we are doing a non-native build then we look for an isa simulator
|
|
+# to use for running tests. We set the RUN substitution variable to be
|
|
+# empty for native builds or to the name of the isa simulator for
|
|
+# non-native builds. Thus a makefile can run compiled programs
|
|
+# regardless if we are doing a native or non-native build like this:
|
|
+#
|
|
+# $(RUN) $(RUNFLAGS) ./test-program
|
|
+#
|
|
+
|
|
+AC_DEFUN([MCPPBS_PROG_RUN],
|
|
+[
|
|
+ AS_IF([ test "${build}" != "${host}" ],
|
|
+ [
|
|
+ AC_CHECK_TOOLS([RUN],[isa-run run],[no])
|
|
+ AS_IF([ test ${RUN} = "no" ],
|
|
+ [
|
|
+ AC_MSG_ERROR([Cannot find simulator for target ${target_alias}])
|
|
+ ])
|
|
+ ],[
|
|
+ RUN=""
|
|
+ ])
|
|
+ AC_SUBST([RUN])
|
|
+ AC_SUBST([RUNFLAGS])
|
|
+])
|
|
+
|
|
+#-------------------------------------------------------------------------
|
|
+# MCPPBS_SUBPROJECTS([ sproj1, sproj2, ... ])
|
|
+#-------------------------------------------------------------------------
|
|
+# The developer should call this macro with a list of the subprojects
|
|
+# which make up this project. One should order the list such that any
|
|
+# given subproject only depends on subprojects listed before it. The
|
|
+# subproject names can also include an * suffix which indicates that
|
|
+# this is an optional subproject. Optional subprojects are only included
|
|
+# as part of the project build if enabled on the configure command line
|
|
+# with a --enable-<subproject> flag. The user can also specify that all
|
|
+# optional subprojects should be included in the build with the
|
|
+# --enable-optional-subprojects flag.
|
|
+#
|
|
+# Subproject names can also include a ** suffix which indicates that it
|
|
+# is an optional subproject, but there is a group with the same name.
|
|
+# Thus the --enable-<sproj> command line option will enable not just the
|
|
+# subproject sproj but all of the subprojects which are in the group.
|
|
+# There is no error checking to make sure that if you use the ** suffix
|
|
+# you actually define a group so be careful.
|
|
+#
|
|
+# Both required and optional subprojects should have a 'subproject.ac'
|
|
+# file. The script's filename should be the abbreivated subproject name
|
|
+# (assuming the subproject name is sproj then we would use 'sproj.ac')
|
|
+# The MCPPBS_SUBPROJECTS macro includes the 'subproject.ac' files for
|
|
+# enabled subprojects. Whitespace and newlines are allowed within the
|
|
+# list.
|
|
+#
|
|
+# Author : Christopher Batten
|
|
+# Date : September 10, 2008
|
|
+
|
|
+AC_DEFUN([MCPPBS_SUBPROJECTS],
|
|
+[
|
|
+
|
|
+ # Add command line argument to enable all optional subprojects
|
|
+
|
|
+ AC_ARG_ENABLE(optional-subprojects,
|
|
+ AS_HELP_STRING([--enable-optional-subprojects],
|
|
+ [Enable all optional subprojects]))
|
|
+
|
|
+ # Loop through the subprojects given in the macro argument
|
|
+
|
|
+ m4_foreach([MCPPBS_SPROJ],[$1],
|
|
+ [
|
|
+
|
|
+ # Determine if this is a required or an optional subproject
|
|
+
|
|
+ m4_define([MCPPBS_IS_REQ],
|
|
+ m4_bmatch(MCPPBS_SPROJ,[\*+],[false],[true]))
|
|
+
|
|
+ # Determine if there is a group with the same name
|
|
+
|
|
+ m4_define([MCPPBS_IS_GROUP],
|
|
+ m4_bmatch(MCPPBS_SPROJ,[\*\*],[true],[false]))
|
|
+
|
|
+ # Create variations of the subproject name suitable for use as a CPP
|
|
+ # enabled define, a shell enabled variable, and a shell function
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_NORM],
|
|
+ m4_normalize(m4_bpatsubsts(MCPPBS_SPROJ,[*],[])))
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_DEFINE],
|
|
+ m4_toupper(m4_bpatsubst(MCPPBS_SPROJ_NORM[]_ENABLED,[-],[_])))
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_FUNC],
|
|
+ m4_bpatsubst(_mpbp_[]MCPPBS_SPROJ_NORM[]_configure,[-],[_]))
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_UNDERSCORES],
|
|
+ m4_bpatsubsts(MCPPBS_SPROJ,[-],[_]))
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_SHVAR],
|
|
+ m4_bpatsubst(enable_[]MCPPBS_SPROJ_NORM[]_sproj,[-],[_]))
|
|
+
|
|
+ # Add subproject to our running list
|
|
+
|
|
+ subprojects="$subprojects MCPPBS_SPROJ_NORM"
|
|
+
|
|
+ # Process the subproject appropriately. If enabled add it to the
|
|
+ # $enabled_subprojects running shell variable, set a
|
|
+ # SUBPROJECT_ENABLED C define, and include the appropriate
|
|
+ # 'subproject.ac'.
|
|
+
|
|
+ m4_if(MCPPBS_IS_REQ,[true],
|
|
+ [
|
|
+ AC_MSG_NOTICE([configuring default subproject : MCPPBS_SPROJ_NORM])
|
|
+ AC_CONFIG_FILES(MCPPBS_SPROJ_NORM[].mk:MCPPBS_SPROJ_NORM[]/MCPPBS_SPROJ_NORM[].mk.in)
|
|
+ MCPPBS_SPROJ_SHVAR="yes"
|
|
+ subprojects_enabled="$subprojects_enabled MCPPBS_SPROJ_NORM"
|
|
+ AC_DEFINE(MCPPBS_SPROJ_DEFINE,,
|
|
+ [Define if subproject MCPPBS_SPROJ_NORM is enabled])
|
|
+ m4_include(MCPPBS_SPROJ_NORM[]/MCPPBS_SPROJ_NORM[].ac)
|
|
+ ],[
|
|
+
|
|
+ # For optional subprojects we capture the 'subproject.ac' as a
|
|
+ # shell function so that in the MCPPBS_GROUP macro we can just
|
|
+ # call this shell function instead of reading in 'subproject.ac'
|
|
+ # again.
|
|
+
|
|
+ MCPPBS_SPROJ_FUNC ()
|
|
+ {
|
|
+ AC_MSG_NOTICE([configuring optional subproject : MCPPBS_SPROJ_NORM])
|
|
+ AC_CONFIG_FILES(MCPPBS_SPROJ_NORM[].mk:MCPPBS_SPROJ_NORM[]/MCPPBS_SPROJ_NORM[].mk.in)
|
|
+ MCPPBS_SPROJ_SHVAR="yes"
|
|
+ subprojects_enabled="$subprojects_enabled MCPPBS_SPROJ_NORM"
|
|
+ AC_DEFINE(MCPPBS_SPROJ_DEFINE,,
|
|
+ [Define if subproject MCPPBS_SPROJ_NORM is enabled])
|
|
+ m4_include(MCPPBS_SPROJ_NORM[]/MCPPBS_SPROJ_NORM[].ac)
|
|
+ };
|
|
+
|
|
+ # Optional subprojects add --enable-subproject command line
|
|
+ # options, _if_ the subproject name is not also a group name.
|
|
+
|
|
+ m4_if(MCPPBS_IS_GROUP,[false],
|
|
+ [
|
|
+ AC_ARG_ENABLE(MCPPBS_SPROJ_NORM,
|
|
+ AS_HELP_STRING(--enable-MCPPBS_SPROJ_NORM,
|
|
+ [Subproject MCPPBS_SPROJ_NORM]),
|
|
+ [MCPPBS_SPROJ_SHVAR="yes"],[MCPPBS_SPROJ_SHVAR="no"])
|
|
+
|
|
+ AS_IF([test "$MCPPBS_SPROJ_SHVAR" = "yes"],
|
|
+ [
|
|
+ eval "MCPPBS_SPROJ_FUNC"
|
|
+ ],[
|
|
+ AC_MSG_NOTICE([processing optional subproject : MCPPBS_SPROJ_NORM])
|
|
+ ])
|
|
+
|
|
+ ],[
|
|
+
|
|
+ # If the subproject name is also a group name then we need to
|
|
+ # make sure that we set the shell variable for that subproject to
|
|
+ # no so that the group code knows we haven't run it yet.
|
|
+
|
|
+ AC_MSG_NOTICE([processing optional subproject : MCPPBS_SPROJ_NORM])
|
|
+ MCPPBS_SPROJ_SHVAR="no"
|
|
+
|
|
+ ])
|
|
+
|
|
+ # Always execute the subproject configure code if we are enabling
|
|
+ # all subprojects.
|
|
+
|
|
+ AS_IF([ test "$enable_optional_subprojects" = "yes" \
|
|
+ && test "$MCPPBS_SPROJ_SHVAR" = "no" ],
|
|
+ [
|
|
+ eval "MCPPBS_SPROJ_FUNC"
|
|
+ ])
|
|
+
|
|
+ ])
|
|
+
|
|
+ ])
|
|
+
|
|
+ # Output make variables
|
|
+
|
|
+ AC_SUBST([subprojects])
|
|
+ AC_SUBST([subprojects_enabled])
|
|
+
|
|
+])
|
|
+
|
|
+#-------------------------------------------------------------------------
|
|
+# MCPPBS_GROUP( [group-name], [ sproj1, sproj2, ... ] )
|
|
+#-------------------------------------------------------------------------
|
|
+# This macro creates a subproject group with the given group-name. When
|
|
+# a user specifies --enable-<group-name> the listed subprojects will be
|
|
+# enabled. Groups can have the same name as a subproject and in that
|
|
+# case whenever a user specifies --enable-<subproject> the subprojects
|
|
+# listed in the corresponding group will also be enabled. Groups are
|
|
+# useful for specifying related subprojects which are usually enabled
|
|
+# together, as well as for specifying that a specific optional
|
|
+# subproject has dependencies on other optional subprojects.
|
|
+#
|
|
+# Author : Christopher Batten
|
|
+# Date : September 10, 2008
|
|
+
|
|
+AC_DEFUN([MCPPBS_GROUP],
|
|
+[
|
|
+
|
|
+ m4_define([MCPPBS_GROUP_NORM],
|
|
+ m4_normalize([$1]))
|
|
+
|
|
+ m4_define([MCPPBS_GROUP_SHVAR],
|
|
+ m4_bpatsubst(enable_[]MCPPBS_GROUP_NORM[]_group,[-],[_]))
|
|
+
|
|
+ AC_ARG_ENABLE(MCPPBS_GROUP_NORM,
|
|
+ AS_HELP_STRING(--enable-MCPPBS_GROUP_NORM,
|
|
+ [Group MCPPBS_GROUP_NORM: $2]),
|
|
+ [MCPPBS_GROUP_SHVAR="yes"],[MCPPBS_GROUP_SHVAR="no"])
|
|
+
|
|
+ AS_IF([test "$MCPPBS_GROUP_SHVAR" = "yes" ],
|
|
+ [
|
|
+ AC_MSG_NOTICE([configuring optional group : MCPPBS_GROUP_NORM])
|
|
+ ])
|
|
+
|
|
+ m4_foreach([MCPPBS_SPROJ],[$2],
|
|
+ [
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_NORM],
|
|
+ m4_normalize(MCPPBS_SPROJ))
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_SHVAR],
|
|
+ m4_bpatsubst(enable_[]MCPPBS_SPROJ_NORM[]_sproj,[-],[_]))
|
|
+
|
|
+ m4_define([MCPPBS_SPROJ_FUNC],
|
|
+ m4_bpatsubst(_mpbp_[]MCPPBS_SPROJ_NORM[]_configure,[-],[_]))
|
|
+
|
|
+ AS_IF([ test "$MCPPBS_GROUP_SHVAR" = "yes" \
|
|
+ && test "$MCPPBS_SPROJ_SHVAR" = "no" ],
|
|
+ [
|
|
+ eval "MCPPBS_SPROJ_FUNC"
|
|
+ ])
|
|
+
|
|
+ ])
|
|
+
|
|
+])
|
|
--
|
|
2.16.2
|
|
|