Commit Graph

773 Commits

Author SHA1 Message Date
Peter Barker 156d580bcd Tools: ardupilotwaf: include sfml-audio 2019-03-23 07:10:50 +11:00
Peter Barker d762629c62 Tools: waf: link AP_InternalError everywhere 2019-03-21 21:34:33 +11:00
Peter Barker 780e0e2eba Tools: ardupilotwaf: build SITL binaries for x86_64-linux-gnu and arm-linux-gnueabihf 2019-03-19 20:21:50 +11:00
Peter Barker 1a81da4a26 Tools: ardupilotwaf: sort boards in help text 2019-03-19 20:21:50 +11:00
Peter Barker 929e84d120 Tools: ardupilotwaf: add -Werror=attributes 2019-03-19 14:10:10 +11:00
Andrew Tridgell 9e50c1b64e waf: fixed case insensitive board name 2019-03-07 08:36:01 +11:00
Andrew Tridgell 102141756a waf: make board name case insensitive in waf configure 2019-03-05 08:43:14 +11:00
Peter Barker facfa53f57 Tools: waf: add -Werror=overloaded-virtual 2019-03-01 22:31:21 +11:00
Peter Barker 39e7733872 Tools: waf: add -Werror=enum-compare 2019-03-01 12:50:52 +11:00
Andrew Tridgell b619e1e560 Tools: remove more px4 remnants 2019-02-27 20:32:37 +11:00
Andrew Tridgell e5efbffe5b waf: pad bootloader to multiple of 32 bytes
this ensures that we can write a whole flash line when updating
bootloader from ROMFS
2019-02-26 16:18:26 +11:00
Andrew Tridgell 3c9646dfef waf: allow hwdef.dat to override build optimization 2019-02-26 16:18:26 +11:00
Andrew Tridgell e71514c136 waf: allow for no param default support
this allows apj files to be built for example fw
2019-02-26 16:18:26 +11:00
Francisco Ferreira 03ed67a996 waf: add option to override toolchain 2019-02-22 08:27:08 +11:00
Francisco Ferreira ba2f954a20 waf: add AC_AttitudeControl library for PE target format 2019-02-22 08:27:08 +11:00
Peter Barker 6137704032 Tools: ardupilotwaf: add -Werror=inconsistent-missing-override for clang 2019-02-20 19:23:54 +11:00
Peter Barker e23809fd59 Tools: ardupilotwaf: include AP_Parachute in all builds 2019-02-13 09:25:27 +09:00
Peter Barker 61961d037e Tools: ardupilotwaf: all vehicles get AC_Fence 2019-01-31 13:44:29 +09:00
Andrew Tridgell 1f28994bae waf: added --sitl-flash-storage option 2019-01-21 20:59:00 +11:00
mirkix f9d49913d9 ardupilotwaf: enable UAVCAN for bbbmini, blue and pocket 2019-01-21 08:08:59 +11:00
Andrew Tridgell 85ca38b630 waf: fixed git hash in generated APJ file 2019-01-19 17:19:41 +11:00
Peter Barker 0bf55ce3f4 Tools: ardupilotwaf: DataFlash renamed to AP_Logger 2019-01-18 18:08:20 +11:00
Randy Mackay b3b3385143 Tools: add ToshibaCAN to waf build 2019-01-18 17:30:28 +11:00
Andrew Tridgell 1cf4a9b8d8 waf: fixed ROMFS compression to use zero timestamp
this makes the apj file indepenent of build date, which fixes this
issue:

https://discuss.ardupilot.org/t/arducopter-waf-build-repeatability/37182
2019-01-11 17:45:07 +11:00
Michael du Breuil 7b259fb09f ardupilotwaf: Enable heap for scripting builds 2018-12-31 19:25:23 -07:00
Andrew Tridgell d8291ef1d1 waf: fixed static link build
for bebop
2019-01-01 09:34:11 +11:00
Michael du Breuil 2c8b5c651d Tools: Remove unneeded AP_Buffer include 2018-12-31 11:41:43 +09:00
Andrew Tridgell bac091262f waf: use ctx.fatal for old board error
thanks to @OXINARF
2018-12-22 11:06:59 +11:00
Andrew Tridgell 646c6f4361 waf: point developers at the new build 2018-12-22 11:06:59 +11:00
Andrew Tridgell 7c5d82ed15 waf: removed px4 build targets 2018-12-22 11:06:59 +11:00
Andrew Tridgell aa7221d1bf waf: build AP_RobotisServo 2018-12-22 08:13:14 +11:00
Andrew Tridgell bdacc410ca waf: added check for memrchr()
needed on macos
2018-12-06 13:32:09 +11:00
Peter Barker 8949cdd87a Tools: waf: use ctx rather than build for fatal errors 2018-12-01 09:41:24 +11:00
Andrew Tridgell 4b1857b3aa waf: use local pymavlink
use pymavlink from modules, not from install. This allows building
without pymavlink installs, and ensures we use the current version
2018-11-19 10:06:23 +11:00
Andrew Tridgell e6651b01bb waf: use direct import of mavgen for mavlink generation
this avoids a path problem on windows under eclipse
2018-11-15 14:39:11 +11:00
Andrew Tridgell 304eaa7782 waf: fixed typo 2018-11-15 09:55:14 +11:00
Peter Barker 1d2f8555c0 Tools: ardupilotwaf: adjust for new location of uploader.py 2018-11-15 09:55:14 +11:00
Peter Barker d0f070d05d Tools: rename px_uploader.py into uploader.py, move into scripts 2018-11-15 09:55:14 +11:00
Michael du Breuil 472cd9f48c Tools: Add a runtime scripting check flag 2018-11-14 01:41:35 +00:00
Francisco Ferreira ff77000d93 waf: support changing board to build without re-configure
This allows to use the board option when building as long as it has been configured before

As we don't want to force configuration of all boards each single time, auto-configuration support now has to be done per-board
2018-11-13 10:30:34 +11:00
Francisco Ferreira 2e3b4df47e waf: don't fail on missing pkg-config
Also remove unneeded wrapper method and use standard waf
2018-11-13 10:30:34 +11:00
Francisco Ferreira 389a9ee88b waf: add option to disable gccdeps 2018-11-13 10:30:34 +11:00
Francisco Ferreira 9bdbd37d98 waf: boards: use existing abstract class definition
Remove special case for removing ChibiOS base board class and use the pre-existing way

Make board name list order be case-insensitive

Also fix some space in blank lines
2018-11-13 10:30:34 +11:00
Francisco Ferreira 1e036e4d4e waf: boards: small change to use waf standard 2018-11-13 10:30:34 +11:00
Peter Barker 769192fed7 Tools: ardupilotwaf: make type narrowing an error 2018-11-09 15:49:35 +11:00
Andrew Tridgell 4eb867efc2 waf: always link AP_LandingGear
needed for RC_Channel
2018-11-09 14:35:14 +11:00
Andrew Tridgell 2054be0ce1 waf: omit bootloader for px4-v2 build
This saves 8k of flash, and allows the plane stable release for older
Pixhawk1 boards to build
2018-11-07 07:35:45 +11:00
Michael du Breuil 645afbab82 ardupilotwaf: Add ROMFS for scripting 2018-10-30 16:17:03 -07:00
Andrew Tridgell b3b5415081 waf: added --use-nuttx-iofw configure option
this allows building with the old NuttX based IO firmware. The default
is the ChibiOS based firmware
2018-10-30 13:00:48 +11:00
Peter Barker 7c0e5b9929 waf: include AC_Avoid on all vehicles 2018-10-30 12:10:42 +11:00
Peter Barker 6585b6036d Tools: waf: add -Werror=return-type to all boards 2018-10-23 12:53:28 +11:00
Peter Barker d4c3caf592 Tools: ardupilotwaf: add enable-math-check-indexes configure option 2018-10-19 08:46:43 +11:00
Michael du Breuil 5192376c85 Tools: Don't generally build scripting unless requested 2018-10-09 10:08:52 +11:00
Andrew Tridgell 31548c983a waf: ensure that C files get same ABI flags as C++ 2018-10-09 10:08:52 +11:00
Michael du Breuil 33d4e09d60 Tools: Add lua source to waf 2018-10-09 10:08:52 +11:00
Michael du Breuil 580c9d6ad9 Tools: Add waf scripting configure option 2018-10-09 10:08:52 +11:00
Michael du Breuil 17103623eb Tools: Pass ENABLE_SCRIPTING into the system 2018-10-09 10:08:52 +11:00
Francisco Ferreira 434afa268e
waf: change ChibiOS ld script path back to relative
Fixes #9461
2018-09-21 09:29:32 +01:00
Siddharth Purohit 6622c9b8fd HAL_ChibiOS: wrap sscanf and snprintf methods 2018-09-19 12:14:15 +10:00
Siddharth Purohit 56afc44c56 ardupilotwaf: add support for controllers with different arm cortex and related configs 2018-09-19 12:14:15 +10:00
Siddharth Purohit 6fee72b0c0 waf: add flags for F1 controller support and more debug features 2018-09-19 12:14:15 +10:00
Peter Barker 35330e8caa Tools: ardupilotwaf: add -Werror=unused-result for all boards 2018-09-04 09:22:18 +10:00
Peter Barker 3a1afc4bf1 Tools: boards.py: make float-equals fatal in sitl 2018-08-28 09:54:47 +10:00
Peter Barker 5bd1f57a2a Tools: ardupilotwaf: add -Werror=return-type to all boards 2018-08-21 20:34:01 +09:00
Peter Barker 4915c72f10 Tools: add sprayer to standard libraries 2018-08-17 15:33:35 +09:00
Andrew Tridgell a4e50e1626 waf: use the current python interpreter for sub-commands 2018-08-07 14:40:36 +10:00
Andrew Tridgell 36af9eecdf waf: fixes for python 3.7 2018-08-07 14:40:36 +10:00
Andrew Tridgell c5f3beb297 waf: added --enable-asserts option for ChibiOS 2018-08-03 13:44:59 +10:00
Andrew Tridgell 4022a17d3b waf: fixed upload on Linux 2018-07-26 08:52:56 +10:00
Jani Hirvinen 62cf45659b adding support for win/cygwin installations 2018-07-24 12:40:23 -07:00
Stephen 651a7030aa Tools: Add quotes in ChibiOS waf file
Without these quotes, the ChibiOS build fails if there are spaces in the Ardupilot path, ie ``C:\Stephen Dade\files\ardupilot``
2018-07-18 12:55:29 +10:00
Andrew Tridgell 1e2065e381 waf: recognise CubeBlack USB IDs 2018-07-11 09:26:59 +10:00
Andrew Tridgell 655828d2f8 waf: use wildcard OSD fonts for SITL 2018-07-09 19:41:56 +10:00
Andrew Tridgell d2996677cf waf: auto-compress ROMFS files 2018-07-09 19:41:56 +10:00
Andrew Tridgell 950be3fc17 waf: stop build if OSD libs missing and requested 2018-07-08 08:22:40 +10:00
Andrew Tridgell 1dece80c88 waf: fixed error with no ROMFS files 2018-07-03 14:05:37 +10:00
Andrew Tridgell f78b84805c waf: don't generate hex files if intelhex module not installed 2018-07-02 12:47:58 +10:00
Andrew Tridgell 8ba137bd9a waf: moved ROMFS embed script into waf folder 2018-07-02 10:43:48 +10:00
Andrew Tridgell 355269115e waf: support --enable-osd option 2018-07-01 21:21:28 +10:00
Andrew Tridgell a7ecbf29aa waf: define CHIBIOS_BOARD_NAME 2018-06-29 20:27:36 +10:00
Andrew Tridgell 95b2587c76 waf: use ardupilot uploader for HAL_PX4 2018-06-29 08:17:38 +10:00
Andrew Tridgell 8ae6b2e026 waf: fixed dependency of hwdef.h on hwdef.dat 2018-06-27 11:37:45 +10:00
Andrew Tridgell d12cf0ab59 waf: added -Werror on signed comparison 2018-06-27 11:37:45 +10:00
Lucas De Marchi 49d08ba72a Global: remove minlure
Minlure is a port of ArduPilot to Minnow Board connected to daughter
board. Very few of those were produced and nobody is flying with it.

It served its purpose and all the the improvements to ArduPilot remain
regardless of it not being supported anymore. Now it's just adding
maintenance work with no clear benefit, so pull the plug.
2018-06-26 07:32:08 -07:00
Andrew Tridgell 1c73c133a9 waf: fixed binary generation order 2018-06-24 20:24:06 +10:00
Andrew Tridgell 623a30be55 waf: build hex file with and without bootloader
this allows for DFU tools without losing parameters
2018-06-24 16:47:23 +10:00
Andrew Tridgell f73ca2a6ba waf: speed up the bootloader build
don't need to build all libraries
2018-06-24 15:57:51 +10:00
Andrew Tridgell 5b46adf3fb waf: fixed chibios upload 2018-06-23 17:06:53 +10:00
Andrew Tridgell 338ff6ae64 waf: automatically build intel hex fw when possible
this combines the bootloader and application code into a single binary
2018-06-23 17:06:38 +10:00
Peter Barker b94e31b21a Tools: remove warning about native clang builds
These appear to be stable now
2018-06-22 16:49:05 +10:00
Andrew Tridgell 290f050575 waf: enable gccdeps, using gcc dependencies
this is considerably faster than the way dependency system
2018-06-22 11:13:03 +10:00
Andrew Tridgell ad49f4fdbf waf: fixed declaration of ap_romfs_embedded.h 2018-06-22 11:13:03 +10:00
Andrew Tridgell 14f66461a7 HAL_ChibiOS: shrink build size for bootloader
thanks to @sh83 for the idea
2018-06-22 08:00:31 +10:00
Andrew Tridgell 0ae25787c0 waf: added a --bootloader configure option
this selects hwdef-bl.dat instead of hwdef.dat, allowing for
bootloader config to be kept in the same directory as the main
hwdef.dat
2018-06-22 08:00:31 +10:00
Andrew Tridgell 6771a3d65a waf: support Hex USB IDs in px_uploader.py 2018-06-22 08:00:31 +10:00
Peter Barker e9a07bdd6f Tools: create CHIBIOS_GIT_VERSION build-time define 2018-06-18 19:10:37 +01:00
Peter Barker 09a9abb3a8 Tools: include AP_RTC in all waf builds 2018-06-15 08:01:22 +10:00
Peter Barker 684482295e Tools: include Gripper in all builds 2018-06-11 19:07:39 +01:00
Eugene Shamaev 68ec9f4119 Tools: add CAN bus declaration for the intel aero board 2018-05-25 13:53:17 +10:00
Lucas De Marchi 2916a3f40c build: add --apstatedir for Linux boards
This is the --localstatedir that is found on other
buildsystems/programs + the package directory. We could provide a
--localstatedir instead to be similar to the others, but I thought it
would be too confusing for the help message.
2018-05-24 08:00:33 -07:00
Francisco Ferreira ddb45a0813 waf: move skyviper-v2450-px4 definitions to board config 2018-05-22 08:35:01 +09:00
Michael du Breuil 82d486add0 Tools: Add proximity as a common library 2018-05-16 23:21:41 +01:00
Andrew Tridgell cc931e9a2a waf: allow F4Light USB ID to be recognised 2018-05-16 20:24:23 +10:00
Lucas De Marchi 997d9f58de build: invert default for header checks
In the end the build time is always almost the same, but it's a pain to
change one header and have it check the world. CI continues to use the
check so we can get any mistake before merging.
2018-05-04 11:47:04 -07:00
Lucas De Marchi 73edda697d build: align help options
While it's aesthetically nice to start the help message in a new line
looking at the code, the first \n screws the output leaving them not
aligned.
2018-05-04 11:47:04 -07:00
Lucas De Marchi 9342bc5050 build: invert default for lttng
Since it's a debug option, particularly for the scheduler, leave it
disabled by default and let the user enable on demand.
2018-05-04 11:47:04 -07:00
Lucas De Marchi 4697089a82 build: move Linux configuration options to its own sections 2018-05-04 11:47:04 -07:00
Peter Barker 4e53d9e1a8 Tools: correct flashing under Linux 2018-05-04 18:37:14 +10:00
stephen.dade 76cc014245 waf: Allow spaces in paths when compiling for ChibiOS targets 2018-05-04 12:47:06 +10:00
Andrew Tridgell 835484429d waf: don't build ChibiOS with debug by default
this makes builds (and rebuilds with ccache) faster
2018-05-04 12:17:12 +10:00
Andrew Tridgell 5fb8fe927c waf: added AP_ROMFS to build 2018-04-17 08:44:44 +10:00
Andrew Tridgell 02f20b4114 HAL_ChibiOS: first version of OMNIBUSF7V2 board support
first F7 based board
2018-04-12 11:50:44 +10:00
Andrew Tridgell 827108617a waf: only generate an abin file when needed
this saves on user confusion
2018-04-11 15:09:49 +10:00
Andrew Tridgell 8eaac031af waf: added AP_BLHeli 2018-04-07 09:10:29 +10:00
Andrew Tridgell c50359a5b5 waf: throw an error if hwdef.dat can't be processed 2018-04-07 09:10:29 +10:00
Andrew Tridgell 98ab1c13db Tools: fixed call to apj_tool in skyviper build 2018-03-24 16:11:50 +11:00
Peter Barker 6dfdb19711 Tools: include VisualOdom in common vehicle libraries 2018-03-23 09:28:07 +09:00
Peter Barker 44a063e818 Tools: ardupilotwaf: chibios: change directory before running make_abin.sh
Any waf build which is done outside of the git checkout will fail to create the abin without this, as it attempts to invoke git.

An example of this is the autotest system
2018-03-23 11:06:24 +11:00
Peter Barker edd0f74ec0 Tools: ardupilotwaf: chibios: hand apj tool an absolute path to parameters
Any waf build specifying an --out which is not at the same level as the default "build" will fail without this
2018-03-23 11:06:24 +11:00
Peter Barker b26d140316 Tools: ardupilotwaf: remove redundant --no-trigraph 2018-03-05 13:28:03 +00:00
Andrew Tridgell ba55f99419 waf: fixed python3 pickle error 2018-03-05 09:50:27 +11:00
Andrew Tridgell b6c0e65dee waf: set CYGWIN_BUILD on cygwin for px4
helps with missing/cmath
2018-03-03 13:35:39 +11:00
Andrew Tridgell 3e9f0f83f0 waf: fixed cygwin build for ChibiOS
keep path lengths to linker short
2018-03-02 17:11:31 +11:00
Andrew Tridgell 706a0c1b2f waf: define CYGWIN_BUILD for ChibiOS under cygwin
and for SITL
2018-03-02 17:11:31 +11:00
Andrew Tridgell 43f1b43b6c waf: auto-generate board targets for ChibiOS
this allows porting to a new board by just adding the hwdef.dat, with
no other changes
2018-03-02 12:52:50 +11:00
Andrew Tridgell 2075a3da7d waf: use pre_build hook for ChibiOS
this fixes dynamic uavcan building
2018-03-02 12:52:50 +11:00
Andrew Tridgell 7d5ed1bc9b waf: simplify board classes for ChibiOS
rely in hwdef.dat
2018-03-02 12:52:50 +11:00
Andrew Tridgell fed1579187 waf: auto-enable CAN for ChibiOS builds
use presence of CAN pins in hwdef.dat to automatically enable if
available
2018-03-02 12:52:50 +11:00
Andrew Tridgell 89430793dd waf: allow env variable overrides in hwdef.dat
this allows hwdef.dat to control files that are built and flags to the
build
2018-03-02 12:52:50 +11:00
Andrew Tridgell 61debe95e0 Tools: started on OMNIBUSF7V2 support 2018-03-02 12:52:50 +11:00
Andrew Tridgell 6b6c35a435 waf: use relative paths for ChibiOS build
this fixes the ChibiOS build on cygwin by reducing path lengths to
below the cygwin limit
2018-03-02 12:52:50 +11:00
Andrew Tridgell 035da5047a waf: added fmuv2 build
based on fmuv3, but with 1M target flash
2018-03-01 15:25:55 +11:00
Peter Barker 053d789843 Tools: ardupilotwaf: disable SLP vectorization for clang++ in SITL
There appears to be a problem caused by clang++'s optimisations to do
with SLP vectorizations.

It *looks* like it doesn't push enough operands into one of the vectors,
so you end up with a division by zero when attempting to execute an SSE
instruction.
2018-03-01 13:12:10 +11:00
Luis Vale Gonçalves e88be33c9e Updated the usbmodem line for upload
Added a * to enable recognition of usbmodems
2018-02-16 10:17:45 +11:00
Andrew Tridgell 4dc88c6022 waf: added crazyflie2 2018-02-14 18:27:00 +11:00
Andrew Tridgell 320c3b53a4 waf: make it easier to list USB IDs to load fw to 2018-02-14 18:27:00 +11:00
ljwang 59ee3c8f62 AP_HAL: support mini-pix 2018-02-14 18:27:00 +11:00
Alexey Bulatov 7302618bbc waf: add support UAVCAN for Edge board 2018-02-13 13:52:44 +11:00
Andrew Tridgell 2cbf04a3d0 waf: use new bootloader path 2018-02-10 19:13:18 +11:00
Andrew Tridgell 8b5291975b waf: disable uavcan and fatfs on skyviper-v2450 2018-02-08 22:10:46 +11:00
Andrew Tridgell 36695fe1f6 waf: create abin files for some px4 builds
needed for skyviper web UI upload
2018-02-08 18:56:51 +11:00
Andrew Tridgell 258ae49952 waf: support PX4 boards with no microSD or USB 2018-02-08 18:56:51 +11:00
Andrew Tridgell 86d43061e9 waf: added skyviper-v2450-px4 build 2018-02-08 17:36:33 +11:00
Andrew Tridgell 2db74a642b waf: added skyviper-f412-rev1 board
older board with SPI 20789
2018-02-08 17:36:33 +11:00
Andrew Tridgell b0c16f7eb9 waf: auto-build abin files for ChibiOS 2018-02-08 17:36:33 +11:00
Andrew Tridgell 779de02acb waf: disable double-promotion warnings on ChibiOS
these are not useful
2018-02-08 17:36:33 +11:00
Andrew Tridgell 5c259459ea waf: build with AP_TempCalibration 2018-02-08 17:36:33 +11:00
Andrew Tridgell 0258c5baf4 waf: added AP_Radio to build 2018-02-08 17:36:33 +11:00
Andrew Tridgell 13a3c56a02 waf: added board name to ChibiOS build 2018-02-07 20:33:45 +11:00
Andrew Tridgell 1c0b598c05 waf: fixed permissions on px_mkfw.py 2018-02-07 20:33:45 +11:00
Siddharth Purohit d1a497f223 waf: add more wraps to compile uavcan 2018-02-07 20:33:45 +11:00
Siddharth Purohit b1499ee8f2 waf: add option to compile with uavcan for chibios boards 2018-02-07 20:33:45 +11:00
Andrew Tridgell 3d50bbe2c0 waf: added mini-pix build target 2018-02-07 20:33:45 +11:00
Andrew Tridgell 6ee0c48ab1 waf: added revo-mini build type 2018-02-07 20:33:45 +11:00
Siddharth Purohit 90ca9626cc waf: use gcc/g++ by default if available else throw warning 2018-01-31 12:22:23 +11:00
Andrew Tridgell 4bc3a649cc waf: default port list for uploader 2018-01-20 17:40:07 +11:00
Andrew Tridgell d7c62602ed waf: added AP_RCProtocol to list of libraries for all vehicles 2018-01-20 17:40:07 +11:00
Peter Barker 7c232323da waf: added support for Sparky2 STM23F405 board 2018-01-20 17:40:07 +11:00
Alexey Bulatov e16ac3da23 ardupilotwaf: Disable exceptions for UAVCAN on linux boards 2018-01-17 07:24:17 -08:00
Alexey Bulatov 0998ac102b ardupilotwaf: Add libraries instead of assignment 2018-01-17 07:24:17 -08:00
Andrew Tridgell 4f0839a493 waf: improved dependencies in ChibiOS build 2018-01-16 09:46:21 +11:00
Andrew Tridgell 681792acf3 waf: added skyviper-v2450 build target
derived from fmuv3
2018-01-15 11:46:02 +11:00
Andrew Tridgell c708201fc6 waf: added flag for no FATFS in ChibiOS 2018-01-15 11:46:02 +11:00
Andrew Tridgell ce9473f0e8 waf: fixed handling of waf clean with new hwdef generation 2018-01-15 11:46:02 +11:00
Andrew Tridgell 2978649cd4 waf: moved to generated loader script 2018-01-15 11:46:02 +11:00
Andrew Tridgell 9482ab1840 waf: use common makefile for ChibiOS if no custom present 2018-01-15 11:46:02 +11:00
Andrew Tridgell e3f4860666 waf: cope with serial exceptions in px_uploader.py
this allows the loader to continue on a USB removal/reinsert
2018-01-15 11:46:02 +11:00
Andrew Tridgell 5af4f8b364 waf: added mindpx-v2 build target 2018-01-15 11:46:02 +11:00
bugobliterator 3aba8bf706 waf: add mac usb com ports to list of devices for upload 2018-01-15 11:46:02 +11:00
Andrew Tridgell a2681f1d1c waf: support ChibiOS FMUv4 2018-01-15 11:46:02 +11:00
Andrew Tridgell 964f081bab waf: fixed comment 2018-01-15 11:46:02 +11:00
Peter Barker 550ab6ac62 waf: chibios trigraph warning fix 2018-01-15 11:46:02 +11:00
Andrew Tridgell b48b436923 waf: implement --default-parameters option for ChibiOS 2018-01-15 11:46:02 +11:00
Andrew Tridgell 38022d03b6 waf: disable gtest build on ChibiOS 2018-01-15 11:46:02 +11:00
Andrew Tridgell 4e6c26cf77 waf: simplify chibios libch.a building 2018-01-15 11:46:02 +11:00
Andrew Tridgell e026a408f3 waf: added AP_RAMTRON and AP_IOMCU to build 2018-01-15 11:46:02 +11:00
bugobliterator 925e3a2dcb waf: added ChibiOS support 2018-01-15 11:46:02 +11:00
Andrew Tridgell 9869b98da3 waf: added ap_version_append_int()
used for date defines
2018-01-15 11:46:02 +11:00
Peter Barker c56529f39c Tools: waf: remove GCS_Console 2018-01-09 13:46:22 +00:00
mirkix 793578c0a9 ardupilotwaf: add new board PocketPilot 2017-12-27 16:01:55 +00:00
Mark Whitehorn fd5039f8cd Tools: link SBusOut library 2017-11-30 10:20:04 +11:00
Peter Barker fa68738726 Tools: waf: avoid trigraph warnings by adding -Wno-trigraphs 2017-11-23 10:40:30 +11:00
HeBin c700e69541 Tools: add Robsense PhenixPro Devkit Board support 2017-11-22 10:10:21 -08:00
Andrew Tridgell 766a2a4bc0 Tools: link volz library 2017-11-21 14:10:54 +11:00
Staroselskii Georgii 62cb2b6845 waf: boards: add Edge 2017-10-20 13:03:08 -07:00
Lucas De Marchi cd81b27c05 build: protect ap_version.h from inclusion 2017-09-23 21:37:45 -07:00
José Roberto de Souza c6b19131ba ardupilotwaf: AeroFC: Remove unused tools
before
BUILD SUMMARY
Build directory: /home/zehortigoza/dev/ardupilot/build/aerofc-v1
Target               Text    Data  BSS    Total
------------------------------------------------
bin/arducopter       860324  2032  55220  917576
bin/arducopter-heli  844204  2028  55028  901260

after
BUILD SUMMARY
Build directory: /home/zehortigoza/dev/ardupilot/build/aerofc-v1
Target               Text    Data  BSS    Total
------------------------------------------------
bin/arducopter       852248  2024  55156  909428
bin/arducopter-heli  836120  2020  54964  893104
2017-09-21 13:40:41 -07:00
Lucas De Marchi 83b9518a49 build: remove raspilot 2017-09-12 15:06:19 -07:00
Francisco Ferreira efc42edabe waf: remove URUS 2017-09-11 10:04:11 -07:00
davidaroyer bde8252359 waf: add support for Aerotenna OcPoC-Zynq hardware 2017-09-08 07:30:49 -07:00
Lucas De Marchi bfe2acac33 build: add -Wno-attributes for PX4
This will allow us to use [[fallthrough]] attribute as an
statement.
2017-08-22 23:59:13 -07:00
Lucas De Marchi 8a9a08ed9b build: generalize link fix 2017-08-16 10:51:59 -07:00
Miguel Arroyo a2f327678b waf: Fix for lttng linking 2017-08-16 10:51:59 -07:00
Francisco Ferreira d41dd7e7e7
waf: add workaround for PE linker not removing unused methods 2017-08-15 21:51:08 +01:00
Andrew Tridgell 1901cb6c7f waf: added --disable-header-checks
the headers checks are most of the re-build time when editing class
headers. Disabling them makes development much faster
2017-08-08 00:42:19 -07:00
Kevin Lopez Alvarez 34c977f046 waf: Initial waf support for ppro 2017-07-24 13:45:37 +10:00
Peter Barker 7042d3e9c9 Global: all vehicles get AP_Relay and AP_ServoRelayEvent libraries 2017-07-17 00:06:31 +01:00
Gustavo Sousa 930f3b4aca build: boards: enable --upload option for linux boards
Make it use rsync command. That's a workaround to allow user using --upload
option, which in fact appends the 'rsync' to the command chain. A bad
side-effect of this is that the build summary is output twice for a command
like 'waf copter --upload'.
2017-07-02 08:58:26 -07:00
Lucas De Marchi d02013c91b build: aerofc-v1: add default param file into ROMFS 2017-06-06 18:42:17 -07:00
Lucas De Marchi f6d43aea25 build: px4: allow to embed defaults file into ROMFS 2017-06-06 18:42:17 -07:00
Peter Barker ee16205438 Tools: ardupilotwaf: include startup tone in ROMFS 2017-05-01 13:28:27 +01:00
Francisco Ferreira 2f326fe5e0 build: remove obsolote mkblctrl from PX4 builds 2017-04-27 13:32:43 +01:00
Andrew Tridgell 385d1c1951 waf: cope with spaces in directory name in mavgen 2017-04-22 13:48:19 +10:00
Andrew Tridgell c8d6311047 waf: added -Werror=switch
match the stm32 build, so errors are found in SITL
2017-04-19 20:48:42 +10:00
Pierre Kancir b541949262 WAF: Px4.py remove unused PX4_UAVCAN_ROOT and UAVCAN_LIBUAVCAN_PATH 2017-04-17 13:32:27 -07:00
Eugene Shamaev 59ef501a19 waf: add support for building with UAVCAN 2017-04-10 22:38:13 +01:00
Lucas De Marchi fab0358a0f build: document special fields in px4 boards 2017-03-24 12:06:19 +11:00
Lucas De Marchi 05c5a2ac9b build: add adc driver for aerofc 2017-03-24 12:06:19 +11:00
Lucas De Marchi 81a9a70910 ROMFS: use different UART for errors in aerofc 2017-03-24 12:06:19 +11:00
Lucas De Marchi 3eb16fd881 build: PX4: install rc.<board-name> as init script 2017-03-24 12:06:19 +11:00
Lucas De Marchi b1b07f4e70 build: make bootloader path relative to ROMFS
Differentiating if the path should be relative to the build dir or the
ROMFS dir based purely on the type of the item is not a good approach.
This prepares the way to have more files on ROMFS with different names
on src and dst.
2017-03-24 12:06:19 +11:00
Lucas De Marchi 8db111e0a0 build: do not add sercon for aerofc 2017-03-24 12:06:19 +11:00
Lucas De Marchi d3df9c8d39 build: use dummy tone_alarm on aerofc
This allows us to use tone_alarm in the init script besides the calls
from ArduPilot code.
2017-03-24 12:06:19 +11:00
Lucas De Marchi b17acfee12 Add aerofc support
Flight Controller board that comes on Intel Aero RTF Drone.
2017-03-24 12:06:19 +11:00
Lucas De Marchi 65f2c9eca1 build: remove batt_smbus from waf as well
It has been removed from make build system, but not from waf.
2017-02-12 01:14:04 +00:00
Lucas De Marchi 00ef0cec2e build: shut up cmake regarding deprecated macros
Yes, we know we are using them. Remove warnings like:

CMake Deprecation Warning at /usr/share/cmake/Modules/CMakeForceCompiler.cmake:93 (message):
  The CMAKE_FORCE_CXX_COMPILER macro is deprecated.  Instead just set
  CMAKE_CXX_COMPILER and allow CMake to identify the compiler.
Call Stack (most recent call first):
  cmake/toolchains/Toolchain-arm-none-eabi.cmake:37 (cmake_force_cxx_compiler)
  /home/lucas/p/dronecode/ardupilot/build/px4-v2/modules/PX4Firmware/CMakeFiles/3.6.2/CMakeSystem.cmake:6 (include)
  CMakeLists.txt:204 (project)
2017-02-06 09:27:22 -08:00
Lucas De Marchi 3d29010366 build: allow to pass flags to cmake
These are flags to cmake itself, not to the compiler and is not in the
form of -DXX=YY
2017-02-06 09:27:22 -08:00
Lucas De Marchi 1bf17fa50f build: remove version that is not required anymore
Now bootloader, board name and px4io pass the name directly to the PX4
build system so we don't need to keep the version.
2017-01-30 18:59:34 -08:00
Lucas De Marchi 1a58d3c447 build: px4: pass px4io name directly 2017-01-30 18:59:34 -08:00
Lucas De Marchi da297d2028 build: px4: pass board name directly 2017-01-30 18:59:34 -08:00
Lucas De Marchi c81d32a0b2 build: px4: pass bootloader name directly
Don't derive the bootloader name from the version. Other boards using
the PX4 layer may not necessarily have "px4fmu" name, let alone the
version.
2017-01-30 18:59:34 -08:00
Andrew Tridgell 6747f42986 waf: ensure that we can link to a package before using it
this copes with a PKG_CONFIG_PATH that points at a package for the
wrong architecture
2017-01-30 13:55:57 +11:00
Andrew Tridgell 9d592e005d waf: removed install of oreoled.bin 2017-01-29 16:31:06 +11:00
Andrew Tridgell 977cd3c486 waf: re-enable uavcan on FMUv2 2017-01-29 16:31:06 +11:00
mirkix 61a88a9b5e ardupilotwaf: Add BeagleBone Blue 2017-01-26 23:15:52 -08:00
Andrew Tridgell 1dd6d568ab waf: removed remaining PX4 rangefinder drivers 2017-01-27 18:12:05 +11:00
Andrew Tridgell 2add60bc37 waf: removed PX4 trone driver 2017-01-27 18:11:29 +11:00
Randy Mackay 99ba42c26d Build: do not build PX4Firmware rgbled driver 2017-01-27 15:24:09 +09:00
Andrew Tridgell d07d2d9a40 Tools: adapt to new RC_Channel API 2017-01-12 17:39:37 +11:00
Andrew Tridgell b7081f42cd waf: exclude some files from ROMFS
no need to include oreoled on FMUv2 as its Solo only
2016-12-19 08:07:13 +11:00
Andrew Tridgell 321cad640c waf: trim PX4 config to reduce firmware size
removed unused drivers
2016-12-19 08:07:12 +11:00
Andrew Tridgell 95b848f2b6 waf: fixes for FMUv3 2016-12-19 08:07:12 +11:00
Andrew Tridgell 74a871576c waf: added FMUv3 to build 2016-12-19 08:07:12 +11:00
Andrew Tridgell 35bed59bd4 Tools: Add EKF3 and remove EK1 2016-12-19 08:07:10 +11:00
Andrew Tridgell 7e0d904657 Tools: link in AP_FlashStorage 2016-12-02 09:49:39 +11:00
Andrew Tridgell 4ef4016e5e mk: removed PX4 irlock driver 2016-11-28 08:39:07 +11:00
Andrew Tridgell 752a5035d0 waf: remove px4flow from build 2016-11-28 08:26:57 +11:00
Julien Beraud c6107d812d waf: Don't use lttng in static builds
already done for libiio and libdl
2016-11-16 01:23:10 -02:00
Andrew Tridgell 111d8c05dc waf: link in less drivers on Pixracer 2016-11-10 12:55:48 +11:00
Andrew Tridgell dc439d281e Tools: removed PX4 airspeed drivers 2016-11-09 17:07:59 +11:00
floaledm 8d0fd7cea8 Tools: add AP_Frsky_Telem 2016-11-08 07:42:39 +11:00
Lucas De Marchi 57aec40acb build: disable O_CLOEXEC for PX4 and VRBRAIN 2016-11-07 12:37:30 -03:00
Lucas De Marchi 217da05c64 build: Add Urus board to waf 2016-10-27 11:53:26 -02:00
Martin Evans c0b913a975 build: Add Dark board to waf 2016-10-24 10:01:55 -02:00
Lucas De Marchi cc683c1db1 build: use gcc/g++ first
We currently are unable to build on MacOSX unless we give waf the
--check-cxx-compiler g++. Change the compiler order to search for
gcc/g++ first instead of clang/clang++.
2016-10-14 17:30:46 -03:00
Lucas De Marchi 95d5752011 build: fix configure check for headers
When we are checking if a header is available we can't pass -I argument
to our missing/ directory. Otherwise we would end up telling the build
that a header is available when it actually isn't.

This fixes the build of sitl in MacOS with clang.
2016-09-03 01:19:14 -03:00
José Roberto de Souza 6a9addb2a8 waf: Add Intel Aero to waf build
This will be the first board that only build with waf.
2016-09-03 01:03:17 -03:00
Gustavo Jose de Sousa 5d7ca3fd27 waf: build_summary: don't call size for empty list of nodes
Otherwise, that will cause an error.
2016-08-31 00:19:51 -03:00
Gustavo Jose de Sousa 87862a08ab waf: ap_library: make headers whitelist portable
Otherwise it won't work for platforms that don't use Unix style paths.
2016-08-26 13:13:56 -03:00
Gustavo Jose de Sousa a6b55d90a7 waf: cmake: define a dictionary of supported generators
On Windows, using MSYS Makefiles generator doesn't work very well when the
CMakeLists.txt files use custom commands with paths as arguments. Furthermore,
MinGW Makefiles generator can't be used if sh.exe is in the system's path and
some build systems rely on sh for certain tasks (which is the case of PX4
Firmware build). Because of that, the list of generators for Windows has been
narrowed to Ninja and NMake Makefiles.
2016-08-24 12:15:42 -03:00
Gustavo Jose de Sousa 07592d650e waf: px4: copy with shutil module instead of cp program
In order to make it independent of host platform.
2016-08-24 12:15:42 -03:00
Lucas De Marchi e31a06cfdb waf: fix programs searches
Here we do the following:
    1) Move the pkg-config check to boards.py so we only check of it for
       linux boards
    2) Use cfg.find_toolchain_program() if possible, for example, for AR
2016-08-24 12:15:42 -03:00
Gustavo Jose de Sousa f430ef3825 waf: toolchain: override find_g{xx,cc}() instead of wrapping configure()
That's more correct than setting Waf environment variables:

 (1) We don't need to worry about differences between OSes - the previous
 implementation was actually broken for Windows because the program names in
 the environment variables were missing the ".exe" extension.

 (2) That looks better than looping over possible compiler names and running
 the configuration transactionally multiple times.
2016-08-24 12:15:42 -03:00
Gustavo Jose de Sousa 31965689cb waf: persist implicit dependency information across clean
Implicit dependency scanning takes significant time and, since it doesn't
produce files, it's okay to keep the resulting information across clean
commands as long as the scanner is triggered again if there's need to. This
commit accomplishes that.

The advantage of this approach can be observed by the following timings when
building the group "bin":

 Method                                                         Time
 ------------------------------------------------------------------------
 Fully clean build                                              5m18.633s
 Clean build with scanning result persisted                     4m23.346s
 Clean build with ccache but non-persistent scan results        1m40.125s
 Clean build with scanning results persisted and with ccache      14.843s

While at it, move management of information persisted across clean commands to
a separate module.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 6abcf6150c waf: ap_library: use ap_persistent_task_sigs for header checking tasks
In order to make clean builds faster.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa ef4fd0e2d3 waf: add --clean-all-sigs option
Explanation on the option help string.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 0b7a98d40c waf: allow persisting tasks signatures across clean commands
That allows some time consuming tasks that don't really produce anything on the
file system to keep their signature after a clean command is issued.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa a98c42fef9 waf: define ap_groups in ardupilotwaf tool
That makes more sense, since that module is supposed to have basic Ardupilot
specific features. The root wscript should be a mere user of those features.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa a6ec802d28 ap_library: always check included headers when necessary
This approach is better then the previous one mainly because the latter
required creating the task generator for the checks in a separate group and
posting that target implied in posting the whole previous build groups.

Some notes:
 - This is implemented so that headers aren't checked more than once, so there
   might be some checking tasks that won't do anything because the headers are
   checked on another task. Even so, those headers are added to the result of
   scan() in order to provide a consistent output to the user.
 - It is safe manipulating the shared variable dispatched_headers because the
   scan() is called before the task is added to the execution queue.
 - Although we force ap_library_check_headers.scan() to always be called,
   that's OK, because we use the scanning result of the compilation task, which
   returns a cached value if there's no need to rescan.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 51bef96811 waf: px4: accommodate use of ap_library
- Use AP_LIBRARIES_OBJECTS_KW instead of AP_STLIB_FEATURES.
 - Change the feature name to one that makes more sense.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa b8e518a533 waf: use ap_library tool
That way we avoid recompiling source files that don't depend on vehicles.
Change notes:
- UTILITY_SOURCE_EXTS: moved to ap_library
- Task generators indexes: ap_library handles that now and in a better way
- Use of AP_STLIB_FEATURES: it doesn't make sense anymore, since the stlib
  taskgen has empty source list
- Flags and defines: passed down to ap_library through AP_LIBRARIES_OBJECTS_KW
- Set use='mavlink' in AP_LIBRARIES_OBJECTS_KW instead of calls to
  bld.ap_stlib().
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 9a6fcafade waf: ap_library: add tool
That's a tool for creating task generators for libraries object files. One of
the key objectives of this patch is to provide a way to avoid recompiling
sources that are independent of vehicles.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa b191269cc8 waf: px4: run firmware task after link task
This fix a bug introduced by 06a5156 ("waf: px4: reconfigure PX4Firmware for
each program"), with the removal of the call fw_task.set_run_after(cp_lib).
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 8fb6ccc8b7 waf: px4: use copy of "use" in px4_import_objects_from_use()
Utils.to_list() returns the argument if it is a list, which means that
px4_import_objects_from_use() cleared that attribute when processing the queue.
2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 424f6490fc waf: px4: add missing import Errors 2016-08-24 10:46:23 -03:00
Gustavo Jose de Sousa 2e1ac0de8d waf: make get_legacy_defines() "public"
That function will be used by an upcoming separate tool.
2016-08-01 22:04:16 -03:00
Gustavo Jose de Sousa f2dec971e7 waf: add "ap_" prefix to keywords "libraries" and "vehicle"
As an effort to keep things specific to ardupilot API in the build system
consistent and easy way to identify.
2016-08-01 22:04:16 -03:00
Gustavo Jose de Sousa d1c5691501 waf: build_summary: let the user register the post build callback
That allows more control from the user's point of view.
2016-07-28 17:50:19 -03:00
Gustavo Jose de Sousa 4bd17ab90c waf: git_submodule: allow warning about skipped submodules updates
Provide a function to register a post build routine to do the warnings. Do that
way so that the user can chose when to add the callback to the build (i.e.
allow the user to assert a desired order for the post build callbacks to be
called).
2016-07-25 16:45:57 -03:00
Gustavo Jose de Sousa 4cd70842d9 waf: git_submodule: don't update submodule if non-fastforward
Don't cause trouble to developers working on submodules.
2016-07-25 16:45:57 -03:00
Andrew Tridgell db8bf48747 build: added AP_ICEngine to build 2016-07-25 10:06:03 +10:00
Andrew Tridgell 241b6edfcf Build: added AP_Button to build 2016-07-22 15:01:20 +10:00
Andrew Tridgell fd286498af PX4: added otp to the build 2016-07-21 18:05:00 +10:00
Lucas De Marchi 2b1b23cabf build: fix static linking through --static option 2016-07-20 18:03:20 -03:00
Andrew Tridgell 3769e0fc64 waf: build support for Disco 2016-07-20 13:28:28 +10:00
Gustavo Jose de Sousa 9a9b59a97f waf: boards: fix funny CXXFLAGS typo 2016-07-18 15:26:07 -03:00
Gustavo Jose de Sousa 849a83315a waf: git_submodule: fix for Waf 1.9
Tasks cwd must be Node objects in Waf 1.9
2016-07-14 14:00:07 -03:00
Andrew Tridgell d25db426a3 waf: added AP_Module to the build 2016-07-14 13:39:47 +10:00
Lucas De Marchi b375b33189 waf: allow to disable tests
This allows to completely disable the tests. Even the gtest submodule is
not checked out allowing integration on build servers without needing to
download one more submodule.

This is different from the --notests flag. The latter only disables
executing the tests, but always use the submodule.
2016-07-13 15:38:50 -03:00
Lucas De Marchi 8967220652 waf: pass uselib_store in check_package()
This guarantees waf will always add the flags with our known prefix.
2016-07-13 15:24:42 -03:00
Andrew Tridgell 1b12371e25 waf: use define_name in libdl check 2016-07-13 15:24:42 -03:00
Andrew Tridgell a5adae5fb4 waf: make linux check for libdl
needed for libiio
2016-07-13 15:24:42 -03:00
Andrew Tridgell 3322d7c321 waf: don't build bebop static
need dynamic for libiio
2016-07-13 15:24:42 -03:00
Andrew Tridgell 2980d47e23 waf: added check_package() function for pkg-config checks
this converts existing pkg-config checks to use check_package, which
sets up all the needed variables after a check.

This also disables libdl and libiio for static builds, where they make
no sense
2016-07-13 15:24:41 -03:00
Lucas De Marchi ee62b61fc7 waf: use STDC format macros 2016-07-13 14:18:27 +10:00
Lucas De Marchi 8a27680fbb build: check for endian.h and byteswap.h 2016-07-08 19:49:32 -03:00
Siddharth Bharat Purohit 71c2f69a63 waf: add support for sitl build on mac 2016-07-07 11:35:17 -03:00
Gustavo Jose de Sousa a748c52f06 waf: bump to version 1.9.0
Some things worth mentioning:

- That version contains commits we had cherry picked on our submodule.
- There's a patch on top with a fix for the new process spawning used on
  version 1.9.0. That has already been applied to upstream's master, but not
  released yet.
- This patch also does necessary changes on our build system in order to
  accommodate the upgrade. Basically:
  - Use full task class names when calling create_task().
  - Use always_run class attribute instead of the decorator, which is
    deprecated.
2016-06-29 11:18:22 -03:00
Lucas De Marchi 3a5bc141bb build: use format macros in all linux boards
This doesn't work for px4 since it manually defines __STDC_FORMAT_MACROS
in some px4 modules, which needs to be updated.
2016-06-25 12:51:55 -03:00
Lucas De Marchi a9919420c6 waf: allow to disable libiio at configuration
We default to autodetection for libiio so if the libraries are available
we enable it. However this may not always be desired.
2016-06-23 19:08:13 -03:00
Lucas De Marchi 348678888b waf: allow to disable lttng at configuration
We default to autodetection for LTTNG so if the libraries are available
we enable it. However this may not always be desired.
2016-06-23 19:07:26 -03:00
Gustavo Jose de Sousa 6fa97c2289 waf: px4: require cmake version at least 3.2
That way we avoid build errors due to things not supported in earlier versions.
2016-06-03 09:55:17 -03:00
Gustavo Jose de Sousa 03728ac2f7 waf: cmake: enable minimum version checking
By using the environment variable CMAKE_MIN_VERSION.
2016-06-03 09:55:17 -03:00
Gustavo Jose de Sousa 8e9752c3d3 waf: px4: setup build summary
- Pass the correct nodes as the binaries for the programs task generators.
- Print extra information specific to PX4 build.
2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa d65a7897e4 waf: px4: keep ELF files around
Including px4io. We need them for the build summary. Also, that makes it easier
to use gdb on them.
2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa 4f3af94c57 waf: build_summary: add Waf tool 2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa afcabda21c waf: use better style for add_option() calls
Setting the "help" keyword argument may not fit in one line sometimes. This
patch adds the following convention to calls to add_option() in order to
address that issue in a better way:

    1) The "help" keyword must always be the last argument to be passed.

    2) If the help string is a literal string or a literal string with some
    operation (e.g. "%" operator) and setting the "help" keyword in the code
    doesn't fit a line (considering the limit of characters in a line), then
    the help string must be a triple-quoted string. That has the advantage of
    not having to have several "+" operations for long help strings. In that
    case, the help message must start on the next line and the closing
    triple-quotes must be on a separate line together with the closing
    parenthesis.

The requirement (1) makes it easier to make the style exception in (2)
acceptable.
2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa 64b8ec61c7 waf: set lib as output dir for static libraries 2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa 236a62f4b9 waf: create program_dir directory
There's an upcoming patch that moves all static libraries to
`build/<board>/lib/`. That way, the program directory won't be created
automatically by the build system and that will cause problems for PX4 builds,
since it builds ardupilot programs as static libraries and copies stuff to the
program directory.
2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa 844222870c waf: boards: bind get_board() to configure and build contexts
A convenience, since we don't expect the board to change for a given
configuration.
2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa 80f03b618b waf: toolchain: add find_toolchain_program() 2016-05-25 17:47:00 -03:00
Gustavo Jose de Sousa 06a515645e waf: px4: reconfigure PX4Firmware for each program
A (possible) bug in CMake makes it not to relink firmware_nuttx sometimes when
the following sequence of events happen with very short period of time in
between them:
    1) cmake target build_firmware_px4fmu-v2 just finishes
    2) px4-extra-files/libap_program.a is replaced with the next library
    3) cmake target build_firmware_px4fmu-v2 is run

It's unfortunate to have to reconfigure PX4Firmware with a different path
because of the overhead added.

That problem was found with CMake 3.5.2 and is reproducible with the following
bash script (with git HEAD at ae3cb05 'HAL_PX4: disable "Overtime in task"
msg'):

```
modules/waf/waf-light configure --board px4-v2
modules/waf/waf-light build --targets bin/arduplane,bin/arducopter-quad

fails=0
total=0
while true; do
    cp build/px4-v2/bin/libarducopter-quad.a \
       build/px4-v2/px4-extra-files/libap_program.a
    cmake --build build/px4-v2/modules/PX4Firmware \
          --target build_firmware_px4fmu-v2 &> /dev/null
    h1=$(sha256sum build/px4-v2/modules/PX4Firmware/src/firmware/nuttx/firmware_nuttx \
                   | cut -d" " -f1)

    cp build/px4-v2/bin/libarduplane.a build/px4-v2/px4-extra-files/libap_program.a
    cmake --build build/px4-v2/modules/PX4Firmware \
          --target build_firmware_px4fmu-v2 &> /dev/null
    h2=$(sha256sum build/px4-v2/modules/PX4Firmware/src/firmware/nuttx/firmware_nuttx \
                   | cut -d" " -f1)

    [[ $h1 == $h2 ]] && ((fails++))
    ((total++))
    printf "\r%d/%d" $fails $total
done
```
2016-05-25 11:51:40 -03:00
Gustavo Jose de Sousa fee5053493 waf: cmake: reconfigure when configuration data change
Create a new configuration task a configuration in the CMakeConfig object
changes. That allows building targets for different configurations in one waf
build run.
2016-05-25 11:51:40 -03:00
Gustavo Jose de Sousa ce0ae66b19 waf: cmake: add CMAKE_VARS to task uid()
To allow the correct multiple instantiations of the cmake_configuration tasks
for different states CMake variables.
2016-05-25 11:51:40 -03:00
Gustavo Jose de Sousa b6a5052a97 waf: cmake: use CMakeConfig class instead of taskgen
That will make it easier to allow reconfiguration of cmake builds on a single
waf build run.
2016-05-25 11:51:40 -03:00
Lucas De Marchi 563614e84b waf: check for libiio for all linux boards 2016-05-23 12:06:42 -03:00
Lucas De Marchi 04fc1e22da waf: check for lttng-ust for all linux boards 2016-05-23 12:06:42 -03:00
Lucas De Marchi 9ac6c399e9 waf: accept env variable to append library
Change check_librt() to do everything it needs to check for librt.
2016-05-23 12:06:42 -03:00
Andrew Tridgell a1c52415e9 waf: pass mavlink include path into cmake build 2016-05-21 15:25:18 +10:00
Andrew Tridgell 7e7c21d114 waf: update for MAVLink2 build 2016-05-21 15:25:17 +10:00
Gustavo Jose de Sousa bc62164ac9 waf: mavgen: scan for implicit dependencies
Process the input file to catch dependencies. Otherwise, changes in included
files wouldn't trigger the code regeneration.
2016-05-19 18:47:07 -03:00
Gustavo Jose de Sousa 0f60c8ed4f waf: boards: check for librt when necessary 2016-05-19 18:15:06 -03:00
Gustavo Jose de Sousa f10c150e70 waf: cxx_checks: add check_librt()
That function verifies for the necessity of linking against librt. If so, then
it checks if it is possible to do so.
2016-05-19 18:15:06 -03:00
Gustavo Jose de Sousa e630c2b33f waf: cxx_checks: define ap_common_checks() instead of configure()
That allow loading the cxx_checks tool before the calls to configure_env().
That way, we can add check functions to be used across boards.
2016-05-19 18:15:06 -03:00
Gustavo Jose de Sousa 83244dfe10 waf: cxx_checks: add copyright notice 2016-05-19 18:15:06 -03:00
Gustavo Jose de Sousa 468e8284f0 waf: cxx_checks: use check() instead of check_cxx()
check_cxx() is deprecated.
2016-05-19 18:15:06 -03:00
Francisco Ferreira 057124bd90 waf: px4: use lib/rc for v4
Some functions from that module are necessary for px4-v4.
2016-05-18 15:36:48 -03:00
Gustavo Jose de Sousa 8578d7c16f waf: px4: don't add libarm_cortexM4lf_math.a to extra libs
This is following d02abf2 ("Removed CMSIS.") from PX4Firmware.
2016-05-18 15:36:48 -03:00
Gustavo Jose de Sousa f29d8bd42c waf: px4: set ARDUPILOT_BUILD cmake variable
That allow changing PX4Firmware build system to accommodate ardupilot's build.
2016-05-18 15:36:48 -03:00
Gustavo Jose de Sousa 4529028c8a waf: ardupilotwaf: ap_get_all_libraries: ignore non-directory files
Each library in ardupilot is a folder with the source in. That avoids build
failures when there are files in libraries/. That fixes #4099 ("waf doesn't
seem to like TAGS files") and #4093 ("sim_vehicle.py /w waf /w eclipse project
broken on Cygwin").

That problem can be reproduced by just creating a file in libraries/ and trying
to build with waf.

There should be a better way to confirm a path is an ardupilot library. That
can be done later.
2016-05-12 13:47:44 -03:00
Andrew Tridgell fcd7611248 waf: ensure we don't build a library twice 2016-05-10 14:21:43 +10:00
Andrew Tridgell 2f656c187a waf: cope with -ve return from mavgen on segv 2016-05-10 13:41:48 +10:00
Andrew Tridgell 9653aae21f waf: fixed link of antennatracker on windows 2016-05-10 12:48:41 +10:00
Andrew Tridgell 5ef0c4d3fe waf: added AP_RPM to build 2016-05-10 12:20:44 +10:00
Andrew Tridgell 237b63284b waf: fixed typo 2016-05-10 12:17:44 +10:00
Lucas De Marchi e5a21cd459 waf: allow mavgen to segfault without failing
This is a hackish way to allow waf running on windows. In some
combinations of the tools the python interpreter seems to be crashing on
windows:

	Found 180 MAVLink message types in 2 XML files
	Generating C implementation in directory /tmp/ArduPlane.build/libraries/GCS_MAVLink/include/mavlink/v1.0/ardupilotmega
	Generating C implementation in directory /tmp/ArduPlane.build/libraries/GCS_MAVLink/include/mavlink/v1.0/common
	Copying fixed headers
	last line in mavgen.py
	Aborted (core dumped)

	michael@WIN-3NBOUTHN4TN /cygdrive/c/Users/michael/Desktop/DIYDrones/ardupilot/ArduPlane
	$ echo $?
	134

Here we check the return code to be greater than 128 since that means the
interpreter received a signal. In this case we clear the return code.
2016-05-10 12:17:10 +10:00
Gustavo Jose de Sousa ff46384258 waf: add --debug configuration option
That sets a variant <board>-debug.
2016-05-07 22:55:03 -03:00
Andrew Tridgell d1a2749317 waf: fixed build for AP_Tuning 2016-05-07 18:34:11 +10:00
Lucas De Marchi ddbce5b130 waf: change mavgen generation to blue
Like other generators in px4.
2016-05-06 13:11:28 -03:00
Lucas De Marchi 9e3ec3a16d waf: define git versions in a generated ap_version.h header 2016-05-06 13:11:28 -03:00
Lucas De Marchi 2c029ae1f9 waf: fix undef warnings in examples
Fix warnings like this:

<command-line>:0:21: warning: "APM_BUILD_DataFlash_test" is not defined [-Wundef]
/home/lucas/p/dronecode/ardupilot/libraries/AP_Vehicle/AP_Vehicle_Type.h:36:41: note: in expansion of macro ‘APM_BUILD_DIRECTORY’
 #define APM_BUILD_TYPE(type) ((type) == APM_BUILD_DIRECTORY)
                                         ^
These happen because we are trying to set APM_BUILD_DIRECTORY to undefined
values. We should rather default to the APM_BUILD_DIRECTORY ==
APM_BUILD_UNKNOWN
2016-05-04 08:58:37 -03:00
Lucas De Marchi 5b88ae90fd waf: be compatible with git < 1.8.5
The -C option was added to git in version 1.8.5 which is not available
in Ubuntu 12.04.
2016-05-03 18:02:32 -03:00
Julien Beraud 5418f71aae waf: add libiio support for bebop
check for the presence of libiio to enable the compilation of
the bebop rangefinder that needs it.
If the build remains static, there needs to be a rootfs that contains
the libiio.a file because it is not included in the debian package.
A solution can be to compile libiio and copy libiio.a in /usr/lib[/arch]
2016-05-03 16:43:39 -03:00
Lucas De Marchi e6907a607b waf: link with winmm on cygwin
Otherwise it fails to link:

[335/335] Linking build/sitl/bin/arducopter-quad.exe
ArduCopter/libArduCopter_libs.a(SIM_Aircraft.cpp.4.o):SIM_Aircraft.cpp:(.text$_ZN4SITL8AircraftC2EPKcS2_+0x230): undefined reference to `_imp__timeGetTime@0'
ArduCopter/libArduCopter_libs.a(SIM_Aircraft.cpp.4.o):SIM_Aircraft.cpp:(.text$_ZN4SITL8Aircraft16setup_frame_timeEff+0x9f): undefined reference to `_imp__timeGetTime@0'
ArduCopter/libArduCopter_libs.a(SIM_Aircraft.cpp.4.o):SIM_Aircraft.cpp:(.text$_ZN4SITL8Aircraft16setup_frame_timeEff+0x125): undefined reference to `_imp__timeGetTime@0'
ArduCopter/libArduCopter_libs.a(SIM_Aircraft.cpp.4.o):SIM_Aircraft.cpp:(.text$_ZN4SITL8Aircraft15sync_frame_timeEv+0x21): undefined reference to `_imp__timeGetTime@0'
ArduCopter/libArduCopter_libs.a(SIM_Aircraft.cpp.4.o):SIM_Aircraft.cpp:(.text$_ZN4SITL8Aircraft15sync_frame_timeEv+0x152): undefined reference to `_imp__timeGetTime@0'
ArduCopter/libArduCopter_libs.a(SIM_Aircraft.cpp.4.o):SIM_Aircraft.cpp:(.text$_ZNK4SITL8Aircraft16get_wall_time_usEv+0xe): more undefined references to `_imp__timeGetTime@0' follow
collect2: error: ld returned 1 exit status
2016-04-19 19:02:25 -03:00
Francisco Ferreira d3b20f9fd1 waf: px4: allow git version to be defined externally 2016-04-17 14:47:55 -03:00
Andrew Tridgell 5bd0adf980 waf: mark build as ARDUPILOT_BUILD
this helps with small build differences in px4 tree
2016-04-14 08:05:05 +10:00
Lucas De Marchi cc24f323d2 waf: add messages to the things we are checking for
Before:
Checking for code snippet                : yes
Checking for code snippet                : yes
Checking for code snippet                : yes
Checking for code snippet                : yes
Checking for code snippet                : no
Checking for code snippet                : no

After:
Checking for HAVE_CMATH_ISFINITE         : yes
Checking for HAVE_CMATH_ISINF            : yes
Checking for HAVE_CMATH_ISNAN            : yes
Checking for NEED_CMATH_ISFINITE_STD_NAMESPACE : yes
Checking for NEED_CMATH_ISINF_STD_NAMESPACE    : no
Checking for NEED_CMATH_ISNAN_STD_NAMESPACE    : no
2016-04-05 21:06:25 -07:00
Lucas De Marchi 169c350e85 waf: rename AP_Config.h to ap_config.h
The usual name for this header is config.h, but that's already used by
vehicles. Using uppercase could give the impression this is a
file to be modified, but it's not. Use lowercase instead.
2016-04-05 21:06:25 -07:00
Ricardo de Almeida Gonzaga 5e45c9dfb0 waf: add cxx_checks tool
In order to start generating AP_Config header and detect
parameter such as the existence of cmath functions.
2016-04-05 20:44:15 -07:00
Ricardo de Almeida Gonzaga 14dbc16d46 waf: start using 'AP_Common/missing' to all boards 2016-04-05 20:44:15 -07:00
Gustavo Jose de Sousa 051e8a6bda waf: px4: use explicit list for ROMFS static files
Files that are not really part of the ROMFS in the folder might cause problems.

One problem that motivated this patch was caused because the make-based build
system copies the bootloader to the ROMFS in the source tree (mk/PX4/ROMFS)
instead of the build tree. That potentially could cause race condition between
the tasks created by 'px4_romfs_static_files' and 'px4_romfs_bootloader'.

Also, now we have only one task generator for static files.
2016-03-30 18:49:11 -03:00
Gustavo Jose de Sousa 218dc3fdf2 waf: px4: fix log output for px4_copy task
It was displaying the source path as the destination!
2016-03-30 18:49:11 -03:00
Francisco Ferreira d54a22baaa waf: boards: change no-unknown-pragmas to all compilers instead of only Clang 2016-03-30 01:32:45 -03:00
Francisco Ferreira 0eaf6f17c8 waf: toolchain: fix Clang toolchain detection 2016-03-29 15:02:33 -03:00
Gustavo Jose de Sousa b251d14778 waf: ardupilotwaf: allow multiple program groups for program
The program_dir defaults to the first group's name. That feature will be useful
for "copter" build command, which will build all frame types.
2016-03-26 15:43:08 -03:00
Gustavo Jose de Sousa 22b0b7e833 waf: ardupilotwaf: add program_dir option to ap_program()
That way we don't force other programs to be built on a directory of their
program group name. The directory name defaults to the program group.

We are separating those two concepts because of the upcoming support for
multiple groups for a program.
2016-03-26 15:43:08 -03:00
Gustavo Jose de Sousa 6e658452ec waf: toolchain: filter supported compilers for cross-compilation
We currently only support GNU and clang compilers.
2016-03-23 17:11:02 -03:00
Gustavo Jose de Sousa 1b6a87d8b4 waf: toolchain: clang: use waf to find toolchain path
The find_realexec_path function was used for finding the toolchain path mostly
because of two reasons:

 1) We couldn't really use CXX or CC variables because the user could set those
 from the OS's environment and Waf wouldn't look for the executable file in
 that case.

 2) Our CI configuration sets up symlinks for ccache and find_realexec_path
 works around that issue.

The bad side about using find_realexec_path() is that, besides working aroung
symlinks, it does the same thing that is done by Waf. This patch removes the
dependency for such a function by addressing each of the reasons above stated:

 1) We create a local copy of os.environ and, if there's a variable with the
 same name we are using, we remove it from the local copy.

 2) As done before, we are looking for the cross ar program instead of gcc
 program, since that is not used for ccache symlinks.
2016-03-23 17:11:02 -03:00
Gustavo Jose de Sousa 019cf3d483 waf: toolchain: clang: use configure wrapper
This is a better approach than checking command line options
--check-cxx-compiler and --check-c-compiler. Those values expect a list of
compilers to try instead of the compiler to use.

The benefits of this approach are:
 - Allowing correct use of options --check-cxx-compiler and --check-c-compiler.
 - Allowing user to pass CXX and CC environment variables, which is a common
   way of selecting the compiler.
 - Configuration is done *and committed* only for the specific compiler.
2016-03-23 17:11:02 -03:00
Gustavo Jose de Sousa 7ede9600db waf: toolchain: gcc: use cross-compilation prefix wrapper
This is a better approach than checking command line options
--check-cxx-compiler and --check-c-compiler. Those values expect a list of
compilers to try instead of the compiler to use.

The benefits of this approach are:
 - Allowing correct use of options --check-cxx-compiler and --check-c-compiler.
 - Allowing user to pass CXX and CC environment variables, which is a common
   way of selecting the compiler.
 - Configuration is done *and committed* only for the specific compiler.
2016-03-23 17:11:02 -03:00