You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
(Built from commit 03dd76b on 2019-11-02 using a freshly installed go version go1.13.4 linux/amd64 from the official site on Kubuntu Linux 16.04 LTS.)
Output of checkmake --debug <your makefile>
2019/11/02 06:17:37 Unable to match line '' to a Rule or Variable
2019/11/02 06:17:37 Unable to match line '' to a Rule or Variable
2019/11/02 06:17:37 Unable to match line 'test' to a Rule or Variable
2019/11/02 06:17:37 Unable to match line ' @echo ...and this is the shorthand form which I don't use because' to a Rule or Variable
2019/11/02 06:17:37 Unable to match line ' @echo it confuses Vim's syntax highlighting' to a Rule or Variable
2019/11/02 06:17:37 Unable to parse config file "checkmake.ini", running with defaults
2019/11/02 06:17:37 Running rule 'maxbodylength'...
2019/11/02 06:17:37 iniFile not initialized
2019/11/02 06:17:37 Running rule 'minphony'...
2019/11/02 06:17:37 iniFile not initialized
2019/11/02 06:17:37 Running rule 'phonydeclared'...
2019/11/02 06:17:37 iniFile not initialized
2019/11/02 06:17:37 Running rule 'timestampexpanded'...
2019/11/02 06:17:37 iniFile not initialized
2019/11/02 06:17:37 iniFile not initialized
RULE DESCRIPTION LINE NUMBER
minphony Missing required phony target 0
"all"
minphony Missing required phony target 0
"clean"
minphony Missing required phony target 0
"test"
Output of make --version
As a cross-platform port of a tool originally for DOS and Windows, wmake doesn't implement --version, but I've confirmed the problem with the Linux versions of wmake included in OpenWatcom C/C++ 1.9 and one of the recent 2.0 builds.
(Note that the 1.9 installer for Linux and the 2.0 installer for Linux from 2015 have a known bug that'll cause them to crash if they can't find the terminal info database at an obsolete location. You need to either export TERMINFO=/lib/terminfo or export TERM=vt100 before running them... or just unzip them and write an owsetenv.sh by hand.)
Sample Makefile to reproduce issue
all: .SYMBOLIC
@echo This is one way to write a .PHONY target in WMAKE
test
@echo ...and this is the shorthand form which I don't use because
@echo it confuses Vim's syntax highlighting
From this, the three differences should be pretty obvious:
Instead of listing phony targets as dependencies of .PHONY, you list .SYMBOLIC as a dependency of each phony target in wmake.
There's a shorthand form which has no colon or dependencies that I wouldn't expect anyone to support. I certainly don't use it.
There's an echo builtin which follows the command-parsing semantics of the MS-DOS echo builtin. (ie. everything between echo and the end of the line is treated as a literal string. Hence the ' in don't is not an unbalanced quote.)
The dialect as a whole is described in chapter 10 of the "Open Watcom C/C++ Tools User’s Guide" (with .SYMBOLIC being described in section 10.32). That's available as ctools.pdf or ctools.html for 2.0 or tools.pdf for 1.9.
Now, to show how checkmakealmost fits the bill in a real-world scenario, here's the non-debug output (because the debug output is long) from the much larger, more complex Makefile for my DOS hobby project (which supports both Linux and DOS as build environments):
RULE DESCRIPTION LINE NUMBER
phonydeclared Target "all" should be 115
declared PHONY.
maxbodylength Target body for "testrun" 153
exceeds allowed length of 5
(9).
minphony Missing required phony target 0
"all"
minphony Missing required phony target 0
"clean"
minphony Missing required phony target 0
"test"
I'll post more about that makefile on request.
The text was updated successfully, but these errors were encountered:
Oh, actually, there is one other thing it would need to learn.
maxbodylength Target body for "testrun" 153
exceeds allowed length of 5
(9).
That's getting confused by the !ifdef/!ifndef/!ifeq/!else/!endif/etc. lines which must not have any whitespace before the ! but can have as much as you want between it and the ifdef.
Output of
checkmake --version
(Built from commit 03dd76b on 2019-11-02 using a freshly installed
go version go1.13.4 linux/amd64
from the official site on Kubuntu Linux 16.04 LTS.)Output of
checkmake --debug <your makefile>
Output of
make --version
As a cross-platform port of a tool originally for DOS and Windows,
wmake
doesn't implement--version
, but I've confirmed the problem with the Linux versions of wmake included in OpenWatcom C/C++ 1.9 and one of the recent 2.0 builds.(Note that the 1.9 installer for Linux and the 2.0 installer for Linux from 2015 have a known bug that'll cause them to crash if they can't find the terminal info database at an obsolete location. You need to either
export TERMINFO=/lib/terminfo
orexport TERM=vt100
before running them... or justunzip
them and write anowsetenv.sh
by hand.)Sample Makefile to reproduce issue
From this, the three differences should be pretty obvious:
.PHONY
, you list.SYMBOLIC
as a dependency of each phony target in wmake.echo
builtin which follows the command-parsing semantics of the MS-DOSecho
builtin. (ie. everything betweenecho
and the end of the line is treated as a literal string. Hence the'
indon't
is not an unbalanced quote.)The dialect as a whole is described in chapter 10 of the "Open Watcom C/C++ Tools User’s Guide" (with
.SYMBOLIC
being described in section 10.32). That's available asctools.pdf
orctools.html
for 2.0 ortools.pdf
for 1.9.Now, to show how
checkmake
almost fits the bill in a real-world scenario, here's the non-debug output (because the debug output is long) from the much larger, more complexMakefile
for my DOS hobby project (which supports both Linux and DOS as build environments):I'll post more about that makefile on request.
The text was updated successfully, but these errors were encountered: