Add tools/mkdeps.bat and tools/mkdeps.c
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@5342 42af7a65-404d-4744-a932-0658087f49c3
This commit is contained in:
parent
4aa5fab17f
commit
8f47445bd5
@ -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.
|
||||
|
@ -2971,8 +2971,6 @@ avr, m68k, m68hc11, m68hc12, m9s12, blackfin, m32c, h8, and SuperH ports.</block
|
||||
<p><small>
|
||||
NOTE: dependencies are suppress by setting the make variable <code>MKDEPS</code> to point
|
||||
to the do-nothing dependency script, <code>tools/mknulldeps.sh</code>.
|
||||
Dependencies can be enabled for the Windows native GCC compilers by setting
|
||||
<code>MKDEPS</code> to point to <code>$(TOPDIR)/tools/mkdeps.sh --winpaths $(TOPDIR)</code>.
|
||||
</small></p>
|
||||
</ul>
|
||||
<p>
|
||||
|
16
README.txt
16
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
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
-----------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
-----------------------------------
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
========================
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
==========================
|
||||
|
@ -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
|
||||
==================
|
||||
|
@ -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
|
||||
==================
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
-----------------------------------
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
-----------------------------------
|
||||
|
@ -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 <subdir> 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.
|
||||
Contributed by Max Holtzberg.
|
||||
|
@ -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)
|
||||
-----------------------------------
|
||||
|
@ -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)
|
||||
-----------------------------------
|
||||
|
@ -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)
|
||||
|
@ -1,3 +1,5 @@
|
||||
@echo off
|
||||
|
||||
rem configs/stm32f4discovery/winbuild/setenv.sh
|
||||
rem
|
||||
rem Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
|
@ -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
|
||||
==========================
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
==========================
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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-
|
||||
|
173
tools/mkdeps.bat
Normal file
173
tools/mkdeps.bat
Normal file
@ -0,0 +1,173 @@
|
||||
@echo off
|
||||
|
||||
rem tools/mkdeps.sh
|
||||
rem
|
||||
rem Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
rem Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
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 ^<path^>
|
||||
echo Do not look in the current directory for the file. Instead, look in <path> 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
|
599
tools/mkdeps.c
Normal file
599
tools/mkdeps.c
Normal file
@ -0,0 +1,599 @@
|
||||
/****************************************************************************
|
||||
* tools/mkdeps.c
|
||||
*
|
||||
* Copyright (C) 2012 Gregory Nutt. All rights reserved.
|
||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||
*
|
||||
* 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 <sys/stat.h>
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
|
||||
/****************************************************************************
|
||||
* 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 <path>\n");
|
||||
fprintf(stderr, " Do not look in the current directory for the file. Instead, look in <path> 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 <TOPDIR>\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;
|
||||
}
|
@ -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 <gnutt@nuttx.org>
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
|
Loading…
Reference in New Issue
Block a user