Add BSDmakefile to prevent errors when make is called under FreeBSD (#4446)
				
					
				
			The syntax of the gitea Makefile is not platform-agnostic and is specific to the GNU version of `make`. BSD platforms such as FreeBSD ship with bmake (BSD make) as their default `make` program; attempting to compile gitea by simply executing `make` causes a wall of errors to show as a result of syntax incompatible with BSD make. If a file named `BSDmakefile` is present, `bmake` will give it preference over a generic `Makefile`. This `BSDmakefile` is taken from the BSD-licensed `gmake-proxy` project [0], which transparently proxies all `make` commands to `gmake` (GNU make) on systems where `bmake` is the default, and if `gmake` is not installed an error message is displayed. [0]: https://github.com/neosmart/gmake-proxy
This commit is contained in:
		
							parent
							
								
									ef6813abc9
								
							
						
					
					
						commit
						7be5935c55
					
				
					 1 changed files with 51 additions and 0 deletions
				
			
		
							
								
								
									
										51
									
								
								BSDmakefile
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								BSDmakefile
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,51 @@ | ||||||
|  | # GNU makefile proxy script for BSD make | ||||||
|  | # Written and maintained by Mahmoud Al-Qudsi <mqudsi@neosmart.net> | ||||||
|  | # Copyright NeoSmart Technologies <https://neosmart.net/> 2014-2018 | ||||||
|  | # Obtain updates from <https://github.com/neosmart/gmake-proxy> | ||||||
|  | # | ||||||
|  | # Redistribution and use in source and binary forms, with or without | ||||||
|  | # modification, are permitted provided that the following conditions are met: | ||||||
|  | # | ||||||
|  | # 1. Redistributions of source code must retain the above copyright notice, this | ||||||
|  | # list of conditions and the following disclaimer. | ||||||
|  | # | ||||||
|  | # 2. Redistributions in binary form must reproduce the above copyright notice, | ||||||
|  | # this list of conditions and the following disclaimer in the documentation | ||||||
|  | # and/or other materials provided with the distribution. | ||||||
|  | # | ||||||
|  | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||||||
|  | # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||||||
|  | # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||||
|  | # DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||||||
|  | # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||||||
|  | # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||||||
|  | # SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||||||
|  | # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||||||
|  | # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||||||
|  | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
|  | 
 | ||||||
|  | JARG = | ||||||
|  | GMAKE = "gmake" | ||||||
|  | #When gmake is called from another make instance, -w is automatically added | ||||||
|  | #which causes extraneous messages about directory changes to be emitted. | ||||||
|  | #--no-print-directory silences these messages. | ||||||
|  | GARGS = "--no-print-directory" | ||||||
|  | 
 | ||||||
|  | .if "$(.MAKE.JOBS)" != "" | ||||||
|  | JARG = -j$(.MAKE.JOBS) | ||||||
|  | .endif | ||||||
|  | 
 | ||||||
|  | #by default bmake will cd into ./obj first | ||||||
|  | .OBJDIR: ./ | ||||||
|  | 
 | ||||||
|  | .PHONY: FRC | ||||||
|  | $(.TARGETS): FRC | ||||||
|  | 	$(GMAKE) $(GARGS) $(.TARGETS:S,.DONE,,) $(JARG) | ||||||
|  | 
 | ||||||
|  | .DONE .DEFAULT: .SILENT | ||||||
|  | 	$(GMAKE) $(GARGS) $(.TARGETS:S,.DONE,,) $(JARG) | ||||||
|  | 
 | ||||||
|  | .ERROR: .SILENT | ||||||
|  | 	if ! which $(GMAKE) > /dev/null; then \ | ||||||
|  | 		echo "GNU Make is required!"; \ | ||||||
|  | 	fi | ||||||
		Loading…
	
		Reference in a new issue