mars/kernel/Kbuild
2015-12-31 10:41:48 +01:00

118 lines
3.1 KiB
Makefile

#
# Makefile for MARS
#
# remove_this
ifndef CONFIG_MARS
# mars_config.h is generated by a simple Kconfig parser (gen_config.pl)
# at build time.
# It does not respect any Kconfig dependencies.
# Therefore, it is unsafe. Use at your own risk!
# It is ONLY used for out-of-tree builds.
#
CONFIG_MARS_BIGMODULE := m
CONFIG_MARS_NET_COMPAT := y
obj-$(CONFIG_MARS_BIGMODULE) += mars.o
extra-y += mars_config.h
GEN_CONFIG_SCRIPT := $(src)/../scripts/gen_config.pl
$(obj)/mars_config.h: $(obj)/buildtag.h
$(obj)/mars_config.h: $(src)/Kconfig $(GEN_CONFIG_SCRIPT)
$(Q)$(kecho) "MARS: using compiler $($(CC) --version | head -1)"
$(CC) -v
$(Q)$(kecho) "MARS: Generating $@"
$(Q)set -e; \
if [ ! -x $(GEN_CONFIG_SCRIPT) ]; then \
$(kecho) "MARS: cannot execute script $(GEN_CONFIG_SCRIPT)"; \
/bin/false; \
fi; \
cat $< | $(GEN_CONFIG_SCRIPT) > $@;
cat $@;
endif
# end_remove_this
obj-$(CONFIG_MARS) += mars.o
KBUILD_CFLAGS += -fdelete-null-pointer-checks
mars-objs := \
lamport.o \
brick_say.o \
brick_mem.o \
brick.o \
xio_bricks/xio.o \
xio_bricks/lib_log.o \
lib/lib_rank.o \
lib/lib_limiter.o \
lib/lib_timing.o \
xio_bricks/lib_mapfree.o \
xio_bricks/xio_net.o \
mars_light/light_server_strategy.o \
xio_bricks/xio_server.o \
xio_bricks/xio_client.o \
xio_bricks/xio_sio.o \
xio_bricks/xio_bio.o \
xio_bricks/xio_if.o \
xio_bricks/xio_copy.o \
xio_bricks/xio_trans_logger.o \
mars_light/light_strategy.o \
mars_light/light_net.o \
mars_light/mars_proc.o \
mars_light/mars_light.o
## remove_this
ifdef CONFIG_MARS_NET_COMPAT
mars-objs += mars_net_compat.o
endif
mars-objs += \
xio_bricks/unused/xio_aio_user.o \
ifdef CONFIG_MARS_DEBUG
KBUILD_CFLAGS += -fno-inline-functions -fno-inline-small-functions -fno-inline-functions-called-once
# This is currently not really used.
# We urge people to maintain it by including it in debug versions
# (so the compiler may throw any complaints)
mars-objs += \
xio_bricks/unused/xio_dummy.o \
xio_bricks/unused/xio_check.o \
xio_bricks/unused/xio_buf.o \
xio_bricks/unused/xio_usebuf.o \
endif
#
# buildtag.h should be regenerated in every build.
#
# The version is determined by the following preference order:
# 1) environment variable $MARSVERSION
# 2) when git is available: git describe --tags
# 3) if a file 'DISTVERSION' exists (out-of-tree tarball), use its content.
# 4) otherwise "no-buildtag-available"
#
extra-y += buildtag.h
$(obj)/buildtag.h: $(patsubst $(obj)/buildtag.h,,$(wildcard $(obj)/*.[ch])) $(obj)/*/*.[ch]
$(Q)$(kecho) "MARS: Generating $@"
$(Q)set -e; \
exec > $@;\
/bin/echo -e "/* Automatically generated -- DO NOT EDIT! */";\
cd $(src); \
if [ "$$MARSVERSION" != "" ]; then \
BUILDTAG="$$MARSVERSION"; \
elif git describe --tags >/dev/null 2>&1; then \
BUILDTAG="$$(git describe --tags)"; \
elif [ -e DISTVERSION ]; then \
BUILDTAG=$$(cat DISTVERSION); \
else \
BUILDTAG="no-buildtag-available"; \
fi; \
/bin/echo -e "#define BUILDTAG \"$$BUILDTAG\"";\
/bin/echo -e "#define BUILDHOST \"$$USER@`hostname`\"";\
/bin/echo -e "#define BUILDDATE \"$$(date '+%F %T')\""
cat $@;
## end_remove_this