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