clevo-keyboard/Makefile

132 lines
4.8 KiB
Makefile
Raw Normal View History

2020-03-18 11:01:03 +01:00
#
# Copyright (c) 2018-2020 TUXEDO Computers GmbH <tux@tuxedocomputers.com>
#
# This file is part of tuxedo-keyboard.
#
# tuxedo-keyboard is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This software is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this software. If not, see <https://www.gnu.org/licenses/>.
#
2022-08-24 11:47:10 +02:00
obj-m := src/
2018-06-08 11:56:32 +02:00
PWD := $(shell pwd)
KDIR := /lib/modules/$(shell uname -r)/build
2018-06-08 11:56:32 +02:00
all:
make -C $(KDIR) M=$(PWD) modules
clean:
make -C $(KDIR) M=$(PWD) clean
install:
make -C $(KDIR) M=$(PWD) modules_install
# Package version and name from dkms.conf
VER := $(shell sed -n 's/^PACKAGE_VERSION=\([^\n]*\)/\1/p' dkms.conf 2>&1 /dev/null)
MODULE_NAME := $(shell sed -n 's/^PACKAGE_NAME=\([^\n]*\)/\1/p' dkms.conf 2>&1 /dev/null)
dkmsinstall:
cp -R . /usr/src/$(MODULE_NAME)-$(VER)
dkms install -m $(MODULE_NAME) -v $(VER)
2018-06-08 11:56:32 +02:00
dkmsremove:
dkms remove -m $(MODULE_NAME) -v $(VER) --all
rm -rf /usr/src/$(MODULE_NAME)-$(VER)
# --------------
# Packaging only
# ---------------
DEB_PACKAGE_NAME := $(MODULE_NAME)-$(VER)
# Deb package folder variables
DEB_PACKAGE_BASE := deb/$(DEB_PACKAGE_NAME)
DEB_PACKAGE_SRC := $(DEB_PACKAGE_BASE)/usr/src/$(DEB_PACKAGE_NAME)
DEB_PACKAGE_CTRL := $(DEB_PACKAGE_BASE)/DEBIAN
package: package-deb package-rpm
package-clean: package-deb-clean package-rpm-clean
package-deb:
# Create/complete folder structure according to current version
rm -rf $(DEB_PACKAGE_BASE) || true
cp -rf deb/module-name $(DEB_PACKAGE_BASE)
mv $(DEB_PACKAGE_BASE)/usr/share/doc/module-name $(DEB_PACKAGE_BASE)/usr/share/doc/$(MODULE_NAME)
mkdir -p $(DEB_PACKAGE_BASE)/usr/src || true
mkdir -p $(DEB_PACKAGE_SRC) || true
mkdir -p $(DEB_PACKAGE_BASE)/usr/share/$(MODULE_NAME) || true
# Replace name/version numbers in control/script files
sed -i 's/^Version:[^\n]*/Version: $(VER)/g' $(DEB_PACKAGE_CTRL)/control
sed -i 's/^Package:[^\n]*/Package: $(MODULE_NAME)/g' $(DEB_PACKAGE_CTRL)/control
sed -i 's/^version=[^\n]*/version=$(VER)/g' $(DEB_PACKAGE_CTRL)/postinst
sed -i 's/^module=[^\n]*/module=$(MODULE_NAME)/g' $(DEB_PACKAGE_CTRL)/postinst
sed -i 's/^version=[^\n]*/version=$(VER)/g' $(DEB_PACKAGE_CTRL)/prerm
sed -i 's/^module=[^\n]*/module=$(MODULE_NAME)/g' $(DEB_PACKAGE_CTRL)/prerm
# Copy source
cp -rf dkms.conf $(DEB_PACKAGE_SRC)
cp -rf Makefile $(DEB_PACKAGE_SRC)
cp -rf src $(DEB_PACKAGE_SRC)
cp -rf src_pkg/dkms_postinst $(DEB_PACKAGE_BASE)/usr/share/$(MODULE_NAME)/postinst
cp -rf tuxedo_keyboard.conf $(DEB_PACKAGE_BASE)/usr/share/$(MODULE_NAME)/tuxedo_keyboard.conf
# Make sure files and folders have acceptable permissions
chmod -R 755 $(DEB_PACKAGE_CTRL)
chmod 644 $(DEB_PACKAGE_CTRL)/control
find deb/$(DEB_PACKAGE_NAME)/usr -type d -exec chmod 755 {} \;
find deb/$(DEB_PACKAGE_NAME)/usr -type f -exec chmod 644 {} \;
chmod 755 $(DEB_PACKAGE_BASE)/usr/share/$(MODULE_NAME)/postinst
chmod 644 $(DEB_PACKAGE_BASE)/usr/share/$(MODULE_NAME)/tuxedo_keyboard.conf
gunzip $(DEB_PACKAGE_BASE)/usr/share/doc/$(MODULE_NAME)/changelog.gz
gzip -n9 $(DEB_PACKAGE_BASE)/usr/share/doc/$(MODULE_NAME)/changelog
# Make deb package
dpkg-deb --root-owner-group -b $(DEB_PACKAGE_BASE) $(DEB_PACKAGE_NAME).deb
package-deb-clean:
rm -rf deb/$(MODULE_NAME)-* > /dev/null 2>&1 || true
rm *.deb > /dev/null 2>&1 || true
RPM_PACKAGE_NAME := $(MODULE_NAME)-$(VER)
RPM_PACKAGE_SRC := rpm/SOURCES/$(RPM_PACKAGE_NAME)
RPM_SPEC := rpm/SPECS/$(MODULE_NAME).spec
RELEASE := 1
package-rpm:
# Create folder source structure according to current version
rm -rf rpm || true
mkdir -p $(RPM_PACKAGE_SRC)
mkdir -p rpm/SPECS
# Copy spec template
cp -rf src_pkg/rpm_pkg.spec $(RPM_SPEC)
# Modify spec file with version etc.
sed -i 's/^%define module[^\n]*/%define module $(MODULE_NAME)/g' $(RPM_SPEC)
sed -i 's/^Version:[^\n]*/Version: $(VER)/g' $(RPM_SPEC)
sed -i 's/^Release:[^\n]*/Release: $(RELEASE)/g' $(RPM_SPEC)
# Copy source
cp -rf dkms.conf $(RPM_PACKAGE_SRC)
cp -rf Makefile $(RPM_PACKAGE_SRC)
cp -rf src $(RPM_PACKAGE_SRC)
cp -rf LICENSE $(RPM_PACKAGE_SRC)
cp -rf src_pkg/dkms_postinst $(RPM_PACKAGE_SRC)/postinst
cp -rf tuxedo_keyboard.conf $(RPM_PACKAGE_SRC)
# Compress/package source
cd rpm/SOURCES && tar cjvf $(RPM_PACKAGE_NAME).tar.bz2 $(RPM_PACKAGE_NAME)
# Make rpm package
rpmbuild --debug -bb --define "_topdir `pwd`/rpm" $(RPM_SPEC)
# Copy built package
cp rpm/RPMS/noarch/*.rpm .
package-rpm-clean:
rm -rf rpm > /dev/null 2>&1 || true
rm *.rpm > /dev/null 2>&1 || true