Skip to content

Instantly share code, notes, and snippets.

@pcperini
Created July 9, 2012 14:56
Show Gist options
  • Save pcperini/3077005 to your computer and use it in GitHub Desktop.
Save pcperini/3077005 to your computer and use it in GitHub Desktop.
Get Up and Running with eero - get_eero to install, eeroc to compile/build
#!/usr/bin/python
import os
import sys
import subprocess
from optparse import OptionParser
# Superglobal Variables
TERMINAL_FORMATTERS = {
"BOLD": "\033[1m",
"END": "\033[0m"
}
# Global Variables
ENVIRONMENT_FLAGS = {
"OS X": ["Cocoa", "Foundation", "AppKit"],
"iOS": ["Foundation", "UIKit"]
}
EERO_DEFAULT_CLANG = "/usr/local/eerolanguage/bin/clang"
if __name__ == "__main__":
parser = OptionParser(
usage = "usage: %prog input_filename [options]"
)
# Frameworks
parser.add_option(
"-X",
dest = "environment",
action = "store_const",
const = ENVIRONMENT_FLAGS["OS X"],
help = "specifies default frameworks for OS X"
)
parser.add_option(
"-i",
dest = "environment",
action = "store_const",
const = ENVIRONMENT_FLAGS["iOS"],
help = "specifies default frameworks for iOS"
)
parser.add_option(
"-f",
dest = "framework",
action = "append",
help = "specify a framework to build with"
)
parser.add_option(
"--autoframework",
dest = "autoframework",
action = "store_true",
help = "if set, automatically handles %s#import%s statements for all included frameworks" % (
TERMINAL_FORMATTERS['BOLD'],
TERMINAL_FORMATTERS['END']
)
)
# Files
parser.add_option(
"-o",
dest = "output_filename",
help = "write output to file"
)
parser.add_option(
"-c",
dest = "compiler",
help = "specify a custom compiler location"
)
(options, args) = parser.parse_args()
if (not args):
sys.exit(1)
clang = options.compiler or EERO_DEFAULT_CLANG
frameworks = options.environment or []
if (options.framework):
frameworks.extend(options.framework)
input_filename = args[0]
if (options.output_filename):
output_filename = options.output_filename
else:
output_filename = os.path.splitext(input_filename)[0]
if (options.autoframework):
input_file = open(input_filename, 'r')
input_contents = input_file.read()
framework_contents = ""
for framework in frameworks:
framework_content = "#import <" + framework + "/" + framework + ".h>"
if (framework_content not in input_contents):
framework_contents += (framework_content + "\n")
input_contents = framework_contents + input_contents
input_filename = input_filename + '.tmp.ero'
input_file = open(input_filename, 'w')
input_file.write(input_contents)
input_file.close()
clang_call = [
clang,
input_filename,
"-o", output_filename
]
for framework in frameworks:
clang_call.extend(["-framework", framework])
subprocess.call(clang_call)
if (options.autoframework):
os.remove(input_filename)
#!/bin/bash
cd ~/Downloads
git clone git://github.com/eerolanguage/llvm-trunk.git llvm
cd llvm/tools
git clone git://github.com/eerolanguage/clang-trunk.git clang
cd ../..
cd llvm/projects
svn co http://llvm.org/svn/llvm-project/compiler-rt/trunk compiler-rt
cd ../..
mkdir build
cd build
../llvm/configure --prefix /usr/local/eerolanguage
make
sudo make install
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment