From 8a4b7fa3b204a44c05d8314ffb31a1706ff923de Mon Sep 17 00:00:00 2001 From: TheOnePath Date: Wed, 19 Jun 2024 23:12:53 +0100 Subject: [PATCH] Updated Makefile Added new PHONY all. Target will be ran by default and will check if submodules have been initialised (error is provided if no). Git submodule commands for each target and corresponding recipe has been removed in favour of simpler setup. Fixed bug with most app targets. The target is now the specific binary in each build. This means that if a build fails it can run again. Targets also have required prerequisites. --- Makefile | 62 ++++++++++++++++---------------------------------------- 1 file changed, 17 insertions(+), 45 deletions(-) diff --git a/Makefile b/Makefile index 2d680cc..c147d16 100644 --- a/Makefile +++ b/Makefile @@ -5,7 +5,7 @@ MESON=/usr/bin/meson INCLUDE_SYS_PATH=/usr/include # Set the default target to build -.DEFAULT_GOAL := build +.DEFAULT_GOAL := all ### Makefile targets for hyprwm libraries ### @@ -37,13 +37,8 @@ $(__Hyprcursor): $(__Tomlplusplus) $(__Hyprlang) # 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 \ @@ -52,13 +47,8 @@ $(__Hyprutils): # 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 @@ -68,13 +58,8 @@ $(__Hyprlang): $(__Hyprutils) @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 = /usr/lib64/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 \ @@ -82,14 +67,11 @@ $(__Hyprwayland-scanner): @echo "Installing library hyprwayland-scanner..." sudo $(CMAKE) --install ./hyprwayland-scanner/build -## :@TODO: install libxcb-errors -.PHONY : libxcb-errors libxcb-errors: git clone https://gitlab.freedesktop.org/xorg/lib/libxcb-errors.git __Libxcb-errors = /usr/lib/pkgconfig/xcb-errors.pc -$(__Libxcb-errors): +$(__Libxcb-errors): libxcb-errors @echo "Building and install library libxcb-errors..." - @[[ -z "$(ls -A libxcb-errors)" ]] && $(MAKE) libxcb-errors cd libxcb-errors && { \ git submodule update --init ; \ /bin/sh autogen.sh ; \ @@ -99,54 +81,44 @@ $(__Libxcb-errors): ### Makefile targets for hyprwm apps ### # Build Hyprland if it's not installed on the system -.PHONY : Hyprland -Hyprland: - git submodule init - git submodule update --recursive --remote Hyprland -__Hyprland = Hyprland/build +__Hyprland = Hyprland/build/Hyprland $(__Hyprland): $(__Hyprlang) $(__Hyprcursor) $(__Hyprwayland-scanner) \ $(__Libxcb-errors) - @[[ -z "$(ls -A Hyprland)" ]] && $(MAKE) Hyprland + @echo "Building Hyprland..." sudo $(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 = hyprlock/build/hyprlock $(__Hyprlock): $(__Hyprlang) - @[[ -z "$(ls -A hyprlock)" ]] && $(MAKE) hyprlock + @echo "Building 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 --init --recursive --remote hyprpaper -__Hyprpaper = hyprpaper/build +__Hyprpaper = hyprpaper/build/hyprpaper $(__Hyprpaper): $(__Hyprlang) - @[[ -z "$(ls -A hyprpaper)" ]] && $(MAKE) hyprpaper + @echo "Building 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 = wl-clipboard/build/src/$(wildcard wl-*) $(__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 : all +all: + @[[ -z "$(git submodule status | grep --quiet '^-')" ]] && \ + $(error "Git submodules have not been initialised. Please run: git "+\ + "submodule update --init.") + $(MAKE) build + .PHONY : build build: $(__Hyprlock) $(__Hyprpaper) $(__Wl-clipboard) $(__Hyprland) @@ -159,7 +131,7 @@ install: build @echo "Installing wl-clipboard" sudo $(MESON) install -C wl-clipboard/build @echo "Installing Hyprland" - sudo $(MAKE) -C install + sudo $(MAKE) -C Hyprland install .PHONY: test