Skip to content

Commit

Permalink
Merge pull request opencv#10344 from tomoaki0705:fixBuildLibtiff
Browse files Browse the repository at this point in the history
  • Loading branch information
alalek committed Dec 18, 2017
2 parents e29de5d + c057d29 commit 05b259f
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 24 deletions.
45 changes: 21 additions & 24 deletions 3rdparty/libtiff/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -35,31 +35,27 @@ if(NOT MSVC)
check_include_file(unistd.h HAVE_UNISTD_H)
endif()

if(MSVC)
set(INLINE_KEYWORD "inline")
else()
# Inspired from /usr/share/autoconf/autoconf/c.m4
foreach(inline_keyword "inline" "__inline__" "__inline")
if(NOT DEFINED C_INLINE)
set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS})
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
"-Dinline=${inline_keyword}")
check_c_source_compiles("
typedef int foo_t;
static inline foo_t static_foo() {return 0;}
foo_t foo(){return 0;}
int main(int argc, char *argv[]) {return 0;}"
C_HAS_${inline_keyword})
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS_SAVE})
if(C_HAS_${inline_keyword})
set(C_INLINE TRUE)
set(INLINE_KEYWORD "${inline_keyword}")
endif()
endif()
endforeach()
# Inspired from /usr/share/autoconf/autoconf/c.m4
foreach(inline_keyword "inline" "__inline__" "__inline")
if(NOT DEFINED C_INLINE)
set(INLINE_KEYWORD)
endif()
set(CMAKE_REQUIRED_DEFINITIONS_SAVE ${CMAKE_REQUIRED_DEFINITIONS})
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS}
"-Dinline=${inline_keyword}")
check_c_source_compiles("
typedef int foo_t;
static inline foo_t static_foo() {return 0;}
foo_t foo(){return 0;}
int main(int argc, char *argv[]) {return 0;}"
C_HAS_${inline_keyword})
set(CMAKE_REQUIRED_DEFINITIONS ${CMAKE_REQUIRED_DEFINITIONS_SAVE})
if(C_HAS_${inline_keyword})
set(C_INLINE TRUE)
set(INLINE_KEYWORD "${inline_keyword}")
endif()
endif()
endforeach()
if(NOT DEFINED C_INLINE)
set(INLINE_KEYWORD)
endif()


Expand Down Expand Up @@ -414,6 +410,7 @@ set(lib_srcs
tif_write.c
tif_zip.c
tif_stream.cxx
snprintf.c
t4.h
tif_dir.h
tif_fax3.h
Expand Down
38 changes: 38 additions & 0 deletions 3rdparty/libtiff/snprintf.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/**
* Workaround for lack of snprintf(3) in Visual Studio. See
* http://stackoverflow.com/questions/2915672/snprintf-and-visual-studio-2010/8712996#8712996
* It's a trivial wrapper around the builtin _vsnprintf_s and
* _vscprintf functions.
*/

#ifdef _MSC_VER

#include <stdio.h>
#include <stdarg.h>

int _TIFF_vsnprintf_f(char* str, size_t size, const char* format, va_list ap)
{
int count = -1;

if (size != 0)
count = _vsnprintf_s(str, size, _TRUNCATE, format, ap);
if (count == -1)
count = _vscprintf(format, ap);

return count;
}

int _TIFF_snprintf_f(char* str, size_t size, const char* format, ...)
{
int count;
va_list ap;

va_start(ap, format);
count = vsnprintf(str, size, format, ap);
va_end(ap);

return count;
}

#endif // _MSC_VER

0 comments on commit 05b259f

Please sign in to comment.