On 5/29/23 02:22, sur-behoffski wrote:

Wow, sur-behoffski! You went through a lot of work to create that project. Good job!

Looking at all the replies to this, I think I need to apologize to everyone. I should have been more specific in what I was asking for, but I was afraid to because I was afraid of what people would think of me if I told them what I was doing. But I guess I have no choice...

I write assembly so all my programs are written in assembly (GoAsm/GoLink for Windows and NASM/ld/ar for Linux). So go ahead and hate me. Are you finished? Ok, I install nothing because there is no need to install anything on an assembly level. Everything I need is in the DLLs and (hopefully) SOs. So when I say that ld (which is the linker part of GCC) reports libcdlua53.so has an undefined reference to 'lua_newuserdata', I have no idea (yet) why ld would look for data or a function that I'm not using, not even indirectly that I'm aware of. So what is lua_newuserdata? What functions use it? I didn't know which of the lua SOs I need so I included all of them, but deleting the reference to libcdlua creates a different error, and deleting that include leads to another error so I deleted all reference to any lua libraries. Now everything links. But I do have a program I haven't translated to Linux yet that uses the built-in Lua IDE, so I will run that and see what dependencies it says I need, instead of guessing. If the issue occurs again then, I will bring it up again then.

I use IupMatrixEx, so to see it missing worries me. Is it actually missing or is it not supported in Linux? Maybe I shouldn't worry?

I see freetype for Windows, and I'm betting that was to make IUP portable because freetype (or its equivalent) is built-in to Linux and Mac. But I need to be sure in case I do have to "install" something on my own that I didn't have to do in Windows.

Nothing is a show-stopper here, I just need more info.

Signed,
Andrew

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


_______________________________________________
Iup-users mailing list
Iup-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/iup-users

Reply via email to