Revert "Remove unused project."

This reverts commit eaada771a6e62ca494a625ce1b060f1a94fa9877.

Reason for revert: Breaks build_test and other builds
Bug: 155862492

Change-Id: I1a14b84d54b05596ec250b31ae56e437cf49fd81
diff --git a/sdklauncher/src/source/sdklauncher.c b/sdklauncher/src/source/sdklauncher.c
new file mode 100644
index 0000000..6b2c45c
--- /dev/null
+++ b/sdklauncher/src/source/sdklauncher.c
@@ -0,0 +1,154 @@
+/*
+ * 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 Manager" is for Windows only.
+ * This simple .exe will sit at the root of the Windows SDK
+ * and currently simply executes tools\android.bat.
+ *
+ * TODO: replace by a jar-exe wrapper.
+ */
+
+#ifdef _WIN32
+
+#include <stdio.h>
+#include <stdarg.h>
+#include <string.h>
+#include <windows.h>
+
+
+int _enable_dprintf = 0;
+
+void dprintf(char *msg, ...) {
+    va_list ap;
+    va_start(ap, msg);
+
+    if (_enable_dprintf) {
+        vfprintf(stderr, msg, ap);
+    }
+
+    va_end(ap);
+}
+
+void display_error(LPSTR description) {
+    DWORD err = GetLastError();
+    LPSTR s, s2;
+
+    fprintf(stderr, "%s, error %ld\n", description, err);
+
+    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);
+
+        s2 = (LPSTR) malloc(strlen(description) + strlen(s) + 5);
+        sprintf(s2, "%s\r\n%s", description, s);
+        MessageBox(NULL, s2, "Android SDK Manager - Error", MB_OK);
+        free(s2);
+        LocalFree(s);
+    }
+}
+
+
+int sdk_launcher() {
+    int                   result = 0;
+    STARTUPINFO           startup;
+    PROCESS_INFORMATION   pinfo;
+    CHAR                  program_dir[MAX_PATH];
+    int                   ret, pos;
+
+    ZeroMemory(&pinfo, sizeof(pinfo));
+
+    ZeroMemory(&startup, sizeof(startup));
+    startup.cb = sizeof(startup);
+    startup.dwFlags     = STARTF_USESHOWWINDOW;
+    startup.wShowWindow = SW_HIDE|SW_MINIMIZE;
+
+    /* get path of current program, to switch dirs here when executing the command. */
+    ret = GetModuleFileName(NULL, program_dir, sizeof(program_dir));
+    if (ret == 0) {
+        display_error("Failed to get program's filename:");
+        result = 1;
+    } else {
+        /* Remove the last segment to keep only the directory. */
+        pos = ret - 1;
+        while (pos > 0 && program_dir[pos] != '\\') {
+            --pos;
+        }
+        program_dir[pos] = 0;
+    }
+
+    if (!result) {
+        dprintf("Program dir: %s\n", program_dir);
+
+        // SDK Manager.exe is installed by the Windows Installer just below
+        // the tools directory and needs to access tools\android.bat
+        ret = CreateProcess(
+                NULL,                                       /* program path */
+                "tools\\android.bat 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 */
+                program_dir,             /* use parent's starting directory */
+                &startup,                 /* startup info, i.e. std handles */
+                &pinfo);
+
+        if (!ret) {
+            dprintf("CreateProcess returned %d\n", ret);
+
+            // In the ADT bundle, SDK Manager.exe is located in the sdk folder
+            // and needs to access sdk\tools\android.bat
+            ret = CreateProcess(
+                    NULL,                                   /* program path */
+                    "sdk\\tools\\android.bat 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 */
+                    program_dir,         /* use parent's starting directory */
+                    &startup,             /* startup info, i.e. std handles */
+                    &pinfo);
+        }
+
+        dprintf("CreateProcess returned %d\n", ret);
+
+        if (!ret) {
+            display_error("Failed to execute tools\\android.bat:");
+            result = 1;
+        }
+    }
+
+    dprintf("Cleanup.\n");
+
+    return result;
+}
+
+int main(int argc, char **argv) {
+    _enable_dprintf = argc > 1 && strcmp(argv[1], "-v") == 0;
+    dprintf("Verbose debug mode.\n");
+
+    return sdk_launcher();
+}
+
+#endif /* _WIN32 */