configure: Disable gphoto2.ds if the needed Unix libraries are missing.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2021-10-29 09:33:30 +02:00
parent 84a968abce
commit 929e2a54e3
7 changed files with 16 additions and 67 deletions

16
configure vendored
View File

@ -13576,15 +13576,9 @@ fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gphoto2_gp_camera_new" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gphoto2_gp_camera_new" >&5
$as_echo "$ac_cv_lib_gphoto2_gp_camera_new" >&6; } $as_echo "$ac_cv_lib_gphoto2_gp_camera_new" >&6; }
if test "x$ac_cv_lib_gphoto2_gp_camera_new" = xyes; then : if test "x$ac_cv_lib_gphoto2_gp_camera_new" = xyes; then :
:
$as_echo "#define HAVE_GPHOTO2 1" >>confdefs.h
else
GPHOTO2_LIBS=""; GPHOTO2_CFLAGS=""
fi fi
else
GPHOTO2_LIBS=""; GPHOTO2_CFLAGS=""
fi fi
@ -13668,7 +13662,7 @@ if test "$ac_cv_lib_gphoto2_gp_camera_new" != "yes"; then :
*) as_fn_error $? "libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported. *) as_fn_error $? "libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported.
This is an error since --with-gphoto was requested." "$LINENO" 5 ;; This is an error since --with-gphoto was requested." "$LINENO" 5 ;;
esac esac
enable_gphoto2_ds=${enable_gphoto2_ds:-no}
fi fi
if test "$ac_cv_lib_gphoto2_port_gp_port_info_list_new" != "yes"; then : if test "$ac_cv_lib_gphoto2_port_gp_port_info_list_new" != "yes"; then :
case "x$with_gphoto" in case "x$with_gphoto" in
@ -15218,12 +15212,12 @@ CPPFLAGS=$ac_save_CPPFLAGS
fi fi
if test "x$ac_cv_lib_soname_jpeg" = "x"; then : if test "x$ac_cv_lib_soname_jpeg" = "x"; then :
case "x$with_jpeg" in case "x$with_jpeg" in
x) as_fn_append wine_warnings "|libjpeg ${notice_platform}development files not found, JPEG won't be supported." ;; x) as_fn_append wine_warnings "|libjpeg ${notice_platform}development files not found, gphoto2 won't be supported." ;;
xno) ;; xno) ;;
*) as_fn_error $? "libjpeg ${notice_platform}development files not found, JPEG won't be supported. *) as_fn_error $? "libjpeg ${notice_platform}development files not found, gphoto2 won't be supported.
This is an error since --with-jpeg was requested." "$LINENO" 5 ;; This is an error since --with-jpeg was requested." "$LINENO" 5 ;;
esac esac
enable_gphoto2_ds=${enable_gphoto2_ds:-no}
fi fi
if test "$ac_cv_header_AL_al_h" = "yes" if test "$ac_cv_header_AL_al_h" = "yes"

View File

@ -1379,11 +1379,7 @@ then
WINE_PACKAGE_FLAGS(GPHOTO2,[libgphoto2],[-lgphoto2], WINE_PACKAGE_FLAGS(GPHOTO2,[libgphoto2],[-lgphoto2],
[`${GPHOTO2_CONFIG:-gphoto2-config} --cflags 2>/dev/null`],[`${GPHOTO2_CONFIG:-gphoto2-config} --libs 2>/dev/null`], [`${GPHOTO2_CONFIG:-gphoto2-config} --cflags 2>/dev/null`],[`${GPHOTO2_CONFIG:-gphoto2-config} --libs 2>/dev/null`],
[AC_CHECK_HEADER(gphoto2-camera.h, [AC_CHECK_HEADER(gphoto2-camera.h,
[AC_CHECK_LIB(gphoto2,gp_camera_new, [AC_CHECK_LIB(gphoto2,gp_camera_new,[:],,[$GPHOTO2_LIBS])])])
[AC_DEFINE(HAVE_GPHOTO2, 1, [Define if we have the libgphoto2 development environment])],
[GPHOTO2_LIBS=""; GPHOTO2_CFLAGS=""],
[$GPHOTO2_LIBS])],
[GPHOTO2_LIBS=""; GPHOTO2_CFLAGS=""])])
WINE_PACKAGE_FLAGS(GPHOTO2_PORT,[libgphoto2_port],[-lgphoto2_port], WINE_PACKAGE_FLAGS(GPHOTO2_PORT,[libgphoto2_port],[-lgphoto2_port],
[`${GPHOTO2_PORT_CONFIG:-gphoto2-port-config} --cflags 2>/dev/null`], [`${GPHOTO2_PORT_CONFIG:-gphoto2-port-config} --cflags 2>/dev/null`],
[`${GPHOTO2_PORT_CONFIG:-gphoto2-port-config} --libs 2>/dev/null`], [`${GPHOTO2_PORT_CONFIG:-gphoto2-port-config} --libs 2>/dev/null`],
@ -1395,7 +1391,8 @@ then
[GPHOTO2_PORT_LIBS=""; GPHOTO2_PORT_CFLAGS=""])]) [GPHOTO2_PORT_LIBS=""; GPHOTO2_PORT_CFLAGS=""])])
fi fi
WINE_NOTICE_WITH(gphoto,[test "$ac_cv_lib_gphoto2_gp_camera_new" != "yes"], WINE_NOTICE_WITH(gphoto,[test "$ac_cv_lib_gphoto2_gp_camera_new" != "yes"],
[libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported.]) [libgphoto2 ${notice_platform}development files not found, digital cameras won't be supported.],
[enable_gphoto2_ds])
WINE_NOTICE_WITH(gphoto,[test "$ac_cv_lib_gphoto2_port_gp_port_info_list_new" != "yes"], WINE_NOTICE_WITH(gphoto,[test "$ac_cv_lib_gphoto2_port_gp_port_info_list_new" != "yes"],
[libgphoto2_port ${notice_platform}development files not found, digital cameras won't be auto-detected.]) [libgphoto2_port ${notice_platform}development files not found, digital cameras won't be auto-detected.])
@ -1702,7 +1699,8 @@ then
fi]) fi])
fi fi
WINE_WARNING_WITH(jpeg,[test "x$ac_cv_lib_soname_jpeg" = "x"], WINE_WARNING_WITH(jpeg,[test "x$ac_cv_lib_soname_jpeg" = "x"],
[libjpeg ${notice_platform}development files not found, JPEG won't be supported.]) [libjpeg ${notice_platform}development files not found, gphoto2 won't be supported.],
[enable_gphoto2_ds])
dnl **** Check for OpenAL 1.1 **** dnl **** Check for OpenAL 1.1 ****
if test "$ac_cv_header_AL_al_h" = "yes" if test "$ac_cv_header_AL_al_h" = "yes"

View File

@ -31,7 +31,6 @@
WINE_DEFAULT_DEBUG_CHANNEL(twain); WINE_DEFAULT_DEBUG_CHANNEL(twain);
#ifdef HAVE_GPHOTO2
static void *libjpeg_handle; static void *libjpeg_handle;
#define MAKE_FUNCPTR(f) static typeof(f) * p##f #define MAKE_FUNCPTR(f) static typeof(f) * p##f
MAKE_FUNCPTR(jpeg_std_error); MAKE_FUNCPTR(jpeg_std_error);
@ -85,7 +84,6 @@ static boolean _jpeg_resync_to_restart(j_decompress_ptr cinfo, int desired) {
return FALSE; return FALSE;
} }
static void _jpeg_term_source(j_decompress_ptr cinfo) { } static void _jpeg_term_source(j_decompress_ptr cinfo) { }
#endif
/* DG_IMAGE/DAT_CIECOLOR/MSG_GET */ /* DG_IMAGE/DAT_CIECOLOR/MSG_GET */
TW_UINT16 GPHOTO2_CIEColorGet (pTW_IDENTITY pOrigin, TW_UINT16 GPHOTO2_CIEColorGet (pTW_IDENTITY pOrigin,
@ -132,7 +130,6 @@ TW_UINT16 GPHOTO2_ImageFileXferGet (pTW_IDENTITY pOrigin,
return TWRC_FAILURE; return TWRC_FAILURE;
} }
#ifdef HAVE_GPHOTO2
static TW_UINT16 _get_image_and_startup_jpeg(void) { static TW_UINT16 _get_image_and_startup_jpeg(void) {
const char *folder = NULL, *filename = NULL; const char *folder = NULL, *filename = NULL;
struct gphoto2_file *file; struct gphoto2_file *file;
@ -204,13 +201,11 @@ static TW_UINT16 _get_image_and_startup_jpeg(void) {
} }
return TWRC_SUCCESS; return TWRC_SUCCESS;
} }
#endif
/* DG_IMAGE/DAT_IMAGEINFO/MSG_GET */ /* DG_IMAGE/DAT_IMAGEINFO/MSG_GET */
TW_UINT16 GPHOTO2_ImageInfoGet (pTW_IDENTITY pOrigin, TW_UINT16 GPHOTO2_ImageInfoGet (pTW_IDENTITY pOrigin,
TW_MEMREF pData) TW_MEMREF pData)
{ {
#ifdef HAVE_GPHOTO2
pTW_IMAGEINFO pImageInfo = (pTW_IMAGEINFO) pData; pTW_IMAGEINFO pImageInfo = (pTW_IMAGEINFO) pData;
TRACE("DG_IMAGE/DAT_IMAGEINFO/MSG_GET\n"); TRACE("DG_IMAGE/DAT_IMAGEINFO/MSG_GET\n");
@ -246,9 +241,6 @@ TW_UINT16 GPHOTO2_ImageInfoGet (pTW_IDENTITY pOrigin,
pImageInfo->ImageLength = activeDS.jd.output_height; pImageInfo->ImageLength = activeDS.jd.output_height;
pImageInfo->BitsPerPixel = 24; pImageInfo->BitsPerPixel = 24;
return TWRC_SUCCESS; return TWRC_SUCCESS;
#else
return TWRC_FAILURE;
#endif
} }
/* DG_IMAGE/DAT_IMAGELAYOUT/MSG_GET */ /* DG_IMAGE/DAT_IMAGELAYOUT/MSG_GET */
@ -291,7 +283,6 @@ TW_UINT16 GPHOTO2_ImageLayoutSet (pTW_IDENTITY pOrigin,
TW_UINT16 GPHOTO2_ImageMemXferGet (pTW_IDENTITY pOrigin, TW_UINT16 GPHOTO2_ImageMemXferGet (pTW_IDENTITY pOrigin,
TW_MEMREF pData) TW_MEMREF pData)
{ {
#ifdef HAVE_GPHOTO2
TW_UINT16 twRC = TWRC_SUCCESS; TW_UINT16 twRC = TWRC_SUCCESS;
pTW_IMAGEMEMXFER pImageMemXfer = (pTW_IMAGEMEMXFER) pData; pTW_IMAGEMEMXFER pImageMemXfer = (pTW_IMAGEMEMXFER) pData;
LPBYTE buffer; LPBYTE buffer;
@ -367,16 +358,12 @@ TW_UINT16 GPHOTO2_ImageMemXferGet (pTW_IDENTITY pOrigin,
if (pImageMemXfer->Memory.Flags & TWMF_HANDLE) if (pImageMemXfer->Memory.Flags & TWMF_HANDLE)
LocalUnlock(pImageMemXfer->Memory.TheMem); LocalUnlock(pImageMemXfer->Memory.TheMem);
return twRC; return twRC;
#else
return TWRC_FAILURE;
#endif
} }
/* DG_IMAGE/DAT_IMAGENATIVEXFER/MSG_GET */ /* DG_IMAGE/DAT_IMAGENATIVEXFER/MSG_GET */
TW_UINT16 GPHOTO2_ImageNativeXferGet (pTW_IDENTITY pOrigin, TW_UINT16 GPHOTO2_ImageNativeXferGet (pTW_IDENTITY pOrigin,
TW_MEMREF pData) TW_MEMREF pData)
{ {
#ifdef HAVE_GPHOTO2
pTW_UINT32 pHandle = (pTW_UINT32) pData; pTW_UINT32 pHandle = (pTW_UINT32) pData;
HBITMAP hDIB; HBITMAP hDIB;
BITMAPINFO bmpInfo; BITMAPINFO bmpInfo;
@ -456,9 +443,6 @@ TW_UINT16 GPHOTO2_ImageNativeXferGet (pTW_IDENTITY pOrigin,
activeDS.twCC = TWCC_SUCCESS; activeDS.twCC = TWCC_SUCCESS;
activeDS.currentState = 7; activeDS.currentState = 7;
return TWRC_XFERDONE; return TWRC_XFERDONE;
#else
return TWRC_FAILURE;
#endif
} }
/* DG_IMAGE/DAT_JPEGCOMPRESSION/MSG_GET */ /* DG_IMAGE/DAT_JPEGCOMPRESSION/MSG_GET */
@ -552,7 +536,6 @@ TW_UINT16 GPHOTO2_RGBResponseSet (pTW_IDENTITY pOrigin,
return TWRC_FAILURE; return TWRC_FAILURE;
} }
#ifdef HAVE_GPHOTO2
TW_UINT16 TW_UINT16
_get_gphoto2_file_as_DIB( _get_gphoto2_file_as_DIB(
const char *folder, const char *filename, CameraFileType type, const char *folder, const char *filename, CameraFileType type,
@ -660,4 +643,3 @@ _get_gphoto2_file_as_DIB(
gp_file_unref (file); gp_file_unref (file);
return TWRC_SUCCESS; return TWRC_SUCCESS;
} }
#endif

View File

@ -24,17 +24,10 @@
# error You must include config.h first # error You must include config.h first
#endif #endif
#if defined(HAVE_GPHOTO2) && !defined(SONAME_LIBJPEG)
# warning "gphoto2 support in twain needs jpeg development headers"
# undef HAVE_GPHOTO2
#endif
#ifdef HAVE_GPHOTO2
/* Hack for gphoto2, which changes behaviour when WIN32 is set. */ /* Hack for gphoto2, which changes behaviour when WIN32 is set. */
#undef WIN32 #undef WIN32
#include <gphoto2/gphoto2-camera.h> #include <gphoto2/gphoto2-camera.h>
#define WIN32 #define WIN32
#endif
#include <stdio.h> #include <stdio.h>
@ -79,10 +72,8 @@ struct tagActiveDS
TW_UINT16 twCC; /* condition code */ TW_UINT16 twCC; /* condition code */
HWND progressWnd; /* window handle of the scanning window */ HWND progressWnd; /* window handle of the scanning window */
#ifdef HAVE_GPHOTO2
Camera *camera; Camera *camera;
GPContext *context; GPContext *context;
#endif
/* Capabilities */ /* Capabilities */
TW_UINT32 capXferMech; /* ICAP_XFERMECH */ TW_UINT32 capXferMech; /* ICAP_XFERMECH */
@ -92,9 +83,7 @@ struct tagActiveDS
struct list files; struct list files;
/* Download and decode JPEG STATE */ /* Download and decode JPEG STATE */
#ifdef HAVE_GPHOTO2
CameraFile *file; CameraFile *file;
#endif
#ifdef SONAME_LIBJPEG #ifdef SONAME_LIBJPEG
struct jpeg_source_mgr xjsm; struct jpeg_source_mgr xjsm;
struct jpeg_decompress_struct jd; struct jpeg_decompress_struct jd;
@ -158,12 +147,11 @@ TW_UINT16 GPHOTO2_RGBResponseSet
BOOL DoCameraUI(void) DECLSPEC_HIDDEN; BOOL DoCameraUI(void) DECLSPEC_HIDDEN;
HWND TransferringDialogBox(HWND dialog, LONG progress) DECLSPEC_HIDDEN; HWND TransferringDialogBox(HWND dialog, LONG progress) DECLSPEC_HIDDEN;
#ifdef HAVE_GPHOTO2
/* Helper function for GUI */ /* Helper function for GUI */
TW_UINT16 TW_UINT16
_get_gphoto2_file_as_DIB( _get_gphoto2_file_as_DIB(
const char *folder, const char *filename, CameraFileType type, const char *folder, const char *filename, CameraFileType type,
HWND hwnd, HBITMAP *hDIB HWND hwnd, HBITMAP *hDIB
) DECLSPEC_HIDDEN; ) DECLSPEC_HIDDEN;
#endif
#endif #endif

View File

@ -37,18 +37,15 @@ struct tagActiveDS activeDS;
DSMENTRYPROC GPHOTO2_dsmentry; DSMENTRYPROC GPHOTO2_dsmentry;
#ifdef HAVE_GPHOTO2
static char* GPHOTO2_StrDup(const char* str) static char* GPHOTO2_StrDup(const char* str)
{ {
char* dst = HeapAlloc(GetProcessHeap(), 0, strlen(str)+1); char* dst = HeapAlloc(GetProcessHeap(), 0, strlen(str)+1);
strcpy(dst, str); strcpy(dst, str);
return dst; return dst;
} }
#endif
static void static void
load_filesystem(const char *folder) { load_filesystem(const char *folder) {
#ifdef HAVE_GPHOTO2
int i, count, ret; int i, count, ret;
CameraList *list; CameraList *list;
@ -110,7 +107,6 @@ load_filesystem(const char *folder) {
load_filesystem (newfolder); /* recurse ... happily */ load_filesystem (newfolder); /* recurse ... happily */
} }
gp_list_free (list); gp_list_free (list);
#endif
} }
/* DG_CONTROL/DAT_CAPABILITY/MSG_GET */ /* DG_CONTROL/DAT_CAPABILITY/MSG_GET */
@ -577,16 +573,14 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
case DLL_PROCESS_ATTACH: case DLL_PROCESS_ATTACH:
GPHOTO2_instance = hinstDLL; GPHOTO2_instance = hinstDLL;
DisableThreadLibraryCalls(hinstDLL); DisableThreadLibraryCalls(hinstDLL);
#ifdef HAVE_GPHOTO2
activeDS.context = gp_context_new (); activeDS.context = gp_context_new ();
#endif
break; break;
} }
return TRUE; return TRUE;
} }
#if defined(HAVE_GPHOTO2) && defined(HAVE_GPHOTO2_PORT) #ifdef HAVE_GPHOTO2_PORT
static TW_UINT16 GPHOTO2_GetIdentity( pTW_IDENTITY, pTW_IDENTITY); static TW_UINT16 GPHOTO2_GetIdentity( pTW_IDENTITY, pTW_IDENTITY);
static TW_UINT16 GPHOTO2_OpenDS( pTW_IDENTITY, pTW_IDENTITY); static TW_UINT16 GPHOTO2_OpenDS( pTW_IDENTITY, pTW_IDENTITY);
#endif #endif
@ -605,7 +599,7 @@ static TW_UINT16 GPHOTO2_SourceControlHandler (
switch (MSG) switch (MSG)
{ {
case MSG_CLOSEDS: case MSG_CLOSEDS:
#if defined(HAVE_GPHOTO2) && defined(HAVE_GPHOTO2_PORT) #ifdef HAVE_GPHOTO2_PORT
if (activeDS.camera) { if (activeDS.camera) {
gp_camera_free (activeDS.camera); gp_camera_free (activeDS.camera);
activeDS.camera = NULL; activeDS.camera = NULL;
@ -613,14 +607,14 @@ static TW_UINT16 GPHOTO2_SourceControlHandler (
#endif #endif
break; break;
case MSG_GET: case MSG_GET:
#if defined(HAVE_GPHOTO2) && defined(HAVE_GPHOTO2_PORT) #ifdef HAVE_GPHOTO2_PORT
twRC = GPHOTO2_GetIdentity(pOrigin,(pTW_IDENTITY)pData); twRC = GPHOTO2_GetIdentity(pOrigin,(pTW_IDENTITY)pData);
#else #else
twRC = TWRC_FAILURE; twRC = TWRC_FAILURE;
#endif #endif
break; break;
case MSG_OPENDS: case MSG_OPENDS:
#if defined(HAVE_GPHOTO2) && defined(HAVE_GPHOTO2_PORT) #ifdef HAVE_GPHOTO2_PORT
twRC = GPHOTO2_OpenDS(pOrigin,(pTW_IDENTITY)pData); twRC = GPHOTO2_OpenDS(pOrigin,(pTW_IDENTITY)pData);
#else #else
twRC = TWRC_FAILURE; twRC = TWRC_FAILURE;
@ -1039,7 +1033,7 @@ DS_Entry ( pTW_IDENTITY pOrigin,
return twRC; return twRC;
} }
#if defined(HAVE_GPHOTO2) && defined(HAVE_GPHOTO2_PORT) #ifdef HAVE_GPHOTO2_PORT
static GPPortInfoList *port_list; static GPPortInfoList *port_list;
static int curcamera; static int curcamera;
static CameraList *detected_cameras; static CameraList *detected_cameras;

View File

@ -122,12 +122,8 @@ static void PopulateImageList(HIMAGELIST *iList, HWND list)
HBITMAP bitmap; HBITMAP bitmap;
BITMAP bmpInfo; BITMAP bmpInfo;
#ifdef HAVE_GPHOTO2
_get_gphoto2_file_as_DIB(file->folder, file->filename, _get_gphoto2_file_as_DIB(file->folder, file->filename,
GP_FILE_TYPE_PREVIEW, 0, &bitmap); GP_FILE_TYPE_PREVIEW, 0, &bitmap);
#else
bitmap = 0;
#endif
GetObjectA(bitmap,sizeof(BITMAP),&bmpInfo); GetObjectA(bitmap,sizeof(BITMAP),&bmpInfo);
if (*iList == 0) if (*iList == 0)

View File

@ -116,9 +116,6 @@
/* Define to 1 if you have the `gnutls_cipher_init' function. */ /* Define to 1 if you have the `gnutls_cipher_init' function. */
#undef HAVE_GNUTLS_CIPHER_INIT #undef HAVE_GNUTLS_CIPHER_INIT
/* Define if we have the libgphoto2 development environment */
#undef HAVE_GPHOTO2
/* Define if we have the libgphoto2_port development environment */ /* Define if we have the libgphoto2_port development environment */
#undef HAVE_GPHOTO2_PORT #undef HAVE_GPHOTO2_PORT