Always start jack server before first call to jack

Also install and update the server if necessary.

The target setup-jack-server produces no file so it's always built.
Since the dependency is "order only", it doesn't cause force rebuilt of
jack targets after start-jack-server execution.

Bug: 25443108

Change-Id: I96282265d5ababb58b74ad3c5bd28fca3aa609f1
diff --git a/tools/Android.mk b/tools/Android.mk
index e5255b9..e3731ef 100644
--- a/tools/Android.mk
+++ b/tools/Android.mk
@@ -28,36 +28,6 @@
 LOCAL_IS_HOST_MODULE := true
 
 include $(BUILD_PREBUILT)
-jack_admin_script := $(LOCAL_INSTALLED_MODULE)
-
-##################################
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := jack-launcher
-LOCAL_SRC_FILES := jack-launcher.jar
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_BUILT_MODULE_STEM := jack-launcher$(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_IS_HOST_MODULE := true
-
-include $(BUILD_PREBUILT)
-jack_launcher_jar := $(LOCAL_INSTALLED_MODULE)
-
-##################################
-include $(CLEAR_VARS)
-
-LOCAL_MODULE := jack-server
-jack_server_version := 4.1.ALPHA
-LOCAL_SRC_FILES := jack-server-$(jack_server_version).jar
-LOCAL_MODULE_CLASS := JAVA_LIBRARIES
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_SUFFIX := $(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_BUILT_MODULE_STEM := jack-launcher$(COMMON_JAVA_PACKAGE_SUFFIX)
-LOCAL_IS_HOST_MODULE := true
-
-include $(BUILD_PREBUILT)
-jack_server_jar := $(LOCAL_INSTALLED_MODULE)
 
 ##################################
 include $(CLEAR_VARS)
@@ -86,34 +56,9 @@
 LOCAL_MODULE_SUFFIX := $(HOST_EXECUTABLE_SUFFIX)
 LOCAL_BUILT_MODULE_STEM := jack$(HOST_EXECUTABLE_SUFFIX)
 LOCAL_IS_HOST_MODULE := true
+LOCAL_REQUIRED_MODULES := jack-admin
 
-available_jack_jars := $(wildcard $(LOCAL_PATH)/jacks/jack-*.jar)
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-ifneq ($(ANDROID_JACK_VM_ARGS),)
-jack_vm_args := $(ANDROID_JACK_VM_ARGS)
-else
-jack_vm_args := -Dfile.encoding=UTF-8 -XX:+TieredCompilation
-endif
-
-$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/jack $(jack_launcher_jar) $(jack_server_jar) $(jack_admin_script) $(available_jack_jars) | $(ACP)
-	@echo "Build: $@"
-ifneq ($(dist_goal),)
-	$(hide) $(jack_admin_script) stop-server 2>&1 || (exit 0)
-	$(hide) $(jack_admin_script) kill-server 2>&1 || (exit 0)
-	$(hide) $(jack_admin_script) uninstall-server 2>&1 || (exit 0)
-endif
-	$(hide) $(jack_admin_script) install-server $(jack_launcher_jar) $(jack_server_jar)  2>&1 || (exit 0)
-ifneq ($(dist_goal),)
-	mkdir -p "$(DIST_DIR)/logs/jack/"
-	$(hide) JACK_SERVER_VM_ARGUMENTS="$(jack_vm_args) -Dcom.android.jack.server.log.file=$(abspath $(DIST_DIR))/logs/jack/jack-server-%u-%g.log" $(jack_admin_script) start-server 2>&1 || exit 0
-else
-	$(hide) JACK_SERVER_VM_ARGUMENTS="$(jack_vm_args)" $(jack_admin_script) start-server 2>&1 || exit 0
-endif
-	$(hide) $(jack_admin_script) update server $(jack_server_jar) $(jack_server_version) 2>&1 || exit 0
-	$(hide) $(foreach jack_jar,$(available_jack_jars),$(jack_admin_script) update jack $(jack_jar) $(patsubst $(PRIVATE_PATH)/jacks/jack-%.jar,%,$(jack_jar)) || exit 47;)
-	$(copy-file-to-target)
+include $(BUILD_PREBUILT)
 
 ##################################
 include $(CLEAR_VARS)
diff --git a/tools/jack_server_setup.mk b/tools/jack_server_setup.mk
new file mode 100644
index 0000000..bf7d298
--- /dev/null
+++ b/tools/jack_server_setup.mk
@@ -0,0 +1,57 @@
+#
+# Copyright (C) 2015 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.
+#
+LOCAL_PATH:= $(call my-dir)
+
+jack_server_version := 4.1.ALPHA
+jack_server_jar := $(LOCAL_PATH)/jack-server-$(jack_server_version).jar
+
+
+ifneq ($(ANDROID_JACK_VM_ARGS),)
+jack_vm_args := $(ANDROID_JACK_VM_ARGS)
+else
+jack_vm_args := -Dfile.encoding=UTF-8 -XX:+TieredCompilation
+endif
+available_jack_jars := $(wildcard $(LOCAL_PATH)/jacks/jack-*.jar)
+
+ifdef JACK_SERVER
+ifneq ($(JACK_SERVER),true)
+jack_server_disabled=true
+endif
+endif
+
+.PHONY: setup-jack-server
+setup-jack-server : PRIVATE_JACK_ADMIN := $(LOCAL_PATH)/jack-admin
+setup-jack-server : PRIVATE_PATH := $(LOCAL_PATH)
+setup-jack-server : PRIVATE_SERVER_VERSION := $(jack_server_version)
+setup-jack-server : PRIVATE_SERVER_JAR := $(jack_server_jar)
+setup-jack-server: $(JACK) $(LOCAL_PATH)/jack-launcher.jar $(jack_server_jar) $(available_jack_jars)
+ifndef jack_server_disabled
+	@echo Ensure Jack server is installed and started
+ifneq ($(dist_goal),)
+	$(hide) $(PRIVATE_JACK_ADMIN) stop-server 2>&1 || (exit 0)
+	$(hide) $(PRIVATE_JACK_ADMIN) kill-server 2>&1 || (exit 0)
+	$(hide) $(PRIVATE_JACK_ADMIN) uninstall-server 2>&1 || (exit 0)
+endif
+	$(hide) $(PRIVATE_JACK_ADMIN) install-server $(PRIVATE_PATH)/jack-launcher.jar $(PRIVATE_SERVER_JAR)  2>&1 || (exit 0)
+ifneq ($(dist_goal),)
+	$(hide) mkdir -p "$(DIST_DIR)/logs/jack/"
+	$(hide) JACK_SERVER_VM_ARGUMENTS="$(jack_vm_args) -Dcom.android.jack.server.log.file=$(abspath $(DIST_DIR))/logs/jack/jack-server-%u-%g.log" $(PRIVATE_JACK_ADMIN) start-server 2>&1 || exit 0
+else
+	$(hide) JACK_SERVER_VM_ARGUMENTS="$(jack_vm_args)" $(PRIVATE_JACK_ADMIN) start-server 2>&1 || exit 0
+endif
+	$(hide) $(PRIVATE_JACK_ADMIN) update server $(PRIVATE_SERVER_JAR) $(PRIVATE_SERVER_VERSION) 2>&1 || exit 0
+	$(hide) $(foreach jack_jar,$(available_jack_jars),$(PRIVATE_JACK_ADMIN) update jack $(jack_jar) $(patsubst $(PRIVATE_PATH)/jacks/jack-%.jar,%,$(jack_jar)) || exit 47;)
+endif
\ No newline at end of file