ferx/scripts/Makefile
2024-11-27 20:52:57 +04:00

103 lines
3.7 KiB
Makefile

DEBUG_BUILD_DIR = build-debug
RELEASE_BUILD_DIR = build-release
EXECUTABLE_PATH = editor/ferx
LINUX_BUILD_DIR = /usr/local/lib/ferx
LINUX_INSTALL_FILE_PATH = InstallLinux.sh
RM += -r
all: debug
# Help
help:
@echo "Usage: make <target>"
@echo
@echo "Targets:"
@echo " help Show this help message"
@echo " install-dependencies Install project dependencies based on the detected Linux distribution"
@echo " install-ubuntu Install dependencies for Ubuntu/Debian-based systems"
@echo " install-fedora Install dependencies for Fedora/RHEL-based systems"
@echo " install-arch Install dependencies for Arch Linux"
@echo " linux Install dependencies, build, and set up the project for Linux"
@echo " debug Build and run the project in Debug mode"
@echo " release Build and run the project in Release mode"
@echo " build-debug Build the project in Debug mode"
@echo " build-release Build the project in Release mode"
@echo " run-debug Run the Debug build"
@echo " run-release Run the Release build"
@echo " clean-debug Clean Debug build files"
@echo " clean-release Clean Release build files"
@echo " clean-debug-all Remove all Debug build files"
@echo " clean-release-all Remove all Release build files"
@echo
@echo "If no target is specified, the script will default to building the Debug version."
@echo "You can also specify a target to run the corresponding command. For example:"
@echo " make help - Displays this help message."
@echo " make linux - Installs dependencies, builds, and sets up the project for Linux."
@echo " make debug - Builds the project in Debug mode and runs it."
@echo " make release - Builds the project in Release mode and runs it."
@echo " make clean-debug-all - Removes all Debug build files."
@echo " make clean-release-all - Removes all Release build files."
# Install for Linux
linux: install-dependencies build-linux install-desktop-file run-linux
install-dependencies:
@echo "Detecting platform..."
@sh ./${LINUX_INSTALL_FILE_PATH} install-dependencies
install-ubuntu:
@echo "Installing dependencies for Ubuntu..."
@sh ./${LINUX_INSTALL_FILE_PATH} install-ubuntu
install-fedora:
@echo "Installing dependencies for Fedora..."
@sh ./${LINUX_INSTALL_FILE_PATH} install-fedora
install-arch:
@echo "Installing dependencies for Arch Linux..."
@sh ./${LINUX_INSTALL_FILE_PATH} install-arch
build-linux:
sudo cmake -S .. -B $(LINUX_BUILD_DIR) -G Ninja -DCMAKE_BUILD_TYPE=Release -DGLFW_BUILD_WAYLAND=OFF -DGLFW_BUILD_X11=ON
sudo cmake --build $(LINUX_BUILD_DIR) -j8
sudo ln -sf ${LINUX_BUILD_DIR}/${EXECUTABLE_PATH} /usr/local/bin/ferx
run-linux:
ferx
install-desktop-file:
sudo cmake --install ${LINUX_BUILD_DIR} --prefix /usr/
# Build project
debug: build-debug run-debug
release: build-release run-release
build-release:
cmake -S .. -B ../$(RELEASE_BUILD_DIR) -G Ninja -DCMAKE_BUILD_TYPE=Release -DGLFW_BUILD_WAYLAND=OFF -DGLFW_BUILD_X11=ON
cmake --build ../$(RELEASE_BUILD_DIR) -j8
build-debug:
cmake -S .. -B ../$(DEBUG_BUILD_DIR) -G Ninja -DCMAKE_BUILD_TYPE=Debug -DGLFW_BUILD_WAYLAND=OFF -DGLFW_BUILD_X11=ON
cmake --build ../$(DEBUG_BUILD_DIR) -j8
run-release:
../$(RELEASE_BUILD_DIR)/${EXECUTABLE_PATH}
run-debug:
../$(DEBUG_BUILD_DIR)/${EXECUTABLE_PATH}
clean-release:
cmake --build ../$(RELEASE_BUILD_DIR) --target clean
clean-debug:
cmake --build ../$(DEBUG_BUILD_DIR) --target clean
clean-release-all:
$(RM) ../$(RELEASE_BUILD_DIR)
clean-debug-all:
$(RM) ../$(DEBUG_BUILD_DIR)