Basically working
This commit is contained in:
8
Makefile
8
Makefile
@@ -1,11 +1,10 @@
|
||||
|
||||
CC = clang
|
||||
LD = ld.lld
|
||||
CC = gcc
|
||||
#CFLAGS += -O0 -ggdb3
|
||||
CFLAGS += -Ofast -ggdb3
|
||||
CFLAGS += -Wall -Wextra -Wno-unused-function
|
||||
CFLAGS += -Wall -Wextra -Wno-unused-function -rdynamic
|
||||
#CFLAGS += -fsanitize=address
|
||||
LDFLAGS = -fuse-ld=lld
|
||||
LDFLAGS = -fuse-ld=lld -rdynamic
|
||||
#LDFLAGS += -fsanitize=address
|
||||
|
||||
_OBJ = chess.o
|
||||
@@ -36,7 +35,6 @@ bin/chess: $(OBJ)
|
||||
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^
|
||||
|
||||
$(TEST_DIR)/bin/test_%: testing/test_%.c obj/%.o obj/util.o
|
||||
echo $^
|
||||
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^
|
||||
|
||||
.PHONY: all clean docs test
|
||||
|
||||
1070
src/chess.c
1070
src/chess.c
File diff suppressed because it is too large
Load Diff
45
src/cool_assert.h
Normal file
45
src/cool_assert.h
Normal file
@@ -0,0 +1,45 @@
|
||||
|
||||
#pragma once
|
||||
#include <stdio.h>
|
||||
#include <execinfo.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include <assert.h>
|
||||
#undef assert
|
||||
|
||||
#ifdef assert
|
||||
#error "assert is already defined!"
|
||||
#endif
|
||||
|
||||
static void print_backtrace()
|
||||
{
|
||||
void* array[10];
|
||||
char** strings;
|
||||
int size, i;
|
||||
|
||||
size = backtrace(array, 10);
|
||||
strings = backtrace_symbols(array, size);
|
||||
if (strings != NULL)
|
||||
{
|
||||
printf ("Obtained %d stack frames.\n", size);
|
||||
for (i = 0; i < size; i++)
|
||||
printf ("%s\n", strings[i]);
|
||||
}
|
||||
|
||||
free(strings);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
static int assertion_fail(const char* msg)
|
||||
{
|
||||
fprintf(stderr, "assertion `%s` failed!\n", msg);
|
||||
print_backtrace();
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define assert(expr) ((void)((expr) || (assertion_fail(# expr), 0)))
|
||||
#else
|
||||
#define assert(expt) (void)0
|
||||
#endif
|
||||
Reference in New Issue
Block a user