# Copyright 2017 Harald Welte # Copyright 2018 sysmocom - s.f.m.c. GmbH # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. SUBDIRS= \ asterisk \ bsc \ bsc-nat \ bts \ cbc \ ccid \ dia2gsup \ fr \ fr-net \ epdg \ gbproxy \ ggsn_tests \ hlr \ hnbgw \ hnodeb \ hss \ mgw \ mme \ msc \ ns \ pcap-client \ pcu \ pgw \ remsim \ sccp \ selftest \ sgsn \ simtrace \ sip \ smlc \ stp \ sysinfo \ upf \ $(NULL) NPROC=$(shell nproc 2>/dev/null) ifeq ($(NPROC),) NPROC=1 endif PARALLEL_MAKE ?= -j$(NPROC) # 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: deps all # Eclipse GitLab has rate limiting and sometimes to many concurrent conns fail. # If -jN fails, retry with -j1. .PHONY: deps deps: ($(MAKE) $(PARALLEL_MAKE) -C deps || $(MAKE) -j1 -C deps) # deps-update target for backwards compat; now does the same as 'make deps' .PHONY: deps-update deps-update: $(MAKE) -C deps 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: deps $(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: deps $(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))) \ ) .PHONY: tags regen-diameter-types-ttcn tags: find $(shell pwd) \ -type f -name "*.ttcn" -o \ -type f -name "*.ttcnpp" | \ xargs ctags regen-diameter-types-ttcn: (cd library/ && ./regen-DIAMETER_Types_ttcn.sh)