diff options
-rw-r--r-- | sdklauncher/.gitignore | 1 | ||||
-rw-r--r-- | sdklauncher/Android.mk | 43 | ||||
-rw-r--r-- | sdklauncher/images/android_icon.ico | bin | 0 -> 300318 bytes | |||
-rw-r--r-- | sdklauncher/images/android_icon.rc | 3 | ||||
-rw-r--r-- | sdklauncher/sdklauncher.c | 88 |
5 files changed, 135 insertions, 0 deletions
diff --git a/sdklauncher/.gitignore b/sdklauncher/.gitignore new file mode 100644 index 0000000..0c25b2a --- /dev/null +++ b/sdklauncher/.gitignore @@ -0,0 +1 @@ +images/android_icon.o diff --git a/sdklauncher/Android.mk b/sdklauncher/Android.mk new file mode 100644 index 0000000..3e92ea8 --- /dev/null +++ b/sdklauncher/Android.mk @@ -0,0 +1,43 @@ +# Copyright 2009 The Android Open Source Project +# +# Android.mk for sdklauncher +# +# The "SDK Launcher" is for Windows only. +# This simple .exe will sit at the root of the Windows SDK +# and currently simply executes tools\android.bat. +# Eventually it should simply replace the batch file. + +ifeq ($(HOST_OS),windows) + +LOCAL_PATH:= $(call my-dir) + +include $(CLEAR_VARS) + +LOCAL_SRC_FILES := \ + sdklauncher.c + +LOCAL_CFLAGS += -Wall -Wno-unused-parameter +LOCAL_CFLAGS += -D_XOPEN_SOURCE -D_GNU_SOURCE -DSH_HISTORY +LOCAL_MODULE := sdklauncher + +# Link the Windows icon file as well into the executable, based on the technique +# used in external/qemu/Makefile.android. +# +INTERMEDIATE := $(call intermediates-dir-for,EXECUTABLES,$(LOCAL_MODULE),true) +ANDROID_ICON_OBJ := android_icon.o +ANDROID_ICON_PATH := $(LOCAL_PATH)/images +$(ANDROID_ICON_PATH)/$(ANDROID_ICON_OBJ): $(ANDROID_ICON_PATH)/android_icon.rc + windres $< -I $(ANDROID_ICON_PATH) -o $@ + +# seems to be the only way to add an object file that was not generated from +# a C/C++/Java source file to our build system. and very unfortunately, +# $(TOPDIR)/$(LOCALPATH) will always be prepended to this value, which forces +# us to put the object file in the source directory... +# +LOCAL_PREBUILT_OBJ_FILES += images/$(ANDROID_ICON_OBJ) + +include $(BUILD_HOST_EXECUTABLE) + +$(call dist-for-goals,droid,$(LOCAL_BUILT_MODULE)) + +endif diff --git a/sdklauncher/images/android_icon.ico b/sdklauncher/images/android_icon.ico Binary files differnew file mode 100644 index 0000000..bd25179 --- /dev/null +++ b/sdklauncher/images/android_icon.ico diff --git a/sdklauncher/images/android_icon.rc b/sdklauncher/images/android_icon.rc new file mode 100644 index 0000000..df468ac --- /dev/null +++ b/sdklauncher/images/android_icon.rc @@ -0,0 +1,3 @@ +1 ICON "../images/android_icon.ico"
+
+
diff --git a/sdklauncher/sdklauncher.c b/sdklauncher/sdklauncher.c new file mode 100644 index 0000000..d052284 --- /dev/null +++ b/sdklauncher/sdklauncher.c @@ -0,0 +1,88 @@ +/* + * Copyright (C) 2009 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * The "SDK Launcher" is for Windows only. + * This simple .exe will sit at the root of the Windows SDK + * and currently simply executes tools\android.bat. + * Eventually it should simply replace the batch file. + * + * TODO: + * - detect that java is installed; error dialog if not, explaning where to get it. + * - create temp dir, always copy *.jar there, exec android.jar + * - get jars to copy from some file + * - use a version number to copy jars only if needed (tools.revision?) + */ + +#ifdef _WIN32 + +#include <stdio.h> +#include <windows.h> + +int sdk_launcher() { + STARTUPINFO startup; + PROCESS_INFORMATION pinfo; + char program_path[MAX_PATH]; + int ret; + + ZeroMemory(&startup, sizeof(startup)); + startup.cb = sizeof(startup); + + ZeroMemory(&pinfo, sizeof(pinfo)); + + /* get path of current program */ + GetModuleFileName(NULL, program_path, sizeof(program_path)); + + ret = CreateProcess( + NULL, /* program path */ + "tools\\android.bat update sdk", /* command-line */ + NULL, /* process handle is not inheritable */ + NULL, /* thread handle is not inheritable */ + TRUE, /* yes, inherit some handles */ + CREATE_NO_WINDOW, /* we don't want a console */ + NULL, /* use parent's environment block */ + NULL, /* use parent's starting directory */ + &startup, /* startup info, i.e. std handles */ + &pinfo); + + if (!ret) { + DWORD err = GetLastError(); + fprintf(stderr, "CreateProcess failure, error %ld\n", err); + + LPSTR s; + if (FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | /* dwFlags */ + FORMAT_MESSAGE_FROM_SYSTEM, + NULL, /* lpSource */ + err, /* dwMessageId */ + 0, /* dwLanguageId */ + (LPSTR)&s, /* lpBuffer */ + 0, /* nSize */ + NULL) != 0) { /* va_list args */ + fprintf(stderr, "%s", s); + LocalFree(s); + } + + return -1; + } + + return 0; +} + +int main(int argc, char **argv) { + return sdk_launcher(); +} + +#endif /* _WIN32 */ |