Giter VIP home page Giter VIP logo

bazel_rules_hdl's Introduction

bazel_rules_hdl

Hardware Description Language (Verilog, VHDL, Chisel, nMigen, etc) with open tools (Yosys, Verilator, OpenROAD, etc) rules for Bazel (https://bazel.build)

THIS REPO REQUIRES BAZEL 5.4.0 or greater

Installation

In your WORKSPACE file. Which is a file at the top directory of every bazel repo:

# You don't need these variables, but are useful for configurability.
# Feel free to hardcode these values in the maybe http_archive below.
rules_hdl_git_hash = "{LATEST_HASH}"
rules_hdl_git_sha256 = "{LATEST_SHA}"

maybe(
    http_archive,
    name = "rules_hdl",
    sha256 = rules_hdl_git_sha256,
    strip_prefix = "bazel_rules_hdl-%s" % rules_hdl_git_hash,
    urls = [
        "https://github.com/hdl/bazel_rules_hdl/archive/%s.tar.gz" % rules_hdl_git_hash,
    ],
)

load("@rules_hdl//dependency_support:dependency_support.bzl", rules_hdl_dependency_support = "dependency_support")
rules_hdl_dependency_support()

load("@rules_hdl//:init.bzl", rules_hdl_init = "init")
rules_hdl_init()

Usage

See the following build file to synthesize a final ASIC design for a given piece of RTL written in verilog.

This file is called counter.v. It is a 128 bit counter incremented on every positive edge of a clock signial.

module counter(
  input wire clk,
  input wire reset,
  output [127:0] out,
);
  reg [127:0] counter_tmp;
  always @ (posedge clk or posedge reset) begin
    if (reset) begin
      counter_tmp <= 0;
    end else begin
      counter_tmp <= counter_tmp + 1;
    end
  end

  assign out = counter_tmp;

endmodule

The default PDK used is the Sky130 High Density standard cells.

This is the BUILD file. Every thing in bazel needs a rule description of what to build. The rules use yosys and OpenROAD to place and route your design.

load("@rules_hdl//synthesis:defs.bzl", "synthesize_rtl")
load("@rules_hdl//place_and_route:build_defs.bzl", "place_and_route")
load("@rules_hdl//verilog:defs.bzl", "verilog_library")

place_and_route(
    name = "counter_place_and_route",
    clock_period = "10",
    core_padding_microns = 20,
    die_height_microns = 200,
    die_width_microns = 200,
    placement_density = "0.7",
    synthesized_rtl = ":verilog_counter_synth",
)

synthesize_rtl(
    name = "verilog_counter_synth",
    top_module = "counter",
    deps = [
        ":verilog_counter",
    ],
)

verilog_library(
    name = "verilog_counter",
    srcs = [
        "counter.v",
    ],
)

At this point you should have the following three files at the top of your bazel workspace.

BUILD
counter.v
WORKSPACE

When you run bazel build //:counter_place_and_route. It will output log files and a def file that represents the fully placed and routed design.

Project Vision

hdl/bazel_rules_hdl is a project that is designed to be a one stop shop for doing hardware dev with bazel.

Through iteration we hope to eventually become an official bazel ruleset for doing HDL development.

So that includes;

  • Supporting designs targeting FPGAs and ASIC.
  • Supporting software targeted to run on this custom hardware.
  • Supporting testing via simulation, formal verification, emulation and others.

Having rules that can take RTL and be chained to emit GDSII (Sky130/FOSS-PDKs), but that can also be used to target FPGAs and soft CPUs. We want to take advantage of remote builders to accelerate verification with massively parallel clusters. Using the open source community's tools like Yosys, OpenROAD, Verilator, Surelog etc.

The vision of this is that this repository enables bazel test //mychip/... and bazel build //mychip:gds and in 10 minutes you have verified and emitted a fabricatable design even for the most complex designs.

Contributing

Testing

For testing pull requests please run:

bazel_rules_hdl$ python tools/test_everything.py

Note: bazel test ... does not run the tests in Bazel "remote" repositories, and bazel_rules_hdl bundles together support for several remote repositories -- this script serves as a helper for testing them all explicitly.

bazel_rules_hdl's People

Contributors

abrisco avatar allight avatar cdleary avatar ericastor avatar grebe avatar grotival avatar hcindyl avatar hovind avatar hzeller avatar j2kun avatar jesec avatar lberki avatar lpawelcz avatar mikesinouye avatar mithro avatar mtdudek avatar nanavati avatar per-gron avatar proppy avatar quantamhd avatar rachitnigam avatar renau avatar rw1nkler avatar stridge-cruxml avatar tcal-x avatar tjgq avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

bazel_rules_hdl's Issues

Build breakage with bazel 6.0.0

... external/bazel_tools/platforms/BUILD:89:6: in alias rule @bazel_tools//platforms:windows: Constraints from
@bazel_tools//platforms have been removed. Please use constraints from @platforms repository embedded in Bazel, or
preferably declare dependency on https://github.com/bazelbuild/platforms.
See https://github.com/bazelbuild/bazel/issues/8622 for details.

iverilog.sh fails to find binary under OSX

Looks like the find command behaves differently in OSX and in Linux. If I build XLS (which uses these rules) in each, it fails to find iverilog in the former and successfully locates it in the latter.

I realize that OSX support might not be high up on your list, so I can try to figure it out, unless someone else has the bandwidth.

Add flow Yosys + VPR + ???

This depends on #1

Required parts;

  • Yosys (thus ABC?)
  • VPR
  • FASM Assembler
  • yosys-symbiflow-plugins
  • Project X-Ray
  • QuickLogic?

Build error; windows-related change breaking linux?

On tip of current main, in root of the repo:

$ bazel build synthesis/tests:verilog_counter_synth 
Starting local Bazel server and connecting to it...
ERROR: /usr/local/google/home/tcal/.cache/bazel/_bazel_tcal/ee664ba5f06356c0566bacadf9a7ef5f/external/bazel_tools/platforms/BUILD:89:6: in alias rule @bazel_tools//platforms:windows: Constraints from @bazel_tools//platforms have been removed. Please use constraints from @platforms repository embedded in Bazel, or preferably declare dependency on https://github.com/bazelbuild/platforms. See https://github.com/bazelbuild/bazel/issues/8622 for details.
ERROR: /usr/local/google/home/tcal/.cache/bazel/_bazel_tcal/ee664ba5f06356c0566bacadf9a7ef5f/external/bazel_tools/platforms/BUILD:89:6: Analysis of target '@bazel_tools//platforms:windows' failed
ERROR: /usr/local/google/home/tcal/.cache/bazel/_bazel_tcal/ee664ba5f06356c0566bacadf9a7ef5f/external/at_clifford_yosys/BUILD.bazel:217:10: While resolving toolchains for target @at_clifford_yosys//:yosys: invalid registered toolchain '@bazel_skylib//toolchains/unittest:cmd_toolchain': 
ERROR: Analysis of target '//synthesis/tests:verilog_counter_synth' failed; build aborted: 
INFO: Elapsed time: 16.644s
INFO: 0 processes.
FAILED: Build did NOT complete successfully (39 packages loaded, 570 targets configured)
    Fetching repository @com_google_skywater_pdk; starting
    Fetching ...cal/google/home/tcal/.cache/bazel/_bazel_tcal/ee664ba5f06356c0566bacadf9a7ef5f/external/com_google_skywater_pdk; Extracting 3d7617a1acb92ea883539bcf22a632d6361a5de4.tar.gz

Expose standard version in VerilogInfo

It'd be nice for the VerilogInfo provider to expose the standard version as a field so that rules can opt-in into the version of the language they support.

That also could allow downstream rules like iverilog_compile to inform upstream codegen rules about which flavor of the language they should generate (as discussed in google/xls#980).

Support for Ubuntu 20.04

Was unable to build openroad in ubuntu 20.04 WSL
bazel build @org_theopenroadproject//:openroad
Was wondering if I'm missing something. Can anyone help?

rules_hdl_git_hash = "d2af0c7d03f89222f3004ece294cde51fe5c11ba"
rules_hdl_git_sha256 = "4e63172d3d98de8af91c7e8cf97c12ba8ca376217f63fdfbb52f0bc00256faf2"

Error log

In file included from external/org_theopenroadproject/src/odb/include/odb/dbId.h:35,
                 from external/org_theopenroadproject/src/odb/include/odb/dbViaParams.h:35,
                 from external/org_theopenroadproject/src/odb/include/odb/db.h:46,
                 from external/org_theopenroadproject/src/dpl/include/dpl/Opendp.h:51,
                 from external/org_theopenroadproject/src/dpl/src/OptMirror.cpp:35:
external/org_theopenroadproject/src/odb/include/odb/dbStream.h: In member function 'constexpr odb::dbOStream& odb::dbOStream::operator<<(const std::tuple<_Elements ...>&) const':
external/org_theopenroadproject/src/odb/include/odb/dbStream.h:197:14: error: binding reference of type 'odb::dbOStream&' to 'const odb::dbOStream' discards qualifiers
  197 |       return *this;
      |              ^~~~~

Compiler -D argument escape issues with newer Bazel (gcc: error: .: No such file or directory)

Bazel 4.2.2, GCC 9.3.0

at_clifford_yosys:

gcc: error: ?: No such file or directory
gcc: error: std::getenv("YOSYS_DATDIR"): No such file or directory
gcc: error: :: No such file or directory
gcc: error: ".": No such file or directory

arguments: '-DYOSYS_SRC="./"' '-DYOSYS_DATDIR=std::getenv("YOSYS_DATDIR") ? std::getenv("YOSYS_DATDIR") : "."'

source:

"-DYOSYS_SRC='\"./\"'",
"-DYOSYS_DATDIR='std::getenv(\"YOSYS_DATDIR\") ? std::getenv(\"YOSYS_DATDIR\") : \".\"'",

Add Yosys

Yosys is the root of both FPGA and ASIC synthesis and also potentially formal verification flows.

OpenROAD build depends on two libbacktrace libraries

I tried to follow the minimal example for testing the rules provided in README but stumbled upon #123.
I resorted to the solution provided in #123 (comment).
With that I encountered build failures when building the OpenROAD dependency:

BUILD.bazel:30:10: Linking external/org_theopenroadproject/openroad failed: (Exit 1): clang failed: error executing command
ld.lld: error: unable to find library -lbacktrace
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Target //:counter_place_and_route failed to build

Here are some of the compilation args taken from the failing build:

-Wl,-no-whole-archive bazel-out/k8-opt-exec-2B5CBBC6/bin/external/com_github_libbacktrace/liblibbacktrace.a
-lbacktrace

The first one comes from the dependency on boost and then boost dependency on backtrace.
I'm not sure however what is the origin of the second argument which in this case causes the failure.

The library archive from the first arg is in fact produced in the build process and found without problems but it seems that there is a small naming issue: cc_library with name argument set to libbacktrace produces liblibbacktrace.a.
Was it done on purpose? If not it might be a good idea to change the name simply to backtrace in the bundled.BUILD.bazel for the com_github_libbacktrace dependency so that generated file would be named libbacktrace.a

Installing system-wide libbacktrace fixes the issue for me, I was able to finish the flow from bazel-verilog-test but having dependency on OS configuration is probably not the best here.

org_theopenroad doesn't build on macos

external/org_theopenroadproject/src/sta/util/Machine.cc:20:12: fatal error: 'MachineApple.cc' file not found
  #include "MachineApple.cc"
           ^~~~~~~~~~~~~~~~~
1 error generated.
INFO: Elapsed time: 1.845s, Critical Path: 1.50s
INFO: 21 processes: 13 internal, 8 darwin-sandbox.
FAILED: Build did NOT complete successfully

It looks like dependency_support/org_theopenroadproject/bundled.BUILD.bazel always includes MachineLinux.cc instead of selecting based on the target os.

pcre failing certificate?

I get this error when trying to build:

ERROR: An error occurred during the fetch of repository 'org_pcre_ftp':
   Traceback (most recent call last):
        File "XXX/_bazel_renau/3f7dad3b9f25e1dda25385629e7e4b4b/external/bazel_tools/tools/build_defs/repo/http.bzl", line 125, column 45, in _http_archive_impl
                download_info = ctx.download_and_extract(
Error in download_and_extract: java.io.IOException: Error downloading [https://ftp.exim.org/pub/pcre/pcre-8.44.tar.gz] to XXX/_bazel_renau/3f7dad3b9f25e1dda25385629e7e4b4b/external/org_pcre_ftp/temp7711447042372617183/pcre-8.44.tar.gz: No subject alternative DNS name matching ftp.exim.org found.

If I try to get it directly:

 wget https://ftp.exim.org/pub/pcre/pcre-8.44.tar.gz
--2022-12-27 17:43:03--  https://ftp.exim.org/pub/pcre/pcre-8.44.tar.gz
Resolving ftp.exim.org (ftp.exim.org)... 37.120.190.30, 2a03:4000:6:b381::2
Connecting to ftp.exim.org (ftp.exim.org)|37.120.190.30|:443... connected.
The certificate's owner does not match hostname ‘ftp.exim.org’

Any suggestion?

Support for closed source tools

Hi,

I want to discuss if support for closed source vendor tools like Vivado is welcome or not, as it seems the focus here is on FOSS. In my opinion it basically comes down to practicality vs hermeticity (or maybe philosophy), and wanted the opinion of this repo's maintainers and community on this direction before taking a shot at it.

pip_install is deprecated. Please switch to pip_parse.

When I use this it gives the following warning:

DEBUG: /home/codasip.com/timothy.hutt/.cache/bazel/_bazel_timothy.hutt/8259834f483e4f0b67749e47765325b6/external/rules_python/python/pip.bzl:46:10: pip_install is deprecated. Please switch to pip_parse. pip_install will be removed in a future release.

I did have a go at fixing this. You need to:

  1. Replace pip_install with pip_parse everywhere in init.bzl.
  2. Change the pip_requirements.txt line to:
        requirements_lock = "@rules_hdl//dependency_support:pip_requirements_lock.txt",
  1. Run this command to generate pip_requirements_lock.txt:
pip-compile --generate-hashes --output-file=pip_requirements_lock.txt pip_requirements.txt
  1. Add this to your WORKSPACE after init():
load("@rules_hdl_pip_deps//:requirements.bzl", "install_deps")
install_deps()

It's a bit annoying that the change means you need to add extra stuff to the WORKSPACE. Unfortunately I don't know enough Bazel to find a different way.

patch error when fetching openroad repository

When trying to build the following counter example project from the README.md:

  • WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")

http_archive(
    name = "rules_python",
    url = "https://github.com/bazelbuild/rules_python/releases/download/0.5.0/rules_python-0.5.0.tar.gz",
    sha256 = "cd6730ed53a002c56ce4e2f396ba3b3be262fd7cb68339f0377a45e8227fe332",
)

http_archive(name = "rules_hdl",
    sha256 = "6b4f6797b73d8a9cae9999ce890635dc725e30c958c8dae2a84bbf762791c309",
    strip_prefix = "bazel_rules_hdl-main",
    urls = [
        "https://github.com/hdl/bazel_rules_hdl/archive/refs/heads/main.zip",
    ],
)

load("@rules_hdl//dependency_support:dependency_support.bzl", rules_hdl_dependency_support = "dependency_support")
rules_hdl_dependency_support()

load("@rules_hdl//:init.bzl", rules_hdl_init = "init")
rules_hdl_init()
  • BUILD
load("@rules_hdl//synthesis:build_defs.bzl", "synthesize_rtl")
load("@rules_hdl//place_and_route:build_defs.bzl", "place_and_route")
load("@rules_hdl//verilog:providers.bzl", "verilog_library")

place_and_route(
    name = "counter_place_and_route",
    clock_period = "10",
    core_padding_microns = 20,
    die_height_microns = 200,
    die_width_microns = 200,
    placement_density = "0.7",
    synthesized_rtl = ":verilog_counter_synth",
)

synthesize_rtl(
    name = "verilog_counter_synth",
    top_module = "counter",
    deps = [
        ":verilog_counter",
    ],
)

verilog_library(
    name = "verilog_counter",
    srcs = [
        "counter.v",
    ],
)
  • counter.v
module counter(
  input wire clk,
  input wire reset,
  output [127:0] out,
);
  reg [127:0] counter_tmp;
  always @ (posedge clk or posedge reset) begin
    if (reset) begin
      counter_tmp <= 0;
    end else begin
      counter_tmp <= counter_tmp + 1;
    end
  end

  assign out = counter_tmp;

endmodule

I get the following error:

Error in patch: Unable to load package for //dependency_support/org_theopenroadproject:0001-logging-change-to-support-silence.patch: BUILD file not found in any of the following directories. Add a BUILD file to a directory to mark it as a package.

Build failure on Mac OS due to `ld -no-pie`

I'm trying to build XLS on Mac OS from source which pulls rules_hdl as a dependency and the build seems to fail with the following error:

ERROR: /private/var/tmp/b3261ecaf5b6ec09d8051d16006b13a8/external/com_icarus_iverilog/BUILD.bazel:351:10: Linking external/com_icarus_iverilog/ivl failed: (Exit 1): cc_wrapper.sh failed: error executing command (from target @com_icarus_iverilog//:ivl) external/llvm_toolchain/bin/cc_wrapper.sh @bazel-out/darwin-opt/bin/external/com_icarus_iverilog/ivl-2.params

Digging into it, it seems that ld on mac has the option -no_pie instead of -no-pie used here:
https://github.com/hdl/bazel_rules_hdl/blob/main/dependency_support/com_icarus_iverilog/bundled.BUILD.bazel#L375

I'm not super familiar with bazel but if there is an obvious fix, I can try to write up a PR

Issues with README.md instructions

I tried running the example in the README.md. I have bazel 5.3.2 installed.

I created WORKSPACE with the exact text in the README, except for:

rules_hdl_git_hash = "ebaf7482c035208f485f463c62fd3c2f969a9b5c"
rules_hdl_git_sha256 = "3743f1ed6739abaaa68e1e907adffb13c285fd70390d950c3989729439d952c5"

Perhaps the provided code was never meant to be the entire WORKSPACE, but for this example, I assumed it was.

I encountered:

ERROR: /usr/local/google/home/tcal/bazel/WORKSPACE:11:1: name 'maybe' is not defined
ERROR: /usr/local/google/home/tcal/bazel/WORKSPACE:12:5: name 'http_archive' is not defined
ERROR: /usr/local/google/home/tcal/bazel/WORKSPACE:17:70: name 'git_hash' is not defined
ERROR: error loading package '': Encountered error while reading extension file 'dependency_support/dependency_support.bzl': no such package '@rules_hdl//dependency_support': error loading package 'external': Could not load //external package

So I replace git_hash with rules_hdl_git_hash, and added these two lines (which I found in another WORKSPACE file):

load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
load("@bazel_tools//tools/build_defs/repo:utils.bzl", "maybe")

I then encountered:

ERROR: Failed to load Starlark extension '@rules_python//python:pip.bzl'.
Cycle in the workspace file detected. This indicates that a repository is used prior to being defined.
The following chain of repository dependencies lead to the missing definition.
 - @rules_python
This could either mean you have to add the '@rules_python' repository with a statement like `http_archive` in your WORKSPACE file (note that transitive dependencies are not added automatically), or move an existing definition earlier in your WORKSPACE file.
ERROR: cycles detected during target parsing

Add KLayout

Needed for things like DRC checks and GDS generation.

Add Magic

Needed for things like DRC checks and GDS generation.

m4 compile issue

When using the latest libc, the m4 packages does not compile:

ERROR: ..../1c203eacaa58ab62be36bb8031d3e676/external/m4_v1.4.18/gnulib/BUILD.bazel:192:11: Compiling gnulib/lib/c-stack.c [for host] failed: (Exit 1): clang failed: error executing command external/llvm_toolchain/bin/clang -U_FORTIFY_SOURCE -fstack-protector -fno-omit-frame-pointer -fcolor-diagnostics -Wall -Wthread-safety -Wself-assign -g0 -O2 '-D_FORTIFY_SOURCE=1' -DNDEBUG ... (remaining 26 arguments skipped)

Use --sandbox_debug to see verbose messages from the sandbox and retain the sandbox build root for debugging
external/m4_v1.4.18/gnulib/lib/c-stack.c:55:26: error: function-like macro 'sysconf' is not defined
#elif HAVE_LIBSIGSEGV && SIGSTKSZ < 16384
                         ^
/usr/include/x86_64-linux-gnu/bits/sigstksz.h:28:19: note: expanded from macro 'SIGSTKSZ'
# define SIGSTKSZ sysconf (_SC_SIGSTKSZ)
                  ^
external/m4_v1.4.18/gnulib/lib/c-stack.c:139:8: error: fields must have a constant size: 'variable length array in structure' extension will never be supported
  char buffer[SIGSTKSZ];
       ^
2 errors generated.

The https://github.com/jmillikin/rules_m4 package has a patch for this, but the custom org_gnu_m4 package inside bazel_hdl_rules does not.

https://github.com/jmillikin/rules_m4/blob/7bff5f2b25055c4403412793857ab6c2d5cd21fd/m4/internal/gnulib/gnulib.bzl#L143

Maybe switching to jmillikin/rules_m4?

tk_tcl doesn't build on macos

It looks like the build file is using hard coded defines. It doesn't say where these came from, but they don't work on macos.

In file included from external/tk_tcl/generic/tclAlloc.c:24:
In file included from external/tk_tcl/generic/tclInt.h:36:
In file included from external/tk_tcl/generic/tclPort.h:23:
external/tk_tcl/unix/tclUnixPort.h:79:9: error: unknown type name 'off64_t'; did you mean 'off_t'?
typedef off64_t         Tcl_SeekOffset;
        ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/sys/_types/_off_t.h:31:33: note: 'off_t' declared here
typedef __darwin_off_t          off_t;
                                ^
1 error generated.

If I run configure locally on my machine (macos 12.6.5 x86_64) it generates these defines:

-DHAVE_SYS_TYPES_H=1
-DHAVE_SYS_STAT_H=1
-DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1
-DHAVE_MEMORY_H=1
-DHAVE_STRINGS_H=1
-DHAVE_INTTYPES_H=1
-DHAVE_STDINT_H=1
-DHAVE_UNISTD_H=1
-DNO_VALUES_H=1
-DHAVE_SYS_PARAM_H=1
-DUSE_THREAD_ALLOC=1
-D_REENTRANT=1
-D_THREAD_SAFE=1
-DHAVE_PTHREAD_ATTR_SETSTACKSIZE=1
-DHAVE_PTHREAD_ATFORK=1
-DTCL_THREADS=1
-DTCL_CFGVAL_ENCODING=\"iso8859-1\"
-DHAVE_ZLIB=1
-DMODULE_SCOPE=extern\ __attribute__\(\(__visibility__\(\"hidden\"\)\)\)
-DHAVE_HIDDEN=1
-DMAC_OSX_TCL=1
-DHAVE_COREFOUNDATION=1
-DHAVE_CAST_TO_UNION=1
-DTCL_SHLIB_EXT=\".dylib\"
-DNDEBUG=1
-DTCL_CFG_OPTIMIZED=1
-DTCL_TOMMATH=1
-DMP_PREC=4
-DTCL_WIDE_INT_IS_LONG=1
-DHAVE_GETCWD=1
-DHAVE_MKSTEMP=1
-DHAVE_OPENDIR=1
-DHAVE_STRTOL=1
-DHAVE_WAITPID=1
-DHAVE_GETNAMEINFO=1
-DHAVE_GETADDRINFO=1
-DHAVE_FREEADDRINFO=1
-DHAVE_GAI_STRERROR=1
-DHAVE_STRUCT_ADDRINFO=1
-DHAVE_STRUCT_IN6_ADDR=1
-DHAVE_STRUCT_SOCKADDR_IN6=1
-DHAVE_STRUCT_SOCKADDR_STORAGE=1
-DHAVE_GETPWUID_R_5=1
-DHAVE_GETPWUID_R=1
-DHAVE_GETPWNAM_R_5=1
-DHAVE_GETPWNAM_R=1
-DHAVE_GETGRGID_R_5=1
-DHAVE_GETGRGID_R=1
-DHAVE_GETGRNAM_R_5=1
-DHAVE_GETGRNAM_R=1
-DHAVE_MTSAFE_GETHOSTBYNAME=1
-DHAVE_MTSAFE_GETHOSTBYADDR=1
-DHAVE_TERMIOS_H=1
-DHAVE_SYS_IOCTL_H=1
-DHAVE_SYS_TIME_H=1
-DTIME_WITH_SYS_TIME=1
-DHAVE_GMTIME_R=1
-DHAVE_LOCALTIME_R=1
-DHAVE_MKTIME=1
-DHAVE_TM_GMTOFF=1
-DHAVE_STRUCT_STAT_ST_BLOCKS=1
-DHAVE_STRUCT_STAT_ST_BLKSIZE=1
-DHAVE_BLKCNT_T=1
-DHAVE_INTPTR_T=1
-DHAVE_UINTPTR_T=1
-DHAVE_SIGNED_CHAR=1
-DHAVE_PUTENV_THAT_COPIES=1
-DHAVE_LANGINFO=1
-DHAVE_CHFLAGS=1
-DHAVE_MKSTEMPS=1
-DHAVE_GETATTRLIST=1
-DHAVE_COPYFILE_H=1
-DHAVE_COPYFILE=1
-DHAVE_LIBKERN_OSATOMIC_H=1
-DHAVE_OSSPINLOCKLOCK=1
-DUSE_VFORK=1
-DTCL_DEFAULT_ENCODING=\"utf-8\"
-DTCL_LOAD_FROM_MEMORY=1
-DTCL_WIDE_CLICKS=1
-DHAVE_AVAILABILITYMACROS_H=1
-DHAVE_WEAK_IMPORT=1
-D_DARWIN_C_SOURCE=1
-DHAVE_FTS=1
-DHAVE_SYS_IOCTL_H=1
-DHAVE_SYS_FILIO_H=1
-DTCL_UNLOAD_DLLS=1
-DHAVE_CPUID=1 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.