aboutsummaryrefslogtreecommitdiff
path: root/nuttx/tools/configure.sh
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/tools/configure.sh')
-rwxr-xr-xnuttx/tools/configure.sh92
1 files changed, 62 insertions, 30 deletions
diff --git a/nuttx/tools/configure.sh b/nuttx/tools/configure.sh
index 3b68fe3f6..ffa997178 100755
--- a/nuttx/tools/configure.sh
+++ b/nuttx/tools/configure.sh
@@ -100,32 +100,54 @@ if [ ! -d "${configpath}" ]; then
exit 3
fi
-if [ ! -r "${configpath}/Make.defs" ]; then
- echo "File \"${configpath}/Make.defs\" does not exist"
+src_makedefs="${configpath}/Make.defs"
+dest_makedefs="${TOPDIR}/Make.defs"
+
+if [ ! -r "${src_makedefs}" ]; then
+ echo "File \"${src_makedefs}\" does not exist"
exit 4
fi
-if [ ! -r "${configpath}/setenv.sh" ]; then
- echo "File \"${configpath}/setenv.sh\" does not exist"
- exit 5
+src_setenv="${configpath}/setenv.sh"
+unset have_setenv
+
+if [ -r "${src_setenv}" ]; then
+ dest_setenv=${TOPDIR}/setenv.sh
+ have_setenv=y
+else
+ src_setenv="${configpath}/setenv.bat"
+ if [ -r "${src_setenv}" ]; then
+ dest_setenv=${TOPDIR}/setenv.bat
+ have_setenv=y
+ else
+ unset src_setenv
+ fi
fi
-if [ ! -r "${configpath}/defconfig" ]; then
- echo "File \"${configpath}/defconfig\" does not exist"
+src_config="${configpath}/defconfig"
+tmp_config="${TOPDIR}/.configX"
+dest_config="${TOPDIR}/.config"
+
+if [ ! -r "${src_config}" ]; then
+ echo "File \"${src_config}\" does not exist"
exit 6
fi
# Extract values needed from the defconfig file. We need:
# (1) The CONFIG_NUTTX_NEWCONFIG setting to know if this is a "new" style
-# configuration, and
-# (2) The CONFIG_APPS_DIR to see if there is a configured location for the
-# application directory.
+# configuration,
+# (2) The CONFIG_WINDOWS_NATIVE setting to know it this is target for a
+# native Windows (meaning that we want setenv.bat vs setenv.sh and we need
+# to use backslashes in the CONFIG_APPS_DIR setting).
+# (3) The CONFIG_APPS_DIR setting to see if there is a configured location for the
+# application directory. This can be overridden from the command line.
-newconfig=`grep CONFIG_NUTTX_NEWCONFIG= "${configpath}/defconfig" | cut -d'=' -f2`
+newconfig=`grep CONFIG_NUTTX_NEWCONFIG= "${src_config}" | cut -d'=' -f2`
+winnative=`grep CONFIG_WINDOWS_NATIVE= "${src_config}" | cut -d'=' -f2`
defappdir=y
if [ -z "${appdir}" ]; then
- quoted=`grep "^CONFIG_APPS_DIR=" "${configpath}/defconfig" | cut -d'=' -f2`
+ quoted=`grep "^CONFIG_APPS_DIR=" "${src_config}" | cut -d'=' -f2`
if [ ! -z "${appdir}" ]; then
appdir=`echo ${quoted} | sed -e "s/\"//g"`
defappdir=n
@@ -157,34 +179,45 @@ if [ -z "${appdir}" ]; then
fi
fi
+# For checking the apps dir path, we need a POSIX version of the relative path.
+
+posappdir=`echo "${appdir}" | sed -e 's/\\\\/\\//g'`
+winappdir=`echo "${appdir}" | sed -e 's/\\//\\\\/g'`
+
# If appsdir was provided (or discovered) then make sure that the apps/
# directory exists
-if [ ! -z "${appdir}" -a ! -d "${TOPDIR}/${appdir}" ]; then
- echo "Directory \"${TOPDIR}/${appdir}\" does not exist"
+if [ ! -z "${appdir}" -a ! -d "${TOPDIR}/${posappdir}" ]; then
+ echo "Directory \"${TOPDIR}/${posappdir}\" does not exist"
exit 7
fi
# Okay... Everything looks good. Setup the configuration
-install -C "${configpath}/Make.defs" "${TOPDIR}/." || \
- { echo "Failed to copy ${configpath}/Make.defs" ; exit 7 ; }
-install -C "${configpath}/setenv.sh" "${TOPDIR}/." || \
- { echo "Failed to copy ${configpath}/setenv.sh" ; exit 8 ; }
-chmod 755 "${TOPDIR}/setenv.sh"
-install -C "${configpath}/defconfig" "${TOPDIR}/.configX" || \
- { echo "Failed to copy ${configpath}/defconfig" ; exit 9 ; }
+install "${src_makedefs}" "${dest_makedefs}" || \
+ { echo "Failed to copy \"${src_makedefs}\"" ; exit 7 ; }
+if [ "X${have_setenv}" = "Xy" ]; then
+ install "${src_setenv}" "${dest_setenv}" || \
+ { echo "Failed to copy ${src_setenv}" ; exit 8 ; }
+ chmod 755 "${dest_setenv}"
+fi
+install "${src_config}" "${tmp_config}" || \
+ { echo "Failed to copy \"${src_config}\"" ; exit 9 ; }
# If we did not use the CONFIG_APPS_DIR that was in the defconfig config file,
# then append the correct application information to the tail of the .config
# file
if [ "X${defappdir}" = "Xy" ]; then
- sed -i -e "/^CONFIG_APPS_DIR/d" "${TOPDIR}/.configX"
- echo "" >> "${TOPDIR}/.configX"
- echo "# Application configuration" >> "${TOPDIR}/.configX"
- echo "" >> "${TOPDIR}/.configX"
- echo "CONFIG_APPS_DIR=\"$appdir\"" >> "${TOPDIR}/.configX"
+ sed -i -e "/^CONFIG_APPS_DIR/d" "${tmp_config}"
+ echo "" >> "${tmp_config}"
+ echo "# Application configuration" >> "${tmp_config}"
+ echo "" >> "${tmp_config}"
+ if [ "X${winnative}" = "Xy" ]; then
+ echo "CONFIG_APPS_DIR=\"$winappdir\"" >> "${tmp_config}"
+ else
+ echo "CONFIG_APPS_DIR=\"$posappdir\"" >> "${tmp_config}"
+ fi
fi
# Copy appconfig file. The appconfig file will be copied to ${appdir}/.config
@@ -195,7 +228,7 @@ if [ ! -z "${appdir}" -a "X${newconfig}" != "Xy" ]; then
if [ ! -r "${configpath}/appconfig" ]; then
echo "NOTE: No readable appconfig file found in ${configpath}"
else
- install -C "${configpath}/appconfig" "${TOPDIR}/${appdir}/.config" || \
+ install "${configpath}/appconfig" "${TOPDIR}/${posappdir}/.config" || \
{ echo "Failed to copy ${configpath}/appconfig" ; exit 10 ; }
fi
fi
@@ -203,6 +236,5 @@ fi
# install the final .configX only if it differs from any existing
# .config file.
-install -C "${TOPDIR}/.configX" "${TOPDIR}/.config"
-rm -f "${TOPDIR}/.configX"
-
+install "${tmp_config}" "${dest_config}"
+rm -f "${tmp_config}"