Hyprland/Makefile

104 lines
3.8 KiB
Makefile
Raw Normal View History

PREFIX = /usr/local
2022-04-13 17:34:13 +02:00
legacyrenderer:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -DLEGACY_RENDERER:BOOL=true -S . -B ./build -G Ninja
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
2023-10-10 21:01:02 +02:00
chmod -R 777 ./build
2022-04-13 17:34:13 +02:00
legacyrendererdebug:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -DLEGACY_RENDERER:BOOL=true -S . -B ./build -G Ninja
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
2023-10-10 21:01:02 +02:00
chmod -R 777 ./build
2022-04-13 17:34:13 +02:00
2022-03-16 20:50:55 +01:00
release:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Release -S . -B ./build -G Ninja
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
cmake --build ./build --config Release --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
2023-10-10 21:01:02 +02:00
chmod -R 777 ./build
2022-03-16 20:50:55 +01:00
debug:
cmake --no-warn-unused-cli -DCMAKE_BUILD_TYPE:STRING=Debug -S . -B ./build -G Ninja
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
cmake --build ./build --config Debug --target all -j`nproc 2>/dev/null || getconf NPROCESSORS_CONF`
2023-10-10 21:01:02 +02:00
chmod -R 777 ./build
2022-03-16 20:50:55 +01:00
clear:
rm -rf build
rm -f ./protocols/*-protocol.h ./protocols/*-protocol.c
2022-06-29 23:06:45 +02:00
rm -rf ./subprojects/wlroots/build
2022-03-20 17:06:37 +01:00
all:
@if [[ "$EUID" = 0 ]]; then echo -en "Avoid running $(MAKE) all as sudo.\n"; fi
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
$(MAKE) clear
$(MAKE) release
2022-03-20 17:06:37 +01:00
install:
@if [ ! -f ./build/Hyprland ]; then echo -en "You need to run $(MAKE) all first.\n" && exit 1; fi
@echo -en "!NOTE: Please note make install does not compile Hyprland and only installs the already built files."
2022-06-25 12:13:24 +02:00
mkdir -p ${PREFIX}/share/wayland-sessions
mkdir -p ${PREFIX}/bin
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
cp -f ./build/Hyprland ${PREFIX}/bin
cp -f ./build/hyprctl/hyprctl ${PREFIX}/bin
chmod 755 ${PREFIX}/bin/Hyprland
chmod 755 ${PREFIX}/bin/hyprctl
if [ ! -f ${PREFIX}/share/wayland-sessions/hyprland.desktop ]; then cp ./example/hyprland.desktop ${PREFIX}/share/wayland-sessions; fi
mkdir -p ${PREFIX}/share/hyprland
2023-07-24 18:22:36 +02:00
cp ./assets/wall_* ${PREFIX}/share/hyprland
mkdir -p ${PREFIX}/share/xdg-desktop-portal
cp ./assets/hyprland-portals.conf ${PREFIX}/share/xdg-desktop-portal
2022-03-16 20:50:55 +01:00
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
mkdir -p ${PREFIX}/share/man/man1
install -m644 ./docs/*.1 ${PREFIX}/share/man/man1
mkdir -p ${PREFIX}/lib/
cp ./subprojects/wlroots/build/libwlroots.so.12032 ${PREFIX}/lib/
2022-10-10 17:13:56 +02:00
$(MAKE) installheaders
2022-04-12 01:17:21 +02:00
uninstall:
rm -f ${PREFIX}/share/wayland-sessions/hyprland.desktop
rm -f ${PREFIX}/bin/Hyprland
rm -f ${PREFIX}/bin/hyprctl
rm -f ${PREFIX}/lib/libwlroots.so.12032
rm -rf ${PREFIX}/share/hyprland
2022-08-21 17:24:46 +02:00
rm -f ${PREFIX}/share/man/man1/Hyprland.1
rm -f ${PREFIX}/share/man/man1/hyprctl.1
2022-04-12 01:17:21 +02:00
pluginenv:
@echo -en "$(MAKE) pluginenv has been deprecated.\nPlease run $(MAKE) all && sudo $(MAKE) installheaders\n"
@exit 1
installheaders:
@if [ ! -f ./build/Hyprland ]; then echo -en "You need to run $(MAKE) all first.\n" && exit 1; fi
mkdir -p ${PREFIX}/include/hyprland
mkdir -p ${PREFIX}/include/hyprland/protocols
mkdir -p ${PREFIX}/include/hyprland/wlroots
mkdir -p ${PREFIX}/share/pkgconfig
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
find src -name '*.h*' -print0 | cpio --quiet -0dump ${PREFIX}/include/hyprland
cd subprojects/wlroots/include && find . -name '*.h*' -print0 | cpio --quiet -0dump ${PREFIX}/include/hyprland/wlroots && cd ../../..
2023-05-11 21:17:26 +02:00
cd subprojects/wlroots/build/include && find . -name '*.h*' -print0 | cpio --quiet -0dump ${PREFIX}/include/hyprland/wlroots && cd ../../../..
cp ./protocols/*-protocol.h ${PREFIX}/include/hyprland/protocols
cp ./build/hyprland.pc ${PREFIX}/share/pkgconfig
Unbreak CMake build on FreeBSD (#2209) * cmake: unbreak on non-GNU after 474ada9267cc CMake Error at CMakeLists.txt:121 (target_link_libraries): The keyword signature for target_link_libraries has already been used with the target "Hyprland". All uses of target_link_libraries with a target must be either all-keyword or all-plain. The uses of the keyword signature are here: * CMakeLists.txt:107 (target_link_libraries) Fixes https://github.com/hyprwm/Hyprland/issues/1780 * cmake: always link with dependencies via imported targets On BSD systems base compiler by default only looks for headers and libraries from base system. For dependencies from packages extra flags are necessary. ld: error: unable to find library -lxcb ld: error: unable to find library -lpixman-1 ld: error: unable to find library -lOpenGL ld: error: unable to find library -lGLESv2 * make: use same make in recursive calls On BSDs `make` is BSD make while `gmake` is GNU make * make: work around GNU vs. BSD sed -i incompatibility https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=254091 * make: replace GNU make extension with POSIX sh `$(shell ...)` in GNU make is similar to `${:!..!}` in BSD make * make: fall back when nproc isn't available Only FreeBSD added nproc for compatibility with Linux. * make: unbreak hyprctl on Clang-based systems /bin/sh: g++: not found error: invalid value 'c++23' in '-std=c++23' * make: create lib/ before copying libwlroots.so there $ make install PREFIX=/tmp/test [...] cp: directory /tmp/test/lib does not exist * make: pass cp(1) flags before arguments cp: -f is not a directory * make: replace install -Dt with mkdir install: illegal option -- t * make: replace cp --parents with cpio -dump cp: illegal option -- - * make: limit pkg-config workaround to Linux when run as root /usr/share/pkgconfig doesn't exist on BSDs or may not be writable.
2023-05-02 15:38:36 +02:00
if [ -d /usr/share/pkgconfig ]; then cp ./build/hyprland.pc /usr/share/pkgconfig 2>/dev/null || true; fi
chmod -R 755 ${PREFIX}/include/hyprland
chmod 755 ${PREFIX}/share/pkgconfig
2022-07-19 00:56:46 +02:00
man:
pandoc ./docs/Hyprland.1.rst \
--standalone \
--variable=header:"Hyprland User Manual" \
--variable=date:"${DATE}" \
--variable=section:1 \
--from rst \
2022-08-21 10:30:22 +02:00
--to man > ./docs/Hyprland.1
2022-07-19 00:56:46 +02:00
pandoc ./docs/hyprctl.1.rst \
--standalone \
--variable=header:"hyprctl User Manual" \
--variable=date:"${DATE}" \
--variable=section:1 \
--from rst \
2022-08-21 10:30:22 +02:00
--to man > ./docs/hyprctl.1