Fix build errors on BSD (in BSDMakefile) (#27594)

1. `make build` fails because `||` and `&&` have the same precedence in
sh/bash, so the `false` command always evaluated (leading to an error).

   ```
   + which gmake /usr/local/bin/gmake
   + false

   *** Failed target:  .BEGIN
*** Failed command: which "gmake" || printf "Error: GNU Make is
required!\n\n" 1>&2 && false
   *** Error code 1
   ```

2. When `GPREFIX` is set to an empty string with quotation marks,
`gmake` mistakenly thinks that it's a file name:

   ``` gmake: *** empty string invalid as file name.  Stop. ```
This commit is contained in:
Sergey Zolotarev 2023-10-13 21:38:27 +06:00 committed by GitHub
parent 532f166c4d
commit cf74f5fc40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -42,13 +42,13 @@ GARGS = "--no-print-directory"
# The GNU convention is to use the lowercased `prefix` variable/macro to # The GNU convention is to use the lowercased `prefix` variable/macro to
# specify the installation directory. Humor them. # specify the installation directory. Humor them.
GPREFIX = "" GPREFIX =
.if defined(PREFIX) && ! defined(prefix) .if defined(PREFIX) && ! defined(prefix)
GPREFIX = 'prefix = "$(PREFIX)"' GPREFIX = 'prefix = "$(PREFIX)"'
.endif .endif
.BEGIN: .SILENT .BEGIN: .SILENT
which $(GMAKE) || printf "Error: GNU Make is required!\n\n" 1>&2 && false which $(GMAKE) || (printf "Error: GNU Make is required!\n\n" 1>&2 && false)
.PHONY: FRC .PHONY: FRC
$(.TARGETS): FRC $(.TARGETS): FRC