godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
90.35k stars 21.06k forks source link

Compiling with disable_3d and disable_advanced_gui and tools=yes does not work #1701

Closed ratsdiov closed 6 years ago

ratsdiov commented 9 years ago

Building with VisualStudio 2010 using scons with the following command lines has numerous unresolved externals:

scons platform=windows disable_3d=yes

(Using disable_advanced_gui=yes with the above also fails but I'm not sure if using this adds more unresolved externals)

Build error: bin\godot.windows.tools.exe : fatal error LNK1120: 114 unresolved externals scons: *\ [bin\godot.windows.tools.exe] Error 1120 scons: building terminated because of errors.

leonkrause commented 8 years ago

disable_advanced_gui=yes and disable_3d=yes are for use in builds with tools=no that don't need those features.

akien-mga commented 8 years ago

Actually I think the buildsystem should be adapted so that it discards disable_3d and disable_advanced_gui if tools=yes, instead of accepting it and failing. I'll handle that.

vnen commented 8 years ago

If it discards the options, it should not be silent. I believe the most user-friendly way is to stop the command right from the beginning with an error message if an incompatible set of options is selected.

A simple warning message may not be good because it'd likely be lost by the user in the console spam that is the generated by the build and they'll believe it was successful. And it'll be odd when they find out that, say, 3D wasn't actually disabled (so they'll come here to file a bug report and give us more work).

ratsdiov commented 8 years ago

I agree - I was not aware there was a dependency between the options, an error message and hard stop would make this immediately clear.

akien-mga commented 8 years ago

See #3537 for some relevant compilation errors.

I can have a go at disabling these options for the tools=no builds, but I'd like to have the confirmation (@reduz?) that those two options are indeed valid only for the editor. If not, it might just be a true bug that some #ifdef are missing in the code to exclude tools-only stuff triggered by these options.

akien-mga commented 8 years ago

Actually disable_3d won't build currently, it probably broke at some time when adding 3D features without giving the possibility to remove them with _3D_DISABLED. At any rate, this issue needs some more work and probably won't be fixed for 2.0.

ghost commented 8 years ago

has this been fixed ?

ghost commented 8 years ago

yeah is still buggest . I just tried it right now and doesn't work. It compiles but when you run it it gives this error.

ERROR: create: Condition ' !create_func ' is true. returned: 0
   At: core/os/mutex.cpp:39.
error: Couldn't load game path '.'
akien-mga commented 8 years ago

If you have a runtime error, it means that the compilation worked, which is the topic of this issue :)

akien-mga commented 8 years ago

Not critical for the upcoming 2.1, so moving to the next milestone.

spaghiajoeojo commented 6 years ago

Godot 3 still can't be compiled with disable_3d=yes and disable_advanced_gui=yes.

bin\godot.windows.opt.debug.64.mono.exe : fatal error LNK1120: 8  unresolved externals
scons: *** [bin\godot.windows.opt.debug.64.mono.exe] Error 1120
scons: building terminated because of errors.
megasoft78 commented 6 years ago

I'm trying to compile Godot using the following command from Windows 10 (latest version from git): scons -j6 platform=android --config=force target=release tools=no use_lto=yes deprecated=no xml=no disable_3d=yes disable_advanced_gui=yes builtin_bullet=no builtin_enet=no builtin_libogg=no builtin_libtheora=no builtin_libvorbis=no builtin_libvpx=no builtin_libwebsockets=no builtin_mbedtls=no builtin_miniupnpc=no builtin_opus=no builtin_recast=no builtin_squish=no builtin_thekla_atlas=no module_bmp_enabled=no module_bullet_enabled=no module_csg_enabled=no module_dds_enabled=no module_enet_enabled=no module_etc_enabled=no module_gdnative_enabled=no module_gridmap_enabled=no module_hdr_enabled=no module_jpg_enabled=no module_mbedtls_enabled=no module_mobile_vr_enabled=no module_ogg_enabled=no module_opus_enabled=no module_pvr_enabled=no module_recast_enabled=no module_squish_enabled=no module_stb_vorbis_enabled=no module_svg_enabled=no module_tga_enabled=no module_thekla_unwrap_enabled=no module_theora_enabled=no module_tinyexr_enabled=no module_upnp_enabled=no module_visual_script_enabled=no module_vorbis_enabled=no module_webm_enabled=no module_websocket_enabled=no

It compile everything but the linker give these errors:

[ 83%] Linking Static Library ==> modules\freetype\libfreetype_builtin.android.opt.armv7.neon.a
[ 83%] Linking Static Library ==> core\libcore.android.opt.armv7.neon.a
[ 83%] Linking Shared Library ==> bin\libgodot.android.opt.armv7.neon.so
[ 83%] =====
D:\Android\sdk\ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld: warning: ignoring --threads: D:\Android\sdk\ndk-bundle/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64/lib/gcc/arm-linux-androideabi/4.9.x/../../../../arm-linux-androideabi/bin\ld was compiled without thread support
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_stop_simulation(Node*): error: undefined reference to 'PhysicalBone::set_simulate_physics(bool)'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_stop_simulation(Node*): error: undefined reference to 'PhysicalBone::set_static_body(bool)'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_stop_simulation(Node*): error: undefined reference to 'typeinfo for PhysicalBone'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_start_simulation(Skeleton const*, Node*, Vector<int> const&): error: undefined reference to 'PhysicalBone::set_simulate_physics(bool)'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_start_simulation(Skeleton const*, Node*, Vector<int> const&): error: undefined reference to 'PhysicalBone::set_simulate_physics(bool)'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_start_simulation(Skeleton const*, Node*, Vector<int> const&): error: undefined reference to 'PhysicalBone::set_static_body(bool)'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _pb_start_simulation(Skeleton const*, Node*, Vector<int> const&): error: undefined reference to 'typeinfo for PhysicalBone'
scene\libscene.android.opt.armv7.neon.a(skeleton.android.opt.armv7.neon.o):scene\3d\skeleton.cpp:function _physical_bones_add_remove_collision_exception(bool, Node*, RID): error: undefined reference to 'typeinfo for CollisionObject'
clang++.exe: error: linker command failed with exit code 1 (use -v to see invocation)