#!/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 #include #include #include #include """ # -------------------------------------------------------------- # 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)