blob: 54fc649f02c37deb8961712964900eade7f30dcb [file] [log] [blame]
#
# Fileio_tgt user space dev handler make file
#
# Copyright (C) 2007 - 2018 Vladislav Bolkhovitin <vst@vlnb.net>
# Copyright (C) 2007 - 2018 Western Digital Corporation
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation, version 2
# of the License.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
ifndef PREFIX
PREFIX=/usr/local
endif
REVISION ?= $(shell if svn info >/dev/null 2>&1; \
then svn info | sed -n 's/^Revision:[[:blank:]]*/r/p';\
else git log | grep -c ^commit; \
fi)
VERSION = $(shell echo -n "$$(sed -n 's/^\#define[[:blank:]]VERSION_STR[[:blank:]]*\"\([^-]*\).*\"/\1/p' ../include/version.h).$(REVISION)")
SHELL=/bin/bash
SRCS_F = fileio.c common.c debug.c crc32.c
OBJS_F = $(SRCS_F:.c=.o)
#SRCS_C =
#OBJS_C = $(SRCS_C:.c=.o)
SCST_INC_DIR := $(shell if [ -e "$$PWD/../../scst" ]; \
then echo "$$PWD/../../scst/include"; \
else echo "$(DESTDIR)$(PREFIX)/include/scst"; fi)
DEBUG_INC_DIR := ../include
INSTALL_DIR := $(DESTDIR)$(PREFIX)/bin/scst
RPM_INC_DIR = ./scst/include
RPM_INC_DIR_EXTRA = ./include
RPM_ARC_DIR_EXTRA = ../include
CFLAGS += -O2 -Wall -Wextra -Wno-unused-parameter -Wstrict-prototypes \
-I$(SCST_INC_DIR) -I$(DEBUG_INC_DIR) -I$(RPM_INC_DIR) -I$(RPM_INC_DIR_EXTRA) -D_GNU_SOURCE -D__USE_FILE_OFFSET64 \
-D__USE_LARGEFILE64
PROGS = fileio_tgt
LIBS = -lpthread
CFLAGS += -Wextra -Wno-unused-parameter
CFLAGS += $(LOCAL_CFLAGS)
#CFLAGS += -DDEBUG_NOMEM
#CFLAGS += -DDEBUG_SENSE
#CFLAGS += -DDEBUG_TM_IGNORE
#CFLAGS += -DDEBUG_TM_IGNORE -DDEBUG_TM_FN_IGNORE
#CFLAGS += -DDEBUG_TM_IGNORE_ALL
CFLAGS += -DDEBUG_EXT_COPY_REMAP
-include ../../scst/build_mode
echo := $(shell echo "usr/fileio build mode: $(BUILD_MODE)" >& 2)
BUILD_MODE_CFLAGS_ = -DTRACING -DDEBUG -DEXTRACHECKS \
-fno-inline -fno-inline-functions
BUILD_MODE_CFLAGS_RELEASE = -DTRACING
BUILD_MODE_CFLAGS_PERF =
CFLAGS += $(BUILD_MODE_CFLAGS_$(BUILD_MODE))
all: $(PROGS)
fileio_tgt: .depend_f $(OBJS_F)
$(CC) $(OBJS_F) $(LIBS) $(LOCAL_LD_FLAGS) -o $@
#cdrom_tgt: .depend_c $(OBJS_C)
# $(CC) $(OBJS_C) $(LIBS) $(LOCAL_LD_FLAGS) -o $@
ifeq (.depend_f,$(wildcard .depend_f))
-include .depend_f
endif
#ifeq (.depend_c,$(wildcard .depend_c))
#-include .depend_c
#endif
%.o: %.c Makefile
$(CC) -c -o $(@) $(CFLAGS) $(<)
.depend_f:
$(CC) -M $(CFLAGS) $(SRCS_F) >$(@)
#.depend_c:
# $(CC) -M $(CFLAGS) $(SRCS_C) >$(@)
install: all
install -d $(INSTALL_DIR)
install -m 755 $(PROGS) $(INSTALL_DIR)
uninstall:
rm -f $(INSTALL_DIR)/$(PROGS)
clean:
rm -f *.o $(PROGS) .depend*
extraclean: clean
rm -f *.orig *.rej
rm -f *.orig *.rej *.tar.bz2
@find . -type d -name rpmbuilddir | xargs rm -rf
2release:
-$(MAKE) clean
2debug:
-$(MAKE) clean
2perf:
-$(MAKE) clean
release-archive:
../../scripts/generate-release-archive fileio_tgt $(VERSION)
rpm-archive:
../../scripts/generate-release-archive fileio_tgt $(VERSION) \
"$$(../../scripts/list-source-files)" $(SCST_INC_DIR)/* $(RPM_ARC_DIR_EXTRA)
rpm:
name=fileio_tgt && \
rpmtopdir="$$(if [ $$(id -u) = 0 ]; then echo /usr/src/packages;\
else echo $$PWD/rpmbuilddir; fi)" && \
$(MAKE) rpm-archive && \
for d in BUILD RPMS SOURCES SPECS SRPMS; do \
mkdir -p $${rpmtopdir}/$$d; \
done && \
cp $${name}-$(VERSION).tar.bz2 $${rpmtopdir}/SOURCES && \
MAKE="$(MAKE)" \
rpmbuild --define="%_topdir $${rpmtopdir}" \
--define="%rpm_version $(VERSION)" \
-ba $${name}.spec && \
rm -f $${name}-$(VERSION).tar.bz2
.PHONY: all install uninstall clean extraclean 2release 2debug 2perf