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)