LP-05 Add CC artwork for connection-diagram
[librepilot.git] / package / Linux.mk
blob7e88aab5b9b51f6bb8a129bc55197fd9c15e2578
2 # Linux-specific packaging script
5 ifndef OPENPILOT_IS_COOL
6 $(error Top level Makefile must be used to build this target)
7 endif
9 # Are we using a debian based distro?
10 ifneq ($(shell which dpkg 2> /dev/null),)
12 DEB_DIST := unstable
13 # Instead of RELEASE-15.01-RC1 debian wants 15.01~RC1
14 UPSTREAM_VER := $(subst -,~,$(subst RELEASE-,,$(PACKAGE_LBL)))
15 DEB_REV := 1
16 ifeq ($(DEB_DIST), trusty)
17 DEB_REV := $(DEB_REV)$(DEB_DIST)1
18 endif
19 DEB_NAME := $(OP_SMALL_NAME)
20 DEB_ORIG_SRC := $(PACKAGE_DIR)/$(DEB_NAME)_$(UPSTREAM_VER).orig.tar.gz
21 DEB_PACKAGE_DIR := $(PACKAGE_DIR)/$(DEB_NAME)-$(UPSTREAM_VER)
22 DEB_ARCH := $(shell dpkg --print-architecture)
23 DEB_PACKAGE_NAME := $(DEB_NAME)_$(UPSTREAM_VER)-$(DEB_REV)_$(DEB_ARCH)
24 DEB_DIR := package/linux/debian
26 SED_DATE_STRG = $(shell date -R)
27 SED_SCRIPT = sed -i -e ' \
28 s/<VERSION>/$(UPSTREAM_VER)-$(DEB_REV)/g; \
29 s/<DATE>/$(SED_DATE_STRG)/g; \
30 s/<DIST>/$(DEB_DIST)/g; \
31 s/<NAME>/$(DEB_NAME)/g; \
34 # Ubuntu 14.04 (Trusty Tahr) has different names for the qml-modules
35 TRUSTY_DEPS_SED := s/qml-module-qtquick-controls/qtdeclarative5-controls-plugin/g; \
36 s/qml-module-qtquick-dialogs/qtdeclarative5-dialogs-plugin/g; \
37 s/qml-module-qtquick-localstorage/qtdeclarative5-localstorage-plugin/g; \
38 s/qml-module-qtquick-particles2/qtdeclarative5-particles-plugin/g; \
39 s/qml-module-qtquick2/qtdeclarative5-qtquick2-plugin/g; \
40 s/qml-module-qtquick-window2/qtdeclarative5-window-plugin/g; \
41 s/qml-module-qtquick-xmllistmodel/qtdeclarative5-xmllistmodel-plugin/g;
43 # Leave off Qt and ARM compiler dependencies if calling package target under the assumption that
44 # OP is providing them or the user already has them installed because OP is already built.
45 PACKAGE_DEPS_SED := s/python.*/python/;s/{misc:Depends}.*/{misc:Depends}/;
47 .PHONY: package
48 package: debian
49 @$(ECHO) "Building Linux package, please wait..."
50 $(V1) sed -i -e "$(PACKAGE_DEPS_SED)" debian/control
51 $(V1) dpkg-buildpackage -b -us -uc -nc
52 $(V1) mv $(ROOT_DIR)/../$(DEB_PACKAGE_NAME).deb $(BUILD_DIR)
53 $(V1) mv $(ROOT_DIR)/../$(DEB_PACKAGE_NAME).changes $(BUILD_DIR)
54 $(V1) rm -r debian
56 .PHONY: debian
57 debian: $(DEB_DIR)
58 $(V1) rm -rf debian
59 $(V1) cp -r $(DEB_DIR) debian
60 $(V1) cp -T package/linux/45-openpilot-permissions.rules debian/$(DEB_NAME).udev
61 $(V1) $(SED_SCRIPT) debian/changelog debian/control
62 ifeq ($(DEB_DIST), trusty)
63 $(V1) sed -i -e "$(TRUSTY_DEPS_SED)" debian/control
64 endif
66 .PHONY: package_src
67 package_src: $(DEB_ORIG_SRC_NAME) $(DEB_PACKAGE_DIR)
68 $(V1) cd $(DEB_PACKAGE_DIR) && dpkg-buildpackage -S -us -uc
70 $(DEB_ORIG_SRC): $(DIST_NAME).gz | $(PACKAGE_DIR)
71 $(V1) cp $(DIST_NAME).gz $(DEB_ORIG_SRC)
73 $(DEB_PACKAGE_DIR): $(DEB_ORIG_SRC) debian | $(PACKAGE_DIR)
74 $(V1) tar -xf $(DEB_ORIG_SRC) -C $(PACKAGE_DIR)
75 $(V1) mv debian $(PACKAGE_DIR)/$(PACKAGE_NAME)
76 $(V1) rm -rf $(DEB_PACKAGE_DIR) && mv $(PACKAGE_DIR)/$(PACKAGE_NAME) $(DEB_PACKAGE_DIR)
78 endif # Debian based distro?
79 ##############################
81 # Install OpenPilot
83 ##############################
84 prefix := /usr/local
85 bindir := $(prefix)/bin
86 libdir := $(prefix)/lib
87 datadir := $(prefix)/share
89 INSTALL = cp -a --no-preserve=ownership
90 LN = ln
91 LN_S = ln -s
93 .PHONY: install
94 install:
95 @$(ECHO) " INSTALLING GCS TO $(DESTDIR)/)"
96 $(V1) $(MKDIR) -p $(DESTDIR)$(bindir)
97 $(V1) $(MKDIR) -p $(DESTDIR)$(libdir)
98 $(V1) $(MKDIR) -p $(DESTDIR)$(datadir)
99 $(V1) $(MKDIR) -p $(DESTDIR)$(datadir)/applications
100 $(V1) $(MKDIR) -p $(DESTDIR)$(datadir)/pixmaps
101 $(V1) $(MKDIR) -p $(DESTDIR)$(udevdir)
102 $(V1) $(INSTALL) $(BUILD_DIR)/$(GCS_SMALL_NAME)_$(GCS_BUILD_CONF)/bin/$(GCS_SMALL_NAME) $(DESTDIR)$(bindir)
103 $(V1) $(INSTALL) $(BUILD_DIR)/$(GCS_SMALL_NAME)_$(GCS_BUILD_CONF)/lib/$(GCS_SMALL_NAME) $(DESTDIR)$(libdir)
104 $(V1) $(INSTALL) $(BUILD_DIR)/$(GCS_SMALL_NAME)_$(GCS_BUILD_CONF)/share/$(GCS_SMALL_NAME) $(DESTDIR)$(datadir)
105 $(V1) $(INSTALL) -T $(ROOT_DIR)/package/linux/openpilot.desktop $(DESTDIR)$(datadir)/applications/$(OP_SMALL_NAME).desktop
106 $(V1) sed -i -e 's/openpilotgcs/$(GCS_SMALL_NAME)/g;s/OpenPilot GCS/$(GCS_BIG_NAME)/g' $(DESTDIR)$(datadir)/applications/$(OP_SMALL_NAME).desktop
107 $(V1) $(INSTALL) -T $(ROOT_DIR)/package/linux/openpilot.png $(DESTDIR)$(datadir)/pixmaps/$(OP_SMALL_NAME).png