I think this has already been fixed, just not tagged yet. Try the head of RB-1.6 or wait for me to tag, planned for the next couple days.
On January 28, 2016 12:35:48 AM PST, Shane Ambler <[email protected]> wrote: >I seem to have an odd build issue that has me stumped. > >Building on FreeBSD 9.3 both amd64 and i386 using both clang and gcc >works. > >Building on 10.2 amd64 using clang works. >Building on 10.2 i386 using clang fails. >clang 3.4.1 is the base compiler on 10.2 > >What I have found is that SHA1.h contains - > >#ifndef UINT_32 >#ifdef _MSC_VER // Compiling with Microsoft compiler >#define UINT_32 unsigned __int32 >#else // !_MSC_VER >#if (ULONG_MAX == 0xFFFFFFFF) >#define UINT_32 unsigned long >#else >#define UINT_32 unsigned int >#endif >#endif // _MSC_VER >#endif // UINT_32 > >When building on 10.2 i386 - different files get different definitions >of UINT_32 which leads to an issue. Both systems use identical >_limits.h which defines ULONG_MAX as __ULONG_MAX which comes from - > >#ifdef __LP64__ >#define __ULONG_MAX 0xffffffffffffffff /* max for an unsigned >long */ >#define __LONG_MAX 0x7fffffffffffffff /* max for a long */ >#define __LONG_MIN (-0x7fffffffffffffff - 1) /* min for a long */ >#else >#define __ULONG_MAX 0xffffffffUL >#define __LONG_MAX 0x7fffffffL >#define __LONG_MIN (-0x7fffffffL - 1) >#endif > >This all leads to libOpenImageIO getting two versions of SHA1::Update > >strings build/src/libOpenImageIO/libOpenImageIO.so | grep CSHA | grep >Update >_ZN11OpenImageIO4v1_65CSHA16UpdateEPKhm >_ZN11OpenImageIO4v1_65CSHA16UpdateEPKhj > >One appears to come from libutil/strutil.cpp the other from >libOpenImageIO/imagebufalgo_compare.cpp as the make commands are the >same up to the source and output values I don't get how they come out >different. > >While libOpenImageIO builds, binaries linking to it fail with - > >/usr/bin/make -f >src/libOpenImageIO/CMakeFiles/imagebufalgo_test.dir/build.make >src/libOpenImageIO/CMakeFiles/imagebufalgo_test.dir/build >--- src/libOpenImageIO/CMakeFiles/imagespec_test.dir/all --- >libOpenImageIO.so.1.6.9: undefined reference to >`OpenImageIO::v1_6::CSHA1::Update(unsigned char const*, unsigned long)' >c++: error: linker command failed with exit code 1 (use -v to see >invocation) > >--- src/libOpenImageIO/CMakeFiles/imagebuf_test.dir/all --- >libOpenImageIO.so.1.6.9: undefined reference to >`OpenImageIO::v1_6::CSHA1::Update(unsigned char const*, unsigned long)' >c++: error: linker command failed with exit code 1 (use -v to see >invocation) > >--- src/libOpenImageIO/CMakeFiles/imagecache_test.dir/all --- >libOpenImageIO.so.1.6.9: undefined reference to >`OpenImageIO::v1_6::CSHA1::Update(unsigned char const*, unsigned long)' >--- src/libOpenImageIO/CMakeFiles/imagebuf_test.dir/all --- > > > > >While I can force SHA1.h to set UINT_32 to always use the same >definition and it builds, it seems odd that it can't agree, and I >expect that if I choose one then other apps linking to it will choose >the other. > >By adding a couple of #warnings in SHA1.h I get the following during >libOpenImageIO build - > > >grep -C5 "####" oiio.build >cd /wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libutil && >/usr/local/libexec/ccache/c++ -DOpenImageIO_Util_EXPORTS >-DUSE_FREETYPE -DUSE_OCIO=1 -DUSE_OPENCV -DUSE_OPENEXR_VERSION2=1 >-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -isystem >/usr/local/include -I/usr/local/include/OpenEXR >-I/usr/local/include/libraw >-I/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include > >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO >-O2 >-pipe -fstack-protector -fno-strict-aliasing -march=i586 -O2 -pipe >-fstack-protector -fno-strict-aliasing -fPIC -Wall -fno-math-errno >-Wno-unused-function -Wno-overloaded-virtual >-Wno-unneeded-internal-declaration -Wno-unused-private-field >-Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option >-UUSE_FIELD3D -o CMakeFiles/OpenImageIO_Util.dir/SHA1.cpp.o -c >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libutil/SHA1.cpp >--- src/libutil/CMakeFiles/OpenImageIO_Util.dir/strutil.cpp.o --- >cd /wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libutil && >/usr/local/libexec/ccache/c++ -DOpenImageIO_Util_EXPORTS >-DUSE_FREETYPE -DUSE_OCIO=1 -DUSE_OPENCV -DUSE_OPENEXR_VERSION2=1 >-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -isystem >/usr/local/include -I/usr/local/include/OpenEXR >-I/usr/local/include/libraw >-I/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include > >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO >-O2 >-pipe -fstack-protector -fno-strict-aliasing -march=i586 -O2 -pipe >-fstack-protector -fno-strict-aliasing -fPIC -Wall -fno-math-errno >-Wno-unused-function -Wno-overloaded-virtual >-Wno-unneeded-internal-declaration -Wno-unused-private-field >-Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option >-UUSE_FIELD3D -o CMakeFiles/OpenImageIO_Util.dir/strutil.cpp.o -c >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libutil/strutil.cpp >--- src/libutil/CMakeFiles/OpenImageIO_Util.dir/SHA1.cpp.o --- >In file included from >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libutil/SHA1.cpp:11: >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include/OpenImageIO/SHA1.h:171:2: > >warning: ######## using UINT_32 as int [-W#warnings] >#warning ######## using UINT_32 as int > ^ >1 warning generated. >--- src/libutil/CMakeFiles/OpenImageIO_Util.dir/sysutil.cpp.o --- >[ 5%] Building CXX object >src/libutil/CMakeFiles/OpenImageIO_Util.dir/sysutil.cpp.o >cd /wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libutil && >/usr/local/libexec/ccache/c++ -DOpenImageIO_Util_EXPORTS >-DUSE_FREETYPE -DUSE_OCIO=1 -DUSE_OPENCV -DUSE_OPENEXR_VERSION2=1 >-D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -isystem >/usr/local/include -I/usr/local/include/OpenEXR >-I/usr/local/include/libraw >-I/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include > >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO >-O2 >-pipe -fstack-protector -fno-strict-aliasing -march=i586 -O2 -pipe >-fstack-protector -fno-strict-aliasing -fPIC -Wall -fno-math-errno >-Wno-unused-function -Wno-overloaded-virtual >-Wno-unneeded-internal-declaration -Wno-unused-private-field >-Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option >-UUSE_FIELD3D -o CMakeFiles/OpenImageIO_Util.dir/sysutil.cpp.o -c >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libutil/sysutil.cpp >-- >[ 25%] Building CXX object >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/imagebufalgo_deep.cpp.o >cd >/wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libOpenImageIO >&& /usr/local/libexec/ccache/c++ -DBOOST_TEST_DYN_LINK >-DEMBED_PLUGINS=1 -DOpenImageIO_EXPORTS -DPTEX_EXPORTS >-DUSE_BOOST_ASIO=1 -DUSE_FFMPEG -DUSE_FREETYPE -DUSE_GIF -DUSE_LIBRAW=1 > >-DUSE_OCIO=1 -DUSE_OPENCV -DUSE_OPENEXR_VERSION2=1 -DUSE_OPENJPEG >-DUSE_PTEX -DUSE_WEBP=1 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS >-isystem /usr/local/include -I/usr/local/include/OpenEXR >-I/usr/local/include/libraw >-I/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include > >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libOpenImageIO > >-I/usr/local/include/freetype2 -I/usr/local/include/freetype2/freetype2 > >-I/usr/local/include/freetype2/freetype2/freetype -O2 -pipe >-fstack-protector -fno-strict-aliasing -march=i586 -O2 -pipe >-fstack-protector -fno-strict-aliasing -fPIC -Wall -fno-math-errno >-Wno-unused-function -Wno-overloaded-virtual >-Wno-unneeded-internal-declaration -Wno-unused-private-field >-Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option >-UUSE_FIELD3D -o CMakeFiles/OpenImageIO.dir/imagebufalgo_deep.cpp.o -c >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libOpenImageIO/imagebufalgo_deep.cpp >--- >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/imagebufalgo_draw.cpp.o >--- >--- >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/imagebufalgo_compare.cpp.o >--- >In file included from >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libOpenImageIO/imagebufalgo_compare.cpp:45: >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include/OpenImageIO/SHA1.h:168:2: > >warning: ######## using UINT_32 as long [-W#warnings] >#warning ######## using UINT_32 as long > ^ >1 warning generated. >--- >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/imagebufalgo_draw.cpp.o >--- >[ 26%] Building CXX object >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/imagebufalgo_draw.cpp.o >--- >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/imagebufalgo_pixelmath.cpp.o > >--- >-- >--- >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/libutil/strutil.cpp.o >--- >[ 33%] Building CXX object >src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/libutil/strutil.cpp.o >cd >/wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libOpenImageIO >&& /usr/local/libexec/ccache/c++ -DBOOST_TEST_DYN_LINK >-DEMBED_PLUGINS=1 -DOpenImageIO_EXPORTS -DPTEX_EXPORTS >-DUSE_BOOST_ASIO=1 -DUSE_FFMPEG -DUSE_FREETYPE -DUSE_GIF -DUSE_LIBRAW=1 > >-DUSE_OCIO=1 -DUSE_OPENCV -DUSE_OPENEXR_VERSION2=1 -DUSE_OPENJPEG >-DUSE_PTEX -DUSE_WEBP=1 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS >-isystem /usr/local/include -I/usr/local/include/OpenEXR >-I/usr/local/include/libraw >-I/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include > >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/include/OpenImageIO >-I/wrkdirs/usr/ports/graphics/openimageio/work/.build/src/libOpenImageIO > >-I/usr/local/include/freetype2 -I/usr/local/include/freetype2/freetype2 > >-I/usr/local/include/freetype2/freetype2/freetype -O2 -pipe >-fstack-protector -fno-strict-aliasing -march=i586 -O2 -pipe >-fstack-protector -fno-strict-aliasing -fPIC -Wall -fno-math-errno >-Wno-unused-function -Wno-overloaded-virtual >-Wno-unneeded-internal-declaration -Wno-unused-private-field >-Wno-tautological-compare -Qunused-arguments -Wunknown-warning-option >-UUSE_FIELD3D -o CMakeFiles/OpenImageIO.dir/__/libutil/strutil.cpp.o -c > >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libutil/strutil.cpp >--- src/libOpenImageIO/CMakeFiles/OpenImageIO.dir/__/libutil/SHA1.cpp.o >--- >In file included from >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/libutil/SHA1.cpp:11: >/wrkdirs/usr/ports/graphics/openimageio/work/oiio-Release-1.6.9/src/include/OpenImageIO/SHA1.h:171:2: > >warning: ######## using UINT_32 as int [-W#warnings] >#warning ######## using UINT_32 as int > ^ >1 warning generated. > > > >-- >FreeBSD - the place to B...Software Developing > >Shane Ambler > >_______________________________________________ >Oiio-dev mailing list >[email protected] >http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org -- Larry Gritz [email protected]
_______________________________________________ Oiio-dev mailing list [email protected] http://lists.openimageio.org/listinfo.cgi/oiio-dev-openimageio.org
