wangzhengquan
2020-10-20 9b29a67af93e4ab9948cc60f743d73c4bb39e738
src/Makefile
@@ -1,27 +1,28 @@
#
# Makefile for common library.
#
ROOT=..
#LDLIBS+=-Wl,-rpath=$(ROOT)/lib
# 开源工具包路径
#LDDIR += -L$(ROOT)/lib
# 开源工具包
LDLIBS += -lusgcommon
MINCLUDE := -I./queue -I./queue/include -I./socket -I./socket/include -I./util -I./util/include
INCLUDE += $(MINCLUDE)
ROOT := ..
PLATFORM=$(shell $(ROOT)/systype.sh)
include $(ROOT)/Make.defines.$(PLATFORM)
LIBSQUEUE = libshm_queue.a
DLIBSQUEUE = libshm_queue.so
PREFIX = $(DEST)
SOURCES := $(wildcard *.c ./queue/*.c ./socket/*.c ./util/*.c)
OBJS   = $(patsubst %.c, %.o, $(SOURCES))
LIBSQUEUE = $(DEST)/lib/libshm_queue.a
DLIBSQUEUE = $(DEST)/lib/libshm_queue.so
MYLIBS = $(LIBSQUEUE) $(DLIBSQUEUE)
# 开源工具包
#LDLIBS += -lusgcommon
#-I$(ROOT)/include/usgcommon
INCLUDES += -I./queue -I./socket -I./common/include
SOURCES := $(wildcard *.c ./**/*.c)
OBJS   = $(patsubst %.c, $(DEST)/%.o, $(SOURCES))
DEPENDENCES = $(patsubst %.c, $(DEST)/%.d, $(SOURCES))
# MYLIBS = $(LIBCOMMON) $(DLIBCOMMON)
ifeq ($(DEBUG),y)
  MYLIBS = $(LIBSQUEUE)
@@ -29,35 +30,61 @@
  MYLIBS = $(LIBSQUEUE) $(DLIBSQUEUE)
endif
all: build
build: $(MYLIBS)
#static lib
$(LIBSQUEUE): $(OBJS)
   $(AR) rv $@ $?
   $(RANLIB) $@
#dynamic lib
$(DLIBSQUEUE): $(SOURCES)
   rm -f *.o
   $(CC) -fPIC -shared $(CFLAGS) $^ -o $@ $(LDFLAGS) $(LDLIBS)
#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)
   cp $(ROOT)/.gdbinit $(DEST)
   # 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)/lib || mkdir -p $(DEST)/lib
#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/
   install -m 644 $(MINCLUDE)/* $(PREFIX)/include/
   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 $(TEMPFILES)
   rm -f $(OBJS) $(MYLIBS) $(DEPENDENCES) $(TEMPFILES)
.PHONY: build clean install
-include $(DEPENDENCES)
include $(ROOT)/Make.common.inc