70 lines
2.2 KiB
Makefile
70 lines
2.2 KiB
Makefile
CC ?= cc
|
|
CFLAGS ?= -std=c11 -O2 -Wall -Wextra -Wpedantic
|
|
OPENMP_FLAGS ?= -fopenmp
|
|
LDLIBS ?= -lm
|
|
ENABLE_PNG ?= 0
|
|
SPACETIME ?= minkowski
|
|
|
|
ifeq ($(ENABLE_PNG),1)
|
|
CPPFLAGS += -DENABLE_PNG
|
|
LDLIBS += -lpng
|
|
endif
|
|
|
|
COMMON_SOURCES := $(filter-out src/main.c src/spacetime_minkowski.c src/spacetime_schwarzschild.c,$(wildcard src/*.c))
|
|
PROVIDER_SOURCE := src/spacetime_$(SPACETIME).c
|
|
TARGET := build/$(SPACETIME)_sky
|
|
CORE_MINKOWSKI_SOURCES := $(COMMON_SOURCES) src/spacetime_minkowski.c
|
|
TEST_TARGET := build/test_geodesic
|
|
FRAME_TEST_TARGET := build/test_frame
|
|
SCHWARZSCHILD_TEST_TARGET := build/test_schwarzschild
|
|
OBSERVER_TRACK_TEST_TARGET := build/test_observer_track
|
|
|
|
.PHONY: all clean run test minkowski schwarzschild
|
|
|
|
ifeq ($(SPACETIME),minkowski)
|
|
BACKEND_CPPFLAGS := -DSPACETIME_MINKOWSKI
|
|
else ifeq ($(SPACETIME),schwarzschild)
|
|
BACKEND_CPPFLAGS := -DSPACETIME_SCHWARZSCHILD
|
|
else
|
|
$(error Unknown SPACETIME '$(SPACETIME)'; choose minkowski or schwarzschild)
|
|
endif
|
|
|
|
all: $(TARGET)
|
|
|
|
$(TARGET): $(COMMON_SOURCES) $(PROVIDER_SOURCE) src/main.c | build
|
|
$(CC) $(CPPFLAGS) $(BACKEND_CPPFLAGS) $(CFLAGS) $(OPENMP_FLAGS) -Isrc $^ $(LDLIBS) -o $@
|
|
|
|
build:
|
|
mkdir -p $@
|
|
|
|
run: $(TARGET)
|
|
mkdir -p output/imgs
|
|
./$(TARGET) --catalog assets/sky_grid_5deg.csv --output output/imgs/$(SPACETIME)_sky.ppm
|
|
|
|
minkowski:
|
|
$(MAKE) SPACETIME=minkowski all
|
|
|
|
schwarzschild:
|
|
$(MAKE) SPACETIME=schwarzschild all
|
|
|
|
$(TEST_TARGET): tests/test_geodesic.c $(CORE_MINKOWSKI_SOURCES) | build
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(OPENMP_FLAGS) -Isrc $^ $(LDLIBS) -o $@
|
|
|
|
$(FRAME_TEST_TARGET): tests/test_frame.c $(CORE_MINKOWSKI_SOURCES) | build
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(OPENMP_FLAGS) -Isrc $^ $(LDLIBS) -o $@
|
|
|
|
$(SCHWARZSCHILD_TEST_TARGET): tests/test_schwarzschild.c $(COMMON_SOURCES) src/spacetime_schwarzschild.c | build
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(OPENMP_FLAGS) -Isrc $^ $(LDLIBS) -o $@
|
|
|
|
$(OBSERVER_TRACK_TEST_TARGET): tests/test_observer_track.c $(COMMON_SOURCES) | build
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) $(OPENMP_FLAGS) -Isrc $^ $(LDLIBS) -o $@
|
|
|
|
test: $(TEST_TARGET) $(FRAME_TEST_TARGET) $(SCHWARZSCHILD_TEST_TARGET) $(OBSERVER_TRACK_TEST_TARGET)
|
|
./$(TEST_TARGET)
|
|
./$(FRAME_TEST_TARGET)
|
|
./$(SCHWARZSCHILD_TEST_TARGET)
|
|
./$(OBSERVER_TRACK_TEST_TARGET)
|
|
|
|
clean:
|
|
rm -rf build
|