[1.5] Create a new cmake option to choose between convienient copy of getopt and...
authorMathieu Malaterre <mathieu.malaterre@gmail.com>
Tue, 18 Mar 2014 15:59:08 +0000 (15:59 +0000)
committerMathieu Malaterre <mathieu.malaterre@gmail.com>
Tue, 18 Mar 2014 15:59:08 +0000 (15:59 +0000)
Udapte issue 301

CMakeLists.txt
applications/codec/CMakeLists.txt
applications/common/opj_getopt.c
applications/common/opj_getopt.h
opj_config.h.cmake.in
tests/CMakeLists.txt

index aaa4b22b5a35da0d260f74674c337540b8598351..253e46adcb6e524aa7635c8498b4739dd5e0f61f 100644 (file)
@@ -233,6 +233,8 @@ IF(BUILD_JPIP)
 ENDIF(BUILD_JPIP)
 OPTION(BUILD_VIEWER "Build the OPJViewer executable (C++)" OFF)
 OPTION(BUILD_JAVA "Build the openjpeg jar (Java)" OFF)
+OPTION(USE_SYSTEM_GETOPT "Prefer system installed getopt()" OFF)
+MARK_AS_ADVANCED(USE_SYSTEM_GETOPT)
 MARK_AS_ADVANCED(BUILD_VIEWER)
 MARK_AS_ADVANCED(BUILD_JAVA)
 
index 2a195155ac2b5645d90a704e4a93b0eb76451e29..c0a4dd7253a045a29693571060e5a6f2666eb0e0 100644 (file)
@@ -5,8 +5,12 @@ SET(common_SRCS
   convert.c
   index.c
   ${OPENJPEG_SOURCE_DIR}/applications/common/color.c
-  ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c
   )
+if(NOT USE_SYSTEM_GETOPT)
+  list(APPEND common_SRCS
+    ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c
+  )
+endif()
 
 # Headers file are located here:
 INCLUDE_DIRECTORIES(
index 6fcead469d0d22700515190f8b172cb7df269e11..2c45c46af12e0888a962bfedf5c382b2a12ddc28 100644 (file)
@@ -38,6 +38,10 @@ static char sccsid[] = "@(#)opj_getopt.c     8.3 (Berkeley) 4/27/95";
 #include <string.h>
 #include "opj_getopt.h"
 
+#ifdef USE_SYSTEM_GETOPT
+#error
+#endif
+
 int opj_opterr = 1,                    /* if error message should be printed */
  opj_optind = 1,                       /* index into parent argv vector */
  opj_optopt,                   /* character checked for validity */
index e1f41a564dd8135aee2ab8e33216565b52a95487..1fa3558df7a2a328a7892c13c8b129d26eb95ab9 100644 (file)
@@ -1,5 +1,7 @@
 /* last review : october 29th, 2002 */
 
+#include "opj_config.h"
+
 #ifndef _GETOPT_H_
 #define _GETOPT_H_
 
@@ -9,12 +11,25 @@ typedef struct opj_option
        int has_arg;
        int *flag;
        int val;
-}opj_option_t;
+} opj_option_t;
 
 #define        NO_ARG  0
 #define REQ_ARG        1
 #define OPT_ARG        2
 
+#ifdef USE_SYSTEM_GETOPT
+#include <getopt.h>
+
+#define opj_opterr opterr
+#define opj_optind optind
+#define opj_optopt optopt
+#define opj_optreset optreset
+#define opj_optarg optarg
+
+#define opj_getopt getopt
+#define opj_getopt_long getopt_long
+
+#else
 extern int opj_opterr;
 extern int opj_optind;
 extern int opj_optopt;
@@ -26,4 +41,5 @@ extern int opj_getopt_long(int argc, char * const argv[], const char *optstring,
                        const opj_option_t *longopts, int totlen);
 extern void reset_options_reading(void);
 
+#endif /* USE_SYSTEM_GETOPT */
 #endif                         /* _GETOPT_H_ */
index 999d366c1c06bc27e60d2d6a7340993f8371a8d8..1b21e068f4da5fb707ca19f0f6f54751523002cb 100644 (file)
@@ -19,6 +19,7 @@
 #cmakedefine HAVE_LIBLCMS2
 #cmakedefine HAVE_LCMS1_H
 #cmakedefine HAVE_LCMS2_H
+#cmakedefine USE_SYSTEM_GETOPT
 
 /* Byte order.  */
 /* All compilers that support Mac OS X define either __BIG_ENDIAN__ or
index ff3057eb9877b93c8d5064f11ee8a9f2fc403b7e..fa7747e5c5576a94f4a6e3265df968b13b3f7ec3 100644 (file)
@@ -11,14 +11,15 @@ INCLUDE_DIRECTORIES(
 # First thing define the common source:
 SET(comparePGXimages_SRCS comparePGXimages.c
   ${OPENJPEG_SOURCE_DIR}/applications/codec/convert.c
-  ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c
   )
-
-SET(compare_dump_files_SRCS compare_dump_files.c
-  ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
-
-SET(compareRAWimages_SRCS compareRAWimages.c
-  ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
+SET(compare_dump_files_SRCS compare_dump_files.c)
+SET(compareRAWimages_SRCS compareRAWimages.c)
+
+if(NOT USE_SYSTEM_GETOPT)
+  list(APPEND comparePGXimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
+  list(APPEND compare_dump_files_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
+  list(APPEND compareRAWimages_SRCS ${OPENJPEG_SOURCE_DIR}/applications/common/opj_getopt.c)
+endif()
 
 ADD_EXECUTABLE(comparePGXimages ${comparePGXimages_SRCS})
 TARGET_LINK_LIBRARIES(comparePGXimages