I have some pre-existing code I'm trying to compile into an NDK library. There's a simply #ifndef I need to execute correctly, but in my Android.mk the var I've defined with LOCAL_CFLAGS is not recognized. It thinks it's a command line option
When I run ndk-build with the NDK_LOG option it all compiles fine until I see this:
[armeabi-v7a] Compile++ thumb: NDKImageProcessor <= NDKImageProcessor.cpp
arm-linux-androideabi-g++: error: unrecognized command line option '-WINONLY=1'
make: *** [obj/local/armeabi-v7a/objs/NDKImageProcessor/NDKImageProcessor.o] Error 1
I'm simply trying to get the following from being included in compilation:
#ifndef WINONLY
#import <CoreGraphics/CGGeometry.h>
#endif
Android.mk is pretty straightforward:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NDKImageProcessor
LOCAL_SRC_FILES := NDKImageProcessor.cpp
LOCAL_SRC_FILES += ../../../../SharedSrc/Image.cpp
LOCAL_LDLIBS := -llog
LOCAL_CFLAGS := -WINONLY=1
include $(BUILD_SHARED_LIBRARY)
If I simply do not add that LOCAL_CFLAGS line the compiler tries to compile that iOS code, which is a no-go obviously.
From the GCC documentation (it should be the same if you use Clang):
-D name
Predefine name as a macro, with definition 1.
-D name=definition
The contents ofdefinition
are tokenized and processed as if they appeared during translation phase three in a ‘#define’ directive. In particular, the definition will be truncated by embedded newline characters.
So to define WINONLY
with the value 1 you'd use:
LOCAL_CFLAGS := -DWINONLY=1
or simply
LOCAL_CFLAGS := -DWINONLY