You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kamailio/lib/Makefile.defs

127 lines
2.4 KiB

# lib-type may be given from commandline to control
# if resulting library will be static or shared
# possible values: static, shared
lib-type ?= shared
# install directories
prefix ?= /usr/local
bin-dir ?= ${prefix}/bin
include-dir ?= ${prefix}/include
lib-dir ?= ${prefix}/lib
# install programs
install ?= install
install-bin ?= $(install) -m 755
install-lib ?= $(install) -m 755
install-includes ?= $(install) -m 644
# working variables
SRCS := $(wildcard *.c)
HDRS := $(wildcard *.h)
DEP_IN = ${SRCS} ${HDRS}
OBJS := $(patsubst %.c,%.o,$(SRCS))
####################################
# make rules
static_lib_name = lib${NAME}.a
dynamic_lib_name = lib${NAME}.so
prg_name = ${NAME}
out_name = ${prg_name}
ifeq ($(TYPE),lib)
INCLUDES += -I$(CURDIR)/..
ifeq ($(lib-type),static)
out_name = ${static_lib_name}
else
out_name = ${dynamic_lib_name}
endif
endif
default: ${out_name}
#static library
${static_lib_name}: ${OBJS}
ar -r $@ ${OBJS}
# dynamic library
${dynamic_lib_name}: ${OBJS}
${CC} -shared ${DEFS} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS}
# executable
${NAME}: ${OBJS}
${CC} ${DEFS} ${CFLAGS} ${INCLUDES} -o $@ ${OBJS} ${LIBS}
# common rules
%.o: %.c
${CC} ${DEFS} ${CFLAGS} ${INCLUDES} -c $<
.PHONY: install clean proper
proper: clean
clean:
-@rm -f ${prg_name} ${static_lib_name} ${dynamic_lib_name} *.o *.so *.d core core.* *~ tags Makefile.deps
ifneq ($(MAKECMDGOALS),proper)
ifneq ($(MAKECMDGOALS),clean)
-include $(SRCS:.c=.d)
endif
endif
%.d: %.c
@$(CC) -M ${DEFS} $(CFLAGS) $(INCLUDES) $< > $@.$$$$; \
sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \
rm -f $@.$$$$
# -include Makefile.deps
#
# Makefile.deps: ${DEP_IN}
# @echo "" > Makefile.deps
# @makedepend -fMakefile.deps -- ${DEFS} ${CFLAGS} ${INCLUDES} -- ${DEP_IN} 2>/dev/null
# -@rm -f Makefile.deps.bak
# instalation rules
ifeq ($(TYPE),lib)
# library instalation
install: ${out_name} install_dirs
$(install-lib) ${out_name} $(lib-dir)
@for hdr in ${HDRS} ; do \
$(install-includes) $$hdr $(include-dir)/$(NAME); \
done
install_dirs: $(lib-dir) $(include-dir)/$(NAME)
else
# executable instalation
install: ${out_name} install_dirs
$(install-bin) ${out_name} $(bin-dir)
install_dirs: $(bin-dir)
endif
# creating install directories
$(bin-dir):
mkdir -p $(bin-dir)
$(lib-dir):
mkdir -p $(lib-dir)
$(include-dir)/$(NAME):
mkdir -p $(include-dir)/$(NAME)