Re: How to compile (Linux, Debian or Ubuntu, x86-64) FOX toolkit (snapshot) with -g and -O2 [RefPerSys]

Basile Starynkevitch <[email protected]>
Newsgroups gmane.comp.lib.fox-toolkit.user
Message-ID <[email protected]>
On 01/04/2022 20:28, Basile Starynkevitch wrote:
>
> On 01/04/2022 20:02, Basile Starynkevitch wrote:
>>
>> On 01/04/2022 18:39, Jeroen van der Zijp wrote:
>>> On Fri, 1 Apr 2022 16:44:37 +0200
>>> Basile Starynkevitch <[email protected]> wrote:
>>>
>>>> On 01/04/2022 14:08, Basile Starynkevitch wrote:
>>>>> Hello all,
>>>>>
>>>>> As you probably know,  on recent Linux distributions the recent GCC
>>>>> <https://gcc.gnu.org/> or Clang <https://clang.llvm.org/> compilers
>>>>> can be invoked with both -O2 and -g (or even -g3)
>>>>>
>>>>> For the *RefPerSys* project (symbolic AI, open source, GPLv3+; see
>>>>> *http://refpersys.org/* <http://refpersys.org/> and source code on
>>>>> https://github.com/RefPerSys/RefPerSys ...) we are considering using
>>>>> FOX toolkit, but we need DWARF debugging information for several
>>>>> important reasons:
>>>>>
>>>>>
>>>>>    * manual debugging with GDB at first.
>>>>>    * generation (at "runtime") of C++ code compiled to some dlopen
>>>>> <https://man7.org/linux/man-pages/man3/dlopen.3.html>-ed plugin.
>>>>>      The generated C++ code would depend upon some rules entered thru
>>>>>      the FOX graphical user interface
>>>>>    * software introspection  and runtime reflection using Ian Lance
>>>>>      Taylor libbacktrace
>>>>> <https://github.com/ianlancetaylor/libbacktrace> combioned with
>>>>>      dladdr <https://man7.org/linux/man-pages/man3/dladdr.3.html>.
>>>>>    * Hopefully, homoiconicity
>>>>> <https://en.wikipedia.org/wiki/Homoiconicity> of the /RefPerSys/
>>>>>      system and rule language
>>>>>
>>>>>
>>>>> I tried several times to configure FOX source tree /fox-1.7.80/ using
>>>>> ./configure --enable-debug CFLAGS='-O2 -g3' CXXFLAGS='-O2 -g3' but 
>>>>> the
>>>>> compilation of FOX did not show any -O flag.
>>>>>
>>>>> This is on Ubuntu 21.10, with g++ being GCC 11.1
>>>>
>>>> It seems (I am not sure) that using make CXXFLAGS='-O2 -g3' in FOX
>>>> toolkit source tree solved the problem.
>>>>
>>>>
>>>> I am unhappy of that ugly way to solve  it.
>>> Try configure --help to see the options.
>>>
>>> For optimized compile:
>>>
>>>     configure --enable-release --enable-native  <other options>
>>>
>>> The --enable-native tells GCC to generate optimal code for the host;
>>> do NOT use this option if compiling code for 3rd parties that may have
>>> different processor than yours. [because GCC will potentially generate
>>> AVX2, FMA3, etc. instructions and these require late-model x86 cpus to
>>> be able to work.
>>>
>>> You can also use --enable-native=<cpu target>
>>>
>>> for instance, --enable-native=ssse4.2
>>>
>>> Would tell GCC its OK to target processors capable of SSE4.2 [you 
>>> can pass
>>> whatever -march argument would be legal].
>>>
>>> Since its a GUI, -O3 will potentially lead to a lot of code-bloat and
>>> may be only marginally faster, due to the fact that most speed will be
>>> limited by drawing things on the screen, and these things are done
>>> in libraries that your compile-options have not much effect on...
>>>
>>> So, optimization in --enable-release is set to O2.
>>
>> Thanks Jeoren van der Zijp.
>>
>>
>> But I absolutely need every library used by RefPerSys (see 
>> http://refpersys.org/ and code on 
>> https://github.com/RefPerSys/RefPerSys commit b13ac8a1c04650) to be 
>> compiled with DWARF debugging information. I could accept 
>> optimization to be only -Og or -O1.
>>
>>  (except perhaps libc and libstdc++)
>>
>> DWARF debugging information is required  by libbacktrace.
>>
>> Basically I want configure --enable-debug --enable-release
>>
>> With fox-1.7.79 it fails:
>>
>> make[2]: Entering directory '/usr/src/X11/fox-1.7.79/lib'
>> /bin/bash ../libtool  --tag=CXX   --mode=compile g++ 
>> -DPACKAGE_NAME=\"fox\" -DPACKAGE_TARNAME=\"fox\" 
>> -DPACKAGE_VERSION=\"1.7.79\" -DPACKAGE_STRING=\"fox\ 1.7.79\" 
>> -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" 
>> -DPACKAGE=\"fox\" -DVERSION=\"1.7.79\" -DSTDC_HEADERS=1 
>> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 
>> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 
>> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 
>> -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -D__EXTENSIONS__=1 
>> -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 
>> -D_TANDEM_SOURCE=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 
>> -DHAVE_DIRENT_H=1 -DHAVE_LIBRT=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 
>> -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_GETPWUID_R=1 
>> -DHAVE_GETGRGID_R=1 -DHAVE_GETPWNAM_R=1 
>> -DHAVE_PTHREAD_SETAFFINITY_NP=1 -DHAVE_PTHREAD_GETNAME_NP=1 
>> -DHAVE_PTHREAD_SETNAME_NP=1 -DHAVE_SCHED_GETCPU=1 
>> -DHAVE_EPOLL_CREATE1=1 -DHAVE_TIMERFD_CREATE=1 -DHAVE_PIPE2=1 
>> -DHAVE_STATVFS=1 -DHAVE_GETRLIMIT=1 -DHAVE_INOTIFY_INIT1=1 
>> -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_EPOLL_H=1 -DHAVE_SYS_TIMERFD_H=1 
>> -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SHM_H=1 -DHAVE_SYS_MMAN_H=1 
>> -DHAVE_SYS_MOUNT_H=1 -DHAVE_SEMAPHORE_H=1 -DHAVE_DLFCN_H=1 
>> -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_INOTIFY_H=1 -DHAVE_SYS_RESOURCE_H=1 
>> -DHAVE_IMMINTRIN_H=1 -DHAVE_PNG_H=1 -DHAVE_TIFF_H=1 -DHAVE_ZLIB_H=1 
>> -DHAVE_BZLIB_H=1 -DHAVE_X11_EXTENSIONS_XSHM_H=1 
>> -DHAVE_X11_EXTENSIONS_SHAPE_H=1 -DHAVE_X11_XCURSOR_XCURSOR_H=1 
>> -DHAVE_X11_EXTENSIONS_XRENDER_H=1 -DHAVE_X11_EXTENSIONS_XRANDR_H=1 
>> -DHAVE_X11_EXTENSIONS_XFIXES_H=1 -DHAVE_X11_EXTENSIONS_XINPUT2_H=1 
>> -I. -I../include -I../include -I/usr/include/freetype2  -Wall -Wextra 
>> -Woverloaded-virtual -Wshadow -g -DDEBUG -O2 -DNDEBUG -ffast-math 
>> -fstrict-aliasing -finline-functions -fomit-frame-pointer 
>> -DHAVE_JPEG_H=1 -DHAVE_PNG_H=1 -DHAVE_TIFF_H=1 -DHAVE_ZLIB_H=1 
>> -DHAVE_BZ2LIB_H=1 -DHAVE_XSHM_H=1 -DHAVE_XSHAPE_H=1 
>> -DHAVE_XCURSOR_H=1 -DHAVE_XRENDER_H=1 -DHAVE_XRANDR_H=1 
>> -DHAVE_XFIXES_H=1 -DHAVE_XINPUT2_H=1 -DNO_XIM -DHAVE_XFT_H=1 
>> -DHAVE_XFT_H=1 -DHAVE_GL_H=1 -DHAVE_GLU_H=1 -DHAVE_GLX_H=1 -MT 
>> FXRex.lo -MD -MP -MF .deps/FXRex.Tpo -c -o FXRex.lo FXRex.cpp
>> libtool: compile:  g++ -DPACKAGE_NAME=\"fox\" 
>> -DPACKAGE_TARNAME=\"fox\" -DPACKAGE_VERSION=\"1.7.79\" 
>> "-DPACKAGE_STRING=\"fox 1.7.79\"" 
>> -DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" 
>> -DPACKAGE=\"fox\" -DVERSION=\"1.7.79\" -DSTDC_HEADERS=1 
>> -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 
>> -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 
>> -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 
>> -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -D__EXTENSIONS__=1 
>> -D_ALL_SOURCE=1 -D_GNU_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 
>> -D_TANDEM_SOURCE=1 -DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 
>> -DHAVE_DIRENT_H=1 -DHAVE_LIBRT=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 
>> -DHAVE_LOCALTIME_R=1 -DHAVE_GMTIME_R=1 -DHAVE_GETPWUID_R=1 
>> -DHAVE_GETGRGID_R=1 -DHAVE_GETPWNAM_R=1 
>> -DHAVE_PTHREAD_SETAFFINITY_NP=1 -DHAVE_PTHREAD_GETNAME_NP=1 
>> -DHAVE_PTHREAD_SETNAME_NP=1 -DHAVE_SCHED_GETCPU=1 
>> -DHAVE_EPOLL_CREATE1=1 -DHAVE_TIMERFD_CREATE=1 -DHAVE_PIPE2=1 
>> -DHAVE_STATVFS=1 -DHAVE_GETRLIMIT=1 -DHAVE_INOTIFY_INIT1=1 
>> -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_EPOLL_H=1 -DHAVE_SYS_TIMERFD_H=1 
>> -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SHM_H=1 -DHAVE_SYS_MMAN_H=1 
>> -DHAVE_SYS_MOUNT_H=1 -DHAVE_SEMAPHORE_H=1 -DHAVE_DLFCN_H=1 
>> -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_INOTIFY_H=1 -DHAVE_SYS_RESOURCE_H=1 
>> -DHAVE_IMMINTRIN_H=1 -DHAVE_PNG_H=1 -DHAVE_TIFF_H=1 -DHAVE_ZLIB_H=1 
>> -DHAVE_BZLIB_H=1 -DHAVE_X11_EXTENSIONS_XSHM_H=1 
>> -DHAVE_X11_EXTENSIONS_SHAPE_H=1 -DHAVE_X11_XCURSOR_XCURSOR_H=1 
>> -DHAVE_X11_EXTENSIONS_XRENDER_H=1 -DHAVE_X11_EXTENSIONS_XRANDR_H=1 
>> -DHAVE_X11_EXTENSIONS_XFIXES_H=1 -DHAVE_X11_EXTENSIONS_XINPUT2_H=1 
>> -I. -I../include -I../include -I/usr/include/freetype2 -Wall -Wextra 
>> -Woverloaded-virtual -Wshadow -g -DDEBUG -O2 -DNDEBUG -ffast-math 
>> -fstrict-aliasing -finline-functions -fomit-frame-pointer 
>> -DHAVE_JPEG_H=1 -DHAVE_PNG_H=1 -DHAVE_TIFF_H=1 -DHAVE_ZLIB_H=1 
>> -DHAVE_BZ2LIB_H=1 -DHAVE_XSHM_H=1 -DHAVE_XSHAPE_H=1 
>> -DHAVE_XCURSOR_H=1 -DHAVE_XRENDER_H=1 -DHAVE_XRANDR_H=1 
>> -DHAVE_XFIXES_H=1 -DHAVE_XINPUT2_H=1 -DNO_XIM -DHAVE_XFT_H=1 
>> -DHAVE_XFT_H=1 -DHAVE_GL_H=1 -DHAVE_GLU_H=1 -DHAVE_GLX_H=1 -MT 
>> FXRex.lo -MD -MP -MF .deps/FXRex.Tpo -c FXRex.cpp  -fPIC -DPIC -o 
>> .libs/FXRex.o
>> FXRex.cpp:4676:10: fatal error: fxrexdbg.h: No such file or directory
>>  4676 | #include "fxrexdbg.h"
>>       |          ^~~~~~~~~~~~
>> compilation terminated.
>> make[2]: *** [Makefile:1466: FXRex.lo] Error 1
>> make[2]: Leaving directory '/usr/src/X11/fox-1.7.79/lib'
>> make[1]: *** [Makefile:993: all] Error 2
>> make[1]: Leaving directory '/usr/src/X11/fox-1.7.79/lib'
>> make: *** [Makefile:496: all-recursive] Error 1
>>
>
> Etienne  Mollier suggested to edit the configure.ac file of FOX and 
> put there  near line 57 CXXFLAGS="-O -g"
>
>
> Then I run  autoconf  (version is 2.69) and then I run ./configure 
> --enable-debug --enable-release, but make fails:
>
> rimski.x86_64 src/X11/fox-1.7.79 20:27 .0 % make
> CDPATH="${ZSH_VERSION+.}:" && cd . && /bin/bash 
> /usr/src/X11/fox-1.7.79/missing aclocal-1.15
> /usr/src/X11/fox-1.7.79/missing: line 81: aclocal-1.15: command not found
> WARNING: 'aclocal-1.15' is missing on your system.
>          You should only need it if you modified 'acinclude.m4' or
>          'configure.ac' or m4 files included by 'configure.ac'.
>          The 'aclocal' program is part of the GNU Automake package:
>          <http://www.gnu.org/software/automake>
>          It also requires GNU Autoconf, GNU m4 and Perl in order to run:
>          <http://www.gnu.org/software/autoconf>
>          <http://www.gnu.org/software/m4/>
>          <http://www.perl.org/>
> make: *** [Makefile:415: aclocal.m4] Error 127
>
>



Event after running  autoreconf  (the -ri faile for autoreconf 2.69 of 
Ubuntu 21.1) then  ./configure --enable-debug --enable-native  
--sysconfdir=/etc/local/ CXXFLAGS='-O -g'

(and I also tried double quotes: CXXFLAGS='-O -g' ...) the same error:

libtool: compile:  g++ -DPACKAGE_NAME=\"fox\" -DPACKAGE_TARNAME=\"fox\" 
-DPACKAGE_VERSION=\"1.7.79\" "-DPACKAGE_STRING=\"fox 1.7.79\"" 
-DPACKAGE_BUGREPORT=\"[email protected]\" -DPACKAGE_URL=\"\" 
-DPACKAGE=\"fox\" -DVERSION=\"1.7.79\" -DSTDC_HEADERS=1 
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1 
-DLT_OBJDIR=\".libs/\" -D__EXTENSIONS__=1 -D_ALL_SOURCE=1 
-D_GNU_SOURCE=1 -D_POSIX_PTHREAD_SEMANTICS=1 -D_TANDEM_SOURCE=1 
-DTIME_WITH_SYS_TIME=1 -DHAVE_SYS_WAIT_H=1 -DHAVE_DIRENT_H=1 
-DHAVE_LIBRT=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LOCALTIME_R=1 
-DHAVE_GMTIME_R=1 -DHAVE_GETPWUID_R=1 -DHAVE_GETGRGID_R=1 
-DHAVE_GETPWNAM_R=1 -DHAVE_PTHREAD_SETAFFINITY_NP=1 
-DHAVE_PTHREAD_GETNAME_NP=1 -DHAVE_PTHREAD_SETNAME_NP=1 
-DHAVE_SCHED_GETCPU=1 -DHAVE_EPOLL_CREATE1=1 -DHAVE_TIMERFD_CREATE=1 
-DHAVE_PIPE2=1 -DHAVE_STATVFS=1 -DHAVE_GETRLIMIT=1 
-DHAVE_INOTIFY_INIT1=1 -DHAVE_SYS_SELECT_H=1 -DHAVE_SYS_EPOLL_H=1 
-DHAVE_SYS_TIMERFD_H=1 -DHAVE_SYS_IPC_H=1 -DHAVE_SYS_SHM_H=1 
-DHAVE_SYS_MMAN_H=1 -DHAVE_SYS_MOUNT_H=1 -DHAVE_SEMAPHORE_H=1 
-DHAVE_DLFCN_H=1 -DHAVE_SYS_STATVFS_H=1 -DHAVE_SYS_INOTIFY_H=1 
-DHAVE_SYS_RESOURCE_H=1 -DHAVE_IMMINTRIN_H=1 -DHAVE_PNG_H=1 
-DHAVE_TIFF_H=1 -DHAVE_ZLIB_H=1 -DHAVE_BZLIB_H=1 
-DHAVE_X11_EXTENSIONS_XSHM_H=1 -DHAVE_X11_EXTENSIONS_SHAPE_H=1 
-DHAVE_X11_XCURSOR_XCURSOR_H=1 -DHAVE_X11_EXTENSIONS_XRENDER_H=1 
-DHAVE_X11_EXTENSIONS_XRANDR_H=1 -DHAVE_X11_EXTENSIONS_XFIXES_H=1 
-DHAVE_X11_EXTENSIONS_XINPUT2_H=1 -I. -I../include -I../include 
-I/usr/include/freetype2 -g -O -Wall -Wextra -Woverloaded-virtual 
-Wshadow -g -DDEBUG -march=native -DHAVE_JPEG_H=1 -DHAVE_PNG_H=1 
-DHAVE_TIFF_H=1 -DHAVE_ZLIB_H=1 -DHAVE_BZ2LIB_H=1 -DHAVE_XSHM_H=1 
-DHAVE_XSHAPE_H=1 -DHAVE_XCURSOR_H=1 -DHAVE_XRENDER_H=1 
-DHAVE_XRANDR_H=1 -DHAVE_XFIXES_H=1 -DHAVE_XINPUT2_H=1 -DNO_XIM 
-DHAVE_XFT_H=1 -DHAVE_XFT_H=1 -DHAVE_GL_H=1 -DHAVE_GLU_H=1 
-DHAVE_GLX_H=1 -MT FXRex.lo -MD -MP -MF .deps/FXRex.Tpo -c FXRex.cpp  
-fPIC -DPIC -o .libs/FXRex.o
FXRex.cpp:4676:10: fatal error: fxrexdbg.h: No such file or directory
  4676 | #include "fxrexdbg.h"
       |          ^~~~~~~~~~~~
compilation terminated.
make[2]: *** [Makefile:1666: FXRex.lo] Error 1
make[2]: Leaving directory '/usr/src/X11/fox-1.7.79/lib'
make[1]: *** [Makefile:1187: all] Error 2
make[1]: Leaving directory '/usr/src/X11/fox-1.7.79/lib'
make: *** [Makefile:499: all-recursive] Error 1



Thanks



-- 
Basile Starynkevitch                  <[email protected]>
(only mine opinions / les opinions sont miennes uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/



_______________________________________________
Foxgui-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/foxgui-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.