diff --git a/.gitignore b/.gitignore
index 229be10..1d279af 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,6 +2,8 @@
*.pyc
*.pyo
*.swp
+.project
+.pydevproject
freetype-*
build/*
dist/*
diff --git a/README.rst b/README.rst
index cea324e..54e45f5 100644
--- a/README.rst
+++ b/README.rst
@@ -87,6 +87,7 @@ For a complete list of available commands, type::
$ ./toolchain.py
+
Create the Xcode project
------------------------
@@ -109,6 +110,7 @@ Then click on `Play`, and enjoy.
the `
-ios/YourApp` directory. Don't make changes in the -ios
directory directly.
+
Configuring your App
--------------------
@@ -123,6 +125,7 @@ launch environment.
the 'export_orientation' function in 'main.m'. The XCode orientation
settings should be set to support all.
+
FAQ
---
@@ -132,6 +135,7 @@ Fatal error: "stdio.h" file not found
You must build with bitcode disabled (Xcode setting ENABLE_BITCODE should be No).
We don't support bitcode. You need to go to the project setting, and disable bitcode.
+
Support
-------
@@ -146,6 +150,7 @@ We also have an IRC channel:
* Port : 6667, 6697 (SSL only)
* Channel : #kivy
+
Contributing
------------
@@ -165,6 +170,7 @@ IRC channel:
* Port : 6667, 6697 (SSL only)
* Channel : #kivy-dev
+
License
-------
diff --git a/toolchain.py b/toolchain.py
index 4c7f951..345d6f4 100755
--- a/toolchain.py
+++ b/toolchain.py
@@ -118,7 +118,9 @@ class JsonStore(object):
with io.open(self.filename, 'w', encoding='utf-8') as fd:
fd.write(unicode(json.dumps(self.data, ensure_ascii=False)))
+
class Arch(object):
+
def __init__(self, ctx):
super(Arch, self).__init__()
self.ctx = ctx
@@ -135,7 +137,6 @@ class Arch(object):
d.format(arch=self))
for d in self.ctx.include_dirs]
-
def get_env(self):
include_dirs = [
"-I{}/{}".format(
@@ -196,7 +197,6 @@ class Arch(object):
return env
-
class ArchSimulator(Arch):
sdk = "iphonesimulator"
arch = "i386"
@@ -227,7 +227,7 @@ class Arch64IOS(Arch):
triple = "aarch64-apple-darwin13"
version_min = "-miphoneos-version-min=7.0"
sysroot = sh.xcrun("--sdk", "iphoneos", "--show-sdk-path").strip()
-
+
class Graph(object):
# Taken from python-for-android/depsort
@@ -375,19 +375,60 @@ class Context(object):
class Recipe(object):
- version = None
+ """Base recipe for compiling and installing dependency libraries and
+ packages to kivy iOS build.
+ """
+
url = None
+ """Either folder name relative to recipe or download URL.
+ """
+
+ version = None
+ """Gets formatted with ``url`` if download URL.
+ """
+
archs = []
+ """Architectures this recipe applies, empty list means all.
+ """
+
depends = []
+ """Dependency recipes.
+ """
+
optional_depends = []
+ """???
+ """
+
library = None
+ """???
+ """
+
libraries = []
+ """???
+ """
+
include_dir = None
+ """Include directory for compilation"""
+
include_per_arch = False
+ """???
+ """
+
frameworks = []
+ """OS X frameworks.
+ """
+
sources = []
+ """???
+ """
+
pbx_frameworks = []
+ """???
+ """
+
pbx_libraries = []
+ """???
+ """
# API available for recipes
def download_file(self, url, filename, cwd=None):
@@ -396,6 +437,7 @@ class Recipe(object):
"""
if not url:
return
+
def report_hook(index, blksize, size):
if size <= 0:
progression = '{0} bytes'.format(index * blksize)
@@ -635,7 +677,7 @@ class Recipe(object):
shutil.copytree(src_dir, dest_dir)
return
ensure_dir(build_dir)
- self.extract_file(self.archive_fn, build_dir)
+ self.extract_file(self.archive_fn, build_dir)
@cache_execution
def build(self, arch):
@@ -809,7 +851,7 @@ class Recipe(object):
@classmethod
def get_recipe(cls, name, ctx):
if not hasattr(cls, "recipes"):
- cls.recipes = {}
+ cls.recipes = {}
if '==' in name:
name, version = name.split('==')
@@ -847,7 +889,8 @@ class PythonRecipe(Recipe):
"""Automate the installation of a Python package into the target
site-packages.
- It will works with the first filtered_archs, and the name of the recipe.
+ It will works with the first filtered_archs, and the name of the
+ recipe.
"""
arch = self.filtered_archs[0]
if name is None:
@@ -1044,7 +1087,6 @@ def update_pbxproj(filename):
fn = join(ctx.dist_dir, "sources", name)
project.add_folder(fn, parent=g_classes)
-
if project.modified:
project.backup()
project.save()
@@ -1052,13 +1094,13 @@ def update_pbxproj(filename):
if __name__ == "__main__":
import argparse
-
+
class ToolchainCL(object):
def __init__(self):
parser = argparse.ArgumentParser(
description="Tool for managing the iOS / Python toolchain",
usage="""toolchain []
-
+
Available commands:
build Build a recipe (compile a library for the required target
architecture)
@@ -1174,7 +1216,7 @@ Xcode:
parser.add_argument("name", help="Name of your project")
parser.add_argument("directory", help="Directory where your project live")
args = parser.parse_args(sys.argv[2:])
-
+
from cookiecutter.main import cookiecutter
ctx = Context()
template_dir = join(curdir, "tools", "templates")