#
# Non-recursive Makefile GENERATED by `mconfig' -- Tue 07 Jan 2025 06:39:49 PM IST
# configured: /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mconfig 
#

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/builddir/makeit-intermediate/base.mk ] #

# silent build
V := @

# source/build locations
BUILDDIR := .
BUILDDIR_ABSPATH := /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/builddir
SOURCEDIR := /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2
SCRIPTSDIR := /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/scripts
CONTRIBDIR := 
PREFIX := /usr/local
EXECPREFIX := /usr/local
BINDIR := /usr/local/bin
SBINDIR := /usr/local/sbin
LIBEXECDIR := /usr/local/libexec
DATAROOTDIR := /usr/local/share
DATADIR := /usr/local/share
SYSCONFDIR := /usr/local/etc
SHAREDSTATEDIR := /usr/local/com
LOCALSTATEDIR := /usr/local/var
RUNSTATEDIR := /usr/local/var/run
INCLUDEDIR := /usr/local/include
OLDINCLUDEDIR := /usr/include
DOCDIR := /usr/local/share/doc/singularity-ce
INFODIR := /usr/local/share/info
HTMLDIR := /usr/local/share/doc/singularity-ce
DVIDIR := /usr/local/share/doc/singularity-ce
PDFDIR := /usr/local/share/doc/singularity-ce
PSDIR := /usr/local/share/doc/singularity-ce
LIBDIR := /usr/local/lib
LOCALEDIR := /usr/local/share/locale
MANDIR := /usr/local/share/man
RPMPREFIX:=

NAME := singularity-ce
SHORT_VERSION := 4.2.2
VERSION := 4.2.2

HOSTAR := ar
HOSTCC := cc
HOSTCXX := c++
HOSTLD := cc
HOSTRANLIB := ranlib
HOSTSIZE := size
HOSTOBJCOPY := objcopy

AR := ar
CC := cc
CXX := c++
LD := ld
RANLIB := ranlib
SIZE := size
OBJCOPY := objcopy

ARCH := x86_64

CFLAGS :=  -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fstack-protector --param ssp-buffer-size=4 -Wall -Werror -Wfatal-errors -Wno-unknown-warning-option -Wstrict-prototypes -Wpointer-arith -Wbad-function-cast -Woverlength-strings -Wframe-larger-than=2047 -Wno-sign-compare -Wclobbered -Wempty-body -Wmissing-parameter-type -Wtype-limits -Wunused-parameter -Wunused-but-set-parameter -Wno-discarded-qualifiers -Wno-incompatible-pointer-types -pipe -fmessage-length=0 -fPIC

GO := /usr/local/go/bin/go

CGO_CFLAGS := -I/home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/builddir 
CGO_LDFLAGS := 
CGO_CPPFLAGS := 
CGO_CXXFLAGS := 
export CGO_CFLAGS CGO_LDFLAGS CGO_CPPFLAGS CGO_CXXFLAGS
LDFLAGS := 

# make sure `all' is the first rule
all:

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/common_opts.mk ] #

# a list of extra files to clean augmented by each module (*.mconf) file
CLEANFILES :=

# general build-wide compile options
AFLAGS := -g

LDFLAGS += -Wl,-z,relro,-z,now

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/go_common_opts.mk ] #

# go tool default build options
GO111MODULE := on
GO_TAGS := sylog singularity_engine fakeroot_engine
GO_TAGS_SUID := sylog singularity_engine fakeroot_engine
GO_LDFLAGS :=
# Need to use non-pie build on ppc64le
# https://github.com/hpcng/singularity/issues/5762
# Need to disable race detector on ppc64le
# https://github.com/hpcng/singularity/issues/5914
uname_m := $(shell uname -m)
ifeq ($(uname_m),$(filter $(uname_m),ppc64le i386 i686))
GO_BUILDMODE := -buildmode=default
GO_RACE :=
else
GO_BUILDMODE := -buildmode=pie
GO_RACE := -race
endif
GO_MODFLAGS := $(if $(wildcard $(SOURCEDIR)/vendor/modules.txt),-mod=vendor,-mod=readonly)
GO_MODFILES := $(SOURCEDIR)/go.mod $(SOURCEDIR)/go.sum
GOFLAGS := $(GO_MODFLAGS) -trimpath
GOPROXY := https://proxy.golang.org

export GOFLAGS GO111MODULE GOPROXY

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/go_unix_opts.mk ] #

GO_TAGS += apparmor selinux
GO_TAGS_SUID += apparmor selinux

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/go_appsec_opts.mk ] #

GO_TAGS += seccomp
GO_TAGS_SUID += seccomp

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/go_runtime_opts.mk ] #

CGO_CFLAGS += -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -fstack-protector --param ssp-buffer-size=4

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/release_opts.mk ] #

CFLAGS += -O2
LDFLAGS += -s

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/go_normal_opts.mk ] #

# This tells go's link command to add a GNU Build Id, needed for later
#   symbol stripping for example as is done by rpmbuild.
GO_LDFLAGS += -ldflags="-B 0x`head -c20 /dev/urandom|od -An -tx1|tr -d ' \n'`"

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/arch_x86_64_opts.mk ] #


# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/builddir/makeit-intermediate/combined-mconfsready.mk ] #

# object files list
_OBJ := \

# suffix rules (metarules missing from most variants)


# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/builddir/makeit-intermediate/all.mk ] #

all: $()

CLEANFILES += 

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_cli.mk ] #

# This file contains all of the rules for building the singularity CLI binary

# singularity build config
singularity_build_config := $(SOURCEDIR)/internal/pkg/buildcfg/config.go
$(singularity_build_config): $(BUILDDIR)/config.h $(SOURCEDIR)/scripts/go-generate
	$(V)rm -f $(singularity_build_config)
	$(V) cd $(SOURCEDIR)/internal/pkg/buildcfg && $(SOURCEDIR)/scripts/go-generate

CLEANFILES += $(singularity_build_config)

# contain singularity_SOURCE variable list
singularity_deps := $(BUILDDIR_ABSPATH)/singularity.d

-include $(singularity_deps)

$(singularity_deps): $(GO_MODFILES)
	@echo " GEN GO DEP" $@
	$(V)$(SOURCEDIR)/makeit/gengodep -v3 "$(GO)" "singularity_SOURCE" "$(GO_TAGS)" "$@" "$(SOURCEDIR)/cmd/singularity"

# Look at dependencies file changes via singularity_deps
# because it means that a module was updated.
singularity := $(BUILDDIR)/singularity
$(singularity): $(singularity_build_config) $(singularity_deps) $(singularity_SOURCE)
	@echo " GO" $@; echo "    [+] GO_TAGS" \"$(GO_TAGS)\"
	$(V)$(GO) build $(GO_MODFLAGS) $(GO_BUILDMODE) -tags "$(GO_TAGS)" $(GO_LDFLAGS) \
		-o $(BUILDDIR)/singularity $(SOURCEDIR)/cmd/singularity

singularity_INSTALL := $(DESTDIR)$(BINDIR)/singularity
$(singularity_INSTALL): $(singularity)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $(singularity) $(singularity_INSTALL) # set cp to install

CLEANFILES += $(singularity)
INSTALLFILES += $(singularity_INSTALL)
ALL += $(singularity)


# bash_completion file
bash_completion :=  $(BUILDDIR)/bash-completion/completions/singularity
$(bash_completion): $(singularity_build_config)
	@echo " GEN" $@
	$(V)rm -f $@
	$(V)mkdir -p $(@D)
	$(V)$(GO) run $(GO_MODFLAGS) -tags "$(GO_TAGS)" \
		$(SOURCEDIR)/cmd/bash_completion/bash_completion.go $@

bash_completion_INSTALL := $(DESTDIR)$(DATADIR)/bash-completion/completions/singularity
$(bash_completion_INSTALL): $(bash_completion)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

CLEANFILES += $(bash_completion)
INSTALLFILES += $(bash_completion_INSTALL)
ALL += $(bash_completion)


# singularity.conf file
config := $(BUILDDIR)/singularity.conf
config_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/singularity.conf
# override this to empty to avoid merging old configuration settings
old_config := $(config_INSTALL)

$(config): $(singularity_build_config) $(SOURCEDIR)/etc/conf/gen.go $(SOURCEDIR)/pkg/runtime/engine/singularity/config/config.go
	@echo " GEN $@`if [ -n "$(old_config)" ]; then echo " from $(old_config)"; fi`"
	$(V)$(GO) run $(GO_MODFLAGS) $(SOURCEDIR)/etc/conf/gen.go \
		$(old_config) $(config)

$(config_INSTALL): $(config)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(config_INSTALL)
ALL += $(config)

# remote config file
remote_config := $(SOURCEDIR)/etc/remote.yaml

remote_config_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/remote.yaml
$(remote_config_INSTALL): $(remote_config)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(remote_config_INSTALL)

man_pages := $(BUILDDIR)$(MANDIR)/man1
$(man_pages): singularity
	@echo " MAN" $@
	mkdir -p $@
	$(V)$(GO) run $(GO_MODFLAGS) -tags "$(GO_TAGS)" \
		$(SOURCEDIR)/cmd/docs/docs.go man --dir $@

man_pages_INSTALL := $(DESTDIR)$(MANDIR)/man1
$(man_pages_INSTALL): $(man_pages)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $@
	$(V)install -m 0644 -t $@ $(man_pages)/*

INSTALLFILES += $(man_pages_INSTALL)
ALL += $(man_pages)

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_network.mk ] #

# This file contains rules for building CNI plugins which can enable
#   different networking functions between container(s) and the host

singularity_REPO := github.com/sylabs/singularity

cni_builddir := $(BUILDDIR_ABSPATH)/cni
cni_install_DIR := $(DESTDIR)$(LIBEXECDIR)/singularity/cni
cni_plugins := $(shell grep '^	_' $(SOURCEDIR)/internal/pkg/runtime/engine/singularity/plugins_linux.go | cut -d\" -f2)
cni_plugins_EXECUTABLES := $(addprefix $(cni_builddir)/, $(notdir $(cni_plugins)))
cni_plugins_INSTALL := $(addprefix $(cni_install_DIR)/, $(notdir $(cni_plugins)))
cni_config_LIST := $(SOURCEDIR)/etc/network/00_bridge.conflist \
                   $(SOURCEDIR)/etc/network/10_ptp.conflist \
                   $(SOURCEDIR)/etc/network/20_ipvlan.conflist \
                   $(SOURCEDIR)/etc/network/30_macvlan.conflist \
                   $(SOURCEDIR)/etc/network/40_fakeroot.conflist
cni_config_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/network

.PHONY: cniplugins
cniplugins:
	$(V)umask 0022 && mkdir -p $(cni_builddir)
	$(V)for p in $(cni_plugins); do \
		name=`basename $$p`; \
		cniplugin=$(cni_builddir)/$$name; \
		if [ ! -f $$cniplugin ]; then \
			echo " CNI PLUGIN" $$name; \
		$(GO) build $(GO_MODFLAGS) $(GO_BUILDMODE) -tags "$(GO_TAGS)" $(GO_LDFLAGS) \
			-o $$cniplugin $$p; \
		fi \
	done

$(cni_plugins_INSTALL): $(cni_plugins_EXECUTABLES)
	@echo " INSTALL CNI PLUGIN" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $(cni_builddir)/$(@F) $@

$(cni_config_INSTALL): $(cni_config_LIST)
	@echo " INSTALL CNI CONFIGURATION FILES"
	$(V)umask 0022 && mkdir -p $(cni_config_INSTALL)
	$(V)install -m 0644 $? $@

CLEANFILES += $(cni_plugins_EXECUTABLES)
INSTALLFILES += $(cni_plugins_INSTALL) $(cni_config_INSTALL)
ALL += cniplugins

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_conmon.mk ] #

# This file contains all of the rules for building conmon

conmon := $(SOURCEDIR)/third_party/conmon/bin/conmon
conmon_dir := $(SOURCEDIR)/third_party/conmon/
conmon_src := $(SOURCEDIR)/third_party/conmon/Makefile
conmon_INSTALL := $(DESTDIR)$(LIBEXECDIR)/singularity/bin/conmon

# conmon currently fails to build with these warnings as errors,
# which are enforced by our own flags for CGO, or by distributions.
conmon_CFLAGS := $(filter-out -Wstrict-prototypes,$(CFLAGS))
conmon_CFLAGS := $(filter-out -Wframe-larger-than=2047,$(conmon_CFLAGS))
conmon_CFLAGS := $(filter-out -Wpointer-arith,$(conmon_CFLAGS))
conmon_CFLAGS += -std=c99

$(conmon): $(conmon_src)
	@echo " CONMON"
	$(MAKE) CFLAGS='$(conmon_CFLAGS)' -C $(conmon_dir)
	
$(conmon_INSTALL): $(conmon)
	@echo " INSTALL CONMON" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $< $@

.PHONY:
conmon_CLEAN:
	@echo " CLEAN CONMON"
	$(MAKE) -C $(conmon_dir) clean

INSTALLFILES += $(conmon_INSTALL)
ALL += $(conmon)
CLEANTARGETS += conmon_CLEAN
# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_squashfuse.mk ] #

# This file contains all of the rules for building squashfuse_ll

squashfuse_ll := $(SOURCEDIR)/third_party/squashfuse/squashfuse_ll
squashfuse_dir := $(SOURCEDIR)/third_party/squashfuse
squashfuse_src := $(SOURCEDIR)/third_party/squashfuse/autogen.sh
squashfuse_INSTALL := $(DESTDIR)$(LIBEXECDIR)/singularity/bin/squashfuse_ll

# squashfuse currently fails to build with these warnings as errors,
# which are enforced by our own flags for CGO, or by distributions.
squashfuse_CFLAGS := $(filter-out -Wstrict-prototypes,$(CFLAGS))
squashfuse_CFLAGS := $(filter-out -Wunused-parameter,$(squashfuse_CFLAGS))
squashfuse_CFLAGS := $(filter-out -Wunused-variable,$(squashfuse_CFLAGS))
squashfuse_CFLAGS += -Wno-unused-variable

# Workaround for Ubuntu 24.04... we currently build with -D_FORTIFY_SOURCE=2
# so filter out the distro -D_FORTIFY_SOURCE=3 from CPPFLAGS to avoid
# conflict between the two settings.
squashfuse_CPPFLAGS := $(filter-out -D_FORTIFY_SOURCE=3,$(CPPFLAGS))

$(squashfuse_ll): $(squashfuse_src)
	@echo " SQUASHFUSE"
	echo $(squashfuse_CFLAGS)
	cd $(squashfuse_dir) && ./autogen.sh
	cd $(squashfuse_dir) && CFLAGS='$(squashfuse_CFLAGS)' CPPFLAGS='$(squashfuse_CPPFLAGS)' ./configure
	$(MAKE) CFLAGS='$(squashfuse_CFLAGS)' -C $(squashfuse_dir) squashfuse_ll

$(squashfuse_INSTALL): $(squashfuse_ll)
	@echo " INSTALL SQUASHFUSE" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $< $@

.PHONY:
squashfuse_CLEAN:
	@echo " CLEAN SQUASHFUSE"
	$(MAKE) -C $(squashfuse_dir) clean || true

INSTALLFILES += $(squashfuse_INSTALL)
ALL += $(squashfuse_ll)
CLEANTARGETS += squashfuse_CLEAN

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_runtime.mk ] #

# This file contains all of the rules for building the singularity runtime
#   and installing the necessary config files.

# contain starter_SOURCE variable list
starter_deps := $(BUILDDIR_ABSPATH)/starter.d

-include $(starter_deps)

$(starter_deps): $(GO_MODFILES)
	@echo " GEN GO DEP" $@
	$(V)$(SOURCEDIR)/makeit/gengodep -v3 "$(GO)" "starter_SOURCE" "$(GO_TAGS)" "$@" "$(SOURCEDIR)/cmd/starter"

starter_CSOURCE := $(wildcard $(SOURCEDIR)/cmd/starter/c/*.c)
starter_CSOURCE += $(wildcard $(SOURCEDIR)/cmd/starter/c/include/*.h)

$(BUILDDIR)/.clean-starter: $(starter_CSOURCE)
	@echo " GO clean -cache"
	-$(V)$(GO) clean -cache 2>/dev/null
	$(V)touch $@


# starter
# Look at dependencies file changes via starter_deps
# because it means that a module was updated.
starter := $(BUILDDIR)/cmd/starter/c/starter
$(starter): $(BUILDDIR)/.clean-starter $(singularity_build_config) $(starter_deps) $(starter_SOURCE)
	@echo " GO" $@
	$(V)$(GO) build $(GO_MODFLAGS) $(GO_BUILDMODE) -tags "$(GO_TAGS)" $(GO_LDFLAGS) \
		-o $@ $(SOURCEDIR)/cmd/starter/main_linux.go

starter_INSTALL := $(DESTDIR)$(LIBEXECDIR)/singularity/bin/starter
$(starter_INSTALL): $(starter)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $(starter) $@

CLEANFILES += $(starter)
INSTALLFILES += $(starter_INSTALL)
ALL += $(starter)


# sessiondir
sessiondir_INSTALL := $(DESTDIR)$(LOCALSTATEDIR)/singularity/mnt/session
$(sessiondir_INSTALL):
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $@

INSTALLFILES += $(sessiondir_INSTALL)


# run-singularity script
run_singularity := $(SOURCEDIR)/scripts/run-singularity

run_singularity_INSTALL := $(DESTDIR)$(BINDIR)/run-singularity
$(run_singularity_INSTALL): $(run_singularity)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $< $@

INSTALLFILES += $(run_singularity_INSTALL)


# capability config file
capability_config_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/capability.json
$(capability_config_INSTALL):
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)touch $@

INSTALLFILES += $(capability_config_INSTALL)


# syecl config file
syecl_config := $(SOURCEDIR)/internal/pkg/syecl/syecl.toml.example

syecl_config_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/ecl.toml
$(syecl_config_INSTALL): $(syecl_config)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(syecl_config_INSTALL)


# seccomp profile
seccomp_profile := $(SOURCEDIR)/etc/seccomp-profiles/default.json

seccomp_profile_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/seccomp-profiles/default.json
$(seccomp_profile_INSTALL): $(seccomp_profile)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(seccomp_profile_INSTALL)


# nvidia liblist config file
nvidia_liblist := $(SOURCEDIR)/etc/nvliblist.conf

nvidia_liblist_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/nvliblist.conf
$(nvidia_liblist_INSTALL): $(nvidia_liblist)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(nvidia_liblist_INSTALL)


# rocm liblist config file
rocm_liblist := $(SOURCEDIR)/etc/rocmliblist.conf

 rocm_liblist_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/rocmliblist.conf
$(rocm_liblist_INSTALL): $(rocm_liblist)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(rocm_liblist_INSTALL)


# cgroups config file
cgroups_config := $(SOURCEDIR)/internal/pkg/cgroups/example/cgroups.toml

cgroups_config_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/cgroups/cgroups.toml
$(cgroups_config_INSTALL): $(cgroups_config)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(cgroups_config_INSTALL)

# global keyring
global_keyring := $(SOURCEDIR)/etc/global-pgp-public

global_keyring_INSTALL := $(DESTDIR)$(SYSCONFDIR)/singularity/global-pgp-public
$(global_keyring_INSTALL): $(global_keyring)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0644 $< $@

INSTALLFILES += $(global_keyring_INSTALL)


# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_runtime_suid.mk ] #

# This file contains installation rule for starter-suid binary. In order to 
#   include this file, Makefile_runtime.stub MUST first be included.

# starter suid
starter_suid := $(BUILDDIR)/cmd/starter/c/starter-suid
starter_suid_INSTALL := $(DESTDIR)$(LIBEXECDIR)/singularity/bin/starter-suid

$(starter_suid): $(starter)
	@echo " GO" $@; echo "    [+] GO_TAGS" \"$(GO_TAGS_SUID)\"
	$(V)$(GO) build $(GO_MODFLAGS) $(GO_BUILDMODE) -tags "$(GO_TAGS_SUID)" $(GO_LDFLAGS) \
		-o $@ $(SOURCEDIR)/cmd/starter/main_linux.go

$(starter_suid_INSTALL): $(starter_suid)
	@echo " INSTALL SUID" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install $(starter_suid) $(starter_suid_INSTALL)
	@if [ `id -u` -ne 0 ] ; then \
		echo "$(starter_suid_INSTALL) -- installed with incorrect permissions"; \
	else \
		chmod 4755 $(starter_suid_INSTALL); \
	fi

CLEANFILES += $(starter_suid)
INSTALLFILES += $(starter_suid_INSTALL)
ALL += $(starter_suid)

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_scripts.mk ] #

# This file contains generation rules for scripts

# go-test script
$(SOURCEDIR)/scripts/go-test: export GO := $(GO)
$(SOURCEDIR)/scripts/go-test: export GO111MODULE := $(GO111MODULE)
$(SOURCEDIR)/scripts/go-test: export GOFLAGS := $(GOFLAGS)
$(SOURCEDIR)/scripts/go-test: export GO_TAGS := $(GO_TAGS)
$(SOURCEDIR)/scripts/go-test: export SUDO_SCRIPT := $(SOURCEDIR)/scripts/test-sudo
$(SOURCEDIR)/scripts/go-test: $(SOURCEDIR)/scripts/go-test.in $(SOURCEDIR)/scripts/expand-env.go
	@echo ' GEN $@'
	$(V) $(GO) run $(GO_MODFLAGS) $(SOURCEDIR)/scripts/expand-env.go < $< > $@
	$(V) chmod +x $@

ALL += $(SOURCEDIR)/scripts/go-test

# go-generate script
$(SOURCEDIR)/scripts/go-generate: export BUILDDIR := $(BUILDDIR_ABSPATH)
$(SOURCEDIR)/scripts/go-generate: export GO := $(GO)
$(SOURCEDIR)/scripts/go-generate: export GO111MODULE := $(GO111MODULE)
$(SOURCEDIR)/scripts/go-generate: export GOFLAGS := $(GOFLAGS)
$(SOURCEDIR)/scripts/go-generate: export GO_TAGS := $(GO_TAGS)
$(SOURCEDIR)/scripts/go-generate: $(SOURCEDIR)/scripts/go-generate.in $(SOURCEDIR)/scripts/expand-env.go
	@echo ' GEN $@'
	$(V) $(GO) run $(GO_MODFLAGS) $(SOURCEDIR)/scripts/expand-env.go < $< > $@
	$(V) chmod +x $@

.PHONY: codegen
codegen: $(SOURCEDIR)/scripts/go-generate
	cd $(SOURCEDIR) && ./scripts/go-generate -x ./...

ALL += $(SOURCEDIR)/scripts/go-generate


# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/build_singularity-buildkitd.mk ] #

# This file contains all of the rules for building the singularity-buildkitd binary

singularity-buildkitd_deps := $(BUILDDIR_ABSPATH)/singularity-buildkitd.d

-include $(singularity-buildkitd_deps)

$(singularity-buildkitd_deps): $(GO_MODFILES)
	@echo " GEN GO DEP" $@
	$(V)$(SOURCEDIR)/makeit/gengodep -v3 "$(GO)" "singularity-buildkitd_SOURCE" "$(GO_TAGS)" "$@" "$(SOURCEDIR)/cmd/singularity-buildkitd"

# Look at dependencies file changes via singularity_deps
# because it means that a module was updated.
singularity-buildkitd := $(BUILDDIR)/singularity-buildkitd
$(singularity-buildkitd): $(singularity_build_config) $(singularity-buildkitd_deps) $(singularity-buildkitd_SOURCE)
	@echo " GO" $@; echo "    [+] GO_TAGS" \"$(GO_TAGS)\"
	$(V)$(GO) build $(GO_MODFLAGS) $(GO_BUILDMODE) -tags "$(GO_TAGS)" $(GO_LDFLAGS) \
		-o $(BUILDDIR)/singularity-buildkitd $(SOURCEDIR)/cmd/singularity-buildkitd

singularity-buildkitd_INSTALL := $(DESTDIR)$(LIBEXECDIR)/singularity/bin/singularity-buildkitd
$(singularity-buildkitd_INSTALL): $(singularity-buildkitd)
	@echo " INSTALL" $@
	$(V)umask 0022 && mkdir -p $(@D)
	$(V)install -m 0755 $(singularity-buildkitd) $(singularity-buildkitd_INSTALL)

CLEANFILES += $(singularity-buildkitd)
INSTALLFILES += $(singularity-buildkitd_INSTALL)
ALL += $(singularity-buildkitd)

# [ Embedding file : /home/gpsr/webserver/cgidocs/anshu/RAPID-engine/singularity-ce-4.2.2/mlocal/frags/Makefile.stub ] #

# as go build already parallelize things, running make in parallel
# just slow down the whole process and we also requires to respect
# a specific order
.NOTPARALLEL:

all: $(ALL)

.PHONY: collect
collect: $()
	@printf " DEPENDS\n"
	$(V)mkdir -p $(BUILDDIR)
	$(V):>$(BUILDDIR)/mergeddeps
	$(V)for i in `find $(BUILDDIR) -name '*.o.d'`; do		\
		(awk -v path="$${i%/*.*}" '/^.+:/ {			\
			print path "/" $$0; next }{ print }' < $$i	\
			>> $(BUILDDIR)/mergeddeps)			\
	done

.PHONY: check
check: codegen
	@echo " CHECK golangci-lint"
	$(V) cd $(SOURCEDIR) && \
		golangci-lint run --verbose
	@echo "       PASS"

.PHONY: dist
dist: conmon_CLEAN squashfuse_CLEAN
	$(V) if test -e '$(SOURCEDIR)/vendor' ; then \
		echo 'E: There is a vendor directory in $(SOURCEDIR).' ; \
		echo 'E: This is unexpected. Abort.' ; \
		exit 1 ; \
	fi
	$(V) cd $(SOURCEDIR) && $(GO) mod vendor
	$(V) cd $(SOURCEDIR) && $(SOURCEDIR)/scripts/make-dist.sh $(VERSION)
	$(V) rm -rf '$(SOURCEDIR)/vendor'

.PHONY: unit-test
unit-test: EXTRA_FLAGS := $(if $(filter yes,$(strip $(JUNIT_OUTPUT))),-junit $(BUILDDIR_ABSPATH)/unit-test.xml)
unit-test:
	@echo " TEST sudo go test [unit]"
	$(V)cd $(SOURCEDIR) && \
		scripts/go-test -sudo -v $(GO_RACE) $(EXTRA_FLAGS) \
		./...
	@echo "       PASS"

.PHONY: short-unit-test
short-unit-test: EXTRA_FLAGS := $(if $(filter yes,$(strip $(JUNIT_OUTPUT))),-junit $(BUILDDIR_ABSPATH)/unit-test.xml)
short-unit-test:
	@echo " TEST sudo go test [short-unit]"
	$(V)cd $(SOURCEDIR) && \
		scripts/go-test -sudo -v -short $(GO_RACE) $(EXTRA_FLAGS) \
		./...
	@echo "       PASS"

.PHONY: integration-test
integration-test:
	@echo " TEST sudo go test [integration]"
	$(V)cd $(SOURCEDIR) && \
		scripts/go-test -sudo -v -tags 'integration_test' $(GO_RACE) \
		./pkg/network
	@echo "       PASS"

.PHONY: short-integration-test
short-integration-test:
	@echo " TEST sudo go test [short-integration]"
	$(V)cd $(SOURCEDIR) && \
		scripts/go-test -sudo -v -short -tags 'integration_test' $(GO_RACE) \
		./pkg/network
	@echo "       PASS"


.PHONY: e2e-test

e2e-test: GROUPS_FLAG := $(if $(E2E_GROUPS),-e2e_groups $(E2E_GROUPS))
e2e-test: TESTS_FLAG := $(if $(E2E_TESTS),-e2e_tests $(E2E_TESTS))
e2e-test: EXTRA_FLAGS := $(if $(filter yes,$(strip $(JUNIT_OUTPUT))),-junit $(BUILDDIR_ABSPATH)/e2e-test.xml)
e2e-test:
	@echo " TEST sudo go test [e2e]"
	$(V)cd $(SOURCEDIR) && \
		scripts/e2e-test -v $(GO_RACE) $(EXTRA_FLAGS) $(GROUPS_FLAG) $(TESTS_FLAG)
	@echo "       PASS"
	
# test runs only those tests that do not need any docker auth setup etc.
.PHONY: test
test: short-unit-test short-integration-test

# testall will require docker auth to complete as the e2e-tests will hit dockerhub limits
# We use short-unit-test here, until the non-short unit tests respect dockerhub auth, or
# the requirement is eliminated by de-dpulication vs e2e tests.
.PHONY: testall
testall: check short-unit-test integration-test e2e-test

.PHONY: rpm
rpm: dist
	@echo " BUILD RPM"
	$(V)(set -x; cd $(SOURCEDIR) && \
	  if [ -n "$(RPMPREFIX)" ]; then \
	    rpmbuild $(RPMCLEAN) -ta \
	      --define '_prefix $(RPMPREFIX)' \
	      --define '_sysconfdir $(RPMPREFIX)/etc' \
	      --define '_localstatedir $(RPMPREFIX)/var' \
	      --define '_mandir $(RPMPREFIX)/share/man' \
	      $(SOURCEDIR)/singularity-ce-$(VERSION).tar.gz; \
	  else \
	    rpmbuild $(RPMCLEAN) -ta \
	      $(SOURCEDIR)/singularity-ce-$(VERSION).tar.gz; \
	  fi)

.PHONY: cscope
cscope:
	@printf " CSCOPE\n"
	$(V)(cscope -k -R -q -u -b -v `find $(SOURCEDIR) -name '*.[chS]'` \
		>/dev/null 2>&1 || true)

.PHONY: clean
clean: $(CLEANTARGETS)
	@printf " CLEAN\n"
	$(V)rm -rf $(BUILDDIR)/mergeddeps cscope.* $(CLEANFILES)

.PHONY: install
install: $(INSTALLFILES)
	@echo " DONE"

-include $(BUILDDIR)/mergeddeps
