Hi Paul,
A quick workaround to try: use a separate build directory then you'll
avoid the naming conflicts.
We will absolutely need to fix this. I copied the existing convention
but I agree that adopting the Xerces-C++ strategy will be a better
solution. See https://issues.apache.org/jira/browse/XALANC-811 which I
created to track this. An alternative approach would be to deliberately
forbid in-source builds and require a separate build directory.
Kind regards,
Roger
On 24/07/2020 22:53, Paul Kinnucan wrote:
Hi,
The Xalan 1.12 samples and tests fail to build on Linux and the Mac.
The reason is that the cmake build infrastructure tries to output the
sample and test binaries at the top level of the samples and Tests
directories, respectively. For example, the samples directory has the
following structure:
samples
ApacheModduleXSLT
CompileStylesheet
DocumentBuilder
EntityResolver
ExternalFunction
…
The Xalan build infrastructure tries to create the sample executable
in the root of the samples directory. This leads to a naming conflict.
For example, the build intrastructure tells the linker to output the
ExternalFunction executable at the root of the samples directory. The
linker open function fails with the error message
[ 93%] Building CXX object
src/xalanc/TestXPath/CMakeFiles/TestXPath.dir/TestXPath.cpp.o
cd
/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/derived/glnxa64/xalan-c/src/xalanc/TestXPath
&& /mathworks/hub/3rdparty/internal/5566149/glnxa64/gcc-8.3.0/bin/g++
-DNDEBUG -D_FILE_OFFSET_BITS=64 -D_THREAD_SAFE=1
-I/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/derived/glnxa64/xalan-c/src
-I/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/derived/glnxa64/xalan-c/src/xalanc/PlatformSupport
-isystem
/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/install/unknown/glnxa64/icu/include
-isystem
/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/install/unknown/glnxa64/xerces-c/include
-I/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/derived/glnxa64/xalan-c/src/xalanc/NLS/include
-O2 -pipe -pthread
-fdebug-prefix-map=/mathworks/devel/sandbox/paulk/xalan-c-sandbox=
-fPIC -std=c++11 -Wall -Wcast-align -Wcast-qual -Wctor-dtor-privacy
-Wextra -Wformat=2 -Wmissing-declarations -Wno-long-long
-Woverlength-strings -Woverloaded-virtual -Wredundant-decls -Wreorder
-Wswitch-default -Wunused-variable -Wwrite-strings
-Wno-variadic-macros -fstrict-aliasing -O2 -pipe -pthread
-fdebug-prefix-map=/mathworks/devel/sandbox/paulk/xalan-c-sandbox=
-fPIC -std=c++11 -std=gnu++14 -o
CMakeFiles/TestXPath.dir/TestXPath.cpp.o -c
/mathworks/devel/sandbox/paulk/xalan-c-sandbox/3p/derived/glnxa64/xalan-c/src/xalanc/TestXPath/TestXPath.cpp
/mathworks/hub/3rdparty/internal/5566149/glnxa64/gcc-8.3.0/bin/../lib/gcc/x86_64-pc-linux-gnu/8.3.0/../../../../x86_64-pc-linux-gnu/bin/ld.gold:
fatal error: ExternalFunction: open: Is a directory
I noticed that Xerces-c stores the source for its tests and samples in
a src subdirectory but creates the executables at the top of the
directory e.g.,
samples
src
CreateDOMDocument
CreateDOMDocument
This avoids the naming conflict.
The Xalan-c samples and tests build without issue on Windows.
Thanks for creating a version of Xalan-c that is easy to build on all
major platforms.
Regards,
Paul
Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for
Windows 10