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…
	
	Add table
		Add a link
		
	
		Reference in a new issue