Skip to content

Commit

Permalink
new sailfish module
Browse files Browse the repository at this point in the history
  • Loading branch information
therecipe committed Jun 19, 2016
1 parent f8ad89c commit 6e74deb
Show file tree
Hide file tree
Showing 22 changed files with 489 additions and 31 deletions.
2 changes: 1 addition & 1 deletion androidextras/androidextras_android.cpp
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

// +build android

#define protected public
#define private public
Expand Down
2 changes: 2 additions & 0 deletions androidextras/androidextras_android.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// +build android

package androidextras

//#include "androidextras_android.h"
Expand Down
2 changes: 1 addition & 1 deletion androidextras/androidextras_android.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@

// +build android

#pragma once

Expand Down
7 changes: 6 additions & 1 deletion internal/binding/parser/class.go
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ func (c *Class) fixBases() {
}
}

if !found {
if !found && c.Name != "SailfishApp" {
fmt.Println("HEADER FILE NOT FOUND:", c.Name, c.Module)
}

Expand Down Expand Up @@ -439,6 +439,11 @@ var LibDeps = map[string][]string{
"DataVisualization": []string{"Core", "Gui"},
"Charts": []string{"Core", "Gui", "Widgets"},
"Quick2DRenderer": []string{"Core"},

"Sailfish": []string{"Core"},

MOC: make([]string, 0),
"build_ios": []string{"Core", "Gui", "Network", "Sql", "Xml", "DBus", "Nfc", "Script", "Sensors", "Positioning", "Widgets", "Qml", "WebSockets", "XmlPatterns", "Bluetooth", "WebChannel", "Svg", "Multimedia", "Quick", "Help", "Location", "ScriptTools", "MultimediaWidgets", "UiTools", "PrintSupport"},
}

func (c *Class) hasFunctionWithName(name string) bool {
Expand Down
73 changes: 73 additions & 0 deletions internal/binding/parser/module.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,3 +79,76 @@ func (m *Module) removeClasses() {
}
}
}

func sailfishModule() *Module {
//TODO: should be in Namespace.Functions
return &Module{Project: "QtSailfish", Namespace: &Namespace{Classes: []*Class{&Class{
Name: "SailfishApp",
Access: "public",
Module: "QtSailfish",
Functions: []*Function{
&Function{
Name: "application",
Fullname: "SailfishApp::application",
Access: "public",
Virtual: "non",
Meta: PLAIN,
Static: true,
Output: "QGuiApplication*",
Signature: "()",
Parameters: []*Parameter{
&Parameter{
Name: "argc",
Value: "int &",
},
&Parameter{
Name: "argv",
Value: "char **",
},
}},
&Function{
Name: "main",
Fullname: "SailfishApp::main",
Access: "public",
Virtual: "non",
Meta: PLAIN,
Static: true,
Output: "int",
Signature: "()",
Parameters: []*Parameter{
&Parameter{
Name: "argc",
Value: "int &",
},
&Parameter{
Name: "argv",
Value: "char **",
},
}},
&Function{
Name: "createView",
Fullname: "SailfishApp::createView",
Access: "public",
Virtual: "non",
Meta: PLAIN,
Static: true,
Output: "QQuickView*",
Signature: "()",
},
&Function{
Name: "pathTo",
Fullname: "SailfishApp::pathTo",
Access: "public",
Virtual: "non",
Meta: PLAIN,
Static: true,
Output: "QUrl",
Signature: "pathTo(const QString &filename)",
Parameters: []*Parameter{
&Parameter{
Name: "filename",
Value: "QString &",
},
}},
}}}}}
}
6 changes: 6 additions & 0 deletions internal/binding/parser/parser.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,12 @@ var (

func GetModule(s string) *Module {

if s == "sailfish" {
var m = sailfishModule()
m.Prepare()
return m
}

var m = new(Module)

switch runtime.GOOS {
Expand Down
24 changes: 15 additions & 9 deletions internal/binding/templater/cgo.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ func CopyCgo(module string) {
return
}

if !strings.Contains(module, "droid") {
if !(strings.Contains(module, "droid") || strings.Contains(module, "fish")) {
cgoDarwin(module)
cgoWindows(module)
cgoLinux(module)
Expand All @@ -32,15 +32,21 @@ func CopyCgo(module string) {
}
}

switch runtime.GOOS {
case "darwin", "linux":
{
cgoAndroidOnDarwinAndLinux(module)
}
if strings.Contains(module, "fish") {
cgoSailfish(module)
}

case "windows":
{
cgoAndroidOnWindows(module)
if !strings.Contains(module, "fish") {
switch runtime.GOOS {
case "darwin", "linux":
{
cgoAndroidOnDarwinAndLinux(module)
}

case "windows":
{
cgoAndroidOnWindows(module)
}
}
}
}
Expand Down
15 changes: 15 additions & 0 deletions internal/binding/templater/function_cpp.go
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,21 @@ func cppFunctionBody(function *parser.Function) string {

case parser.PLAIN, parser.DESTRUCTOR:
{
if function.Fullname == "SailfishApp::application" || function.Fullname == "SailfishApp::main" {
return fmt.Sprintf(` QList<QByteArray> aList = QByteArray(argv).split('|');
char *argvs[argc];
static int argcs = argc;
for (int i = 0; i < argc; i++)
argvs[i] = aList[i].data();
return %v(%v);`,

function.Fullname,

converter.CppInputParameters(function),
)
}

return fmt.Sprintf("\t%v%v;",

func() string {
Expand Down
5 changes: 5 additions & 0 deletions internal/binding/templater/helper.go
Original file line number Diff line number Diff line change
Expand Up @@ -216,6 +216,7 @@ var Build = map[string]bool{
"DataVisualization": false,
"Charts": false,
"Quick2DRenderer": false,
"Sailfish": false,
}

var Libs = []string{
Expand Down Expand Up @@ -262,6 +263,8 @@ var Libs = []string{
//"DataVisualization", //GPLv3
//"Charts", //GPLv3
//"Quick2DRenderer", //GPLv3

"Sailfish",
}

func GetLibs() []string {
Expand Down Expand Up @@ -325,6 +328,8 @@ var LibDeps = map[string][]string{
"Charts": []string{"Core", "Gui", "Widgets"},
"Quick2DRenderer": []string{"Core"},

"Sailfish": []string{"Core"},

parser.MOC: make([]string, 0),
"build_ios": []string{"Core", "Gui", "Network", "Sql", "Xml", "DBus", "Nfc", "Script", "Sensors", "Positioning", "Widgets", "Qml", "WebSockets", "XmlPatterns", "Bluetooth", "WebChannel", "Svg", "Multimedia", "Quick", "Help", "Location", "ScriptTools", "MultimediaWidgets", "UiTools", "PrintSupport"},
}
Expand Down
23 changes: 21 additions & 2 deletions internal/binding/templater/template_cpp.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,11 +315,21 @@ func preambleCpp(module string, input []byte) []byte {
return "// +build minimal"
}

case module == parser.MOC, module == "QtAndroidExtras":
case module == parser.MOC:
{
return ""
}

case module == "QtAndroidExtras":
{
return "// +build android"
}

case module == "QtSailfish":
{
return "// +build sailfish"
}

default:
{
return "// +build !minimal"
Expand All @@ -339,6 +349,11 @@ func preambleCpp(module string, input []byte) []byte {
return fmt.Sprintf("%v_android", shortModule(module))
}

case "QtSailfish":
{
return fmt.Sprintf("%v_sailfish", shortModule(module))
}

default:
{
return shortModule(module)
Expand All @@ -356,7 +371,11 @@ func preambleCpp(module string, input []byte) []byte {
sort.Stable(sort.StringSlice(classes))

for _, class := range classes {
fmt.Fprintf(bb, "#include <%v>\n", class)
if class == "SailfishApp" {
fmt.Fprintln(bb, "#include <sailfishapp.h>")
} else {
fmt.Fprintf(bb, "#include <%v>\n", class)
}
}
fmt.Fprint(bb, "\n")

Expand Down
22 changes: 20 additions & 2 deletions internal/binding/templater/template_go.go
Original file line number Diff line number Diff line change
Expand Up @@ -292,19 +292,32 @@ import (
switch {
case stub:
{
return "// +build !android"
if module == "androidextras" {
return "// +build !android"
}
return "// +build !sailfish"
}

case Minimal:
{
return "// +build minimal"
}

case module == parser.MOC, module == "androidextras":
case module == parser.MOC:
{
return ""
}

case module == "androidextras":
{
return "// +build android"
}

case module == "sailfish":
{
return "// +build sailfish"
}

default:
{
return "// +build !minimal"
Expand Down Expand Up @@ -335,6 +348,11 @@ import (
return fmt.Sprintf("%v_android", module)
}

case "sailfish":
{
return fmt.Sprintf("%v_sailfish", module)
}

default:
{
return module
Expand Down
12 changes: 11 additions & 1 deletion internal/binding/templater/template_h.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,11 +32,21 @@ extern "C" {
return "// +build minimal"
}

case module == parser.MOC, module == "QtAndroidExtras":
case module == parser.MOC:
{
return ""
}

case module == "QtAndroidExtras":
{
return "// +build android"
}

case module == "QtSailfish":
{
return "// +build sailfish"
}

default:
{
return "// +build !minimal"
Expand Down
20 changes: 10 additions & 10 deletions internal/binding/templater/templater.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ func GenModule(name string) {
if name == "AndroidExtras" {
suffix = "_android"
}
if name == "Sailfish" {
suffix = "_sailfish"
}

//cleanup
if !Minimal {
Expand All @@ -46,7 +49,7 @@ func GenModule(name string) {

//generate
if Minimal {
if name != "AndroidExtras" {
if !(name == "AndroidExtras" || name == "Sailfish") {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+"-minimal"+suffix+".cpp"), CppTemplate("Qt"+name))
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+"-minimal"+suffix+".h"), HTemplate("Qt"+name))
}
Expand All @@ -55,18 +58,15 @@ func GenModule(name string) {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+suffix+".h"), HTemplate("Qt"+name))
}

if name == "AndroidExtras" {
if !Minimal {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+suffix+".go"), GoTemplate("Qt"+name, false))
}
}

if Minimal {
if name != "AndroidExtras" {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+"-minimal.go"), GoTemplate("Qt"+name, name == "AndroidExtras"))
if !(name == "AndroidExtras" || name == "Sailfish") {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+"-minimal.go"), GoTemplate("Qt"+name, false))
}
} else {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+".go"), GoTemplate("Qt"+name, name == "AndroidExtras"))
if name == "AndroidExtras" || name == "Sailfish" {
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+suffix+".go"), GoTemplate("Qt"+name, false))
}
utils.SaveBytes(utils.GetQtPkgPath(pkgName, pkgName+".go"), GoTemplate("Qt"+name, name == "AndroidExtras" || name == "Sailfish"))
}
}
}
4 changes: 2 additions & 2 deletions internal/deploy/deploy.go
Original file line number Diff line number Diff line change
Expand Up @@ -444,7 +444,7 @@ func build() {
sshCommand("2222", "root", "ln", "-s", "/opt/cross/bin/i486-meego-linux-gnu-as", "/opt/cross/libexec/gcc/i486-meego-linux-gnu/4.8.3/as")
sshCommand("2222", "root", "ln", "-s", "/opt/cross/bin/i486-meego-linux-gnu-ld", "/opt/cross/libexec/gcc/i486-meego-linux-gnu/4.8.3/ld")

var errBuild = sshCommand("2222", "root", "cd", strings.Replace(strings.Replace(appPath, os.Getenv("GOPATH"), "/media/sf_GOPATH", -1), "\\", "/", -1), "&&", "GOROOT=/media/sf_GOROOT", "GOPATH=/media/sf_GOPATH", "PATH=$PATH:$GOROOT/bin/linux_386", "GOOS=linux", "GOARCH=386", "CGO_ENABLED=1", "CC=/opt/cross/bin/i486-meego-linux-gnu-gcc", "CXX=/opt/cross/bin/i486-meego-linux-gnu-g++", "CPATH=/srv/mer/targets/SailfishOS-i486/usr/include", "LIBRARY_PATH=/srv/mer/targets/SailfishOS-i486/usr/lib:/srv/mer/targets/SailfishOS-i486/lib", "CGO_LDFLAGS=--sysroot=/srv/mer/targets/SailfishOS-i486/", "go", "build", "-ldflags=\"-s -w\"", "-tags=minimal", "-o", "deploy/"+buildTarget+"_minimal/harbour-"+appName)
var errBuild = sshCommand("2222", "root", "cd", strings.Replace(strings.Replace(appPath, os.Getenv("GOPATH"), "/media/sf_GOPATH", -1), "\\", "/", -1), "&&", "GOROOT=/media/sf_GOROOT", "GOPATH=/media/sf_GOPATH", "PATH=$PATH:$GOROOT/bin/linux_386", "GOOS=linux", "GOARCH=386", "CGO_ENABLED=1", "CC=/opt/cross/bin/i486-meego-linux-gnu-gcc", "CXX=/opt/cross/bin/i486-meego-linux-gnu-g++", "CPATH=/srv/mer/targets/SailfishOS-i486/usr/include", "LIBRARY_PATH=/srv/mer/targets/SailfishOS-i486/usr/lib:/srv/mer/targets/SailfishOS-i486/lib", "CGO_LDFLAGS=--sysroot=/srv/mer/targets/SailfishOS-i486/", "go", "build", "-ldflags=\"-s -w\"", "-tags=\"minimal sailfish\"", "-o", "deploy/"+buildTarget+"_minimal/harbour-"+appName)
if errBuild != nil {
fmt.Println("build.Sailfish", errBuild)
cleanup()
Expand All @@ -455,7 +455,7 @@ func build() {
sshCommand("2222", "root", "ln", "-s", "/opt/cross/bin/armv7hl-meego-linux-gnueabi-as", "/opt/cross/libexec/gcc/armv7hl-meego-linux-gnueabi/4.8.3/as")
sshCommand("2222", "root", "ln", "-s", "/opt/cross/bin/armv7hl-meego-linux-gnueabi-ld", "/opt/cross/libexec/gcc/armv7hl-meego-linux-gnueabi/4.8.3/ld")

var errBuild = sshCommand("2222", "root", "cd", strings.Replace(strings.Replace(appPath, os.Getenv("GOPATH"), "/media/sf_GOPATH", -1), "\\", "/", -1), "&&", "GOROOT=/media/sf_GOROOT", "GOPATH=/media/sf_GOPATH", "PATH=$PATH:$GOROOT/bin/linux_386", "GOOS=linux", "GOARCH=arm", "GOARM=7", "CGO_ENABLED=1", "CC=/opt/cross/bin/armv7hl-meego-linux-gnueabi-gcc", "CXX=/opt/cross/bin/armv7hl-meego-linux-gnueabi-g++", "CPATH=/srv/mer/targets/SailfishOS-armv7hl/usr/include", "LIBRARY_PATH=/srv/mer/targets/SailfishOS-armv7hl/usr/lib:/srv/mer/targets/SailfishOS-armv7hl/lib", "CGO_LDFLAGS=--sysroot=/srv/mer/targets/SailfishOS-armv7hl/", "go", "build", "-ldflags=\"-s -w\"", "-tags=minimal", "-o", "deploy/"+buildTarget+"_minimal/harbour-"+appName)
var errBuild = sshCommand("2222", "root", "cd", strings.Replace(strings.Replace(appPath, os.Getenv("GOPATH"), "/media/sf_GOPATH", -1), "\\", "/", -1), "&&", "GOROOT=/media/sf_GOROOT", "GOPATH=/media/sf_GOPATH", "PATH=$PATH:$GOROOT/bin/linux_386", "GOOS=linux", "GOARCH=arm", "GOARM=7", "CGO_ENABLED=1", "CC=/opt/cross/bin/armv7hl-meego-linux-gnueabi-gcc", "CXX=/opt/cross/bin/armv7hl-meego-linux-gnueabi-g++", "CPATH=/srv/mer/targets/SailfishOS-armv7hl/usr/include", "LIBRARY_PATH=/srv/mer/targets/SailfishOS-armv7hl/usr/lib:/srv/mer/targets/SailfishOS-armv7hl/lib", "CGO_LDFLAGS=--sysroot=/srv/mer/targets/SailfishOS-armv7hl/", "go", "build", "-ldflags=\"-s -w\"", "-tags=\"minimal sailfish\"", "-o", "deploy/"+buildTarget+"_minimal/harbour-"+appName)
if errBuild != nil {
fmt.Println("build.Sailfish", errBuild)
cleanup()
Expand Down
Loading

0 comments on commit 6e74deb

Please sign in to comment.