Compare commits
No commits in common. '2205b1b202c1fad7349fc06a06f64e75c1f23477' and 'eade44a245409a337ccdf0bfdff8f67c0d5aff10' have entirely different histories.
2205b1b202
...
eade44a245
16 changed files with 80 additions and 113 deletions
@ -1,9 +1,9 @@ |
|||||||
|
[submodule "ext/raylib"] |
||||||
|
path = ext/raylib |
||||||
|
url = https://github.com/raysan5/raylib.git |
||||||
[submodule "ext/tomlc17"] |
[submodule "ext/tomlc17"] |
||||||
path = ext/tomlc17 |
path = ext/tomlc17 |
||||||
url = https://github.com/cktan/tomlc17 |
url = https://github.com/cktan/tomlc17 |
||||||
[submodule "example/ext/raylib"] |
[submodule "ext/raygui"] |
||||||
path = example/ext/raylib |
path = ext/raygui |
||||||
url = https://github.com/raysan5/raylib.git |
|
||||||
[submodule "example/ext/raygui"] |
|
||||||
path = example/ext/raygui |
|
||||||
url = https://github.com/raysan5/raygui.git |
url = https://github.com/raysan5/raygui.git |
||||||
|
|||||||
@ -1,57 +1,87 @@ |
|||||||
|
# Compiler and flags
|
||||||
CXX = g++
|
CXX = g++
|
||||||
CXXFLAGS = -Wall -Wextra -g -ggdb3 -std=c++14 \
|
CXXFLAGS = -Wall -Wextra -g -ggdb3 -std=c++14 \
|
||||||
-I./src \
|
-I./src \
|
||||||
-isystem./ext/tomlc17/src
|
-isystem./ext/tomlc17/src \
|
||||||
LDFLAGS = -lm
|
-isystem./ext/raylib/src \
|
||||||
|
-isystem./ext/raygui/src \
|
||||||
|
-isystem./ext/raygui/styles
|
||||||
|
LDFLAGS = -L./ext/raylib/src -lraylib -lm -lpthread -ldl -lrt -lX11
|
||||||
|
|
||||||
|
# Directories
|
||||||
SRC_DIR = src
|
SRC_DIR = src
|
||||||
BUILD_DIR ?= build
|
BUILD_DIR ?= build
|
||||||
|
RAYLIB_DIR = ext/raylib/src
|
||||||
|
TARGET = ${BUILD_DIR}/orbit_sim
|
||||||
TEST_DIR = tests
|
TEST_DIR = tests
|
||||||
|
TEST_TARGET = ${BUILD_DIR}/orbit_test
|
||||||
|
|
||||||
|
# Source files (exclude old mission planning files)
|
||||||
CPP_SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
|
CPP_SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
|
||||||
C_SOURCES = ext/tomlc17/src/tomlc17.c
|
C_SOURCES = ext/tomlc17/src/tomlc17.c
|
||||||
TEST_SOURCES := $(wildcard $(TEST_DIR)/*.cpp)
|
TEST_SOURCES := $(wildcard $(TEST_DIR)/*.cpp)
|
||||||
|
|
||||||
|
# Object files
|
||||||
CPP_OBJECTS = $(CPP_SOURCES:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o)
|
CPP_OBJECTS = $(CPP_SOURCES:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o)
|
||||||
C_OBJECTS = $(BUILD_DIR)/tomlc17.o
|
C_OBJECTS = $(BUILD_DIR)/tomlc17.o
|
||||||
TEST_OBJECTS := $(patsubst $(TEST_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(TEST_SOURCES))
|
TEST_OBJECTS := $(patsubst $(TEST_DIR)/%.cpp, $(BUILD_DIR)/%.o, $(TEST_SOURCES))
|
||||||
|
|
||||||
LIBRARY = $(BUILD_DIR)/liborbit.a
|
# Default target (updates ctags if available)
|
||||||
|
all: raylib $(BUILD_DIR) $(TARGET) |
||||||
|
@command -v ctags >/dev/null 2>&1 && ctags -R tests/ src/ || true
|
||||||
|
|
||||||
all: lib test-build example |
# Build raylib
|
||||||
|
raylib: |
||||||
|
@if [ ! -f $(RAYLIB_DIR)/libraylib.a ]; then \
|
||||||
|
echo "Building raylib..."; \
|
||||||
|
cd $(RAYLIB_DIR) && $(MAKE) PLATFORM=PLATFORM_DESKTOP; \
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Create build directory
|
||||||
$(BUILD_DIR): |
$(BUILD_DIR): |
||||||
mkdir -p $(BUILD_DIR)
|
mkdir -p $(BUILD_DIR)
|
||||||
|
|
||||||
|
# Link the executable
|
||||||
|
$(TARGET): $(C_OBJECTS) $(CPP_OBJECTS) raylib |
||||||
|
$(CXX) $(C_OBJECTS) $(CPP_OBJECTS) -o $(TARGET) $(LDFLAGS)
|
||||||
|
|
||||||
|
# Compile C++ source files
|
||||||
$(CPP_OBJECTS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp |
$(CPP_OBJECTS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp |
||||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
# Compile C source files
|
||||||
$(C_OBJECTS): $(BUILD_DIR)/%.o : $(C_SOURCES) |
$(C_OBJECTS): $(BUILD_DIR)/%.o : $(C_SOURCES) |
||||||
$(CC) -Wall -Wextra -g -ggdb3 -std=c99 -I./src -I./ext/tomlc17/src -c $< -o $@
|
$(CC) -Wall -Wextra -g -ggdb3 -std=c99 -I./src -I./ext/tomlc17/src -c $< -o $@
|
||||||
|
|
||||||
lib: $(BUILD_DIR) $(C_OBJECTS) $(CPP_OBJECTS) |
# Clean build files
|
||||||
ar rcs $(LIBRARY) $(C_OBJECTS) $(CPP_OBJECTS)
|
|
||||||
@echo "Built $(LIBRARY)"
|
|
||||||
|
|
||||||
$(TEST_OBJECTS): $(BUILD_DIR)/%.o : $(TEST_DIR)/%.cpp |
|
||||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
test-build: lib $(BUILD_DIR) $(TEST_OBJECTS) |
|
||||||
$(CXX) $(TEST_OBJECTS) -o $(BUILD_DIR)/orbit_test -L$(BUILD_DIR) -lorbit -lCatch2Main -lCatch2 -lm
|
|
||||||
|
|
||||||
test: test-build |
|
||||||
./$(BUILD_DIR)/orbit_test
|
|
||||||
|
|
||||||
example: lib |
|
||||||
$(MAKE) -C example all BUILD_DIR=../$(BUILD_DIR)
|
|
||||||
|
|
||||||
clean: |
clean: |
||||||
rm -rf $(BUILD_DIR) $(LIBRARY)
|
rm -rf $(BUILD_DIR) $(TARGET) $(TEST_TARGET)
|
||||||
$(MAKE) -C example clean
|
|
||||||
|
|
||||||
|
# Clean everything including raylib
|
||||||
clean-all: clean |
clean-all: clean |
||||||
$(MAKE) -C example clean-all
|
cd $(RAYLIB_DIR) && $(MAKE) clean
|
||||||
|
|
||||||
|
# Rebuild
|
||||||
rebuild: clean all |
rebuild: clean all |
||||||
|
|
||||||
.PHONY: all lib test-build test example clean clean-all rebuild |
$(TEST_OBJECTS): $(BUILD_DIR)/%.o : $(TEST_DIR)/%.cpp |
||||||
|
$(CXX) $(CXXFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
# Build automated test suite
|
||||||
|
test-build: $(BUILD_DIR) $(C_OBJECTS) $(CPP_OBJECTS) $(TEST_OBJECTS) |
||||||
|
$(CXX) $(C_OBJECTS) $(TEST_OBJECTS) \
|
||||||
|
build/test_utilities.o \
|
||||||
|
build/physics.o \
|
||||||
|
build/orbital_mechanics.o \
|
||||||
|
build/simulation.o \
|
||||||
|
build/config_loader.o \
|
||||||
|
build/config_validator.o \
|
||||||
|
build/maneuver.o \
|
||||||
|
build/rendezvous.o \
|
||||||
|
-o $(TEST_TARGET) -lCatch2Main -lCatch2 -lm
|
||||||
|
|
||||||
|
# Run automated test suite
|
||||||
|
test: test-build |
||||||
|
./$(TEST_TARGET)
|
||||||
|
|
||||||
|
.PHONY: all clean clean-all rebuild test test-build raylib ctags |
||||||
|
|||||||
@ -1,42 +0,0 @@ |
|||||||
CXX = g++
|
|
||||||
CXXFLAGS = -Wall -Wextra -g -ggdb3 -std=c++14 \
|
|
||||||
-I./src \
|
|
||||||
-I../src \
|
|
||||||
-isystem./ext/raylib/src \
|
|
||||||
-isystem./ext/raygui/src \
|
|
||||||
-isystem./ext/raygui/styles
|
|
||||||
LDFLAGS = -L./ext/raylib/src -lraylib -lm -lpthread -ldl -lrt -lX11
|
|
||||||
|
|
||||||
SRC_DIR = src
|
|
||||||
BUILD_DIR ?= build
|
|
||||||
RAYLIB_DIR = ext/raylib/src
|
|
||||||
|
|
||||||
CPP_SOURCES := $(wildcard $(SRC_DIR)/*.cpp)
|
|
||||||
|
|
||||||
CPP_OBJECTS = $(CPP_SOURCES:$(SRC_DIR)/%.cpp=$(BUILD_DIR)/%.o)
|
|
||||||
|
|
||||||
TARGET = ${BUILD_DIR}/orbit_sim
|
|
||||||
|
|
||||||
raylib: |
|
||||||
@if [ ! -f $(RAYLIB_DIR)/libraylib.a ]; then \
|
|
||||||
cd $(RAYLIB_DIR) && $(MAKE) PLATFORM=PLATFORM_DESKTOP; \
|
|
||||||
fi
|
|
||||||
|
|
||||||
$(BUILD_DIR): |
|
||||||
mkdir -p $(BUILD_DIR)
|
|
||||||
|
|
||||||
$(TARGET): $(CPP_OBJECTS) raylib |
|
||||||
$(CXX) $(CPP_OBJECTS) -o $(TARGET) -L$(BUILD_DIR) -lorbit $(LDFLAGS)
|
|
||||||
|
|
||||||
$(CPP_OBJECTS): $(BUILD_DIR)/%.o : $(SRC_DIR)/%.cpp |
|
||||||
$(CXX) $(CXXFLAGS) -c $< -o $@
|
|
||||||
|
|
||||||
clean: |
|
||||||
rm -f $(TARGET)
|
|
||||||
@for f in $(CPP_SOURCES); do rm -f $(BUILD_DIR)/$$(basename $${f%.cpp}.o); done
|
|
||||||
|
|
||||||
rebuild: clean all |
|
||||||
|
|
||||||
all: raylib $(BUILD_DIR) $(TARGET) |
|
||||||
|
|
||||||
.PHONY: all clean raylib rebuild |
|
||||||
Loading…
Reference in new issue