Initial
This commit is contained in:
commit
dcfa7750a2
2 changed files with 88 additions and 0 deletions
82
makefile
Normal file
82
makefile
Normal file
|
@ -0,0 +1,82 @@
|
|||
# Compiler and assembler
|
||||
CC = gcc
|
||||
AS = as
|
||||
LD = ld
|
||||
OBJDUMP = objdump
|
||||
SIZE = size
|
||||
|
||||
CFLAGS += -std=c2x
|
||||
CFLAGS += -Wall
|
||||
CFLAGS += -Wextra
|
||||
CFLAGS += -Werror
|
||||
CFLAGS += -Wno-unused-parameter
|
||||
CFLAGS += -Wno-unused-variable
|
||||
CFLAGS += -Wno-unused-function
|
||||
CFLAGS += -Wno-unused-but-set-variable
|
||||
CFLAGS += -Wno-unused-value
|
||||
CFLAGS += -Wno-unused-label
|
||||
CFLAGS += -Wno-unused-result
|
||||
CFLAGS += -Wno-unused-local-typedefs
|
||||
CFLAGS += -Wno-unused-const-variable
|
||||
CFLAGS += -Wno-unused-macros
|
||||
CFLAGS += -O3
|
||||
CFLAGS += -g
|
||||
|
||||
# Specify the target binary (call it whatever)
|
||||
TARGET = build/bin.elf
|
||||
TARGET_TAR = $(TARGET).tar.zst
|
||||
TARGET_SIG = $(TARGET_TAR).minisig
|
||||
|
||||
SRCS := $(wildcard src/*.c)
|
||||
|
||||
# Specify the object files in the build directory
|
||||
OBJS := $(patsubst src/%.c,build/%.o,$(SRCS))
|
||||
|
||||
all : $(TARGET)
|
||||
|
||||
release : $(TARGET)
|
||||
@strip $(TARGET)
|
||||
@upx -q --force-overwrite $(TARGET) -o $(TARGET).upx > /dev/null
|
||||
@minisign -Sm $(TARGET)
|
||||
@tar --zstd -cvf $(TARGET).tar.zst $(TARGET) $(TARGET).minisig 1>/dev/null
|
||||
@zip $(TARGET).zip $(TARGET) $(TARGET).minisig 1>/dev/null
|
||||
@7za a $(TARGET).7z $(TARGET) $(TARGET).minisig 1>/dev/null
|
||||
|
||||
# For convenience
|
||||
run : $(TARGET)
|
||||
@./$(TARGET)
|
||||
|
||||
mkbuilddir:
|
||||
@mkdir -p build
|
||||
|
||||
# Link the object files into the target binary
|
||||
$(TARGET) : $(OBJS)
|
||||
@$(CC) $(CFLAGS) -o $@ $^
|
||||
@echo -e "LD \t$^"
|
||||
|
||||
# Compile the source files into object files
|
||||
build/%.o : src/%.c | mkbuilddir
|
||||
@$(CC) $(CFLAGS) -c -o $@ $< || (rm -f $@ && exit 1)
|
||||
@echo -e "CC \t$<"
|
||||
|
||||
# Print the size of the target binary
|
||||
size : $(TARGET)
|
||||
$(SIZE) $(TARGET)
|
||||
|
||||
# Clean up the build directory
|
||||
clean :
|
||||
rm -r build
|
||||
rm -f build/*.o
|
||||
rm -f $(TARGET)*
|
||||
|
||||
# Create a signed release
|
||||
tar: $(TARGET_TAR) $(TARGET_SIG)
|
||||
|
||||
$(TARGET_SIG): $(TARGET_TAR)
|
||||
minisign -Sm $<
|
||||
|
||||
$(TARGET_TAR): $(TARGET)
|
||||
strip $<
|
||||
tar --zstd -cvf $@ $<
|
||||
|
||||
.PHONY : all clean size mkbuilddir run gdb
|
6
src/main.c
Normal file
6
src/main.c
Normal file
|
@ -0,0 +1,6 @@
|
|||
#include <stdio.h>
|
||||
|
||||
int main(int argc, const char **argv) {
|
||||
printf("Hello, World!\n");
|
||||
return 0;
|
||||
}
|
Loading…
Reference in a new issue