This is the corresponding change to the one on main NuttX repo. In this
case this involves splitting the build of libapps.a into: a) building
all applications (which is safely parallelizable), b) adding each
application's object files to the archive in turns (serial by nature).
This removes the need for the flock used to protect the parallel build.
move the binary install to the main Makefile to support
link extra libraries
Change-Id: I6db8a244ec9975163ea0c21fec6468e215c5aedb
Signed-off-by: chao.an <anchao@xiaomi.com>
fix import build break caused by 'incdir' not found:
$ make import -j12
...
/bin/sh: 1: /home/archer/code/apps/import/tools/incdir: not found
/bin/sh: 1: /home/archer/code/apps/import/tools/incdir: not found
Signed-off-by: chao.an <anchao@xiaomi.com>
In nuttx pass1dep and pass2dep builds, context firstly would be built once.
It then call 'make -C apps depend' which would trigger the context built twice.
There is race condition between symtab.c generated by mksymtab.sh in second time
and compiling symtab.c in parallel build. So remove context dependency for apps
depend to make sure context build only one time for apps.
Parallel build break logs as below:
/home/jenkins/jenkins-slave/workspace/NuttX-Nightly-Build/apps/examples/elf/elf_main.c:357: undefined reference to `g_elf_nexports'
riscv64-unknown-elf-ld: /home/jenkins/jenkins-slave/workspace/NuttX-Nightly-Build/apps/examples/elf/elf_main.c:357: undefined reference to `g_elf_exports'
make[1]: *** [nuttx] Error 1
make: *** [pass2] Error 2
Change-Id: I2872f7036e7ec86615efc5ebd7c46cee51dc1094
Signed-off-by: liuhaitao <liuhaitao@xiaomi.com>
A recent change gets the APPSDIR root directory path from:
APPSDIR = $(CURDIR)
Where CURDIR is a special variable maintained by GNU make. In the native build, GNU make is provided by GNUWin32. The value of CURDIR provided by the GNUWin32 CURDIR is not POSIX, but not quite windows compatible either. It does return paths that start with C: or D:, but uses forward slashes for path segment delimiters, not backsalshes as required by Windows tools.
This fix here is to use $(CURDIR) to get the APPSDIR path for file inclusions, that part is fine. But then, if we find out we are doing a native build, the update the APPSDIR using shell %CD% environment variable which is the authoritative source of the current working directory under Windows.
Author: anchao <anchao@pinecone.net>
apps/, most main() function: Correct CONFIG_BUILD_LOADABLE usage
Loadable apps/: Correct loadable symbol table generate
apps/system/ubloxmodem: Fix build break
apps/examples/ostest: start restart/waitpid/user test from main loop
apps/nshlib: Expand reboot and poweroff commands to include a second, optional mode argument
Author: Gregory Nutt <gnutt@nuttx.org>
An attempt to fix build issues. Does not work.
apps/examples/ostest: Fix some inappropriate renaming of static functions introduced with recent patches.
apps/builtin/exec_builtin.c: Fix a error introduced by recent comments. Found in build testing.
Author: anchao <anchao@pinecone.net>
apps/builtin/exec_builtin.c: Try posix_spawn if builtin apps do not have have an entry point.
apps/Application.mk: introduce MODULE config to simplify tristate(m)
apps/nsh: Change the nuttx shell module type to tristate
apps: Add loadable application support
script/mksymtab: Generate symbol table name by default
apps/builtin: Allow loadable applications can register with apps/builtin.
apps/builtin/exec_builtin.c: Try posix_spawn if builtin apps do not have have an entry point.
apps/Application.mk: introduce MODULE config to simplify tristate(m)
apps/nsh: Change the nuttx shell module type to tristate
apps: Add loadable application support
script/mksymtab: Generate symbol table name by default
apps/builtin: Allow loadable applications can register with apps/builtin.
Merged in masayuki2009/nuttx.apps/loadable_app (pull request #148)
loadable app support
* apps: Introduce a build system for loadable apps for nsh.
This PR consits of following changes. (NOTE: Changes to each
application will be provided separately)
apps/nshlib/Kconfig:
Add 'option modules' to NSH_FILE_APPS so that a user can change
an application configuration to tristate (y/n/m)
apps/Make.defs:
Override COMPILE and COMPILEXX macros to compile loadable apps.
To make loadable apps, -DLOADABLE_APP is added to the flags.
Also, introduce ELFLD to link a lodable app.
Please note that the variable 'LOADABLE' must be defined in
each application Makefile if you want to make a loadable app.
apps/Application.mk:
Add .build target in case of 'LOADABLE=y' which is used to
link a final loadable application and install the app to
apps/bin.
apps/Makefile:
Add SYMTABSRC and SYMTABOBJ variables for loadable apps which
will be generated under the apps directory.
Add make_symbols target which will be called when all applications
are installed to generate symtab_app.c which is used for
nsh to inform symbol information to the NuttX kernel.
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
* apps/examples/hello: Apply changes to support a lodable app.
Kconfig:
Change the application state from bool to tristate
Make.defs:
Change the condition to build. By default, the application is
not selected (i.e. 'n'), so if other states (i.e. y/m) are
selected, the application will be compiled.
Makefile:
If the application is specified to 'm', the variable 'LOADABLE'
must be defined here. Also note that other variables (PRIORITY
and STACKSIZE) can only be used for built-in apps.
hello_main.c
Add LOADABLE_APP condition to main().
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
* apps/examples/helloxx: Apply changes to support a lodable app.
Kconfig:
Change the application state from bool to tristate
Make.defs:
Change the condition to build. By default, the application is
not selected (i.e. 'n'), so if other states (i.e. y/m) are
selected, the application will be compiled.
Makefile:
If the application is specified to 'm', the variable 'LOADABLE'
must be defined here. Also note that other variables (PRIORITY
and STACKSIZE) can only be used for built-in apps.
helloxx_main.c
Add LOADABLE_APP condition to main().
Signed-off-by: Masayuki Ishikawa <Masayuki.Ishikawa@jp.sony.com>
Approved-by: GregoryN <gnutt@nuttx.org>