# # SPDX-License-Identifier: LGPL-2.0-only # # Makefile for managing multiple software repositories in one tree # # (C) Copyright 2001-2025, Jan Lindemann # # This is the top-level Makefile for a janware software build tree. It is # provided under the terms of the GNU Lesser Public License, Version 2. # # Some of its targets download software from janware GmbH servers. For those, # you will need a janware.com user account. Ask admin@janware.com if you want # one, then define the JANWARE_USER = environment variable. # # Current documentation on how this Makefile is meant to be used can be found # under https://janware.com/wiki/pub/en/sw/build/. Running "make help" might # take you there semi-automatically. # PROJECTS_MAKEFILE_NAME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)) JWBDIR_GIT_REMOTE ?= ssh://$(JANWARE_USER)@git.janware.com/srv/git/jan/proj/jw-build JWBDIR ?= $(notdir $(JWBDIR_GIT_REMOTE)) PROJECTS_DIR_INCLUDE_MK = $(JWBDIR)/make/projects-dir-include.mk ifndef JANWARE_USER JANWARE_USER = $(shell id -un) $(warning Assuming JANWARE_USER=$(JANWARE_USER) from id -un) $(warning Explicitly set environment variable JANWARE_USER to turn off this warning!) endif -include local.mk all: include $(PROJECTS_DIR_INCLUDE_MK) $(PROJECTS_DIR_INCLUDE_MK): | $(JWBDIR) $(JWBDIR): git clone $(JWBDIR_GIT_REMOTE) $(JWBDIR) make $(MAKECMDGOALS) all: link-makefile.done link-makefile.done: | $(JWBDIR) [ -L $(PROJECTS_MAKEFILE_NAME) ] || \ ln -sf `find $(JWBDIR) -name '*.mk' -print0 | xargs -0 grep -l some-random-string-to-id-this-makefile` \ $(PROJECTS_MAKEFILE_NAME) touch $@ clean: clean.link-makefile clean.link-makefile: rm -f link-makefile.done