mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2024-12-01 09:24:10 +01:00
5aaa155995
implementation. Uses the standard OP package system front end then connects into the Debian Package manager for package building. Should work on both i386 and amd64 systems. Auto determins and runtime which system it is building on and produces an appropriate package for the platform in the build dir.
76 lines
2.4 KiB
Makefile
76 lines
2.4 KiB
Makefile
#
|
|
# Linux-specific packaging
|
|
#
|
|
|
|
define CP_DEB_FILES_TEMPLATE
|
|
.PHONY: $(1)
|
|
$(2)/$(1): $(3)/$(1)
|
|
$(V1)cp -a $$< $$@
|
|
endef
|
|
|
|
# Update this number for every formal release. The Deb packaging system relies on this to know to update a
|
|
# package or not. Otherwise, the user has to uninstall first.
|
|
VERNUM := 0.1.0
|
|
VERSION_FULL := $(VERNUM)-$(PACKAGE_LBL)
|
|
|
|
FLIGHT_FW := coptercontrol revolution
|
|
|
|
DEB_BUILD_DIR := $(ROOT_DIR)/debian
|
|
|
|
SED_DATE_STRG = $(shell date -R)
|
|
SED_SCRIPT = s/<VERSION>/$(VERSION_FULL)/;s/<DATE>/$(SED_DATE_STRG)/
|
|
|
|
DEB_CFG_CMN := $(ROOT_DIR)/package/linux/deb_common
|
|
DEB_CFG_CMN_FILES := $(shell ls $(DEB_CFG_CMN))
|
|
DEB_CFG_I386_DIR := $(ROOT_DIR)/package/linux/deb_i386
|
|
DEB_CFG_I386_FILES := $(shell ls $(DEB_CFG_I386_DIR))
|
|
DEB_CFG_AMD64_DIR := $(ROOT_DIR)/package/linux/deb_amd64
|
|
DEB_CFG_AMD64_FILES := $(shell ls $(DEB_CFG_AMD64_DIR))
|
|
DEB_PLATFORM := amd64
|
|
DEB_MACHINE_DIR := $(DEB_CFG_AMD64_DIR)
|
|
DEB_MACHINE_FILES := $(DEB_CFG_AMD64_FILES)
|
|
MACHINE_TYPE := $(shell uname -m)
|
|
ifneq ($(MACHINE_TYPE), x86_64)
|
|
DEB_PLATFORM := i386
|
|
DEB_MACHINE_DIR := $(DEB_CFG_I386_DIR)
|
|
DEB_MACHINE_FILES := $(DEB_CFG_I386_FILES)
|
|
endif
|
|
ALL_DEB_FILES = $(foreach f, $(DEB_CFG_CMN_FILES), $(DEB_BUILD_DIR)/$(f))
|
|
ALL_DEB_FILES += $(foreach f, $(DEB_MACHINE_FILES), $(DEB_BUILD_DIR)/$(f))
|
|
|
|
DEB_PACKAGE_NAME := openpilot_$(VERSION_FULL)_$(DEB_PLATFORM)
|
|
|
|
linux_deb_package: gcs deb_build package_flight
|
|
@echo $@ starting
|
|
cd .. && dpkg-buildpackage -b
|
|
$(V1)mv $(ROOT_DIR)/../$(DEB_PACKAGE_NAME).deb $(BUILD_DIR)
|
|
$(V1)mv $(ROOT_DIR)/../$(DEB_PACKAGE_NAME).changes $(BUILD_DIR)
|
|
$(V1)rm -rf $(DEB_BUILD_DIR)
|
|
|
|
deb_build: | $(DEB_BUILD_DIR) $(ALL_DEB_FILES)
|
|
@echo $@ starting
|
|
$(V1)$(shell echo $(PACKAGE_DIR) > $(BUILD_DIR)/package_dir)
|
|
$(V1)sed -i -e "$(SED_SCRIPT)" $(DEB_BUILD_DIR)/changelog
|
|
|
|
$(DEB_BUILD_DIR):
|
|
@echo $@ starting
|
|
$(V1)mkdir -p $(DEB_BUILD_DIR)
|
|
|
|
$(foreach cpfile, $(DEB_CFG_CMN_FILES), $(eval $(call CP_DEB_FILES_TEMPLATE,$(cpfile),$(DEB_BUILD_DIR),$(DEB_CFG_CMN))))
|
|
|
|
$(foreach cpfile, $(DEB_MACHINE_FILES), $(eval $(call CP_DEB_FILES_TEMPLATE,$(cpfile),$(DEB_BUILD_DIR),$(DEB_MACHINE_DIR))))
|
|
|
|
gcs: uavobjects
|
|
@echo "Linux Package Make of GCS."
|
|
$(V1) $(MAKE) -C $(ROOT_DIR) GCS_BUILD_CONF=release $@
|
|
|
|
identify:
|
|
@echo ""
|
|
@echo "We are in the Linux Package Make system."
|
|
@echo ""
|
|
$(V1)rm -rf $(DEB_BUILD_DIR)
|
|
|
|
ground_package: | identify linux_deb_package
|
|
|
|
.PHONY: identify gcs ground_package linux_deb_package deb_build $(DEB_BUILD_DIR)
|