first commit
This commit is contained in:
commit
f9d48018a6
16 changed files with 203 additions and 0 deletions
BIN
.cache/clangd/index/simple.c.700CB8E1B8AD103E.idx
Normal file
BIN
.cache/clangd/index/simple.c.700CB8E1B8AD103E.idx
Normal file
Binary file not shown.
3
.gitignore
vendored
Normal file
3
.gitignore
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
compile_commands.json
|
||||
**/*.o
|
||||
test/log.txt
|
3
.gitmodules
vendored
Normal file
3
.gitmodules
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
[submodule "src/thirdparty/log.c"]
|
||||
path = src/thirdparty/log.c
|
||||
url = https://github.com/rxi/log.c
|
12
Makefile
Normal file
12
Makefile
Normal file
|
@ -0,0 +1,12 @@
|
|||
all:
|
||||
$(MAKE) -C src
|
||||
$(MAKE) -C test clean
|
||||
$(MAKE) -C test simple.o
|
||||
./test/simple.o
|
||||
|
||||
bear: clean
|
||||
bear -- $(MAKE)
|
||||
|
||||
clean:
|
||||
$(MAKE) -C src clean
|
||||
$(MAKE) -C test clean
|
BIN
src/.cache/clangd/index/gearlib.h.988F31907B86874A.idx
Normal file
BIN
src/.cache/clangd/index/gearlib.h.988F31907B86874A.idx
Normal file
Binary file not shown.
22
src/Makefile
Normal file
22
src/Makefile
Normal file
|
@ -0,0 +1,22 @@
|
|||
LIBRARY=libgearlib.a
|
||||
|
||||
CFLAGS=-O3 \
|
||||
-I. \
|
||||
-Ithirdparty \
|
||||
-DUSE_GLFW \
|
||||
-DLOG_USE_COLOR \
|
||||
$(shell pkg-config --cflags glfw3)
|
||||
|
||||
CFILES=$(shell find -L * -type f -name '*.c')
|
||||
OBJ=$(CFILES:.c=.o)
|
||||
|
||||
$(LIBRARY): $(OBJ) Makefile
|
||||
$(AR) rcs $(LIBRARY) $(OBJ)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) -c $< -o $@
|
||||
|
||||
clean:
|
||||
rm -rf $(OBJ) $(LIBRARY)
|
||||
|
||||
|
47
src/gearlib.h
Normal file
47
src/gearlib.h
Normal file
|
@ -0,0 +1,47 @@
|
|||
#ifndef __GEARLIB_H__
|
||||
#define __GEARLIB_H__
|
||||
|
||||
#include <math.h>
|
||||
#include <stdbool.h>
|
||||
#include <stdint.h>
|
||||
#include <assert.h>
|
||||
|
||||
typedef uint8_t u8;
|
||||
typedef uint16_t u16;
|
||||
typedef uint32_t u32;
|
||||
typedef uint64_t u64;
|
||||
typedef uintptr_t uptr;
|
||||
|
||||
typedef int8_t i8;
|
||||
typedef int16_t i16;
|
||||
typedef int32_t i32;
|
||||
typedef int64_t i64;
|
||||
typedef intptr_t iptr;
|
||||
|
||||
typedef float_t f32;
|
||||
typedef double_t f64;
|
||||
|
||||
#define GRAPI extern
|
||||
#define GR_DEFAULT_MAJOR 4
|
||||
#define GR_DEFAULT_MINOR 6
|
||||
|
||||
GRAPI i32 gr_state_init();
|
||||
#define gr_state_assert() assert(gr_state != NULL && "State not initialized")
|
||||
#define gr_state_set(prop, val) gr_state_assert(); gr_state->prop = val
|
||||
#define gr_state_get(prop) ({ gr_state_assert(); gr_state->prop; })
|
||||
|
||||
GRAPI i32 gr_window_init(i32 major, i32 minor);
|
||||
GRAPI i32 gr_window_create(i32 width, i32 height, char* title);
|
||||
|
||||
GRAPI i32 gr_log_add_file(char* filename);
|
||||
|
||||
typedef struct {
|
||||
i32 major;
|
||||
i32 minor;
|
||||
bool window_initialized;
|
||||
void* window;
|
||||
} gr_state_t;
|
||||
|
||||
GRAPI gr_state_t* gr_state;
|
||||
|
||||
#endif
|
BIN
src/libgearlib.a
Normal file
BIN
src/libgearlib.a
Normal file
Binary file not shown.
14
src/log.c
Normal file
14
src/log.c
Normal file
|
@ -0,0 +1,14 @@
|
|||
#include <gearlib.h>
|
||||
#include <log.c/src/log.h>
|
||||
|
||||
i32 gr_log_add_file(char* filename) {
|
||||
FILE* fd = fopen(filename, "w");
|
||||
if(fd == NULL) {
|
||||
log_error("Couldn't open file \"%s\"", filename);
|
||||
return 1;
|
||||
}
|
||||
|
||||
log_add_fp(fd, LOG_INFO);
|
||||
log_info("Added file \"%s\" as logging file", filename);
|
||||
return 0;
|
||||
}
|
16
src/state.c
Normal file
16
src/state.c
Normal file
|
@ -0,0 +1,16 @@
|
|||
#include "log.c/src/log.h"
|
||||
#include <gearlib.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
gr_state_t* gr_state = NULL;
|
||||
|
||||
i32 gr_state_init() {
|
||||
if(gr_state != NULL) {
|
||||
log_fatal("Init must only be called once");
|
||||
return 1;
|
||||
}
|
||||
|
||||
gr_state = calloc(1, sizeof(gr_state_t));
|
||||
log_info("Created state");
|
||||
return 0;
|
||||
}
|
1
src/thirdparty/log.c
vendored
Submodule
1
src/thirdparty/log.c
vendored
Submodule
|
@ -0,0 +1 @@
|
|||
Subproject commit f9ea34994bd58ed342d2245cd4110bb5c6790153
|
49
src/window.c
Normal file
49
src/window.c
Normal file
|
@ -0,0 +1,49 @@
|
|||
#include <gearlib.h>
|
||||
#include <GLFW/glfw3.h>
|
||||
#include <log.c/src/log.h>
|
||||
|
||||
i32 gr_window_init(i32 major, i32 minor) {
|
||||
if(gr_state->window_initialized == true) {
|
||||
log_fatal("Init already called");
|
||||
return 1;
|
||||
}
|
||||
|
||||
gr_state_set(major, major);
|
||||
gr_state_set(minor, minor);
|
||||
gr_state_set(window_initialized, true);
|
||||
|
||||
log_info("Initialized for OpenGL %d.%d", major, minor);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
i32 gr_window_create(i32 width, i32 height, char* title) {
|
||||
if(!gr_state_get(window_initialized)) {
|
||||
log_info("Window was not initialized before calling create, defaulting to OpenGL %d.%d",
|
||||
GR_DEFAULT_MAJOR, GR_DEFAULT_MINOR);
|
||||
gr_window_init(GR_DEFAULT_MAJOR, GR_DEFAULT_MINOR);
|
||||
}
|
||||
|
||||
#ifdef USE_GLFW
|
||||
if(glfwInit() != GLFW_TRUE) {
|
||||
log_fatal("GLFW failed to initialize");
|
||||
} else {
|
||||
log_info("GLFW initialized successfully");
|
||||
}
|
||||
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, gr_state_get(major));
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, gr_state_get(minor));
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
|
||||
|
||||
gr_state_set(window, glfwCreateWindow(width, height, title, NULL, NULL));
|
||||
if(gr_state_get(window) == NULL) {
|
||||
log_fatal("Failed to create window");
|
||||
return 1;
|
||||
} else {
|
||||
log_info("Window created successfully");
|
||||
}
|
||||
#endif
|
||||
|
||||
return 0;
|
||||
}
|
15
test/Makefile
Normal file
15
test/Makefile
Normal file
|
@ -0,0 +1,15 @@
|
|||
CFLAGS=-O3 -I../src
|
||||
LDFLAGS=-L../src -lgearlib $(shell pkg-config --libs glfw3)
|
||||
|
||||
CFILES=$(shell find -L * -type f -name '*.c')
|
||||
OBJ=$(CFILES:.c=.o)
|
||||
|
||||
%.o: %.c
|
||||
$(CC) $(CFLAGS) $(LDFLAGS) $< -o $@
|
||||
|
||||
all: $(OBJ)
|
||||
|
||||
clean:
|
||||
rm -rf $(OBJ) $(BINARY)
|
||||
|
||||
|
7
test/simple-init.c
Normal file
7
test/simple-init.c
Normal file
|
@ -0,0 +1,7 @@
|
|||
#include <gearlib.h>
|
||||
|
||||
int main() {
|
||||
gr_state_init();
|
||||
gr_window_init(4, 1);
|
||||
gr_window_create(800, 600, "hi");
|
||||
}
|
8
test/simple-log.c
Normal file
8
test/simple-log.c
Normal file
|
@ -0,0 +1,8 @@
|
|||
#include <gearlib.h>
|
||||
|
||||
int main() {
|
||||
gr_state_init();
|
||||
|
||||
gr_log_add_file("log.txt");
|
||||
gr_window_create(800, 600, "hi");
|
||||
}
|
6
test/simple.c
Normal file
6
test/simple.c
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include <gearlib.h>
|
||||
|
||||
int main() {
|
||||
gr_state_init();
|
||||
gr_window_create(800, 600, "hi");
|
||||
}
|
Loading…
Add table
Reference in a new issue