Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

0.9.9 doesn't build with kakadu v7_5-01559N #22

Closed
paluchas opened this issue Oct 9, 2014 · 5 comments
Closed

0.9.9 doesn't build with kakadu v7_5-01559N #22

paluchas opened this issue Oct 9, 2014 · 5 comments

Comments

@paluchas
Copy link

paluchas commented Oct 9, 2014

We have tried to compile 0.9.9 src in CentOS 6.5 hosted in VirtualBox. We have compiled kakadu successfully and run this configure command

[vagrant@iipserver-dev-vm iipsrv]$ ./configure --with-kakadu=/vagrant/kakadu
…
Options Enabled:
---------------
 Memcached:
 JPEG2000 (Kakadu):     true

Unfortunately, we couldn't compile it further with make as following error occurred

…
g++ -DPACKAGE_NAME=\"iipsrv\" -DPACKAGE_TARNAME=\"iipsrv\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"iipsrv\ 1.0\" -DPACKAGE_BUGREPORT=\"ruven@users.sourceforge.net\" -DPACKAGE=\"iipsrv\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_GLOB_H=1 -DHAVE_TIME_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LOG2=1 -DHAVE_SETENV=1 -DHAVE_EXT_POOL_ALLOCATOR_H=1 -DHAVE_STDCXX_0X=/\*\*/ -DHAVE_UNORDERED_MAP=/\*\*/ -DHAVE_TR1_UNORDERED_MAP=/\*\*/ -DHAVE_NAMESPACES=/\*\*/ -DHAVE_EXT_HASH_MAP=/\*\*/ -DHAVE_ISFINITE=1 -DHAVE_JPEG=1 -DHAVE_TIFF=1 -DHAVE_KAKADU=1 -DHAVE_STREAMBUF_CHAR_TYPE=1 -DHAVE_FPOS=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_NETDB_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FILENO_PROTO=1 -I. -I/vagrant/kakadu/managed/all_includes/ -I. -I../fcgi/include -I../fcgi     -std=gnu++0x -g -O2 -MT FIF.o -MD -MP -MF .deps/FIF.Tpo -c -o FIF.o FIF.cc
In file included from FIF.cc:29:
KakaduImage.h:49: error: expected class-name before ‘{’ token
KakaduImage.h:72: error: ‘kdu_message_formatter’ does not name a type
KakaduImage.h:73: error: ‘kdu_message_formatter’ does not name a type
KakaduImage.h:85: error: ‘kdu_codestream’ does not name a type
KakaduImage.h:88: error: ISO C++ forbids declaration of ‘kdu_compressed_source’ with no type
KakaduImage.h:88: error: expected ‘;’ before ‘*’ token
KakaduImage.h:91: error: ‘jpx_source’ does not name a type
KakaduImage.h:94: error: ‘jp2_family_src’ does not name a type
KakaduImage.h:97: error: ‘jpx_codestream_source’ does not name a type
KakaduImage.h:100: error: ‘kdu_stripe_decompressor’ does not name a type
KakaduImage.h:103: error: ‘kdu_dims’ does not name a type
make[1]: *** [FIF.o] Error 1
make[1]: Leaving directory `/vagrant/iipsrv/src'
make: *** [all-recursive] Error 1
[vagrant@iipserver-dev-vm iipsrv]$

Any ideas what is causing the problem, please?
Thank you.

@ruven
Copy link
Owner

ruven commented Oct 10, 2014

I presume you're using one of the more recent versions of Kakadu. Take a look at this discussion:
https://sourceforge.net/p/iipimage/discussion/299493/thread/bb8ba9fd/

The solution seems to be to disable SSE3 by adding -DKDU_NO_SSSE3 to the C_OPT flags

@ruven ruven closed this as completed Oct 10, 2014
@paluchas
Copy link
Author

Your suggestion was not relevant on this stage to our error. It is relevant later once following changes has been applied.

We are using Kakadu v. 7.5 and it looks there must be some changes in their code organisation. We have found that classes are organised in additional namespaces which were not used in KakaduImage.h file.

Please see changes we have added to this file to successfully compile IIPServer with Kakadu 7.5

[vagrant@iipserver-dev-vm src]$ git diff KakaduImage.h
diff --git a/src/KakaduImage.h b/src/KakaduImage.h
index 6a2d056..366aeda 100644
--- a/src/KakaduImage.h
+++ b/src/KakaduImage.h
@@ -41,6 +41,8 @@

 #define TILESIZE 256

+using namespace kdu_core;
+using namespace kdu_supp;

 extern std::ofstream logfile;

@ruven
Copy link
Owner

ruven commented Oct 27, 2014

OK, I've added an ifdef to enable these namespaces if using version 7.5. So, iipsrv should now compile without problems.

@carroarmato0
Copy link

Hi Ruven,

The addition of

+using namespace kdu_core;
+using namespace kdu_supp;

helped me get passed the issue mentioned here which I was also having.

Getting the following now:

g++ -DPACKAGE_NAME=\"iipsrv\" -DPACKAGE_TARNAME=\"iipsrv\" -DPACKAGE_VERSION=\"1.0\" -DPACKAGE_STRING=\"iipsrv\ 1.0\" -DPACKAGE_BUGREPORT=\"ruven@users.sourceforge.net\" -DPACKAGE=\"iipsrv\" -DVERSION=\"1.0\" -DSTDC_HEADERS=1 -DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1 -DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1 -DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE__BOOL=1 -DHAVE_STDBOOL_H=1 -DHAVE_DLFCN_H=1 -DLT_OBJDIR=\".libs/\" -DHAVE_GLOB_H=1 -DHAVE_TIME_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_STDLIB_H=1 -DHAVE_MALLOC=1 -DHAVE_LOG2=1 -DHAVE_SETENV=1 -DHAVE_EXT_POOL_ALLOCATOR_H=1 -DHAVE_STDCXX_0X=/\*\*/ -DHAVE_UNORDERED_MAP=/\*\*/ -DHAVE_TR1_UNORDERED_MAP=/\*\*/ -DHAVE_NAMESPACES=/\*\*/ -DHAVE_EXT_HASH_MAP=/\*\*/ -DHAVE_ISFINITE=1 -DHAVE_JPEG=1 -DHAVE_TIFF=1 -DHAVE_LCMS2_H=1 -DLCMS=1 -DHAVE_KAKADU=1 -DHAVE_PNG_H=1 -DHAVE_STREAMBUF_CHAR_TYPE=1 -DHAVE_FPOS=1 -DHAVE_SYS_SOCKET_H=1 -DHAVE_NETDB_H=1 -DHAVE_NETINET_IN_H=1 -DHAVE_ARPA_INET_H=1 -DHAVE_SYS_TIME_H=1 -DHAVE_LIMITS_H=1 -DHAVE_SYS_PARAM_H=1 -DHAVE_UNISTD_H=1 -DHAVE_FILENO_PROTO=1 -I. -I/home/makerpm/kakadu//managed/all_includes/ -I.      -std=gnu++0x -g -O2 -MT KakaduImage.o -MD -MP -MF .deps/KakaduImage.Tpo -c -o KakaduImage.o KakaduImage.cc
mv -f .deps/KakaduImage.Tpo .deps/KakaduImage.Po
/bin/sh ../libtool --tag=CXX   --mode=link g++ -std=gnu++0x -g -O2   -o iipsrv.fcgi IIPImage.o TPTImage.o JPEGCompressor.o TileManager.o IIPResponse.o View.o Transforms.o Task.o OBJ.o FIF.o JTL.o TIL.o ICC.o CVT.o Zoomify.o DeepZoom.o SPECTRA.o PFL.o IIIF.o Watermark.o Main.o KakaduImage.o  -llcms2 -lz  -lm /home/makerpm/kakadu//apps/make/jpx.o /home/makerpm/kakadu//apps/make/jp2.o /home/makerpm/kakadu//apps/make/kdu_stripe_decompressor.o /home/makerpm/kakadu//apps/make/*.so -lpthread -lfcgi  -ljpeg -ltiff -lm
libtool: link: g++ -std=gnu++0x -g -O2 -o iipsrv.fcgi IIPImage.o TPTImage.o JPEGCompressor.o TileManager.o IIPResponse.o View.o Transforms.o Task.o OBJ.o FIF.o JTL.o TIL.o ICC.o CVT.o Zoomify.o DeepZoom.o SPECTRA.o PFL.o IIIF.o Watermark.o Main.o KakaduImage.o /home/makerpm/kakadu//apps/make/jpx.o /home/makerpm/kakadu//apps/make/jp2.o /home/makerpm/kakadu//apps/make/kdu_stripe_decompressor.o /home/makerpm/kakadu//apps/make/libkdu_v75R.so  -llcms2 -lz -lpthread -lfcgi -ljpeg -ltiff -lm
/home/makerpm/kakadu//apps/make/kdu_stripe_decompressor.o: In function `kd_supp_local::kdsd_tile::init(kd_supp_local::kdsd_component_state*, int)':
kdu_stripe_decompressor.cpp:(.text+0x210e): undefined reference to `kd_supp_simd::ssse3_int16_to_uint8_rs_ilv1(unsigned char*, short**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x215c): undefined reference to `kd_supp_simd::ssse3_int16_to_uint8_rs_ilv3(unsigned char*, short**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x21b3): undefined reference to `kd_supp_simd::ssse3_int16_to_uint8_rs_ilv4(unsigned char*, short**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x21c1): undefined reference to `kd_supp_simd::ssse3_stripe_transfer_static_init()'
kdu_stripe_decompressor.cpp:(.text+0x220b): undefined reference to `kd_supp_simd::ssse3_floats_to_floats_ilv1(float*, float**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x224f): undefined reference to `kd_supp_simd::ssse3_floats_to_uint8_ilv1(unsigned char*, float**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x227a): undefined reference to `kd_supp_simd::ssse3_floats_to_uint8_ilv3(unsigned char*, float**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x22a5): undefined reference to `kd_supp_simd::ssse3_floats_to_uint8_ilv4(unsigned char*, float**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x2333): undefined reference to `kd_supp_simd::ssse3_int16_to_int16_ilv1(short*, short**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x235d): undefined reference to `kd_supp_simd::ssse3_floats_to_int16_ilv1(short*, float**, int, int, int, bool, bool, int)'
kdu_stripe_decompressor.cpp:(.text+0x2399): undefined reference to `kd_supp_simd::ssse3_int32_to_int16_rs_ilv1(short*, int**, int, int, int, bool, bool, int)'
collect2: ld returned 1 exit status
make[1]: *** [iipsrv.fcgi] Error 1
make[1]: Leaving directory `/home/makerpm/iipsrv/src'

Gonna try disabling SSE3 as you suggested

@carroarmato0
Copy link

Yup, disabling SSE3 makes it compile correctly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants