55 lines
1.3 KiB
Makefile
55 lines
1.3 KiB
Makefile
|
SUBDIRS=bsc bsc-nat ggsn_tests gprs_gb lapdm mgw msc_tests selftest sysinfo
|
||
|
|
||
|
PARALLEL_MAKE:=-j4
|
||
|
|
||
|
# This master makefile allows you to do things like
|
||
|
# make clean (remove all generated binary, c++ and symlinks)
|
||
|
# make compile (compile ttcn3 into c++)
|
||
|
# make all (compile c++ into executable)
|
||
|
#
|
||
|
# as well as per-subdirectory targets like
|
||
|
#
|
||
|
# make bsc/clean
|
||
|
# make bsc/compile
|
||
|
# make bsc/all
|
||
|
# make bsc (equivalent to bsc/all)
|
||
|
|
||
|
default: all
|
||
|
|
||
|
compile: $(foreach dir,$(SUBDIRS),$(dir)/compile)
|
||
|
clean: $(foreach dir,$(SUBDIRS),$(dir)/clean)
|
||
|
all: $(foreach dir,$(SUBDIRS),$(dir)/all)
|
||
|
|
||
|
define DIR_Makefile_template
|
||
|
$(1)/Makefile:
|
||
|
(cd $(1) && ./gen_links.sh && ./regen_makefile.sh)
|
||
|
endef
|
||
|
|
||
|
define DIR_compile_template
|
||
|
.PHONY: $(1)/compile
|
||
|
$(1)/compile: $(1)/Makefile
|
||
|
$(MAKE) -C $(1) compile
|
||
|
endef
|
||
|
|
||
|
define DIR_clean_template
|
||
|
.PHONY: $(1)/clean
|
||
|
$(1)/clean: $(1)/Makefile
|
||
|
$(MAKE) -C $(1) clean
|
||
|
(cd $(1) && ../rmlinks.sh && rm Makefile)
|
||
|
endef
|
||
|
|
||
|
define DIR_all_template
|
||
|
$(1): $(1)/all
|
||
|
.PHONY: $(1)/all
|
||
|
$(1)/all: $(1)/Makefile
|
||
|
$(MAKE) -C $(1) compile
|
||
|
$(MAKE) $(PARALLEL_MAKE) -C $(1)
|
||
|
endef
|
||
|
|
||
|
$(foreach dir,$(SUBDIRS), \
|
||
|
$(eval $(call DIR_Makefile_template,$(dir))) \
|
||
|
$(eval $(call DIR_compile_template,$(dir))) \
|
||
|
$(eval $(call DIR_clean_template,$(dir))) \
|
||
|
$(eval $(call DIR_all_template,$(dir))) \
|
||
|
)
|