iron261 / openjpeg

Automatically exported from code.google.com/p/openjpeg
Other
0 stars 0 forks source link

openjpeg2 pkg-config support #68

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Until now (31.03.2011) only one pkg-config file exists:
openjpeg1.pc .

But OpenJPEG-1.4.0 may create three libraries:
  libopenjpeg.*
  libopenjpeg_JPWL.*
  libopenjp3dvm.*

So two pkg-config files are missing.

winfried

Original issue reported on code.google.com by szukw...@arcor.de on 31 Mar 2011 at 12:08

GoogleCodeExporter commented 9 years ago
i think that there are still 2 missing .pc files, but it's for jpwl and jpip.

Btw, usually, in FOSS, they are named with a '-' and in lower case, like:

openjpeg-jpwl.pc

I'll send a patch

Vincent Torri

Original comment by vincent....@gmail.com on 9 Jun 2011 at 7:14

GoogleCodeExporter commented 9 years ago
for 1.6 release

Original comment by vincent....@gmail.com on 13 Jul 2011 at 3:34

GoogleCodeExporter commented 9 years ago

Original comment by mathieu.malaterre on 29 May 2012 at 12:49

GoogleCodeExporter commented 9 years ago

Original comment by mathieu.malaterre on 29 May 2012 at 12:49

GoogleCodeExporter commented 9 years ago
OpenJPEG 2.0 does not include any pkg-config files at all.  This makes it 
unnecessarily difficult for projects that do not use cmake to build against 
OpenJPEG.

Original comment by bgilb...@backtick.net on 26 Nov 2012 at 5:46

GoogleCodeExporter commented 9 years ago
sorry, this is on my plate to help implement... will try to make some progress 
this week.

Original comment by rdieter@gmail.com on 26 Nov 2012 at 5:48

GoogleCodeExporter commented 9 years ago
This issue is causing me pain too. I maintain an image processing library which 
depends on openslide, which in turn depends on openjpeg. With no pkgconfig it's 
much harder than it should be for me to make Windows and OS X binaries. 

I found this mail with a possible pkg-config.pc.cmake.in file:

https://groups.google.com/forum/?fromgroups=#!topic/openjpeg/arDqgbryCsg

I don't know if that helps. 

Original comment by jcup...@gmail.com on 21 Feb 2013 at 10:52

GoogleCodeExporter commented 9 years ago
Hello,

The lack of pkg-config files prevents FFmpeg (or any softwares depending on 
openjpeg) from using openjpeg 2.0. It would be *really* great if you can fix 
this issue.

Thanks in advance.

Original comment by matthieu...@gmail.com on 19 Apr 2013 at 8:56

GoogleCodeExporter commented 9 years ago
Sorry for the delay... I'll try to make this a priority to work on soon

Original comment by rdieter@gmail.com on 19 Apr 2013 at 3:12

GoogleCodeExporter commented 9 years ago
There is a 'libopenjp2.pc' since looooong.

What is missing is a PC file for JPWL. 

But is that necessary? When I know where the JP2 file is installed,
then I know where the JPWL file is installed.

winfried

Original comment by szukw...@arcor.de on 21 Apr 2013 at 1:04

GoogleCodeExporter commented 9 years ago
It should be possible to run, for example, "pkg-config --libs openjpwl" to 
obtain the complete set of linker options needed to link with the library.  
Yes, it would be possible to run "pkg-config --variable=libdir libopenjp2" and 
use the output to construct the linker command line, but that's not how 
pkg-config is supposed to work.

Original comment by bgilb...@backtick.net on 9 Jul 2013 at 9:39

GoogleCodeExporter commented 9 years ago
As the condition 'if(UNIX)' is not removed in the main
CMakeLists.txt, the following changes in the main
CMakeLists.txt are:

--- openjpeg-trunk-r2343-6/CMakeLists.txt.orig  2013-07-04 12:01:51.273904177 
+0000
+++ openjpeg-trunk-r2343-6/CMakeLists.txt   2013-07-10 09:07:13.788122422 +0000
@@ -143,7 +143,7 @@
 #-----------------------------------------------------------------------------
 # Big endian test:
 include (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
-TEST_BIG_ENDIAN(OPJ_BIG_ENDIAN)
+TEST_BIG_ENDIAN(WORDS_BIGENDIAN)

 #-----------------------------------------------------------------------------
 # Setup file for setting custom ctest vars
@@ -314,5 +314,22 @@
     ${CMAKE_CURRENT_BINARY_DIR}/libopenjp2.pc @ONLY)
   install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjp2.pc DESTINATION
     ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+  # install in lib and not share (see multi-arch note above)
+  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjpwl/libopenjpwl.pc.cmake
.in
+    ${CMAKE_CURRENT_BINARY_DIR}/libopenjpwl.pc @ONLY)
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjpwl.pc DESTINATION
+    ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+
+  # install in lib and not share (see multi-arch note above)
+  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjpip/libopenjpip.pc.cmake
.in
+    ${CMAKE_CURRENT_BINARY_DIR}/libopenjpip.pc @ONLY)
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjpip.pc DESTINATION
+    ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+
+  # install in lib and not share (see multi-arch note above)
+  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjp3d/libopenjp3d.pc.cmake
.in
+    ${CMAKE_CURRENT_BINARY_DIR}/libopenjp3d.pc @ONLY)
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjp3d.pc DESTINATION
+    ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
 endif()
-#-----------------------------------------------------------------------------
\ No newline at end of file
+#-----------------------------------------------------------------------------

I propose the following *.pc.cmake.in files:

libopenjp2.pc.cmake.in:
=======================
prefix=@CMAKE_INSTALL_PREFIX@
bindir=${prefix}/@OPENJPEG_INSTALL_BIN_DIR@
mandir=${prefix}/@OPENJPEG_INSTALL_MAN_DIR@
docdir=${prefix}/@OPENJPEG_INSTALL_DOC_DIR@
libdir=${prefix}/@OPENJPEG_INSTALL_LIB_DIR@
includedir=${prefix}/@OPENJPEG_INSTALL_INCLUDE_DIR@

Name: openjp2
Description: JPEG2000 library (Part 1 and 2)
URL: http://www.openjpeg.org/
Version: @OPENJPEG_VERSION@
Libs: -L${libdir} -lopenjp2
Libs.private: -lm
Cflags: -I${includedir}

libopenjp3d.pc.cmake.in:
=======================
prefix=@CMAKE_INSTALL_PREFIX@
bindir=${prefix}/@OPENJPEG_INSTALL_BIN_DIR@
mandir=${prefix}/@OPENJPEG_INSTALL_MAN_DIR@
docdir=${prefix}/@OPENJPEG_INSTALL_DOC_DIR@
libdir=${prefix}/@OPENJPEG_INSTALL_LIB_DIR@
includedir=${prefix}/@OPENJPEG_INSTALL_INCLUDE_DIR@

Name: openjp3d
Description: JPEG2000 Extensions for three-dimensional data (Part 10)
URL: http://www.openjpeg.org/
Version: @OPENJPEG_VERSION@
Libs: -L${libdir} -lopenjp3d
Libs.private: -lm
Cflags: -I${includedir}

libopenjpip.pc.cmake.in:
=======================
prefix=@CMAKE_INSTALL_PREFIX@
bindir=${prefix}/@OPENJPEG_INSTALL_BIN_DIR@
mandir=${prefix}/@OPENJPEG_INSTALL_MAN_DIR@
docdir=${prefix}/@OPENJPEG_INSTALL_DOC_DIR@
libdir=${prefix}/@OPENJPEG_INSTALL_LIB_DIR@
includedir=${prefix}/@OPENJPEG_INSTALL_INCLUDE_DIR@

Name: openjpip
Description: JPEG2000 Interactivity tools, APIs and protocols (Part 9)
URL: http://www.openjpeg.org/
Version: @OPENJPEG_VERSION@
Requires: openjp2, curl
Requires.private: openjp2, curl
Libs: -L${libdir} -lopenjpwl -lopenjp2
Libs.private: -lm -lopenjp2 -lcurl -lfcgi -lpthread
Cflags: -I${includedir}

libopenjpwl.pc.cmake.in:
=======================
prefix=@CMAKE_INSTALL_PREFIX@
bindir=${prefix}/@OPENJPEG_INSTALL_BIN_DIR@
mandir=${prefix}/@OPENJPEG_INSTALL_MAN_DIR@
docdir=${prefix}/@OPENJPEG_INSTALL_DOC_DIR@
libdir=${prefix}/@OPENJPEG_INSTALL_LIB_DIR@
includedir=${prefix}/@OPENJPEG_INSTALL_INCLUDE_DIR@

Name: openjpwl
Description: JPEG2000 Wireless library (Part 11)
URL: http://www.openjpeg.org/
Version: @OPENJPEG_VERSION@
Libs: -L${libdir} -lopenjpwl -lopenjp2
Libs.private: -lm
Cflags: -I${includedir}

Are the lines

Requires: openjp2, curl
Requires.private: openjp2, curl

necessary for JPIP?

winfried

Original comment by szukw...@arcor.de on 10 Jul 2013 at 8:08

GoogleCodeExporter commented 9 years ago
The change in CMakeLists.txt is wrong. I added an earlier version of the diff 
file.
The correct diff file is:

--- CMakeLists.txt.orig 2013-07-04 12:01:51.273904177 +0000
+++ CMakeLists.txt  2013-07-10 09:34:11.113281552 +0000
@@ -143,7 +143,7 @@
 #-----------------------------------------------------------------------------
 # Big endian test:
 include (${CMAKE_ROOT}/Modules/TestBigEndian.cmake)
-TEST_BIG_ENDIAN(OPJ_BIG_ENDIAN)
+TEST_BIG_ENDIAN(WORDS_BIGENDIAN)

 #-----------------------------------------------------------------------------
 # Setup file for setting custom ctest vars
@@ -314,5 +314,29 @@
     ${CMAKE_CURRENT_BINARY_DIR}/libopenjp2.pc @ONLY)
   install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjp2.pc DESTINATION
     ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+#
+  if(BUILD_JPWL)
+  # install in lib and not share (see multi-arch note above)
+  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjpwl/libopenjpwl.pc.cmake
.in
+    ${CMAKE_CURRENT_BINARY_DIR}/libopenjpwl.pc @ONLY)
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjpwl.pc DESTINATION
+    ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+  endif()
+#
+  if(BUILD_JPIP)
+  # install in lib and not share (see multi-arch note above)
+  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjpip/libopenjpip.pc.cmake
.in
+    ${CMAKE_CURRENT_BINARY_DIR}/libopenjpip.pc @ONLY)
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjpip.pc DESTINATION
+    ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+  endif()
+#
+  if(BUILD_JP3D)
+  # install in lib and not share (see multi-arch note above)
+  
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/lib/openjp3d/libopenjp3d.pc.cmake
.in
+    ${CMAKE_CURRENT_BINARY_DIR}/libopenjp3d.pc @ONLY)
+  install( FILES  ${CMAKE_CURRENT_BINARY_DIR}/libopenjp3d.pc DESTINATION
+    ${OPENJPEG_INSTALL_LIB_DIR}/pkgconfig )
+  endif()
 endif()
-#-----------------------------------------------------------------------------
\ No newline at end of file
+#-----------------------------------------------------------------------------

winfried

Original comment by szukw...@arcor.de on 10 Jul 2013 at 8:13

GoogleCodeExporter commented 9 years ago
working on it for real now.  Thanks for the good start.

Original comment by rdieter@gmail.com on 15 Oct 2013 at 7:10

GoogleCodeExporter commented 9 years ago
https://code.google.com/p/openjpeg/source/detail?r=2348

I suppose there is probably interest to backport this to branches/openjpeg-2.0 
too?

Original comment by rdieter@gmail.com on 15 Oct 2013 at 7:25

GoogleCodeExporter commented 9 years ago
Backported to branches/openjpeg-2.0 with 
https://code.google.com/p/openjpeg/source/detail?r=2349

Original comment by rdieter@gmail.com on 28 Oct 2013 at 5:30