diff --git a/makefiles/release/bbr.mk b/makefiles/release/bbr.mk
new file mode 100644
index 0000000..02bb0e4
--- /dev/null
+++ b/makefiles/release/bbr.mk
@@ -0,0 +1,121 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF 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.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##-------------------##
+##---]  GLOBALS  [---##
+##-------------------##
+RELEASE_BBR_NAME      ?= bbr
+
+# release-target-deps += release-bbr
+
+# -----------------------------
+# release/bbsimctl-darwin-amd64
+# release/bbsimctl-linux-amd64
+# release/bbsimctl-windows-amd64
+# -----------------------------
+release-bbr-deps :=\
+  $(call release-gen-deps,RELEASE_BBR_NAME,RELEASE_OS_ARCH,RELEASE_DIR)
+
+## -----------------------------------------------------------------------
+## Intent: Cross-compile bbr binaries as dependency targets
+##   o target: release/bbr-linux-amd64
+##   o create release/ for VOLUME mounting by docker container
+##   o create a response file for passing docker env vars
+##   o cross-compile: GOOS= GOARCH= go build
+## -----------------------------------------------------------------------
+tans release-bbr: $(release-bbr-deps)
+
+.PHONY: $(release-bbr-deps)
+$(release-bbr-deps):
+
+	@echo
+	@echo "** -----------------------------------------------------------------------"
+	@echo "** $(MAKE): processing target [$@]"
+	@echo "** -----------------------------------------------------------------------"
+
+        # Docker container is responsible for compiling
+        # Release target will publish from localhost:release/
+        # Binaries are built into mounted docker volume /app/release => localhost:release/
+	$(HIDE)mkdir -vp "$(RELEASE_DIR)"
+	$(HIDE)umask 000 && chmod 777 "$(RELEASE_DIR)"
+
+        # -----------------------------------------------------------------------
+        # Create a response file for passing environment vars to docker
+        # -----------------------------------------------------------------------
+	$(HIDE)$(RM) $(notdir $@).env
+	$(HIDE)echo -e '#!/bin/bash\n' \
+	  'GOOS=$(call get-hyphen-field,2,$@)\n' \
+	  'GOARCH=$(call get-hyphen-field,3,$@)\n' \
+	  >> "$(notdir $@).env"
+
+        # -----------------------------------------------------------------------
+        # Compile a platform binary
+        # -----------------------------------------------------------------------
+	$(HIDE) \
+	umask 022 \
+\
+	&& echo "** Building: $@" \
+	&& set -x \
+	&& $(call my-go-sh,$(notdir $@).env) \
+    $(quote-single) \
+      go build -mod vendor \
+	  -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X main.gitStatus=${GIT_STATUS} \
+	    -X main.version=${VERSION}" \
+	  -o "$@" ./cmd/bbr \
+    $(quote-single)
+
+        # -----------------------------------------------------------------------
+        # Cleanup and display results
+        # -----------------------------------------------------------------------
+	@$(RM) $(notdir $@).env	
+	$(HIDE)umask 000 && chmod 755 "$(RELEASE_DIR)"
+	$(HIDE)file "$@"
+
+## -----------------------------------------------------------------------
+## -----------------------------------------------------------------------
+build-bbr: local-omci-lib-go local-protos
+	@go build -mod vendor \
+	  -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X main.gitStatus=${GIT_STATUS} \
+	    -X main.version=${VERSION}" \
+	  ./cmd/bbr
+
+## -----------------------------------------------------------------------
+## Intent: Remove generated targets
+## -----------------------------------------------------------------------
+clean ::
+	$(RM) $(release-bbr-deps)
+	$(RM) *.env
+	$(RM) $(RELEASE_BBR_NAME)
+
+## -----------------------------------------------------------------------
+## Intent: Display target help#
+# -----------------------------------------------------------------------
+help ::
+	@echo
+	@echo '[bbr]'
+	@echo '  build-bbr      Compile bbr on localhost'
+	@echo '  release-bbr    Cross-compile bbr binary for release'
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/bbsim.mk b/makefiles/release/bbsim.mk
new file mode 100644
index 0000000..87b8673
--- /dev/null
+++ b/makefiles/release/bbsim.mk
@@ -0,0 +1,132 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF 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.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##-------------------##
+##---]  GLOBALS  [---##
+##-------------------##
+RELEASE_BBSIM_NAME    ?= bbsim
+
+# release-target-deps += release-bbsim
+
+# -----------------------------
+# release/bbsim-darwin-amd64
+# release/bbsim-linux-amd64
+# release/bbsim-windows-amd64
+# -----------------------------
+release-bbsim-deps :=\
+  $(call release-gen-deps,RELEASE_BBSIM_NAME,RELEASE_OS_ARCH,RELEASE_DIR)
+
+## -----------------------------------------------------------------------
+## Intent: Cross-compile bbsim binaries as dependency targets
+##   o target: release/bbsim-linux-amd64
+##   o create release/ for VOLUME mounting by docker container
+##   o create a response file for passing docker env vars
+##   o cross-compile: GOOS= GOARCH= go build
+## -----------------------------------------------------------------------
+release-bbsim: $(release-bbsim-deps)
+
+.PHONY: $(release-bbsim-deps)
+$(release-bbsim-deps):
+
+	@echo
+	@echo "** -----------------------------------------------------------------------"
+	@echo "** $(MAKE): processing target [$@]"
+	@echo "** -----------------------------------------------------------------------"
+
+        # Docker container is responsible for compiling
+        # Release target will publish from localhost:release/
+        # Binaries are built into mounted docker volume /app/release => localhost:release/
+	$(HIDE)mkdir -vp "$(RELEASE_DIR)"
+	$(HIDE)umask 000 && chmod 777 "$(RELEASE_DIR)"
+
+        # -----------------------------------------------------------------------
+        # Create a response file for passing environment vars to docker
+        # -----------------------------------------------------------------------
+	$(HIDE)$(RM) $(notdir $@).env
+	$(HIDE)echo -e '#!/bin/bash\n' \
+	  'GOOS=$(call get-hyphen-field,2,$@)\n' \
+	  'GOARCH=$(call get-hyphen-field,3,$@)\n' \
+	  >> "$(notdir $@).env"
+
+        # -----------------------------------------------------------------------
+        # Compile a platform binary
+        # -----------------------------------------------------------------------
+	$(HIDE) \
+	umask 022 \
+\
+	&& echo "** Building: $@" \
+	&& set -x \
+	&& $(call my-go-sh,$(notdir $@).env) \
+    $(quote-single) \
+      go build -mod vendor \
+	  -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X main.gitStatus=${GIT_STATUS} \
+	    -X main.version=${VERSION}" \
+	  -o "$@" ./cmd/bbsim \
+    $(quote-single)
+
+        # -----------------------------------------------------------------------
+        # Cleanup and display results
+        # -----------------------------------------------------------------------
+	@$(RM) $(notdir $@).env
+	$(HIDE)umask 000 && chmod 755 "$(RELEASE_DIR)"
+	$(HIDE)file "$@"
+
+
+release-bbsim-x:
+	@echo "$(RELEASE_BBSIM_NAME)-linux-amd64"
+	${GO} build -mod vendor \
+	  -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X main.gitStatus=${GIT_STATUS} \
+	    -X main.version=${VERSION}" \
+	  -o "$(RELEASE_DIR)/$(RELEASE_BBSIM_NAME)-linux-amd64" ./cmd/bbsim
+
+## -----------------------------------------------------------------------
+## Intent: Build bbsimctl on localhost
+## -----------------------------------------------------------------------
+build-bbsim:
+	@go build -mod vendor \
+	  -ldflags "-w -X main.buildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X main.commitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X main.gitStatus=${GIT_STATUS} \
+	    -X main.version=${VERSION}" \
+	  ./cmd/bbsim
+
+## -----------------------------------------------------------------------
+## Intent: Remove generated targets
+## -----------------------------------------------------------------------
+clean ::
+	$(RM) $(release-bbsim-deps)
+	$(RM) *.env
+	$(RM) $(RELEASE_BBSIM_NAME)
+
+## -----------------------------------------------------------------------
+## Intent: Display target help#
+# -----------------------------------------------------------------------
+help ::
+	@echo
+	@echo '[bbsim]'
+	@echo '  build-bbsim      Compile bbsim on localhost'
+	@echo '  release-bbsim    Cross-compile bbsim binaries into a docker mounted filesystem'
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/bbsimctl.mk b/makefiles/release/bbsimctl.mk
new file mode 100644
index 0000000..550cd20
--- /dev/null
+++ b/makefiles/release/bbsimctl.mk
@@ -0,0 +1,124 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF 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.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##-------------------##
+##---]  GLOBALS  [---##
+##-------------------##
+RELEASE_BBSIMCTL_NAME ?= bbsimctl
+
+bbsimctl-config := github.com/opencord/bbsim/internal/bbsimctl/config
+
+# release-target-deps += release-bbsimctl
+
+# -----------------------------
+# release/bbsimctl-darwin-amd64
+# release/bbsimctl-linux-amd64
+# release/bbsimctl-windows-amd64
+# -----------------------------
+release-bbsimctl-deps :=\
+  $(call release-gen-deps,RELEASE_BBSIMCTL_NAME,RELEASE_OS_ARCH,RELEASE_DIR)
+
+## -----------------------------------------------------------------------
+## Intent: Cross-compile bbsimctl binaries as dependency targets
+##   o target: release/bbsimctl-linux-amd64
+##   o create release/ for VOLUME mounting by docker container
+##   o create a response file for passing docker env vars
+##   o cross-compile: GOOS= GOARCH= go build
+## -----------------------------------------------------------------------
+release-bbsimctl: $(release-bbsimctl-deps)
+
+.PHONY: $(release-bbsimctl-deps)
+$(release-bbsimctl-deps):
+
+	@echo
+	@echo "** -----------------------------------------------------------------------"
+	@echo "** $(MAKE): processing target [$@]"
+	@echo "** -----------------------------------------------------------------------"
+
+        # Docker container is responsible for compiling
+        # Release target will publish from localhost:release/
+        # Binaries are built into mounted docker volume /app/release=> localhost:release/
+	$(HIDE)mkdir -vp "$(RELEASE_DIR)"
+	$(HIDE)umask 000 && chmod 777 "$(RELEASE_DIR)"
+
+        # -----------------------------------------------------------------------
+        # Create a response file for passing environment vars to docker
+        # -----------------------------------------------------------------------
+	$(HIDE)$(RM) $(notdir $@).env
+	$(HIDE)echo -e '#!/bin/bash\n' \
+	  'GOOS=$(call get-hyphen-field,2,$@)\n' \
+	  'GOARCH=$(call get-hyphen-field,3,$@)\n' \
+	  >> "$(notdir $@).env"
+
+        # -----------------------------------------------------------------------
+        # Compile a platform binary
+        # -----------------------------------------------------------------------
+	$(HIDE) \
+	umask 022 \
+\
+	&& echo "** Building: $@" \
+	&& set -x \
+	&& $(call my-go-sh,$(notdir $@).env) \
+    $(quote-single) \
+      go build -mod vendor \
+	 -ldflags "-w -X $(bbsimctl-config).BuildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X $(bbsimctl-config).CommitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X $(bbsimctl-config).GitStatus=${GIT_STATUS} \
+	    -X $(bbsimctl-config).Version=${VERSION}" \
+	  -o "$@" ./cmd/bbsimctl \
+    $(quote-single)
+
+        # -----------------------------------------------------------------------
+        # Cleanup and display results
+        # -----------------------------------------------------------------------
+	@$(RM) $(notdir $@).env
+	$(HIDE)umask 000 && chmod 755 "$(RELEASE_DIR)"
+	$(HIDE)file "$@"
+
+## -----------------------------------------------------------------------
+## Intent: Build bbsimctl on localhost
+## -----------------------------------------------------------------------
+build-bbsimctl:
+	@go build -mod vendor \
+	  -ldflags "-w -X github.com/opencord/bbsim/internal/bbsimctl/config.BuildTime=$(shell date +%Y/%m/%d-%H:%M:%S) \
+	    -X github.com/opencord/bbsim/internal/bbsimctl/config.CommitHash=$(shell git log --pretty=format:%H -n 1) \
+	    -X github.com/opencord/bbsim/internal/bbsimctl/config.GitStatus=${GIT_STATUS} \
+	    -X github.com/opencord/bbsim/internal/bbsimctl/config.Version=${VERSION}" \
+	  ./cmd/bbsimctl
+
+## -----------------------------------------------------------------------
+## Intent: Remove generated targets
+## -----------------------------------------------------------------------
+clean ::
+	$(RM) $(release-bbsimctl-deps)
+	$(RM) *.env
+	$(RM) bbsimclt
+
+## -----------------------------------------------------------------------
+## Intent: Display target help#
+# -----------------------------------------------------------------------
+help ::
+	@echo
+	@echo '[bbsimctl]'
+	@echo '  build-bbsimctl      Compile bbsimctl on localhost'
+	@echo '  release-bbsimctl    Cross-compile bbsimctl binaries into a docker mounted filesystem'
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/consts.mk b/makefiles/release/consts.mk
new file mode 100644
index 0000000..ba019b6
--- /dev/null
+++ b/makefiles/release/consts.mk
@@ -0,0 +1,32 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF 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.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+# Release related items
+# Generates binaries in $RELEASE_DIR with name $RELEASE_NAME-$RELEASE_OS_ARCH
+# Inspired by: https://github.com/kubernetes/minikube/releases
+RELEASE_DIR     ?= release
+RELEASE_OS_ARCH ?= linux-amd64 linux-arm64 windows-amd64 darwin-amd64
+
+RELEASE_BBR_NAME      ?= bbr
+RELEASE_BBSIM_NAME    ?= bbsim
+RELEASE_BBSIMCTL_NAME ?= bbsimctl
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/include.mk b/makefiles/release/include.mk
new file mode 100644
index 0000000..d7c6ca8
--- /dev/null
+++ b/makefiles/release/include.mk
@@ -0,0 +1,86 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation
+#
+# 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: 2017-2023 Open Networking Foundation (ONF) and the ONF Contributors
+# SPDX-License-Identifier: Apache-2.0
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+##--------------------##
+##---]  INCLUDES  [---##
+##--------------------##
+include $(MAKEDIR)/release/consts.mk
+include $(MAKEDIR)/release/macros.mk
+
+## -----------------------------------------------------------------------
+## Intent: Dispaly a help section for release targets
+## -----------------------------------------------------------------------
+help::
+	@echo
+	@echo '[RELEASE]'
+	@echo '  release             Creates release ready binaries for BBSimctl and BBR artifacts'
+
+##--------------------##
+##---]  INCLUDES  [---##
+##--------------------##
+include $(MAKEDIR)/release/bbr.mk
+include $(MAKEDIR)/release/bbsim.mk
+include $(MAKEDIR)/release/bbsimctl.mk
+
+## -----------------------------------------------------------------------
+## Intent: Cross-compile binaries for release
+## -----------------------------------------------------------------------
+release-target-deps += release-bbr
+release-target-deps += release-bbsim
+# release-deps += release-bbsimctl
+
+## -----------------------------------------------------------------------
+## Intent: Create a release from targets release-{bbr,bbsim,bbsimctl}
+## Debug: $(foreach tgt,$(release-target-deps),$(info ** release-target-deps=$(tgt)))
+## -----------------------------------------------------------------------
+.PHONY: release
+release: $(release-target-deps)
+
+## -----------------------------------------------------------------------
+## Intent: Initialize storage then build release target groups (bbr, bbsim)
+## -----------------------------------------------------------------------
+.PHONY: $(release-targetdeps)
+$(release-target-deps) : release-init-mkdir
+
+## -----------------------------------------------------------------------
+## Intent: Prepare for a clean release build
+## -----------------------------------------------------------------------
+release-init:
+	@echo
+	@echo "** -----------------------------------------------------------------------"
+	@echo "** $(MAKE): processing target [$@]"
+	@echo "** -----------------------------------------------------------------------"
+
+	@echo -e "\n** Create filesystem target for docker volume: $(RELEASE_DIR)"
+	$(RM) -r "./$(RELEASE_DIR)"
+	mkdir -vp "$(RELEASE_DIR)"
+
+## -----------------------------------------------------------------------
+## Intent: Create storage for release binaries and docker volume mount
+## -----------------------------------------------------------------------
+.PHONY: release-init
+release-init-mkdir:
+	mkdir -vp "$(RELEASE_DIR)"
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
diff --git a/makefiles/release/macros.mk b/makefiles/release/macros.mk
new file mode 100644
index 0000000..7a63529
--- /dev/null
+++ b/makefiles/release/macros.mk
@@ -0,0 +1,102 @@
+# -*- makefile -*-
+# -----------------------------------------------------------------------
+# Copyright 2017-2023 Open Networking Foundation (ONF) and the ONF 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.
+# -----------------------------------------------------------------------
+
+$(if $(DEBUG),$(warning ENTER))
+
+## -----------------------------------------------------------------------
+## Intent: Given a hyphen separated list of values return item [n]
+## -----------------------------------------------------------------------
+## Usage:
+##   value    := foo-bar-tans-fans
+##   tans-val = $(call get-hyphen-field,value,3)
+## -----------------------------------------------------------------------
+get-hyphen-field = $(word $(1),$(subst -,$(space),$(notdir $(2))))
+
+## -----------------------------------------------------------------------
+## Intent: Construct a parameterized $(GO_SH) command
+## Given:
+##   argv[1] Response file containing environment vars passed to docker.
+## Usage:
+##   cmd = $(my-go-sh,./env-vars)
+## Debug: view arguments passed
+##   make DEBUG=1
+## -----------------------------------------------------------------------
+my-go-sh=$(strip                   \
+  $(docker-run-app)                \
+	$(is-stdin)                \
+	$(if $(1),--env-file $(1)) \
+	-v gocache:/.cache         \
+	$(vee-golang)              \
+	$(vee-citools)-golang      \
+	sh -c                      \
+)
+
+## -----------------------------------------------------------------------
+## Intent: Derive a list of release platform binaries by name
+## -----------------------------------------------------------------------
+## Given:
+##   $1 (scalar:name)      $(RELEASE_BBSIM_NAME)
+##   $2 (indirect:arches)  $(RELEASE_OS_ARCH)
+## -----------------------------------------------------------------------
+## Usage: deps = $(call release-gen-deps-name,tool-name,tool-arches)
+## -----------------------------------------------------------------------
+release-gen-deps-name=$(strip \
+\
+  $(if $($(1)),$(null),$(error name= is required))\
+  $(if $($(2)),$(null),$(error arches= is required))\
+\
+  $(foreach name,$($(1)),\
+     $(if $(DEBUG),$(info name=$(name)))\
+  $(foreach arches,$(2),\
+     $(if $(DEBUG),$(info arches=$(arches)))\
+     $(foreach arch,$($(arches)),\
+        $(if $(DEBUG),$(info arch=$(arch): $(name)-$(arch)))\
+        $(name)-$(arch)\
+     )\
+  ))\
+)
+
+## -----------------------------------------------------------------------
+## Intent: Derive a list of release binary dependencies
+## -----------------------------------------------------------------------
+## Returns:
+##    release/bbsim-darwin-amd64
+##    release/bbsim-linux-amd64
+##    release/bbsim-windows-amd64
+## -----------------------------------------------------------------------
+## Usage:
+##    tool-name   = bbsim
+##    tool-arches = darwin linux windows
+##    release-dir = release
+##    deps = $(call release-gen-deps,tool-name,tool-arches,release-dir)
+##    $(foreach val,$(deps),$(info ** deps=$(val)))
+## -----------------------------------------------------------------------
+release-gen-deps=$(strip \
+\
+  $(if $($(1)),$(null),$(error name= is required))\
+  $(if $($(2)),$(null),$(error arches= is required))\
+  $(if $($(3)),$(null),$(error release-dir= is required))\
+\
+  $(if $(DEBUG),$(info release-dir=$(3)))\
+  $(foreach release-dir,$($(3)),\
+    $(addprefix $(release-dir)/,$(call release-gen-deps-name,$(1),$(2)))\
+  )\
+)
+
+$(if $(DEBUG),$(warning LEAVE))
+
+# [EOF]
