Skip to content

GerbenAaltink/rlib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

94 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RLIB

Collection of frequently used C functions by me.

It contains

  • An advanced benchmark system.
  • An alternative to printf supporting printing of time between messages for e.g. benchmarking. and colors.
  • Super fast tree map (much faster than hash table).
  • Stdout redirection.
  • Terminal progress bar.
  • Multi purpose lexer.
  • Custom malloc for counting allocations and free's.
  • Simple test library that works like assert that also checks memory if rmalloc is used and creates summary and provides exit code.
  • Several time functions supporting nano seconds.
  • Several math functions for if not available by std (on termux for example).
  • Arena blazing fast memory.

Extensive tested and benchmarked

All files get merged together to one file called rlib.c that can be used as a header file. The result is a single header framework. Gif of build process

ENVIRONMENT VARIABLES

Disabling color

Set env RDISABLE_COLORS = 1 to disable color on stdout. stderr will still have colors for gui.

Compiler and Flags

  • CC = gcc: Specifies the C compiler (GCC).
  • CFLAGS = -Wall -Wextra -Ofast: Compiler flags:
    • -Wall: Enable all warnings.
    • -Wextra: Enable extra warnings.
    • -Ofast: Optimize for speed.
  • LDFLAGS = -lm: Linker flags to link with the math library.

Main Targets

all:

Runs the following steps in sequence:

  • Testing (test_* targets).
  • Formatting code (format_all).
  • Building the project (build).
  • Installing executables (install).

format_all:

Runs clang-format to format all .c, .h, and .cpp files in the directory.

build:

Builds the rlib shared library (librlib.so) and an executable rlibso that uses this library:

  • Compiles rlib.c into librlib.so.
  • Compiles rlibso.c linking it with librlib.so.
  • Runs the rlibso executable.

install:

Installs the rmerge and clean executables to /usr/bin using sudo.

Testing Targets (test_*)

Each test_* target follows these steps:

build_*:

Compiles a specific .c file into an executable in the ./build directory.

run_*:

Runs the corresponding executable.

Example for rlexer:

  • build_rlexer: Compiles rlexer.c to ./build/rlexer.
  • run_rlexer: Runs ./build/rlexer.

Backup

backup:

Compresses the source files, Makefile, and additional project files into a rlib.rzip archive.

Special Cases

test_rbench_cpp:

Builds and runs a C++ benchmark program:

  • Compiles rbench.cpp along with other necessary files.
  • Runs the resulting executable.

Other Targets

format_rlib_c:

Specifically formats the rlib.c file.

build_*:

Targets that compile source files into executables.

run_*:

Targets that run the compiled executables.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages