diff --git a/HISTORY.rst b/HISTORY.rst index 880f3c02..7924a633 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -1,6 +1,13 @@ Release History =============== +2.3.0 (2015-??-??) +------------------ + +* Added `native `_ + development platform + (`issue #263 `_) + 2.2.2 (2015-07-30) ------------------ diff --git a/docs/platforms/index.rst b/docs/platforms/index.rst index 1ed7a115..eaf05de1 100644 --- a/docs/platforms/index.rst +++ b/docs/platforms/index.rst @@ -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 diff --git a/docs/platforms/native.rst b/docs/platforms/native.rst new file mode 100644 index 00000000..5a01d633 --- /dev/null +++ b/docs/platforms/native.rst @@ -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 `_. + +.. contents:: \ No newline at end of file diff --git a/platformio/builder/scripts/native.py b/platformio/builder/scripts/native.py new file mode 100644 index 00000000..bdbcd372 --- /dev/null +++ b/platformio/builder/scripts/native.py @@ -0,0 +1,36 @@ +# Copyright (C) Ivan Kravets +# 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]) diff --git a/platformio/platforms/native.py b/platformio/platforms/native.py new file mode 100644 index 00000000..f02478cb --- /dev/null +++ b/platformio/platforms/native.py @@ -0,0 +1,18 @@ +# Copyright (C) Ivan Kravets +# 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 = { + } diff --git a/scripts/docspregen.py b/scripts/docspregen.py index 5f9f3ac5..becb9b57 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -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)