Skip to content

Commit

Permalink
chore: Initial macos support in bazel build.
Browse files Browse the repository at this point in the history
  • Loading branch information
iphydf committed Jan 23, 2025
1 parent 832b3ef commit 4e0e646
Show file tree
Hide file tree
Showing 14 changed files with 658 additions and 25 deletions.
16 changes: 10 additions & 6 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ build --features=layering_check

build --experimental_inmemory_dotd_files
build --experimental_inmemory_jdeps_files
build --experimental_omitfp
build --experimental_remotable_source_manifests
build --experimental_remote_merkle_tree_cache
build --experimental_remote_require_cached
Expand Down Expand Up @@ -114,11 +113,12 @@ build:remote-exec --remote_download_outputs=all

# Flags for systems with GNU linker or compatible.

build --host_linkopt='-fPIE'
build --host_linkopt='-Wl,-z,defs'
build --linkopt='-Wl,-z,noexecstack'
build --host_linkopt='-Wl,-z,noexecstack'
build --host_linkopt='-Wl,--warn-execstack'
build:linux --experimental_omitfp
build:linux --host_linkopt='-fPIE'
build:linux --host_linkopt='-Wl,-z,defs'
build:linux --linkopt='-Wl,-z,noexecstack'
build:linux --host_linkopt='-Wl,-z,noexecstack'
build:linux --host_linkopt='-Wl,--warn-execstack'

#build:local --linkopt='-Wl,--fatal-warnings'
#build:local --host_linkopt='-Wl,--fatal-warnings'
Expand Down Expand Up @@ -557,6 +557,7 @@ build --per_file_copt='external[:/]@-Wno-unused-macros'
build --per_file_copt='external[:/]@-Wno-unused-template'
build --per_file_copt='external[:/]@-Wno-weak-vtables'
build --per_file_copt='external[:/]@-Wno-zero-as-null-pointer-constant'
build --per_file_copt='external/benchmark[:/]@-Wno-unused-member-function'
build --per_file_copt='external/boringssl[:/]@-Wno-c11-extensions'
build --per_file_copt='external/boringssl[:/]@-Wno-cast-function-type'
build --per_file_copt='external/boringssl[:/]@-Wno-extra-semi'
Expand Down Expand Up @@ -619,6 +620,8 @@ build --per_file_copt='external/ffmpeg[:/]@-Wno-unused-const-variable'
build --per_file_copt='external/ffmpeg[:/]@-Wno-unused-function'
build --per_file_copt='external/ffmpeg[:/]@-Wno-unused'
build --per_file_copt='external/libbacktrace[:/]@-Wno-atomic-implicit-seq-cst'
build --per_file_copt='external/libbacktrace[:/]@-Wno-pedantic'
build --per_file_copt='external/libbacktrace[:/]@-Wno-unused-but-set-variable'
build --per_file_copt='external/libcap[:/]@-Wno-gnu-zero-variadic-macro-arguments'
build --per_file_copt='external/libcap[:/]@-Wno-sign-compare'
build --per_file_copt='external/libcap[:/]@-Wno-tautological-unsigned-enum-zero-compare'
Expand All @@ -631,6 +634,7 @@ build --per_file_copt='external/libidn2[:/]@-Wno-pedantic'
build --per_file_copt='external/libidn2[:/]@-Wno-sign-compare'
build --per_file_copt='external/libidn2[:/]@-Wno-unused-const-variable'
build --per_file_copt='external/libqrencode[:/]@-Wno-tautological-unsigned-enum-zero-compare'
build --per_file_copt='external/libsodium[:/]@-Wno-vector-conversion'
build --per_file_copt='external/libsodium[:/]@-Wno-unknown-pragmas'
build --per_file_copt='external/libsodium[:/]@-Wno-unused-but-set-variable'
build --per_file_copt='external/libsodium[:/]@-Wno-unused-function'
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,17 @@ jobs:
nix-shell -p patchelf --run "patchelf --version"
bazel test --config=local --config=remote -- //... -//jvm-toxcore-c/... -//third_party/...
macos:
runs-on: macos-14
steps:
- uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Nix
run: sh <(curl -L https://nixos.org/nix/install) --yes
- name: Build
run: bazel test --config=remote //c-toxcore/toxcore/...

mypy:
runs-on: ubuntu-22.04
steps:
Expand Down
5 changes: 3 additions & 2 deletions .restyled.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ exclude:
- "third_party/ffmpeg/**/*.[ch]"
- "third_party/haskell/alex/templates/*.hs"
- "third_party/haskell/happy/templates/*"
- "third_party/libsodium/version.h"
- "third_party/libzmq/**/*.hpp"
- "third_party/libbacktrace/**/*.h"
- "third_party/libsodium/**/*.h"
- "third_party/libvpx/**/*.h"
- "third_party/libvpx/**/*.mk"
- "third_party/libzmq/**/*.hpp"
- "third_party/ncurses/src/**/*"
- "third_party/opus/**/*.h"
4 changes: 2 additions & 2 deletions third_party/libbacktrace.BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,6 @@ cc_library(
"atomic.c",
"backtrace.c",
"backtrace.h",
"backtrace-supported.h",
"config.h",
"dwarf.c",
"elf.c",
"fileline.c",
Expand All @@ -49,6 +47,8 @@ cc_library(
"read.c",
"sort.c",
"state.c",
"@toktok//third_party/libbacktrace:config",
],
copts = ["-I$(GENDIR)/third_party/libbacktrace"],
visibility = ["//visibility:public"],
)
19 changes: 19 additions & 0 deletions third_party/libbacktrace/BUILD.bazel
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
genrule(
name = "config",
srcs = select({
"@toktok//tools/config:linux-x86_64": [
"linux-x86_64/backtrace-supported.h",
"linux-x86_64/config.h",
],
"@toktok//tools/config:macos-arm64": [
"macos-arm64/backtrace-supported.h",
"macos-arm64/config.h",
],
}),
outs = [
"config.h",
"backtrace-supported.h",
],
cmd = "cp $(SRCS) $$(dirname $(location config.h))",
visibility = ["@libbacktrace//:__pkg__"],
)
66 changes: 66 additions & 0 deletions third_party/libbacktrace/linux-x86_64/backtrace-supported.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
/* backtrace-supported.h.in -- Whether stack backtrace is supported.
Copyright (C) 2012-2024 Free Software Foundation, Inc.
Written by Ian Lance Taylor, Google.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
(1) Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
(2) Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
(3) The name of the author may not be used to
endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE. */

/* The file backtrace-supported.h.in is used by configure to generate
the file backtrace-supported.h. The file backtrace-supported.h may
be #include'd to see whether the backtrace library will be able to
get a backtrace and produce symbolic information. */


/* BACKTRACE_SUPPORTED will be #define'd as 1 if the backtrace library
should work, 0 if it will not. Libraries may #include this to make
other arrangements. */

#define BACKTRACE_SUPPORTED 0

/* BACKTRACE_USES_MALLOC will be #define'd as 1 if the backtrace
library will call malloc as it works, 0 if it will call mmap
instead. This may be used to determine whether it is safe to call
the backtrace functions from a signal handler. In general this
only applies to calls like backtrace and backtrace_pcinfo. It does
not apply to backtrace_simple, which never calls malloc. It does
not apply to backtrace_print, which always calls fprintf and
therefore malloc. */

#define BACKTRACE_USES_MALLOC 0

/* BACKTRACE_SUPPORTS_THREADS will be #define'd as 1 if the backtrace
library is configured with threading support, 0 if not. If this is
0, the threaded parameter to backtrace_create_state must be passed
as 0. */

#define BACKTRACE_SUPPORTS_THREADS 1

/* BACKTRACE_SUPPORTS_DATA will be #defined'd as 1 if the backtrace_syminfo
will work for variables. It will always work for functions. */

#define BACKTRACE_SUPPORTS_DATA 1
186 changes: 186 additions & 0 deletions third_party/libbacktrace/linux-x86_64/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,186 @@
/* config.h. Generated from config.h.in by configure. */
/* config.h.in. Generated from configure.ac by autoheader. */

/* ELF size: 32 or 64 */
#define BACKTRACE_ELF_SIZE 64

/* XCOFF size: 32 or 64 */
#define BACKTRACE_XCOFF_SIZE unused

/* Define to 1 if you have the __atomic functions */
#define HAVE_ATOMIC_FUNCTIONS 1

/* Define to 1 if you have the `clock_gettime' function. */
#define HAVE_CLOCK_GETTIME 1

/* Define to 1 if you have the declaration of `getpagesize', and to 0 if you
don't. */
#define HAVE_DECL_GETPAGESIZE 1

/* Define to 1 if you have the declaration of `strnlen', and to 0 if you
don't. */
#define HAVE_DECL_STRNLEN 1

/* Define to 1 if you have the declaration of `_pgmptr', and to 0 if you
don't. */
#define HAVE_DECL__PGMPTR 0

/* Define to 1 if you have the <dlfcn.h> header file. */
#define HAVE_DLFCN_H 1

/* Define if dl_iterate_phdr is available. */
#define HAVE_DL_ITERATE_PHDR 1

/* Define to 1 if you have the fcntl function */
#define HAVE_FCNTL 1

/* Define if getexecname is available. */
/* #undef HAVE_GETEXECNAME */

/* Define if _Unwind_GetIPInfo is available. */
#define HAVE_GETIPINFO 1

/* Define to 1 if you have the <inttypes.h> header file. */
#define HAVE_INTTYPES_H 1

/* Define to 1 if you have KERN_PROC and KERN_PROC_PATHNAME in <sys/sysctl.h>.
*/
/* #undef HAVE_KERN_PROC */

/* Define to 1 if you have KERN_PROCARGS and KERN_PROC_PATHNAME in
<sys/sysctl.h>. */
/* #undef HAVE_KERN_PROC_ARGS */

/* Define if -llzma is available. */
/* #undef HAVE_LIBLZMA */

/* Define to 1 if you have the <link.h> header file. */
#define HAVE_LINK_H 1

/* Define if AIX loadquery is available. */
/* #undef HAVE_LOADQUERY */

/* Define to 1 if you have the `lstat' function. */
#define HAVE_LSTAT 1

/* Define to 1 if you have the <mach-o/dyld.h> header file. */
/* #undef HAVE_MACH_O_DYLD_H */

/* Define to 1 if you have the <memory.h> header file. */
#define HAVE_MEMORY_H 1

/* Define to 1 if you have the `readlink' function. */
#define HAVE_READLINK 1

/* Define to 1 if you have the <stdint.h> header file. */
#define HAVE_STDINT_H 1

/* Define to 1 if you have the <stdlib.h> header file. */
#define HAVE_STDLIB_H 1

/* Define to 1 if you have the <strings.h> header file. */
#define HAVE_STRINGS_H 1

/* Define to 1 if you have the <string.h> header file. */
#define HAVE_STRING_H 1

/* Define to 1 if you have the __sync functions */
#define HAVE_SYNC_FUNCTIONS 1

/* Define to 1 if you have the <sys/ldr.h> header file. */
/* #undef HAVE_SYS_LDR_H */

/* Define to 1 if you have the <sys/link.h> header file. */
/* #undef HAVE_SYS_LINK_H */

/* Define to 1 if you have the <sys/mman.h> header file. */
#define HAVE_SYS_MMAN_H 1

/* Define to 1 if you have the <sys/stat.h> header file. */
#define HAVE_SYS_STAT_H 1

/* Define to 1 if you have the <sys/types.h> header file. */
#define HAVE_SYS_TYPES_H 1

/* Define to 1 if you have the <tlhelp32.h> header file. */
/* #undef HAVE_TLHELP32_H */

/* Define to 1 if you have the <unistd.h> header file. */
#define HAVE_UNISTD_H 1

/* Define to 1 if you have the <windows.h> header file. */
/* #undef HAVE_WINDOWS_H */

/* Define if -lz is available. */
/* #undef HAVE_ZLIB */

/* Define if -lzstd is available. */
/* #undef HAVE_ZSTD */

/* Define to the sub-directory in which libtool stores uninstalled libraries.
*/
#define LT_OBJDIR ".libs/"

/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT ""

/* Define to the full name of this package. */
#define PACKAGE_NAME "package-unused"

/* Define to the full name and version of this package. */
#define PACKAGE_STRING "package-unused version-unused"

/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "libbacktrace"

/* Define to the home page for this package. */
#define PACKAGE_URL ""

/* Define to the version of this package. */
#define PACKAGE_VERSION "version-unused"

/* Define to 1 if you have the ANSI C header files. */
#define STDC_HEADERS 1

/* Enable extensions on AIX 3, Interix. */
#ifndef _ALL_SOURCE
# define _ALL_SOURCE 1
#endif
/* Enable GNU extensions on systems that have them. */
#ifndef _GNU_SOURCE
# define _GNU_SOURCE 1
#endif
/* Enable threading extensions on Solaris. */
#ifndef _POSIX_PTHREAD_SEMANTICS
# define _POSIX_PTHREAD_SEMANTICS 1
#endif
/* Enable extensions on HP NonStop. */
#ifndef _TANDEM_SOURCE
# define _TANDEM_SOURCE 1
#endif
/* Enable general extensions on Solaris. */
#ifndef __EXTENSIONS__
# define __EXTENSIONS__ 1
#endif


/* Enable large inode numbers on Mac OS X 10.5. */
#ifndef _DARWIN_USE_64_BIT_INODE
# define _DARWIN_USE_64_BIT_INODE 1
#endif

/* Number of bits in a file offset, on hosts where this is settable. */
/* #undef _FILE_OFFSET_BITS */

/* Define for large files, on AIX-style hosts. */
/* #undef _LARGE_FILES */

/* Define to 1 if on MINIX. */
/* #undef _MINIX */

/* Define to 2 if the system does not provide POSIX.1 features except with
this defined. */
/* #undef _POSIX_1_SOURCE */

/* Define to 1 if you need to in order for `stat' and other things to work. */
/* #undef _POSIX_SOURCE */
Loading

0 comments on commit 4e0e646

Please sign in to comment.