I am getting \"Android NDK: Host \'awk\' tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !\" error on latest android ndk revision 7.
I was having a problem with different versions of awk on windows. This change uses the cygwin version of awk from a cygwin console and the prebuilt version from a dos console.
Add to init.mk:
ifeq ($(HOST_OS),cygwin)
HOST_AWK := /bin/awk
endif
This Solution (from Santhosh) works also under windows:
Solved the problem.
Solution:
- Navigate to ../android-ndk-r7/prebuilt/linux-x86/bin
- Rename the file awk to awk_
Imoprtant thing to note on windows machine:
ndk revision 7 onwards, ndk source can be built without cygwin, ie.., instead of calling ndk-build command from inside a Cygwin shell, you should call run ndk-build.cmd inside a MSDOS command window.
It works because probably ndk-build first tries to use a locally defined, but old (at least for Linux), version of awk. By renaming it, we make it unreachable by such command, so, apparently, ndk-build calls the system-wide awk.
Take a look at this japanese post: http://d.hatena.ne.jp/yohpapa/20111113/1321198570
They explain how to solve your problem. Is in japanese, but the commands are legible =)
Hope this helps...
I think the problem is $(HOST_AWK)
not defined correctly and local prebuild awk.exe
doesn't work. Thus prebuild awk.exe
should be deleted or renamed and use gawk
if awk
is not defined.
To solve this problem:
1 - Rename <drive>\android-ndk\prebuilt\windows\bin\awk.exe
to <drive>\android-ndk\prebuilt\windows\bin\awk_.exe
.
2 - Open <drive>\android-ndk\build\core\init.mk
Replace
HOST_AWK := $(strip $(HOST_AWK))
ifndef HOST_AWK
HOST_AWK := awk
endif
with
HOST_AWK := $(strip $(HOST_AWK))
ifndef HOST_AWK
HOST_AWK := gawk
endif
Note that awk
renamed to gawk
.