From 1dba78b997dc49df9df663a838e0bacd6602f5b8 Mon Sep 17 00:00:00 2001 From: Justine Tunney Date: Thu, 20 Oct 2016 16:48:45 -0800 Subject: Automatically build SWIG from source This change allows Bazel to fetch and build SWIG rather than getting it from the system. This change also improves the i/o performance of the SWIG build, makes it hermetically sealed, and ensures tf_py_wrap_cc() can function correctly across Bazel repositories. CC: #4983 Change: 136783531 --- third_party/swig.BUILD | 335 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 335 insertions(+) create mode 100644 third_party/swig.BUILD (limited to 'third_party/swig.BUILD') diff --git a/third_party/swig.BUILD b/third_party/swig.BUILD new file mode 100644 index 0000000000..0ec413a248 --- /dev/null +++ b/third_party/swig.BUILD @@ -0,0 +1,335 @@ +licenses(["restricted"]) # GPLv3 + +exports_files(["LICENSE"]) + +cc_binary( + name = "swig", + srcs = [ + "Source/CParse/cparse.h", + "Source/CParse/cscanner.c", + "Source/CParse/parser.c", + "Source/CParse/parser.h", + "Source/CParse/templ.c", + "Source/CParse/util.c", + "Source/DOH/base.c", + "Source/DOH/doh.h", + "Source/DOH/dohint.h", + "Source/DOH/file.c", + "Source/DOH/fio.c", + "Source/DOH/hash.c", + "Source/DOH/list.c", + "Source/DOH/memory.c", + "Source/DOH/string.c", + "Source/DOH/void.c", + "Source/Include/swigconfig.h", + "Source/Include/swigwarn.h", + "Source/Modules/allocate.cxx", + "Source/Modules/browser.cxx", + "Source/Modules/contract.cxx", + "Source/Modules/directors.cxx", + "Source/Modules/emit.cxx", + "Source/Modules/lang.cxx", + "Source/Modules/main.cxx", + "Source/Modules/module.cxx", + "Source/Modules/nested.cxx", + "Source/Modules/overload.cxx", + "Source/Modules/python.cxx", + "Source/Modules/swigmain-lite.cxx", + "Source/Modules/swigmod.h", + "Source/Modules/typepass.cxx", + "Source/Modules/uffi.cxx", + "Source/Modules/utils.cxx", + "Source/Modules/xml.cxx", + "Source/Preprocessor/cpp.c", + "Source/Preprocessor/expr.c", + "Source/Preprocessor/preprocessor.h", + "Source/Swig/cwrap.c", + "Source/Swig/deprecate.c", + "Source/Swig/error.c", + "Source/Swig/extend.c", + "Source/Swig/fragment.c", + "Source/Swig/getopt.c", + "Source/Swig/include.c", + "Source/Swig/misc.c", + "Source/Swig/naming.c", + "Source/Swig/parms.c", + "Source/Swig/scanner.c", + "Source/Swig/stype.c", + "Source/Swig/swig.h", + "Source/Swig/swigfile.h", + "Source/Swig/swigopt.h", + "Source/Swig/swigparm.h", + "Source/Swig/swigscan.h", + "Source/Swig/swigtree.h", + "Source/Swig/swigwrap.h", + "Source/Swig/symbol.c", + "Source/Swig/tree.c", + "Source/Swig/typemap.c", + "Source/Swig/typeobj.c", + "Source/Swig/typesys.c", + "Source/Swig/wrapfunc.c", + ], + copts = ["$(STACK_FRAME_UNLIMITED)"] + select({ + ":x64_windows_msvc": [], + "//conditions:default": [ + "-Wno-parentheses", + "-Wno-unused-variable", + "-fexceptions", + ], + }), + data = [":templates"], + includes = [ + "Source/CParse", + "Source/DOH", + "Source/Include", + "Source/Modules", + "Source/Preprocessor", + "Source/Swig", + ], + output_licenses = ["unencumbered"], + visibility = ["//visibility:public"], + deps = ["@pcre//:pcre"], +) + +filegroup( + name = "templates", + srcs = [ + "Lib/allkw.swg", + "Lib/attribute.i", + "Lib/carrays.i", + "Lib/cdata.i", + "Lib/cffi/cffi.swg", + "Lib/cmalloc.i", + "Lib/constraints.i", + "Lib/cpointer.i", + "Lib/cstring.i", + "Lib/cwstring.i", + "Lib/exception.i", + "Lib/intrusive_ptr.i", + "Lib/inttypes.i", + "Lib/linkruntime.c", + "Lib/math.i", + "Lib/pointer.i", + "Lib/python/argcargv.i", + "Lib/python/attribute.i", + "Lib/python/boost_shared_ptr.i", + "Lib/python/builtin.swg", + "Lib/python/carrays.i", + "Lib/python/ccomplex.i", + "Lib/python/cdata.i", + "Lib/python/cmalloc.i", + "Lib/python/cni.i", + "Lib/python/complex.i", + "Lib/python/cpointer.i", + "Lib/python/cstring.i", + "Lib/python/cwstring.i", + "Lib/python/defarg.swg", + "Lib/python/director.swg", + "Lib/python/embed.i", + "Lib/python/embed15.i", + "Lib/python/exception.i", + "Lib/python/factory.i", + "Lib/python/file.i", + "Lib/python/implicit.i", + "Lib/python/jstring.i", + "Lib/python/pyabc.i", + "Lib/python/pyapi.swg", + "Lib/python/pybackward.swg", + "Lib/python/pybuffer.i", + "Lib/python/pyclasses.swg", + "Lib/python/pycomplex.swg", + "Lib/python/pycontainer.swg", + "Lib/python/pydocs.swg", + "Lib/python/pyerrors.swg", + "Lib/python/pyfragments.swg", + "Lib/python/pyhead.swg", + "Lib/python/pyinit.swg", + "Lib/python/pyiterators.swg", + "Lib/python/pymacros.swg", + "Lib/python/pyname_compat.i", + "Lib/python/pyopers.swg", + "Lib/python/pyprimtypes.swg", + "Lib/python/pyrun.swg", + "Lib/python/pyruntime.swg", + "Lib/python/pystdcommon.swg", + "Lib/python/pystrings.swg", + "Lib/python/python.swg", + "Lib/python/pythonkw.swg", + "Lib/python/pythreads.swg", + "Lib/python/pytuplehlp.swg", + "Lib/python/pytypemaps.swg", + "Lib/python/pyuserdir.swg", + "Lib/python/pywstrings.swg", + "Lib/python/std_alloc.i", + "Lib/python/std_auto_ptr.i", + "Lib/python/std_basic_string.i", + "Lib/python/std_carray.i", + "Lib/python/std_char_traits.i", + "Lib/python/std_common.i", + "Lib/python/std_complex.i", + "Lib/python/std_container.i", + "Lib/python/std_deque.i", + "Lib/python/std_except.i", + "Lib/python/std_ios.i", + "Lib/python/std_iostream.i", + "Lib/python/std_list.i", + "Lib/python/std_map.i", + "Lib/python/std_multimap.i", + "Lib/python/std_multiset.i", + "Lib/python/std_pair.i", + "Lib/python/std_set.i", + "Lib/python/std_shared_ptr.i", + "Lib/python/std_sstream.i", + "Lib/python/std_streambuf.i", + "Lib/python/std_string.i", + "Lib/python/std_unordered_map.i", + "Lib/python/std_unordered_multimap.i", + "Lib/python/std_unordered_multiset.i", + "Lib/python/std_unordered_set.i", + "Lib/python/std_vector.i", + "Lib/python/std_vectora.i", + "Lib/python/std_wios.i", + "Lib/python/std_wiostream.i", + "Lib/python/std_wsstream.i", + "Lib/python/std_wstreambuf.i", + "Lib/python/std_wstring.i", + "Lib/python/stl.i", + "Lib/python/typemaps.i", + "Lib/python/wchar.i", + "Lib/runtime.swg", + "Lib/shared_ptr.i", + "Lib/std/_std_deque.i", + "Lib/std/std_alloc.i", + "Lib/std/std_basic_string.i", + "Lib/std/std_carray.swg", + "Lib/std/std_char_traits.i", + "Lib/std/std_common.i", + "Lib/std/std_container.i", + "Lib/std/std_deque.i", + "Lib/std/std_except.i", + "Lib/std/std_ios.i", + "Lib/std/std_iostream.i", + "Lib/std/std_list.i", + "Lib/std/std_map.i", + "Lib/std/std_multimap.i", + "Lib/std/std_multiset.i", + "Lib/std/std_pair.i", + "Lib/std/std_queue.i", + "Lib/std/std_set.i", + "Lib/std/std_sstream.i", + "Lib/std/std_stack.i", + "Lib/std/std_streambuf.i", + "Lib/std/std_string.i", + "Lib/std/std_unordered_map.i", + "Lib/std/std_unordered_multimap.i", + "Lib/std/std_unordered_multiset.i", + "Lib/std/std_unordered_set.i", + "Lib/std/std_vector.i", + "Lib/std/std_vectora.i", + "Lib/std/std_wios.i", + "Lib/std/std_wiostream.i", + "Lib/std/std_wsstream.i", + "Lib/std/std_wstreambuf.i", + "Lib/std/std_wstring.i", + "Lib/std_except.i", + "Lib/stdint.i", + "Lib/stl.i", + "Lib/swig.swg", + "Lib/swigarch.i", + "Lib/swigerrors.swg", + "Lib/swiginit.swg", + "Lib/swiglabels.swg", + "Lib/swigrun.i", + "Lib/swigrun.swg", + "Lib/swigwarn.swg", + "Lib/swigwarnings.swg", + "Lib/typemaps/attribute.swg", + "Lib/typemaps/carrays.swg", + "Lib/typemaps/cdata.swg", + "Lib/typemaps/cmalloc.swg", + "Lib/typemaps/cpointer.swg", + "Lib/typemaps/cstring.swg", + "Lib/typemaps/cstrings.swg", + "Lib/typemaps/cwstring.swg", + "Lib/typemaps/enumint.swg", + "Lib/typemaps/exception.swg", + "Lib/typemaps/factory.swg", + "Lib/typemaps/fragments.swg", + "Lib/typemaps/implicit.swg", + "Lib/typemaps/inoutlist.swg", + "Lib/typemaps/misctypes.swg", + "Lib/typemaps/primtypes.swg", + "Lib/typemaps/ptrtypes.swg", + "Lib/typemaps/std_except.swg", + "Lib/typemaps/std_string.swg", + "Lib/typemaps/std_strings.swg", + "Lib/typemaps/std_wstring.swg", + "Lib/typemaps/string.swg", + "Lib/typemaps/strings.swg", + "Lib/typemaps/swigmacros.swg", + "Lib/typemaps/swigobject.swg", + "Lib/typemaps/swigtype.swg", + "Lib/typemaps/swigtypemaps.swg", + "Lib/typemaps/traits.swg", + "Lib/typemaps/typemaps.swg", + "Lib/typemaps/valtypes.swg", + "Lib/typemaps/void.swg", + "Lib/typemaps/wstring.swg", + "Lib/wchar.i", + "Lib/windows.i", + ], + licenses = ["notice"], # simple notice license for Lib/ + path = "Lib", + visibility = ["//visibility:public"], +) + +genrule( + name = "swigconfig", + outs = ["Source/Include/swigconfig.h"], + cmd = "cat <$@\n" + + "#define HAVE_BOOL\n" + + "#define HAVE_PCRE\n" + + "#define HAVE_POPEN\n" + + "#define PACKAGE_BUGREPORT \"http://www.swig.org\"\n" + + "#define PACKAGE_VERSION \"3.0.2\"\n" + + "#define STDC_HEADERS\n" + + "#define SWIG_CXX \"bazel4lyfe\"\n" + + "#define SWIG_LIB \"external/swig/Lib\"\n" + + "#define SWIG_LIB_WIN_UNIX \"\"\n" + + "#define SWIG_PLATFORM \"bazel4lyfe\"\n" + + "EOF", +) + +genrule( + name = "get_rid_of_stuff_we_dont_need_yet", + srcs = ["Source/Modules/swigmain.cxx"], + outs = ["Source/Modules/swigmain-lite.cxx"], + cmd = "sed -e '/swig_allegrocl/d'" + + " -e '/swig_cffi/d'" + + " -e '/swig_chicken/d'" + + " -e '/swig_clisp/d'" + + " -e '/swig_csharp/d'" + + " -e '/swig_d/d'" + + " -e '/swig_go/d'" + + " -e '/swig_guile/d'" + + " -e '/swig_java/d'" + + " -e '/swig_lua/d'" + + " -e '/swig_modula3/d'" + + " -e '/swig_mzscheme/d'" + + " -e '/swig_ocaml/d'" + + " -e '/swig_octave/d'" + + " -e '/swig_perl/d'" + + " -e '/swig_php/d'" + + " -e '/swig_pike/d'" + + " -e '/swig_r/d'" + + " -e '/swig_ruby/d'" + + " -e '/swig_sexp/d'" + + " -e '/swig_tcl/d'" + + " -e '/swig_uffi/d'" + + " $< >$@", +) + +config_setting( + name = "x64_windows_msvc", + values = {"cpu": "x64_windows_msvc"}, +) -- cgit v1.2.3