jw-pkg/make/projects-dir-minimal.mk

50 lines
1.7 KiB
Makefile
Raw Normal View History

#
# SPDX-License-Identifier: LGPL-2.0-only
#
# Makefile for managing multiple software repositories in one tree
#
# (C) Copyright 2001-2025, Jan Lindemann <jan@janware.com>
#
# 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 = <janware user name> 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)
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