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