From 923d1e49b56c1db79ca4ef5d33c828de4269bb33 Mon Sep 17 00:00:00 2001 From: patacongo Date: Tue, 13 Nov 2012 00:38:59 +0000 Subject: Add tools/mkdeps.bat and tools/mkdeps.c git-svn-id: http://svn.code.sf.net/p/nuttx/code/trunk@5342 42af7a65-404d-4744-a932-0658087f49c3 --- nuttx/ChangeLog | 5 + nuttx/Documentation/NuttX.html | 2 - nuttx/README.txt | 16 +- nuttx/configs/amber/README.txt | 10 +- nuttx/configs/ea3131/README.txt | 6 +- nuttx/configs/ea3152/README.txt | 9 +- nuttx/configs/eagle100/README.txt | 6 +- nuttx/configs/ekk-lm3s9b96/README.txt | 6 +- nuttx/configs/fire-stm32v2/README.txt | 6 +- nuttx/configs/hymini-stm32v/README.txt | 6 +- nuttx/configs/kwikstik-k40/README.txt | 6 +- nuttx/configs/lincoln60/README.txt | 6 +- nuttx/configs/lm3s6432-s2e/README.txt | 6 +- nuttx/configs/lm3s6965-ek/README.txt | 6 +- nuttx/configs/lm3s8962-ek/README.txt | 6 +- nuttx/configs/lpc4330-xplorer/README.txt | 6 +- nuttx/configs/lpcxpresso-lpc1768/README.txt | 6 +- nuttx/configs/mbed/README.txt | 6 +- nuttx/configs/mcu123-lpc214x/README.txt | 6 +- nuttx/configs/micropendous3/README.txt | 6 +- nuttx/configs/mirtoo/README.txt | 6 +- nuttx/configs/ntosd-dm320/README.txt | 6 +- nuttx/configs/nucleus2g/README.txt | 6 +- nuttx/configs/olimex-lpc1766stk/README.txt | 6 +- nuttx/configs/olimex-strp711/README.txt | 6 +- nuttx/configs/pcblogic-pic32mx/README.txt | 6 +- nuttx/configs/pic32-starterkit/README.txt | 6 +- nuttx/configs/pic32mx7mmb/README.txt | 6 +- nuttx/configs/sam3u-ek/README.txt | 6 +- nuttx/configs/shenzhou/README.txt | 6 +- nuttx/configs/stm3210e-eval/README.txt | 6 +- nuttx/configs/stm3220g-eval/README.txt | 6 +- nuttx/configs/stm3240g-eval/README.txt | 8 +- nuttx/configs/stm32f100rc_generic/README.txt | 6 +- nuttx/configs/stm32f4discovery/README.txt | 6 +- nuttx/configs/stm32f4discovery/winbuild/Make.defs | 2 +- nuttx/configs/stm32f4discovery/winbuild/setenv.bat | 2 + nuttx/configs/sure-pic32mx/README.txt | 6 +- nuttx/configs/teensy/README.txt | 6 +- nuttx/configs/twr-k60n512/README.txt | 6 +- nuttx/configs/ubw32/README.txt | 6 +- nuttx/configs/vsn/README.txt | 6 +- nuttx/tools/Makefile.host | 73 ++- nuttx/tools/README.txt | 20 +- nuttx/tools/mkdeps.bat | 173 ++++++ nuttx/tools/mkdeps.c | 599 +++++++++++++++++++++ nuttx/tools/mkdeps.sh | 2 +- 47 files changed, 903 insertions(+), 222 deletions(-) create mode 100644 nuttx/tools/mkdeps.bat create mode 100644 nuttx/tools/mkdeps.c (limited to 'nuttx') diff --git a/nuttx/ChangeLog b/nuttx/ChangeLog index eb4f4b4ed..0f92fdf7a 100644 --- a/nuttx/ChangeLog +++ b/nuttx/ChangeLog @@ -3608,3 +3608,8 @@ * configs/stm32f4discovery/winbuild: This is a version of the standard NuttX OS test, but configured to build natively on Windows. Its only real purpose is to very the native Windows build logic. + * tools/mkdeps.bat and tools/mkdeps.c: mkdeps.bat is a failed attempt + to leverage mkdeps.sh to CMD.exe. It fails because the are certain + critical CFLAG values that cannot be passed on the CMD.exe command line + (line '='). mkdeps.c is a work in progress that will, hopefully, + replace both mkdeps.sh and mkdeps.bat. diff --git a/nuttx/Documentation/NuttX.html b/nuttx/Documentation/NuttX.html index dd7b83cfc..154e5aa2b 100644 --- a/nuttx/Documentation/NuttX.html +++ b/nuttx/Documentation/NuttX.html @@ -2971,8 +2971,6 @@ avr, m68k, m68hc11, m68hc12, m9s12, blackfin, m32c, h8, and SuperH ports. NOTE: dependencies are suppress by setting the make variable MKDEPS to point to the do-nothing dependency script, tools/mknulldeps.sh. - Dependencies can be enabled for the Windows native GCC compilers by setting - MKDEPS to point to $(TOPDIR)/tools/mkdeps.sh --winpaths $(TOPDIR).

diff --git a/nuttx/README.txt b/nuttx/README.txt index 737d4d4e2..ae0a4a023 100644 --- a/nuttx/README.txt +++ b/nuttx/README.txt @@ -578,18 +578,16 @@ Window Native Toolchain Issues is not a long as you might think because there is no dependency checking if you are using a native Windows toolchain. That bring us to #3: - 3. Dependencies are not made when using Windows versions of the GCC. This is - because the dependencies are generated using Windows pathes which do not - work with the Cygwin make. + 3. Dependencies are not made when using Windows versions of the GCC on a POSIX + platform (i.e., Cygwin). This is because the dependencies are generated + using Windows paths which do not work with the Cygwin make. - Support has been added for making dependencies with the windows-native toolchains. - That support can be enabled by modifying your Make.defs file as follows: + MKDEP = $(TOPDIR)/tools/mknulldeps.sh - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" + If you are building natively on Windows, then no such conflict exists + and the best selection is: - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mkdeps.exe General Pre-built Toolchain Issues diff --git a/nuttx/configs/amber/README.txt b/nuttx/configs/amber/README.txt index 9ef22917e..63fa5d41f 100644 --- a/nuttx/configs/amber/README.txt +++ b/nuttx/configs/amber/README.txt @@ -252,15 +252,7 @@ Windows Native Toolchains is because the dependencies are generated using Windows pathes which do not work with the Cygwin make. - Support has been added for making dependencies with the windows-native - toolchains. That support can be enabled by modifying your Make.defs - file as follows: - - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are - not building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh An additional issue with the WinAVR toolchain, in particular, is that it contains an incompatible version of the Cygwin DLL in its bin/ directory. diff --git a/nuttx/configs/ea3131/README.txt b/nuttx/configs/ea3131/README.txt index 4d01a4162..29b68ce8d 100644 --- a/nuttx/configs/ea3131/README.txt +++ b/nuttx/configs/ea3131/README.txt @@ -80,11 +80,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/ea3152/README.txt b/nuttx/configs/ea3152/README.txt index 5b513a620..7aa57e3ae 100644 --- a/nuttx/configs/ea3152/README.txt +++ b/nuttx/configs/ea3152/README.txt @@ -76,14 +76,7 @@ GNU Toolchain Options because the dependencies are generated using Windows pathes which do not work with the Cygwin make. - Support has been added for making dependencies with the windows-native toolchains. - That support can be enabled by modifying your Make.defs file as follows: - - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/eagle100/README.txt b/nuttx/configs/eagle100/README.txt index ce607c764..79a4b96fd 100644 --- a/nuttx/configs/eagle100/README.txt +++ b/nuttx/configs/eagle100/README.txt @@ -69,11 +69,7 @@ GNU Toolchain Options Support has been added for making dependencies with the CodeSourcery toolchain. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/ekk-lm3s9b96/README.txt b/nuttx/configs/ekk-lm3s9b96/README.txt index 78fe96ef5..fc9448aaf 100644 --- a/nuttx/configs/ekk-lm3s9b96/README.txt +++ b/nuttx/configs/ekk-lm3s9b96/README.txt @@ -139,11 +139,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/fire-stm32v2/README.txt b/nuttx/configs/fire-stm32v2/README.txt index 0cf782a94..aa3225524 100644 --- a/nuttx/configs/fire-stm32v2/README.txt +++ b/nuttx/configs/fire-stm32v2/README.txt @@ -229,11 +229,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- diff --git a/nuttx/configs/hymini-stm32v/README.txt b/nuttx/configs/hymini-stm32v/README.txt index 2c8f3a16a..4c5545806 100644 --- a/nuttx/configs/hymini-stm32v/README.txt +++ b/nuttx/configs/hymini-stm32v/README.txt @@ -83,11 +83,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/kwikstik-k40/README.txt b/nuttx/configs/kwikstik-k40/README.txt index 7a68fcffa..1f3873cc9 100644 --- a/nuttx/configs/kwikstik-k40/README.txt +++ b/nuttx/configs/kwikstik-k40/README.txt @@ -207,11 +207,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/lincoln60/README.txt b/nuttx/configs/lincoln60/README.txt index 068ca50dc..87847cd8b 100644 --- a/nuttx/configs/lincoln60/README.txt +++ b/nuttx/configs/lincoln60/README.txt @@ -107,11 +107,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/lm3s6432-s2e/README.txt b/nuttx/configs/lm3s6432-s2e/README.txt index 3630ccc5e..df7e7029d 100644 --- a/nuttx/configs/lm3s6432-s2e/README.txt +++ b/nuttx/configs/lm3s6432-s2e/README.txt @@ -134,11 +134,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/lm3s6965-ek/README.txt b/nuttx/configs/lm3s6965-ek/README.txt index f6c32ee82..96e87bb27 100644 --- a/nuttx/configs/lm3s6965-ek/README.txt +++ b/nuttx/configs/lm3s6965-ek/README.txt @@ -163,11 +163,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/lm3s8962-ek/README.txt b/nuttx/configs/lm3s8962-ek/README.txt index 310edabc5..6de30047b 100644 --- a/nuttx/configs/lm3s8962-ek/README.txt +++ b/nuttx/configs/lm3s8962-ek/README.txt @@ -163,11 +163,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/lpc4330-xplorer/README.txt b/nuttx/configs/lpc4330-xplorer/README.txt index 8c88b5758..f7ec778ee 100644 --- a/nuttx/configs/lpc4330-xplorer/README.txt +++ b/nuttx/configs/lpc4330-xplorer/README.txt @@ -188,11 +188,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- diff --git a/nuttx/configs/lpcxpresso-lpc1768/README.txt b/nuttx/configs/lpcxpresso-lpc1768/README.txt index 9660e12fe..2fedefc58 100644 --- a/nuttx/configs/lpcxpresso-lpc1768/README.txt +++ b/nuttx/configs/lpcxpresso-lpc1768/README.txt @@ -291,11 +291,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/mbed/README.txt b/nuttx/configs/mbed/README.txt index 958ae9818..09763086b 100644 --- a/nuttx/configs/mbed/README.txt +++ b/nuttx/configs/mbed/README.txt @@ -77,11 +77,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/mcu123-lpc214x/README.txt b/nuttx/configs/mcu123-lpc214x/README.txt index 65d177cc1..49a6d5c0f 100644 --- a/nuttx/configs/mcu123-lpc214x/README.txt +++ b/nuttx/configs/mcu123-lpc214x/README.txt @@ -75,11 +75,7 @@ GNU Toolchain Options Support has been added for making dependencies with the CodeSourcery toolchain. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) may not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/micropendous3/README.txt b/nuttx/configs/micropendous3/README.txt index c05f1ddd5..cc4a47ee3 100644 --- a/nuttx/configs/micropendous3/README.txt +++ b/nuttx/configs/micropendous3/README.txt @@ -269,11 +269,7 @@ Windows Native Toolchains toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are - not building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh An additional issue with the WinAVR toolchain, in particular, is that it contains an incompatible version of the Cygwin DLL in its bin/ directory. diff --git a/nuttx/configs/mirtoo/README.txt b/nuttx/configs/mirtoo/README.txt index b2d0c5790..7a58572bf 100644 --- a/nuttx/configs/mirtoo/README.txt +++ b/nuttx/configs/mirtoo/README.txt @@ -451,11 +451,7 @@ Toolchains Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh Loading NuttX with ICD3 ======================== diff --git a/nuttx/configs/ntosd-dm320/README.txt b/nuttx/configs/ntosd-dm320/README.txt index 46f049e34..ba6cc87ec 100644 --- a/nuttx/configs/ntosd-dm320/README.txt +++ b/nuttx/configs/ntosd-dm320/README.txt @@ -99,11 +99,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/nucleus2g/README.txt b/nuttx/configs/nucleus2g/README.txt index 86a8944ab..0d1d2896b 100644 --- a/nuttx/configs/nucleus2g/README.txt +++ b/nuttx/configs/nucleus2g/README.txt @@ -137,11 +137,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/olimex-lpc1766stk/README.txt b/nuttx/configs/olimex-lpc1766stk/README.txt index 0983ab1f5..6bb36f40c 100644 --- a/nuttx/configs/olimex-lpc1766stk/README.txt +++ b/nuttx/configs/olimex-lpc1766stk/README.txt @@ -225,11 +225,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/olimex-strp711/README.txt b/nuttx/configs/olimex-strp711/README.txt index 74168dbfa..7c3d3fe5b 100644 --- a/nuttx/configs/olimex-strp711/README.txt +++ b/nuttx/configs/olimex-strp711/README.txt @@ -160,11 +160,7 @@ GNU Toolchain Options Support has been added for making dependencies with the CodeSourcery toolchain. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) may not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/pcblogic-pic32mx/README.txt b/nuttx/configs/pcblogic-pic32mx/README.txt index c15bd45a0..9eea61fd8 100644 --- a/nuttx/configs/pcblogic-pic32mx/README.txt +++ b/nuttx/configs/pcblogic-pic32mx/README.txt @@ -279,11 +279,7 @@ Toolchains Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh Loading NuttX with PICkit2 ========================== diff --git a/nuttx/configs/pic32-starterkit/README.txt b/nuttx/configs/pic32-starterkit/README.txt index 31d84798c..b21066b53 100644 --- a/nuttx/configs/pic32-starterkit/README.txt +++ b/nuttx/configs/pic32-starterkit/README.txt @@ -496,11 +496,7 @@ Toolchains Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh Powering the Board ================== diff --git a/nuttx/configs/pic32mx7mmb/README.txt b/nuttx/configs/pic32mx7mmb/README.txt index adf83e2f4..cc8ea5573 100644 --- a/nuttx/configs/pic32mx7mmb/README.txt +++ b/nuttx/configs/pic32mx7mmb/README.txt @@ -264,11 +264,7 @@ Toolchains Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh Powering the Board ================== diff --git a/nuttx/configs/sam3u-ek/README.txt b/nuttx/configs/sam3u-ek/README.txt index fa5d52b69..bcb8b9ef6 100644 --- a/nuttx/configs/sam3u-ek/README.txt +++ b/nuttx/configs/sam3u-ek/README.txt @@ -78,11 +78,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/shenzhou/README.txt b/nuttx/configs/shenzhou/README.txt index 48f183aee..2f2833bbe 100644 --- a/nuttx/configs/shenzhou/README.txt +++ b/nuttx/configs/shenzhou/README.txt @@ -252,11 +252,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- diff --git a/nuttx/configs/stm3210e-eval/README.txt b/nuttx/configs/stm3210e-eval/README.txt index 50e413b42..9e6311201 100644 --- a/nuttx/configs/stm3210e-eval/README.txt +++ b/nuttx/configs/stm3210e-eval/README.txt @@ -86,11 +86,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/stm3220g-eval/README.txt b/nuttx/configs/stm3220g-eval/README.txt index 58a6f156c..0e6a9a7da 100644 --- a/nuttx/configs/stm3220g-eval/README.txt +++ b/nuttx/configs/stm3220g-eval/README.txt @@ -92,11 +92,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- diff --git a/nuttx/configs/stm3240g-eval/README.txt b/nuttx/configs/stm3240g-eval/README.txt index 8604f344a..140cc7414 100644 --- a/nuttx/configs/stm3240g-eval/README.txt +++ b/nuttx/configs/stm3240g-eval/README.txt @@ -94,11 +94,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- @@ -1397,4 +1393,4 @@ Where is one of the following: An example configuration for the Embeddable Lightweight XML-RPC Server at apps/examples/xmlrpc. See http://www.drdobbs.com/web-development/\ an-embeddable-lightweight-xml-rpc-server/184405364 for more info. - Contributed by Max Holtzberg. \ No newline at end of file + Contributed by Max Holtzberg. diff --git a/nuttx/configs/stm32f100rc_generic/README.txt b/nuttx/configs/stm32f100rc_generic/README.txt index e9959431c..0c96d4fbc 100644 --- a/nuttx/configs/stm32f100rc_generic/README.txt +++ b/nuttx/configs/stm32f100rc_generic/README.txt @@ -88,11 +88,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- diff --git a/nuttx/configs/stm32f4discovery/README.txt b/nuttx/configs/stm32f4discovery/README.txt index a69f53b0f..68be0a8a6 100644 --- a/nuttx/configs/stm32f4discovery/README.txt +++ b/nuttx/configs/stm32f4discovery/README.txt @@ -92,11 +92,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh The CodeSourcery Toolchain (2009q1) ----------------------------------- diff --git a/nuttx/configs/stm32f4discovery/winbuild/Make.defs b/nuttx/configs/stm32f4discovery/winbuild/Make.defs index 083704454..426611f8e 100644 --- a/nuttx/configs/stm32f4discovery/winbuild/Make.defs +++ b/nuttx/configs/stm32f4discovery/winbuild/Make.defs @@ -81,7 +81,7 @@ LDSCRIPT = ld.script # Windows-native toolchains -MKDEP = $(TOPDIR)/tools/mknulldeps.sh +MKDEP = $(TOPDIR)/tools/mkdeps.bat ARCHINCLUDES = -I. -isystem $(TOPDIR)/include ARCHXXINCLUDES = -I. -isystem $(TOPDIR)/include -isystem $(TOPDIR)/include/cxx ARCHSCRIPT = -T$(TOPDIR)/configs/$(CONFIG_ARCH_BOARD)/scripts/$(LDSCRIPT) diff --git a/nuttx/configs/stm32f4discovery/winbuild/setenv.bat b/nuttx/configs/stm32f4discovery/winbuild/setenv.bat index e2196a90a..1d4a95f3a 100755 --- a/nuttx/configs/stm32f4discovery/winbuild/setenv.bat +++ b/nuttx/configs/stm32f4discovery/winbuild/setenv.bat @@ -1,3 +1,5 @@ +@echo off + rem configs/stm32f4discovery/winbuild/setenv.sh rem rem Copyright (C) 2012 Gregory Nutt. All rights reserved. diff --git a/nuttx/configs/sure-pic32mx/README.txt b/nuttx/configs/sure-pic32mx/README.txt index ad9835698..68f0bd336 100644 --- a/nuttx/configs/sure-pic32mx/README.txt +++ b/nuttx/configs/sure-pic32mx/README.txt @@ -345,11 +345,7 @@ Toolchains Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh Loading NuttX with PICkit2 ========================== diff --git a/nuttx/configs/teensy/README.txt b/nuttx/configs/teensy/README.txt index 979d8e0e7..454a42d05 100644 --- a/nuttx/configs/teensy/README.txt +++ b/nuttx/configs/teensy/README.txt @@ -272,11 +272,7 @@ Windows Native Toolchains toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are - not building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh An additional issue with the WinAVR toolchain, in particular, is that it contains an incompatible version of the Cygwin DLL in its bin/ directory. diff --git a/nuttx/configs/twr-k60n512/README.txt b/nuttx/configs/twr-k60n512/README.txt index 3b7b402d7..cd567fd37 100644 --- a/nuttx/configs/twr-k60n512/README.txt +++ b/nuttx/configs/twr-k60n512/README.txt @@ -344,11 +344,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/configs/ubw32/README.txt b/nuttx/configs/ubw32/README.txt index f8afb88e4..83ade7dae 100644 --- a/nuttx/configs/ubw32/README.txt +++ b/nuttx/configs/ubw32/README.txt @@ -290,11 +290,7 @@ Toolchains Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh Loading NuttX with PICkit2 ========================== diff --git a/nuttx/configs/vsn/README.txt b/nuttx/configs/vsn/README.txt index 657cfdd89..a0b8e2419 100644 --- a/nuttx/configs/vsn/README.txt +++ b/nuttx/configs/vsn/README.txt @@ -83,11 +83,7 @@ GNU Toolchain Options Support has been added for making dependencies with the windows-native toolchains. That support can be enabled by modifying your Make.defs file as follows: - - MKDEP = $(TOPDIR)/tools/mknulldeps.sh - + MKDEP = $(TOPDIR)/tools/mkdeps.sh --winpaths "$(TOPDIR)" - - If you have problems with the dependency build (for example, if you are not - building on C:), then you may need to modify tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mknulldeps.sh NOTE 1: The CodeSourcery toolchain (2009q1) does not work with default optimization level of -Os (See Make.defs). It will work with -O0, -O1, or -O2, but not with diff --git a/nuttx/tools/Makefile.host b/nuttx/tools/Makefile.host index 66bea9937..d6a521272 100644 --- a/nuttx/tools/Makefile.host +++ b/nuttx/tools/Makefile.host @@ -33,43 +33,86 @@ # ############################################################################ -all: mkconfig mkversion mksyscall bdf-converter -default: mkconfig mksyscall +TOPDIR ?= ${shell pwd}/.. +-include $(TOPDIR)/Make.defs +include ${TOPDIR}/tools/Config.mk + +all: mkconfig$(EXEEXT) mkversion$(EXEEXT) mksyscall$(EXEEXT) bdf-converter$(EXEEXT) mksymtab$(EXEEXT) mkdeps$(EXEEXT) +default: mkconfig$(EXEEXT) mksyscall$(EXEEXT) mkdeps$(EXEEXT) + +ifdef EXEEXT +.PHONY: clean mkconfig mkversion mksyscall bdf-converter mksymtab mkdeps +else .PHONY: clean +endif -# Add CFLAGS=-g on the make command line build debug versions +# Add HOSTCFLAGS=-g on the make command line build debug versions -CFLAGS = -O2 -Wall -I. +HOSTCFLAGS ?= -O2 -Wall -I. +HOSTCC ?= gcc # mkconfig - Convert a .config file into a C config.h file -mkconfig: mkconfig.c cfgparser.c - $(Q) gcc $(CFLAGS) -o mkconfig mkconfig.c cfgparser.c +mkconfig$(EXEEXT): mkconfig.c cfgparser.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkconfig$(EXEEXT) mkconfig.c cfgparser.c + +ifdef EXEEXT +mkconfig: mkconfig$(EXEEXT) +endif # cmpconfig - Compare the contents of two configuration files cmpconfig: cmpconfig.c - $(Q) gcc $(CFLAGS) -o cmpconfig cmpconfig.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o cmpconfig cmpconfig.c + +ifdef EXEEXT +cmpconfig: cmpconfig$(EXEEXT) +endif # mkversion - Convert a .version file into a C version.h file -mkversion: mkconfig.c cfgparser.c - $(Q) gcc $(CFLAGS) -o mkversion mkversion.c cfgparser.c +mkversion$(EXEEXT): mkconfig.c cfgparser.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkversion$(EXEEXT) mkversion.c cfgparser.c + +ifdef EXEEXT +mkversion: mkversion$(EXEEXT) +endif # mksyscall - Convert a CSV file into syscall stubs and proxies -mksyscall: mksyscall.c csvparser.c - $(Q) gcc $(CFLAGS) -o mksyscall mksyscall.c csvparser.c +mksyscall$(EXEEXT): mksyscall.c csvparser.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o mksyscall$(EXEEXT) mksyscall.c csvparser.c + +ifdef EXEEXT +mksyscall: mksyscall$(EXEEXT) +endif # mksymtab - Convert a CSV file into a symbol table -mksymtab: mksymtab.c csvparser.c - $(Q) gcc $(CFLAGS) -o mksymtab mksymtab.c csvparser.c +mksymtab$(EXEEXT): mksymtab.c csvparser.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o mksymtab$(EXEEXT) mksymtab.c csvparser.c + +ifdef EXEEXT +mksymtab: mksymtab$(EXEEXT) +endif # bdf-converter - Converts a BDF font to the NuttX font format -bdf-converter: bdf-converter.c - $(Q) gcc $(CFLAGS) -o bdf-converter bdf-converter.c +bdf-converter$(EXEEXT): bdf-converter.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o bdf-converter$(EXEEXT) bdf-converter.c + +ifdef EXEEXT +bdf-converter: bdf-converter$(EXEEXT) +endif + +# Create dependencies for a list of files + +mkdeps$(EXEEXT): mkdeps.c csvparser.c + $(Q) $(HOSTCC) $(HOSTCFLAGS) -o mkdeps$(EXEEXT) mkdeps.c + +ifdef EXEEXT +mkdeps: mkdeps$(EXEEXT) +endif clean: $(Q) rm -f *.o *.a *~ .*.swp diff --git a/nuttx/tools/README.txt b/nuttx/tools/README.txt index 5d52eaeff..28fa664bd 100644 --- a/nuttx/tools/README.txt +++ b/nuttx/tools/README.txt @@ -271,6 +271,8 @@ mkromfsimg.sh may be mounted under /etc in the NuttX pseudo file system. mkdeps.sh +mkdeps.bat +mkdeps.c mknulldeps.sh NuttX uses the GCC compilers capabilities to create Makefile dependencies. @@ -278,7 +280,8 @@ mknulldeps.sh dependencies. If a NuttX configuration uses the GCC toolchain, its Make.defs file (see configs/README.txt) will include a line like: - MKDEP = $(TOPDIR)/tools/mkdeps.sh + MKDEP = $(TOPDIR)/tools/mkdeps.sh, or + MKDEP = $(TOPDIR)/tools/mkdeps[.exe] (See NOTE below) If the NuttX configuration does not use a GCC compatible toolchain, then it cannot use the dependencies and instead it uses mknulldeps.sh: @@ -287,6 +290,21 @@ mknulldeps.sh The mknulldeps.sh is a stub script that does essentially nothing. + NOTE: The mkdep.* files are undergoing change. mkdeps.sh is a bash + script that produces dependencies well for POSIX style hosts (e..g., + Linux and Cygwin). It does not work well for mixed environments with + a Windows toolchain running in a POSIX style environemnt (hence, the + mknulldeps.sh script). + + mkdeps.bat is a simple port of the bash script to run in a Windows + command shell. However, it does not work well either because some + of the common CFLAGS use characters like '=' which are transformed + by the CMD.exe shell. + + mkdeps.c generates mkdeps (on Linux) or mkdeps.exe (on Windows). + This C version should solve all of the issues. However, this verison + is still under-development. + define.sh Different compilers have different conventions for specifying pre- diff --git a/nuttx/tools/mkdeps.bat b/nuttx/tools/mkdeps.bat new file mode 100644 index 000000000..23aab0b71 --- /dev/null +++ b/nuttx/tools/mkdeps.bat @@ -0,0 +1,173 @@ +@echo off + +rem tools/mkdeps.sh +rem +rem Copyright (C) 2012 Gregory Nutt. All rights reserved. +rem Author: Gregory Nutt +rem +rem Redistribution and use in source and binary forms, with or without +rem modification, are permitted provided that the following conditions +rem are met: +rem +rem 1. Redistributions of source code must retain the above copyright +rem notice, this list of conditions and the following disclaimer. +rem 2. Redistributions in binary form must reproduce the above copyright +rem notice, this list of conditions and the following disclaimer in +rem the documentation and/or other materials provided with the +rem distribution. +rem 3. Neither the name NuttX nor the names of its contributors may be +rem used to endorse or promote products derived from this software +rem without specific prior written permission. +rem +rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +rem FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +rem COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +rem INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +rem BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS +rem OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED +rem AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +rem LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +rem ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +rem POSSIBILITY OF SUCH DAMAGE. + +rem Accumulate CFLAGS up to "--" + +set cc= +set cflags= +set altpath= +set files= +set args= +set debug=n + +:Loop +if "%1"=="" goto Continue + +if "%1"=="--" ( + set cc=%cflags% + set cflags=%args% + set args= + goto NextParm +) + +if "%1"=="--dep-path" ( + if "%args%"=="" ( + set altpath=%altpath% %2 + ) else ( + set args=%args% %2 + ) + shift + goto NextParm +) + +if "%1"=="--dep-debug" ( +rem @echo on + set debug=y + goto NextParm +) + +if "%1"=="--help" goto Usage + +if "%args%"=="" ( + set args=%1 +) else ( + set args=%args% %1 +) + +:NextParm +shift +goto Loop +:Continue + +set files=%args% + +if "%debug%"=="y" ( + echo cc=%cc% + echo cflags=%cflags% + echo files=%files% + echo altpath=%altpath% +) + +rem Now check if we have everything + +if "%cc%"=="" ( + echo ERROR: No compiler specified + goto Usage +) + +if "%files%"=="" ( + rem Don't report an error -- this happens normally in some configurations + echo # No files specified for dependency generataion + goto End +) + +rem Then get the dependencies for each file + +if "%altpath%"=="" goto NoPaths +for %%G in (%files%) do ( + set fullpath= + set file=%%G + call :Checkpaths + if "%debug%"=="y" echo %file%: fullpath=%fullpath% + if "%fullpath%"=="" goto :NoFile + if "%debug%"=="y" echo CMD: %cc% -M %cflags% %fullpath% + %cc% -M %cflags% %fullpath% || goto DepFail +) +goto :End + +:NoPaths +for %%G in (%files%) do ( + set fullpath= + set file=%%G + call :CheckFile %%G +) +goto :End + +:CheckFile +if "%debug%"=="y" echo Checkfile: Checking %file% +if not exist %file% goto :NoFile +set fullpath=%file% + if "%debug%"=="y" echo CMD: %cc% -M %cflags% %fullpath% +%cc% -M %cflags% %fullpath% || goto DepFail +goto :EOF + +:CheckPaths +for %%H in (%altpath%) do ( + set tmppath=%%H\%file% + if "%debug%"=="y" echo Checkfile: Checking %tmppath% + if exist %tmppath% ( + set fullpath=%tmppath% + goto :EOF + ) +) +goto :EOF + +:NoFile +echo ERROR: No readable file at %file% +goto Usage + +:DepFail +echo ERROR: Failed to created dependencies for %file% + +:Usage +echo Usage: mkdeps [OPTIONS] CC -- CFLAGS -- file [file [file...]] +echo Where: +echo CC +echo A variable number of arguments that define how to execute the compiler +echo CFLAGS +echo The compiler compilation flags +echo file +echo One or more C files whose dependencies will be checked. Each file is expected +echo to reside in the current directory unless --dep-path is provided on the command line +echo And [OPTIONS] include: +echo --dep-debug +echo Enable script debug +echo --dep-path ^ +echo Do not look in the current directory for the file. Instead, look in to see +echo if the file resides there. --dep-path may be used multiple times to specify +echo multiple alternative location +echo --help +echo Shows this message and exits + +:End diff --git a/nuttx/tools/mkdeps.c b/nuttx/tools/mkdeps.c new file mode 100644 index 000000000..1822dc957 --- /dev/null +++ b/nuttx/tools/mkdeps.c @@ -0,0 +1,599 @@ +/**************************************************************************** + * tools/mkdeps.c + * + * Copyright (C) 2012 Gregory Nutt. All rights reserved. + * Author: Gregory Nutt + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * 3. Neither the name NuttX nor the names of its contributors may be + * used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE + * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, + * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS + * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED + * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN + * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + * + ****************************************************************************/ + +/**************************************************************************** + * Included Files + ****************************************************************************/ + +#include + +#include +#include +#include +#include +#include +#include +#include + +/**************************************************************************** + * Pre-processor Definitions + ****************************************************************************/ + +#define MAX_COMMAND 256 +#ifndef MAX_PATH +# define MAX_PATH 4096 +#endif +#define MAX_BUFFER (MAX_COMMAND + MAX_PATH + 2) + +/**************************************************************************** + * Private Types + ****************************************************************************/ + +enum slashmode_e +{ + MODE_FSLASH = 0, + MODE_BSLASH = 1, + MODE_DBLBACK = 2 +}; + +/**************************************************************************** + * Private Data + ****************************************************************************/ + +static char *g_cc = NULL; +static char *g_cflags = NULL; +static char *g_files = NULL; +static char *g_altpath = NULL; +static int g_debug = 0; +static bool g_winnative = false; +#ifdef HAVE_WINPATH +static bool g_winpath = false; +static char *g_topdir = NULL; +#endif + +/**************************************************************************** + * Private Functions + ****************************************************************************/ + +static void append(char **base, char *str) +{ + char *oldbase; + char *newbase; + int alloclen; + + oldbase = *base; + if (!oldbase) + { + newbase = strdup(str); + if (!newbase) + { + fprintf(stderr, "ERROR: Failed to strdup %s\n", str); + exit(EXIT_FAILURE); + } + } + else + { + alloclen = strlen(newbase) + strlen(str) + 2; + newbase = (char *)malloc(alloclen); + if (!newbase) + { + fprintf(stderr, "ERROR: Failed to allocate %d bytes\n", alloclen); + exit(EXIT_FAILURE); + } + + snprintf(newbase, alloclen, "%s %s\n", oldbase, str); + free(oldbase); + } + + *base = newbase; +} + +static void show_usage(const char *progname, const char *msg, int exitcode) +{ + if (msg) + { + fprintf(stderr, "\n"); + fprintf(stderr, "%s:\n", msg); + } + + fprintf(stderr, "\n"); + fprintf(stderr, "%s [OPTIONS] CC -- CFLAGS -- file [file [file...]]\n", progname); + fprintf(stderr, "\n"); + fprintf(stderr, "Where:\n"); + fprintf(stderr, " CC\n"); + fprintf(stderr, " A variable number of arguments that define how to execute the compiler\n"); + fprintf(stderr, " CFLAGS\n"); + fprintf(stderr, " The compiler compilation flags\n"); + fprintf(stderr, " file\n"); + fprintf(stderr, " One or more C files whose dependencies will be checked. Each file is expected\n"); + fprintf(stderr, " to reside in the current directory unless --dep-path is provided on the command line\n"); + fprintf(stderr, "\n"); + fprintf(stderr, "And [OPTIONS] include:\n"); + fprintf(stderr, " --dep-debug\n"); + fprintf(stderr, " Enable script debug\n"); + fprintf(stderr, " --dep-path \n"); + fprintf(stderr, " Do not look in the current directory for the file. Instead, look in to see\n"); + fprintf(stderr, " if the file resides there. --dep-path may be used multiple times to specify\n"); + fprintf(stderr, " multiple alternative location\n"); + fprintf(stderr, " --winnative\n"); + fprintf(stderr, " By default, a POSIX-style environment is assumed (e.g., Linux, Cygwin, etc.) This option is\n"); + fprintf(stderr, " inform the tool that is working in a pure Windows native environment.\n"); +#ifdef HAVE_WINPATH + fprintf(stderr, " --winpaths \n"); + fprintf(stderr, " This option is useful when using a Windows native toolchain in a POSIX environment (such\n"); + fprintf(stderr, " such as Cygwin). In this case, will CC generates dependency lists using Windows paths\n"); + fprintf(stderr, " (e.g., C:\\blablah\\blabla). This switch instructs the script to use 'cygpath' to convert\n"); + fprintf(stderr, " the Windows paths to Cygwin POSIXE paths.\n"); +#endif + fprintf(stderr, " --help\n"); + fprintf(stderr, " Shows this message and exits\n"); + exit(exitcode); +} + +static void parse_args(int argc, char **argv) +{ + char *args = NULL; + int argidx; + + /* Accumulate CFLAGS up to "--" */ + + for (argidx = 1; argidx < argc; argidx++) + { + if (strcmp(argv[argidx], "--") == 0) + { + g_cc = g_cflags; + g_cflags = args; + args = NULL; + } + else if (strcmp(argv[argidx], "--dep-debug") == 0) + { + g_debug++; + } + else if (strcmp(argv[argidx], "--dep-path") == 0) + { + argidx++; + if (argidx >= argc) + { + show_usage(argv[0], "ERROR: Missing argument to --dep-path", EXIT_FAILURE); + } + + if (args) + { + append(&args, argv[argidx]); + } + else + { + append(&g_altpath, argv[argidx]); + } + } + else if (strcmp(argv[argidx], "--winnative") == 0) + { + g_winnative = true; + } +#ifdef HAVE_WINPATH + else if (strcmp(argv[argidx], "--winpath") == 0) + { + g_winpath = true; + if (g_topdir) + { + free(g_topdir); + } + + argidx++; + if (argidx >= argc) + { + show_usage(argv[0], "ERROR: Missing argument to --winpath", EXIT_FAILURE); + } + + g_topdir = strdup(argv[argidx]); + } +#endif + else if (strcmp(argv[argidx], "--help") == 0) + { + show_usage(argv[0], NULL, EXIT_SUCCESS); + } + else + { + append(&args, argv[argidx]); + } + } + + /* The final thing accumulated is the list of files */ + + g_files = args; + + /* If no paths were specified, then look in the current directory only */ + + if (!g_altpath) + { + g_altpath = strdup("."); + } + + if (g_debug) + { + fprintf(stderr, "SELECTIONS\n"); + fprintf(stderr, " CC : \"%s\"\n", g_cc ? g_cc : "(None)"); + fprintf(stderr, " CFLAGS : \"%s\"\n", g_cflags ? g_cflags : "(None)"); + fprintf(stderr, " FILES : \"%s\"\n", g_files ? g_files : "(None)"); + fprintf(stderr, " PATHS : \"%s\"\n", g_altpath ? g_altpath : "(None)"); +#ifdef HAVE_WINPATH + fprintf(stderr, " Windows Paths : \"%s\"\n", g_winpath ? "TRUE" : "FALSE"); + if (g_winpath) + { + fprintf(stderr, " TOPDIR : \"%s\"\n", g_topdir); + } +#endif + fprintf(stderr, " Windows Native : \"%s\"\n", g_winnative ? "TRUE" : "FALSE"); + } + + /* Check for required paramters */ + + if (!g_cc) + { + show_usage(argv[0], "ERROR: No compiler specified", EXIT_FAILURE); + } + + if (!g_files) + { + /* Don't report an error -- this happens normally in some configurations */ + + printf("# No files specified for dependency generataion\n"); + exit(EXIT_SUCCESS); + } + +#ifdef HAVE_WINPATH + if (g_winnative && g_winpath) + { + show_usage(argv[0], "ERROR: Both --winnative and --winpapth makes no sense", EXIT_FAILURE); + } +#endif +} + +static void do_dependency(const char *file, char separator) +{ + static const char moption[] = " -M "; + char command[MAX_BUFFER]; + struct stat buf; + char *altpath; + char *path; + char *bufptr; + int cmdlen; + int pathlen; + int filelen; + int totallen; + int ret; + + /* Copy the compiler into the command buffer */ + + cmdlen = strlen(g_cc); + if (cmdlen >= MAX_BUFFER) + { + fprintf(stderr, "ERROR: Compiler string is too long: %s\n", path); + exit(EXIT_FAILURE); + } + + strcpy(command, g_cc); + + /* Copy " -M " */ + + cmdlen += strlen(moption); + if (cmdlen >= MAX_BUFFER) + { + fprintf(stderr, "ERROR: Option string is too long: %s\n", moption); + exit(EXIT_FAILURE); + } + + strcat(command, moption); + + /* Copy the CFLAGS into the command buffer */ + + cmdlen += strlen(g_cflags); + if (cmdlen >= MAX_BUFFER) + { + fprintf(stderr, "ERROR: CFLAG string is too long: %s\n", g_cflags); + exit(EXIT_FAILURE); + } + + strcat(command, g_cflags); + + /* Add a space */ + + command[cmdlen] = ' '; + command[cmdlen+1] = '\0'; + cmdlen++; + + /* Try each path. This loop will continue until each path has been tried + * (failure) or until stat() finds the file + */ + + altpath = g_altpath; + while ((path = strtok(altpath, " ")) != NULL) + { + /* Create a full path to the file */ + + pathlen = strlen(path); + totallen = cmdlen + pathlen; + if (totallen >= MAX_BUFFER) + { + fprintf(stderr, "ERROR: Path is too long: %s\n", path); + exit(EXIT_FAILURE); + } + + strcpy(&command[cmdlen], path); + + if (command[totallen] != '\0') + { + fprintf(stderr, "ERROR: Missing NUL terminator\n", path); + exit(EXIT_FAILURE); + } + + if (command[totallen-1] != separator) + { + command[totallen] = separator; + command[totallen+1] = '\0'; + pathlen++; + totallen++; + } + + filelen = strlen(file); + totallen += filelen; + if (totallen >= MAX_BUFFER) + { + fprintf(stderr, "ERROR: Path+file is too long\n"); + exit(EXIT_FAILURE); + } + + strcat(command, file); + + /* Check that a file actually exists at this path */ + + ret = stat(command, &buf); + if (ret < 0) + { + altpath = NULL; + continue; + } + + if (!S_ISREG(buf.st_mode)) + { + fprintf(stderr, "ERROR: File %s exists but is not a regular file\n"); + exit(EXIT_FAILURE); + } + + /* Okay.. we have. Create the dependency */ + + ret = system(command); + if (ret != 0) + { + fprintf(stderr, "ERROR: ssystem(%s) failed\n"); + exit(EXIT_FAILURE); + } + + /* We don't really know that the command succeeded... Let's assume that it did */ + + return; + } + + printf("# ERROR: No readable file for \"%s\" found at any location\n", file); + exit(EXIT_FAILURE); +} + +/* Convert a Cygwin path to a Windows path */ + +#ifdef HAVE_WINPATH +static char *cywin2windows(const char *str, const char *append, enum slashmode_e mode) +{ + static const char cygdrive[] = "/cydrive"; + const char *src = src; + char *dest; + char *newpath; + char *allocpath = NULL; + int srclen = strlen(str); + int alloclen = 0; + int drive = 0; + int lastchar; + + /* Skip any leading whitespace */ + + while (isspace(*str)) str++; + + /* Were we asked to append something? */ + + if (append) + { + char *tmp; + + alloclen = sizeof(str) + sizeof(append) + 1; + allocpath = (char *)malloc(alloclen); + if (!allocpath) + { + fprintf(stderr, "ERROR: Failed to allocate %d bytes\n", alloclen); + exit(EXIT_FAILURE); + } + + snprintf(allocpath, alloclen, "%s/%s", str, append); + } + + /* Looking for path of the form /cygdrive/c/bla/bla/bla */ + + if (strcasecmp(src, cygdrive) == 0) + { + int cygsize = sizeof(cygdrive); + if (src[cygsize] == '/') + { + cygsize++; + srclen -= cygsize; + src += cygsize; + + if (srclen <= 0) + { + fprintf(stderr, "ERROR: Unhandled path: \"%s\"\n", str); + exit(EXIT_FAILURE); + } + + drive = toupper(*src); + if (drive < 'A' || drive > 'Z') + { + fprintf(stderr, "ERROR: Drive charager: \"%s\"\n", str); + exit(EXIT_FAILURE); + } + + srclen--; + src++; + alloclen = 2; + } + } + + /* Determine the size of the new path */ + + alloclen += sizeof(src) + 1; + if (mode == MODE_DBLBACK) + { + const char *tmpptr; + for (tmpptr = src; *tmpptr; tmpptr++) + { + if (*tmpptr == '/') alloclen++; + } + } + + /* Allocate memory for the new path */ + + newpath = (char *)malloc(alloclen); + if (!newpath) + { + fprintf(stderr, "ERROR: Failed to allocate %d bytes\n", alloclen); + exit(EXIT_FAILURE); + } + + dest = newpath; + + /* Copy the drive character */ + + if (drive) + { + *dest++ = drive; + *dest++ = ':'; + } + + /* Copy each character from the source, making modifications for foward slashes as required */ + + lastchar = '\0'; + for (; *src; src++) + { + if (mode != MODE_FSLASH && *src == '/') + { + if (lastchar != '/') + { + *dest++ = '\\'; + if (mode == MODE_DBLBACK) + { + *dest++ = '\\'; + } + } + } + else + { + *dest++ = *src; + } + + lastchar = *src; + } + + *dest++ = '\0'; + if (allocpath) + { + free(allocpath); + } + return dest; +} +#endif + +#ifdef HAVE_WINPATH +static void do_winpath(char *file) +{ + /* The file is in POSIX format. CC expects Windows format to generate the + * dependencies, but GNU make expect the resulting dependencies to be back + * in POSIX format. What a mess! + */ + + char *path = cywin2windows(g_topdir, file, MODE_FSLASH); + + /* Then get the dependency and perform conversions on it to make it + * palatable to the Cygwin make. + */ +#warning "Missing logic" + + free(path); +} +#endif + +/**************************************************************************** + * Public Functions + ****************************************************************************/ + +int main(int argc, char **argv, char **envp) +{ + char *files; + char *file; + + /* Parse command line parameters */ + + parse_args(argc, argv); + + /* Then generate dependencies for each path on the command line */ + + files = g_files; + while ((file = strtok(files, " ")) != NULL) + { + /* Check if we need to do path conversions for a Windows-natvie tool + * being using in a POSIX/Cygwin environment. + */ + +#ifdef HAVE_WINPATH + if (g_winpath) + { + do_winpath(file); + } + else +#endif + { + do_dependency(file, g_winnative ? '\\' : '/'); + } + + files = NULL; + } + + return EXIT_SUCCESS; +} diff --git a/nuttx/tools/mkdeps.sh b/nuttx/tools/mkdeps.sh index acb600150..028fd1d9f 100755 --- a/nuttx/tools/mkdeps.sh +++ b/nuttx/tools/mkdeps.sh @@ -2,7 +2,7 @@ ############################################################################ # tools/mkdeps.sh # -# Copyright (C) 2007-2009, 2011 Gregory Nutt. All rights reserved. +# Copyright (C) 2007-2009, 2011-2012 Gregory Nutt. All rights reserved. # Author: Gregory Nutt # # Redistribution and use in source and binary forms, with or without -- cgit v1.2.3