Basically working
This commit is contained in:
8
Makefile
8
Makefile
@@ -1,11 +1,10 @@
|
|||||||
|
|
||||||
CC = clang
|
CC = gcc
|
||||||
LD = ld.lld
|
|
||||||
#CFLAGS += -O0 -ggdb3
|
#CFLAGS += -O0 -ggdb3
|
||||||
CFLAGS += -Ofast -ggdb3
|
CFLAGS += -Ofast -ggdb3
|
||||||
CFLAGS += -Wall -Wextra -Wno-unused-function
|
CFLAGS += -Wall -Wextra -Wno-unused-function -rdynamic
|
||||||
#CFLAGS += -fsanitize=address
|
#CFLAGS += -fsanitize=address
|
||||||
LDFLAGS = -fuse-ld=lld
|
LDFLAGS = -fuse-ld=lld -rdynamic
|
||||||
#LDFLAGS += -fsanitize=address
|
#LDFLAGS += -fsanitize=address
|
||||||
|
|
||||||
_OBJ = chess.o
|
_OBJ = chess.o
|
||||||
@@ -36,7 +35,6 @@ bin/chess: $(OBJ)
|
|||||||
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^
|
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^
|
||||||
|
|
||||||
$(TEST_DIR)/bin/test_%: testing/test_%.c obj/%.o obj/util.o
|
$(TEST_DIR)/bin/test_%: testing/test_%.c obj/%.o obj/util.o
|
||||||
echo $^
|
|
||||||
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^
|
$(CC) -o $@ $(CFLAGS) $(LDFLAGS) $^
|
||||||
|
|
||||||
.PHONY: all clean docs test
|
.PHONY: all clean docs test
|
||||||
|
|||||||
1064
src/chess.c
1064
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