forked from platformio/platformio-core
Merge branch 'feature/issue-263-native-platform' into develop
This commit is contained in:
@@ -1,6 +1,13 @@
|
|||||||
Release History
|
Release History
|
||||||
===============
|
===============
|
||||||
|
|
||||||
|
2.3.0 (2015-??-??)
|
||||||
|
------------------
|
||||||
|
|
||||||
|
* Added `native <http://docs.platformio.org/en/latest/platforms/native.html>`_
|
||||||
|
development platform
|
||||||
|
(`issue #263 <https://github.com/platformio/platformio/issues/263>`_)
|
||||||
|
|
||||||
2.2.2 (2015-07-30)
|
2.2.2 (2015-07-30)
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
|
@@ -200,7 +200,7 @@ Build Script
|
|||||||
|
|
||||||
Platform's build script is based on a next-generation build tool named
|
Platform's build script is based on a next-generation build tool named
|
||||||
`SCons <http://www.scons.org>`_. PlatformIO has own built-in firmware builder
|
`SCons <http://www.scons.org>`_. PlatformIO has own built-in firmware builder
|
||||||
``env.BuildFirmware`` with the nested libraries search. Please look into a
|
``env.BuildProgram`` with the nested libraries search. Please look into a
|
||||||
base template of ``test-builder.py``.
|
base template of ``test-builder.py``.
|
||||||
|
|
||||||
.. code-block:: python
|
.. code-block:: python
|
||||||
@@ -260,7 +260,7 @@ base template of ``test-builder.py``.
|
|||||||
#
|
#
|
||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
@@ -383,7 +383,7 @@ and copy there two files:
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -11,6 +11,9 @@ Also it has pre-configured settings for most popular **Embedded Platform
|
|||||||
Boards**. You have no need to specify in :ref:`projectconf` type or frequency of
|
Boards**. You have no need to specify in :ref:`projectconf` type or frequency of
|
||||||
MCU, upload protocol or etc. Please use ``board`` option.
|
MCU, upload protocol or etc. Please use ``board`` option.
|
||||||
|
|
||||||
|
Embedded
|
||||||
|
--------
|
||||||
|
|
||||||
.. toctree::
|
.. toctree::
|
||||||
:maxdepth: 2
|
:maxdepth: 2
|
||||||
|
|
||||||
@@ -25,5 +28,20 @@ MCU, upload protocol or etc. Please use ``board`` option.
|
|||||||
teensy
|
teensy
|
||||||
timsp430
|
timsp430
|
||||||
titiva
|
titiva
|
||||||
|
|
||||||
|
Desktop
|
||||||
|
-------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
|
native
|
||||||
|
|
||||||
|
Own Platform/Board
|
||||||
|
------------------
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
|
||||||
creating_platform
|
creating_platform
|
||||||
creating_board
|
creating_board
|
||||||
|
9
docs/platforms/native.rst
Normal file
9
docs/platforms/native.rst
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
.. _platform_native:
|
||||||
|
|
||||||
|
Platform ``native``
|
||||||
|
===================
|
||||||
|
Native development platform is intended to be used for desktop OS. This platform uses built-in tool chains (preferable based on GCC), frameworks, libs from particular OS where it will be run.
|
||||||
|
|
||||||
|
For more detailed information please visit `vendor site <http://platformio.org/#!/platforms/native>`_.
|
||||||
|
|
||||||
|
.. contents::
|
@@ -435,14 +435,8 @@ See built-in examples of `PlatformIO build scripts <https://github.com/platformi
|
|||||||
^^^^^^^^^^^
|
^^^^^^^^^^^
|
||||||
|
|
||||||
A list with targets which will be processed by :ref:`cmd_run` command by
|
A list with targets which will be processed by :ref:`cmd_run` command by
|
||||||
default. You can enter more then one target separated with "space".
|
default. You can enter more then one target separated with "space". Which
|
||||||
|
targets are supported is described in :option:`platformio run --target`.
|
||||||
Pre-built targets:
|
|
||||||
|
|
||||||
* ``clean`` delete compiled object files, libraries and firmware binaries
|
|
||||||
* ``upload`` enable "auto-uploading" for embedded platforms after building
|
|
||||||
operation
|
|
||||||
* ``envdump`` dump current build environment
|
|
||||||
|
|
||||||
**Tip!** You can use these targets like an option to
|
**Tip!** You can use these targets like an option to
|
||||||
:option:`platformio run --target` command. For example:
|
:option:`platformio run --target` command. For example:
|
||||||
|
@@ -33,7 +33,16 @@ Process specified environments
|
|||||||
.. option::
|
.. option::
|
||||||
-t, --target
|
-t, --target
|
||||||
|
|
||||||
Process specified targets
|
Process specified targets.
|
||||||
|
|
||||||
|
Pre-built targets:
|
||||||
|
|
||||||
|
* ``clean`` delete compiled object files, libraries and firmware/program binaries
|
||||||
|
* ``upload`` enable "auto-uploading" for embedded platforms after building
|
||||||
|
operation
|
||||||
|
* ``uploadlazy`` upload existing firmware without project rebuilding
|
||||||
|
* ``envdump`` dump current build environment
|
||||||
|
* ``size`` print the size of the sections in a firmware/program
|
||||||
|
|
||||||
.. option::
|
.. option::
|
||||||
--upload-port
|
--upload-port
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||||
# See LICENSE for details.
|
# See LICENSE for details.
|
||||||
|
|
||||||
VERSION = (2, 2, 2)
|
VERSION = (2, 3, "0.dev0")
|
||||||
__version__ = ".".join([str(s) for s in VERSION])
|
__version__ = ".".join([str(s) for s in VERSION])
|
||||||
|
|
||||||
__title__ = "platformio"
|
__title__ = "platformio"
|
||||||
|
@@ -95,7 +95,7 @@ else:
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Extract EEPROM data (from EEMEM directive) to .eep file
|
# Target: Extract EEPROM data (from EEMEM directive) to .eep file
|
||||||
|
@@ -77,7 +77,7 @@ env.Append(
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -52,7 +52,10 @@ env.Replace(
|
|||||||
|
|
||||||
LIBS=["c", "gcc", "m"],
|
LIBS=["c", "gcc", "m"],
|
||||||
|
|
||||||
SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES'
|
SIZEPRINTCMD='"$SIZETOOL" -B -d $SOURCES',
|
||||||
|
|
||||||
|
PROGNAME="firmware",
|
||||||
|
PROGSUFFIX=".elf"
|
||||||
)
|
)
|
||||||
|
|
||||||
env.Append(
|
env.Append(
|
||||||
|
@@ -49,7 +49,10 @@ env.Replace(
|
|||||||
|
|
||||||
LIBS=["m"],
|
LIBS=["m"],
|
||||||
|
|
||||||
SIZEPRINTCMD='"$SIZETOOL" --mcu=$BOARD_MCU -C -d $SOURCES'
|
SIZEPRINTCMD='"$SIZETOOL" --mcu=$BOARD_MCU -C -d $SOURCES',
|
||||||
|
|
||||||
|
PROGNAME="firmware",
|
||||||
|
PROGSUFFIX=".elf"
|
||||||
)
|
)
|
||||||
|
|
||||||
env.Append(
|
env.Append(
|
||||||
|
@@ -80,7 +80,10 @@ env.Replace(
|
|||||||
"-ca", "0x40000" if "FRAMEWORK" not in env else "0x10000",
|
"-ca", "0x40000" if "FRAMEWORK" not in env else "0x10000",
|
||||||
"-cf", "${SOURCES[1]}"
|
"-cf", "${SOURCES[1]}"
|
||||||
],
|
],
|
||||||
UPLOADCMD='$UPLOADER $UPLOADERFLAGS'
|
UPLOADCMD='$UPLOADER $UPLOADERFLAGS',
|
||||||
|
|
||||||
|
PROGNAME="firmware",
|
||||||
|
PROGSUFFIX=".elf"
|
||||||
)
|
)
|
||||||
|
|
||||||
env.Append(
|
env.Append(
|
||||||
@@ -129,7 +132,7 @@ if "FRAMEWORK" not in env:
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .hex
|
# Target: Build the .hex
|
||||||
|
@@ -18,7 +18,7 @@ SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py")))
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
36
platformio/builder/scripts/native.py
Normal file
36
platformio/builder/scripts/native.py
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||||
|
# See LICENSE for details.
|
||||||
|
|
||||||
|
"""
|
||||||
|
Builder for native platform
|
||||||
|
"""
|
||||||
|
|
||||||
|
from SCons.Script import DefaultEnvironment, AlwaysBuild, Default
|
||||||
|
|
||||||
|
env = DefaultEnvironment()
|
||||||
|
|
||||||
|
env.Replace(
|
||||||
|
|
||||||
|
SIZEPRINTCMD="size $SOURCES",
|
||||||
|
|
||||||
|
PROGNAME="program"
|
||||||
|
)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Target: Build executable program
|
||||||
|
#
|
||||||
|
|
||||||
|
target_bin = env.BuildProgram()
|
||||||
|
|
||||||
|
#
|
||||||
|
# Target: Print binary size
|
||||||
|
#
|
||||||
|
|
||||||
|
target_size = env.Alias("size", target_bin, "$SIZEPRINTCMD")
|
||||||
|
AlwaysBuild(target_size)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Target: Define targets
|
||||||
|
#
|
||||||
|
|
||||||
|
Default([target_bin])
|
@@ -18,7 +18,7 @@ SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py")))
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -27,7 +27,7 @@ SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py")))
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -18,7 +18,7 @@ SConscript(env.subst(join("$PIOBUILDER_DIR", "scripts", "basearm.py")))
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -65,7 +65,7 @@ env.Append(
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -61,7 +61,7 @@ else:
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the firmware file
|
# Target: Build the firmware file
|
||||||
|
@@ -57,7 +57,10 @@ env.Replace(
|
|||||||
"$UPLOAD_PROTOCOL" if system() != "Windows" else "tilib",
|
"$UPLOAD_PROTOCOL" if system() != "Windows" else "tilib",
|
||||||
"--force-reset"
|
"--force-reset"
|
||||||
],
|
],
|
||||||
UPLOADCMD='$UPLOADER $UPLOADERFLAGS "prog $SOURCES"'
|
UPLOADCMD='$UPLOADER $UPLOADERFLAGS "prog $SOURCES"',
|
||||||
|
|
||||||
|
PROGNAME="firmware",
|
||||||
|
PROGSUFFIX=".elf"
|
||||||
)
|
)
|
||||||
|
|
||||||
env.Append(
|
env.Append(
|
||||||
@@ -80,7 +83,7 @@ env.Append(
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .hex
|
# Target: Build the .hex
|
||||||
|
@@ -31,7 +31,7 @@ env.Append(
|
|||||||
# Target: Build executable and linkable firmware
|
# Target: Build executable and linkable firmware
|
||||||
#
|
#
|
||||||
|
|
||||||
target_elf = env.BuildFirmware()
|
target_elf = env.BuildProgram()
|
||||||
|
|
||||||
#
|
#
|
||||||
# Target: Build the .bin file
|
# Target: Build the .bin file
|
||||||
|
@@ -4,9 +4,11 @@
|
|||||||
import atexit
|
import atexit
|
||||||
import re
|
import re
|
||||||
from glob import glob
|
from glob import glob
|
||||||
from os import remove
|
from os import environ, remove
|
||||||
from os.path import basename, join
|
from os.path import basename, join
|
||||||
|
|
||||||
|
from platformio.util import exec_command
|
||||||
|
|
||||||
|
|
||||||
class InoToCPPConverter(object):
|
class InoToCPPConverter(object):
|
||||||
|
|
||||||
@@ -157,6 +159,22 @@ def DumpIDEData(env):
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def GetCompilerType(env):
|
||||||
|
try:
|
||||||
|
sysenv = environ.copy()
|
||||||
|
sysenv['PATH'] = str(env['ENV']['PATH'])
|
||||||
|
result = exec_command([env.subst("$CC"), "-v"], env=sysenv)
|
||||||
|
except OSError:
|
||||||
|
return None
|
||||||
|
if result['returncode'] != 0:
|
||||||
|
return None
|
||||||
|
output = "".join([result['out'], result['err']]).lower()
|
||||||
|
for type_ in ("clang", "gcc"):
|
||||||
|
if type_ in output:
|
||||||
|
return type_
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
def exists(_):
|
def exists(_):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
@@ -164,4 +182,5 @@ def exists(_):
|
|||||||
def generate(env):
|
def generate(env):
|
||||||
env.AddMethod(ConvertInoToCpp)
|
env.AddMethod(ConvertInoToCpp)
|
||||||
env.AddMethod(DumpIDEData)
|
env.AddMethod(DumpIDEData)
|
||||||
|
env.AddMethod(GetCompilerType)
|
||||||
return env
|
return env
|
||||||
|
@@ -20,7 +20,7 @@ SRC_DEFAULT_FILTER = " ".join([
|
|||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
def BuildFirmware(env):
|
def BuildProgram(env):
|
||||||
|
|
||||||
# fix ASM handling under non-casitive OS
|
# fix ASM handling under non-casitive OS
|
||||||
if not case_sensitive_suffixes(".s", ".S"):
|
if not case_sensitive_suffixes(".s", ".S"):
|
||||||
@@ -43,7 +43,7 @@ def BuildFirmware(env):
|
|||||||
)
|
)
|
||||||
|
|
||||||
# enable "cyclic reference" for linker
|
# enable "cyclic reference" for linker
|
||||||
if env.get("LIBS", deplibs):
|
if env.get("LIBS", deplibs) and env.GetCompilerType() == "gcc":
|
||||||
env.Prepend(
|
env.Prepend(
|
||||||
_LIBFLAGS="-Wl,--start-group "
|
_LIBFLAGS="-Wl,--start-group "
|
||||||
)
|
)
|
||||||
@@ -63,14 +63,13 @@ def BuildFirmware(env):
|
|||||||
)
|
)
|
||||||
|
|
||||||
return env.Program(
|
return env.Program(
|
||||||
join("$BUILD_DIR", "firmware"),
|
join("$BUILD_DIR", env.subst("$PROGNAME")),
|
||||||
env.LookupSources(
|
env.LookupSources(
|
||||||
"$BUILDSRC_DIR", "$PROJECTSRC_DIR", duplicate=False,
|
"$BUILDSRC_DIR", "$PROJECTSRC_DIR", duplicate=False,
|
||||||
src_filter=getenv("PLATFORMIO_SRC_FILTER",
|
src_filter=getenv("PLATFORMIO_SRC_FILTER",
|
||||||
env.get("SRC_FILTER", None))),
|
env.get("SRC_FILTER", None))),
|
||||||
LIBS=env.get("LIBS", []) + deplibs,
|
LIBS=env.get("LIBS", []) + deplibs,
|
||||||
LIBPATH=env.get("LIBPATH", []) + ["$BUILD_DIR"],
|
LIBPATH=env.get("LIBPATH", []) + ["$BUILD_DIR"]
|
||||||
PROGSUFFIX=".elf"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
@@ -331,7 +330,7 @@ def exists(_):
|
|||||||
|
|
||||||
|
|
||||||
def generate(env):
|
def generate(env):
|
||||||
env.AddMethod(BuildFirmware)
|
env.AddMethod(BuildProgram)
|
||||||
env.AddMethod(ProcessFlags)
|
env.AddMethod(ProcessFlags)
|
||||||
env.AddMethod(IsFileWithExt)
|
env.AddMethod(IsFileWithExt)
|
||||||
env.AddMethod(VariantDirWrap)
|
env.AddMethod(VariantDirWrap)
|
||||||
|
18
platformio/platforms/native.py
Normal file
18
platformio/platforms/native.py
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# Copyright (C) Ivan Kravets <me@ikravets.com>
|
||||||
|
# See LICENSE for details.
|
||||||
|
|
||||||
|
from platformio.platforms.base import BasePlatform
|
||||||
|
|
||||||
|
|
||||||
|
class NativePlatform(BasePlatform):
|
||||||
|
|
||||||
|
"""
|
||||||
|
Native development platform is intended to be used for desktop OS.
|
||||||
|
This platform uses built-in tool chains (preferable based on GCC),
|
||||||
|
frameworks, libs from particular OS where it will be run.
|
||||||
|
|
||||||
|
http://platformio.org/#!/platforms/native
|
||||||
|
"""
|
||||||
|
|
||||||
|
PACKAGES = {
|
||||||
|
}
|
@@ -67,8 +67,14 @@ def generate_boards(boards):
|
|||||||
|
|
||||||
|
|
||||||
def generate_packages(packages):
|
def generate_packages(packages):
|
||||||
|
if not packages:
|
||||||
|
return
|
||||||
allpackages = get_packages()
|
allpackages = get_packages()
|
||||||
lines = []
|
lines = []
|
||||||
|
lines.append("""
|
||||||
|
Packages
|
||||||
|
--------
|
||||||
|
""")
|
||||||
lines.append(""".. list-table::
|
lines.append(""".. list-table::
|
||||||
:header-rows: 1
|
:header-rows: 1
|
||||||
|
|
||||||
@@ -116,13 +122,30 @@ For more detailed information please visit `vendor site <%s>`_.""" %
|
|||||||
p.get_vendor_url())
|
p.get_vendor_url())
|
||||||
lines.append("""
|
lines.append("""
|
||||||
.. contents::""")
|
.. contents::""")
|
||||||
lines.append("""
|
|
||||||
Packages
|
|
||||||
--------
|
|
||||||
""")
|
|
||||||
lines.append(generate_packages(p.get_packages()))
|
|
||||||
|
|
||||||
lines.append("""
|
#
|
||||||
|
# Packages
|
||||||
|
#
|
||||||
|
_packages_content = generate_packages(p.get_packages())
|
||||||
|
if _packages_content:
|
||||||
|
lines.append(_packages_content)
|
||||||
|
|
||||||
|
#
|
||||||
|
# Frameworks
|
||||||
|
#
|
||||||
|
_frameworks = util.get_frameworks()
|
||||||
|
_frameworks_lines = []
|
||||||
|
for framework in sorted(_frameworks.keys()):
|
||||||
|
if not is_compat_platform_and_framework(name, framework):
|
||||||
|
continue
|
||||||
|
_frameworks_lines.append("""
|
||||||
|
* - :ref:`framework_{type_}`
|
||||||
|
- {description}""".format(
|
||||||
|
type_=framework,
|
||||||
|
description=_frameworks[framework]['description']))
|
||||||
|
|
||||||
|
if _frameworks_lines:
|
||||||
|
lines.append("""
|
||||||
Frameworks
|
Frameworks
|
||||||
----------
|
----------
|
||||||
.. list-table::
|
.. list-table::
|
||||||
@@ -130,18 +153,23 @@ Frameworks
|
|||||||
|
|
||||||
* - Name
|
* - Name
|
||||||
- Description""")
|
- Description""")
|
||||||
|
lines.extend(_frameworks_lines)
|
||||||
|
|
||||||
_frameworks = util.get_frameworks()
|
#
|
||||||
for framework in sorted(_frameworks.keys()):
|
# Boards
|
||||||
if not is_compat_platform_and_framework(name, framework):
|
#
|
||||||
continue
|
vendors = {}
|
||||||
|
for board, data in util.get_boards().items():
|
||||||
|
platform = data['platform']
|
||||||
|
vendor = data['vendor']
|
||||||
|
if name in platform:
|
||||||
|
if vendor in vendors:
|
||||||
|
vendors[vendor].append({board: data})
|
||||||
|
else:
|
||||||
|
vendors[vendor] = [{board: data}]
|
||||||
|
|
||||||
|
if vendors:
|
||||||
lines.append("""
|
lines.append("""
|
||||||
* - :ref:`framework_{type_}`
|
|
||||||
- {description}""".format(
|
|
||||||
type_=framework,
|
|
||||||
description=_frameworks[framework]['description']))
|
|
||||||
|
|
||||||
lines.append("""
|
|
||||||
Boards
|
Boards
|
||||||
------
|
------
|
||||||
|
|
||||||
@@ -152,19 +180,11 @@ Boards
|
|||||||
horizontal.
|
horizontal.
|
||||||
""")
|
""")
|
||||||
|
|
||||||
vendors = {}
|
|
||||||
for board, data in util.get_boards().items():
|
|
||||||
platform = data['platform']
|
|
||||||
vendor = data['vendor']
|
|
||||||
if name in platform:
|
|
||||||
if vendor in vendors:
|
|
||||||
vendors[vendor].append({board: data})
|
|
||||||
else:
|
|
||||||
vendors[vendor] = [{board: data}]
|
|
||||||
for vendor, boards in sorted(vendors.iteritems()):
|
for vendor, boards in sorted(vendors.iteritems()):
|
||||||
lines.append(str(vendor))
|
lines.append(str(vendor))
|
||||||
lines.append("~" * len(vendor))
|
lines.append("~" * len(vendor))
|
||||||
lines.append(generate_boards(boards))
|
lines.append(generate_boards(boards))
|
||||||
|
|
||||||
return "\n".join(lines)
|
return "\n".join(lines)
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user