Files
2026-09-22 09:38:26 +08:00

112 lines
2.3 KiB
Makefile

ifndef OBJ_DIR
OBJ_DIR = obj
endif
all:demo
install:libpm_install libinput-uevent_install pm-demo_install
uninstall:libpm_uninstall libinput-uevent_uninstall pm-demo_uninstall
clean:lib_clean pm-demo_clean
dir:
mkdir -p $(OBJ_DIR)
pm-dir = src
utils-dir = utils
input_uevent-dir = input_uevent
demo-dir = demo
TARGET = $(OBJ_DIR)/libpm.so
TARGET_INC = src/pm.h
CFLAGS = -Wall \
-g \
-O \
-fPIC \
-Iutils
LIBS = -lpthread \
-lrt
SRCS = $(wildcard $(pm-dir)/*.c $(utils-dir)/*.c)
OBJS = $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(SRCS)))
libpm:dir $(OBJS)
$(CC) $(CFLAGS) -shared -o $(TARGET) $(OBJS) $(LIBS)
$(OBJS):$(SRCS)
$(foreach var,$^,\
$(CC) $(CFLAGS) -c $(var) -o $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(var)));\
)
libpm_install:
cp $(TARGET) /usr/lib
cp $(TARGET_INC) /usr/include
libpm_uninstall:
rm -f /usr/lib/$(notdir $(TARGET))
rm -f usr/include/$(notdir $(TARGET_INC))
TARGET_I = $(OBJ_DIR)/libinput-uevent.so
TARGET_I_INC = input_uevent/input_uevent.h
CFLAGS_I = -Wall \
-g \
-O \
-fPIC \
-D_GNU_SOURCE \
-Iutils
LIBS_I = -lpthread \
-lrt
SRCS_I = $(wildcard $(input_uevent-dir)/*.c $(utils-dir)/*.c)
OBJS_I = $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(SRCS_I)))
libinput-uevent:dir $(OBJS_I)
$(CC) $(CFLAGS_I) -shared -o $(TARGET_I) $(OBJS_I) $(LIBS_I)
$(OBJS_I):$(SRCS_I)
$(foreach var,$^,\
$(CC) $(CFLAGS_I) -c $(var) -o $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(var)));\
)
libinput-uevent_install:
cp $(TARGET_I) /usr/lib
cp $(TARGET_I_INC) /usr/include
libinput-uevent_uninstall:
rm -f /usr/lib/$(notdir $(TARGET_I))
rm -f /usr/include/$(notdir $(TARGET_I_INC))
lib_clean:
rm -f $(OBJ_DIR)/*.o
rm -f $(OBJ_DIR)/*.so
TARGET_D = $(OBJ_DIR)/pm-demo
CFLAGS_D = -Wall \
-g \
-O \
-Iinput_uevent \
-Isrc
LIBS_D = -linput-uevent \
-lpm \
-lpthread
LIBPATH_D = -L$(OBJ_DIR)
SRCS_D = $(wildcard $(demo-dir)/*.c)
OBJS_D = $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(SRCS_D)))
demo:dir libpm libinput-uevent $(OBJS_D)
$(CC) $(CFLAGS_D) -o $(TARGET_D) $(OBJS_D) $(LIBPATH_D) $(LIBS_D)
$(OBJS_D):$(SRCS_D)
$(foreach var,$^,\
$(CC) $(CFLAGS_D) -c $(var) -o $(patsubst %.c,$(OBJ_DIR)/%.o,$(notdir $(var)));\
)
pm-demo_install:
cp $(TARGET_D) /usr/bin
pm-demo_uninstall:
rm -f /usr/bin/$(notdir $(TARGET_D))
pm-demo_clean:
rm -f $(OBJ_DIR)/*.o
rm -f $(TARGET_D)