You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.2 KiB
54 lines
1.2 KiB
7 years ago
|
#!/usr/bin/env python3
|
||
|
# libwebp cffi bindings
|
||
|
# (c) 2017 Taeyeon Mori
|
||
|
|
||
|
import os
|
||
|
import cffi
|
||
|
|
||
|
from simplecpp import simple_cpp
|
||
|
|
||
|
# --------------------------------------------------------------
|
||
|
# libwebp headers
|
||
|
webp_headers = [os.path.join("lib_headers/webp", hdr_name) for hdr_name in
|
||
|
("types.h", "decode.h", "encode.h", "mux_types.h", "mux.h", "demux.h")]
|
||
|
|
||
|
|
||
|
# --------------------------------------------------------------
|
||
|
# C Code
|
||
|
header = """
|
||
|
"""
|
||
|
|
||
|
source = """
|
||
|
#include <Python.h>
|
||
|
|
||
|
#include <webp/decode.h>
|
||
|
#include <webp/encode.h>
|
||
|
#include <webp/mux.h>
|
||
|
#include <webp/demux.h>
|
||
|
|
||
|
|
||
|
"""
|
||
|
|
||
|
# --------------------------------------------------------------
|
||
|
# Initialize CFFI
|
||
|
libwebp = cffi.FFI()
|
||
|
libwebp.cdef(header)
|
||
|
libwebp.set_source("imglibs._libwebp", source, libraries=["webp", "webpmux", "webpdemux"])
|
||
|
|
||
|
|
||
|
# --------------------------------------------------------------
|
||
|
# Import libwebp symbols
|
||
|
defs = {"CFFI": True}
|
||
|
|
||
|
for header in webp_headers:
|
||
|
print(header)
|
||
|
with open(header, "r") as f:
|
||
|
content = "".join(simple_cpp(f, defs))
|
||
|
libwebp.cdef(content)
|
||
|
|
||
|
|
||
|
# --------------------------------------------------------------
|
||
|
# Build
|
||
|
if __name__ == "__main__":
|
||
|
libwebp.compile(verbose=True)
|