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
[email protected]
https://lists.sourceforge.net/lists/listinfo/iup-users