-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
80 lines (62 loc) · 3.59 KB
/
Makefile
File metadata and controls
80 lines (62 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
.PHONY: all install-deps build-native build-proot install clean
# Makefile for Termux USB Bridge
PREFIX ?= /data/data/com.termux/files/usr
PWD := $(shell pwd)
BIN_DIR := bin
SRC_DIR := src
SCRIPT_DIR := scripts
all: build-native build-proot
install-deps:
@echo "Installing Termux dependencies..."
pkg update -y && pkg install -y clang termux-api jq proot-distro
pkg install -y root-repo
pkg install -y usbutils
@echo "Installing Ubuntu PRoot..."
proot-distro install ubuntu || true
@echo "Installing Ubuntu dependencies..."
proot-distro login ubuntu -- apt update
proot-distro login ubuntu -- DEBIAN_FRONTEND=noninteractive apt install -y git gcc cups wget curl hplip dialog libtool usbutils autoconf automake sane-utils pkg-config ghostscript build-essential cups-core-drivers printer-driver-foo2zjs
@echo "Compiling Custom libusb (--disable-udev)..."
proot-distro login ubuntu -- bash -c "if [ ! -f /usr/local/lib/libusb-1.0.so ]; then git clone --depth 1 https://github.com/libusb/libusb.git /tmp/libusb && cd /tmp/libusb && ./autogen.sh --disable-udev && make -j4 && make install && ldconfig && rm -rf /tmp/libusb; else echo 'libusb already compiled.'; fi"
@echo "Installing HP Proprietary Plugin..."
proot-distro login ubuntu -- bash -c "hp-plugin -i -g || true"
build-native:
@echo "Compiling Universal Clone for Termux..."
mkdir -p $(BIN_DIR)
gcc -o $(BIN_DIR)/universal_clone $(SRC_DIR)/universal_clone.c
build-proot:
@echo "No pre-compiled bridge needed. Bridge is compiled dynamically at runtime!"
install: install-deps all
@echo "Installing scripts and binaries..."
cp $(BIN_DIR)/universal_clone $(PREFIX)/bin/
chmod +x $(PREFIX)/bin/universal_clone
@echo "Configuring CUPS USB Wrapper..."
proot-distro login ubuntu -- bash -c "if [ ! -f /usr/lib/cups/backend/usb-real ]; then mv /usr/lib/cups/backend/usb /usr/lib/cups/backend/usb-real; fi"
proot-distro login ubuntu -- bash -c "chmod a-s /usr/lib/cups/backend/usb-real && chmod 755 /usr/lib/cups/backend/usb-real"
proot-distro login ubuntu -- bash -c "echo '#!/bin/bash' > /usr/lib/cups/backend/usb"
proot-distro login ubuntu -- bash -c "echo 'export LD_LIBRARY_PATH=\"/usr/local/lib\"' >> /usr/lib/cups/backend/usb"
proot-distro login ubuntu -- bash -c "echo 'export LD_PRELOAD=\"/usr/local/lib/libusb_bridge.so\"' >> /usr/lib/cups/backend/usb"
proot-distro login ubuntu -- bash -c "echo 'export LIBUSB_DEBUG=0' >> /usr/lib/cups/backend/usb"
proot-distro login ubuntu -- bash -c "echo 'exec /usr/lib/cups/backend/usb-real \"\$$@\"' >> /usr/lib/cups/backend/usb"
proot-distro login ubuntu -- bash -c "chmod 755 /usr/lib/cups/backend/usb"
@echo "Creating permanent template directories..."
mkdir -p $(PREFIX)/share/termux-usb-bridge
mkdir -p $(PREFIX)/var/lib/proot-distro/installed-rootfs/ubuntu/usr/local/share/termux-usb-bridge
@echo "Copying native bridge template..."
cp $(SRC_DIR)/usb_bridge_native_template.c $(PREFIX)/share/termux-usb-bridge/
@echo "Copying PRoot bridge template..."
cp $(SRC_DIR)/usb_bridge_template.c $(PREFIX)/var/lib/proot-distro/installed-rootfs/ubuntu/usr/local/share/termux-usb-bridge/
@echo "Copying worker scripts and wrappers to global bin..."
cp $(SCRIPT_DIR)/run_scanner.sh $(PREFIX)/bin/
cp $(SCRIPT_DIR)/run_printer.sh $(PREFIX)/bin/
cp $(SCRIPT_DIR)/run_lsusb.sh $(PREFIX)/bin/
cp $(SCRIPT_DIR)/termux-scan $(PREFIX)/bin/
cp $(SCRIPT_DIR)/termux-print $(PREFIX)/bin/
cp $(SCRIPT_DIR)/termux-lsusb $(PREFIX)/bin/
chmod +x $(PREFIX)/bin/run_*.sh $(PREFIX)/bin/termux-*
mkdir -p ~/.shortcuts
cp shortcuts/* ~/.shortcuts/
chmod +x ~/.shortcuts/*
@echo "Installation Complete!"
clean:
rm -rf $(BIN_DIR)