Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SCons: Add explicit dependencies on thirdparty code in cloned env #44457

Merged

Conversation

akien-mga
Copy link
Member

Since we clone the environments to build thirdparty code, we don't get an
explicit dependency on the build objects produced by that environment.

So when we update thirdparty code, Godot code using it is not necessarily
rebuilt (I think it is for changed headers, but not for changed .c/.cpp files),
which can lead to an invalid compilation output (linking old Godot .o files
with a newer, potentially ABI breaking version of thirdparty code).

This was only seen as really problematic with bullet updates (leading to
crashes when rebuilding Godot after a bullet update without cleaning .o files),
but it's safer to fix it everywhere, even if it's a LOT of hacky boilerplate.


Supersedes the SCons changes in #44455 by applying them to the whole codebase.

@akien-mga akien-mga added bug topic:buildsystem topic:thirdparty cherrypick:3.x Considered for cherry-picking into a future 3.x release labels Dec 17, 2020
@akien-mga akien-mga added this to the 4.0 milestone Dec 17, 2020
@akien-mga akien-mga removed request for a team, JFonS and AndreaCatania December 17, 2020 14:59
@pouleyKetchoupp
Copy link
Contributor

Tested on Windows 10:
No issue with incremental build & full rebuild.
Bullet module was rebuilt correctly after updating Bullet source.

Copy link
Member

@bruvzg bruvzg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Build works fine on macOS, tested incremental build and full build.

But changing thirdparty code .cpp files do not trigger module rebuild (at least with TextServer), changing headers do.

@akien-mga
Copy link
Member Author

But changing thirdparty code .cpp files do not trigger module rebuild (at least with TextServer), changing headers do.

Thanks, I'll look into it further. It works for the way bullet is handled, but maybe the explicit dependency on StaticLibraries created in the TextServer module doesn't work.

@akien-mga
Copy link
Member Author

Hm I could reproduce (and fix) the issue with scene/SCsub's thirdparty dependencies, but both for freetype and text_server_adv which use add_library, it seems to work fine for me.

This is what I get after adding an unused define in thirdparty/harfbuzz/src/hb-face.cc:

$ gobuild_linux 
/usr/bin/scons LINKFLAGS=-fuse-ld=gold -j7 p=linuxbsd verbose=yes warnings=extra werror=yes tests=yes 2>&1 | tee -a build.log
scons: Reading SConscript files ...
Enabling ALSA
Enabling PulseAudio
Checking for C header file mntent.h... (cached) yes
scons: done reading SConscript files.
scons: Building targets ...
generate_modules_tests(["modules/modules_tests.gen.h"], [OrderedDict([('assimp', 'modules/assimp'), ('basis_universal', 'modules/basis_universal'), ('bmp', 'modules/bmp'), ('bullet', 'modules/bullet'), ('csg', 'modules/csg'), ('cvtt', 'modules/cvtt'), ('dds', 'modules/dds'), ('denoise', 'modules/denoise'), ('enet', 'modules/enet'), ('etc', 'modules/etc'), ('freetype', 'modules/freetype'), ('gdnative', 'modules/gdnative'), ('gdnavigation', 'modules/gdnavigation'), ('gdscript', 'modules/gdscript'), ('glslang', 'modules/glslang'), ('gridmap', 'modules/gridmap'), ('hdr', 'modules/hdr'), ('jpg', 'modules/jpg'), ('jsonrpc', 'modules/jsonrpc'), ('lightmapper_rd', 'modules/lightmapper_rd'), ('mbedtls', 'modules/mbedtls'), ('meshoptimizer', 'modules/meshoptimizer'), ('minimp3', 'modules/minimp3'), ('mobile_vr', 'modules/mobile_vr'), ('ogg', 'modules/ogg'), ('opensimplex', 'modules/opensimplex'), ('opus', 'modules/opus'), ('pvr', 'modules/pvr'), ('regex', 'modules/regex'), ('squish', 'modules/squish'), ('stb_vorbis', 'modules/stb_vorbis'), ('svg', 'modules/svg'), ('text_server_adv', 'modules/text_server_adv'), ('tga', 'modules/tga'), ('theora', 'modules/theora'), ('tinyexr', 'modules/tinyexr'), ('upnp', 'modules/upnp'), ('vhacd', 'modules/vhacd'), ('visual_script', 'modules/visual_script'), ('vorbis', 'modules/vorbis'), ('webm', 'modules/webm'), ('webp', 'modules/webp'), ('webrtc', 'modules/webrtc'), ('websocket', 'modules/websocket'), ('xatlas_unwrap', 'modules/xatlas_unwrap')])])
g++ -o thirdparty/harfbuzz/src/hb-face.linuxbsd.tools.64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wplacement-new=1 -Wno-error=cpp -w -g3 -pipe -fpie -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wshadow-local -Wno-misleading-indentation -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wstringop-overflow=4 -Wlogical-op -Wattribute-alias=2 -Werror -w -DHAVE_PTHREAD -DHAVE_ICU_BUILTIN -DHAVE_ICU -DHAVE_FREETYPE -DHAVE_GRAPHITE2 -DGRAPHITE2_STATIC -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTOUCH_ENABLED -DALSA_ENABLED -DALSAMIDI_ENABLED -DPULSEAUDIO_ENABLED -D_REENTRANT -DJOYDEV_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DVULKAN_ENABLED -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -Ithirdparty/libpng -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/vulkan/loader -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/linuxbsd -I. -Ithirdparty/harfbuzz/src -Ithirdparty/freetype/include -Ithirdparty/graphite/include -Ithirdparty/icu4c/common thirdparty/harfbuzz/src/hb-face.cc
ar rc modules/text_server_adv/libharfbuzz_builtin.linuxbsd.tools.64.a thirdparty/harfbuzz/src/hb-aat-layout.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-aat-map.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-blob.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-buffer-serialize.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-buffer.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-common.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-draw.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-face.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-fallback-shape.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-font.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ft.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-graphite2.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-icu.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-map.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-number.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-cff1-table.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-cff2-table.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-color.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-face.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-font.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-layout.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-map.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-math.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-meta.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-metrics.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-name.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-arabic.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-default.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-hangul.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-hebrew.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-indic-table.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-indic.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-khmer.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-myanmar.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-thai.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-use-table.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-use.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-complex-vowel-constraints.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-fallback.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape-normalize.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-shape.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-tag.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ot-var.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-set.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-shape-plan.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-shape.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-shaper.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-static.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-style.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-subset-cff-common.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-subset-cff1.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-subset-cff2.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-subset-input.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-subset-plan.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-subset.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-ucd.linuxbsd.tools.64.o thirdparty/harfbuzz/src/hb-unicode.linuxbsd.tools.64.o
ranlib modules/text_server_adv/libharfbuzz_builtin.linuxbsd.tools.64.a
g++ -o modules/text_server_adv/register_types.linuxbsd.tools.64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wplacement-new=1 -Wno-error=cpp -DICU_DATA_NAME=icudt68l.dat -DICU_STATIC_DATA -g3 -pipe -fpie -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wshadow-local -Wno-misleading-indentation -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wstringop-overflow=4 -Wlogical-op -Wattribute-alias=2 -Werror -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTOUCH_ENABLED -DALSA_ENABLED -DALSAMIDI_ENABLED -DPULSEAUDIO_ENABLED -D_REENTRANT -DJOYDEV_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DVULKAN_ENABLED -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -Ithirdparty/libpng -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/vulkan/loader -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/linuxbsd -I. -Ithirdparty/harfbuzz/src -Ithirdparty/freetype/include -Ithirdparty/graphite/include -Ithirdparty/icu4c/common modules/text_server_adv/register_types.cpp
g++ -o modules/text_server_adv/dynamic_font_adv.linuxbsd.tools.64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wplacement-new=1 -Wno-error=cpp -DICU_DATA_NAME=icudt68l.dat -DICU_STATIC_DATA -g3 -pipe -fpie -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wshadow-local -Wno-misleading-indentation -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wstringop-overflow=4 -Wlogical-op -Wattribute-alias=2 -Werror -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTOUCH_ENABLED -DALSA_ENABLED -DALSAMIDI_ENABLED -DPULSEAUDIO_ENABLED -D_REENTRANT -DJOYDEV_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DVULKAN_ENABLED -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -Ithirdparty/libpng -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/vulkan/loader -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/linuxbsd -I. -Ithirdparty/harfbuzz/src -Ithirdparty/freetype/include -Ithirdparty/graphite/include -Ithirdparty/icu4c/common modules/text_server_adv/dynamic_font_adv.cpp
g++ -o modules/text_server_adv/text_server_adv.linuxbsd.tools.64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wplacement-new=1 -Wno-error=cpp -DICU_DATA_NAME=icudt68l.dat -DICU_STATIC_DATA -g3 -pipe -fpie -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wshadow-local -Wno-misleading-indentation -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wstringop-overflow=4 -Wlogical-op -Wattribute-alias=2 -Werror -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTOUCH_ENABLED -DALSA_ENABLED -DALSAMIDI_ENABLED -DPULSEAUDIO_ENABLED -D_REENTRANT -DJOYDEV_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DVULKAN_ENABLED -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -Ithirdparty/libpng -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/vulkan/loader -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/linuxbsd -I. -Ithirdparty/harfbuzz/src -Ithirdparty/freetype/include -Ithirdparty/graphite/include -Ithirdparty/icu4c/common modules/text_server_adv/text_server_adv.cpp
g++ -o modules/text_server_adv/bitmap_font_adv.linuxbsd.tools.64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wplacement-new=1 -Wno-error=cpp -DICU_DATA_NAME=icudt68l.dat -DICU_STATIC_DATA -g3 -pipe -fpie -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wshadow-local -Wno-misleading-indentation -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wstringop-overflow=4 -Wlogical-op -Wattribute-alias=2 -Werror -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTOUCH_ENABLED -DALSA_ENABLED -DALSAMIDI_ENABLED -DPULSEAUDIO_ENABLED -D_REENTRANT -DJOYDEV_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DVULKAN_ENABLED -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -Ithirdparty/libpng -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/vulkan/loader -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/linuxbsd -I. -Ithirdparty/harfbuzz/src -Ithirdparty/freetype/include -Ithirdparty/graphite/include -Ithirdparty/icu4c/common modules/text_server_adv/bitmap_font_adv.cpp
g++ -o modules/text_server_adv/script_iterator.linuxbsd.tools.64.o -c -std=gnu++17 -Wctor-dtor-privacy -Wnon-virtual-dtor -Wplacement-new=1 -Wno-error=cpp -DICU_DATA_NAME=icudt68l.dat -DICU_STATIC_DATA -g3 -pipe -fpie -Wall -Wextra -Wwrite-strings -Wno-unused-parameter -Wshadow-local -Wno-misleading-indentation -Walloc-zero -Wduplicated-branches -Wduplicated-cond -Wstringop-overflow=4 -Wlogical-op -Wattribute-alias=2 -Werror -DDEBUG_ENABLED -DDEBUG_MEMORY_ALLOC -DDISABLE_FORCED_INLINE -DTOUCH_ENABLED -DALSA_ENABLED -DALSAMIDI_ENABLED -DPULSEAUDIO_ENABLED -D_REENTRANT -DJOYDEV_ENABLED -DX11_ENABLED -DUNIX_ENABLED -DVULKAN_ENABLED -DTOOLS_ENABLED -DMINIZIP_ENABLED -DZSTD_STATIC_LINKING_ONLY -Ithirdparty/libpng -Ithirdparty/vulkan -Ithirdparty/vulkan/include -Ithirdparty/vulkan/loader -Ithirdparty/zstd -Ithirdparty/zlib -Iplatform/linuxbsd -I. -Ithirdparty/harfbuzz/src -Ithirdparty/freetype/include -Ithirdparty/graphite/include -Ithirdparty/icu4c/common modules/text_server_adv/script_iterator.cpp
Building compilation database compile_commands.json
progress_finish(["progress_finish"], [])
g++ -o bin/godot.linuxbsd.tools.64 -fuse-ld=gold -rdynamic -pipe -no-pie platform/linuxbsd/godot_linuxbsd.linuxbsd.tools.64.o platform/linuxbsd/crash_handler_linuxbsd.linuxbsd.tools.64.o platform/linuxbsd/os_linuxbsd.linuxbsd.tools.64.o platform/linuxbsd/joypad_linux.linuxbsd.tools.64.o platform/linuxbsd/context_gl_x11.linuxbsd.tools.64.o platform/linuxbsd/detect_prime_x11.linuxbsd.tools.64.o platform/linuxbsd/display_server_x11.linuxbsd.tools.64.o platform/linuxbsd/vulkan_context_x11.linuxbsd.tools.64.o platform/linuxbsd/key_mapping_x11.linuxbsd.tools.64.o main/libmain.linuxbsd.tools.64.a tests/libtests.linuxbsd.tools.64.a modules/libmodules.linuxbsd.tools.64.a modules/libmodule_xatlas_unwrap.linuxbsd.tools.64.a modules/libmodule_websocket.linuxbsd.tools.64.a modules/libmodule_webrtc.linuxbsd.tools.64.a modules/libmodule_webp.linuxbsd.tools.64.a modules/libmodule_webm.linuxbsd.tools.64.a modules/libmodule_vorbis.linuxbsd.tools.64.a modules/libmodule_visual_script.linuxbsd.tools.64.a modules/libmodule_vhacd.linuxbsd.tools.64.a modules/libmodule_upnp.linuxbsd.tools.64.a modules/libmodule_tinyexr.linuxbsd.tools.64.a modules/libmodule_theora.linuxbsd.tools.64.a modules/libmodule_tga.linuxbsd.tools.64.a modules/libmodule_text_server_adv.linuxbsd.tools.64.a modules/libmodule_svg.linuxbsd.tools.64.a modules/libmodule_stb_vorbis.linuxbsd.tools.64.a modules/libmodule_squish.linuxbsd.tools.64.a modules/libmodule_regex.linuxbsd.tools.64.a modules/libmodule_pvr.linuxbsd.tools.64.a modules/libmodule_opus.linuxbsd.tools.64.a modules/libmodule_opensimplex.linuxbsd.tools.64.a modules/libmodule_ogg.linuxbsd.tools.64.a modules/libmodule_mobile_vr.linuxbsd.tools.64.a modules/libmodule_minimp3.linuxbsd.tools.64.a modules/libmodule_meshoptimizer.linuxbsd.tools.64.a modules/libmodule_mbedtls.linuxbsd.tools.64.a modules/libmodule_lightmapper_rd.linuxbsd.tools.64.a modules/libmodule_jsonrpc.linuxbsd.tools.64.a modules/libmodule_jpg.linuxbsd.tools.64.a modules/libmodule_hdr.linuxbsd.tools.64.a modules/libmodule_gridmap.linuxbsd.tools.64.a modules/libmodule_glslang.linuxbsd.tools.64.a modules/libmodule_gdscript.linuxbsd.tools.64.a modules/libmodule_gdnavigation.linuxbsd.tools.64.a modules/libmodule_gdnative.linuxbsd.tools.64.a modules/libmodule_freetype.linuxbsd.tools.64.a modules/libmodule_etc.linuxbsd.tools.64.a modules/libmodule_enet.linuxbsd.tools.64.a modules/libmodule_denoise.linuxbsd.tools.64.a modules/libmodule_dds.linuxbsd.tools.64.a modules/libmodule_cvtt.linuxbsd.tools.64.a modules/libmodule_csg.linuxbsd.tools.64.a modules/libmodule_bullet.linuxbsd.tools.64.a modules/libmodule_bmp.linuxbsd.tools.64.a modules/libmodule_basis_universal.linuxbsd.tools.64.a modules/libmodule_assimp.linuxbsd.tools.64.a platform/libplatform.linuxbsd.tools.64.a drivers/libdrivers.linuxbsd.tools.64.a editor/libeditor.linuxbsd.tools.64.a scene/libscene.linuxbsd.tools.64.a servers/libservers.linuxbsd.tools.64.a core/libcore.linuxbsd.tools.64.a modules/freetype/libfreetype_builtin.linuxbsd.tools.64.a modules/text_server_adv/libharfbuzz_builtin.linuxbsd.tools.64.a modules/text_server_adv/libgraphite_builtin.linuxbsd.tools.64.a modules/text_server_adv/libicu_builtin.linuxbsd.tools.64.a -lXcursor -lXinerama -lXext -lXrandr -lXrender -lX11 -lXi -lasound -lpulse -lGL -lpthread -ldl
scons: done building targets.

So the Depends seems to work at least for harfbuzz. What change did you test with exactly?

Since we clone the environments to build thirdparty code, we don't get an
explicit dependency on the build objects produced by that environment.

So when we update thirdparty code, Godot code using it is not necessarily
rebuilt (I think it is for changed headers, but not for changed .c/.cpp files),
which can lead to an invalid compilation output (linking old Godot .o files
with a newer, potentially ABI breaking version of thirdparty code).

This was only seen as really problematic with bullet updates (leading to
crashes when rebuilding Godot after a bullet update without cleaning .o files),
but it's safer to fix it everywhere, even if it's a LOT of hacky boilerplate.
@bruvzg
Copy link
Member

bruvzg commented Dec 18, 2020

but both for freetype and text_server_adv which use add_library, it seems to work fine for me.

Hm, I have tested it a few times again, and it seems to work, probably I messed up with the changed files or accidentally ran scons twice.

@akien-mga akien-mga merged commit 214a22b into godotengine:master Dec 18, 2020
@akien-mga akien-mga deleted the scons-thirdparty-lib-depends branch December 18, 2020 12:40
@akien-mga
Copy link
Member Author

Backported to 3.x with #48301.

@akien-mga akien-mga removed the cherrypick:3.x Considered for cherry-picking into a future 3.x release label Apr 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants