mirror of https://github.com/schoebel/mars
128 lines
3.5 KiB
Makefile
128 lines
3.5 KiB
Makefile
#
|
|
# Makefile for MARS
|
|
#
|
|
|
|
# Sorry, this file may live outside of standard build directories
|
|
this-makefile := $(lastword $(MAKEFILE_LIST))
|
|
abs_srctree := $(realpath $(dir $(this-makefile)))
|
|
ifeq ($(abs_objtree),)
|
|
abs_objtree := $(abs_srctree)
|
|
endif
|
|
ifeq ($(abs_objtree),.)
|
|
abs_objtree = $(abs_srctree)
|
|
endif
|
|
|
|
KBUILD_CFLAGS += -fdelete-null-pointer-checks
|
|
|
|
# remove_this
|
|
# The following is 1&1 specific. Don't use anywhere else.
|
|
ifneq ($(KBUILD_EXTMOD),)
|
|
CONFIG_MARS := m
|
|
# 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
|
|
# end_remove_this
|
|
|
|
obj-$(CONFIG_MARS) += mars.o
|
|
|
|
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_main.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"
|
|
#
|
|
# In addition, the suffix -for-$KERNELRELEASE will be useful
|
|
# for sysadmins having to manage a plethora of kernel versions.
|
|
#
|
|
extra-y += buildtag.h
|
|
$(obj)/buildtag.h: $(patsubst $(obj)/buildtag.h,,$(wildcard $(obj)/*.[ch]))
|
|
$(obj)/buildtag.h: $(wildcard $(obj)/*/*.[ch])
|
|
$(obj)/buildtag.h: $(wildcard $(abs_srctree)/*.[chsS])
|
|
$(obj)/buildtag.h: $(wildcard $(abs_srctree)/*/*.[chsS])
|
|
$(obj)/buildtag.h: $(wildcard $(abs_objtree)/*.[chsS])
|
|
$(obj)/buildtag.h: $(wildcard $(abs_objtree)/*/*.[chsS])
|
|
$(obj)/buildtag.h: $(wildcard $(abs_objtree)/*/*/*.[chsS])
|
|
$(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; \
|
|
if [ "$$KERNELRELEASE" != "" ]; then \
|
|
BUILDTAG="$$BUILDTAG-for-$$KERNELRELEASE"; \
|
|
fi; \
|
|
/bin/echo -e "#define BUILDTAG \"$$BUILDTAG\"";\
|
|
/bin/echo -e "#define BUILDHOST \"$$USER@`hostname`\"";\
|
|
/bin/echo -e "#define BUILDDATE \"$$(date '+%F %T')\""
|
|
cat $@;
|