bug 776783 - add Makefile.in and wrapper script r=ted

This commit is contained in:
John Ford 2012-09-07 15:13:55 -07:00
parent e5bdddbcf0
commit acb5af091a
2 changed files with 103 additions and 0 deletions

56
b2g/gaia/Makefile.in Normal file
View File

@ -0,0 +1,56 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
DEPTH = @DEPTH@
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
GAIA_PATH := gaia/profile
# We don't have a wrapper script on Windows yet
ifneq ($(OS_ARCH),WINNT)
PROGRAM = $(MOZ_APP_NAME)$(BIN_SUFFIX)
CSRCS = run-b2g.c
DEFINES += \
-DB2G_NAME=\"$(MOZ_APP_NAME)-bin$(BIN_SUFFIX)\" \
-DGAIA_PATH=\"$(GAIA_PATH)\" \
$(NULL)
# This is needed to avoid making run-b2g depend on mozglue
WRAP_LDFLAGS :=
endif
GENERATED_DIRS += $(DIST)/bin/$(GAIA_PATH)
ZIP_URL := https://github.com/mozilla-b2g/gaia/zipball/master
include $(topsrcdir)/config/rules.mk
libs::
# For now, let's fetch a copy of Gaia over http
rm -rf master.zip mozilla-b2g-gaia-*
ifeq ($(OS_ARCH),Darwin)
curl -L -o master.zip $(ZIP_URL)
else
# Github redirects to https. If https is busted, we still want a copy of Gaia
wget -O master.zip $(ZIP_URL) || \
wget -O master.zip --no-check-certificate $(ZIP_URL)
endif
unzip master.zip
mv mozilla-b2g-* $(topsrcdir)/gaia
# Below here is how Gaia gets built
# The Gaia build system freaks out when N > 1 for -jN
$(MAKE) -j1 -C $(GAIADIR) clean
$(MAKE) -j1 -C $(GAIADIR) profile GAIA_DOMAIN=desktop-builds.$(MOZ_APP_NAME).mozilla.org
(cd $(GAIADIR)/profile && tar $(TAR_CREATE_FLAGS) - .) | (cd $(abspath $(DIST))/bin/$(GAIA_PATH) && tar -xf -)

47
b2g/gaia/run-b2g.c Normal file
View File

@ -0,0 +1,47 @@
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <libgen.h>
#ifndef B2G_NAME
#define B2G_NAME "b2g-bin"
#endif
#ifndef GAIA_PATH
#define GAIA_PATH "gaia/profile"
#endif
#define NOMEM "Could not allocate enough memory"
void error(char* msg){
fprintf(stderr, "ERROR: %s\n", msg);
}
int main(int argc, char* argv[], char* envp[]){
char* cwd = NULL;
char* full_path = NULL;
char* full_profile_path = NULL;
printf("Starting %s\n", B2G_NAME);
cwd = realpath(dirname(argv[0]), NULL);
full_path = (char*) malloc(strlen(cwd) + strlen(B2G_NAME) + 2);
if (!full_path) {
error(NOMEM);
return -2;
}
full_profile_path = (char*) malloc(strlen(cwd) + strlen(GAIA_PATH) + 2);
if (!full_profile_path) {
error(NOMEM);
return -2;
}
sprintf(full_path, "%s/%s", cwd, B2G_NAME);
sprintf(full_profile_path, "%s/%s", cwd, GAIA_PATH);
free(cwd);
printf("Running: %s -profile %s\n", full_path, full_profile_path);
fflush(stdout);
fflush(stderr);
execle(full_path, full_path, "-profile", full_profile_path, NULL, envp);
error("unable to start");
perror(argv[0]);
free(full_path);
free(full_profile_path);
return -1;
}