ptitSeb / gl4es

GL4ES is a OpenGL 2.1/1.5 to GL ES 2.0/1.1 translation library, with support for Pandora, ODroid, OrangePI, CHIP, Raspberry PI, Android, Emscripten and AmigaOS4.
http://ptitseb.github.io/gl4es/
MIT License
690 stars 158 forks source link

gl-117/emscripten can't find glCallList #296

Closed kallaballa closed 3 years ago

kallaballa commented 3 years ago

I'm very close to my first complete wasm-build of gl-117 with the help of gl4es but linking fails because somehow it can't find "glCallList":

FAILED: src/gl-117.js 
em++  -o src/gl-117.js src/gl-117.js.p/game_Game.cpp.o src/gl-117.js.p/game_GameState.cpp.o src/gl-117.js.p/game_Callbacks.cpp.o src/gl-117.js.p/cockpit_Cockpit.cpp.o src/gl-117.js.p/configuration_ConfigFile.cpp.o src/gl-117.js.p/configuration_Configuration.cpp.o src/gl-117.js.p/configuration_Directory.cpp.o src/gl-117.js.p/configuration_OptionFile.cpp.o src/gl-117.js.p/configuration_OptionFileFactory.cpp.o src/gl-117.js.p/effects_BlackSmoke.cpp.o src/gl-117.js.p/effects_Explosion.cpp.o src/gl-117.js.p/effects_Flash.cpp.o src/gl-117.js.p/effects_Font.cpp.o src/gl-117.js.p/effects_HighClouds.cpp.o src/gl-117.js.p/effects_Smoke.cpp.o src/gl-117.js.p/effects_Star.cpp.o src/gl-117.js.p/filetokenizer_FileTokenizer.cpp.o src/gl-117.js.p/gllandscape_GlLandscape.cpp.o src/gl-117.js.p/landscape_Landscape.cpp.o src/gl-117.js.p/loadbitmap_Bitmap.cpp.o src/gl-117.js.p/loadbitmap_BitmapFactory.cpp.o src/gl-117.js.p/loadbitmap_LoadTga.cpp.o src/gl-117.js.p/loadmodel_BinaryFile3ds.cpp.o src/gl-117.js.p/loadmodel_Load3ds.cpp.o src/gl-117.js.p/loadmodel_LoadObj.cpp.o src/gl-117.js.p/loadmodel_Model3dFactory.cpp.o src/gl-117.js.p/loadmodel_TextFileObj.cpp.o src/gl-117.js.p/loadmodel_Model3dRegistry.cpp.o src/gl-117.js.p/logging_Logging.cpp.o src/gl-117.js.p/menu_Button.cpp.o src/gl-117.js.p/menu_Component.cpp.o src/gl-117.js.p/menu_Container.cpp.o src/gl-117.js.p/menu_EditField.cpp.o src/gl-117.js.p/menu_EditJoystick.cpp.o src/gl-117.js.p/menu_EditKey.cpp.o src/gl-117.js.p/menu_Label.cpp.o src/gl-117.js.p/menu_TextField.cpp.o src/gl-117.js.p/net_Client.cpp.o src/gl-117.js.p/net_Server.cpp.o src/gl-117.js.p/net_net.cpp.o src/gl-117.js.p/opengl_Frustum.cpp.o src/gl-117.js.p/opengl_GlPrimitives.cpp.o src/gl-117.js.p/opengl_VertexArray.cpp.o src/gl-117.js.p/pilot_Pilot.cpp.o src/gl-117.js.p/pilot_PilotList.cpp.o src/gl-117.js.p/pilot_TeamPilot.cpp.o src/gl-117.js.p/sound_SoundSystem.cpp.o src/gl-117.js.p/sound_WaveFile.cpp.o src/gl-117.js.p/mission_MapLoader.cpp.o src/gl-117.js.p/mission_MissionDemo1.cpp.o src/gl-117.js.p/mission_MissionShip1.cpp.o src/gl-117.js.p/mission_MissionAirBattle.cpp.o src/gl-117.js.p/mission_MissionDepot.cpp.o src/gl-117.js.p/mission_MissionShip2.cpp.o src/gl-117.js.p/mission_MissionBase.cpp.o src/gl-117.js.p/mission_MissionDogfight1.cpp.o src/gl-117.js.p/mission_MissionShip3.cpp.o src/gl-117.js.p/mission_MissionCanyon1.cpp.o src/gl-117.js.p/mission_MissionDogfight2.cpp.o src/gl-117.js.p/mission_MissionTank1.cpp.o src/gl-117.js.p/mission_MissionCanyon2.cpp.o src/gl-117.js.p/mission_MissionDogfight3.cpp.o src/gl-117.js.p/mission_MissionTeamBase1.cpp.o src/gl-117.js.p/mission_MissionCanyon3.cpp.o src/gl-117.js.p/mission_MissionFreeFlight1.cpp.o src/gl-117.js.p/mission_MissionTest1.cpp.o src/gl-117.js.p/mission_MissionConvoy2.cpp.o src/gl-117.js.p/mission_MissionGround1.cpp.o src/gl-117.js.p/mission_MissionTest2.cpp.o src/gl-117.js.p/mission_MissionConvoy.cpp.o src/gl-117.js.p/mission_MissionMoonBase1.cpp.o src/gl-117.js.p/mission_MissionTransport.cpp.o src/gl-117.js.p/mission_Mission.cpp.o src/gl-117.js.p/mission_MissionMoonBattle.cpp.o src/gl-117.js.p/mission_MissionTunnel1.cpp.o src/gl-117.js.p/mission_MissionDeathMatch1.cpp.o src/gl-117.js.p/mission_MissionMoonDefense1.cpp.o src/gl-117.js.p/mission_MissionTutorial1.cpp.o src/gl-117.js.p/mission_MissionDeathMatch2.cpp.o src/gl-117.js.p/mission_MissionMoonDogfight1.cpp.o src/gl-117.js.p/mission_MissionTutorial2.cpp.o src/gl-117.js.p/mission_MissionDeathMatch3.cpp.o src/gl-117.js.p/mission_MissionMultiDogfight1.cpp.o src/gl-117.js.p/mission_MissionTutorial3.cpp.o src/gl-117.js.p/mission_MissionDefend1.cpp.o src/gl-117.js.p/mission_MissionScout.cpp.o src/gl-117.js.p/mission_MissionWaves1.cpp.o src/gl-117.js.p/model3d_Color.cpp.o src/gl-117.js.p/model3d_Object3d.cpp.o src/gl-117.js.p/model3d_Space.cpp.o src/gl-117.js.p/model3d_SpherePart.cpp.o src/gl-117.js.p/model3d_Vector2.cpp.o src/gl-117.js.p/model3d_Material.cpp.o src/gl-117.js.p/model3d_Quad.cpp.o src/gl-117.js.p/model3d_SpaceObj.cpp.o src/gl-117.js.p/model3d_Texture.cpp.o src/gl-117.js.p/model3d_Vector3.cpp.o src/gl-117.js.p/model3d_Transformation.cpp.o src/gl-117.js.p/model3d_Model3d.cpp.o src/gl-117.js.p/model3d_Rotation.cpp.o src/gl-117.js.p/model3d_Sphere.cpp.o src/gl-117.js.p/model3d_Triangle.cpp.o src/gl-117.js.p/model3d_Vertex.cpp.o src/gl-117.js.p/aiobject_AiObj.cpp.o src/gl-117.js.p/aiobject_DynamicObj.cpp.o src/gl-117.js.p/aiobject_Fighter.cpp.o src/gl-117.js.p/aiobject_Missile.cpp.o src/gl-117.js.p/aiobject_Ship.cpp.o src/gl-117.js.p/aiobject_StaticAa.cpp.o src/gl-117.js.p/aiobject_StaticPassive.cpp.o src/gl-117.js.p/aiobject_Tank.cpp.o src/gl-117.js.p/aiobject_UnitDescriptor.cpp.o src/gl-117.js.p/aiobject_UnitDescriptorRegistry.cpp.o src/gl-117.js.p/aiobject_DynamicObjPrototype.cpp.o src/gl-117.js.p/aiobject_AiObjPrototype.cpp.o src/gl-117.js.p/aiobject_FighterPrototype.cpp.o src/gl-117.js.p/render_Render.cpp.o src/gl-117.js.p/shader_GlShaders.cpp.o src/gl-117.js.p/util_StringUtil.cpp.o src/gl-117.js.p/util_Math.cpp.o -L/home/elchaschab/build/gl4es/lib/ -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s FULL_ES2=1 -Wl,--start-group -lGL -Wl,--end-group -s INITIAL_MEMORY=419430400 -s TOTAL_STACK=52428800 -s WASM=1 -O3 -g0 --use-preload-plugins --preload-file ../usr -s USE_SDL=2 -s USE_SDL_NET=2 -s USE_SDL_MIXER=2
error: undefined symbol: glCallList (referenced by top-level compiled C/C++ code)
warning: Link with `-s LLD_REPORT_UNDEFINED` to get more information on undefined symbols
warning: To disable errors for undefined symbols use `-s ERROR_ON_UNDEFINED_SYMBOLS=0`
warning: _glCallList may need to be added to EXPORTED_FUNCTIONS if it arrives from a system library
Error: Aborting compilation due to previous errors
em++: error: '/home/elchaschab/emsdk/node/14.15.5_64bit/bin/node /home/elchaschab/emsdk/upstream/emscripten/src/compiler.js /tmp/tmpohbt0r0_.txt' failed (1)
ninja: build stopped: subcommand failed.
make: *** [Makefile:2: all] Error 1

Strange thing is, it is definitely present in gl4es.

ptitSeb commented 3 years ago

Are you sure you are using GL4ES for the GL library? On my emscripten port, I use full path of libGL.a to link, to be sure (look at the Makfile of StuntCarRacer here: https://github.com/ptitSeb/stuntcarremake/blob/master/Makefile for example).

kallaballa commented 3 years ago

to be sure i extracted libGL.a and tried to link all the object files together. same result.

em++  -o src/gl-117.js *.o -s ERROR_ON_UNDEFINED_SYMBOLS=1 -s FULL_ES2=1 -s INITIAL_MEMORY=419430400 -s TOTAL_STACK=52428800 -s WASM=1 -O3 -g0 --use-preload-plugins --preload-file ../usr -s USE_SDL=2 -s USE_SDL_NET=2 -s USE_SDL_MIXER=2

same result.

I'll try the absolute path aswell.

ptitSeb commented 3 years ago

Ok, I have pushed a small change to gl4es that might help that issue. Please update gl4es and try again.

kallaballa commented 3 years ago

Fixed. What a response time! thx!

kallaballa commented 3 years ago

Is there a channel where we could discuss compiling your pandora port of gl-117 to emscripten? i have similar problems. Or should I just open another issue?

ptitSeb commented 3 years ago

I'm present on IRC (pandora & pyra channel) and on Discord (PILab and TwisterOS Amrbian server). Also on Matrix (PILab server or Box86 server from Fosdem).