devnag.c treated as C++ and fails to compile
MiKTeX source code moved to GitHub
Brought to you by:
csc
The devnag.c
from MiKTeX Tools fails to compile when the character 0 as in err_ill('\0')
is passed to err_ill
: no known conversion from 'char' to 'const char *' for 1st argument void err_ill(const char *str);
The compiler additionally complains about
clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
Below is the full error.
[ 26%] Building CXX object Programs/Converters/devnag/CMakeFiles/devnag.dir/source/src/devnag.c.o cd /path/to/miktex/work/build/Programs/Converters/devnag && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -DCPLUSPLUSMAIN -DHAVE_CONFIG_H -DMIKTEX -DMIKTEX_APP_SHARED -DMIKTEX_CORE_SHARED -DMIKTEX_MD5_SHARED -DMIKTEX_MPM_SHARED -DMIKTEX_TRACE_SHARED -DMIKTEX_UNIX -DMIKTEX_UTIL_SHARED -DUSE_MIKTEX_EXIT -Dmain=Main -I/path/to/miktex/work/miktex-2.9-2016-05-18/include -I/path/to/miktex/work/build/include -I/path/to/miktex/work/miktex-2.9-2016-05-18/Libraries/MiKTeX/App/include -I/path/to/miktex/work/build/Libraries/MiKTeX/Core/include -I/path/to/miktex/work/miktex-2.9-2016-05-18/Libraries/MiKTeX/Core/include -I/path/to/miktex/work/build/Libraries/3rd/md5/include -I/path/to/miktex/work/miktex-2.9-2016-05-18/Libraries/MiKTeX/Trace/include -I/path/to/miktex/work/miktex-2.9-2016-05-18/Libraries/MiKTeX/Util/include -I/path/to/miktex/work/build/Libraries/MiKTeX/PackageManager/include -I/path/to/miktex/work/miktex-2.9-2016-05-18/Libraries/MiKTeX/PackageManager/include -pipe -Os -stdlib=libc++ -std=c++14 -DNDEBUG -arch x86_64 -mmacosx-version-min=10.11 -o CMakeFiles/devnag.dir/source/src/devnag.c.o -c /path/to/miktex/work/miktex-2.9-2016-05-18/Programs/Converters/devnag/source/src/devnag.c clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated /path/to/miktex/work/miktex-2.9-2016-05-18/Programs/Converters/devnag/source/src/devnag.c:1806:3: error: no matching function for call to 'err_ill' err_ill('\0'); ^~~~~~~ /path/to/miktex/work/miktex-2.9-2016-05-18/Programs/Converters/devnag/source/src/devnag.c:379:6: note: candidate function not viable: no known conversion from 'char' to 'const char *' for 1st argument void err_ill(const char *str); ^ /path/to/miktex/work/miktex-2.9-2016-05-18/Programs/Converters/devnag/source/src/devnag.c:1812:19: error: no matching function for call to 'err_ill' if (symbol < 0) err_ill('\0'); /* accented character inside dn mode */ ^~~~~~~ /path/to/miktex/work/miktex-2.9-2016-05-18/Programs/Converters/devnag/source/src/devnag.c:379:6: note: candidate function not viable: no known conversion from 'char' to 'const char *' for 1st argument void err_ill(const char *str); ^
I tried to change CMakeLists.txt
to use the C compiler rather than C++, but that didn't really help:
[ 26%] Linking CXX executable ../../../binlib/devnag cd /path/to/miktex/work/build/Programs/Converters/devnag && /opt/local/bin/cmake -E cmake_link_script CMakeFiles/devnag.dir/link.txt --verbose=1 /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang++ -pipe -Os -stdlib=libc++ -std=c++14 -DNDEBUG -arch x86_64 -mmacosx-version-min=10.11 -Wl,-search_paths_first -Wl,-headerpad_max_install_names -L/opt/local/lib -Wl,-headerpad_max_install_names CMakeFiles/devnag.dir/__/__/__/Libraries/MiKTeX/etc/wrapper.cpp.o CMakeFiles/devnag.dir/source/src/devnag.c.o -o ../../../binlib/devnag ../../../binlib/libMiKTeX209-app.2.9.dylib ../../../binlib/libMiKTeX209-core.2.9.dylib ../../../binlib/libMiKTeX209-md5.2.9.dylib ../../../binlib/libMiKTeX209-trace.2.9.dylib ../../../binlib/libMiKTeX209-util.2.9.dylib ../../../binlib/libMiKTeX209-packagemanager.2.9.dylib -Wl,-rpath,"\$ORIGIN/../lib" Undefined symbols for architecture x86_64: "Main(int, char**)", referenced from: _main in wrapper.cpp.o ld: symbol(s) not found for architecture x86_64
For a temporary workaround I used:
I'm sorry, this should be in bugs rather than in patches.
Ticket moved from /p/miktex/patches/11/
Can't be converted:
The upstream sources have been patched: http://tug.org/svn/texlive/trunk/Build/source/utils/devnag/src/devnag.c?sortby=date&r1=41530&r2=41529&pathrev=41530