summaryrefslogtreecommitdiffstats
path: root/Makefile
AgeCommit message (Collapse)Author
2023-05-18build: Error on implicit function declarationsTavian Barnes
2023-05-18bit: Rename int.h to bit.hTavian Barnes
2023-05-16build: Fix test utility compilationTavian Barnes
2023-05-16int: Backport C23's _WIDTH macrosTavian Barnes
2023-05-16build: Make the tests a little less repetitiveTavian Barnes
2023-05-03Let musl builds use getdents64()Tavian Barnes
Glibc exposes a different struct dirent and dirent64, while on musl they are the same. But musl needs _LARGEFILE64_SOURCE to expose the *64() aliases.
2023-04-12build: Fix tsanTavian Barnes
2023-03-31list: Use macros instead of type-erased listsTavian Barnes
2023-03-29list: New generic linked list APITavian Barnes
2023-01-31Release 2.6.32.6.3Tavian Barnes
2023-01-25Replace license boilerplate with SPDX tagsTavian Barnes
And while I'm at it, remove years from copyright declarations. Link: https://spdx.dev/about/ Link: https://daniel.haxx.se/blog/2023/01/08/copyright-without-years/
2023-01-19bfstd: New wrappers for dirname()/basename()Tavian Barnes
2023-01-19build: New $(LIBBFS) variable shared between the main binary and testsTavian Barnes
2022-12-09Turn on more aggressive format string warningsTavian Barnes
2022-11-11distcheck: Add ubsan to msan buildTavian Barnes
2022-11-07tests/xtouch: New utilityTavian Barnes
POSIX touch(1) doesn't include the -h option, and indeed OpenBSD doesn't implement it. Making our own utility also lets us add some handy extensions like -p (create parents) and -M (set permissions).
2022-11-06bfstd: Rename from util and reorganize itTavian Barnes
2022-11-06util: Get rid of BFS_HAS_INCLUDE() wrapper for __has_include()Tavian Barnes
Since __has_include() needs special preprocessing rules (e.g. not expanding `linux` in `__has_include(<linux/stat.h>)`, macros that expand to __has_include() do not necessarily behave correctly. Instead, we have to directly test `#if __has_include(...)`. See https://bugs.llvm.org/show_bug.cgi?id=37990 for more details.
2022-10-21Release 2.6.22.6.2Tavian Barnes
2022-07-05Release 2.6.12.6.1Tavian Barnes
2022-06-14Add fish completionGustavo Costa
2022-05-31Makefile: Pass -std=gnu11 for gcov buildsTavian Barnes
Otherwise, libgcov doesn't intercept functions like fork() and exec(), so we lose some coverage data in xspawn.c. Link: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82457
2022-05-21Release 2.62.6Tavian Barnes
2022-05-20Makefile: Add a BUILDDIR variable for out-of-tree buildsTavian Barnes
bfs can now be built from a read-only source tree.
2022-05-16Makefile: Split build into bin and obj directoriesTavian Barnes
This also moves the main binary from ./bfs to ./bin/bfs, and ./tests.sh to ./tests/tests.sh, with the goal of keeping the repository root clean.
2022-05-13tests: Buffer standard error, and print it when tests failTavian Barnes
2022-05-13tests: Add --verbose={commands,errors,skipped,tests} optionsTavian Barnes
2022-05-12tests: Use skip_if for sudo testsTavian Barnes
This lets us categorize the sudo tests properly, which fixes e.g. $ ./tests.sh --posix --sudo
2022-05-11Makefile: Look for .d files in the right placesTavian Barnes
Fixes: f2cb2215213c0d831a697b0b440f78d9ad5c2b83
2022-05-09Makefile: New check-install targetTavian Barnes
2022-04-21docs: Move some documentation into a subfolderTavian Barnes
2022-04-21Add basic zsh completionArvid Norlander
Fixes #32.
2022-04-21Makefile: Put the main .o files under build/srcTavian Barnes
2022-04-21Makefile: Generate build/FLAGS.new with its own targetTavian Barnes
2022-04-19Makefile: Replace flags.sh with a two-line recipeTavian Barnes
2022-04-19Makefile: Move .flags to build/FLAGSTavian Barnes
2022-04-19Makefile: Quiet errors from git describeTavian Barnes
With new git versions, it is an error to invoke git inside a repository owned by someone else. This manifested as $ sudo make install fatal: unsafe repository ('/home/tavianator/code/bfs' is owned by someone else) To add an exception for this directory, call: git config --global --add safe.directory /home/tavianator/code/bfs Work around it with `2>/dev/null`. This should also help if git is not installed, but .git/ still exists. Link: https://github.blog/2022-04-12-git-security-vulnerability-announced/
2022-04-18Makefile: Spread out the .PHONY targetsTavian Barnes
2022-04-18Makefile: Use a recipe to update .flags rather than $(shell)Tavian Barnes
This means we don't need to generate .flags unless we're actually building a target that needs it, which is important for thing like $ sudo make install that used to inconveniently create a root-owned .flags file.
2022-04-16tests: Also put build outputs under build/Tavian Barnes
2022-04-16Keep Build Files In `build` (#89)トトも
2022-04-16Source / Include Folder (#88)トトも
Moved Source Files Into `src` Folder
2022-03-27Release 2.52.5Tavian Barnes
2022-03-25Update from C99 to C11Tavian Barnes
This is necessary for standard anonymous structs/unions.
2022-03-12Don't shadow standard headersTavian Barnes
@italic on the AUR stated that bfs from the AUR fails to build on Manjaro. From the build log, it seems like <time.h> doesn't get included properly. I assume it's picking up ./time.h instead. I couldn't reproduce the build issue in the default configuration, but it does fail with EXTRA_CFLAGS="-I." which isn't good. So rename everything with an x prefix to stop clashing. Link: https://aur.archlinux.org/packages/bfs#comment-856102 Link: https://paste.rs/eqR
2022-03-11Makefile: Disable onig-config for the 32-bit distcheck buildTavian Barnes
onig-config can redundantly add -L/usr/lib to LDLIBS, which results in a few warnings like /usr/bin/ld: skipping incompatible /usr/lib/libonig.so when searching for -lonig While I'm at it, explicitly restrict the -m32 build to Linux, since it doesn't work on FreeBSD and was only skipped because uname -m is amd64, not x86_64.
2022-03-11Makefile: Enable time64Tavian Barnes
2022-03-09Makefile: Add lsan and tsan flag targetsTavian Barnes
2022-02-28Makefile: Make separate variables for Oniguruma flagsTavian Barnes
This allows customizing the necessary flags if onig-config isn't available or is undesirable (e.g. when linking against a non-system build of libonig).
2022-02-24Release 2.4.12.4.1Tavian Barnes