| # -*- makefile -*- |
| # ----------------------------------------------------------------------- |
| # Copyright 2023-2024 Open Networking Foundation Contributors |
| # |
| # 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. |
| # |
| # SPDX-FileCopyrightText: 2023 Open Networking Foundation Contributors |
| # SPDX-License-Identifier: Apache-2.0 |
| # ----------------------------------------------------------------------- |
| # Setup: |
| # 1) Makefile |
| # include config.mk |
| # include makefiles/include.mk |
| # 2) cd makefiles |
| # 23 copy makefiles_include_mk.ex into $repo/makefiles/include.mk |
| # 4) make create-onf-lib |
| # ----------------------------------------------------------------------- |
| |
| $(if $(DEBUG),$(warning ENTER)) |
| |
| ## ----------------------------------------------------------------------- |
| ## Infer path to cloned sandbox root |
| ## [TODO] Deprecate TOP= |
| ## ----------------------------------------------------------------------- |
| lf-sbx-root := $(abspath $(lastword $(MAKEFILE_LIST))) |
| lf-sbx-root := $(subst /lf/include.mk,$(null),$(lf-sbx-root)) |
| |
| ## ----------------------------------------------------------------------- |
| ## Define vars based on relative import (normalize symlinks) |
| ## Usage: include makefiles/onf/include.mk |
| ## ----------------------------------------------------------------------- |
| onf-mk-abs := $(abspath $(lastword $(MAKEFILE_LIST))) |
| onf-mk-top := $(subst /include.mk,$(null),$(onf-mk-abs)) |
| onf-mk-lib := $(onf-mk-top)/onf-make/makefiles |
| onf-mk-loc := $(onf-mk-top)/local |
| |
| TOP ?= $(patsubst %/makefiles/include.mk,%,$(onf-mk-abs)) |
| |
| ## ----------------------------------------------------------------------- |
| ## This variable is a bridge to help transition away from legacy makefiles. |
| ## ----------------------------------------------------------------------- |
| legacy-mk := $(lf-sbx-root)/makefiles |
| |
| ## ------------------------------------------------------ |
| ## Two distinct vars needed to access library or project |
| ## ------------------------------------------------------ |
| ONF_MAKEDIR ?= $(onf-mk-lib) |
| MAKEDIR ?= $(onf-mk-loc) |
| |
| # ----------------------------------------------------------------------- |
| # Load per-repository conditionals |
| # Load late else alter MAKEFILE_LIST |
| # NOTE: config.mk can be removed if dynamic feature detection by |
| # file extension is added. |
| # ----------------------------------------------------------------------- |
| include $(wildcard $(lf-sbx-root)/config.mk $(lf-sbx-root)/lf/config.mk) |
| |
| ## ----------------------------------------------------------------------- |
| ## Load makefiles in order: |
| ## 1) Library constants and logic loaded first |
| ## 2) Parameterize and augment targets from local (repo specific) |
| ## ----------------------------------------------------------------------- |
| include $(onf-mk-lib)/include.mk |
| include $(onf-mk-loc)/include.mk |
| |
| ## Define late so caller (?- env --ignore-environment -?) |
| GIT ?= /usr/bin/env git |
| |
| ## ----------------------------------------------------------------------- |
| ## Intent: Helper targets for maintaining git-submodules (repo:onf-make) |
| ## ----------------------------------------------------------------------- |
| |
| ## ----------------------------------------- |
| ## Submodue init target for new repositories |
| ## ----------------------------------------- |
| create-onf-lib : $(onf-mk-lib) |
| $(onf-mk-lib): |
| mkdir -p $(dir $@)# makefiles |
| cd $(dir $@) \ |
| && git submodule https://github.com/opencord/onf-make.git onf-lib |
| |
| ## ----------------------------------------------------------------------- |
| ## Intent: This target will update dependent git-submodule to the latest |
| ## version available from the remote repository. Subsequently |
| ## a checkin will be needed to make the submodule update permanent. |
| ## ----------------------------------------------------------------------- |
| .PHONY: update-git-submodules |
| update-git-submodules: |
| $(GIT) submodule foreach git pull |
| |
| ## ----------------------------------------------------------------------- |
| ## Intent: On-demand cloning of git submodule(s). |
| ## ----------------------------------------------------------------------- |
| ## Trigger: include $(onf-mk-lib)/include.mk |
| ## - When the make command attempts to include a makefile from the |
| ## repo:onf-make submodule, this target/dependency will initialize |
| ## and checkout all submodules the current repository depends on. |
| ## ----------------------------------------------------------------------- |
| .PHONY: git-submodules |
| git-submodules : $(onf-mk-lib)/include.mk |
| |
| $(onf-mk-lib)/include.mk: |
| |
| $(call banner-enter,(Checkout git submodules)) |
| |
| $(GIT) submodule update --init --recursive |
| |
| $(call banner-leave,(Checkout git submodules)) |
| |
| ## ----------------------------------------------------------------------- |
| ## ----------------------------------------------------------------------- |
| help-git : |
| @printf ' %-33.33s %s\n' 'git-submodules' \ |
| 'Init and recursive checkout of git submodule(s)' |
| @printf ' %-33.33s %s\n' 'update-git-submodules' \ |
| 'Update git submodule(s) to the latest version' |
| |
| $(if $(DEBUG),$(warning LEAVE)) |
| |
| # [EOF] |