Build system changes.
This commit is contained in:
parent
52d122b854
commit
4c9b79877e
@ -1,5 +1,5 @@
|
||||
#
|
||||
# MKDIRS logic
|
||||
# OS/161 build environment: MKDIRS logic
|
||||
#
|
||||
# This generates rules for all intermediate directories as well as
|
||||
# the directories listed. (That is, if you say MKDIRS=/usr/bin/foo
|
||||
|
92
mk/os161.script.mk
Normal file
92
mk/os161.script.mk
Normal file
@ -0,0 +1,92 @@
|
||||
#
|
||||
# OS/161 build environment: install scripts
|
||||
#
|
||||
# Usage:
|
||||
# TOP=../..
|
||||
# .include "$(TOP)/mk/os161.config.mk"
|
||||
# [defs go here]
|
||||
# .include "$(TOP)/mk/os161.man.mk"
|
||||
# [any extra rules go here]
|
||||
#
|
||||
# Variables controlling this file:
|
||||
#
|
||||
# EXECSCRIPTS Executable files to install.
|
||||
# NONEXECSCRIPTS Non-executable files to install.
|
||||
#
|
||||
# SCRIPTDIR Directory under $(OSTREE) to install into,
|
||||
# e.g. /hostbin. Should have a leading slash.
|
||||
#
|
||||
|
||||
ALLSCRIPTS=$(NONEXECSCRIPTS)
|
||||
|
||||
# We may want these directories created. (Used by os161.baserules.mk.)
|
||||
MKDIRS+=$(MYBUILDDIR)
|
||||
MKDIRS+=$(INSTALLTOP)$(SCRIPTDIR)
|
||||
MKDIRS+=$(OSTREE)$(SCRIPTDIR)
|
||||
|
||||
# Default rule: "build" the executable scripts. This sets the hash-bang
|
||||
# header with the interpreter path.
|
||||
# (In make the first rule found is the default.)
|
||||
all: all-local
|
||||
all-local: $(MYBUILDDIR) .WAIT
|
||||
.for S in $(EXECSCRIPTS)
|
||||
ALLSCRIPTS+=$(MYBUILDDIR)/$(S)
|
||||
all-local: $(MYBUILDDIR)/$(S)
|
||||
$(MYBUILDDIR)/$(S): $(S)
|
||||
# This must test $@, or assign another variable; it can't test $(S).
|
||||
# (This is a bmake bug.)
|
||||
.if !empty(@:M*.py)
|
||||
echo '#!'"$(PYTHON_INTERPRETER)" > $@.new
|
||||
.else
|
||||
sed -n -e '1p' < $(S) > $@.new
|
||||
.endif
|
||||
sed -e '1d' < $(S) >> $@.new
|
||||
chmod 755 $@.new
|
||||
mv -f $@.new $@
|
||||
.endfor
|
||||
|
||||
# depend doesn't need to do anything
|
||||
depend-local: ;
|
||||
|
||||
#
|
||||
# Install: we can install into either $(INSTALLTOP) or $(OSTREE).
|
||||
# When building the whole system, we always install into the staging
|
||||
# area. However, if you're working on a particular program it is
|
||||
# usually convenient to be able to install it directly to $(OSTREE)
|
||||
# instead of doing a complete top-level install.
|
||||
#
|
||||
# Note that we make a hard link instead of a copy by default to reduce
|
||||
# overhead.
|
||||
#
|
||||
install-staging-local: $(INSTALLTOP)$(SCRIPTDIR) .WAIT
|
||||
|
||||
.for _F_ in $(ALLSCRIPTS)
|
||||
install-staging-local: $(INSTALLTOP)$(SCRIPTDIR)/$(_F_:T)
|
||||
$(INSTALLTOP)$(SCRIPTDIR)/$(_F_:T): $(_F_)
|
||||
rm -f $(.TARGET)
|
||||
ln $(_F_) $(.TARGET) || cp $(_F_) $(.TARGET)
|
||||
.endfor
|
||||
|
||||
install-local: $(OSTREE)$(SCRIPTDIR) .WAIT installscripts
|
||||
installscripts:
|
||||
.for _F_ in $(ALLSCRIPTS)
|
||||
rm -f $(OSTREE)$(SCRIPTDIR)/$(_F_:T)
|
||||
ln $(_F_) $(OSTREE)$(SCRIPTDIR)/$(_F_:T) || \
|
||||
cp $(_F_) $(OSTREE)$(SCRIPTDIR)/$(_F_:T)
|
||||
.endfor
|
||||
|
||||
# clean: remove build products
|
||||
clean-local:
|
||||
.for S in $(EXECSCRIPTS)
|
||||
rm -f $(MYBUILDDIR)/$(S)
|
||||
.endfor
|
||||
|
||||
# Mark targets that don't represent files PHONY, to prevent various
|
||||
# lossage if files by those names appear.
|
||||
.PHONY: all all-local install-staging-local install-local installscripts
|
||||
.PHONY: clean-local
|
||||
|
||||
# Finally, get the shared definitions for the most basic rules.
|
||||
.include "$(TOP)/mk/os161.baserules.mk"
|
||||
|
||||
# End.
|
Loading…
x
Reference in New Issue
Block a user