Open loudan-arc opened 8 years ago
You could have some setting on in your ~/hxcpp_config.xml that is changing which compiler is used.
Maybe this "is windows" check is failing - are you launching haxe from the android bash shell, or maybe the windows 10 bash shell?
if you compile with -DHXCPP_VERBOSE, you will get some output at the top about how the compiler is selected.
The magic variable your are looking for is "120" - the digit part of the VS120COMNTOOLS variable, like:
haxe -main Test -cpp cpp -D HXCPP_VERBOSE=1 -D HXCPP_MSVC_VER=120
On Wed, Sep 14, 2016 at 9:15 AM, Neil Bryan Joseph Ramirez < notifications@github.com> wrote:
Ever since I opened the Multitouch demo project from flixel-demos to compile to Android, my build has failed, with the error message basically saying there's a missing stddef.h file.
However, once I got to look at hxcpp.h I saw that it was attempting to compile through Linux GCC, skipping the #if MSC_VER condition. I already have installed MSVC (it recognized VC2012) as I previously posted in the other issues https://github.com/HaxeFoundation/hxcpp/issues/492 I've had here, and I've successfully compiled an Android app through it. For some reason however, this time it's unable to detect it in the first place. Am I missing an environment variable? I tried adding MSC_VER with value of 12 or 1200 and nothing changes. I've tried running vcvarsall.bat, vsvars32.bat and vcvars32.bat and other batch files within the Microsoft SDK and Microsoft Visual Studio 12.0 folders, but nothing has changed either? Am I missing something?
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/HaxeFoundation/hxcpp/issues/510, or mute the thread https://github.com/notifications/unsubscribe-auth/ABlp1k2Q8E5fUR5XhriJaBpqLtLazW9Sks5qp0rLgaJpZM4J8Tnc .
I use HaxeDevelop 5.1.1 (FlashDevelop fork) to compile. I don't recall having messed with any settings before opening the Multitouch project. The thing here is, I haven't used the totally latest version of hxcpp during the time the build for Flixius worked. I'm using hxcpp-3,3,49 from haxelib.org, because I was able to compile before using that version but now it doesn't work, not even when I replaced all files with the original copies when I initially downloaded it. (I'm also using lime 2.9.1, openfl 3.6.1, lime-tools 1.5.7 and openfl-tools 1.0.10).
So this is my hxcpp_config.xml. I tried setting the Android NDK version here but from the output below it fails:
<section id="vars">
<set name="NDKV12" value="12b" />
<set name="NDKV" value="12"/>
<set name="NDK" value="12" />
<set name="ANDROID_NDK" value="V12" />
<set name="ANDROID_NDKV" value="12" />
<set name="ANDROID_SETUP" value="true" />
<set name="ANDROID_NDK_ROOT" value="S:/Android NDK" />
<set name="ANDROID_NDK_DIR" value="c:\SDKs\" />
<set name="ANDROID_SDK" value="C:/Android" />
<set name="ANT_HOME" value="S:/Apache Ant" />
<set name="SDK_ROOT" value="c:\SDKs\" />
<set name="JAVA_HOME" value="C:/Program Files (x86)/Java/jdk1.7.0_80" />
<set name="_MSC_VER" value="120" />
<set name="MSC_VER" value="120" />
</section>
<section id="exes">
<compiler id="MSVC" if="android"></compiler>
<linker id="dll" if="android" ></linker>
<!-- Compiling on windows ... -->
<compiler id="MSVC" if="windows">
<!-- Example adding a build flag -->
<!-- <flag value = "-Ie:/VS8//PlatformSDK/Include"/> -->
</compiler>
<!-- Linking on windows ... -->
<linker id="dll" if="windows">
<!-- Add library paths for windows (DirectX needed for building NME) -->
<!-- <flag value = "-libpath:e:\VS8\DirectXSDK\Lib\x86"/>
<flag value = "-libpath:e:/VS8/PlatformSDK/Lib"/> -->
</linker>
<!-- And for linking executables -->
<linker id="exe" if="windows">
<!-- <flag value = "-libpath:e:/VS8/PlatformSDK/Lib"/> -->
</linker>
</section>
NOTE: From the
Now here's the output I got on compilation:
Running process: S:\HaxeDevelop\Tools\fdbuild\fdbuild.exe "S:\HaxeToolkit\haxe\lib\flixel-demos\Input\Multitouch\Multitouch.hxproj" -ipc 98ee054c-cd03-4499-b443-1cbc142ecb6a -version "3.3.0" -compiler "S:\HaxeToolkit\haxe" -notrace -library "S:\HaxeDevelop\Library" -target "android"
Building Multitouch
Running Pre-Build Command Line...
cmd: "S:\HaxeToolkit\haxe/haxelib" run lime build "Project.xml" android -release -Dfdb
__
/\ \
\ \ \___ __ _ ___ _____ _____
\ \ _ `\ /\ \/'\ /'___\/\ '__`\/\ '__`\
\ \ \ \ \\/> <//\ \__/\ \ \L\ \ \ \L\ \
\ \_\ \_\/\_/\_\ \____\\ \ ,__/\ \ ,__/
\/_/\/_/\//\/_/\/____/ \ \ \/ \ \ \/
\ \_\ \ \_\
\/_/ \/_/
hxcpp (Haxe C++ Runtime Support) (3.3.49)
Using makefile: Build.xml
Reading HXCPP config: C:\Users\Lorna\.hxcpp_config.xml
No specified toolchain
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/setup.xml
- Parsing include: C:\Users\Lorna\.hxcpp_config.xml (section "vars")
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/finish-setup.xml
- Parsing makefile: S:\HaxeToolkit\haxe\lib\flixel-demos\Input\Multitouch\export\android\obj\Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/build-tool/BuildCommon.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/haxe-target.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/src/hx/libs/std/Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/src/hx/libs/regexp/Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/src/hx/libs/zlib/Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/android-toolchain.xml
Using Android NDK root: S:/Android NDK
Could not deduce NDK version from "S:/Android NDK" - assuming 8
Detected Android NDK r8
Detected Android toolchain: arm-linux-androideabi-4.9
Detected Android host: windows-x86_64
Using Android NDK platform: android-9
- Adding path: S:/Android NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/gcc-toolchain.xml
- Parsing compiler: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/common-defines.xml
- Parsing include: C:\Users\Lorna\.hxcpp_config.xml (section "exes")
Using compile threads: 1
Creating PCH directory "S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe"
- Precompile S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe/hxcpp.h.gch
- Running command: arm-linux-androideabi-g++ -Iinclude "--sysroot=S:/Android NDK/platforms/android-23/arch-arm" "-IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/include" "-IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include" -DHXCPP_VISIT_ALLOCS -DHXCPP_API_LEVEL=330 -IS:/HaxeToolkit/haxe/lib/hxcpp/include -Iinclude -fpic -fvisibility=hidden -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D_USING_V120_SDK -Wno-psabi -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -fomit-frame-pointer -fexceptions -fno-strict-aliasing -finline-limit=10000 -DANDROID=ANDROID -DHX_ANDROID -DHXCPP_ANDROID_PLATFORM=23 -Wa,--noexecstack -O2 -DNDEBUG -c -Wno-invalid-offsetof -frtti -o S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe/hxcpp.h.gch S:/HaxeToolkit/haxe/lib/hxcpp/include/hxcpp.h
In file included from S:/Android NDK/platforms/android-23/arch-arm/usr/include/wchar.h:32:0,
from S:/HaxeToolkit/haxe/lib/hxcpp/include/hxcpp.h:48:
S:/Android NDK/platforms/android-23/arch-arm/usr/include/stdio.h:52:20: fatal error: stdarg.h: No such file or directory
#include <stdarg.h>
^
compilation terminated.
Error: Error running: arm-linux-androideabi-g++ -Iinclude --sysroot=S:/Android NDK/platforms/android-23/arch-arm -IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/include -IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include -DHXCPP_VISIT_ALLOCS -DHXCPP_API_LEVEL=330 -IS:/HaxeToolkit/haxe/lib/hxcpp/include -Iinclude -fpic -fvisibility=hidden -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D_USING_V120_SDK -Wno-psabi -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -fomit-frame-pointer -fexceptions -fno-strict-aliasing -finline-limit=10000 -DANDROID=ANDROID -DHX_ANDROID -DHXCPP_ANDROID_PLATFORM=23 -Wa,--noexecstack -O2 -DNDEBUG -c -Wno-invalid-offsetof -frtti -o S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe/hxcpp.h.gch S:/HaxeToolkit/haxe/lib/hxcpp/include/hxcpp.h []
Build halted with errors.
Done(1)
My main issues here are: 1) The version of the Android NDK is inferred as r8. I honestly don't recall having changed this explicitly before. I tried above through set env but it fails. I could simply be wrong with the syntax though. 2) Despite already setting the target SDK in Project.xml it still 'uses' the android-9 platform, but at the same time it recognizes 'android-23' to search for needed files for compilation. I already modified the source files from lime 2.9.1 and lime-tools that references to android-9 but there's no effect. At the expense of sounding obvious, does this mean I have to recompile the *.n files within each libraries, if there's no way to override it within hxcpp? 3) I replaced -D_USING_V120_SDK which was originally -D_LINUX_STDDEF_H on the android-toolchain.xml file with no difference. I understand that there are additional options that should be replaced above to reflect MSVC commands; it's just that I can't figure out how this would be automated to work for compilation to Android. It seems that android-toolchain.xml is parsed as if it was using Linux. Looking at hxcpp.h, it seems that it's able to recognize the MSC_VER variable, which I thought should change some more settings, but didn't. 4) I assume stdarg.h is 'found' only through using Microsoft SDK's stdarg.h and other header files? That's my reason so far as to why this file fails, because this is not an isolated incident; Flixius now reports the same error when it used to be that it worked.
P.S. Yes I've already set this at android-toolchain.xml
<set name="HXCPP_MSVC_VER" value="120" />
And at Project.xml just to be sure
<haxedef name="HXCPP_MSVC_VER=120" />
<haxedef name="HXCPP_MSC_VER=120" />
And on Windows as system environment variables.
P.S.2 These are the automatically generated directives which are uneditable by default that are used to compile.
Ok, maybe i misunderstood. You are trying to compile for android with msvc. I have not tested this, so I'm not that surprised it is not working. Something probably assumes "if msvc" and "if android" are mutually exclusive. The logic for finding the NDK would need to be completely different in this case - more like the msvc version that gets results from a .bat file.
The lime build.xml might have something like this in it:
Which would be where this is coming from.
On Tue, Sep 20, 2016 at 11:33 PM, Neil Bryan Joseph Ramirez < notifications@github.com> wrote:
I use HaxeDevelop 5.1.1 (FlashDevelop fork) to compile. I don't recall having messed with any settings before opening the Multitouch project. The thing here is, I haven't used the totally latest version of hxcpp during the time the build for Flixius worked. I'm using hxcpp-3,3,49 from haxelib.org, because I was able to compile before using that version but now it doesn't work, not even when I replaced all files with the original copies when I initially downloaded it. (I'm also using lime 2.9.1, openfl 3.6.1, lime-tools 1.5.7 and openfl-tools 1.0.10).
So this is my hxcpp_config.xml. I tried setting the Android NDK version here but from the output below it fails:
``` ``` NOTE: From the tag above, does this mean I have to explicitly set VS120COMNTOOLS as a path here just in case? Have not tested this yet; will get back to you on this.
Now here's the output I got on compilation:
Running process: S:\HaxeDevelop\Tools\fdbuild\fdbuild.exe "S:\HaxeToolkit\haxe\lib\flixel-demos\Input\Multitouch\Multitouch.hxproj" -ipc 98ee054c-cd03-4499-b443-1cbc142ecb6a -version "3.3.0" -compiler "S:\HaxeToolkit\haxe" -notrace -library "S:\HaxeDevelop\Library" -target "android" Building Multitouch Running Pre-Build Command Line... cmd: "S:\HaxeToolkit\haxe/haxelib" run lime build "Project.xml" android -release -Dfdb /\ \ \ \ _ _ _ \ \ `\ /\ \/'\ /'\/\ '
\/\ '**
\ \ \ \ \ \/> <//\ **/\ \ \L\ \ \ \L\ \ \ \ \//\ __\ \ ,_/\ \ ,**/ \//\//\//\//\/**/ \ \ \/ \ \ \/ \ \ \ \ \// \//hxcpp (Haxe C++ Runtime Support) (3.3.49)
Using makefile: Build.xml Reading HXCPP config: C:\Users\Lorna.hxcpp_config.xml No specified toolchain
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/setup.xml
- Parsing include: C:\Users\Lorna.hxcpp_config.xml (section "vars")
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/finish-setup.xml
- Parsing makefile: S:\HaxeToolkit\haxe\lib\flixel-demos\Input\Multitouch\export\android\obj\Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/build-tool/BuildCommon.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/haxe-target.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/src/hx/libs/std/Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/src/hx/libs/regexp/Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/src/hx/libs/zlib/Build.xml
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/android-toolchain.xml
Using Android NDK root: S:/Android NDK Could not deduce NDK version from "S:/Android NDK" - assuming 8 Detected Android NDK r8 Detected Android toolchain: arm-linux-androideabi-4.9 Detected Android host: windows-x86_64 Using Android NDK platform: android-9
- Adding path: S:/Android NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/bin
- Parsing include: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/gcc-toolchain.xml
- Parsing compiler: S:/HaxeToolkit/haxe/lib/hxcpp/toolchain/common-defines.xml
- Parsing include: C:\Users\Lorna.hxcpp_config.xml (section "exes")
Using compile threads: 1
Creating PCH directory "S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe"
- Precompile S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe/hxcpp.h.gch
- Running command: arm-linux-androideabi-g++ -Iinclude "--sysroot=S:/Android NDK/platforms/android-23/arch-arm" "-IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/include" "-IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include" -DHXCPP_VISIT_ALLOCS -DHXCPP_API_LEVEL=330 -IS:/HaxeToolkit/haxe/lib/hxcpp/include -Iinclude -fpic -fvisibility=hidden -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D_USING_V120_SDK -Wno-psabi -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -fomit-frame-pointer -fexceptions -fno-strict-aliasing -finline-limit=10000 -DANDROID=ANDROID -DHX_ANDROID -DHXCPP_ANDROID_PLATFORM=23 -Wa,--noexecstack -O2 -DNDEBUG -c -Wno-invalid-offsetof -frtti -o S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe/hxcpp.h.gch S:/HaxeToolkit/haxe/lib/hxcpp/include/hxcpp.h In file included from S:/Android NDK/platforms/android-23/arch-arm/usr/include/wchar.h:32:0, from S:/HaxeToolkit/haxe/lib/hxcpp/include/hxcpp.h:48: S:/Android NDK/platforms/android-23/arch-arm/usr/include/stdio.h:52:20: fatal error: stdarg.h: No such file or directory
include
^
compilation terminated. Error: Error running: arm-linux-androideabi-g++ -Iinclude --sysroot=S:/Android NDK/platforms/android-23/arch-arm -IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/include -IS:/Android NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include -DHXCPP_VISIT_ALLOCS -DHXCPP_API_LEVEL=330 -IS:/HaxeToolkit/haxe/lib/hxcpp/include -Iinclude -fpic -fvisibility=hidden -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -D_USING_V120_SDK -Wno-psabi -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -fomit-frame-pointer -fexceptions -fno-strict-aliasing -finline-limit=10000 -DANDROID=ANDROID -DHX_ANDROID -DHXCPP_ANDROID_PLATFORM=23 -Wa,--noexecstack -O2 -DNDEBUG -c -Wno-invalid-offsetof -frtti -o S:/HaxeToolkit/haxe/lib/flixel-demos/Input/Multitouch/export/android/obj/obj/android-v7/__pch/haxe/hxcpp.h.gch S:/HaxeToolkit/haxe/lib/hxcpp/include/hxcpp.h [] Build halted with errors. Done(1)
My main issues here are: 1) The version of the Android NDK is inferred as r8. I honestly don't recall having changed this explicitly before. I tried above through set env but it fails. I could simply be wrong with the syntax though. 2) Despite already setting the target SDK in Project.xml it still 'uses' the android-9 platform, but at the same time it recognizes 'android-23' to search for needed files for compilation. I already modified the source files from lime 2.9.1 and lime-tools that references to android-9 but there's no effect. At the expense of sounding obvious, does this mean I have to recompile the *.n files within each libraries, if there's no way to override it within hxcpp? 3) I replaced -D_USING_V120_SDK which was originally -D_LINUX_STDDEF_H on the android-toolchain.xml file with no difference. I understand that there are additional options that should be replaced above to reflect MSVC commands; it's just that I can't figure out how this would be automated to work for compilation to Android. It seems that android-toolchain.xml is parsed as if it was using Linux. Looking at hxcpp.h, it seems that it's able to recognize the MSC_VER variable, which I thought should change some more settings, but didn't. 4) I assume stdarg.h is 'found' only through using Microsoft SDK's stdarg.h and other header files? That's my reason so far as to why this file fails, because this is not an isolated incident; Flixius now reports the same error when it used to be that it worked.
P.S. Yes I've already set this at android-toolchain.xml
And at Project.xml just to be sure
And on Windows as system environment variables.
P.S.2 These are the automatically generated directives which are uneditable by default that are used to compile. [image: directives] https://cloud.githubusercontent.com/assets/20408760/18677154/7692a384-7f8a-11e6-8e68-66408f06b99c.PNG
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/HaxeFoundation/hxcpp/issues/510#issuecomment-248338520, or mute the thread https://github.com/notifications/unsubscribe-auth/ABlp1qXzuhiqsXyEufVDFRYa6ciY2zhAks5qr_y9gaJpZM4J8Tnc .
Yes, I found that on the lime library and edited it but it hasn't affected the output, and I have been considering that maybe this issue should be dealt with on the lime repo instead.
I'll admit that I'm panicking over this - if I changed settings in Visual Studio I'd know - but I haven't, and neither did I mess with the hxcpp or any other libraries until now, since it worked before, and the commands issued by hxcpp were MSVC based, not Linux GCC based as shown above. Am I missing something critical here? I've been thinking about how android-toolchain.xml works since it handles the actual commands; it can't seem to configure itself to MSVC but it did before. I'm sure I can recall this never being executed on the Android build initially (now it always pops up):
<flag value="-D_LINUX_STDDEF_H "/>
From what I see above Android compilation always executes gcc-toolchain.xml, which means I can't escape its usage, but when I compiled to Android initially the commands were all MSVC based, and I can't find any command listed before or after gcc-toolchain.xml that would happen to override this. The if="dll_imports" are the only parts of the code I could think of, that perhaps MSVC creates DLLs for use by Android? Correct me if I'm wrong.
The msvc toolchain tries to set up the exe path, and then just uses "cl.exe". You can tell this toolchain to skip the setup step, and just use whatever cl.exe it find in the exe path with the NO_AUTO_MSVC. Perhaps something like this was going on before.
On Thu, Sep 22, 2016 at 5:28 PM, Neil Bryan Joseph Ramirez < notifications@github.com> wrote:
Yes, I found that on the lime library and edited it but it hasn't affected the output, and I have been considering that maybe this issue should be dealt with on the lime repo instead.
I'll admit that I'm panicking over this - if I changed settings in Visual Studio I'd know - but I haven't, and neither did I mess with the hxcpp or any other libraries until now, since it worked before, and the commands issued by hxcpp were MSVC based, not Linux GCC based as shown above. Am I missing something critical here? I've been thinking about how android-toolchain.xml works since it handles the actual commands; it can't seem to configure itself to MSVC but it did before.
— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/HaxeFoundation/hxcpp/issues/510#issuecomment-248853272, or mute the thread https://github.com/notifications/unsubscribe-auth/ABlp1o5aVQI1psgw_eGnPvnRNWH-fIJ4ks5qsko5gaJpZM4J8Tnc .
Ever since I opened the Multitouch demo project from flixel-demos to compile to Android, my build has failed, with the error message basically saying there's a missing stddef.h file.
However, once I got to look at hxcpp.h I saw that it was attempting to compile through Linux GCC, skipping the #if MSC_VER condition. I already have installed MSVC (it recognized VC2012) as I previously posted in the other issues I've had here, and I've successfully compiled an Android app through it. For some reason however, this time it's unable to detect it in the first place. Am I missing an environment variable? I tried adding MSC_VER with value of 12 or 1200 and nothing changes. I've tried running vcvarsall.bat, vsvars32.bat and vcvars32.bat and other batch files within the Microsoft SDK and Microsoft Visual Studio 12.0 folders, but nothing has changed either? Am I missing something?