1
0
mirror of https://bitbucket.org/librepilot/librepilot.git synced 2024-12-01 09:24:10 +01:00
LibrePilot/package/Makefile.linux
naiiawah 5aaa155995 Initial version of the integrated Linux-Deb package system
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.
2011-12-18 17:58:42 -07:00

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)