diff options
Diffstat (limited to 'source/blender/imbuf/intern/gen_dynlibtiff.py')
-rwxr-xr-x | source/blender/imbuf/intern/gen_dynlibtiff.py | 303 |
1 files changed, 0 insertions, 303 deletions
diff --git a/source/blender/imbuf/intern/gen_dynlibtiff.py b/source/blender/imbuf/intern/gen_dynlibtiff.py deleted file mode 100755 index fd69a353bfd..00000000000 --- a/source/blender/imbuf/intern/gen_dynlibtiff.py +++ /dev/null @@ -1,303 +0,0 @@ -#!/usr/bin/env python - -# ***** BEGIN GPL LICENSE BLOCK ***** -# -# This program is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License -# as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software Foundation, -# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# -# Contributor(s): Jonathan Merritt. -# -# ***** END GPL LICENSE BLOCK ***** - -# -# This script generates a C source file and a header file that implement -# dynamic loading functionality for libtiff. -# If you need to make more functions from libtiff available, then simply add -# them to the tiff_functions[] list below. -# - - -FILENAME = 'dynlibtiff' -C_FILENAME = '%s.c' % FILENAME -H_FILENAME = '%s.h' % FILENAME - - -COMMENT = \ -"""/** - * Dynamically loaded libtiff support. - * - * This file is automatically generated by the gen_dynlibtiff.py script. - * - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * Contributor(s): Jonathan Merritt. - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** - * To use the dynamic libtiff support, you must initialize the library using: - * libtiff_init() - * This attempts to load libtiff dynamically at runtime. G.have_libtiff will - * be set to indicate whether or not libtiff is available. If libtiff is - * not available, Blender can proceed with no ill effects, provided that - * it does not attempt to use any of the libtiff_ functions. When you're - * finished, close the library with: - * libtiff_exit() - * These functions are both declared in IMB_imbuf.h - * - * The functions provided by dyn_libtiff.h are the same as those in the - * normal static / shared libtiff, except that they are prefixed by the - * string "libtiff_" to indicate that they belong to a dynamically-loaded - * version. - */ -""" - - -C_EXTRA = \ -""" -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> - -#include "BLI_blenlib.h" - -#include "imbuf.h" -#include "imbuf_patch.h" -#include "IMB_imbuf.h" - -#include "BKE_global.h" -#include "PIL_dynlib.h" - -/********************* - * LOCAL DEFINITIONS * - *********************/ -PILdynlib *libtiff = NULL; -void libtiff_loadlibtiff(void); -void* libtiff_findsymbol(char*); -int libtiff_load_symbols(void); - - -/************************** - * LIBRARY INITIALIZATION * - **************************/ - -void libtiff_loadlibtiff(void) -{ - char *filename; - libtiff = NULL; - - filename = getenv("BF_TIFF_LIB"); - if (filename) libtiff = PIL_dynlib_open(filename); - if (libtiff != NULL) return; - - /* Try to find libtiff in a couple of standard places */ -#ifdef __APPLE__ - /* OSX has version specific library */ - //standard install location - libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.3.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.4.dylib"); - if (libtiff != NULL) return; - //inside the blender app package contents/resources - libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.3.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/../resources/libtiff.4.dylib"); - if (libtiff != NULL) return; - //inside the blender app package contents/frameworks - libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.3.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/../frameworks/libtiff.4.dylib"); - if (libtiff != NULL) return; - //along side the blender app package - libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.3.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/../../../libtiff.4.dylib"); - if (libtiff != NULL) return; - //inside the blender app package contents/MacOS - libtiff = PIL_dynlib_open("@executable_path/libtiff.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/libtiff.3.dylib"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("@executable_path/libtiff.4.dylib"); - if (libtiff != NULL) return; -#else - libtiff = PIL_dynlib_open("libtiff.so"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("libtiff.so.3"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("libtiff.so.4"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("libtiff.dll"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/lib/libtiff.so"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.3"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/lib/libtiff.so.4"); - if (libtiff != NULL) return; -#ifdef __x86_64__ - libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.3"); - if (libtiff != NULL) return; - libtiff = PIL_dynlib_open("/usr/lib64/libtiff.so.4"); - if (libtiff != NULL) return; -#endif - libtiff = PIL_dynlib_open("/usr/local/lib/libtiff.so"); - if (libtiff != NULL) return; - /* For solaris */ - libtiff = PIL_dynlib_open("/usr/openwin/lib/libtiff.so"); -#endif - -} - -void *libtiff_findsymbol(char *name) -{ - void *symbol = NULL; - assert(libtiff != NULL); - symbol = PIL_dynlib_find_symbol(libtiff, name); - if (symbol == NULL) { - char *err = PIL_dynlib_get_error_as_string(libtiff); - - if (err) printf("libtiff_findsymbol: error %s\\n",err); - else printf("libtiff_findsymbol: error Unknown.\\n"); - - libtiff = NULL; - G.have_libtiff = (0); - return NULL; - } - return symbol; -} - -void libtiff_init(void) -{ - if (libtiff != NULL) { - printf("libtiff_init: Attempted to load libtiff twice!\\n"); - return; - } - libtiff_loadlibtiff(); - G.have_libtiff = ((libtiff != NULL) && (libtiff_load_symbols())); -} - -void libtiff_exit(void) -{ - if (libtiff != NULL) { - PIL_dynlib_close(libtiff); - libtiff = NULL; - } -} - - -""" - - -class CFun: - def __init__(self, name, retType, args): - self.name = name - self.retType = retType - self.args = args - def getDynamicName(self): - return ('libtiff_%s' % self.name) - def getDynamicDecl(self): - argstr = (('%s, '*len(self.args)) % tuple(self.args))[:-2] - return ('%s (*%s)(%s)' % (self.retType, - self.getDynamicName(), argstr)) - def getLoadSymbol(self): - dname = self.getDynamicName() - return ( - """\t/* Attempt to load %s */ - %s = libtiff_findsymbol("%s"); - if (%s == NULL) { - return (0); - }\n""" % (self.name, dname, self.name, dname)) - - -# If you need more functions, add them to the list below, based upon entries -# in either tiffio.h or tiff.h. -tiff_functions = [ - CFun('TIFFClientOpen', 'TIFF*', ['const char*', 'const char*', - 'thandle_t', 'TIFFReadWriteProc', 'TIFFReadWriteProc', - 'TIFFSeekProc', 'TIFFCloseProc', 'TIFFSizeProc', - 'TIFFMapFileProc', 'TIFFUnmapFileProc']), - CFun('TIFFClose', 'void', ['TIFF*']), - CFun('TIFFGetField', 'int', ['TIFF*', 'ttag_t', '...']), - CFun('TIFFOpen', 'TIFF*', ['const char*', 'const char*']), - CFun('TIFFReadRGBAImage', 'int', ['TIFF*', 'uint32', 'uint32', - 'uint32*', 'int']), - CFun('TIFFSetField', 'int', ['TIFF*', 'ttag_t', '...']), - CFun('TIFFWriteEncodedStrip', 'tsize_t', ['TIFF*', 'tstrip_t', - 'tdata_t', 'tsize_t']), - CFun('_TIFFfree', 'void', ['tdata_t']), - CFun('_TIFFmalloc', 'tdata_t', ['tsize_t']), -] - - -def outputDynCFile(outfile, header_file_name): - outfile.write(COMMENT) - outfile.write('#include "%s"\n' % header_file_name) - outfile.write(C_EXTRA) - outfile.write('int libtiff_load_symbols(void)\n') - outfile.write('{\n') - for function in tiff_functions: - outfile.write(function.getLoadSymbol()) - outfile.write('\treturn (1);\n') - outfile.write('}\n') - outfile.write(""" - -/******************* - * SYMBOL POINTERS * - *******************/\n\n""") - for function in tiff_functions: - outfile.write('%s = NULL;\n' % function.getDynamicDecl()) - - -def outputDynHFile(outfile): - outfile.write(COMMENT) - outfile.write('#ifndef DYN_LIBTIFF_H\n') - outfile.write('#include "tiffio.h"\n') - for function in tiff_functions: - outfile.write('extern %s;\n' % function.getDynamicDecl()) - outfile.write('#endif /* DYN_LIBTIFF_H */\n\n') - - -if __name__ == '__main__': - outfile = file(C_FILENAME, 'w') - outputDynCFile(outfile, H_FILENAME) - outfile.close() - outfile = file(H_FILENAME, 'w') - outputDynHFile(outfile) - outfile.close() |