Commit graph

259 commits

Author SHA1 Message Date
Andrew Boie
82f11bf099 build: x86: add some flexibility in custom linker scripts
If a particular project needs to add additional data to the
binary image, in most cases the entire linker script needs to
forked into the project space, causing maintenance issues if
the main linker script is changed.

Now we add some Kconfig options to allow a project to specify
some additional linker scripts which get included by the main
one in a few key areas:

1) In the definition to the 'rodata' section, which can allow
additional data to be included in this ROM section.

2) In the definition to the 'datas' section, which allows
additional data to be included in this RAM section.

3) Arbitrary additional sections to be included at the end of
the binary.

For 1 and 2, this is useful to include data generated outside of
the normal C compilation, such as data structures that are created
by special build tools.

3 is useful for including arbitrary binary blobs inside the final
image, such as for peripheral or co-processor firmware.

Change-Id: I5738d3d6da25f5bc96cda8ae806bf1a3fb34bd5d
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-30 22:47:02 +00:00
Anas Nashif
ce9cb26a2e build: add more security related compiler flags
Add the following:

*  -Wformat
*  -Wformat-security
*  -D_FORTIFY_SOURCE=2

Change-Id: I4768713126637f851489d13fc1d803a18986f4c0
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-30 15:23:52 +00:00
Flavio Santes
be1dd33053 build: Add __ZEPHYR__ to Makefile
This commit adds the __ZEPHYR__ define to the main Makefile.
This new define may help to drive conditional compilation when
writing multi-platform applications.

Change-Id: I81a37f9c86fa7f85bbac7cd0c0cd4150cbff1911
Signed-off-by: Flavio Santes <flavio.santes@intel.com>
2016-11-22 17:10:49 +00:00
Anas Nashif
1dd4960738 Revert "build: Handle ALL_LIBS dependencies correctly"
This reverts commit 608abd987c.

This change is breaking build dependencies.

Change-Id: Id8e9dbfc14b72933c402d25847615cddbfaca40d
Jira: ZEP-1291
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-18 00:24:03 +00:00
Benjamin Walsh
779794cdbf build: add -I$(srctree)/kernel/unified/include to path
This will allow making some arch-specfic parts arch-agnostic. Some
definitions that are currently in arch/<arch>/include will end up in
kernel/unified/include.

Change-Id: I4df71090e20a5599e70fb578b36f9211411b56ad
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-11-12 07:04:52 -05:00
Anas Nashif
ff23cb58a8 build: support pre-built host tools
Right now the build system builds the host tools over and over again, in some
environments especially when running in an IDE on windows for example,
this is not desired and a set of pre-built host tools should be used.

Provide an option to use pre-built tools instead of building them
from source.

To use, set PREBUILT_HOST_TOOLS to the path where all pre-built host tools
are hosted. To get a prebuilt version of the host tools, build without the
variable set and copy the generated host binaries from outdir. The following
tools are supported:

* conf
* fixdep
* gen_idt
* gen_offset_header

Jira: ZEP-237
Change-Id: Iea505bfd0b50f851ee2781b5117bb6085ab20157
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-11-12 00:34:03 +00:00
Daniel Thompson
4f0c6f47d6 build: Minor tidy up of outputexports
These changes act upon outstanding review comments when
commit 90f6ae1532 ("build: Support for integrating third party
build systems") was merged.

See https://gerrit.zephyrproject.org/r/#/c/4915/ for the comments.

Change-Id: I6b7287355f40658e47b94a8a7854776c173a7796
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
2016-11-10 23:19:31 +00:00
Andrew Boie
625acd5f4b build: remove old kernel support
Change-Id: If1d29573a0ad4a863f0058c8b8e2c35f5ced6d9e
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-11-07 11:34:18 -08:00
Daniel Thompson
608abd987c build: Handle ALL_LIBS dependencies correctly
ALL_LIBS is used by applications to introduce extra libraries to the
build. Currently zephyr is not relinked when the library is altered.
Fix this the obvious way by adding ALL_LIBS to the list of zephyr
dependencies.

Change-Id: I2d1914fe1b968f488082264d362d8dadfba0f7b2
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
2016-11-07 14:56:16 +00:00
Anas Nashif
4d090e09d6 usb: move usb subsystem to subsys/usb and cleanup header inclusion
Change-Id: I5bdfd2cf5fee62af2ca772d778477f4f378a6a55
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-10-31 19:21:42 +00:00
Ramesh Thomas
e354ad2a36 fs: Move file system code to subsys/
Subsystems code will reside in subsys/ folder. This patch creates the
folder and moves FS code there.

Jira: ZEP-1120
Change-Id: If3b1bcb996c5fbd4056cd5d1920d41d29810d6b2
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-10-30 13:23:58 +00:00
Andy Ross
018b831a36 Makefile: Don't hide the "prebuilt" kernel
The pass 1 linkage on x86 produces a real intermediate file that users
might plausibly want to inspect.  There's no reason to give it a
hidden file name or call it "temporary".  Show it off.

Change-Id: I606ee41f7f106ddd00474cdebe7803bcfb01889d
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2016-10-27 20:10:27 +00:00
Andrew Boie
a5ae889b32 build: add Kconfig mechanism for deprecating boards
If a deprecated board is built, a warning is presented indicating
what future release the board will be removed.

Change-Id: Ib166198d8b71303b990a30f79429f51871591a97
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-10-25 20:56:41 +00:00
Kumar Gala
8d35760fec board: organize boards based on architecture
Introduce an architecture sorting of boards.  This is to allow for
easier maintenance going forward as the number of boards grows.  It
will be easier for any scripts to know the board/arch mapping without
having to maintain an explicit list of what boards are associated with
which arch.  We can also do things like have architecture maintainers
cover reviews and branches for arch/${ARCH} and boards/${ARCH} going
forward.

Change-Id: I02e0a30292b31fad58fb5dfab2682ad1c5a7d5a7
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-10-24 19:59:42 +00:00
Anas Nashif
0a3946a68b build: bump version to 1.5.99
This will signify that we are in the development phase. Having the 1.5.0 on
master between two major releases might be confusing.

Jira: ZEP-1100
Change-Id: Ifbea81fbb8afe544af1fb30c79cb67dadb6d731d
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-10-24 18:30:47 +00:00
Kumar Gala
bdd7764051 build: clean up .stat file(s)
Add missing bits to cleanup *.stat files

Change-Id: If075cb9f8b91950830eea078fa17c2cf748e0d0f
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-10-24 11:00:32 -05:00
Kumar Gala
bbf736cf6e build: refactor kernel hex build to be common
Several platforms utilize a ihex image format.  Rather than
duplicating the build bits in everyones makefile, pull it into the
toplevel makefile so we all share it.

Change-Id: I9097b06e7e386a69ce6ab4d4e4d56cc776adfec2
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-10-24 10:59:22 -05:00
Andrew Boie
238fe1f60f gen_idt: remove int_vec_alloc bitfield from output
This is no longer used.

Change-Id: I6536076ae3510d66eb26c49d89b865dc82e91e33
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-10-21 23:30:05 +00:00
Andrew Boie
caf19b2503 x86: remove final-linker.cmd
This mechanism was intended to reserve space during the first pass for
certain data structures created by gen_idt, but this is unnecessary.
The only memory addresses that must be fixed between the two passes are the
locations of the interrupt stubs, which are in the .text section much
earlier than the generated data structures; they do not shift.

Change-Id: I3aab00e171e6a9ff439a7af8d69769e4c29337a7
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-10-21 23:30:04 +00:00
Dmitriy Korovkin
19f2884738 unified: Fix build broblem caused by concurrent make processes in single dir
Make sure that kernel/unified, that is included in libs-y does not
built recursively through building kernel/ directory.
Make sure that any lib.a library is not included into libzephyr.a
and thus object modules from those lib.a files are linked only if a
function from that object module is referenced from the application.

Jira: ZEP-1025

Change-Id: Id3a3e96ca0b8abc9aedde0ffb9baa0164e380464
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
2016-10-05 10:29:31 +00:00
Andy Ross
4cc228baf6 check_link_map: rewrite in python
Oops, turns out that we don't require perl in all our build
environments.  Rewrite this script (it's tiny) in Python.  Exactly the
same logic.

Change-Id: Icbf4b36ef0b18fca94d54fc7fe5e47343c55c669
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2016-10-05 09:48:54 +00:00
Daniel Thompson
90f6ae1532 build: Support for integrating third party build systems
For projects like JerryScript and Micropython we are starting to see
hybrid build systems emerge where the application (which targets a
variety of OSs and already includes a complex build system) is compiled
using the applications own build system before handing over to the
zephyr build system for the final link.

Currently the integration is becoming quite complex as the applications
build integration tries to figure out sane values for CC and CFLAGS.
Much of this complexity can be avoided if we allow the zephyr build
system to export its configuration in a manner that can easily be
consumed by the alien build system.

Change-Id: I4ea4cda2ed0437222d9550c50f0b07e51d9ac91b
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
2016-10-03 02:30:51 +00:00
Anas Nashif
1b4742f8a4 help: document ram/rom_report in 'make help'
Change-Id: I0b0b477cc19bb8966a67c6f1e5705f58d8679578
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-10-03 02:29:22 +00:00
Andy Ross
0f227848b9 link: Add section size validity checker
There are demons hiding in binutils with regard to the size of the
data section that needs to be copied in XIP platforms.  It's easy to
mess up and get a mismatch between the linker data output and the
runtime addresses.  Add a cheap check to discover this early when it
occurs.

Jira: ZEP-955

Change-Id: If1c61fe8712221c6450b5b89f5f8af006b41b3fe
Signed-off-by: Andy Ross <andrew.j.ross@intel.com>
2016-10-01 01:41:51 +00:00
Jaakko Hannikainen
9167a0305f tests: Add a generic testing framework
This framework makes testing in most parts a lot easier, since it gives
an unified base to work with, removing a lot of unnecessary code from
tests. This framework currently features simple assertions and basic
mocking support. The framework works both with and without Zephyr
running, so it can be used for real unit testing.

Origin: Original

Change-Id: I8c5bf2e6b8d6656b6197ee91699b61e730c1cfe3
Signed-off-by: Jaakko Hannikainen <jaakko.hannikainen@intel.com>
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-09-30 21:17:39 +00:00
Dmitriy Korovkin
9558d47fd3 unified: Build kernel objects as a static library
Building kernel objects as a static library allows not
to include the initialization function for an object
type if this type is not used by the application.
It reduces memory footprint

Change-Id: I2b3c79cb2591fdd1ce15d27684c4a874e759c559
Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
2016-09-28 19:13:36 +00:00
Benjamin Walsh
ec89a10c7e build: allow specifying a custom linker script relative to project
Build system will first check if the linker script is found relative to
the project directory, and if not, it will consider it to be an absolute
path, as before.

Change-Id: Idfc7e55febbc8c197643ca514dc01c3e2262712a
Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
2016-09-15 09:42:24 -04:00
Juan Manuel Cruz
941059c69f win-build: fixes to build with alternative make implementations
Some make implementations have different implementations for
notdir and absdir functions.
notdir may require that his parameter do not finish with "\".
absdir may fail when given a windows formated path as input.

The path that is given to notdir as parameter is removed from
the final "\" and abspath is replaced with realpath when the
input given can be a windows formated path.

Jira: ZEP-762

Change-Id: Ic83e3526fc5234decb3192ab1f9f538addf9a76e
Signed-off-by: Juan Manuel Cruz <juan.m.cruz.alcaraz@intel.com>
2016-09-12 12:28:14 +00:00
Daniel Thompson
389ed15b4c build: Make QEMU_BIN_PATH optional
QEMU_BIN_PATH is frequently set to pick up qemu binaries from "obvious"
places such as /usr/bin or /usr/local/bin. Neither of these values will
be correct for all users and both directories would typically be found
in the user's PATH. Much better to make QEMU_BIN_PATH optional and picking
up qemu via PATH instead.

Tested with ZEPHYR_GCC_VARIANT={zephyr|xtools}.

Change-Id: I1acfc5b12341c6d330a3e9e90b0ab5bde29e2e4f
Signed-off-by: Daniel Thompson <daniel.thompson@linaro.org>
Cc: Andrew Boie <andrew.p.boie@intel.com>
2016-09-12 02:35:20 +00:00
Anas Nashif
5ca45ba3f2 Zephyr 1.5.0
Change-Id: Ie7a145c02a320bdb3c5cbce149d84d43bd194d76
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-08-26 17:35:49 -04:00
Anas Nashif
0e6c11ac5d Zephyr 1.5.0-rc4
Change-Id: I3299be2abed8618c54448e66802c52acf94158a9
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-08-25 22:43:11 -04:00
Juan Manuel Cruz
5bd398d3e3 win-build: Fixes Makefile target names including char ":"
The build system uses absolute path names to generate
target names. In Windows, absolute path names include the
character ":".
Makefile does not support target names with the character ":"
on them.
The target names involved are PHONY. The commit modifies the
Makefile logic to not include directory names in zephyr-app-dirs
and clean-dirs targets.

Jira: ZEP-517

Change-Id: I37b62f04b8bc6bffbbc19e0e4fd2a827347e5cbd
Signed-off-by: Juan Manuel Cruz <juan.m.cruz.alcaraz@intel.com>
2016-08-25 11:09:35 +00:00
Ramesh Thomas
cc74572c5b fs: Adds diskio interface
Adds the diskio interface for the FAT file system.  This
revision uses RAM to emulate disk storage.

Origin: Original
Jira: ZEP-285
Change-Id: I7a30c8761d5ed9b564f1d1e08482c5ef199d7372
Signed-off-by: Ramesh Thomas <ramesh.thomas@intel.com>
2016-08-01 16:46:38 -07:00
Kumar Gala
44b712da85 build: use quiet cmd for AR of libzephyr.a
Introduce a quiet_cmd to create the .a for libzephyr.a so that we can
get see explicitly what's going on if V=1 is set

Change-Id: Id0a3cf0aefac4f28bab1da3ba244b7dcead394a8
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-07-31 21:02:32 +00:00
Anas Nashif
f4ed108ada build: create libzephyr.a and link it in instead of objects
Enabling building of the kernel archive as the first step towards
split kernel and app builds.
An application will be able to link against this archive in the final
step of the build process.

Change-Id: If0abc7002d19ca2ca10c7babd83fe1dc6fccebfa
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-07-31 18:10:02 +00:00
Juro Bystricky
f25ac092b9 Makefile: Restructure for multilibs
Several Zephyr SDK toolchains support multilibs.
Instead of hard-coding locations of the libraries, the proper/cleanest way
is to query the GCC compiler for the locations of libgcc and libc.
However, in order to do this, we need to ensure a certain order of
initialization in the Makefile:

1. Determine CROSS_COMPILE.
   We cannot determine LIB_INCLUDE_DIR, TOOLCHAIN_CFLAGS yet, as we don't
   know the KBUILD_CFLAGS yet.

2. Calculate KBUILD_CFLAGS using CROSS_COMPILE
   KBUILD_CFLAGS often need the compiler to validate options, i.e:
   KBUILD_CFLAGS += $(call cc-option,-mabi=aapcs -mthumb -mcpu=cortex-m0)
   However,  LIB_INCLUDE_DIR, TOOLCHAIN_CFLAGS should not be needed for this

3. Finally, using CROSS_COMPILE and KBUILD_CFLAGS determine LIB_INCLUDE_DIR,
   TOOLCHAIN_CFLAGS by querying GCC using -print-libgcc-file-name and
   -print-multi-directory command line options.

This change should only affect Zephyr SDK toolchains, all other toolchains
are expected to function as before.

Change-Id: I27b460d46fe65d05fcb8bafb51cd6b3deba275ed
Signed-off-by: Juro Bystricky <juro.bystricky@intel.com>
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-07-27 17:15:56 +00:00
Andrew Boie
d9a84c5c77 Makefile: link arch/ last
The IRQ implementations of ARC, ARM, and Nios II use .gnu.linkonce
sections for declaring entires in the sw_isr_table array. It's
imperative that arch/built-in.o be linked after everything else
as we want custom interrupt handlers to take precedence over the
default spurious interrupt handlers.

Currently, any interrupt handlers defined in ext/ or usb/ will not
be installed properly on the above mentioned arches.

Change-Id: Ib3fb21ff1ef114678906f130c268c266535954f1
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-07-27 15:48:23 +00:00
Andrew Boie
0d03e32036 gen_idt: add -d switch for extra debug info
Previously, gen_idt's code had to be modified to get this information.
We now print it by default when building with V=1

Change-Id: I31bd6c5b851d6280ebcedaab97bd02b8331a2f24
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-07-27 14:42:27 +00:00
Andrew Boie
11693c1bf9 build: use -Og instead of -O0 for CONFIG_DEBUG
From the GCC manual for -Og option, introduced in GCC
4.8:

Optimize debugging experience. -Og enables optimizations
that do not interfere with debugging. It should be the
optimization level of choice for the standard
edit-compile-debug cycle, offering a reasonable level of
optimization while maintaining fast compilation and a
good debugging experience

Change-Id: I65751cf3117bc2e6f70a7008b170126160cfa48c
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-07-25 18:09:14 +00:00
Kumar Gala
62a9f9cdd5 build: Make sure sysgen related header files get updated
Since sysgen copies kernel/microkernel/include/micro_private_types.h and
kernel/microkernel/include/kernel_main.h we need to make sure that
sysgen gets invoked if those files ever change.  Otherwise we might have
stale versions.

Change-Id: Id84522e3af693f1323f73c9642d1884f0be4b7cf
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-07-18 18:46:31 +00:00
Adrian Bradianu
7a16ade6d1 usb: Add USB device core layer
USB Device core layer is a hardware independent interface between USB
device controller driver and USB device class drivers or customer
applications. It's a port of the LPCUSB device stack.

Change-Id: I9371ffab7034d20953fec0525e72fbe9e094c931
Signed-off-by: Adrian Bradianu <adrian.bradianu@windriver.com>
Signed-off-by: Jesus Sanchez-Palencia <jesus.sanchez-palencia@intel.com>
Signed-off-by: Jithu Joseph <jithu.joseph@intel.com>
2016-06-30 17:51:56 +00:00
Andrew Boie
206d0b4497 Revert "qemu: pass -serial stdio instead of -serial mon:stdio"
This reverts commit e697621371.
It is causing problems dependeing on what version of QEMU is
used, with the SDK QEMU the terminal has to be 'reset' after
running (the opposite behavior of the Nios 2 build).

Change-Id: I6756eb0cf8edf4faa36f3a5e1cf0e456f146e1d8
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-06-30 16:50:02 +00:00
Kumar Gala
23af1e928e build: Fix application object files placement when building out of tree
For the application object files to get properly placed in the outdir
when the source files are outside of the zephyr tree we need to set
$srctree in kbuild to the parent dir of the application source code
rather than getting the default of $srctree being set to $ZEPHYR_BASE.

By doing this we are able to get the kbuild system to place the object
file results in the outdir rather than in the application source dir.

Jira: ZEP-369
Change-Id: I4d3ba67a4a38c15978d5bf7e1f0a912e9bf00f08
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-06-30 16:49:40 +00:00
Kumar Gala
ff694e92b5 build: Split out building of application code
Seperate building of the application code from the zephyr OS code.  This
is in prep for both having a libzephyr.a for the OS and to fix where
the application object files get put when building out of tree.

Change-Id: I43f3b54d11f41aaf35350de7462c5cd556804092
Signed-off-by: Kumar Gala <kumar.gala@linaro.org>
2016-06-30 14:36:38 +00:00
Vinicius Costa Gomes
28b79191d4 build: Fix not allowing the host tools to be crosscompiled
There are situations that the host gcc is not able to generate x86
binaries, in those cases, the user should point HOSTCC to a binary able
to generate the correct type of binaries.

This also allows './scripts/sanitycheck' to be run in systems where the
build tools are prefixed by default.

Change-Id: Id1fc247f8a820e19bb3d4e8119634f8300e7ebac
Signed-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>
2016-06-29 05:37:58 +00:00
Andrew Boie
e697621371 qemu: pass -serial stdio instead of -serial mon:stdio
You can now exit out of QEMU using Ctrl-C, and this resolves
some issues where the terminal could get messed up if QEMU
terminates abnormally.

Change-Id: I94ca66333bf9035e3627f28bbd2c152cf981a13f
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-06-29 00:08:20 +00:00
Andrew Boie
be13e26586 build: add 'qemugdb' target
This new target works much like 'make qemu' but fires up a local GDB
server on port 1234 and pauses execution

Change-Id: I87fd174c66dcc9f2f43b5b1204cc5c34f741622d
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-06-28 15:56:05 -07:00
Maureen Helm
280eadffdd ksdk: Add Makefile support for ksdk device and CPU
Translate the SOC name and part number into the ksdk device path and CPU
macro respectively. This will be used by future ksdk shim drivers and by
the ksdk itself.

Change-Id: I40e94441ee032bfbed7df834be8000d95be53250
Signed-off-by: Maureen Helm <maureen.helm@nxp.com>
2016-06-20 17:38:47 +00:00
Andrew Boie
63cea24896 misc: add config to omit frame pointer
Change-Id: Ia69c14addded7563a24f15d4a3408fcc2c8e673a
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
2016-06-16 18:15:59 +00:00
Anas Nashif
1aaa11b213 libc: change linking order to avoid over-stripping of symbols
At the moment libc gets linked, all unused functions get
stripped and the libqmsi gets linked but __assert_func is not
available.

Change-Id: I7fc2f8b9136f858023b3e983575869a2206ba9ce
Signed-off-by: Anas Nashif <anas.nashif@intel.com>
2016-06-14 16:55:53 +00:00