# Variables for build tools CMAKE=/usr/bin/cmake MESON=/usr/bin/meson # Paths for installed apps INCLUDE_SYS_PATH=/usr/include # Set the default target to build .DEFAULT_GOAL := build ### Makefile targets for hyprwm libraries ### # Build and install tomlplusplus if it's not on the system tomlplusplus: git clone https://github.com/marzer/tomlplusplus.git __Tomlplusplus = $(INCLUDE_SYS_PATH)/toml++ $(__Tomlplusplus): tomlplusplus @echo "Building and installing tomlplusplus..." cd tomlplusplus && $(MESON) setup build --buildtype=release --prefix=/usr ninja -C tomlplusplus/build sudo $(MESON) install -C tomlplusplus/build # Build hyprcursor if the .hpp file is not installed (required hyprlang) # Library for hyprwm .PHONY : hyprcursor hyprcursor: git submodule init git submodule update --remote hyprcursor __Hyprcursor = $(INCLUDE_SYS_PATH)/hyprcursor.hpp $(__Hyprcursor): $(__Tomlplusplus) $(__Hyperlang) @[[ -z "$(ls -A hyprcursor)" ]] && $(MAKE) hyprcursor $(CMAKE) --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_INSTALL_PREFIX:PATH=/usr -S ./hyprcursor -B ./hyprcursor/build $(CMAKE) --build ./hyprcursor/build --config Release --target all \ -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` @echo "Installing library hyprcursor..." sudo $(CMAKE) --install hyprcursor/build # Build hyprutils if the .hpp file is not installed # Library for hyprwm .PHONY : hyprutils hyprutils: git submodule init git submodule update --remote hyprutils __Hyprutils = $(INCLUDE_SYS_PATH)/hyprutils $(__Hyprutils): @[[ -z "$(ls -A hyprutils)" ]] && $(MAKE) hyprutils $(CMAKE) --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_INSTALL_PREFIX:PATH=/usr -S hyprutils -B ./hyprutils/build $(CMAKE) --build ./hyprutils/build --config Release --target all -j`nproc \ 2>/dev/null || getconf _NPROCESSORS_CONF` sudo $(CMAKE) --install hyprutils/build # Build hyprlang if the .hpp file is not installed # Library for hyprwm .PHONY : hyprlang hyprlang: git submodule init git submodule update --remote hyprlang __Hyprlang = $(INCLUDE_SYS_PATH)/hyprlang.hpp $(__Hyprlang): $(__Hyprutils) @[[ -z "$(ls -A hyprlang)" ]] && $(MAKE) hyprlang # built using cmake $(CMAKE) --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_INSTALL_PREFIX:PATH=/usr -S ./hyprlang -B ./hyprlang/build $(CMAKE) --build ./hyprlang/build --config Release --target hyprlang \ -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` # At this point install hyprlang since it is a library other apps need @echo "Installing library hyprlang..." sudo $(CMAKE) --install ./hyprlang/build .PHONY : hyprwayland-scanner hyprwayland-scanner: git submodule init git submodule update --remote hyprwayland-scanner __Hyprwayland-scanner = $(CMAKE_INSTALL_LIBDIR)/cmake/hyprwayland-scanner $(__Hyprwayland-scanner): @[[ -z "$(ls -A hyprwayland-scanner)" ]] && $(MAKE) hyprwayland-scanner $(CMAKE) -DCMAKE_INSTALL_PREFIX=/usr -S ./hyprwayland-scanner \ -B hyprwayland-scanner/build $(CMAKE) --build ./hyprwayland-scanner/build -j \ `nproc 2>/dev/null || getconf _NPROCESSORS_CONF` @echo "Installing library hyprwayland-scanner..." sudo $(CMAKE) --install ./hyprwayland-scanner/build ### Makefile targets for hyprwm apps ### # Build Hyprland if it's not installed on the system .PHONY : Hyprland Hyprland: git submodule init git submodule update --remote Hyprland __Hyprland = Hyprland/build $(__Hyprland): $(__Hyperlang) $(__Hypercursor) $(__Hyprwayland-scanner) @[[ -z "$(ls -A Hyprland)" ]] && $(MAKE) Hyprland $(MAKE) -C Hyprland all # Build hyprlock if it's not installed on the system .PHONY : hyprlock hyprlock: git submodule init git submodule update --remote hyprlock __Hyprlock = hyprlock/build $(__Hyprlock): $(__Hyprlang) @[[ -z "$(ls -A hyprlock)" ]] && $(MAKE) hyprlock $(CMAKE) --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release \ -S ./hyprlock -B ./hyprlock/build $(CMAKE) --build ./hyprlock/build --config Release --target hyprlock \ -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` # Build hyprpaper if it's not installed on the system .PHONY : hyprpaper hyprpaper: git submodule init git submodule update --remote hyprpaper __Hyprpaper = hyprpaper/build $(__Hyprpaper): $(__Hyprlang) @[[ -z "$(ls -A hyprpaper)" ]] && $(MAKE) hyprpaper $(CMAKE) --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release \ -DCMAKE_INSTALL_PREFIX:PATH=/usr -S ./hyprpaper -B ./hyprpaper/build $(CMAKE) --build ./hyprpaper/build --config Release --target hyprpaper \ -j`nproc 2>/dev/null || getconf _NPROCESSORS_CONF` # Build wl-clipboard if it's not installed on the system .PHONY : wl-clipboard wl-clipboard: git submodule init git submodule update --remote wl-clipboard __Wl_clipboard = wl-clipboard/build $(__Wl_clipboard): @[[ -z "$(ls -A wl-clipboard)" ]] && $(MAKE) wl-clipboard cd wl-clipboard && $(MESON) setup --prefix=/usr build ninja -C wl-clipboard/build ### PHONY targets that a user would run ### .PHONY : build build: $(__Hyprlock) $(__Hyprpaper) $(__Wl-clipboard) $(__Hyprland) .PHONY : install install: build @echo "Installing Hyprland..." sudo $(MAKE) -f Hyprland/Makefile install @echo "Installing hyprlock..." sudo $(CMAKE) --install hyprlock/build @echo "Installing hyprpaper" $(CMAKE) --install hyprpaper/build @echo "Installing wl-clipboard" sudo $(MESON) install -C wl-clipboard/build .PHONY: test test: build @echo "Be real, you don't want to do this, so we'll abort." $(error No test-suite implemented)