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

Reply via email to