1 Star 0 Fork 0

HyperAgent/uinput_server

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
Makefile 6.00 KB
一键复制 编辑 原始数据 按行查看 历史
# 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
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/hyper-agent/uinput_server.git
git@gitee.com:hyper-agent/uinput_server.git
hyper-agent
uinput_server
uinput_server
master

搜索帮助