代码拉取完成,页面将自动刷新
# Makefile for uinput Touch Server
# Compiler and flags
CC = gcc
CFLAGS = -Wall -Wextra -std=c99 -O2
DEBUG_CFLAGS = -Wall -Wextra -std=c99 -g -O0 -DDEBUG
STATIC_CFLAGS = -Wall -Wextra -std=c99 -O2 -static
LDFLAGS =
STATIC_LDFLAGS = -static
# Android cross-compilation (requires Android NDK)
ANDROID_NDK_PATH ?= $(HOME)/Android/Sdk/ndk-bundle
ANDROID_API_LEVEL ?= 21
ANDROID_ARCH ?= arm64-v8a
# Android toolchain paths
ANDROID_TOOLCHAIN_PREFIX = $(ANDROID_NDK_PATH)/toolchains/llvm/prebuilt/linux-x86_64/bin
ANDROID_CC_ARM64 = $(ANDROID_TOOLCHAIN_PREFIX)/aarch64-linux-android$(ANDROID_API_LEVEL)-clang
ANDROID_CC_ARM32 = $(ANDROID_TOOLCHAIN_PREFIX)/armv7a-linux-androideabi$(ANDROID_API_LEVEL)-clang
# Select compiler based on architecture
ifeq ($(ANDROID_ARCH),arm64-v8a)
ANDROID_CC = $(ANDROID_CC_ARM64)
ANDROID_TARGET = $(TARGET)_android_arm64
else ifeq ($(ANDROID_ARCH),armeabi-v7a)
ANDROID_CC = $(ANDROID_CC_ARM32)
ANDROID_TARGET = $(TARGET)_android_arm32
else
ANDROID_CC = $(ANDROID_CC_ARM64)
ANDROID_TARGET = $(TARGET)_android_arm64
endif
ANDROID_CFLAGS = -Wall -Wextra -std=c99 -O2 -static -DANDROID
ANDROID_LDFLAGS = -static
# Project name and version
TARGET = uinput_server
STATIC_TARGET = $(TARGET)_static
VERSION = 1.0.0
# Source files
SOURCES = main.c uinput_device.c tcp_server.c event_handler.c
HEADERS = uinput_server.h
OBJECTS = $(SOURCES:.c=.o)
# Default target
all: $(TARGET)
# Build the main executable
$(TARGET): $(OBJECTS)
@echo "Linking $(TARGET)..."
$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS)
@echo "Build complete: $(TARGET)"
# Compile source files
%.o: %.c $(HEADERS)
@echo "Compiling $<..."
$(CC) $(CFLAGS) -c $< -o $@
# Debug build
debug: CFLAGS = $(DEBUG_CFLAGS)
debug: clean $(TARGET)
@echo "Debug build complete"
# Static build for local Linux system
static: CFLAGS = $(STATIC_CFLAGS)
static: LDFLAGS = $(STATIC_LDFLAGS)
static: clean $(STATIC_TARGET)
@echo "Static build complete: $(STATIC_TARGET)"
# Build static executable
$(STATIC_TARGET): $(OBJECTS)
@echo "Linking static $(STATIC_TARGET)..."
$(CC) $(OBJECTS) -o $(STATIC_TARGET) $(STATIC_LDFLAGS)
@echo "Static build complete: $(STATIC_TARGET)"
@file $(STATIC_TARGET)
# Android build (requires Android NDK)
android: CC = $(ANDROID_CC)
android: CFLAGS = $(ANDROID_CFLAGS)
android: LDFLAGS = $(ANDROID_LDFLAGS)
android: clean-android $(ANDROID_TARGET)
@echo "Android build complete: $(ANDROID_TARGET)"
# Build Android executable
$(ANDROID_TARGET): $(SOURCES) $(HEADERS)
@echo "Checking Android NDK..."
@if [ ! -f "$(ANDROID_CC)" ]; then \
echo "Error: Android NDK not found at $(ANDROID_NDK_PATH)"; \
echo "Please install Android NDK or set ANDROID_NDK_PATH"; \
exit 1; \
fi
@echo "Compiling for Android ($(ANDROID_ARCH))..."
$(ANDROID_CC) $(ANDROID_CFLAGS) $(SOURCES) -o $(ANDROID_TARGET) $(ANDROID_LDFLAGS)
@echo "Android build complete: $(ANDROID_TARGET)"
@file $(ANDROID_TARGET)
# Clean all build files
clean:
@echo "Cleaning build files..."
rm -f $(OBJECTS) $(TARGET) $(STATIC_TARGET) $(TARGET)_android_arm64 $(TARGET)_android_arm32
@echo "Clean complete"
# Clean only Android build
clean-android:
@echo "Cleaning Android build files..."
rm -f $(TARGET)_android_arm64 $(TARGET)_android_arm32
@echo "Android clean complete"
# Install the program
install: $(TARGET)
@echo "Installing $(TARGET)..."
sudo cp $(TARGET) /usr/local/bin/
sudo chmod +x /usr/local/bin/$(TARGET)
@echo "Installation complete"
# Uninstall the program
uninstall:
@echo "Uninstalling $(TARGET)..."
sudo rm -f /usr/local/bin/$(TARGET)
@echo "Uninstall complete"
# Create distribution package
dist: clean
@echo "Creating distribution package..."
mkdir -p dist/$(TARGET)-$(VERSION)
cp $(SOURCES) $(HEADERS) Makefile README.md dist/$(TARGET)-$(VERSION)/
cd dist && tar -czf $(TARGET)-$(VERSION).tar.gz $(TARGET)-$(VERSION)
rm -rf dist/$(TARGET)-$(VERSION)
@echo "Distribution package created: dist/$(TARGET)-$(VERSION).tar.gz"
# Run with default parameters (requires sudo for uinput access)
run: $(TARGET)
@echo "Running $(TARGET) (requires sudo for /dev/uinput access)..."
sudo ./$(TARGET)
# Simple static build without Android NDK (for testing)
static-simple:
@echo "Building simple static version..."
$(CC) $(STATIC_CFLAGS) $(SOURCES) -o $(STATIC_TARGET) $(STATIC_LDFLAGS)
@echo "Simple static build complete: $(STATIC_TARGET)"
@file $(STATIC_TARGET)
# Android ARM64 build
android-arm64:
$(MAKE) android ANDROID_ARCH=arm64-v8a
# Android ARM32 build
android-arm32:
$(MAKE) android ANDROID_ARCH=armeabi-v7a
# Show help
help:
@echo "Available targets:"
@echo " all - Build the project (default)"
@echo " debug - Build with debug flags"
@echo " static - Build static executable for Linux"
@echo " static-simple - Build static executable (simple method)"
@echo " android - Build for Android (requires NDK)"
@echo " android-arm64 - Build for Android ARM64"
@echo " android-arm32 - Build for Android ARM32"
@echo " clean - Remove all build files"
@echo " clean-android - Remove only Android build files"
@echo " install - Install to /usr/local/bin (requires sudo)"
@echo " uninstall - Remove from /usr/local/bin (requires sudo)"
@echo " dist - Create distribution package"
@echo " run - Run with default parameters (requires sudo)"
@echo " help - Show this help message"
@echo ""
@echo "Static compilation examples:"
@echo " make static # Static build with object files"
@echo " make static-simple # Direct static compilation"
@echo ""
@echo "Android compilation:"
@echo " export ANDROID_NDK_PATH=/path/to/ndk"
@echo " make android # Cross-compile for Android"
@echo ""
@echo "Configuration variables:"
@echo " ANDROID_NDK_PATH - Path to Android NDK"
@echo " ANDROID_API_LEVEL - Android API level (default: 21)"
@echo " ANDROID_ARCH - Target architecture (default: arm64-v8a)"
# Phony targets
.PHONY: all debug static static-simple android android-arm64 android-arm32 clean clean-android install uninstall dist run help
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。