[ 
https://issues.apache.org/jira/browse/XERCESC-2113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Roger Leigh closed XERCESC-2113.
--------------------------------
    Resolution: Invalid

This one is a bit strange.  Building xerces in isolation, everything is working 
fine.

This is working:

cd 
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xt2/src
 && /usr/bin/CC  -DHAVE_CONFIG_H=1 -DXERCES_BUILDING_LIBRARY=1 
-D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE=1 -Dxerces_c_EXPORTS -isystem 
/usr/local/include 
-I/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xt2
 
-I/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src
 
-I/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xt2/src
 -Wall -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wextra -Wformat=2 
-Wimplicit-atomic-properties -Wmissing-declarations -Wno-long-long 
-Woverlength-strings -Woverloaded-virtual -Wredundant-decls -Wreorder 
-Wswitch-default -Wunused-variable -Wwrite-strings -Wno-variadic-macros 
-fstrict-aliasing -msse2 -O3 -DNDEBUG -fPIC   -pthread -std=gnu++14 -o 
CMakeFiles/xerces-c.dir/xercesc/util/Base64.cpp.o -c 
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src/xercesc/util/Base64.cpp

This is failing:

cd 
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-build/src
 && /usr/bin/CC  -DHAVE_CONFIG_H=1 -DXERCES_BUILDING_LIBRARY=1 
-D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE=1 -Dxerces_c_EXPORTS -I/usr/local/include 
-I/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-build
 
-I/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src
 
-I/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-build/src
 -isystem 
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/stage/include
 -Wall -Wcast-align -Wcast-qual -Wctor-dtor-privacy -Wextra -Wformat=2 
-Wimplicit-atomic-properties -Wmissing-declarations -Wno-long-long 
-Woverlength-strings -Woverloaded-virtual -Wredundant-decls -Wreorder 
-Wswitch-default -Wunused-variable -Wwrite-strings -Wno-variadic-macros 
-fstrict-aliasing -msse2 -O3 -DNDEBUG -fPIC   -pthread -std=gnu++14 -o 
CMakeFiles/xerces-c.dir/xercesc/util/Base64.cpp.o -c 
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src/xercesc/util/Base64.cpp
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src/xercesc/util/Base64.cpp:149:14:
 error: 
      use of undeclared identifier 'XERCES_SIZE_MAX'
    else if (XERCES_SIZE_MAX - inputLength < 2) {
             ^
1 error generated.

It's all down to using -I/usr/local/include and not -isystem /usr/local/include 
which is a bit odd.  

If I update Base64.cpp to include config.h, I get a warning about

/usr/local/include/xercesc/util/Xerces_autoconf_config.hpp:65:9: warning: 
'XERCES_XMLCH_T' macro redefined [-Wmacro-redefined]

but it all works.  But it then fails with

[  1%] Building CXX object 
src/CMakeFiles/xerces-c.dir/xercesc/util/BinInputStream.cpp.o
/opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src/xercesc/util/BinInputStream.cpp:48:30:
 error: 
      out-of-line definition of 'getEncoding' does not match any declaration in 
'xercesc_3_1::BinInputStream'
const XMLCh* BinInputStream::getEncoding() const
                             ^~~~~~~~~~~

I think what's happening here is that the xerces 3.1 headers in /usr/local are 
being included in preference to those in the source tree.  This is definitely 
not a xerces problem; it's my problem, so I'll close this.

> Base64.cpp missing config.h include
> -----------------------------------
>
>                 Key: XERCESC-2113
>                 URL: https://issues.apache.org/jira/browse/XERCESC-2113
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: Build, Utilities
>    Affects Versions: 3.2.0
>            Reporter: Roger Leigh
>
> {{{
> 13:04:43 
> /opt/hudson/workspace/OME-FILES-CPP-DEV-merge-superbuild/BUILD_TYPE/Release/node/brill/build/xerces-source/src/xercesc/util/Base64.cpp:149:14:
>  error: use of undeclared identifier 'XERCES_SIZE_MAX'
> 13:04:43     else if (XERCES_SIZE_MAX - inputLength < 2) {
> 13:04:43              ^
> }}}
> I think this is because of a missing stdint.h include.  This is provided by 
> config.h, but there's no config.h include in Base64.cpp.  Other platforms 
> must be getting this via an indirect include.
> Note that this also has other portability implications (though they don't 
> need tackling right now).  Using size_t implies using SIZE_MAX, but SIZE_MAX 
> requires stdint.h.  stdint.h was previously optional, with fallbacks used if 
> not present, but this makes it effectively mandatory, making all of the other 
> integer portability logic redundant.  i.e. we could just require 
> stdint.h/cstdint unconditionally and drop all of the other logic.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: c-dev-unsubscr...@xerces.apache.org
For additional commands, e-mail: c-dev-h...@xerces.apache.org

Reply via email to