Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restyle chore: Add debug and LLVM asan build options #144

Closed
wants to merge 2 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 15 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ CFG_DIR = $(BASE_DIR)/cfg

LIBS = toxcore ncursesw libconfig libcurl

CFLAGS ?= -g
CFLAGS += -std=c99 -pthread -Wall -Wpedantic -Wunused -fstack-protector-all -Wvla -Wmissing-field-initializers -Wno-missing-braces
CFLAGS = -std=c99 -pthread -Wall -Wpedantic -Wunused -fstack-protector-all -Wvla -Wno-missing-braces
CFLAGS += '-DTOXICVER="$(VERSION)"' -DHAVE_WIDECHAR -D_XOPEN_SOURCE_EXTENDED -D_FILE_OFFSET_BITS=64
CFLAGS += '-DPACKAGE_DATADIR="$(abspath $(DATADIR))"'
CFLAGS += ${USER_CFLAGS}
Expand All @@ -18,6 +17,20 @@ OBJ += file_transfers.o friendlist.o global_commands.o conference_commands.o con
OBJ += line_info.o log.o message_queue.o misc_tools.o name_lookup.o notify.o prompt.o qr_code.o settings.o
OBJ += term_mplex.o toxic.o toxic_strings.o windows.o

# Check if debug build is enabled
DEBUG := $(shell if [ -z "$(DEBUG_ENABLED)" ] || [ "$(DEBUG_ENABLED)" = "0" ] ; then echo disabled ; else echo enabled ; fi)
ifneq ($(DEBUG), disabled)
CFLAGS += -O0 -g -DDEBUG
else
CFLAGS += -O3
endif

# Check if LLVM Address Sanitizer is enabled
ASAN_ENABLED := $(shell if [ -z "$(ENABLE_ASAN)" ] || [ "$(ENABLE_ASAN)" = "0" ] ; then echo disabled ; else echo enabled ; fi)
ifneq ($(ASAN_ENABLED), disabled)
CFLAGS += -fsanitize=address -fno-omit-frame-pointer
endif

# Check on wich system we are running
UNAME_S = $(shell uname -s)
ifeq ($(UNAME_S), Linux)
Expand Down
2 changes: 2 additions & 0 deletions cfg/targets/help.mk
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ help:
@echo " DISABLE_QRCODE: Set to \"1\" to force building without QR export support"
@echo " DISABLE_QRPNG: Set to \"1\" to force building without QR exported as PNG support"
@echo " ENABLE_PYTHON: Set to \"1\" to enable building with Python scripting support"
@echo " DEBUG_ENABLED: Set to \"1\" to build with debug symbols, no compiler optimizations and stderr enabled"
@echo " ASAN_ENABLED: Set to \"1\" to build with LLVM address sanitizer enabled.
@echo " USER_CFLAGS: Add custom flags to default CFLAGS"
@echo " USER_LDFLAGS: Add custom flags to default LDFLAGS"
@echo " PREFIX: Specify a prefix directory for binaries, data files,... (default is \"$(abspath $(PREFIX))\")"
Expand Down
12 changes: 11 additions & 1 deletion src/toxic.c
Original file line number Diff line number Diff line change
Expand Up @@ -1372,13 +1372,23 @@ int main(int argc, char **argv)

parse_args(argc, argv);

/* Use the -b flag to enable stderr */
#ifndef DEBUG

/* Use the -b flag or build with DEBUG_ENABLED=1 to enable stderr */
if (!arg_opts.debug) {
if (!freopen("/dev/null", "w", stderr)) {
fprintf(stderr, "Warning: failed to enable stderr\n");
}
}

#else

if (!arg_opts.debug) {
queue_init_message("stderr enabled (debug build)");
}

#endif // DEBUG

if (arg_opts.encrypt_data && arg_opts.unencrypt_data) {
arg_opts.encrypt_data = 0;
arg_opts.unencrypt_data = 0;
Expand Down