Skip to content
Snippets Groups Projects
Makefile 6.88 KiB
# DESTDIR is used to install into a different root directory
DESTDIR?=/
# Specify the kernel directory to use
KERNELDIR?=/lib/modules/$(shell uname -r)/build
# Need the absolute directory do the driver directory to build kernel modules
DRIVERDIR?=$(shell pwd)/driver

# Where kernel drivers are going to be installed
MODULEDIR?=/lib/modules/$(shell uname -r)/kernel/drivers/hid

# Python dir
PYTHONDIR?=$(shell python3 -c 'import sys; print(sys.path[-1])')

DKMS_NAME?=openrazer-driver
DKMS_VER?=2.9.0


# Build all target
all: driver

# Driver compilation
driver:
	@echo -e "\n::\033[32m Compiling OpenRazer kernel modules\033[0m"
	@echo "========================================"
	$(MAKE) -C $(KERNELDIR) M=$(DRIVERDIR) modules

driver_clean:
	@echo -e "\n::\033[32m Cleaning OpenRazer kernel modules\033[0m"
	@echo "========================================"
	$(MAKE) -C "$(KERNELDIR)" M="$(DRIVERDIR)" clean

# Install kernel modules and then update module dependencies
driver_install:
	@echo -e "\n::\033[34m Installing OpenRazer kernel modules\033[0m"
	@echo "====================================================="
	@cp -v $(DRIVERDIR)/*.ko $(DESTDIR)/$(MODULEDIR)
	@chown -v root:root $(DESTDIR)/$(MODULEDIR)/*.ko
	depmod

# Just use for packaging openrazer, not for installing manually
driver_install_packaging:
	@echo -e "\n::\033[34m Installing OpenRazer kernel modules\033[0m"
	@echo "====================================================="
	@cp -v $(DRIVERDIR)/*.ko $(DESTDIR)/$(MODULEDIR)

# Remove kernel modules
driver_uninstall:
	@echo -e "\n::\033[34m Uninstalling OpenRazer kernel modules\033[0m"
	@echo "====================================================="
	@rm -fv $(DESTDIR)/$(MODULEDIR)/razerkbd.ko
	@rm -fv $(DESTDIR)/$(MODULEDIR)/razermouse.ko
	@rm -fv $(DESTDIR)/$(MODULEDIR)/razerfirefly.ko

# Razer Daemon
daemon_install:
	@echo -e "\n::\033[34m Installing OpenRazer Daemon\033[0m"
	@echo "====================================================="
	make --no-print-directory -C daemon install

ubuntu_daemon_install:
	@echo -e "\n::\033[34m Installing OpenRazer Daemon\033[0m"
	@echo "====================================================="
	make --no-print-directory -C daemon ubuntu_install


daemon_uninstall:
	@echo -e "\n::\033[34m Uninstalling OpenRazer Daemon\033[0m"
	@echo "====================================================="
	make --no-print-directory -C daemon uninstall
# Python Library
python_library_install:
	@echo -e "\n::\033[34m Installing OpenRazer python library\033[0m"
	@echo "====================================================="
	@make --no-print-directory -C pylib install

ubuntu_python_library_install:
	@echo -e "\n::\033[34m Installing OpenRazer python library\033[0m"
	@echo "====================================================="
	@make --no-print-directory -C pylib ubuntu_install

python_library_uninstall:
	@echo -e "\n::\033[34m Uninstalling OpenRazer python library\033[0m"
	@echo "====================================================="
	@make --no-print-directory -C pylib uninstall

# Legacy XDG autostart
xdg_install:
	@mkdir -p $(DESTDIR)/etc/xdg/autostart
	@cp -v ./install_files/desktop/openrazer-daemon.desktop $(DESTDIR)/etc/xdg/autostart/openrazer-daemon.desktop

xdg_uninstall:
	@rm -fv $(DESTDIR)/etc/xdg/autostart/openrazer-daemon.desktop

install-systemd:
	@make --no-print-directory -C daemon install-systemd

# Clean target
clean: driver_clean

setup_dkms:
	@echo -e "\n::\033[34m Installing DKMS files\033[0m"
	@echo "====================================================="
	install -m 644 -v -D Makefile $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/Makefile
	install -m 644 -v -D install_files/dkms/dkms.conf $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/dkms.conf
	install -m 755 -v -d driver $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/driver
	install -m 644 -v -D driver/Makefile $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/driver/Makefile
	install -m 644 -v driver/*.c $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/driver/
	install -m 644 -v driver/*.h $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/driver/
	rm -fv $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)/driver/*.mod.c

remove_dkms:
	@echo -e "\n::\033[34m Removing DKMS files\033[0m"
	@echo "====================================================="
	rm -rf $(DESTDIR)/usr/src/$(DKMS_NAME)-$(DKMS_VER)

udev_install:
	@echo -e "\n::\033[34m Installing OpenRazer udev rules\033[0m"
	@echo "====================================================="
	install -m 644 -v -D install_files/udev/99-razer.rules $(DESTDIR)/usr/lib/udev/rules.d/99-razer.rules
	install -m 755 -v -D install_files/udev/razer_mount $(DESTDIR)/usr/lib/udev/razer_mount

udev_uninstall:
	@echo -e "\n::\033[34m Uninstalling OpenRazer udev rules\033[0m"
	@echo "====================================================="
	rm -f $(DESTDIR)/usr/lib/udev/rules.d/99-razer.rules $(DESTDIR)/usr/lib/udev/razer_mount

ubuntu_udev_install:
	@echo -e "\n::\033[34m Installing OpenRazer udev rules\033[0m"
	@echo "====================================================="
	install -m 644 -v -D install_files/udev/99-razer.rules $(DESTDIR)/lib/udev/rules.d/99-razer.rules
	install -m 755 -v -D install_files/udev/razer_mount $(DESTDIR)/lib/udev/razer_mount

ubuntu_udev_uninstall:
	@echo -e "\n::\033[34m Uninstalling OpenRazer udev rules\033[0m"
	@echo "====================================================="
	rm -f $(DESTDIR)/lib/udev/rules.d/99-razer.rules $(DESTDIR)/lib/udev/razer_mount

appstream_install:
	@echo -e "\n::\033[34m Installing OpenRazer AppStream metadata\033[0m"
	@echo "====================================================="
	install -m 644 -v -D install_files/appstream/io.github.openrazer.openrazer.metainfo.xml $(DESTDIR)/usr/share/metainfo/io.github.openrazer.openrazer.metainfo.xml

appstream_uninstall:
	@echo -e "\n::\033[34m Uninstalling OpenRazer AppStream metadata\033[0m"
	@echo "====================================================="
	rm -f $(DESTDIR)/usr/share/metainfo/io.github.openrazer.openrazer.metainfo.xml

# Install for Ubuntu
ubuntu_install: setup_dkms ubuntu_udev_install ubuntu_daemon_install ubuntu_python_library_install appstream_install
	@echo -e "\n::\033[34m Installing for Ubuntu\033[0m"
	@echo "====================================================="
	mv $(DESTDIR)/usr/lib/python3.* $(DESTDIR)/usr/lib/python3
	mv $(DESTDIR)/usr/lib/python3/site-packages $(DESTDIR)/usr/lib/python3/dist-packages

install_i_know_what_i_am_doing: all driver_install udev_install python_library_install
	@make --no-print-directory -C daemon install DESTDIR=$(DESTDIR)

install: manual_install_msg ;

manual_install_msg:
	@echo "Please do not install the driver using this method. Use a distribution package as it tracks the files installed and can remove them afterwards. If you are 100% sure, you want to do this, find the correct target in the Makefile."
	@echo "Exiting."

uninstall: driver_uninstall udev_uninstall python_library_uninstall
	@make --no-print-directory -C daemon uninstall DESTDIR=$(DESTDIR)


.PHONY: driver