Build system changes.
This commit is contained in:
		| @@ -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. | ||||
		Reference in New Issue
	
	Block a user