Bug 499592

Summary: KCodecs framework fails to compile on macos
Product: [Frameworks and Libraries] frameworks-kcodecs Reporter: Daniel Crutti <dancrutti>
Component: generalAssignee: kdelibs bugs <kdelibs-bugs-null>
Status: ASSIGNED ---    
Severity: normal CC: nicolas.fella
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: Other   
OS: Other   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Daniel Crutti 2025-02-06 12:50:47 UTC
CONTEXT
I am running an 2015 intel macbook air
Apple has their own compiler called appleclang that is their own version of clang
SUMMARY
I was building the KCodecs framework where I got error about the "register" storage class specifier not being allowed any more
STEPS TO REPRODUCE
1. Have an apple computer on macos sequoia
2. clone Kcodecs gitlab
3. try to build & compile it

OBSERVED RESULT
[ 58%] Building CXX object src/CMakeFiles/KF6Codecs.dir/kcharsets.cpp.o
In file included from /Users/daniel/Programs/kframe/kcodecs/src/kcharsets.cpp:14:
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:40:31: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   40 | KCodecsEntities::hash_Entity (register const char *str, register unsigned int len)
      |                               ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:40:57: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   40 | KCodecsEntities::hash_Entity (register const char *str, register unsigned int len)
      |                                                         ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:71:3: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
   71 |   register unsigned int hval = len;
      |   ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:104:34: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  104 | KCodecsEntities::kde_findEntity (register const char *str, register unsigned int len)
      |                                  ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:104:60: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  104 | KCodecsEntities::kde_findEntity (register const char *str, register unsigned int len)
      |                                                            ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:397:11: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  397 |           register int index = lookup[key];
      |           ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:401:15: error: ISO C++17 does not allow 'register' storage class specifier [-Wregister]
  401 |               register const char *s = wordlist_Entity[index].name;
      |               ^~~~~~~~
/Users/daniel/Programs/kframe/kcodecs/src/kentities.gperf:408:10: warning: zero as null pointer constant [-Wzero-as-null-pointer-constant]
  408 |   return 0;
      |          ^
      |          nullptr
1 warning and 7 errors generated.
make[2]: *** [src/CMakeFiles/KF6Codecs.dir/kcharsets.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/KF6Codecs.dir/all] Error 2
make: *** [all] Error 2
EXPECTED RESULT
I expected it to build & compile without errors
SOFTWARE/OS VERSIONS
macOS: Sequoia
ADDITIONAL INFORMATION
N/A
Comment 1 Nicolas Fella 2025-02-06 13:56:39 UTC
See https://bugs.kde.org/show_bug.cgi?id=440091

You need a newer version of gperf
Comment 2 Bug Janitor Service 2025-02-06 14:05:45 UTC
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kcodecs/-/merge_requests/66