37 lines
929 B
Makefile
37 lines
929 B
Makefile
# Compiler and Flags
|
|||
|
|
CC := gcc
|
||
|
|
CFLAGS := -Wall -Wextra -O2
|
||
|
|
|
||
|
|
# Query static compiler flags and libraries using pkg-config
|
||
|
|
PKG_CFLAGS := $(shell pkg-config --static --cflags sdl2 SDL2_image)
|
||
|
|
PKG_LIBS := $(shell pkg-config --static --libs sdl2 SDL2_image)
|
||
|
|
|
||
|
|
# Additional low-level system libraries required for static SDL2/PNG linking
|
||
|
|
EXTRA_LIBS := -lpng -lz -lm -lpthread -ldl
|
||
|
|
|
||
|
|
# Combine all libraries
|
||
|
|
LIBS := $(PKG_LIBS) $(EXTRA_LIBS)
|
||
|
|
|
||
|
|
# Target executable name
|
||
|
|
TARGET := viewer
|
||
|
|
SRC := main.c
|
||
|
|
|
||
|
|
.PHONY: all clean check
|
||
|
|
|
||
|
|
# Default target
|
||
|
|
all: $(TARGET)
|
||
|
|
|
||
|
|
# Compile and statically link the binary
|
||
|
|
$(TARGET): $(SRC)
|
||
|
|
$(CC) $(CFLAGS) $(PKG_CFLAGS) $< -o $@ $(LIBS)
|
||
|
|
|
||
|
|
# Check if the generated executable is truly statically linked
|
||
|
|
check: $(TARGET)
|
||
|
|
@file $(TARGET)
|
||
|
|
@echo "--- Dynamic Library Dependencies (should show 'not a dynamic executable') ---"
|
||
|
|
@-ldd $(TARGET) || true
|
||
|
|
|
||
|
|
# Clean up built artifacts
|
||
|
|
clean:
|
||
|
|
rm -f $(TARGET)
|