# # Makefile for common library. # ROOT := .. PLATFORM=$(shell $(ROOT)/systype.sh) include $(ROOT)/Make.defines.$(PLATFORM) PREFIX = $(DEST) LIBSQUEUE = libshm_queue.a DLIBSQUEUE = libshm_queue.so # 开源工具包 LDLIBS += -lusgcommon INCLUDES += -I./queue -I./socket -I$(ROOT)/include/usgcommon SOURCES := $(wildcard *.c ./**/*.c) OBJS = $(patsubst %.c, $(DEST)/%.o, $(SOURCES)) DEPENDENCES = $(patsubst %.c, $(DEST)/%.d, $(SOURCES)) # MYLIBS = $(LIBCOMMON) $(DLIBCOMMON) ifeq ($(DEBUG),y) MYLIBS = $(LIBSQUEUE) else MYLIBS = $(LIBSQUEUE) $(DLIBSQUEUE) endif #PREFIX is environment variable, but if it is not set, then set default value ifeq ($(PREFIX),) PREFIX := /usr/local endif all: build .PHONY: build build: prebuild $(MYLIBS) mkdir -p $(DEST)/lib cp $(MYLIBS) $(DEST)/lib mkdir -p $(DEST)/include/shmqueue cp ./*.h ./queue/*.h ./socket/*.h $(DEST)/include/shmqueue cp $(ROOT)/lib/* $(DEST)/lib .PHONY: prebuild prebuild: @test -d $(DEST) || mkdir $(DEST) #static lib $(LIBSQUEUE): $(OBJS) @echo '>>>>>>' generating $@ ... @$(AR) rv $@ $? @$(RANLIB) $@ #dynamic lib $(DLIBSQUEUE): $(SOURCES) @echo '>>>>>>' generating $@ ... $(CC) -fPIC -shared $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) $^ -o $@ # 使用方式: g++ test1.c -lcommon .PHONY: install install: $(MYLIBS) @echo '>>>>>>' installing $^ ... install -d $(PREFIX)/lib/ install -m 644 $^ $(PREFIX)/lib/ install -d $(PREFIX)/include/shmqueue install -m 644 ./*.h ./queue/*.h ./socket/*.h $(PREFIX)/include/shmqueue .PHONY: uninstall uninstall: @echo '>>>>>>' uninstalling ... rm -rf $(PREFIX)/include/shmqueue rm -f $(PREFIX)/lib/shmqueue.* .PHONY: clean clean: rm -f $(OBJS) $(MYLIBS) $(DEPENDENCES) $(TEMPFILES) -include $(DEPENDENCES) include $(ROOT)/Make.common.inc