From e03ceb1871e6088ee0942975bdf5411fd9f614ae Mon Sep 17 00:00:00 2001 From: David Jolley Date: Wed, 24 Jul 2024 12:53:53 +0100 Subject: [PATCH] Makefile made more generic Uses pkg-config to source locations of libSDL. As commented in Makefile, *may* cause issues with builds on Mac, but there are known Mac-isms to make this work. Also needs the math library for round() as referenced by video.o This causes builds to start working on Ubuntu 24.04 with the default SDL2 libraries installed using apt. Arch is known to need pkg-config to use SDL libs too, but I'm not sitting at my arch machine at the moment, so no idea if this is complete for that platform. A meta-build system *may* be a good idea? --- Makefile | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/Makefile b/Makefile index 3454926..8074cfe 100644 --- a/Makefile +++ b/Makefile @@ -1,18 +1,24 @@ # Variables CC = gcc -CFLAGS = -Wall -Wextra -std=c11 -I/usr/local/include/SDL2 -LDFLAGS = -L/usr/local/lib -lSDL2 +# Probably this won't work on a mac using xcode. +# See https://stackoverflow.com/questions/3071321/how-to-use-pkg-config-for-setting-include-paths-in-xcode +# for possible workarounds? +# != is a GNU make extension, so may also not work on *BSD +SDL_CFLAGS!=pkg-config --cflags sdl2 +SDL_LFLAGS!=pkg-config --libs sdl2 +CFLAGS = -Wall -Wextra -std=c11 $(SDL_CFLAGS) +LDFLAGS = $(SDL_LFLAGS) -lm SRC_DIR = src SOURCES = $(wildcard $(SRC_DIR)/*.c) OBJECTS = $(SOURCES:$(SRC_DIR)/%.c=%.o) TARGET = bsx # Default target -all: $(TARGET) +all: $(TARGET) Makefile # Linking $(TARGET): $(OBJECTS) - $(CC) $(LDFLAGS) -o $@ $^ + $(CC) -o $@ $^ $(LDFLAGS) # Compiling %.o: $(SRC_DIR)/%.c