Add support for using a build directory
This commit is contained in:
		
							parent
							
								
									afbdd55334
								
							
						
					
					
						commit
						075cfe3b97
					
				
					 5 changed files with 21 additions and 8 deletions
				
			
		|  | @ -10,5 +10,5 @@ filename-to-dep = $(dir $1).$(notdir $1).dep | ||||||
| # empty string if not found.
 | # empty string if not found.
 | ||||||
| find-program = $(shell for i in $$(IFS=: ; echo $$PATH); do p=$$i/$(strip $1); if [ -e $$p ]; then echo $$p; break; fi; done) | find-program = $(shell for i in $$(IFS=: ; echo $$PATH); do p=$$i/$(strip $1); if [ -e $$p ]; then echo $$p; break; fi; done) | ||||||
| 
 | 
 | ||||||
| # Remove trailing slash.
 | # Ensure that the given string ends in a single slash.
 | ||||||
| add-trailing-slash = $(patsubst %/,%,$(1))/ | add-trailing-slash = $(patsubst %/,%,$(1))/ | ||||||
|  |  | ||||||
							
								
								
									
										10
									
								
								lib.mk
									
										
									
									
									
								
							
							
						
						
									
										10
									
								
								lib.mk
									
										
									
									
									
								
							|  | @ -25,6 +25,16 @@ sysconfdir ?= $(prefix)/etc | ||||||
| mandir ?= $(prefix)/share/man | mandir ?= $(prefix)/share/man | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | # Initialise support for build directories.
 | ||||||
|  | builddir ?= | ||||||
|  | 
 | ||||||
|  | ifdef builddir | ||||||
|  |   buildprefix = $(builddir)/ | ||||||
|  | else | ||||||
|  |   buildprefix = | ||||||
|  | endif | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| # Pass -fPIC if we're building dynamic libraries.
 | # Pass -fPIC if we're building dynamic libraries.
 | ||||||
| BUILD_SHARED_LIBS ?= 1 | BUILD_SHARED_LIBS ?= 1 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -45,9 +45,9 @@ endif | ||||||
| #   built, otherwise a static library.
 | #   built, otherwise a static library.
 | ||||||
| define build-library | define build-library | ||||||
|   $(1)_NAME ?= $(1) |   $(1)_NAME ?= $(1) | ||||||
|   _d := $$(strip $$($(1)_DIR)) |   _d := $(buildprefix)$$(strip $$($(1)_DIR)) | ||||||
|   _srcs := $$(sort $$(foreach src, $$($(1)_SOURCES), $$(src))) |   _srcs := $$(sort $$(foreach src, $$($(1)_SOURCES), $$(src))) | ||||||
|   $(1)_OBJS := $$(addsuffix .o, $$(basename $$(_srcs))) |   $(1)_OBJS := $$(addprefix $(buildprefix), $$(addsuffix .o, $$(basename $$(_srcs)))) | ||||||
|   _libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH)) |   _libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH)) | ||||||
| 
 | 
 | ||||||
|   $(1)_INSTALL_DIR ?= $$(libdir) |   $(1)_INSTALL_DIR ?= $$(libdir) | ||||||
|  |  | ||||||
|  | @ -1,8 +1,11 @@ | ||||||
| %.o: %.cc | $(buildprefix)%.o: %.cc | ||||||
|  | 	@mkdir -p "$(dir $@)" | ||||||
| 	$(trace-cxx) $(CXX) -o $@ -c $< $(GLOBAL_CXXFLAGS) $(GLOBAL_CXXFLAGS_PCH) $(CXXFLAGS) $($@_CXXFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP | 	$(trace-cxx) $(CXX) -o $@ -c $< $(GLOBAL_CXXFLAGS) $(GLOBAL_CXXFLAGS_PCH) $(CXXFLAGS) $($@_CXXFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP | ||||||
| 
 | 
 | ||||||
| %.o: %.cpp | $(buildprefix)%.o: %.cpp | ||||||
|  | 	@mkdir -p "$(dir $@)" | ||||||
| 	$(trace-cxx) $(CXX) -o $@ -c $< $(GLOBAL_CXXFLAGS) $(GLOBAL_CXXFLAGS_PCH) $(CXXFLAGS) $($@_CXXFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP | 	$(trace-cxx) $(CXX) -o $@ -c $< $(GLOBAL_CXXFLAGS) $(GLOBAL_CXXFLAGS_PCH) $(CXXFLAGS) $($@_CXXFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP | ||||||
| 
 | 
 | ||||||
| %.o: %.c | $(buildprefix)%.o: %.c | ||||||
|  | 	@mkdir -p "$(dir $@)" | ||||||
| 	$(trace-cc) $(CC) -o $@ -c $< $(GLOBAL_CFLAGS) $(CFLAGS) $($@_CFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP | 	$(trace-cc) $(CC) -o $@ -c $< $(GLOBAL_CFLAGS) $(CFLAGS) $($@_CFLAGS) -MMD -MF $(call filename-to-dep, $@) -MP | ||||||
|  |  | ||||||
|  | @ -23,9 +23,9 @@ programs-list := | ||||||
| # - $(1)_INSTALL_DIR: the directory where the program will be
 | # - $(1)_INSTALL_DIR: the directory where the program will be
 | ||||||
| #   installed; defaults to $(bindir).
 | #   installed; defaults to $(bindir).
 | ||||||
| define build-program | define build-program | ||||||
|   _d := $$($(1)_DIR) |   _d := $(buildprefix)$$($(1)_DIR) | ||||||
|   _srcs := $$(sort $$(foreach src, $$($(1)_SOURCES), $$(src))) |   _srcs := $$(sort $$(foreach src, $$($(1)_SOURCES), $$(src))) | ||||||
|   $(1)_OBJS := $$(addsuffix .o, $$(basename $$(_srcs))) |   $(1)_OBJS := $$(addprefix $(buildprefix), $$(addsuffix .o, $$(basename $$(_srcs)))) | ||||||
|   _libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH)) |   _libs := $$(foreach lib, $$($(1)_LIBS), $$($$(lib)_PATH)) | ||||||
|   $(1)_PATH := $$(_d)/$(1) |   $(1)_PATH := $$(_d)/$(1) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue