On 5/28/23 23:59, Anonymous wrote: > Hello, > > I am completely abandoning Windows and moving over to Linux, so now I > have beginner questions even though I've used IUP for many years now. I > am recompiling/reassembling all my old source code from Windows to run > on Linux and I have a few minor issues: > > 1) ld reports libcdlua53.so has an undefined reference to > 'lua_newuserdata'. How do I fix this? > > 2) I compared the old Windows DLLs to the new Linux SOs, and I see a few > DLLs that appear to not have an equivalent SO: > freetype6.dll > iupmatrixex.dll > iupole.dll > > My guess is that freetype or anything OLE isn't required on Linux, and > I'm hoping that iupmatrixex is incorporated into some other SO, because > it would be very bad if Linux doesn't support matrixex. > > Signed, > Andrew > > ╔═════════════════════╗ > ║ Environment ║ > ╟─────────────────────╢ > ║ IUP v3.30 ║ > ║ IM v3.12 ║ > ║ CD v5.11.1 ║ > ║ Mx Linux v21.3║ > ║ KDE_x64 Wildflower ║ > ╚═════════════════════╝
G'day Andrew, I've been trying to expand the scope of the Tecgraf IM/CD/IUP scientific/technical programs on GNU/Linux, past the "Ubuntu" instructions that was the only support mentioned in the documentation. I've created a project on SourceForge called "lglicua": l - Lua gl - GNU/Linux icu - IM/CD/IUP a - Assistant that strives to ease the pain of installing Lua, LuaRocks, selected Rocks needed by the Assistant, obtaining the latest IM/CD/IUP sources from SourceForge via "svn co" (note that IUP 3.30 was released in August 2020, and the last Subversion revision was in November 2022). So, the Subversion sources are a better set of files to be working with, as many bug fixes have been applied, but have not been packaged up into a recent release. IM and CD also have updates, but are not as active as IUP. ---- My latest release of "lglicua", lglicua-0.1-alpha7.tar.gz, does support MX GNU/Linux 21, 21.1 and 21.2... but not 21.3. I encountered compilation and linking errors similar to the ones you reported. The good new is, I've found and fixed the problem, and intend to release a new version of lglicua, -0.1-alpha8, this week. ---- The main problem is with the file "tecmake.mak" in each of IM/CD/IUP's root directories (the same file, labelled 4.21, is copied into all projects). tecmake.mak tries to separate "newer" systems from "older" ones for various library/other choices, and this is a bit of an art, rather than being a science. Also, the file tries to cover a slightly obscene number of software/hardware platforms, and tries to normalise everything so that coders in subdirectories have a simple and sane environment to work with. GTK2/GTK3 is one problem area, but let's look at another, fontconfig: Here's the 4.21 version, along with my rewritten (4.30) version: -- ifneq ($(findstring Linux26g4, $(TEC_UNAME)), ) LIBS += fontconfig endif ifneq ($(findstring Linux3, $(TEC_UNAME)), ) LIBS += fontconfig endif ifneq ($(findstring Linux4, $(TEC_UNAME)), ) LIBS += fontconfig endif ifneq ($(findstring Linux5, $(TEC_UNAME)), ) LIBS += fontconfig endif ifneq ($(findstring cygw, $(TEC_UNAME)), ) LIBS += fontconfig endif ifneq ($(findstring MacOS, $(TEC_UNAME)), ) LIBS += fontconfig endif -- # Refine fontconfig: Cater for Linux Kernels greater than 5. ifeq (Linux, $(TEC_SYSNAME)) ifneq ($(findstring Linux26g4, $(TEC_UNAME)), ) LIBS += fontconfig else ifneq ($(filter 3 4 5 6 7 8 9, $(TEC_SYSVERSION)), ) LIBS += fontconfig endif else ifneq ($(findstring cygw, $(TEC_UNAME)), ) LIBS += fontconfig else ifneq ($(findstring MacOS, $(TEC_UNAME)), ) LIBS += fontconfig endif -- Another example in tecmake.mak is WebKit: -- ifdef LINK_WEBKIT ifneq ($(findstring Linux5, $(TEC_UNAME)), ) LIBS += webkit2gtk-4.0 gio-2.0 else ifneq ($(findstring Linux4, $(TEC_UNAME)), ) LIBS += webkit2gtk-4.0 gio-2.0 else ifneq ($(findstring Linux3, $(TEC_UNAME)), ) ifdef USE_GTK3 LIBS += webkitgtk-3.0 else LIBS += webkitgtk-1.0 endif else LIBS += webkit-1.0 endif endif endif endif -- ifdef LINK_WEBKIT # By default, library "webkit-1.0" is used by the linker. TEC_WEBKIT_LIBS := webkit-1.0 # For Linux Kernels 4.x and above, override default, and use # "webkit2gtk-4.0 gio-2.0". # For Linux Kernels 3.x, override default, and use either # "webkitgtk-3.0" or "webkitgtk-1.0", based on the USE_GTK3 setting. ifeq (Linux, $(TEC_SYSNAME)) # Provide WebKit for Linux Kernels 4 and later. ifneq ($(filter 4 5 6 7 8 9, $(TEC_SYSVERSION)), ) TEC_WEBKIT_LIBS := webkit2gtk-4.0 gio-2.0 else ifneq ($(findstring Linux3, $(TEC_UNAME)), ) ifdef USE_GTK3 TEC_WEBKIT_LIBS := webkitgtk-3.0 else TEC_WEBKIT_LIBS := webkitgtk-1.0 endif endif endif # Now add the derived librar(ies) to the library list. LIBS += $(TEC_WEBKIT_LIBS) endif -- ======== I hope to release the next version of lglicua, 0.1-alpha8, within the next day or so. When you use the Assistant to perform a build, it stomps on the tecmake.mak provided by the Subversion repository with a copy that contains fixes such as the ones above, and I have verified that it compiles, links and runs under MX Linux 21.3. (Another file, iup/srcweb/config.mak, is also stomped on if an IUP build is attempted, for the same lack-of-Kernel-6 logic.) ======== Hope this helps, sur-behoffski (Brenton Hoff) programmer, Grouse Software _______________________________________________ Iup-users mailing list Iup-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/iup-users