From 5e2415cb37eb09723dd1a1fdf4cbb82023cc7714 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sun, 9 Aug 2015 19:05:16 +0300 Subject: [PATCH] Add support for "windows_x86" development platform // Issue #263 --- HISTORY.rst | 8 +++- docs/platforms/creating_platform.rst | 3 ++ docs/platforms/index.rst | 1 + docs/platforms/windows_x86.rst | 21 ++++++++++ platformio/__init__.py | 2 +- platformio/builder/scripts/native.py | 3 +- platformio/builder/scripts/windows_x86.py | 49 +++++++++++++++++++++++ platformio/platforms/base.py | 9 +++++ platformio/platforms/windows_x86.py | 24 +++++++++++ scripts/docspregen.py | 8 ++-- 10 files changed, 121 insertions(+), 7 deletions(-) create mode 100644 docs/platforms/windows_x86.rst create mode 100644 platformio/builder/scripts/windows_x86.py create mode 100644 platformio/platforms/windows_x86.py diff --git a/HISTORY.rst b/HISTORY.rst index 7924a633..7408ff9d 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -4,9 +4,15 @@ Release History 2.3.0 (2015-??-??) ------------------ -* Added `native `_ +* Added + `native `__, + `windows_x86 `__ development platform (`issue #263 `_) +* Added support for Adafruit Gemma board to + `atmelavr `__ + platform + (`pull #256 `_) 2.2.2 (2015-07-30) ------------------ diff --git a/docs/platforms/creating_platform.rst b/docs/platforms/creating_platform.rst index 7e1199cb..3296277f 100644 --- a/docs/platforms/creating_platform.rst +++ b/docs/platforms/creating_platform.rst @@ -111,6 +111,9 @@ Packages * - ``toolchain-gccarmnoneeabi`` - `gcc-arm-embedded `_, `GDB `_ + * - ``toolchain-gccmingw32`` + - `MinGW `_ + * - ``toolchain-timsp430`` - `msp-gcc `_, `GDB `_ diff --git a/docs/platforms/index.rst b/docs/platforms/index.rst index eaf05de1..fd0f0605 100644 --- a/docs/platforms/index.rst +++ b/docs/platforms/index.rst @@ -36,6 +36,7 @@ Desktop :maxdepth: 2 native + windows_x86 Own Platform/Board ------------------ diff --git a/docs/platforms/windows_x86.rst b/docs/platforms/windows_x86.rst new file mode 100644 index 00000000..01a45063 --- /dev/null +++ b/docs/platforms/windows_x86.rst @@ -0,0 +1,21 @@ +.. _platform_windows_x86: + +Platform ``windows_x86`` +======================== +Windows x86 (32-bit) is a metafamily of graphical operating systems developed and marketed by Microsoft. Using host OS (Windows or Mac OS X) you can build native application for Windows x86 platform. + +For more detailed information please visit `vendor site `_. + +.. contents:: + +Packages +-------- + +.. list-table:: + :header-rows: 1 + + * - Name + - Contents + + * - ``toolchain-gccmingw32`` + - `MinGW `_ \ No newline at end of file diff --git a/platformio/__init__.py b/platformio/__init__.py index f5191be8..10e7fc39 100644 --- a/platformio/__init__.py +++ b/platformio/__init__.py @@ -1,7 +1,7 @@ # Copyright (C) Ivan Kravets # See LICENSE for details. -VERSION = (2, 3, "0.dev0") +VERSION = (2, 3, "0.dev1") __version__ = ".".join([str(s) for s in VERSION]) __title__ = "platformio" diff --git a/platformio/builder/scripts/native.py b/platformio/builder/scripts/native.py index fec4610b..28e94fe9 100644 --- a/platformio/builder/scripts/native.py +++ b/platformio/builder/scripts/native.py @@ -5,12 +5,11 @@ Builder for native platform """ -from SCons.Script import DefaultEnvironment, AlwaysBuild, Default +from SCons.Script import AlwaysBuild, Default, DefaultEnvironment env = DefaultEnvironment() env.Replace( - SIZEPRINTCMD="size $SOURCES" ) diff --git a/platformio/builder/scripts/windows_x86.py b/platformio/builder/scripts/windows_x86.py new file mode 100644 index 00000000..78030585 --- /dev/null +++ b/platformio/builder/scripts/windows_x86.py @@ -0,0 +1,49 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +""" + Builder for Windows x86 +""" + +from SCons.Script import AlwaysBuild, Default, DefaultEnvironment + +from platformio.util import get_systype + + +env = DefaultEnvironment() + +env.Replace( + SIZEPRINTCMD="size $SOURCES", + PROGSUFFIX=".exe" +) + +if get_systype() == "darwin_x86_64": + env.Replace( + AR="i586-mingw32-ar", + AS="i586-mingw32-as", + CC="i586-mingw32-gcc", + CXX="i586-mingw32-g++", + OBJCOPY="i586-mingw32-objcopy", + RANLIB="i586-mingw32-ranlib", + SIZETOOL="i586-mingw32-size", + SIZEPRINTCMD='"$SIZETOOL" $SOURCES' + ) + +# +# 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/base.py b/platformio/platforms/base.py index 8874e7f3..03a71134 100644 --- a/platformio/platforms/base.py +++ b/platformio/platforms/base.py @@ -90,6 +90,9 @@ PLATFORM_PACKAGES = { "tool-micronucleus": [ ("Micronucleus", "https://github.com/micronucleus/micronucleus") ], + "toolchain-gccmingw32": [ + ("MinGW", "http://www.mingw.org") + ], "tool-bossac": [ ("BOSSA CLI", "https://sourceforge.net/projects/b-o-s-s-a/") ], @@ -224,6 +227,12 @@ class BasePlatform(object): else: raise NotImplementedError() + def is_embedded(self): + for name, opts in self.get_packages().items(): + if name == "framework-mbed" or opts.get("alias") == "uploader": + return True + return False + def get_packages(self): return self.PACKAGES diff --git a/platformio/platforms/windows_x86.py b/platformio/platforms/windows_x86.py new file mode 100644 index 00000000..157b93f7 --- /dev/null +++ b/platformio/platforms/windows_x86.py @@ -0,0 +1,24 @@ +# Copyright (C) Ivan Kravets +# See LICENSE for details. + +from platformio.platforms.base import BasePlatform + + +class Windows_x86Platform(BasePlatform): + + """ + Windows x86 (32-bit) is a metafamily of graphical operating systems + developed and marketed by Microsoft. + Using host OS (Windows or Mac OS X) you can build native application + for Windows x86 platform. + + http://platformio.org/#!/platforms/windows_x86 + """ + + PACKAGES = { + + "toolchain-gccmingw32": { + "alias": "toolchain", + "default": True + } + } diff --git a/scripts/docspregen.py b/scripts/docspregen.py index becb9b57..50dd4601 100644 --- a/scripts/docspregen.py +++ b/scripts/docspregen.py @@ -66,7 +66,7 @@ def generate_boards(boards): return "\n".join(lines + [""]) -def generate_packages(packages): +def generate_packages(packages, is_embedded): if not packages: return allpackages = get_packages() @@ -92,7 +92,8 @@ Packages type_=type_, contents=", ".join(contitems))) - lines.append(""" + if is_embedded: + lines.append(""" .. warning:: **Linux Users:** Don't forget to install "udev" rules file `99-platformio-udev.rules `_ (an instruction is located in the file). @@ -101,6 +102,7 @@ Packages from board manufacturer """) + return "\n".join(lines) @@ -126,7 +128,7 @@ For more detailed information please visit `vendor site <%s>`_.""" % # # Packages # - _packages_content = generate_packages(p.get_packages()) + _packages_content = generate_packages(p.get_packages(), p.is_embedded()) if _packages_content: lines.append(_packages_content)