| # Builds certain tests for Linux |
| # |
| # Customize your settings in your Makelocal |
| # - LINUX_KDIR: linux source for the module (/path/to/linux/source) |
| # |
| # You should be able to build the Linux programs without building Akaros by |
| # running make in this directory. Set LINUX_KDIR in your environment. Fun! |
| |
| # Default compiler/tools come from the top-level Makefile. They can be |
| # overridden. Also these are used if we were called directly instead of from |
| # the top-level makefile. |
| HOSTCC ?= gcc |
| HOSTCFLAGS ?= -Wall -Wno-char-subscripts -Wmissing-prototypes \ |
| -Wstrict-prototypes -O2 -fomit-frame-pointer |
| HOSTLD ?= ld |
| |
| |
| USERDIR = ../../user |
| # override to our local obj/ |
| OBJDIR = obj |
| |
| ifeq ($(TESTS_DIR),) |
| # independent build, from this directory |
| Q = @ |
| endif |
| # override, regardless |
| TESTS_DIR = .. |
| |
| # defined below |
| all: |
| |
| ifeq ($(LINUX_KDIR),) |
| |
| mods: |
| $(Q)echo LINUX_KDIR is unset. Set it, Makelocal or env, for Linux mods |
| |
| mods_clean: |
| @: |
| |
| else |
| |
| mods: |
| @cd modules && $(MAKE) -C $(LINUX_KDIR) CC=$(HOSTCC) LD=$(HOSTLD) M=$$PWD modules |
| |
| mods_clean: |
| @cd modules && $(MAKE) -C $(LINUX_KDIR) M=$$PWD clean |
| |
| endif |
| |
| clean: mods_clean |
| @rm -rf $(OBJDIR) .*cmd |
| |
| # Programs in this directory (if any) |
| tests_srcs_c := $(wildcard *.c) |
| tests_lddepends_c := %.c |
| tests_execs_c = $(patsubst %.c, $(OBJDIR)/%, $(tests_srcs_c)) |
| |
| # Select programs from tests/ |
| # All programs we build end up in obj/tests/linux/, even the ones from tests/ |
| sel_progs = lock_test.c interference.c pthread_test.c |
| |
| sel_progs_srcs_c = $(patsubst %c,$(TESTS_DIR)/%c, $(sel_progs)) |
| sel_progs_lddepends_c := $(TESTS_DIR)/%.c |
| sel_progs_execs_c = $(patsubst %.c, $(OBJDIR)/%, $(sel_progs)) |
| |
| progs = $(tests_execs_c) $(sel_progs_execs_c) |
| |
| tests_c_deps := $(USERDIR)/benchutil/measure.c |
| tests_ldlibs := -lpthread -lm |
| |
| $(OBJDIR)/%: $(tests_lddepends_c) |
| @echo + cc [LINUX_TESTS] $< |
| @mkdir -p $(@D) |
| $(Q)$(HOSTCC) -static -O2 $< $(tests_c_deps) -o $@ $(tests_ldlibs) |
| |
| $(OBJDIR)/%: $(sel_progs_lddepends_c) |
| @echo + cc [LINUX_TESTS] $< |
| @mkdir -p $(@D) |
| $(Q)$(HOSTCC) -static -O2 $< $(tests_c_deps) -o $@ $(tests_ldlibs) |
| |
| all: mods $(progs) |
| @: |
| |
| .PHONY: $(all mods clean) |