by define _FILE_OFFSET_BITS to 64 described here:
https://man7.org/linux/man-pages/man2/stat.2.html
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I19c079294b79a541fbcc0bf5acbf7377067acf98
Summary:
- I noticed that call stack for Cortex-M3 was incorrect
- This commit fixes this issue
Impact:
- Affects nuttx-gdbinit for armv7-m without FPU
Testing:
- Tested with lm3s6965-ek:discover (qemu)
- Tested with spresense:wifi
- Tested with sim
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Commit 34b34e2d45 uses the full path to libapps.a and introduced the use of the Make notdir command. That command breaks the Cygwin build because when a native Windows toolchain is used, the full path to libapps.a is a Windows-sytle path and the Make notdir command (like most other GNU Make commands) fails if it is passed a Windows-style path. This commit replaces the Make notdir command with the Bash basename command which can handle Windows paths.
This works by having the build system look for nuttx/external/Kconfig
to determine whether this directory is present or not. nuttx/external
is gitignored in order to be added by the final user but not to be
commited into the repo. Tipically this will by a symbolic link, just like
apps/external.
Inside external/ a Makefile should be placed with the same structure
than any nuttx/ subdirectory (eg: nuttx/drivers/). The
nuttx/external/Kconfig will be sourced and any options defined there will
appear at the bottom of menuconfig (unless options are conditioned on
menus, in which case they will appear accordingly).
The purpose is to allow arch/board independent code, which for any
reason is not to be upstreamed (propietary, not relevant for mainline,
testing, etc), to be built into the OS during OS building stage. This
way the user does not need to fork the NuttX repo to do so. This feature
complements well with external apps and custom board support.
In some cases, when NuttX configuration changes and this makes the
object list used to build one of the .a libraries change as well,
since the command used to build it is "ar crs" and this simply appends
the list of object files, the library could still include object
files from prior builds. This commit modifies the ARCHIVE macro to
erase the .a file if it already exists.
Since in some cases this behavior was actually expected (object
files from a subdirectory were appended to a library created one
level above) I added a ARCHIVE_ADD which works as ARCHIVE did.
This change should greatly improve behavior of building after
configuration changes.
1.Reduce the default size of task_group_s(~512B each task)
2.Scale better between simple and complex application
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ia872137504fddcf64d89c48d6f0593d76d582710
Summary:
- This commit enables nuttx thread debugging without openocd-nuttx
- To use this script, gdb must support python
- To show all thread, use 'info_nxthreads'
- To switch thread, use 'nxthread pid'
- To continue, use 'nxcontinue'
Impact:
- No impact
Testing:
- Tested with spresense (Cortex-M4F), sim (x86_64), lm3s6965-ek (Cortex-M3)
- Tested with GNU Tools for Arm Embedded Processors 9-2019-q4-major
- Tested with GNU gdb (Ubuntu 8.1-0ubuntu3.2) 8.1.0.20180409-git
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
since it isn't used anymore after:
commit bd656888f2
Author: Xiang Xiao <xiaoxiang@xiaomi.com>
Date: Mon May 18 22:18:15 2020 +0800
build: Replace WINTOOL with CYGWIN_WINTOOL Kconfig
so the correct value can be determinated by Kconfig system automatically
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
configuration changes
According to the usage documentation, [-e] option should "enforce
distclean if already configured". This behavior was broken due to the -e
option being evaluated only if the current defconfig is different from
the backup defconfig. The new -E command inherits this behavior.
it is useful to pass the nonempty argument to change the init task behaviour
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I684e9c76b9eac54404d0e4e63ab78e51e039c9a8
This will resolve numerous problems with the way that hard links, in particular "." and ".." are handled. Instead of trying to fudge the stat flags, the correct implementation is to follow the hard link to the final link target node. That is what must determine the attributes of the directory entry.
PR 1372 vfs/stat: Make the flag defintion more confirm POSIX
standard. Silently broke the cromfs. This was due to the
necessary replication of the S_xxxx flags of the NuttX
sys/stat.h. The unfortunate outcome was most likely caused by
fact, that a grep of S_xxxx did not match the tools/gencromfs.c
To insure this sort of thing does not happen again, comments
have been added the will match search.
custom board.
Custom boards don't set CONFIG_ARCH_BOARD since the full path is given
during configuration.
Furthermore this creates problems when when referencing other
folders using BOARD_DIR because a trailing DELIM will be present.
Since testbuild.sh called by nightly build and check build, it should
suppress logs from configure stage to keep all output clean.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
Make.defs under board folder can still overwrite the default as needed
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: I1c300a8ace4b54d475ef8d398661ed65ca273a2e
so all boards support uClibc++/libc++ automatically
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ibe6fafbec57f7acb26ea6188a3e9923ea82295c5
Squashed commit of the following:
commit 40b788f8a0e79aa90734813a557c17f90fb9cdbe
Author: Adam Feuer <adam@adamfeuer.com>
Date: Sat Jul 4 14:45:13 2020 -0700
updated license header to APL 2.0; updated usage
commit 81984aeeb503d90f30cb1d0c62a888e2a23235ed
Author: Adam Feuer <adam@adamfeuer.com>
Date: Thu Jul 2 18:32:05 2020 -0700
move tar.gz files to current dir
- for convenience, so user can untar them and build
commit e1a3100402e39703ea08daa16e2388d4572413dc
Author: Adam Feuer <adam@adamfeuer.com>
Date: Wed Jul 1 13:17:37 2020 -0700
added trap; copyright header; can take release name
- instead of URL, optionally
commit e0109214c5b887b4b662120ce59c59520d8a5918
Author: Adam Feuer <adam@adamfeuer.com>
Date: Wed Jul 1 12:54:54 2020 -0700
trap and remove tempfile; set -e to catch errors
commit 196dc4ca4285b821cce644561296a2034e9a671e
Author: Adam Feuer <adam@adamfeuer.com>
Date: Wed Jul 1 12:15:01 2020 -0700
using wget recursive and cut-dir to download files
- as per PR feedback
commit 127c22bbc14cabe2a59b238b75c21711b000e41b
Author: Adam Feuer <adam@adamfeuer.com>
Date: Wed Jul 1 11:35:01 2020 -0700
intial addition
enhance the post build can support configurable BIN directory
Change-Id: I64f286b6eb5ed77e91b67a27d815d62c345ac589
Signed-off-by: chao.an <anchao@xiaomi.com>
post build processing is also necessary for import compilation
Change-Id: Ie27e25b84e2212e9c86358c30ca1a5b7c2adffc5
Signed-off-by: chao.an <anchao@xiaomi.com>
use LDNAME instead of LDSCRIPT to avoid invalid native path
exported to the import build
Change-Id: I1ba3cfdbfca02447941dc32a292fe4d76c1ced04
Signed-off-by: chao.an <anchao@xiaomi.com>
To avoid overriding of objects with duplicate file name
Change-Id: I83c964d161d23942cd3fc29eb738da44775cfc10
Signed-off-by: chao.an <anchao@xiaomi.com>
mkdeps uses system() thus a shell to execute cc.
it doesn't work if you have something like
CFLAGS += -DMBEDTLS_USER_CONFIG_FILE="<mbedtls/user_config.h>"
because the shell interprets "<" as a redirect.
to fix it, we should do either
* make it shell-quote arguments
* or, stop using system()
this commit implements the former.
some platforms provide easy ways to do the former.
eg. https://netbsd.gw.com/cgi-bin/man-cgi?shquote++NetBSD-current
but unfortunately none of them seems available widely.
i guess the latter approach is more common.
eg. 4464250282/usr.bin/mkdep/mkdep.c (L137-L154)
but i might be a burden for windows. (i don't know)
arch/z80/src/Makefile: Correct inclusion of non-existent file. This was not a problem before because there was '-' before the include. Problem revealed with '-' removed.
arch/z80/src/ez80/Toolchain.defs: Apparently there are not too many '"' in path definition.
tools/incdir.c: No space between -usrinc: or -sysinc: and the list of paths.
Before any other Make logic can be used, we must immediately build the tools/incdir binary. It will be used as soon as Make.defs is included and will generate errors otherwise.
Remove the other locations in the tools/incdir binary was being build from tools/Makefile.unix and tools/Makefile.win
1. If config.c is compiled on any platform other than Cygwin, then the variable wintools is not used.
2. Add more debug output so we can see what is going on in the PR checks.
Also call configure.sh with JOPTION to enable parallel build
Change-Id: I32c4e77fb30c40d8d424159cc0871b8c3e3f10b6
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
As in https://github.com/apache/incubator-nuttx/issues/1114 discuss, let
EXTRA_FLAGS="EXTRAFLAGS=" defaultly to avoid testbuild.sh called without
-e option fail issue. It also works well with -e "-Wno-cpp -Werror".
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
Use absolute path for APPDIR which could be used by apps clean
and distclean subdir build. Parallel clean and distclean subdir
could save more build time.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
In the past a very low effort interface was used:
- All parmeters were treated as though they were type uinptr_t, and
- The maximum number of parmeters (6) was passed in all cases.
The first is potentially wrong and the second is very inefficient. This commit improves this by:
- Making tools/mksyscall.c more intelligent, and
- Extending the syntax for variadic functions.
For example, in syscall.cvs, the open() API was represened like this:
"open","fcntl.h","","int","const char*","int","..."
In reality, open may take only a single optional argument of type mode_t which is not the same size as uintptr_t. And there is not reason to pass 6 parameters in that case.
And this has been extended to:
"open","fcntl.h","","int","const char*","int","...","mode_t"
The existence of the "mode_t" tells tools/mksyscall that there is at most one optional parameter and, if present, it is of type mode_t.
There is case as below:
When do testbuild under Linux host, such as './tools/configure.sh stmf4discovery:nsh',
arch/arm/src/board is a symlink to boards/arm/stm32/stm32f3discovery/src. Then do
'./tools/refresh.sh --silent stmf4discovery:nsh' after build, it would break the board
symlink with copydir.sh instead of link.sh since defconfig with Windows host config.
So call sethost.sh to restore BOARD_DIR. Or it results in 'make distclean' not correctly.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
In an older PR, the standard kconfig-tweak calls were replaced with sed edit. This is an incorrect change and results in invalid configurations. This change restores the use of kconfig-tweak and always generates correct configurations.
This change resolves issue #386
sed edits do not handle all of the dependencies correct and generates invalid configurations. Most defconfig files specify Linux by default, so you will only see the effect of the corruped configuration when sethost changes changes to a different configuration. Then, when 'make olddefconfig' is subsequentyly run, the corruption in the defconfig file is reflected by warnings such as:
$ tools/configure.sh -c stm32f4discovery:nsh
Copy files
Select CONFIG_HOST_WINDOWS=y
Select CONFIG_WINDOWS_CYGWIN=y
Refreshing...
.config:62:warning: override: reassigning to symbol HOST_WINDOWS
.config:62:warning: override: HOST_WINDOWS changes choice state
Those warnings are eliminated by this changed.
Tested by repeatedly doing:
tools/configure.sh -c stm32f4discovery:nsh
Commit 3b9efc95a2 introduced an error in the generation of include file paths. The logic that determined if cygpath should be called to create a Windows native path for the case of Cygwin using a native toolchain was incorrect. This corrects this warning:
./tools/configure.sh -c sim:nsh
$ make
<CUT>
make[1]: Entering directory '/home/btashton/apache/apps'
make[2]: Entering directory '/home/btashton/apache/apps/builtin'
./exec_builtin.c:54:10: fatal error: builtin/builtin.h: No such file or directory
54 | #include "builtin/builtin.h"
| ^~~~~~~~~~~~~~~~~~~
compilation terminated.
ERROR: cc failed: 1
command: cc -MT ./exec_builtin.home.btashton.apache.apps.builtin.o -M -Wall -Wstrict-prototypes -Wshadow -Wundef -g -fno-builtin -fno-common -I. -isystem /home/btashton/apache/nuttx/include -D__KERNEL__ -pipe -I C:\cygwin64\home\btashton\apache\apps\include ./exec_builtin.c
make[2]: *** [/home/btashton/apache/apps/Application.mk:224: .depend] Error 1
make[2]: Leaving directory '/home/btashton/apache/apps/builtin'
make[1]: *** [Makefile:67: /home/btashton/apache/apps/builtin_depend] Error 2
In this case a Cygwin POSIX toolchain is being used by the path in the CFLAGS to apps/include is incorrectly a Windows native path. This error is corrected by this change to tools/incdir.sh
Remove tools/logparser.c. This tool converted 'git log' output into the format used by the obsoleted ChangeLog files. Since the ChangeLog files are obsoleted, the tool servers no purpose.
Since littlefs is in active development, it's not a good idea to use its
source code files directly. So upgrade littlefs v2.2.1 by using the littlefs
tar.gz release package instead.
Change-Id: I16d9cf0b6bca700a54ca86ed11d7c8c7f27a898f
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
since source code use these config as string constant not as variable name
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Iaee3d32b100beb8b77d68711728a1e874b45ae3a
In https://github.com/apache/incubator-nuttx-apps/pull/179, there is a
removed graphics/littlevgl/lv_symbol_def.patch file whose content would be
treated abnormally and results in errors.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
Aim to let makefunc caller just pass in the target. So update makefunc to hardcode make/extra
flags options and redirection, meanwhile avoid the case in which makefunc would remove the quotes
for EXTRAFLAGS. Note that JOPTIONS should also hardcode once parallel build break finally fixed.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
Call 'tools/testbuild.sh -e -Wno-cpp testlist' would pass "EXTRAFLAGS=-Wno-cpp"
to make command line. Then it could suppress the warnings with pre-processor
directive #warning in GCC.
Change-Id: I61e5f9b3774149f64bdd625677cc9aabaa2fea90
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
So call 'make EXTRAFLAGS=-Wno-cpp' could suppress the warnings with pre-processor
directive #warning in GCC.
Change-Id: Iaa618238924c9969bf91db22117b39e6d2fc9bb6
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
and for future Apache releases.
- Rename the final tarball to add incubating and apache to their names
- Make the tool usuable from a development repo.
- Add a list of patterns(files and folders) to exclude and
a command line argument to pass aditional patterns.
- Add a command to run silently.
- If the build number was not provided let version.sh figure it out.
This resolves issue 718: nxstyle line width check was ignoring the line width check for single line comments.
This turned out to be an artifact in parsing. Usually when parsing character by character, the file character to be parsed was '/n'. Howefver, in the case of parsing single line comments, the final character was the NUL terminator. This means that the lenth check was not being performed in the case of single line comments.
NOTE: Currently, I have suppressed error reports for single line right-hand comments. My fear is that this will unmask more standard violations than we can cope with. It is easy to re-enable and perhaps we should do that in the future:
/* Check for long lines
*
* REVISIT: Long line checks suppressed on right hand comments
* for now. This just prevents a large number of difficult-to-
* fix complaints that we would have otherwise.
*/
if (m > g_maxline && !rhcomment) <-- remote the second condition
The sub-string MHz is used frequently is pre-processor variable definitions. The section "Lowercase Exceptions" permits reasonable use of lowercase characters in pre-processor variable names and, given the frequency of the use of MHz (no pun intended), it certainly should qualify.
Allow "Public Function Prototypes" sections in .c files. Per the coding standard, all public function prototypes belong in .c files. However, there are some situations when the public function prototype is needed in a .c file and it shoudld, most correctly, be placed in a "Public Function Prototypes" section.
Checking for white-listed prefixes is also simpler now because the check is table driver. New data structure: g_white_prefix[] and new function white_prefix().
In some cases, a separate toolchain is necessary to
build modules.
E.g. the sim on macOS, where the native format is Mach-O.
By default, just use CC/LD, which is appropriate for
the most of platforms.
This reverts commit b9ace36fcc.
This change was added by PR 625 but has a serious logic flaw. It removes all occurrences of INCDIROPT and replaces it with a definition in tools/Config.mk:
else ifeq ($(WINTOOL),y)
DEFINE = "$(TOPDIR)/tools/define.sh"
INCDIR = "$(TOPDIR)/tools/incdir.sh" -w
This logic flaw is the Config.mk is included in all Make.defs files BEFORE WINTOOL is defined. As a result, the definition is wrong in many places when building under Cygwin with a Windows native toolchain.
Redirect configure.sh stdout to /dev/null to suppress lots of log
since configure.sh behaviour updated.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
and fix the typo error and remove if/else nesting
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Change-Id: Ife0c80d396417e8eb37e43d0883f272d4b9247a0
Clean up the no and unknown file extension info since only .h and .c
files supported. Just ignore them quietly.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
* tools/Config.mk - Add empty definition POSTBUILD
* tools/Makefile.unix/win - Replace CXD56xx specific logic with $(call POSTBUILD)
* boards/arm/cxd56xx/scripts/Config.mk - Add POSTBUILD definitions with logic removed from Makefile.unix/win
* boards/arm/cxd56xx/spresense/scripts/Make.defs - Include the CXD56xx Config.mk immediately after tools/Config.mk so that the empty POSTBUILD definition will be replaced with the correct one
NOTE: There is a precedent for this approach. This is the way that other architecture-specific build options are implemented. See, for example, tools/zds/Config.mk
If we are going to use this tool for things like
git pre-commit hook or CI workflow, it's critical to
avoid false alarms.
This reverts commit de764af9aa.
Squashed commit of the following:
commit 685951b5385062035ac558df1112353c9441c910
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 16:33:00 2020 -0800
fixed typo in readme
commit ad1d3289b48af0de3095e3f365429017e57278b3
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 16:07:48 2020 -0800
simulator host route helper script and docs
Squashed commit of the following:
commit cf5cddcf55a155303cb5abb1aa026f6dcaf369ca
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 15:50:40 2020 -0800
syslog on console to fix compile error
commit def1bb73fcfbc8b115c55d9f4544b97d583807f2
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 15:46:13 2020 -0800
formatting as per PR feedback; removed ping
commit b179fd8831b77fbbe85527a4ab3161e1f1ca1e43
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 15:45:49 2020 -0800
formatting as per PR feedback
commit e3280bede9798d9a00b118e126c02ceab497e33a
Author: Adam Feuer <adam@starcat.io>
Date: Mon Feb 24 13:56:50 2020 -0800
add simhostroute.sh description to readme
commit 09a6b0ca3bacf005c2a79102141ae8cc3eb91849
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 17:38:40 2020 -0800
fixed error in simhostroute.sh usage docs
commit d838582119d43ee2002ce3808051c82b23e98c58
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 17:28:35 2020 -0800
added tcpblaster defconfig and updated docs
commit af3d2d6591f12d1127027fdd363858052094e624
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 17:21:29 2020 -0800
added info about capabilities and running as root
commit 6359cfdfedefc818b169455401942d3d33a59f41
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 17:20:42 2020 -0800
updated network linux readme
commit 47feb08aa74e4b1fc6c802567bc777d31e7c9a83
Author: Adam Feuer <adam@starcat.io>
Date: Sun Feb 23 17:09:04 2020 -0800
initial addition
This tools needs to CD to directory holding the library because it requires that the library be in the current working directory when objects are inserted. Previously, the tool did this by creating an absolute path to the object file itself. So instead of the object file being in the current directory and the library in a directory at an absolute path, this tool used an abolte path to the object file with the library in the current directory.
For the most part, that worked fine. However, in the apps directory the object file names are greatly extended in length. In the object file name was extended to a full absolute path and these huge file names were were exceeding some internal limit within the ZDS-II librarian. But useing shorter, relative paths, we were able to avoid hitting this limit and the entire build completed correctly.
* tools/zds/zds_Config.mk: Move boards/z80/ez80/scripts/eZ80_Config.mk to tools/zds/zds_Config.mk where it can be shared by other ZDS-II platforms.
* boards/z16/z16f: Duplicate changes for new ZDS-II support from ez80
* boards/z80/z8: Duplicate changes for new ZDS-II support from ez80
* arch/z16/src/z16f/Toolchain.defs: Create required Toolchain.defs file for Z16f
Eliminate the MOVEOBJ definition from tools/Config.mk, Makefiles, and other locations. The MOVEOBJ definition was used to work around the case where the object output of a compile or assemble is in a different directory than the source file. The ZDS-II tools have no command line option to perform this move; MOVEOBJ handled the move as a post-compiler operation.
MOVEOBJ is no longer needed because this the ez80 COMPILE and ASSEMBLE definitions now handle all of the object file movement cases.
tools/zds/zdsgen.c: Remove this program. It should have been a simpler way to manage ZDS-II compiler and assember differences. However, the compiler arguments needed to pass through too many layers of bash command line modifications and, as a result, it was not possible to retain quotes on critical strings. This approch was abandoned for an alternative approach.
boards/z80/ez80/scripts/eZ80_Config.mk: Add definitions to move the object files as necessary. This seems to work well and is implemented for both native and Cygwin Windows build -- but only for the Z20x.
And additional wrapper that is needed for the ZDS-II build is a wrapper for the compiler and assemble. This is needed because the ZDS-II cannot control the name or location of the output of the output object file: it is always in the same directory as the source file and with the same name as the source file except with the .obj extension.
This was handled in the past with the MOVEOBJ definition which was specifically called Makefiles to move the objects to the correct position. However, now there is a new behavior: Output object files may also be named differently with added decoration in the file name. This is done in the current apps/ directory build.
There is currently some ugly implementation that includes a long sequence of Bash code to handle the moving and/or renaming. There is nothing in place for the Windows native case.
This wrapper, when complete, will clean up the Makefiles, improve build performance, and provide a solution that is portable to both the Cywin/MSYS environment as well as to the Windows native environment.
This zdsar librarian wrapper is code complete and has no known bugs.
However, there are still some build instabilities so perhaps there
are still some bug to be identified. Or perhaps there are other
undiscovered bugs unrelated to zdsar which appears to be behaving
correctly in all cases.
It will take some additional testing know for sure.
A pointer to a string in a memory buffer was losing its value. The reason was that the buffer was occasionally being used for other purposes. The fix is to strdup() the string so that there is a private, protected copy.
tools/zds: A new tool sub-directory intended to hold tools for making life working with the ZDS-II toolchain less painful.
tools/zds/zdsar.c: This is a wrapper around the ZDS_II librarian. It simplifies the build scripts by replacing large sequences of complex Bash script that were added to the build files. Not only does this clean up the build files but it also improves performance and, more importantly, provides a common solution for the Windows native build case. This tool should work with all ZDS-II based platforms including z8, zNeo, and ez80.
tools/README.txt: Add a brief description about the zds sub-directory. Also re-ordered some tool descriptions. They are supposed to be in alphabetical order, but this seems to have fallen apart.
boards/z80/ez80/scripts/eZ80_Config.mk: Updated to use tools/zds/zdsar.exe.
This includes some fixes for the ez80 build including:
1. Ability to handle decorated object file names,
2. Ability to handle libraries described with absolute paths
This commit address only the POSIX build and needs to be updated
for the Windows native build.
to avoid shell complain that @echo can't find if the variable expand in the compound
command(e.g. ARLOCK) and remove $(Q) before $AR so the result is almost same as before.
To ensure size_t same as toolchain definition in the first place and rename CXX_NEWLONG to ARCH_SIZET_LONG. The change also check whether __SIZE_TYPE__ exist before CONFIG_ARCH_SIZET_LONG so our definition can align with toolchain(gcc/clang) definition automatically.
Make 'checkpatch.sh -c commits' and 'checkpatch.sh -p patches' do full
file check as default, while 'checkpatch.sh -r -c commits' and 'checkpatch.sh
-r -p patches' do ranges check only.
Eliminate warnings. Ignore mixed case identifies beginning with PRIx.
These most likely come from inttypes.h and we nxstyle must tolerate
those definitions even though they do not follow the coding style.
Namely this changes HOSTOS for macOS from "Other" to "Darwin".
Also, suppress the following harmless messages during a "make":
(Missing redirect in tools/Makefile.host)
uname: illegal option -- o
usage: uname [-amnprsv]
Consider junk.c for example:
/****************************************************************************
* xx
****************************************************************************/
/****************************************************************************
* Private Types
****************************************************************************/
struct foo_s
{
int bar;
};
/****************************************************************************
* Public Functions
****************************************************************************/
int dofoo(int barin)
{
barout = barin;
return barout;
}
nxstyle not detects these problems:
$ tools/nxstyle.exe junk.c
junk.c:11:0: error: Blank line before opening left brace
junk.c:21:0: error: Blank line before opening left brace
This capability was erroneously removed by a previous commit. This setting is necessary when the C++ code generated by the compiler uses the new and delete operators provided in libs/libxx.
Here is an example of an error scenario where this capability is required:
1. CONFIG_CXX_NEWLONG=y in the defconfig file
2. This causes libs/libxx to to generate a delete operator of this form:
void delete(void*, unsigned long);
3. But the compiler expects to link with a delete operator of this form:
void delete(void*, unsigned int);
That results in a link-time failure and the ONLY solution for avoiding that link time failure (short of some complete redesign) is to have a control over the CONFIG_CXX_NEWLONG setting and make sture that it is always disabled for that toolchain.
Other toolchains will require that CONFIG_CXX_NEWLONG=y in all cases. This cannot be predicted because it is dependndent on the definitions provided by C libraries and header files that were build into binary toolchain.
CI should know the build status of testbuild.sh, so use -k make flag option as default
instead of -i ignore-error option. Then use fail to record build result. In addition,
refresh .config if toolchain updated.
Change-Id: I182c2b2db489e6ccb0a79fdc664072d19974c3ca
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
1.Scan the folder under nuttx/boards by prefix /
2.Skip the specified configuration by prefix -
Change-Id: Ibb67f2c6b96cd8e439d94bf71d098c1fd9e5a79d
Signed-off-by: Xiang Xiao <xiaoxiang@xiaomi.com>
Make sure kconfig-tweak disables CONFIG_TOOLCHAIN_WINDOWS under linux host, or it would break the build when using testbuild.sh for some configs.
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
1. Can't pipe uname stderr output to /dev/null. /dev/null does not exist in the Windows native enviornment.
2. Don't test if CONFIG_WINDOWS_NATIVE is defined. Tht leads to a "chicken'n'egg" problem: We need to build configure.c in order to configure the system, but we can't get the CONFIG_WINDOWS_NATIVE until after the system is configured.
3. The default name of the MinGW GCC compiler is mingw32-gcc.exe, not mingw-gcc.exe
Commit cf5d17f795 added logic to detect #define pre-processor definitions outside of the "Pre-processor Definitions" file section. That commit was verified against numerous .c source files. But not against any .h header files.
When run against a header file, that change causes a false alarm warning like:
file:line:pos: warning: #define outside of 'Pre-processor Definitions' section
That is caused the idempotence, guard definition that must appear in the header file BEFORE the first file section.
This commit adds logic to nxstyle to ignore pre-processor definitions in header files that occur before the first file section is encountered.
1. No .c file should include a "Public Types" section. Only a header file can define a public type. A .c file can only define a private type. Several files contained private type definitions. The section that they were defined in, however, was incorrectly named "Public Types." Those were easilty changed to "Private Types" which is what they are.
2. No .c file should include a "Public Function Prototypes" section. All global function prototypes should be provided via a header file and never declared with a .c file.
For No. 2, I corrected as many cases as was reasonable for the time that I had available. But there are still a dozen or so .c files that declare "Public Function Prototypes" within a .c file. This is bad programming style. These declarations should all be moved to the proper header files.
* tools/nxstyle: Added logic to parse section headers (like Included files, Pre-processor Definitions, etc.) and to assure that the section headers are correct for the file type. Also (1) verify that #include appears only in the 'Included Files' section and that (2) #define only occurs in the Pre-processor definition section.
Right now, there are several places where that rule is not followed. I think most of these are acceptable so these failures only generate warnings, not errors. The warning means that we need to go look at the offending #define or #include and decide if it is a acceptable usage or not.
the width of all block comments. Includes a check to assure that all block
comments use the same line width.
Verified against all .c files under /sched. There were a few cosmetic changes to the coding style under /sched to account to new, correctly detected problems in the /sched files.
* tools/nxstyle.c: Donot check unknown file extension files
nxstyle only support c soure file and header file check, donot check
other unknown file extension files.
* tools/checkpatch.sh: Add checkpatch.sh script based on nxstyle tool
Usage:
checkpatch.sh patch-list // default as patch list
checkpatch.sh -p patch-list
checkpatch.sh -c commit-list
checkpatch.sh -f file-list
checkpatch.sh - // read from stdin, which used by git pre-commit hook
And git pre-commit hook could use checkpatch.sh as below:
git diff --cached | ./tools/checkpatch.sh -
Usage: ./nxstyle -r start,count filename
nxstyle with -r option used to parse the range lines rather than the whole file.
Change-Id: I58ec56511fde14d6ec914400a7849e69960a3711
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
* Simplify EINTR/ECANCEL error handling
1. Add semaphore uninterruptible wait function
2 .Replace semaphore wait loop with a single uninterruptible wait
3. Replace all sem_xxx to nxsem_xxx
* Unify the void cast usage
1. Remove void cast for function because many place ignore the returned value witout cast
2. Replace void cast for variable with UNUSED macro
Author: Gregory Nutt <gnutt@nuttx.org>
Run all .c and .h modified in PR through nxstyle.
Author: Masayuki Ishikawa <masayuki.ishikawa@gmail.com>
feature k210 (#16)
* arch: risc-v: Add support for __LP64__ to types.h
* arch: risc-v: Add support for RV64GC to common files
* arch: risc-v: Add support for Kendryte K210 processor (RV64GC)
* boards: risk-v: Add support for Sipeed Maix Bit with K210
* tools: Add support for Kendryte K210 processor
tools/nxstyle.c: Output compiler like error format. Added features
Uses getops to pars command line.
Supports
-s silence all output
-g provide a PASS fail message
* tools/README.txt: Update with new nxstyle options
1.merge CONFIG_GIT_REVISION_STR into CONFIG_VERSION_BUILD
2.merge gen_getrev.sh into version.sh
3.generate version number if needed
Here is a sample output:
nsh> uname -a
NuttX 8.2 59fd8e12d3-dirty Dec 12 2019 15:48:00 sim sim
nsh> cat /proc/version
NuttX version 8.2 59fd8e12d3-dirty Dec 12 2019 15:48:01
This change was motivated by the presence of the mkimage.sh file under tools. That is the tool that created the RRLOAD binary format. That bash script has a GPL license and, hence, may not be included in an Apache-licensed project.
HiFive1 with qemu
* arch: risc-v: Add include/.gitignore
* arch: risc-v: Add src/.gitignore
* arch: risc-v: Remove uncommon function prototypes in include/irq.h
* arch: risc-v: Add missing symbols and function prototypes in src/common/up_internal.h
* arch: risc-v: Add src/common/up_modifyreg32.c
* arch: risc-v: Enable include Make.dep in src/Makefile
* arch: risc-v: Fix stack coloration in common/up_createstack.c
* arch: risc-v: Add common/up_puts.c
* arch: risc-v: Add common/up_checkstack.c
* arch: rv32im: Move all logics from up_dumpstate.c to up_assert.c
This change is same as other architectures like arm/src/armv7-m
* arch: Select ARCH_HAVE_STACKCHECK for RISC-V in Kconfig
* arch: risc-v: Add SiFive fe310 processor
NOTE: Currently only tested with qemu
* boards: hifive1-revb: Add SiFive hifive1-revb board
NOTE: Currently only tested with qemu
* tools: Add fe310 processor to configure.sh
Approved-by: Alan Carvalho de Assis <acassis@gmail.com>
Approved-by: Gregory Nutt <gnutt@nuttx.org>
This change decouples that upper activity-based logic from the lower random walk logic and allows use of other upper state detection logic (such as a custom, application-specific state machine).
This port was effort of a number of people, I rather arbitrarily gave authorship to Guiding Li because he has the largest number of fundamental quashed commits from the Xiamoi repository.
Squashed commit of the following:
Author: Xiang Xiao <xiaoxiang@pinecone.net>
include/nuttx/b2c.h and libx/libc/string: Add non-standard string functions to deal with cases where there are more than 8-bits in a type char.
Author: Gregory Nutt <gnutt@nuttx.org>
Fix several build issues/missing definitiona needed for OpenAMP build in drivers/.
Add OpenAMP code has been reviewed and ran through tools/nxstyle (with all reports accounted for).
Author: Xiang Xiao <xiaoxiang@xiaomi.com>
tools/: Fix the minor issue in Makefile
Author: Gregory Nutt <gnutt@nuttx.org>
drivers/rptun/rptun.c: Review for coding standard. Run against tools/nxstyle.
tools/LibTargets.mk: Fix some TABs that were turned into spaces by a copy-paste.
fs/hostfs: Add configure and build support for hostfs RPC.
drivers/timer: Add configure and build support for syslog RTC.
drivers/syslog: Add configure and build support for syslog RPC.
drivers/serial: Add configure and build support for serial RPC.
Kconfig, tools/*.mk. openamp/: Add basic OpenAMP build support.
drivers/rptun: Add configure and build support for OpenAMP tunnel drivers.
drivers/net: Update Make.defs and Kconfig for OpenSDA support.
Remove drivers/clk/clk-rpmsg.c drivers/power/rpmsg_regulator.c. These depend on upstreaming support for a new subsystem based on the clk/regulator is model from Linux. Removed because we want to separate the activities. We will just try to get the basic OpenAMP support in place for now.
Remove drivers/misc/misc_rpmsg.c and include/nuttx/misc/misc_rpmsg.h. These are specific to the Xiaomi application.
Author: zhuyanlin <zhuyanlin@pinecone.net>
This commit brings in the OpenAMP OS driver/RPC components from https://github.com/FishsemiCode/nuttx. Initial commit is source files only. Additional changes to Kconfig and Make.defs files still needed.
Author: Jianli Dong <dongjianli@pinecone.net>
This commit brings in the OpenAMP OS driver/RPC components from https://github.com/FishsemiCode/nuttx. Initial commit is source files only. Additional changes to Kconfig and Make.defs files still needed.
Author: Guiding Li <liguiding@pinecone.net>
This commit brings in the OpenAMP OS driver/RPC components from https://github.com/FishsemiCode/nuttx. Initial commit is source files only. Additional changes to Kconfig and Make.defs files still needed.
1. Serial (UART) driver (13 ports)
2. Ethernet driver
This port is provided on two boards
1. RSK RX65N-2MB
2. GR-Rose
The port is built on Cygwin environment.
As part of this port, we have created two documents
1. Readme.txt for each board
2. User manual to provide information about development environment setup
Both these documents are placed under
1. /boards/renesas/rx65n/rx65n-grrose
2. /boards/renesas/rx65n/rx65n-rsk2mb
We have run 'nxstyle' for coding guidelines and 'ostest' for testing NuttX features on test platform.
We have shared the log with no errors as confirmation of valid port.
1. Remove libcxx duplication in FlatLibs.mk and from kernel space
2. Remove libpass1 from KernelLibs.mk since kernel build doesn't support the two pass mode
3. Remove FSDIR related comment since file system cannot be disabled now
It appears Yann Morin's kconfig-frontends project has gone offline and
the website at http://ymorin.is-a-geek.org/projects/kconfig-frontends
is not responding. Until we can identify a "proper" upstream project,
use the snapshot in NuttX tools repository.
Replace (almost) all links to Yann Morin's kconfig-frontends in the
docs to point to the NuttX tools snapshot instead, with the following
exceptions:
nuttx/Changelog for version 6.17, 2012-04-14: Leave this historical
information intact.
nuttx/README.txt: Document the source of our snapshot.