This moves the copy/strip/rm logic for the Windows SDK from the patch_windows_sdk.sh to a regular sdk-windows-x86.atree. The bash script is still here to invoke atree and do whatever cleanup we might want to do later. This should make it easier to maintain the Windows SDK by providing a structure similar to tools.atree. This change requires build.git Change-Id: I22aae7a8 to have rm/strip support in atree. Change-Id: If937eef4a819e7da21aa993459111fc5d99474a8
98 lines
3.1 KiB
Makefile
98 lines
3.1 KiB
Makefile
# Makefile to build the Windows SDK under linux.
|
|
#
|
|
# This file is included by build/core/Makefile when a PRODUCT-sdk-win_sdk build
|
|
# is requested.
|
|
#
|
|
# Summary of operations:
|
|
# - create a regular Linux SDK
|
|
# - build a few Windows tools
|
|
# - mirror the linux SDK directory and patch it with the Windows tools
|
|
#
|
|
# This way we avoid the headache of building a full SDK in MinGW mode, which is
|
|
# made complicated by the fact the build system does not support cross-compilation.
|
|
|
|
# We can only use this under Linux with the mingw32 package installed.
|
|
ifneq ($(shell uname),Linux)
|
|
$(error Linux is required to create a Windows SDK)
|
|
endif
|
|
ifeq ($(strip $(shell which i586-mingw32msvc-gcc 2>/dev/null)),)
|
|
$(error MinGW is required to build a Windows SDK. Please 'apt-get install mingw32')
|
|
endif
|
|
ifeq ($(strip $(shell which unix2dos todos 2>/dev/null)),)
|
|
$(error Need a unix2dos command. Please 'apt-get install tofrodos')
|
|
endif
|
|
|
|
# Define WIN_SDK_TARGETS, the list of targets located in topdir/sdk
|
|
# and are tools-dependent, not platform-dependent.
|
|
include $(TOPDIR)sdk/build/windows_sdk_tools.mk
|
|
|
|
# This is the list of targets that we want to generate as
|
|
# Windows executables. All the targets specified here are located in
|
|
# the topdir/development directory and are somehow platform-dependent.
|
|
WIN_TARGETS := \
|
|
aapt adb aidl \
|
|
etc1tool \
|
|
dexdump dmtracedump \
|
|
fastboot \
|
|
hprof-conv \
|
|
llvm-rs-cc \
|
|
prebuilt \
|
|
sqlite3 \
|
|
zipalign \
|
|
$(WIN_SDK_TARGETS)
|
|
|
|
# This is the list of *Linux* build tools that we need
|
|
# in order to be able to make the WIN_TARGETS. They are
|
|
# build prerequisites.
|
|
WIN_BUILD_PREREQ := \
|
|
acp \
|
|
llvm-rs-cc
|
|
|
|
|
|
# MAIN_SDK_NAME/DIR is set in build/core/Makefile
|
|
WIN_SDK_NAME := $(subst $(HOST_OS)-$(HOST_ARCH),windows,$(MAIN_SDK_NAME))
|
|
WIN_SDK_DIR := $(subst $(HOST_OS)-$(HOST_ARCH),windows,$(MAIN_SDK_DIR))
|
|
WIN_SDK_ZIP := $(WIN_SDK_DIR)/$(WIN_SDK_NAME).zip
|
|
|
|
$(call dist-for-goals, win_sdk, $(WIN_SDK_ZIP))
|
|
|
|
.PHONY: win_sdk winsdk-tools
|
|
|
|
define winsdk-banner
|
|
$(info )
|
|
$(info ====== [Windows SDK] $1 ======)
|
|
$(info )
|
|
endef
|
|
|
|
define winsdk-info
|
|
$(info MAIN_SDK_NAME: $(MAIN_SDK_NAME))
|
|
$(info WIN_SDK_NAME : $(WIN_SDK_NAME))
|
|
$(info WIN_SDK_DIR : $(WIN_SDK_DIR))
|
|
$(info WIN_SDK_ZIP : $(WIN_SDK_ZIP))
|
|
endef
|
|
|
|
win_sdk: $(WIN_SDK_ZIP)
|
|
$(call winsdk-banner,Done)
|
|
|
|
winsdk-tools: $(WIN_BUILD_PREREQ)
|
|
$(call winsdk-banner,Build Windows Tools)
|
|
$(hide) USE_MINGW=1 USE_CCACHE="" $(MAKE) PRODUCT-$(TARGET_PRODUCT)-$(strip $(WIN_TARGETS)) $(if $(hide),,showcommands)
|
|
|
|
$(WIN_SDK_ZIP): winsdk-tools sdk
|
|
$(call winsdk-banner,Build $(WIN_SDK_NAME))
|
|
$(call winsdk-info)
|
|
$(hide) rm -rf $(WIN_SDK_DIR)
|
|
$(hide) mkdir -p $(WIN_SDK_DIR)
|
|
$(hide) cp -rf $(MAIN_SDK_DIR)/$(MAIN_SDK_NAME) $(WIN_SDK_DIR)/$(WIN_SDK_NAME)
|
|
$(hide) USB_DRIVER_HOOK=$(USB_DRIVER_HOOK) \
|
|
$(TOPDIR)development/build/tools/patch_windows_sdk.sh $(subst @,-q,$(hide)) \
|
|
$(WIN_SDK_DIR)/$(WIN_SDK_NAME) $(OUT_DIR) $(TOPDIR)
|
|
$(hide) $(TOPDIR)sdk/build/patch_windows_sdk.sh $(subst @,-q,$(hide)) \
|
|
$(WIN_SDK_DIR)/$(WIN_SDK_NAME) $(OUT_DIR) $(TOPDIR)
|
|
$(hide) ( \
|
|
cd $(WIN_SDK_DIR) && \
|
|
rm -f $(WIN_SDK_NAME).zip && \
|
|
zip -rq $(subst @,-q,$(hide)) $(WIN_SDK_NAME).zip $(WIN_SDK_NAME) \
|
|
)
|
|
@echo "Windows SDK generated at $(WIN_SDK_ZIP)"
|