Added native development platform

This commit is contained in:
Ivan Kravets
2015-08-03 12:33:37 +03:00
parent 0d196ef7b7
commit f0d849a702
6 changed files with 133 additions and 25 deletions

View File

@ -1,6 +1,13 @@
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)
------------------

View 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
MCU, upload protocol or etc. Please use ``board`` option.
Embedded
--------
.. toctree::
:maxdepth: 2
@ -25,5 +28,20 @@ MCU, upload protocol or etc. Please use ``board`` option.
teensy
timsp430
titiva
Desktop
-------
.. toctree::
:maxdepth: 2
native
Own Platform/Board
------------------
.. toctree::
:maxdepth: 2
creating_platform
creating_board

View 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::

View 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])

View 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 = {
}

View File

@ -67,8 +67,14 @@ def generate_boards(boards):
def generate_packages(packages):
if not packages:
return
allpackages = get_packages()
lines = []
lines.append("""
Packages
--------
""")
lines.append(""".. list-table::
:header-rows: 1
@ -116,13 +122,30 @@ For more detailed information please visit `vendor site <%s>`_.""" %
p.get_vendor_url())
lines.append("""
.. 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
----------
.. list-table::
@ -130,18 +153,23 @@ Frameworks
* - Name
- Description""")
lines.extend(_frameworks_lines)
_frameworks = util.get_frameworks()
for framework in sorted(_frameworks.keys()):
if not is_compat_platform_and_framework(name, framework):
continue
#
# Boards
#
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("""
* - :ref:`framework_{type_}`
- {description}""".format(
type_=framework,
description=_frameworks[framework]['description']))
lines.append("""
Boards
------
@ -152,19 +180,11 @@ Boards
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()):
lines.append(str(vendor))
lines.append("~" * len(vendor))
lines.append(generate_boards(boards))
return "\n".join(lines)