# # Makefile for MARS # ifneq ($(KBUILD_EXTMOD),) CONFIG_MARS_BIGMODULE := m endif KBUILD_CFLAGS += -fdelete-null-pointer-checks mars-objs := \ lamport.o \ brick_say.o \ brick_mem.o \ brick.o \ mars_generic.o \ lib_log.o \ lib_rank.o \ lib_limiter.o \ lib_timing.o \ lib_mapfree.o \ mars_net.o \ mars_server.o \ mars_client.o \ mars_aio.o \ mars_sio.o \ mars_bio.o \ mars_if.o \ mars_copy.o \ mars_trans_logger.o \ sy_old/sy_generic.o \ sy_old/sy_net.o \ sy_old/mars_proc.o \ sy_old/mars_light.o obj-$(CONFIG_MARS_BIGMODULE) += mars.o #### alternatives when building small individual modules obj-$(CONFIG_MARS_DUMMY) += mars_dummy.o obj-$(CONFIG_MARS_CHECK) += mars_check.o obj-$(CONFIG_MARS_IF) += mars_if.o obj-$(CONFIG_MARS_BIO) += mars_bio.o obj-$(CONFIG_MARS_AIO) += mars_aio.o obj-$(CONFIG_MARS_SIO) += mars_sio.o obj-$(CONFIG_MARS_BUF) += mars_buf.o obj-$(CONFIG_MARS_USEBUF) += mars_usebuf.o obj-$(CONFIG_MARS_TRANS_LOGGER) += mars_trans_logger.o lib_log.o obj-$(CONFIG_MARS_SERVER) += mars_server.o obj-$(CONFIG_MARS_CLIENT) += mars_client.o obj-$(CONFIG_MARS_COPY) += mars_copy.o obj-$(CONFIG_MARS_LIGHT) += sy_old/mars_light.o \ brick.o brick_mem.o brick_say.o \ mars_generic.o sy_old/sy_generic.o \ mars_net.o sy_old/sy_net.o \ sy_old/mars_proc.o ifdef CONFIG_DEBUG_KERNEL 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 += \ mars_dummy.o \ mars_check.o \ mars_buf.o \ mars_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 $@; 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. # 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