summaryrefslogtreecommitdiff
path: root/nuttx/tools
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/tools')
-rw-r--r--nuttx/tools/README.txt28
-rwxr-xr-xnuttx/tools/copydir.bat102
-rwxr-xr-xnuttx/tools/copydir.sh (renamed from nuttx/tools/winlink.sh)2
-rwxr-xr-xnuttx/tools/link.bat89
-rwxr-xr-xnuttx/tools/unlink.bat71
5 files changed, 282 insertions, 10 deletions
diff --git a/nuttx/tools/README.txt b/nuttx/tools/README.txt
index 68b85dc4f..2b9ac61f4 100644
--- a/nuttx/tools/README.txt
+++ b/nuttx/tools/README.txt
@@ -369,8 +369,11 @@ incdir.bat
that context: MinGW-GCC.
link.sh
-winlink.sh
+link.bat
+copydir.sh
+copydir.bat
unlink.sh
+unlink.bat
----------
Different file system have different capabilities for symbolic links.
@@ -390,18 +393,25 @@ unlink.sh
default. link.sh is a bash script that performs a normal, Linux-style
symbolic link; unlink.sh is a do-it-all unlinking script.
- But if you are building under cygwin using a Windows native toolchain,
- then you will need something like the following in you Make.defs file:
+ But if you are building under cygwin using a Windows native toolchain
+ within a POSIX framework (such as Cygwin), then you will need something
+ like the following in you Make.defs file:
- DIRLINK = $(TOPDIR)/tools/winlink.sh
+ DIRLINK = $(TOPDIR)/tools/copydir.sh
DIRUNLINK = (TOPDIR)/tools/unlink.sh
- winlink.sh will copy the whole directory instead of linking it.
+ copydir.sh will copy the whole directory instead of linking it.
- NOTE: I have been told that some NuttX users have been able to build
- successfully using the GnuWin32 tools and modifying the link.sh
- script so that it uses the NTFS mklink command. But I have never
- tried that
+ Finally, if you are running in a pure native Windows environment with
+ a CMD.exe shell, then you will need something like this:
+
+ DIRLINK = $(TOPDIR)/tools/copydir.bat
+ DIRUNLINK = (TOPDIR)/tools/unlink.bat
+
+ Note that this will copy directories. ;ink.bat might also be used in
+ this case. link.bat will attempt to create a symbolic link using the
+ NTFS mklink.exe command instead of copying files. That logic, however,
+ has not been verified as of this writing.
mkimage.sh
----------
diff --git a/nuttx/tools/copydir.bat b/nuttx/tools/copydir.bat
new file mode 100755
index 000000000..2857c415f
--- /dev/null
+++ b/nuttx/tools/copydir.bat
@@ -0,0 +1,102 @@
+@echo off
+
+rem tools/copydir.bat
+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
+
+rem
+rem NuttX uses symbolic links to configure platform-specific directories into
+rem the build system. This works great except for when a Windows native
+rem toolchain is used in a Cygwin environment. In that case, symbolic
+rem links do not work correctly when accessed from the Windows native toolchain;
+rem rather, just look link files with the extension .lnk
+rem
+rem In this environment, the build system will work around this using this script
+rem as a replacement for the 'ln' command. This scrpt will simply copy the
+rem directory into the expected positiion.
+rem
+
+set src=%1
+set dest=%2
+
+rem Verify that arguments were provided
+
+if "%src%"=="" goto :MissingSrc
+if "%dest%"=="" goto :MissingDest
+goto CheckSrc
+
+:MissingSrc
+
+echo Missing ^<src^> and ^<dest^> arguments
+goto :ShowUsage
+
+:MissingDest
+
+echo Missing ^<dest^> arguments
+goto :ShowUsage
+
+rem Verify that a directory exists at the source path
+
+:CheckSrc
+
+if exist %src% goto :CheckDest
+
+echo No directory at %src%
+goto :ShowUsage
+
+:CheckDest
+
+rem If something already exists at the destination path, remove it
+
+if not exist %dest% goto :CopyDir
+
+rmdir /q /s %dest%
+if errorlevel 1 (
+ echo Failed to remove existing object at %dest%
+ goto :ShowUsage
+)
+
+rem Copy the directory
+
+:CopyDir
+
+xcopy %src% %dest% /c /q /s /e /y /i
+echo FAKELNK > %dest%\.fakelnk
+goto :End
+
+:ShowUsage
+echo USAGE: %0 ^<src^> ^<dest^>
+echo Where:
+echo ^<src^> is the source directory to be copied
+echo ^<dest^> is the destination directory to be created
+
+:End
diff --git a/nuttx/tools/winlink.sh b/nuttx/tools/copydir.sh
index f79eda2bd..5d9f79002 100755
--- a/nuttx/tools/winlink.sh
+++ b/nuttx/tools/copydir.sh
@@ -1,6 +1,6 @@
#!/bin/bash
############################################################################
-# tools/winlink.sh
+# tools/copydir.sh
#
# Copyright (C) 2008 Gregory Nutt. All rights reserved.
# Author: Gregory Nutt <gnutt@nuttx.org>
diff --git a/nuttx/tools/link.bat b/nuttx/tools/link.bat
new file mode 100755
index 000000000..434574ee3
--- /dev/null
+++ b/nuttx/tools/link.bat
@@ -0,0 +1,89 @@
+@echo off
+
+rem tools/link.bat
+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
+
+set src=%1
+set link=%2
+
+rem Verify that arguments were provided
+
+if "%src%"=="" goto :MissingSrc
+if "%link%"=="" goto :MissingLink
+goto CheckSrc
+
+:MissingSrc
+
+echo Missing ^<src^> and ^<link^> arguments
+goto :ShowUsage
+
+:MissingLink
+
+echo Missing ^<link^> arguments
+goto :ShowUsage
+
+rem Verify that a directory exists at the source path
+
+:CheckSrc
+
+if exist %src% goto :CheckLink
+
+echo No directory at %src%
+goto :ShowUsage
+
+:CheckLink
+
+rem If something already exists at the destination path, remove it
+
+if not exist %link% goto :MkLink
+
+rmdir /q /s %link%
+if errorlevel 1 (
+ echo Failed to remove existing object at %link%
+ goto :ShowUsage
+)
+
+rem Copy the directory
+
+:MkLink
+
+/user:administrator mklink /d %src% %link%
+goto :End
+
+:ShowUsage
+echo USAGE: %0 ^<src^> ^<link^>
+echo Where:
+echo ^<src^> is the source directory to be linked
+echo ^<link^> is the link to be created
+
+:End
diff --git a/nuttx/tools/unlink.bat b/nuttx/tools/unlink.bat
new file mode 100755
index 000000000..25e83bb9f
--- /dev/null
+++ b/nuttx/tools/unlink.bat
@@ -0,0 +1,71 @@
+@echo off
+
+rem tools/unlink.bat
+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
+
+rem Verify that arguments were provided
+
+set link=%1
+if "%link%"=="" goto :MissingArgument
+
+rem Check if something already exists at the link path
+
+if exist "%link%" goto :LinkExists
+
+echo %link% does not exist
+goto :ShowUsage
+
+rem %link% make be a symbolic link or it may be a copied director (with
+rem a .fakelnk file in it). It really does not matter which: We do the
+rem same thing in either case
+
+:LinkExists
+
+rmdir /q /s %link%
+if errorlevel 1 (
+ echo Failed to remove existing object at %link%
+ goto :ShowUsage
+)
+
+goto :End
+
+:MissingArgument
+
+echo Missing Argument
+
+:ShowUsage
+echo USAGE: %0 ^<link^>
+echo Where:
+echo ^<link^> is the linked (or copied) directory to be removed
+
+:End