diff --git a/BUILD b/BUILD new file mode 100644 index 000000000..6e5460cef --- /dev/null +++ b/BUILD @@ -0,0 +1,174 @@ +# Copyright 2010-2024 Google LLC +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +load("@rules_cc//cc:defs.bzl", "cc_binary") + +licenses(["restricted"]) # GPLv3 + +exports_files([ + "LICENSE", + "swig.bzl", +]) + +config_setting( + name = "on_windows", + constraint_values = ["@platforms//os:windows"], +) + +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/Doxygen/csharpdoc.cxx", + "Source/Doxygen/csharpdoc.h", + "Source/Doxygen/doxycommands.h", + "Source/Doxygen/doxyentity.cxx", + "Source/Doxygen/doxyentity.h", + "Source/Doxygen/doxyparser.cxx", + "Source/Doxygen/doxyparser.h", + "Source/Doxygen/doxytranslator.cxx", + "Source/Doxygen/doxytranslator.h", + "Source/Doxygen/javadoc.cxx", + "Source/Doxygen/javadoc.h", + "Source/Doxygen/pydoc.cxx", + "Source/Doxygen/pydoc.h", + "Source/Include/swigconfig.h", + "Source/Include/swigwarn.h", + "Source/Modules/allocate.cxx", + "Source/Modules/c.cxx", + "Source/Modules/contract.cxx", + "Source/Modules/csharp.cxx", + "Source/Modules/d.cxx", + "Source/Modules/directors.cxx", + "Source/Modules/emit.cxx", + "Source/Modules/go.cxx", + "Source/Modules/guile.cxx", + "Source/Modules/interface.cxx", + "Source/Modules/java.cxx", + "Source/Modules/javascript.cxx", + "Source/Modules/lang.cxx", + "Source/Modules/lua.cxx", + "Source/Modules/main.cxx", + "Source/Modules/mzscheme.cxx", + "Source/Modules/nested.cxx", + "Source/Modules/ocaml.cxx", + "Source/Modules/octave.cxx", + "Source/Modules/overload.cxx", + "Source/Modules/perl5.cxx", + "Source/Modules/php.cxx", + "Source/Modules/python.cxx", + "Source/Modules/r.cxx", + "Source/Modules/ruby.cxx", + "Source/Modules/scilab.cxx", + "Source/Modules/swigmain.cxx", + "Source/Modules/swigmod.h", + "Source/Modules/tcl8.cxx", + "Source/Modules/typepass.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({ + "on_windows": [], + "//conditions:default": [ + "-Wno-parentheses", + "-Wno-unused-variable", + "-fexceptions", + ], + }), + includes = [ + "Source/CParse", + "Source/DOH", + "Source/Doxygen", + "Source/Include", + "Source/Modules", + "Source/Preprocessor", + "Source/Swig", + ], + output_licenses = ["unencumbered"], + visibility = ["//visibility:public"], + deps = ["@pcre2"], + linkstatic = True, +) + +filegroup( + name = "lib_java", + srcs = glob([ + "Lib/*", + "Lib/java/*", + "Lib/std/*", + "Lib/typemaps/*", + ]), + licenses = ["notice"], # simple notice license for Lib/ + visibility = ["//visibility:public"], +) + +filegroup( + name = "lib_python", + srcs = glob([ + "Lib/*", + "Lib/python/*", + "Lib/std/*", + "Lib/typemaps/*", + ]), + licenses = ["notice"], # simple notice license for Lib/ + visibility = ["//visibility:public"], +) + +filegroup( + name = "swig_swg", + srcs = ["Lib/swig.swg"], + visibility = ["//visibility:public"], +)