187 lines
6.8 KiB
Makefile
187 lines
6.8 KiB
Makefile
ifndef KERNEL_MK
|
|
KERNEL_MK := 1
|
|
ifndef PRAWNOS_ROOT
|
|
PRAWNOS_ROOT := $(shell git rev-parse --show-toplevel)
|
|
endif
|
|
include $(PRAWNOS_ROOT)/scripts/BuildScripts/BuildCommon.mk
|
|
include $(PRAWNOS_ROOT)/initramfs/makefile
|
|
|
|
### TARGETED VARS ###
|
|
KERNEL_PATCHED := $(PRAWNOS_KERNEL_BUILD)/.kernel_patched
|
|
KERNEL_EXTRACTED := $(PRAWNOS_KERNEL_BUILD)/.kernel_extracted
|
|
|
|
KERNEL_SHARED_RESOURCES := $(PRAWNOS_KERNEL)/resources/shared
|
|
KERNEL_RESOURCES := $(PRAWNOS_KERNEL)/resources/$(TARGET)
|
|
KERNEL_PATCHES := $(PRAWNOS_KERNEL)/patches/$(TARGET)
|
|
|
|
KERNEL_BUILD_LOG := $(PRAWNOS_BUILD_LOGS)/kernel-log-$(TARGET).txt
|
|
|
|
KERNEL_LIBRE_CONFIG := $(KERNEL_RESOURCES)/libre-config
|
|
KERNEL_LIBRE_URL := https://www.linux-libre.fsfla.org/pub/linux-libre/releases/$(KVER)-gnu/
|
|
KERNEL_LIBRE_BASENAME := linux-libre-$(KVER)-gnu.tar.xz
|
|
KERNEL_LIBRE_TAR := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_LIBRE_BASENAME)
|
|
KERNEL_LIBRE_TAR_SIGNATURE := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_LIBRE_TAR).sign
|
|
KERNEL_LIBRE_TAR_SIGNATURE_BASENAME := $(KERNEL_LIBRE_BASENAME).sign
|
|
KERNEL_LIBRE_TAR_SIGNATURE_TARGET_BASENAME := $(KERNEL_LIBRE_BASENAME)
|
|
KERNEL_LIBRE_TAR_SIGNATURE_TARGET := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_LIBRE_TAR_SIGNATURE_TARGET_BASENAME)
|
|
KERNEL_LIBRE_PUBKEY := $(KERNEL_SHARED_RESOURCES)/linux-libre-signing-key.gpg
|
|
|
|
|
|
# Default to a libre kernel. blobby_kernel target will override if needed:
|
|
BLOBBY_BUILD := 1
|
|
KERNEL_BLOBBY_CONFIG := $(KERNEL_RESOURCES)/blobby-config
|
|
KERNEL_BLOBBY_URL := https://cdn.kernel.org/pub/linux/kernel/v5.x/
|
|
KERNEL_BLOBBY_BASENAME := linux-$(KVER).tar.xz
|
|
KERNEL_BLOBBY_TAR := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_BLOBBY_BASENAME)
|
|
KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME := linux-$(KVER).tar
|
|
KERNEL_BLOBBY_TAR_SIGNATURE_BASENAME := $(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME).sign
|
|
KERNEL_BLOBBY_TAR_SIGNATURE := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_BLOBBY_TAR_SIGNATURE_BASENAME)
|
|
KERNEL_BLOBBY_TAR_SIGNATURE_TARGET := $(PRAWNOS_BUILD_SOURCES)/$(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME)
|
|
KERNEL_BLOBBY_PUBKEY := $(KERNEL_SHARED_RESOURCES)/blobby-linux-signing-key.gpg
|
|
|
|
ATH9K_EXTRACTED := $(PRAWNOS_ATH9K_BUILD)/.ath9k_extracted
|
|
ATH9K_TAR := $(KERNEL_SHARED_RESOURCES)/open-ath9k-htc-firmware.tar.gz
|
|
ATH9K := open-ath9k-htc-firmware
|
|
ATH9K_9271_FW := $(PRAWNOS_ATH9K_BUILD)/target_firmware/htc_9271.fw
|
|
ATH9K_7010_FW := $(PRAWNOS_ATH9K_BUILD)/target_firmware/htc_7010.fw
|
|
ATH9K_BUILT := $(ATH9K_9271_FW)
|
|
ATH9K_BUILD_LOG := $(PRAWNOS_BUILD_LOGS)/ath9k-log.txt
|
|
|
|
KERNEL_ATH9K_FIRMWARES := $(PRAWNOS_KERNEL_BUILD)/open-ath9k-firmware
|
|
|
|
KERNEL_ATH9K_INSTALLED := $(KERNEL_ATH9K_FIRMWARES)/htc_9271.fw
|
|
|
|
### PHONY RULES
|
|
.PHONY: kernel
|
|
kernel: filesystem $(PRAWNOS_KERNEL_BUILT)
|
|
|
|
.PHONY: ath9k
|
|
ath9k: $(ATH9K_BUILT)
|
|
|
|
.PHONY: patch_kernel
|
|
patch_kernel: $(KERNEL_PATCHED)
|
|
|
|
.PHONY: extract_kernel
|
|
extract_kernel: $(KERNEL_EXTRACTED)
|
|
|
|
.PHONY: extract_ath9k
|
|
extract_ath9k: $(ATH9K_EXTRACTED)
|
|
|
|
.PHONY: kernel_image_package
|
|
kernel_image_package: $(PRAWNOS_KERNEL_BUILT)
|
|
$(MAKE) -C $(PRAWNOS_KERNEL_PACKAGE_IMAGE)
|
|
|
|
.PHONY: kernel_image_package_install
|
|
kernel_image_package_install: kernel_image_package
|
|
$(MAKE) -C $(PRAWNOS_KERNEL_PACKAGE_IMAGE) install INSTALL_TARGET=$(PRAWNOS_BUILD)
|
|
|
|
|
|
.PHONY: kernel_config
|
|
kernel_config: $(KERNEL_PATCHED)
|
|
$(PRAWNOS_KERNEL_SCRIPTS_MENUCONFIG) $(KERNEL_RESOURCES) $(PRAWNOS_KERNEL_BUILD) $(TARGET) $(KERNEL_CONFIG)
|
|
|
|
### CLEAN RULES
|
|
|
|
.PHONY: clean_kernel
|
|
clean_kernel:
|
|
rm -rf $(PRAWNOS_KERNEL_BUILD)
|
|
|
|
.PHONY: clean_ath9k
|
|
clean_ath9k:
|
|
rm -rf $(PRAWNOS_ATH9K_BUILD)
|
|
|
|
### DEVELOPER RULES
|
|
|
|
.PHONY: update_ath9k_tar
|
|
update_ath9k_tar:
|
|
mkdir -p tmp/$(ATH9K)
|
|
git clone --depth 1 https://github.com/qca/open-ath9k-htc-firmware.git tmp/$(ATH9K)
|
|
cd tmp && tar czvf $(ATH9K_SOURCE) $(ATH9K)
|
|
rm -rf tmp/
|
|
|
|
.PHONY: blobby_kernel
|
|
blobby_kernel:
|
|
$(MAKE) BLOBBY_BUILD=1 kernel
|
|
|
|
|
|
#TODO: package perf/linux-tools
|
|
.PHONY: perf
|
|
perf: $(PRAWNOS_KERNEL_BUILT)
|
|
$(PRAWNOS_KERNEL_SCRIPTS_PERF) $(KVER) $(KERNEL_RESOURCES) $(PRAWNOS_KERNEL_BUILD) $(PRAWNOS_INITRAMFS_IMAGE) $(TARGET)
|
|
|
|
### REAL RULES
|
|
|
|
ifeq ($(BLOBBY_BUILD),0)
|
|
KERNEL_CONFIG := $(KERNEL_LIBRE_CONFIG)
|
|
KERNEL_URL := $(KERNEL_LIBRE_URL)
|
|
KERNEL_BASENAME := $(KERNEL_LIBRE_BASENAME)
|
|
KERNEL_TAR := $(KERNEL_LIBRE_TAR)
|
|
KERNEL_TAR_SIGNATURE := $(KERNEL_LIBRE_TAR_SIGNATURE_BASENAME)
|
|
KERNEL_TAR_SIGNATURE_BASENAME := $(KERNEL_LIBRE_TAR_SIGNATURE_BASENAME)
|
|
KERNEL_TAR_SIGNATURE_TARGET := $(KERNEL_LIBRE_TAR_SIGNATURE_TARGET)
|
|
KERNEL_TAR_SIGNATURE_TARGET_BASENAME := $(KERNEL_LIBRE_TAR_SIGNATURE_TARGET_BASENAME)
|
|
KERNEL_PUBKEY := $(KERNEL_LIBRE_PUBKEY)
|
|
else
|
|
KERNEL_CONFIG := $(KERNEL_BLOBBY_CONFIG)
|
|
KERNEL_URL := $(KERNEL_BLOBBY_URL)
|
|
KERNEL_BASENAME := $(KERNEL_BLOBBY_BASENAME)
|
|
KERNEL_TAR := $(KERNEL_BLOBBY_TAR)
|
|
KERNEL_TAR_SIGNATURE := $(KERNEL_BLOBBY_TAR_SIGNATURE)
|
|
KERNEL_TAR_SIGNATURE_BASENAME := $(KERNEL_BLOBBY_TAR_SIGNATURE_BASENAME)
|
|
KERNEL_TAR_SIGNATURE_TARGET := $(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET)
|
|
KERNEL_TAR_SIGNATURE_TARGET_BASENAME := $(KERNEL_BLOBBY_TAR_SIGNATURE_TARGET_BASENAME)
|
|
KERNEL_PUBKEY := $(KERNEL_BLOBBY_PUBKEY)
|
|
endif
|
|
|
|
$(KERNEL_ATH9K_FIRMWARES):
|
|
mkdir -p $(KERNEL_ATH9K_FIRMWARES)
|
|
|
|
$(KERNEL_TAR_SIGNATURE): | $(PRAWNOS_BUILD_SOURCES)
|
|
wget $(WGET_OPTS) $(KERNEL_URL)/$(KERNEL_TAR_SIGNATURE_BASENAME) -O $(KERNEL_TAR_SIGNATURE)
|
|
|
|
$(KERNEL_EXTRACTED): $(KERNEL_TAR) $(KERNEL_TAR_SIGNATURE)
|
|
gpg --import $(KERNEL_PUBKEY)
|
|
case $(BLOBBY_BUILD) in \
|
|
0) \
|
|
gpg --verify $(KERNEL_TAR_SIGNATURE) $(KERNEL_TAR_SIGNATURE_TARGET) && \
|
|
tar -xvf $(KERNEL_TAR) -C $(PRAWNOS_BUILD) && \
|
|
touch $(KERNEL_EXTRACTED) \
|
|
;; \
|
|
1) \
|
|
if [ ! -f $(KERNEL_TAR_SIGNATURE_TARGET) ]; then xz --decompress --keep $(KERNEL_TAR) ; fi ; \
|
|
gpg --verify $(KERNEL_TAR_SIGNATURE) $(KERNEL_TAR_SIGNATURE_TARGET) && \
|
|
tar -xvf $(KERNEL_TAR_SIGNATURE_TARGET) -C $(PRAWNOS_BUILD) && \
|
|
touch $(KERNEL_EXTRACTED) \
|
|
;; \
|
|
*) \
|
|
@echo "Unknown kernel type"; \
|
|
exit 1 \
|
|
;; \
|
|
esac
|
|
|
|
$(KERNEL_TAR): | $(PRAWNOS_BUILD_LOGS) $(PRAWNOS_BUILD_SOURCES)
|
|
wget $(WGET_OPTS) $(KERNEL_URL)/$(KERNEL_BASENAME) -O $(KERNEL_TAR)
|
|
|
|
$(KERNEL_PATCHED): $(KERNEL_EXTRACTED)
|
|
@echo $(PRAWNOS_KERNEL_BUILD)
|
|
$(PRAWNOS_KERNEL_SCRIPTS_PATCH) $(KVER) $(KERNEL_PATCHES) $(PRAWNOS_KERNEL_BUILD) $(TARGET)
|
|
touch $(KERNEL_PATCHED)
|
|
|
|
$(ATH9K_EXTRACTED): | $(PRAWNOS_BUILD_LOGS) $(PRAWNOS_BUILD_SOURCES) $(PRAWNOS_BUILD_SHARED)
|
|
tar -xvf $(ATH9K_TAR) -C $(PRAWNOS_BUILD_SHARED)
|
|
touch $(ATH9K_EXTRACTED)
|
|
|
|
$(ATH9K_BUILT): $(ATH9K_EXTRACTED)
|
|
rm -rf $(ATH9K_BUILD_LOG)
|
|
$(PRAWNOS_KERNEL_SCRIPTS_BUILD_ATH9K) $(PRAWNOS_ATH9K_BUILD) 2>&1 | tee $(ATH9K_BUILD_LOG)
|
|
|
|
$(KERNEL_ATH9K_INSTALLED): $(KERNEL_PATCHED) $(ATH9K_BUILT) | $(KERNEL_ATH9K_FIRMWARES)
|
|
cp $(ATH9K_9271_FW) $(KERNEL_ATH9K_FIRMWARES)/
|
|
cp $(ATH9K_7010_FW) $(KERNEL_ATH9K_FIRMWARES)/
|
|
|
|
$(PRAWNOS_KERNEL_BUILT): $(KERNEL_PATCHED) $(PRAWNOS_INITRAMFS_IMAGE)
|
|
rm -rf $(KERNEL_BUILD_LOG)
|
|
$(PRAWNOS_KERNEL_SCRIPTS_BUILD) $(KVER) $(KERNEL_RESOURCES) $(PRAWNOS_KERNEL_BUILD) $(PRAWNOS_INITRAMFS_IMAGE) $(TARGET) $(KERNEL_CONFIG) 2>&1 | tee $(KERNEL_BUILD_LOG)
|
|
|
|
endif
|