From 0e4deeb6e7d150c50d3ef07bb7af622b94911967 Mon Sep 17 00:00:00 2001 From: Péter Szilágyi Date: Tue, 8 Dec 2015 18:05:43 +0200 Subject: Makefile, cmd/geth: assemble ios xcode frameworks --- cmd/geth/library.c | 24 ++++++++++++++++++++++++ cmd/geth/library.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ cmd/geth/main.go | 3 ++- 3 files changed, 72 insertions(+), 1 deletion(-) create mode 100644 cmd/geth/library.c create mode 100644 cmd/geth/library.go (limited to 'cmd') diff --git a/cmd/geth/library.c b/cmd/geth/library.c new file mode 100644 index 000000000..f738621a8 --- /dev/null +++ b/cmd/geth/library.c @@ -0,0 +1,24 @@ +// Copyright 2015 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +// Simple wrapper to translate the API exposed methods and types to inthernal +// Go versions of the same types. + +#include "_cgo_export.h" + +int run(const char* args) { + return doRun((char*)args); +} diff --git a/cmd/geth/library.go b/cmd/geth/library.go new file mode 100644 index 000000000..b8ffaaed7 --- /dev/null +++ b/cmd/geth/library.go @@ -0,0 +1,46 @@ +// Copyright 2015 The go-ethereum Authors +// This file is part of go-ethereum. +// +// go-ethereum is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// go-ethereum is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with go-ethereum. If not, see . + +// Contains a simple library definition to allow creating a Geth instance from +// straight C code. + +package main + +// #ifdef __cplusplus +// extern "C" { +// #endif +// +// extern int run(const char*); +// +// #ifdef __cplusplus +// } +// #endif +import "C" +import ( + "fmt" + "os" + "strings" +) + +//export doRun +func doRun(args *C.char) C.int { + // This is equivalent to geth.main, just modified to handle the function arg passing + if err := app.Run(strings.Split("geth "+C.GoString(args), " ")); err != nil { + fmt.Fprintln(os.Stderr, err) + return -1 + } + return 0 +} diff --git a/cmd/geth/main.go b/cmd/geth/main.go index 6ec30cebc..8798bbb27 100644 --- a/cmd/geth/main.go +++ b/cmd/geth/main.go @@ -340,6 +340,8 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso utils.ExtraDataFlag, } app.Before = func(ctx *cli.Context) error { + runtime.GOMAXPROCS(runtime.NumCPU()) + utils.SetupLogger(ctx) utils.SetupNetwork(ctx) utils.SetupVM(ctx) @@ -353,7 +355,6 @@ JavaScript API. See https://github.com/ethereum/go-ethereum/wiki/Javascipt-Conso } func main() { - runtime.GOMAXPROCS(runtime.NumCPU()) defer logger.Flush() if err := app.Run(os.Args); err != nil { fmt.Fprintln(os.Stderr, err) -- cgit