[Slackbuilds-users] DevIL - Does not Compile when nvidia-texture-tools is installed

Konrad J Hambrick kjhambrick at gmail.com
Sun May 22 19:46:37 UTC 2022


All --

I emailed the maintainer on May 12 but have received no reply.

Below is the email I sent.

The Punchline is that the DevIL SBo will not compile on my Slackware64
15.0 + Multilib System when the nvidia-texture-tools SBo is installed.

The simplest fix is to turn off nvidia-texture-tools via a cmake Config
Flag:

# --------------------- cut  here -------------------
# diff -Naur DevIL~01.SlackBuild DevIL.SlackBuild
--- or/DevIL.SlackBuild 2022-04-23 17:41:07.620019227 -0500
+++ DevIL.SlackBuild    2022-05-12 11:19:49.873854478 -0500
@@ -73,6 +73,7 @@
     -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
     -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -std=c++14 -fpermissive" \
     -DCMAKE_INSTALL_PREFIX=/usr \
+    -DIL_USE_DXTC_NVIDIA=NO \
     -DCMAKE_BUILD_TYPE=Release ..
   make
   make install/strip DESTDIR=$PKG
# --------------------- cut  here -------------------

Is this the best place to post such info ?

Thanks everyone !

-- kjh

# ----------------------original email to the maintainer ------------

Yth - Arnaud

I am running Slackware64 15.0 System with Multilib +
NVIDIA-Linux-x86_64-510.68.02.run

I discovered that if nvidia-texture-tools ( aka nvtt ) is installed, that
DevIL will not compile.

I tried with nvidia-texture-tools version 2.1.1 and also with the more
recent version 2.1.2

There are missing Header Files in /usr/include/nvcore/ ( and maybe others )

To reproduce:  build and install nvidia-texture-tools.SlackBuild  and then
try to build DevIL.SlackBuild

I changed the nvidia-texture-tools CMakeLists.txt so that the header files
are installed in /usr/include/{nvtt,nvthread,nvmath,nvimage,nvcore}/
as well as installing nvconfig.h

The DevIL.SlackBuild compile makes it past the missing Headers in src-IL/

However, the compiler finally fails building
src-IL/CMakeFiles/IL.dir/src/il_nvidia.cpp.o because the nvtt headers
differ from what is DevIL expects to find ( output below mu sig )

I found a CMake switch ( -DIL_USE_DXTC_NVIDIA=NO ) that can be turned off
in the DevIL.SlackBuild to avoid nvtt altogether.

Then it builds as expected.

Here is diff -Naur
#-------------------- cut  here --------------
# diff -Naur DevIL~01.SlackBuild DevIL.SlackBuild
--- or/DevIL.SlackBuild 2022-04-23 17:41:07.620019227 -0500
+++ DevIL.SlackBuild    2022-05-12 11:19:49.873854478 -0500
@@ -73,6 +73,7 @@
     -DCMAKE_C_FLAGS:STRING="$SLKCFLAGS" \
     -DCMAKE_CXX_FLAGS:STRING="$SLKCFLAGS -std=c++14 -fpermissive" \
     -DCMAKE_INSTALL_PREFIX=/usr \
+    -DIL_USE_DXTC_NVIDIA=NO \
     -DCMAKE_BUILD_TYPE=Release ..
   make
   make install/strip DESTDIR=$PKG
# --------------------- cut there -------------------

Thanks for all the SlackBuilds !

-- kjh

This is the failure after installing the nvtt header files.

/tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp: In function 'ILubyte*
ilNVidiaCompressDXT(ILubyte*, ILuint, ILuint, ILuint, ILenum, ILuint*)':
/tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:104:28: error: cannot declare
variable 'outputHandler' to be of abstract type 'ilOutputHandlerMem'
  104 |         ilOutputHandlerMem outputHandler(Width, Height, DxtFormat);
      |                            ^~~~~~~~~~~~~
/tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:38:8: note:   because the
following virtual functions are pure within 'ilOutputHandlerMem':
   38 | struct ilOutputHandlerMem : public nvtt::OutputHandler
      |        ^~~~~~~~~~~~~~~~~~
In file included from /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:20:
/usr/include/nvtt/nvtt.h:341:22: note:     'virtual void
nvtt::OutputHandler::endImage()'
  341 |         virtual void endImage() = 0;
      |                      ^~~~~~~~
/tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp: In function 'ILuint
ilNVidiaCompressDXTFile(ILubyte*, ILuint, ILuint, ILuint, ILenum)':
/tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:188:29: error: cannot declare
variable 'outputHandler' to be of abstract type 'ilOutputHandlerFile'
  188 |         ilOutputHandlerFile outputHandler(Width, Height, DxtFormat);
      |                             ^~~~~~~~~~~~~
/tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:148:8: note:   because the
following virtual functions are pure within 'ilOutputHandlerFile':
  148 | struct ilOutputHandlerFile : public nvtt::OutputHandler
      |        ^~~~~~~~~~~~~~~~~~~
In file included from /tmp/SBo/DevIL/DevIL/src-IL/src/il_nvidia.cpp:20:
/usr/include/nvtt/nvtt.h:341:22: note:     'virtual void
nvtt::OutputHandler::endImage()'
  341 |         virtual void endImage() = 0;
      |                      ^~~~~~~~
make[2]: *** [src-IL/CMakeFiles/IL.dir/build.make:678:
src-IL/CMakeFiles/IL.dir/src/il_nvidia.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:134: src-IL/CMakeFiles/IL.dir/all] Error
2
make: *** [Makefile:136: all] Error 2
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.slackbuilds.org/pipermail/slackbuilds-users/attachments/20220522/0e5c6219/attachment.htm>


More information about the SlackBuilds-users mailing list