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

libsdl2: enable build for powerpc with x11 backend #19531

Closed
wants to merge 2 commits into from

Conversation

barracuda156
Copy link
Contributor

@barracuda156 barracuda156 commented Jul 21, 2023

Description

Well :)
Turned out, there is no point to fix an old libsdl2-snowleopard port with X11 backend, the current version builds fine with the same patches. Essentially, those amount to reverting @autoreleasepool clangisms.

@mascguy @kencu

UPD. I have opened an issue with upstream re X11 backend and joystick module: libsdl-org/SDL#8021

Type(s)
  • bugfix
  • enhancement
  • security fix
Tested on

macOS 10.6
Xcode 3.2

Verification

Have you

  • followed our Commit Message Guidelines?
  • squashed and minimized your commits?
  • checked that there aren't other open pull requests for the same change?
  • referenced existing tickets on Trac with full URL?
  • checked your Portfile with port lint --nitpick?
  • tried existing tests with sudo port test?
  • tried a full install with sudo port -vst install?
  • tested basic functionality of all binary files?
  • checked that the Portfile's most important variants haven't been broken?

@macportsbot
Copy link

Notifying maintainers:
@jmroot for port libsdl2.

@kencu
Copy link
Contributor

kencu commented Jul 21, 2023

And does anything work when built against this?

@barracuda156
Copy link
Contributor Author

@kencu Any specific test-case to try out what matters?

@kencu
Copy link
Contributor

kencu commented Jul 21, 2023

just pick any 10 random ports that use libsdl2 and have at it. There are many to choose from, but grab a few games, an emulator, etc.

exercise video and sound, see what happens. Throw up a few screen grabs here.

we all hope it works for you, but there is no point pushing something broken.

@barracuda156
Copy link
Contributor Author

@kencu Well, out of random ports a large chunk is explicitly broken either across the board or at least on old Intel, some require Qt5 and Java, other require fixing its dependencies. That is why I asked; a decisive test will be not that something random – of unknown status – fails, but verifying two specific issues:

  1. If at least a few ports known to work fine with SDL2 on 10.5–10.6 Intel fail on PPC with X11 backend, that will suggest it is broken. Obviously, those should not depend on something else broken for PPC – I am not fixing Qt5 here.
  2. If port which are known to work with SDL1 on PPC do not work with SDL2 on PPC, it is completely useless and should be discarded.

Since you worked on SDL2 earlier, I expected you to be able to suggest some specific cases to test.

P. S. For now, please do not suggest anything requiring joystick – it is disabled, which I explicitly mentioned and pointed out the reason. Until GCC upstream fixes the bug, I cannot determine whether joystick will work.

@barracuda156
Copy link
Contributor Author

A typical dependency of SDL: https://ports.macports.org/port/openrct2/details
Pretty sure it won’t work on PPC, if it is broken on High Sierra. Not at least without some work.

@barracuda156
Copy link
Contributor Author

P. S. It could be possible though to build a generic module for joystick bypassing broken objective C.

@barracuda156
Copy link
Contributor Author

barracuda156 commented Jul 22, 2023

@kencu Responding to a removed comment: I have obviously tried some games and emulators yesterday, but they turned out to require joystick module. That is, they build, but complain about joystick on start.

Since no one is interested to save my time by referring to cases known to work on 10.6 Intel, I will eventually find some via random search – which either meaningfully work or meaningfully fail (i.e. due to SDL and not unrelated issues).

@mascguy
Copy link
Member

mascguy commented Jul 22, 2023

@kencu Responding to a removed comment: I have obviously tried some games and emulators yesterday, but they turned out to require joystick module. That is, they build, but complain about joystick on start.

Since no one is interested to save my time by referring to cases known to work on 10.6 Intel, I will eventually find some via random search – which either meaningfully work or meaningfully fail (i.e. due to SDL and not unrelated issues).

I'm aware of at least two, that should be working for 10.6 Intel: supertux and supertuxkart. (Not sure about the joystick requirement though.)

Have you tried either of those?

@barracuda156
Copy link
Contributor Author

@mascguy Thank you, this is helpful, I will check these once my mlton rebuild is complete.

@barracuda156
Copy link
Contributor Author

UPD. All libsdl2_* ports build fine with modern GCC with no patches at all. Changing blacklist from *gcc* to *gcc-4.*.

@kencu
Copy link
Contributor

kencu commented Jul 22, 2023

Here, I’ll restore my comment, now that you’ve responded to it anyway:

“Yikes -- so far you can't find even one game using libsdl2 that will build on PPC to test this? How do you know if it works at all then?”

Just pick any port that uses libsdl2 that ports.macports.org says works on 10.6.

I have no idea which ones don’t use the joystick module, nor does anyone else.

@kencu
Copy link
Contributor

kencu commented Jul 22, 2023

I see libsdl2 does come with an entire test suite… that would perhaps be a place to explore…

https://github.com/libsdl-org/SDL/blob/SDL2/CMakeLists.txt

@barracuda156
Copy link
Contributor Author

@kencu In your old libsdl2 port for Leopard you replaced joystick with an earlier implementation (2.0.1). Do you think this might work here? Unless upstream suggest a better way, of course.

@barracuda156
Copy link
Contributor Author

I see libsdl2 does come with an entire test suite… that would perhaps be a place to explore…

https://github.com/libsdl-org/SDL/blob/SDL2/CMakeLists.txt

@kencu Good suggestion. Let me switch the port to CMake, I already did that once for 2.0.22 earlier. (I won’t do that in PR, unless approved by others, but nothing prevents from doing it locally.)

@barracuda156
Copy link
Contributor Author

@mascguy supertuxkart took forever to build, but linking fails (from what it looks, unrelated to SDL):

[100%] Linking CXX executable bin/supertuxkart.app/Contents/MacOS/supertuxkart
/opt/local/bin/cmake -E cmake_link_script CMakeFiles/supertuxkart.dir/link.txt --verbose=ON
/opt/local/bin/g++-mp-12 -pipe -Os -DNDEBUG -I/opt/local/include -DGL_DO_NOT_WARN_IF_MULTI_GL_VERSION_HEADERS_INCLUDED -D_GLIBCXX_USE_CXX11_ABI=0 -std=gnu++0x -Wall -Wno-unused-function -arch ppc -mmacosx-version-min=10.6 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names CMakeFiles/supertuxkart.dir/src/achievements/achievement.cpp.o CMakeFiles/supertuxkart.dir/src/achievements/achievement_info.cpp.o CMakeFiles/supertuxkart.dir/src/achievements/achievements_manager.cpp.o CMakeFiles/supertuxkart.dir/src/achievements/achievements_status.cpp.o CMakeFiles/supertuxkart.dir/src/achievements/web_achievements_status.cpp.o CMakeFiles/supertuxkart.dir/src/addons/addon.cpp.o CMakeFiles/supertuxkart.dir/src/addons/addons_manager.cpp.o CMakeFiles/supertuxkart.dir/src/addons/news_manager.cpp.o CMakeFiles/supertuxkart.dir/src/addons/zip.cpp.o CMakeFiles/supertuxkart.dir/src/animations/animation_base.cpp.o CMakeFiles/supertuxkart.dir/src/animations/ipo.cpp.o CMakeFiles/supertuxkart.dir/src/animations/three_d_animation.cpp.o CMakeFiles/supertuxkart.dir/src/audio/music_information.cpp.o CMakeFiles/supertuxkart.dir/src/audio/music_manager.cpp.o CMakeFiles/supertuxkart.dir/src/audio/music_ogg.cpp.o CMakeFiles/supertuxkart.dir/src/audio/sfx_buffer.cpp.o CMakeFiles/supertuxkart.dir/src/audio/sfx_manager.cpp.o CMakeFiles/supertuxkart.dir/src/audio/sfx_openal.cpp.o CMakeFiles/supertuxkart.dir/src/challenges/challenge_data.cpp.o CMakeFiles/supertuxkart.dir/src/challenges/challenge_status.cpp.o CMakeFiles/supertuxkart.dir/src/challenges/story_mode_status.cpp.o CMakeFiles/supertuxkart.dir/src/challenges/story_mode_timer.cpp.o CMakeFiles/supertuxkart.dir/src/challenges/unlock_manager.cpp.o CMakeFiles/supertuxkart.dir/src/config/hardware_stats.cpp.o CMakeFiles/supertuxkart.dir/src/config/player_manager.cpp.o CMakeFiles/supertuxkart.dir/src/config/player_profile.cpp.o CMakeFiles/supertuxkart.dir/src/config/saved_grand_prix.cpp.o CMakeFiles/supertuxkart.dir/src/config/stk_config.cpp.o CMakeFiles/supertuxkart.dir/src/config/user_config.cpp.o CMakeFiles/supertuxkart.dir/src/font/bold_face.cpp.o CMakeFiles/supertuxkart.dir/src/font/digit_face.cpp.o CMakeFiles/supertuxkart.dir/src/font/font_drawer.cpp.o CMakeFiles/supertuxkart.dir/src/font/font_manager.cpp.o CMakeFiles/supertuxkart.dir/src/font/font_with_face.cpp.o CMakeFiles/supertuxkart.dir/src/font/regular_face.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/2dutils.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/CBatchingMesh.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/abstract_renderer.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/b3d_mesh_loader.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/camera.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/camera_debug.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/camera_end.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/camera_fps.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/camera_normal.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/central_settings.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/cpu_particle_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/draw_calls.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/explosion.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/fixed_pipeline_renderer.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/frame_buffer_layer.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/glwrap.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/graphics_restrictions.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/hit_sfx.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/irr_driver.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/light.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/lighting_passes.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/lod_node.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/material.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/material_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/mesh_tools.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/moving_texture.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/particle_emitter.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/particle_kind.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/particle_kind_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/per_camera_node.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/post_processing.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/referee.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/render_target.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/rtts.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shader.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shader_based_renderer.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shader_files_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shaders.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shadow.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shadow_matrices.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/shared_gpu_objects.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/show_curve.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/skid_marks.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/skybox.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/slip_stream.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_base.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_dynamic_draw_call.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_mesh.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_mesh_buffer.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_mesh_node.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_per_object_uniform.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_shader.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_shader_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_texture.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp/sp_texture_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sp_mesh_loader.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/spherical_harmonics.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/stars.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/stk_particle.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/stk_tex_manager.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/stk_text_billboard.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/sun.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/text_billboard_drawer.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/texture_shader.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/weather.cpp.o CMakeFiles/supertuxkart.dir/src/graphics/wind.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/CGUISpriteBank.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/abstract_state_manager.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/abstract_top_level_container.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/dialog_queue.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/emoji_keyboard.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/engine.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/event_handler.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/layout_manager.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/message_queue.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/modaldialog.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/scalable_font.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/screen.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/screen_keyboard.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/screen_loader.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/skin.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/CGUIEditBox.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/CGUISTKListBox.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/bubble_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/button_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/check_box_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/dynamic_ribbon_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/icon_button_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/kart_stats_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/label_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/list_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/model_view_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/player_kart_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/player_name_spinner.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/progress_bar_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/rating_bar_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/ribbon_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/skill_level_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/spinner_widget.cpp.o CMakeFiles/supertuxkart.dir/src/guiengine/widgets/text_box_widget.cpp.o CMakeFiles/supertuxkart.dir/src/input/binding.cpp.o CMakeFiles/supertuxkart.dir/src/input/device_config.cpp.o CMakeFiles/supertuxkart.dir/src/input/device_manager.cpp.o CMakeFiles/supertuxkart.dir/src/input/gamepad_config.cpp.o CMakeFiles/supertuxkart.dir/src/input/gamepad_device.cpp.o CMakeFiles/supertuxkart.dir/src/input/input_device.cpp.o CMakeFiles/supertuxkart.dir/src/input/input_manager.cpp.o CMakeFiles/supertuxkart.dir/src/input/keyboard_config.cpp.o CMakeFiles/supertuxkart.dir/src/input/keyboard_device.cpp.o CMakeFiles/supertuxkart.dir/src/input/multitouch_device.cpp.o CMakeFiles/supertuxkart.dir/src/input/sdl_controller.cpp.o CMakeFiles/supertuxkart.dir/src/input/wiimote.cpp.o CMakeFiles/supertuxkart.dir/src/input/wiimote_manager.cpp.o CMakeFiles/supertuxkart.dir/src/io/assets_android.cpp.o CMakeFiles/supertuxkart.dir/src/io/file_manager.cpp.o CMakeFiles/supertuxkart.dir/src/io/rich_presence.cpp.o CMakeFiles/supertuxkart.dir/src/io/utf_writer.cpp.o CMakeFiles/supertuxkart.dir/src/io/xml_node.cpp.o CMakeFiles/supertuxkart.dir/src/items/attachment.cpp.o CMakeFiles/supertuxkart.dir/src/items/attachment_manager.cpp.o CMakeFiles/supertuxkart.dir/src/items/bowling.cpp.o CMakeFiles/supertuxkart.dir/src/items/cake.cpp.o CMakeFiles/supertuxkart.dir/src/items/flyable.cpp.o CMakeFiles/supertuxkart.dir/src/items/item.cpp.o CMakeFiles/supertuxkart.dir/src/items/item_event_info.cpp.o CMakeFiles/supertuxkart.dir/src/items/item_manager.cpp.o CMakeFiles/supertuxkart.dir/src/items/network_item_manager.cpp.o CMakeFiles/supertuxkart.dir/src/items/plunger.cpp.o CMakeFiles/supertuxkart.dir/src/items/powerup.cpp.o CMakeFiles/supertuxkart.dir/src/items/powerup_manager.cpp.o CMakeFiles/supertuxkart.dir/src/items/projectile_manager.cpp.o CMakeFiles/supertuxkart.dir/src/items/rubber_ball.cpp.o CMakeFiles/supertuxkart.dir/src/items/rubber_band.cpp.o CMakeFiles/supertuxkart.dir/src/items/swatter.cpp.o CMakeFiles/supertuxkart.dir/src/karts/abstract_characteristic.cpp.o CMakeFiles/supertuxkart.dir/src/karts/abstract_kart.cpp.o CMakeFiles/supertuxkart.dir/src/karts/abstract_kart_animation.cpp.o CMakeFiles/supertuxkart.dir/src/karts/cached_characteristic.cpp.o CMakeFiles/supertuxkart.dir/src/karts/cannon_animation.cpp.o CMakeFiles/supertuxkart.dir/src/karts/combined_characteristic.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/ai_base_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/ai_base_lap_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/ai_properties.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/arena_ai.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/battle_ai.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/end_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/ghost_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/kart_control.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/local_player_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/network_ai_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/player_controller.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/skidding_ai.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/soccer_ai.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/spare_tire_ai.cpp.o CMakeFiles/supertuxkart.dir/src/karts/controller/test_ai.cpp.o CMakeFiles/supertuxkart.dir/src/karts/explosion_animation.cpp.o CMakeFiles/supertuxkart.dir/src/karts/ghost_kart.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart_gfx.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart_model.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart_properties.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart_properties_manager.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart_rewinder.cpp.o CMakeFiles/supertuxkart.dir/src/karts/kart_with_stats.cpp.o CMakeFiles/supertuxkart.dir/src/karts/max_speed.cpp.o CMakeFiles/supertuxkart.dir/src/karts/moveable.cpp.o CMakeFiles/supertuxkart.dir/src/karts/official_karts.cpp.o CMakeFiles/supertuxkart.dir/src/karts/rescue_animation.cpp.o CMakeFiles/supertuxkart.dir/src/karts/skidding.cpp.o CMakeFiles/supertuxkart.dir/src/karts/xml_characteristic.cpp.o CMakeFiles/supertuxkart.dir/src/main.cpp.o CMakeFiles/supertuxkart.dir/src/main_android.cpp.o CMakeFiles/supertuxkart.dir/src/main_loop.cpp.o CMakeFiles/supertuxkart.dir/src/modes/capture_the_flag.cpp.o CMakeFiles/supertuxkart.dir/src/modes/ctf_flag.cpp.o CMakeFiles/supertuxkart.dir/src/modes/cutscene_world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/demo_world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/easter_egg_hunt.cpp.o CMakeFiles/supertuxkart.dir/src/modes/follow_the_leader.cpp.o CMakeFiles/supertuxkart.dir/src/modes/free_for_all.cpp.o CMakeFiles/supertuxkart.dir/src/modes/lap_trial.cpp.o CMakeFiles/supertuxkart.dir/src/modes/linear_world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/overworld.cpp.o CMakeFiles/supertuxkart.dir/src/modes/profile_world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/soccer_world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/standard_race.cpp.o CMakeFiles/supertuxkart.dir/src/modes/three_strikes_battle.cpp.o CMakeFiles/supertuxkart.dir/src/modes/tutorial_world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/world.cpp.o CMakeFiles/supertuxkart.dir/src/modes/world_status.cpp.o CMakeFiles/supertuxkart.dir/src/modes/world_with_rank.cpp.o CMakeFiles/supertuxkart.dir/src/network/child_loop.cpp.o CMakeFiles/supertuxkart.dir/src/network/crypto_mbedtls.cpp.o CMakeFiles/supertuxkart.dir/src/network/crypto_openssl.cpp.o CMakeFiles/supertuxkart.dir/src/network/event.cpp.o CMakeFiles/supertuxkart.dir/src/network/event_rewinder.cpp.o CMakeFiles/supertuxkart.dir/src/network/game_setup.cpp.o CMakeFiles/supertuxkart.dir/src/network/kart_data.cpp.o CMakeFiles/supertuxkart.dir/src/network/network.cpp.o CMakeFiles/supertuxkart.dir/src/network/network_config.cpp.o CMakeFiles/supertuxkart.dir/src/network/network_console.cpp.o CMakeFiles/supertuxkart.dir/src/network/network_player_profile.cpp.o CMakeFiles/supertuxkart.dir/src/network/network_string.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocol.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocol_manager.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/client_lobby.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/connect_to_peer.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/connect_to_server.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/game_events_protocol.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/game_protocol.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/lobby_protocol.cpp.o CMakeFiles/supertuxkart.dir/src/network/protocols/server_lobby.cpp.o CMakeFiles/supertuxkart.dir/src/network/race_event_manager.cpp.o CMakeFiles/supertuxkart.dir/src/network/remote_kart_info.cpp.o CMakeFiles/supertuxkart.dir/src/network/rewind_info.cpp.o CMakeFiles/supertuxkart.dir/src/network/rewind_manager.cpp.o CMakeFiles/supertuxkart.dir/src/network/rewind_queue.cpp.o CMakeFiles/supertuxkart.dir/src/network/rewinder.cpp.o CMakeFiles/supertuxkart.dir/src/network/server.cpp.o CMakeFiles/supertuxkart.dir/src/network/server_config.cpp.o CMakeFiles/supertuxkart.dir/src/network/servers_manager.cpp.o CMakeFiles/supertuxkart.dir/src/network/smooth_network_body.cpp.o CMakeFiles/supertuxkart.dir/src/network/socket_address.cpp.o CMakeFiles/supertuxkart.dir/src/network/stk_host.cpp.o CMakeFiles/supertuxkart.dir/src/network/stk_ipv6.cpp.o CMakeFiles/supertuxkart.dir/src/network/stk_peer.cpp.o CMakeFiles/supertuxkart.dir/src/online/http_request.cpp.o CMakeFiles/supertuxkart.dir/src/online/link_helper.cpp.o CMakeFiles/supertuxkart.dir/src/online/online_player_profile.cpp.o CMakeFiles/supertuxkart.dir/src/online/online_profile.cpp.o CMakeFiles/supertuxkart.dir/src/online/profile_manager.cpp.o CMakeFiles/supertuxkart.dir/src/online/request.cpp.o CMakeFiles/supertuxkart.dir/src/online/request_manager.cpp.o CMakeFiles/supertuxkart.dir/src/online/xml_request.cpp.o CMakeFiles/supertuxkart.dir/src/physics/btKart.cpp.o CMakeFiles/supertuxkart.dir/src/physics/btKartRaycast.cpp.o CMakeFiles/supertuxkart.dir/src/physics/irr_debug_drawer.cpp.o CMakeFiles/supertuxkart.dir/src/physics/physical_object.cpp.o CMakeFiles/supertuxkart.dir/src/physics/physics.cpp.o CMakeFiles/supertuxkart.dir/src/physics/triangle_mesh.cpp.o CMakeFiles/supertuxkart.dir/src/race/grand_prix_data.cpp.o CMakeFiles/supertuxkart.dir/src/race/grand_prix_manager.cpp.o CMakeFiles/supertuxkart.dir/src/race/highscore_manager.cpp.o CMakeFiles/supertuxkart.dir/src/race/highscores.cpp.o CMakeFiles/supertuxkart.dir/src/race/history.cpp.o CMakeFiles/supertuxkart.dir/src/race/race_manager.cpp.o CMakeFiles/supertuxkart.dir/src/replay/replay_base.cpp.o CMakeFiles/supertuxkart.dir/src/replay/replay_play.cpp.o CMakeFiles/supertuxkart.dir/src/replay/replay_recorder.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/property_animator.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_audio.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_challenges.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_engine.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_gui.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_kart.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_physics.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_track.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/script_utils.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/scriptarray.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/scriptstdstring.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/scriptstdstring_utils.cpp.o CMakeFiles/supertuxkart.dir/src/scriptengine/scriptvec3.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/addons_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/arenas_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/credits.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/cutscene_general.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/cutscene_gui.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/achievement_progress_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/add_device_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/addons_loading.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/addons_pack.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/change_password_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/confirm_resolution_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/custom_camera_settings.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/custom_video_settings.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/debug_slider.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/download_assets.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/enter_address_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/general_text_field_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/ghost_replay_info_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/high_score_info_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/init_android_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/kart_color_slider_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/message_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/multitouch_settings_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/network_player_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/player_rankings_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/press_a_key_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/race_paused_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/recovery_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/registration_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/select_challenge.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/server_configuration_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/server_info_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/splitscreen_player_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/tutorial_message_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/user_info_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/dialogs/vote_dialog.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/easter_egg_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/edit_gp_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/edit_track_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/feature_unlocked.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/ghost_replay_selection.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/gp_info_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/grand_prix_cutscene.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/grand_prix_editor_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/grand_prix_lose.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/grand_prix_win.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_1.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_2.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_3.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_4.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_5.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_6.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/help_screen_7.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/high_score_selection.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/kart_selection.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/main_menu_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/offline_kart_selection.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/create_server_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/network_kart_selection.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/networking_lobby.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_lan.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_profile_achievements.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_profile_base.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_profile_friends.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_profile_servers.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_profile_settings.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/online_user_search.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/register_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/server_selection.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/online/tracks_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_audio.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_device.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_general.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_input.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_language.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_ui.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/options_screen_video.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/options/user_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/race_gui.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/race_gui_base.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/race_gui_multitouch.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/race_gui_overworld.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/race_result_gui.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/race_setup_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/soccer_setup_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/state_manager.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/track_info_screen.cpp.o CMakeFiles/supertuxkart.dir/src/states_screens/tracks_and_gp_screen.cpp.o CMakeFiles/supertuxkart.dir/src/tips/tips_manager.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/arena_graph.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/arena_node.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/bezier_curve.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_cannon.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_cylinder.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_goal.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_lap.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_line.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_manager.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_sphere.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_structure.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/check_trigger.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/drive_graph.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/drive_node.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/drive_node_2d.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/drive_node_3d.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/graph.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/model_definition_loader.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/quad.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/terrain_info.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/track.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/track_manager.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/track_object.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/track_object_manager.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/track_object_presentation.cpp.o CMakeFiles/supertuxkart.dir/src/tracks/track_sector.cpp.o CMakeFiles/supertuxkart.dir/src/utils/command_line.cpp.o CMakeFiles/supertuxkart.dir/src/utils/constants.cpp.o CMakeFiles/supertuxkart.dir/src/utils/crash_reporting.cpp.o CMakeFiles/supertuxkart.dir/src/utils/debug.cpp.o CMakeFiles/supertuxkart.dir/src/utils/extract_mobile_assets.cpp.o CMakeFiles/supertuxkart.dir/src/utils/file_utils.cpp.o CMakeFiles/supertuxkart.dir/src/utils/helpers.cpp.o CMakeFiles/supertuxkart.dir/src/utils/leak_check.cpp.o CMakeFiles/supertuxkart.dir/src/utils/log.cpp.o CMakeFiles/supertuxkart.dir/src/utils/mini_glm.cpp.o CMakeFiles/supertuxkart.dir/src/utils/profiler.cpp.o CMakeFiles/supertuxkart.dir/src/utils/progress_bar_android.cpp.o CMakeFiles/supertuxkart.dir/src/utils/random_generator.cpp.o CMakeFiles/supertuxkart.dir/src/utils/stk_process.cpp.o CMakeFiles/supertuxkart.dir/src/utils/string_utils.cpp.o CMakeFiles/supertuxkart.dir/src/utils/time.cpp.o CMakeFiles/supertuxkart.dir/src/utils/translation.cpp.o CMakeFiles/supertuxkart.dir/src/utils/vec3.cpp.o -o bin/supertuxkart.app/Contents/MacOS/supertuxkart  -Wl,-rpath,/opt/local/lib //usr/lib/libIOKit.dylib -Wl,-framework,Cocoa -latomic lib/bullet/libbulletdynamics.a lib/bullet/libbulletcollision.a lib/bullet/libbulletmath.a lib/enet/libenet.a lib/irrlicht/libstkirrlicht.a lib/angelscript/projects/cmake/libangelscript.a /opt/local/lib/libcurl.dylib /opt/local/lib/libmcpp.dylib lib/mojoal/libmojoal.a /opt/local/lib/libsamplerate.dylib //usr/lib/libresolv.dylib /opt/local/lib/libsqlite3.dylib /opt/local/lib/libmbedcrypto.dylib /opt/local/lib/libsquish.dylib /opt/local/lib/libjpeg.dylib /opt/local/lib/libogg.dylib /opt/local/lib/libvorbis.dylib /opt/local/lib/libvorbisfile.dylib /opt/local/lib/libvorbisenc.dylib /opt/local/lib/libfreetype.dylib /opt/local/lib/libharfbuzz.dylib lib/sheenbidi/libsheenbidi.a lib/graphics_utils/libgraphics_utils.a lib/graphics_engine/libgraphics_engine.a /opt/local/lib/libSDL2.dylib lib/tinygettext/libtinygettext.a lib/shaderc/libshaderc/libshaderc.a /opt/local/lib/libz.dylib /opt/local/lib/libpng.dylib /opt/local/lib/libjpeg.dylib /opt/local/lib/libsquish.dylib lib/shaderc/libshaderc_util/libshaderc_util.a lib/shaderc/third_party/glslang/glslang/libglslang.a lib/shaderc/third_party/glslang/hlsl/libHLSL.a lib/shaderc/third_party/glslang/SPIRV/libSPIRV.a lib/shaderc/third_party/glslang/glslang/libMachineIndependent.a lib/shaderc/third_party/glslang/glslang/OSDependent/Unix/libOSDependent.a lib/shaderc/third_party/glslang/OGLCompilersDLL/libOGLCompiler.a lib/shaderc/third_party/glslang/glslang/libGenericCodeGen.a lib/shaderc/third_party/spirv-tools/source/opt/libSPIRV-Tools-opt.a lib/shaderc/third_party/spirv-tools/source/libSPIRV-Tools.a -lemutls_w 
Undefined symbols:
  "__Z24CallSystemFunctionNativeP10asCContextP17asCScriptFunctionPvPmS3_RyS3_", referenced from:
      __Z18CallSystemFunctioniP10asCContext in libangelscript.a(as_callfunc.cpp.o)
ld: symbol(s) not found

@barracuda156
Copy link
Contributor Author

@mascguy Looks like we do need joystick for games (and possibly emulators). supertux also complains, like did neverball yesterday:

[FATAL] /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_games_supertux/supertux/work/SuperTux-v0.6.3-Source/src/supertux/main.cpp:672 Unexpected exception: Couldn't initialize SDL: SDL not built with joystick support

@barracuda156 barracuda156 marked this pull request as draft July 22, 2023 19:44
@barracuda156
Copy link
Contributor Author

UPD. I need to fix headers, they hardcode wrong paths to X11 libs, so Macports settings are ignored.

@barracuda156
Copy link
Contributor Author

Apparently some trickery needed to run a complete test suite, by default it runs only these:

[615/616] /opt/local/bin/gcc-mp-12 -DHAVE_OPENGL -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/build/include -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/build/include/SDL2 -I/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/build/include-config-macports/SDL2 -pipe -Os -DNDEBUG -I/opt/local/include -idirafter "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.28.1/src/video/khronos"  -Wall -fno-strict-aliasing -Wdeclaration-after-statement -fvisibility=hidden -Wshadow -Wno-unused-local-typedefs -fdiagnostics-color=always -maltivec -I/opt/local/include/X11 -D_THREAD_SAFE  -DSDL_BUILD_MAJOR_VERSION=2 -DSDL_BUILD_MINOR_VERSION=28 -DSDL_BUILD_MICRO_VERSION=1 -arch ppc -mmacosx-version-min=10.6 -MD -MT test/CMakeFiles/testvulkan.dir/testvulkan.c.o -MF test/CMakeFiles/testvulkan.dir/testvulkan.c.o.d -o test/CMakeFiles/testvulkan.dir/testvulkan.c.o -c /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.28.1/test/testvulkan.c
[616/616] : && /opt/local/bin/gcc-mp-12 -pipe -Os -DNDEBUG -I/opt/local/include -idirafter "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/SDL2-2.28.1/src/video/khronos"  -Wall -fno-strict-aliasing -Wdeclaration-after-statement -fvisibility=hidden -Wshadow -Wno-unused-local-typedefs -fdiagnostics-color=always -maltivec -I/opt/local/include/X11 -D_THREAD_SAFE  -DSDL_BUILD_MAJOR_VERSION=2 -DSDL_BUILD_MINOR_VERSION=28 -DSDL_BUILD_MICRO_VERSION=1 -arch ppc -mmacosx-version-min=10.6 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names test/CMakeFiles/testvulkan.dir/testvulkan.c.o -o test/testvulkan  -Wl,-rpath,/opt/local/lib  libSDL2_test.a  libSDL2.a  -lm  /opt/local/lib/libX11.dylib  /opt/local/lib/libXext.dylib  /opt/local/lib/libXcursor.dylib  /opt/local/lib/libXi.dylib  /opt/local/lib/libXfixes.dylib  /opt/local/lib/libXrandr.dylib  /opt/local/lib/libXss.dylib  -Wl,-framework,CoreVideo  -Wl,-framework,Cocoa  -Wl,-framework,IOKit  -Wl,-framework,Carbon  -Wl,-framework,CoreAudio  -Wl,-framework,AudioToolbox  -Wl,-framework,Foundation && :
--->  Testing libsdl2
Executing:  cd "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/build" && ninja test 
[0/1] Running tests...
Test project /opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_devel_libsdl2/libsdl2/work/build
      Start  1: testatomic
 1/15 Test  #1: testatomic .......................***Timeout  10.04 sec
      Start  2: testerror
 2/15 Test  #2: testerror ........................   Passed    5.13 sec
      Start  3: testthread
 3/15 Test  #3: testthread .......................   Passed   10.12 sec
      Start  4: testlocale
 4/15 Test  #4: testlocale .......................   Passed    0.11 sec
      Start  5: testplatform
 5/15 Test  #5: testplatform .....................   Passed    0.11 sec
      Start  6: testpower
 6/15 Test  #6: testpower ........................   Passed    0.11 sec
      Start  7: testfilesystem
 7/15 Test  #7: testfilesystem ...................   Passed    0.12 sec
      Start  8: testtimer
 8/15 Test  #8: testtimer ........................   Passed   27.12 sec
      Start  9: testver
 9/15 Test  #9: testver ..........................   Passed    0.11 sec
      Start 10: testqsort
10/15 Test #10: testqsort ........................   Passed    0.16 sec
      Start 11: testaudioinfo
11/15 Test #11: testaudioinfo ....................   Passed    0.11 sec
      Start 12: testsurround
12/15 Test #12: testsurround .....................   Passed    0.28 sec
      Start 13: testkeys
13/15 Test #13: testkeys .........................   Passed    0.12 sec
      Start 14: testbounds
14/15 Test #14: testbounds .......................   Passed    0.12 sec
      Start 15: testdisplayinfo
15/15 Test #15: testdisplayinfo ..................   Passed    0.12 sec

93% tests passed, 1 tests failed out of 15

Total Test time (real) =  53.90 sec

The following tests FAILED:
	  1 - testatomic (Timeout)
Errors while running CTest

@barracuda156
Copy link
Contributor Author

barracuda156 commented Jul 23, 2023

@kencu @mascguy I have fixed X11 loading, but rendering needs further fix-up:

ocp

Notice it asks for LIBGL_ALLOW_SOFTWARE, and I guess that does not work correctly.

P. S. Pure X11 loads and renders fine, so it is not the issue of ocp itself.

@barracuda156
Copy link
Contributor Author

barracuda156 commented Jul 23, 2023

@kencu @mascguy Possibly, Mesa’s libGL is broken, and we need to link against native libGL, and then make sure Mesa components are not found, otherwise conflict arises and we get Bus error on launch.

I will try that way; took quite a while to fix X11 with CMake build system – it is set up to sabotage it LOL. Also, sources hardcode wrong paths to X11, leading to nowhere, and that also breaks loading.

@barracuda156
Copy link
Contributor Author

@mascguy @kencu Looks like it is indeed Mesa not working correctly (or possibly I had to disable its OpenGLES). Anyway, linking against old native libGL apparently fixed the problem. ocp with SDL2 back-end now loads correctly:
ocp_sdl2

@barracuda156
Copy link
Contributor Author

@kencu By the way, any ideas what may cause that weirdness with Mesa’s libGL (or whatever it is, but apparently belonging to Mesa)?

@barracuda156
Copy link
Contributor Author

@mascguy @kencu @jmroot What are your opinions on switching the port to CMake build system? Since I wanted to run tests, I switched to CMake locally (which was quite painful, since CMake code is apparently newer, and more things are broken for older macOS). So anyway, now it works fine, but I would prefer to avoid doing related fixes twice – for both build systems. Personally I am more comfortable with CMake, but besides that there are likely advantages:

  1. For newer macOS: I guess, SDL3 switches to CMake, or if not yet, it will happen eventually.
  2. For old macOS: there is a WIP branch for 10.4 PPC, which may be helpful for supporting older systems, and it only uses CMake system (well, no one wants to do the same work twice, understandably).
  3. Running tests is easy with CMake.
    (Of course, this will be relevant if we decide it is worth the effort in the first place.)

@mascguy
Copy link
Member

mascguy commented Jul 23, 2023

@mascguy @kencu @jmroot What are your opinions on switching the port to CMake build system? Since I wanted to run tests, I switched to CMake locally (which was quite painful, since CMake code is apparently newer, and more things are broken for older macOS). So anyway, now it works fine, but I would prefer to avoid doing related fixes twice – for both build systems. Personally I am more comfortable with CMake, but besides that there are likely advantages:

1. For newer macOS: I guess, SDL3 switches to CMake, or if not yet, it will happen eventually.

2. For old macOS: there is a WIP [branch](https://github.com/Wohlstand/SDL/tree/mac-tiger?rgh-link-date=2023-07-23T13%3A28%3A15Z) for 10.4 PPC, which may be helpful for supporting older systems, and it only uses CMake system (well, no one wants to do the same work twice, understandably).

3. Running tests is easy with CMake.
   (Of course, this will be relevant if we decide it is worth the effort in the first place.)

Well, as you know, this is a decision of the maintainer (Josh). So it's up to him.

As for use of CMake vs. GNU AutoTools, there are times where the latter is necessary. Particularly if a project's AutoTools-based build is more mature than their CMake version. And that appears to potentially be the case here, based on your experience.

Ultimately the CMake build could be enhanced to support all of the legacy cases though. And if you were to submit a PR to upstream with such changes, there's a reasonable chance they'd accept them...

@barracuda156
Copy link
Contributor Author

@mascguy Got it. Well, build system is discussable. If we get meaningful results with X11 backend on PowerPC, I can make sure it works with Autotools after all.

Biggest issue with testing is that dependents were never tested with GCC, forget on PowerPC, and many are broken to some extent. Some, like the_Foundation, turned out to be easily fixable, some other never worked on Big-endian platforms and likely won’t. Several ports which looked of some interest to me, seem to fail for unrelated to SDL reasons – likely alignments on PPC or something alike.

On a positive side, we get a few ports fixed in the process.

@kencu
Copy link
Contributor

kencu commented Jul 23, 2023

@kencu By the way, any ideas what may cause that weirdness with Mesa’s libGL (or whatever it is, but apparently belonging to Mesa)?

libGL from mesa and libGL from Apple are not the same.

Apple donated code to mesa to provide a mesa backend where GLX functions were directly translated to calls into Apple’s graphics drivers. So that is fast and tight…. So that is what you want to use with x11 software and mesa. GLX.

Everything else is routed through a software rendered pathway and is both never tested and orders of magnitude slower.

The world has moved on past GLX now, GLES, Wayland, etc, and as Apple uses Metal, not OpenGL, they are not providing OpenGL updates to mesa anymore for any of that. There is work being done to translate those newer OpenGL calls into Metal calls, but that is for current systems.

@barracuda156
Copy link
Contributor Author

barracuda156 commented Jul 25, 2023

@mascguy @kencu I have built FAudio, the latest version which requires SDL2, utilities launch and menus there work:
faudio
I do not know why fonts are displayed like this, barely readable. (Initially I did not even realize that is actual text and thought symbols display is broken; but not, it is readable, you just need to kill your eyes.)

@barracuda156
Copy link
Contributor Author

@mascguy In fact here autotools are easier: less patching with the same result. I have updated the PR now to the version which has fixed paths.

@barracuda156
Copy link
Contributor Author

We can add up joystick a bit later. This should be mergeable, perhaps.

@barracuda156
Copy link
Contributor Author

Wrong color are caused by Mesa/OpenGL, apparently:

https://bugreports.qt.io/browse/QTBUG-56975

ValyriaTear/ValyriaTear#655

@barracuda156
Copy link
Contributor Author

barracuda156 commented Aug 7, 2023

@evanmiller Would you be interested to take a look? This should work eventually, but some fix-up is needed still.

@Jazzzny
Copy link

Jazzzny commented Oct 28, 2023

These changes also allow 10.5 Intel to use SDL2 with the proper modifications to the portfile, though I was not able to build with OpenGL.

@barracuda156
Copy link
Contributor Author

These changes also allow 10.5 Intel to use SDL2 with the proper modifications to the portfile, though I was not able to build with OpenGL.

@Jazzzny Oh, could you please test it then, does it work correctly there?

@Jazzzny
Copy link

Jazzzny commented Oct 28, 2023

These changes also allow 10.5 Intel to use SDL2 with the proper modifications to the portfile, though I was not able to build with OpenGL.

@Jazzzny Oh, could you please test it then, does it work correctly there?

I was able to compile and use ffplay from ffmpeg, which heavily relies on SDL2, so I believe it does work correctly 🙂

@barracuda156
Copy link
Contributor Author

@mascguy @kencu I guess, this is useful beyond powerpc (where we have unrelated problems affecting sdl2)?

@barracuda156
Copy link
Contributor Author

@Jazzzny By the way, could you share what changes you made specifically?

@Jazzzny
Copy link

Jazzzny commented Nov 12, 2023

Pretty much just removing the PowerPC gatekeeping.

@barracuda156 barracuda156 deleted the sdl2 branch April 16, 2024 10:35
@barracuda156 barracuda156 restored the sdl2 branch April 16, 2024 10:35
@barracuda156 barracuda156 deleted the sdl2 branch April 16, 2024 10:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
6 participants