1
0
Fork 0
forked from nuttx/nuttx-update

configure/sethost: Add BSD host (-B switch) + MAKECMD (make vs gmake).

This patch adds -B switch to select BSD host platforms.

Linux uses GNU Make as default, command is `make`.
BSD uses BSD Make as default, command is also `make`.
BSD can also use GNU Make, but the command is `gmake`.
This patch uses `make` on GNU platforms and `gmake` on BSD platforms.

Signed-off-by: Tomasz 'CeDeROM' CEDRO <tomek@cedro.info>

tools/sethost.sh: Add BSD host (-B switch) + MAKECMD (make vs gmake).

Signed-off-by: Tomasz 'CeDeROM' CEDRO <tomek@cedro.info>

tools/configure.c: Add BSD host (-B switch).

Signed-off-by: Tomasz 'CeDeROM' CEDRO <tomek@cedro.info>
This commit is contained in:
Tomasz 'CeDeROM' CEDRO 2021-10-16 18:30:54 +02:00 committed by Alan Carvalho de Assis
parent eb889b0884
commit 2abe1e9282
3 changed files with 65 additions and 12 deletions

View file

@ -52,6 +52,7 @@
#define HOST_LINUX 1
#define HOST_MACOS 2
#define HOST_WINDOWS 3
#define HOST_BSD 4
#define WINDOWS_NATIVE 1
#define WINDOWS_CYGWIN 2
@ -166,7 +167,7 @@ static const char *g_optfiles[] =
static void show_usage(const char *progname, int exitcode)
{
fprintf(stderr, "\nUSAGE: %s [-d] [-E] [-e] [-b|f] [-L] [-l|m|c|g|n] "
fprintf(stderr, "\nUSAGE: %s [-d] [-E] [-e] [-b|f] [-L] [-l|m|c|g|n|B] "
"[-a <app-dir>] <board-name>:<config-name> [make-opts]\n",
progname);
fprintf(stderr, "\nUSAGE: %s [-h]\n", progname);
@ -203,6 +204,7 @@ static void show_usage(const char *progname, int exitcode)
fprintf(stderr, " Selects the host environment.\n");
fprintf(stderr, " -l Selects the Linux (l) host environment.\n");
fprintf(stderr, " -m Selects the macOS (m) host environment.\n");
fprintf(stderr, " -B Selects the *BSD (B) host environment.\n");
fprintf(stderr, " -c Selects the Windows Cygwin (c) environment.\n");
fprintf(stderr, " -g Selects the Windows MinGW/MSYS environment.\n");
fprintf(stderr, " -n Selects the Windows native (n) environment.\n");
@ -266,7 +268,7 @@ static void parse_args(int argc, char **argv)
/* Parse command line options */
while ((ch = getopt(argc, argv, "a:bcdEefghLlmnu")) > 0)
while ((ch = getopt(argc, argv, "a:bcdEefghLlmBnu")) > 0)
{
switch (ch)
{
@ -320,6 +322,10 @@ static void parse_args(int argc, char **argv)
g_host = HOST_MACOS;
break;
case 'B' :
g_host = HOST_BSD;
break;
case 'n' :
g_host = HOST_WINDOWS;
g_windows = WINDOWS_NATIVE;
@ -1352,6 +1358,7 @@ static void set_host(const char *destconfig)
enable_feature(destconfig, "CONFIG_HOST_LINUX");
disable_feature(destconfig, "CONFIG_HOST_WINDOWS");
disable_feature(destconfig, "CONFIG_HOST_MACOS");
disable_feature(destconfig, "CONFIG_HOST_BSD");
disable_feature(destconfig, "CONFIG_WINDOWS_NATIVE");
disable_feature(destconfig, "CONFIG_WINDOWS_CYGWIN");
@ -1369,6 +1376,7 @@ static void set_host(const char *destconfig)
disable_feature(destconfig, "CONFIG_HOST_LINUX");
disable_feature(destconfig, "CONFIG_HOST_WINDOWS");
disable_feature(destconfig, "CONFIG_HOST_BSD");
enable_feature(destconfig, "CONFIG_HOST_MACOS");
disable_feature(destconfig, "CONFIG_WINDOWS_NATIVE");
@ -1381,11 +1389,31 @@ static void set_host(const char *destconfig)
}
break;
case HOST_BSD:
{
printf(" Select the BSD host\n");
disable_feature(destconfig, "CONFIG_HOST_LINUX");
disable_feature(destconfig, "CONFIG_HOST_WINDOWS");
disable_feature(destconfig, "CONFIG_HOST_MACOS");
enable_feature(destconfig, "CONFIG_HOST_BSD");
disable_feature(destconfig, "CONFIG_WINDOWS_NATIVE");
disable_feature(destconfig, "CONFIG_WINDOWS_CYGWIN");
disable_feature(destconfig, "CONFIG_WINDOWS_MSYS");
disable_feature(destconfig, "CONFIG_WINDOWS_OTHER");
enable_feature(destconfig, "CONFIG_SIM_X8664_SYSTEMV");
disable_feature(destconfig, "CONFIG_SIM_X8664_MICROSOFT");
}
break;
case HOST_WINDOWS:
{
enable_feature(destconfig, "CONFIG_HOST_WINDOWS");
disable_feature(destconfig, "CONFIG_HOST_LINUX");
disable_feature(destconfig, "CONFIG_HOST_MACOS");
disable_feature(destconfig, "CONFIG_HOST_BSD");
disable_feature(destconfig, "CONFIG_WINDOWS_OTHER");

View file

@ -21,9 +21,10 @@ set -e
WD=`test -d ${0%/*} && cd ${0%/*}; pwd`
TOPDIR="${WD}/.."
MAKECMD="make"
USAGE="
USAGE: ${0} [-E] [-e] [-l|m|c|g|n] [L] [-a <app-dir>] <board-name>:<config-name> [make-opts]
USAGE: ${0} [-E] [-e] [-l|m|c|g|n|B] [L] [-a <app-dir>] <board-name>:<config-name> [make-opts]
Where:
-E enforces distclean if already configured.
@ -33,6 +34,7 @@ Where:
-c selects the Windows host and Cygwin (c) environment.
-g selects the Windows host and MinGW/MSYS environment.
-n selects the Windows host and Windows native (n) environment.
-B selects the *BSD (B) host environment.
Default: Use host setup in the defconfig file
Default Windows: Cygwin
-L Lists all available configurations.
@ -86,6 +88,11 @@ while [ ! -z "$1" ]; do
winnative=y
host+=" $1"
;;
-B )
winnative=n
host+=" $1"
MAKECMD="gmake"
;;
-E )
enforce_distclean=y
;;
@ -173,7 +180,7 @@ fi
if [ -r ${dest_config} ]; then
if [ "X${enforce_distclean}" = "Xy" ]; then
make -C ${TOPDIR} distclean
${MAKECMD} -C ${TOPDIR} distclean
else
if cmp -s ${src_config} ${backup_config}; then
echo "No configuration change."
@ -181,7 +188,7 @@ if [ -r ${dest_config} ]; then
fi
if [ "X${distclean}" = "Xy" ]; then
make -C ${TOPDIR} distclean
${MAKECMD} -C ${TOPDIR} distclean
else
echo "Already configured!"
echo "Please 'make distclean' and try again."

View file

@ -22,14 +22,15 @@ set -e
progname=$0
host=
wenv=
MAKECMD="make"
function showusage {
echo ""
echo "USAGE: $progname [-l|m|c|g|n] [make-opts]"
echo "USAGE: $progname [-l|m|c|g|n|B] [make-opts]"
echo " $progname -h"
echo ""
echo "Where:"
echo " -l|m|c|g|n selects Linux (l), macOS (m), Cygwin (c),"
echo " -l|m|c|g|n|B selects Linux (l), macOS (m), Cygwin (c), BSD (B),"
echo " MSYS/MSYS2 (g) or Windows native (n). Default Linux"
echo " make-opts directly pass to make"
echo " -h will show this help test and terminate"
@ -58,6 +59,10 @@ while [ ! -z "$1" ]; do
host=windows
wenv=native
;;
-B )
host=bsd
MAKECMD="gmake"
;;
-h )
showusage
;;
@ -74,12 +79,17 @@ done
# Cygwin: CYGWIN_NT-10.0-WOW
# Linux: Linux
# MSYS: MINGW32_NT-6.2
# BSD: FreeBSD, OpenBSD, NetBSD, *BSD
if [ -z "$host" ]; then
case $(uname -s) in
Darwin)
host=macos
;;
*BSD)
host=bsd
MAKECMD="gmake"
;;
CYGWIN*)
host=windows
wenv=cygwin
@ -122,23 +132,30 @@ fi
# Modify the configuration
if [ "X$host" == "Xlinux" -o "X$host" == "Xmacos" ]; then
if [ "X$host" == "Xlinux" -o "X$host" == "Xmacos" -o "X$host" == "Xbsd" ]; then
# Disable Windows (to suppress warnings from Window Environment selections)
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_WINDOWS
# Enable Linux or macOS
# Enable Linux or macOS or BSD
if [ "X$host" == "Xlinux" ]; then
echo " Select CONFIG_HOST_LINUX=y"
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_MACOS
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_BSD
kconfig-tweak --file $nuttx/.config --enable CONFIG_HOST_LINUX
elif [ "X$host" == "Xbsd" ]; then
echo " Select CONFIG_HOST_BSD=y"
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_MACOS
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_LINUX
kconfig-tweak --file $nuttx/.config --enable CONFIG_HOST_BSD
else
echo " Select CONFIG_HOST_MACOS=y"
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_LINUX
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_BSD
kconfig-tweak --file $nuttx/.config --enable CONFIG_HOST_MACOS
fi
@ -150,6 +167,7 @@ else
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_LINUX
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_MACOS
kconfig-tweak --file $nuttx/.config --disable CONFIG_HOST_BSD
# Enable Windows and the Microsoft ABI
@ -174,4 +192,4 @@ fi
echo " Refreshing..."
make olddefconfig $* || { echo "ERROR: failed to refresh"; exit 1; }
${MAKECMD} olddefconfig $* || { echo "ERROR: failed to refresh"; exit 1; }