diff --git a/ndk/build/core/build-binary.mk b/ndk/build/core/build-binary.mk index 1446a7db6..f7e69829c 100644 --- a/ndk/build/core/build-binary.mk +++ b/ndk/build/core/build-binary.mk @@ -53,7 +53,7 @@ ifeq ($(LOCAL_CPP_EXTENSION),) LOCAL_CPP_EXTENSION := .cpp else ifneq ($(words $(LOCAL_CPP_EXTENSION)),1) - $(call __ndk_log, LOCAL_CPP_EXTENSION in $(LOCAL_MAKEFILE) must be one word only, not '$(LOCAL_CPP_EXTENSION)') + $(call __ndk_info, LOCAL_CPP_EXTENSION in $(LOCAL_MAKEFILE) must be one word only, not '$(LOCAL_CPP_EXTENSION)') $(call __ndk_error, Aborting) endif endif @@ -79,12 +79,12 @@ ifeq ($(LOCAL_ARM_MODE),) LOCAL_ARM_MODE := thumb else ifneq ($(words $(LOCAL_ARM_MODE)),1) - $(call __ndk_log, LOCAL_ARM_MODE in $(LOCAL_MAKEFILE) must be one word, not '$(LOCAL_ARM_MODE)') + $(call __ndk_info, LOCAL_ARM_MODE in $(LOCAL_MAKEFILE) must be one word, not '$(LOCAL_ARM_MODE)') $(call __ndk_error, Aborting) endif # check that LOCAL_ARM_MODE is defined to either 'arm' or 'thumb' $(if $(filter-out thumb arm, $(LOCAL_ARM_MODE)),\ - $(call __ndk_log, LOCAL_ARM_MODE must be defined to either 'arm' or 'thumb' in $(LOCAL_MAKEFILE), not '$(LOCAL_ARM_MODE)')\ + $(call __ndk_info, LOCAL_ARM_MODE must be defined to either 'arm' or 'thumb' in $(LOCAL_MAKEFILE) not '$(LOCAL_ARM_MODE)')\ $(call __ndk_error, Aborting)\ ) endif @@ -134,3 +134,32 @@ $(foreach src,$(cpp_sources), $(call compile-cpp-source,$(src))) ALL_DEPENDENCY_DIRS += $(sort $(LOCAL_DEPENDENCY_DIRS)) CLEAN_OBJS_DIRS += $(LOCAL_OBJS_DIR) + +# +# Handle the static and shared libraries this module depends on +# +LOCAL_STATIC_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_STATIC_LIBRARIES)) +LOCAL_SHARED_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_SHARED_LIBRARIES)) + +static_libraries := $(call map,static-library-path,$(LOCAL_STATIC_LIBRARIES)) +shared_libraries := $(call map,shared-library-path,$(LOCAL_SHARED_LIBRARIES)) \ + $(TARGET_PREBUILT_SHARED_LIBRARIES) + +$(LOCAL_BUILT_MODULE): $(static_libraries) $(shared_libraries) + +# If LOCAL_LDLIBS contains anything like -l then +# prepend a -L$(SYSROOT)/usr/lib to it to ensure that the linker +# looks in the right location +# +ifneq ($(filter -l%,$(LOCAL_LDLIBS)),) + LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib $(LOCAL_LDLIBS) +endif + +$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libraries) +$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBRARIES := $(shared_libraries) +$(LOCAL_BUILT_MODULE): PRIVATE_OBJECTS := $(LOCAL_OBJECTS) + +$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(TARGET_LDFLAGS) $(LOCAL_LDFLAGS) +$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS := $(LOCAL_LDLIBS) $(TARGET_LDLIBS) + +$(LOCAL_BUILT_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE)) diff --git a/ndk/build/core/build-executable.mk b/ndk/build/core/build-executable.mk index aedcabdef..6015e5ff4 100644 --- a/ndk/build/core/build-executable.mk +++ b/ndk/build/core/build-executable.mk @@ -35,38 +35,13 @@ LOCAL_OBJS_DIR := $(TARGET_OBJS)/$(LOCAL_MODULE) include $(BUILD_SYSTEM)/build-binary.mk -LOCAL_STATIC_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_STATIC_LIBRARIES)) -LOCAL_SHARED_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_SHARED_LIBRARIES)) - -static_libraries := $(call map,static-library-path,$(LOCAL_STATIC_LIBRARIES)) -shared_libraries := $(call map,shared-library-path,$(LOCAL_SHARED_LIBRARIES)) \ - $(TARGET_PREBUILT_SHARED_LIBRARIES) - -$(LOCAL_BUILT_MODULE): $(static_libraries) $(shared_libraries) - -LOCAL_LDLIBS := $(_module_libs) $(LOCAL_LDLIBS) - -$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBRARIES := $(shared_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_OBJECTS := $(LOCAL_OBJECTS) - -$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(TARGET_LDFLAGS) $(LOCAL_LDFLAGS) -$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS := $(LOCAL_LDLIBS) $(TARGET_LDLIBS) - -$(LOCAL_BUILT_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE)) -$(LOCAL_BUILT_MODULE): PRIVATE_DEST := $(NDK_APP_DEST) -$(LOCAL_BUILT_MODULE): PRIVATE_SRC := $(LOCAL_BUILT_MODULE) -$(LOCAL_BUILT_MODULE): PRIVATE_DST := $(PRIVATE_DEST)/$(PRIVATE_NAME) - $(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS) @ mkdir -p $(dir $@) @ echo "Executable : $(PRIVATE_NAME)" $(hide) $(cmd-build-executable) - @ echo "Install : $(PRIVATE_NAME) => $(PRIVATE_DEST)" - $(hide) mkdir -p $(PRIVATE_DEST) - $(hide) install -p $(PRIVATE_SRC) $(PRIVATE_DST) - $(hide) $(call cmd-strip, $(PRIVATE_DST)) ALL_EXECUTABLES += $(LOCAL_BUILT_MODULE) +include $(BUILD_SYSTEM)/install-binary.mk + endif # filter LOCAL_MODULE in NDK_APP_MODULES diff --git a/ndk/build/core/build-module.mk b/ndk/build/core/build-module.mk index 83cc38cca..67a29e0be 100644 --- a/ndk/build/core/build-module.mk +++ b/ndk/build/core/build-module.mk @@ -41,12 +41,12 @@ intermediates := $($(my)OBJS) # LOCAL_INTERMEDIATES := $(LOCAL_BUILT_MODULE) -# LOCAL_BUILD_MODE will be either arm or thumb +# LOCAL_BUILD_MODE will be either release or debug # ifneq ($(NDK_APP_OPTIM),) LOCAL_BUILD_MODE := $(NDK_APP_OPTIM) else - LOCAL_BUILD_MODE := thumb + LOCAL_BUILD_MODE := release endif # diff --git a/ndk/build/core/build-shared-library.mk b/ndk/build/core/build-shared-library.mk index 7cf9841b1..27ac0a7de 100644 --- a/ndk/build/core/build-shared-library.mk +++ b/ndk/build/core/build-shared-library.mk @@ -14,7 +14,7 @@ # # this file is included from Android.mk files to build a target-specific -# executable program +# shared library # LOCAL_BUILD_SCRIPT := BUILD_SHARED_LIBRARY @@ -35,26 +35,6 @@ LOCAL_OBJS_DIR := $(TARGET_OBJS)/$(LOCAL_MODULE) include $(BUILD_SYSTEM)/build-binary.mk -LOCAL_STATIC_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_STATIC_LIBRARIES)) -LOCAL_SHARED_LIBRARIES := $(call strip-lib-prefix,$(LOCAL_SHARED_LIBRARIES)) - -static_libraries := $(call map,static-library-path,$(LOCAL_STATIC_LIBRARIES)) -shared_libraries := $(call map,shared-library-path,$(LOCAL_SHARED_LIBRARIES)) \ - $(TARGET_PREBUILT_SHARED_LIBRARIES) - -$(LOCAL_BUILT_MODULE): $(static_libraries) $(shared_libraries) - -LOCAL_LDLIBS := $(_module_libs) $(LOCAL_LDLIBS) - -$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBRARIES := $(shared_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_OBJECTS := $(LOCAL_OBJECTS) - -$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(TARGET_LDFLAGS) $(LOCAL_LDFLAGS) -$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS := $(LOCAL_LDLIBS) $(TARGET_LDLIBS) - -$(LOCAL_BUILT_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE)) - $(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS) @ mkdir -p $(dir $@) @ echo "SharedLibrary : $(PRIVATE_NAME)" @@ -62,21 +42,6 @@ $(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS) ALL_SHARED_LIBRARIES += $(LOCAL_BUILT_MODULE) -# Installed module handling -# -LOCAL_INSTALLED_MODULE := $(NDK_APP_DEST)/$(notdir $(LOCAL_BUILT_MODULE)) - -$(LOCAL_INSTALLED_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE)) -$(LOCAL_INSTALLED_MODULE): PRIVATE_SRC := $(LOCAL_BUILT_MODULE) -$(LOCAL_INSTALLED_MODULE): PRIVATE_DEST := $(NDK_APP_DEST) -$(LOCAL_INSTALLED_MODULE): PRIVATE_DST := $(LOCAL_INSTALLED_MODULE) - -$(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE) - @ echo "Install : $(PRIVATE_NAME) => $(PRIVATE_DEST)" - $(hide) mkdir -p $(PRIVATE_DEST) - $(hide) install -p $(PRIVATE_SRC) $(PRIVATE_DST) - $(hide) $(call cmd-strip, $(PRIVATE_DST)) - -ALL_INSTALLED_MODULES += $(LOCAL_INSTALLED_MODULE) +include $(BUILD_SYSTEM)/install-binary.mk endif # filter LOCAL_MODULE in NDK_APP_MODULES diff --git a/ndk/build/core/build-static-library.mk b/ndk/build/core/build-static-library.mk index 3bbf75eee..3de6d5f37 100644 --- a/ndk/build/core/build-static-library.mk +++ b/ndk/build/core/build-static-library.mk @@ -14,7 +14,7 @@ # # this file is included from Android.mk files to build a target-specific -# executable program +# static library # LOCAL_BUILD_SCRIPT := BUILD_STATIC_LIBRARY @@ -35,24 +35,6 @@ LOCAL_OBJS_DIR := $(TARGET_OBJS)/$(LOCAL_MODULE) include $(BUILD_SYSTEM)/build-binary.mk -static_libraries := $(call map,static-library-path,$(LOCAL_STATIC_LIBRARIES)) -shared_libraries := $(call map,shared-library-path,$(LOCAL_SHARED_LIBRARIES)) \ - $(TARGET_PREBUILT_SHARED_LIBRARIES) - -$(LOCAL_BUILT_MODULE): $(static_libraries) $(shared_libraries) - -LOCAL_LDLIBS := $(_module_libs) $(LOCAL_LDLIBS) - -$(LOCAL_BUILT_MODULE): PRIVATE_STATIC_LIBRARIES := $(static_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBRARIES := $(shared_libraries) -$(LOCAL_BUILT_MODULE): PRIVATE_OBJECTS := $(LOCAL_OBJECTS) - -$(LOCAL_BUILT_MODULE): PRIVATE_LDFLAGS := $(TARGET_LDFLAGS) $(LOCAL_LDFLAGS) -$(LOCAL_BUILT_MODULE): PRIVATE_LDLIBS := $(LOCAL_LDLIBS) $(TARGET_LDLIBS) - -$(LOCAL_BUILT_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE)) -$(LOCAL_BUILT_MODULE): PRIVATE_SRC := $(LOCAL_BUILT_MODULE) - $(LOCAL_BUILT_MODULE): $(LOCAL_OBJECTS) @ mkdir -p $(dir $@) @ echo "StaticLibrary : $(PRIVATE_NAME)" diff --git a/ndk/build/core/clear-vars.mk b/ndk/build/core/clear-vars.mk index 0d2702286..30e19c358 100644 --- a/ndk/build/core/clear-vars.mk +++ b/ndk/build/core/clear-vars.mk @@ -20,6 +20,8 @@ NDK_LOCAL_VARS := \ LOCAL_MODULE \ LOCAL_SRC_FILES \ LOCAL_CFLAGS \ + LOCAL_CXXFLAGS \ + LOCAL_CPPFLAGS \ LOCAL_LDFLAGS \ LOCAL_ARFLAGS \ LOCAL_CPP_EXTENSION \ diff --git a/ndk/build/core/definitions.mk b/ndk/build/core/definitions.mk index 1a425de84..6b660a58f 100644 --- a/ndk/build/core/definitions.mk +++ b/ndk/build/core/definitions.mk @@ -368,12 +368,11 @@ $$(_OBJ): PRIVATE_ARM_MODE := $$(LOCAL_ARM_MODE) $$(_OBJ): PRIVATE_ARM_TEXT := $$(LOCAL_ARM_TEXT) $$(_OBJ): PRIVATE_CC := $$($$(my)CC) $$(_OBJ): PRIVATE_CFLAGS := $$($$(my)CFLAGS) \ - $$($$(my)_$(LOCAL_ARM_MODE)_$(LOCAL_BUILD_MODE)_CFLAGS) \ + $$($$(my)$(LOCAL_ARM_MODE)_$(LOCAL_BUILD_MODE)_CFLAGS) \ -I$$(LOCAL_PATH) \ $$(LOCAL_CFLAGS) \ $$(NDK_APP_CPPFLAGS) \ - $$(NDK_APP_CFLAGS) \ - $$(LOCAL_ARM_CFLAGS) + $$(NDK_APP_CFLAGS) $$(_OBJ): $$(_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) @mkdir -p $$(dir $$(PRIVATE_OBJ)) @@ -427,12 +426,11 @@ $$(_OBJ): PRIVATE_ARM_MODE := $$(LOCAL_ARM_MODE) $$(_OBJ): PRIVATE_ARM_TEXT := $$(LOCAL_ARM_TEXT) $$(_OBJ): PRIVATE_CXX := $$($$(my)CXX) $$(_OBJ): PRIVATE_CXXFLAGS := $$($$(my)CXXFLAGS) \ - $$($$(my)_$(LOCAL_ARM_MODE)_$(LOCAL_BUILD_MODE)_CFLAGS) \ + $$($$(my)$(LOCAL_ARM_MODE)_$(LOCAL_BUILD_MODE)_CFLAGS) \ -I$$(LOCAL_PATH) \ $$(LOCAL_CFLAGS) \ $$(NDK_APP_CPPFLAGS) \ $$(NDK_APP_CXXFLAGS) \ - $$(LOCAL_ARM_CFLAGS) $$(_OBJ): $$(_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) @mkdir -p $$(dir $$(PRIVATE_OBJ)) diff --git a/ndk/build/core/install-binary.mk b/ndk/build/core/install-binary.mk new file mode 100644 index 000000000..441469cfe --- /dev/null +++ b/ndk/build/core/install-binary.mk @@ -0,0 +1,32 @@ +# 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. +# + +# Installed module handling +# +LOCAL_INSTALLED_MODULE := $(NDK_APP_DEST)/$(notdir $(LOCAL_BUILT_MODULE)) + +$(LOCAL_INSTALLED_MODULE): PRIVATE_NAME := $(notdir $(LOCAL_BUILT_MODULE)) +$(LOCAL_INSTALLED_MODULE): PRIVATE_SRC := $(LOCAL_BUILT_MODULE) +$(LOCAL_INSTALLED_MODULE): PRIVATE_DEST := $(NDK_APP_DEST) +$(LOCAL_INSTALLED_MODULE): PRIVATE_DST := $(LOCAL_INSTALLED_MODULE) + +$(LOCAL_INSTALLED_MODULE): $(LOCAL_BUILT_MODULE) + @ echo "Install : $(PRIVATE_NAME) => $(PRIVATE_DEST)" + $(hide) mkdir -p $(PRIVATE_DEST) + $(hide) install -p $(PRIVATE_SRC) $(PRIVATE_DST) + $(hide) $(call cmd-strip, $(PRIVATE_DST)) + +ALL_INSTALLED_MODULES += $(LOCAL_INSTALLED_MODULE) + diff --git a/ndk/docs/CHANGES.TXT b/ndk/docs/CHANGES.TXT index 6fe995cd3..adea2f53e 100644 --- a/ndk/docs/CHANGES.TXT +++ b/ndk/docs/CHANGES.TXT @@ -11,5 +11,18 @@ current version * ensure that the script is run from $NDKROOT as build/host-setup.sh * add --help, --verbose and --no-make-check options +- Properly add sysroot library search path at build time. This makes a line + in Android.mk like: + + LOCAL_LDLIBS := -lz + + Actually work correctly, instead of having the linker complaining that it + could not find the corresponding libz.so library. + +- Generate thumb binaries by default. + +- Generate proper unoptimized versions of binaries when APP_OPTIM := debug + + ------------------------------------------------------------------------------- android-1.5_r1 released.