feat(c): add hello source

This commit is contained in:
Sigmanificient 2024-05-06 23:40:01 +02:00
parent af8d3f5deb
commit aff83a7bf1
3 changed files with 69 additions and 0 deletions

35
c/Makefile Normal file
View file

@ -0,0 +1,35 @@
.POSIX:
.SUFFIXES: .o
CC ?= gcc
OUT := hello
SRC += main.c
OBJ := $(SRC:.c=.o)
CFLAGS += @compile_flags.txt
CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS := -fwhole-program -flto
LDFLAGS += -Wl,--gc-sections -s
RM ?= rm -f
.DEFAULT_GOAL: all
.PHONY: all
all: $(OUT)
$(OUT): $(OBJ)
$(CC) -o $@ $<
.PHONY: clean
clean:
$(RM) $(OBJ)
.PHONY: fclean
fclean: clean
$(RM) -r $(OUT)
.PHONY: re
.NOTPARALLEL: re
re: fclean all

18
c/compile_flags.txt Normal file
View file

@ -0,0 +1,18 @@
-std=c99
-pedantic
-pipe
-Wall
-Wcast-qual
-Wconversion
-Werror=return-type
-Werror=vla-larger-than=0
-Wextra
-Wmissing-prototypes
-Wshadow
-Wstrict-prototypes
-Wwrite-strings
-O2
-march=native
-mtune=native

16
c/main.c Normal file
View file

@ -0,0 +1,16 @@
#include <stdlib.h>
#include <unistd.h>
#define lengthof(sstr) (sizeof (sstr) / sizeof *(sstr))
#define sstr_len(sstr) (lengthof(sstr) - 1)
#define sstr_unpack(sstr) (sstr), (sstr_len(sstr))
static const char GREETING[] = "hello, world!\n";
int main(void)
{
return (
write(STDOUT_FILENO, sstr_unpack(GREETING))
== sstr_len(GREETING)
) ? EXIT_SUCCESS : EXIT_FAILURE;
}