build-shared-library.mk revision ae38562d764e4c3541b2c07732274f0c1115fe48
1# Copyright (C) 2009 The Android Open Source Project
2#
3# Licensed under the Apache License, Version 2.0 (the "License");
4# you may not use this file except in compliance with the License.
5# You may obtain a copy of the License at
6#
7#      http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS,
11# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12# See the License for the specific language governing permissions and
13# limitations under the License.
14#
15
16# this file is included from Android.mk files to build a target-specific
17# executable program
18#
19
20LOCAL_BUILD_SCRIPT := BUILD_SHARED_LIBRARY
21LOCAL_MODULE_CLASS := SHARED_LIBRARY
22LOCAL_MAKEFILE     := $(local-makefile)
23
24$(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
25$(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
26
27# only adjust the build if this module is needed by the current app
28ifneq ($(filter $(LOCAL_MODULE),$(NDK_APP_MODULES)),)
29
30# we are building target objects
31my := TARGET_
32
33LOCAL_BUILT_MODULE := $(call shared-library-path,$(LOCAL_MODULE))
34LOCAL_OBJS_DIR     := $(TARGET_OBJS)/$(LOCAL_MODULE)
35
36include $(BUILD_SYSTEM)/build-binary.mk
37
38LOCAL_STATIC_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_STATIC_LIBRARIES))
39LOCAL_SHARED_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_SHARED_LIBRARIES))
40
41static_libraries := $(call map,static-library-path,$(LOCAL_STATIC_LIBRARIES))
42shared_libraries := $(call map,shared-library-path,$(LOCAL_SHARED_LIBRARIES)) \
43                    $(TARGET_PREBUILT_SHARED_LIBRARIES)
44
45$(LOCAL_BUILT_MODULE): $(static_libraries) $(shared_libraries)
46
47LOCAL_LDLIBS := $(_module_libs) $(LOCAL_LDLIBS)
48
49$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libraries)
50$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBRARIES := $(shared_libraries)
51$(LOCAL_BUILT_MODULE): PRIVATE_OBJECTS          := $(LOCAL_OBJECTS)
52
53$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(TARGET_LDFLAGS) $(LOCAL_LDFLAGS)
54$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS  := $(LOCAL_LDLIBS) $(TARGET_LDLIBS)
55
56$(LOCAL_BUILT_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE))
57
58$(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS)
59	@ mkdir -p $(dir $@)
60	@ echo "SharedLibrary  : $(PRIVATE_NAME)"
61	$(hide) $(cmd-build-shared-library)
62
63ALL_SHARED_LIBRARIES += $(LOCAL_BUILT_MODULE)
64
65# Installed module handling
66#
67LOCAL_INSTALLED_MODULE := $(NDK_APP_DEST)/$(notdir $(LOCAL_BUILT_MODULE))
68
69$(LOCAL_INSTALLED_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE))
70$(LOCAL_INSTALLED_MODULE): PRIVATE_SRC  := $(LOCAL_BUILT_MODULE)
71$(LOCAL_INSTALLED_MODULE): PRIVATE_DEST := $(NDK_APP_DEST)
72$(LOCAL_INSTALLED_MODULE): PRIVATE_DST  := $(LOCAL_INSTALLED_MODULE)
73
74$(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE)
75	@ echo "Install        : $(PRIVATE_NAME) => $(PRIVATE_DEST)"
76	$(hide) mkdir -p $(PRIVATE_DEST)
77	$(hide) install -p $(PRIVATE_SRC) $(PRIVATE_DST)
78	$(hide) $(call cmd-strip, $(PRIVATE_DST))
79
80ALL_INSTALLED_MODULES += $(LOCAL_INSTALLED_MODULE)
81
82endif # filter LOCAL_MODULE in NDK_APP_MODULES
83