mirror of https://github.com/fairyglade/ly.git
Add build.zig, remove makefile, add .idea directory to .gitignore
This commit is contained in:
parent
1c2be475ad
commit
d3d9aa7b18
|
|
@ -1,3 +1,6 @@
|
|||
.idea
|
||||
bin
|
||||
obj
|
||||
valgrind.log
|
||||
zig-cache
|
||||
zig-out
|
||||
|
|
@ -0,0 +1,219 @@
|
|||
const std = @import("std");
|
||||
|
||||
pub fn build(b: *std.Build) void {
|
||||
const target = b.standardTargetOptions(.{});
|
||||
const optimize = b.standardOptimizeOption(.{});
|
||||
|
||||
const c_args = [_][]const u8{
|
||||
"-std=c99",
|
||||
"-pedantic",
|
||||
"-g",
|
||||
"-Wall",
|
||||
"-Wextra",
|
||||
"-Werror=vla",
|
||||
"-Wno-unused-parameter",
|
||||
"-D_DEFAULT_SOURCE",
|
||||
"-D_POSIX_C_SOURCE=200809L",
|
||||
"-D_XOPEN_SOURCE",
|
||||
};
|
||||
|
||||
const exe = b.addExecutable(.{
|
||||
.name = "ly",
|
||||
.target = target,
|
||||
.optimize = optimize,
|
||||
});
|
||||
|
||||
exe.linkSystemLibrary("pam");
|
||||
exe.linkSystemLibrary("xcb");
|
||||
exe.linkLibC();
|
||||
|
||||
exe.addIncludePath("src");
|
||||
exe.addIncludePath("sub/argoat/src");
|
||||
exe.addIncludePath("sub/argoat/sub/testoasterror/src");
|
||||
exe.addIncludePath("sub/configator/src");
|
||||
exe.addIncludePath("sub/dragonfail/src");
|
||||
exe.addIncludePath("sub/termbox_next/src");
|
||||
|
||||
exe.addCSourceFile("src/config.c", &c_args);
|
||||
exe.addCSourceFile("src/draw.c", &c_args);
|
||||
exe.addCSourceFile("src/inputs.c", &c_args);
|
||||
exe.addCSourceFile("src/login.c", &c_args);
|
||||
exe.addCSourceFile("src/main.c", &c_args);
|
||||
exe.addCSourceFile("src/utils.c", &c_args);
|
||||
exe.addCSourceFile("sub/argoat/src/argoat.c", &c_args);
|
||||
exe.addCSourceFile("sub/argoat/sub/testoasterror/src/testoasterror.c", &c_args);
|
||||
exe.addCSourceFile("sub/configator/src/configator.c", &c_args);
|
||||
exe.addCSourceFile("sub/dragonfail/src/dragonfail.c", &c_args);
|
||||
exe.addCSourceFile("sub/termbox_next/src/input.c", &c_args);
|
||||
exe.addCSourceFile("sub/termbox_next/src/memstream.c", &c_args);
|
||||
exe.addCSourceFile("sub/termbox_next/src/ringbuffer.c", &c_args);
|
||||
exe.addCSourceFile("sub/termbox_next/src/term.c", &c_args);
|
||||
exe.addCSourceFile("sub/termbox_next/src/termbox.c", &c_args);
|
||||
exe.addCSourceFile("sub/termbox_next/src/utf8.c", &c_args);
|
||||
|
||||
b.installArtifact(exe);
|
||||
|
||||
const run_cmd = b.addRunArtifact(exe);
|
||||
|
||||
run_cmd.step.dependOn(b.getInstallStep());
|
||||
|
||||
if (b.args) |args| {
|
||||
run_cmd.addArgs(args);
|
||||
}
|
||||
|
||||
const run_step = b.step("run", "Run the app");
|
||||
run_step.dependOn(&run_cmd.step);
|
||||
|
||||
const installexe_step = b.step("installexe", "Install Ly");
|
||||
installexe_step.makeFn = installexe;
|
||||
installexe_step.dependOn(b.getInstallStep());
|
||||
|
||||
const installnoconf_step = b.step("installnoconf", "Install Ly without its configuration file");
|
||||
installnoconf_step.makeFn = installnoconf;
|
||||
installnoconf_step.dependOn(b.getInstallStep());
|
||||
|
||||
const installsystemd_step = b.step("installsystemd", "Install the Ly systemd service");
|
||||
installsystemd_step.makeFn = installsystemd;
|
||||
installsystemd_step.dependOn(installexe_step);
|
||||
|
||||
const installopenrc_step = b.step("installopenrc", "Install the Ly openrc service");
|
||||
installopenrc_step.makeFn = installopenrc;
|
||||
installopenrc_step.dependOn(installexe_step);
|
||||
|
||||
const installrunit_step = b.step("installrunit", "Install the Ly runit service");
|
||||
installrunit_step.makeFn = installrunit;
|
||||
installrunit_step.dependOn(installexe_step);
|
||||
|
||||
const uninstallall_step = b.step("uninstallall", "Uninstall Ly and all services");
|
||||
uninstallall_step.makeFn = uninstallall;
|
||||
}
|
||||
|
||||
fn installexe(self: *std.Build.Step, progress: *std.Progress.Node) !void {
|
||||
_ = progress;
|
||||
_ = self;
|
||||
|
||||
try install_ly(true);
|
||||
}
|
||||
|
||||
fn installnoconf(self: *std.Build.Step, progress: *std.Progress.Node) !void {
|
||||
_ = progress;
|
||||
_ = self;
|
||||
|
||||
try install_ly(false);
|
||||
}
|
||||
|
||||
fn installsystemd(self: *std.Build.Step, progress: *std.Progress.Node) !void {
|
||||
_ = progress;
|
||||
_ = self;
|
||||
|
||||
var service_dir = std.fs.openDirAbsolute("/usr/lib/systemd/system", .{}) catch unreachable;
|
||||
defer service_dir.close();
|
||||
|
||||
try std.fs.cwd().copyFile("res/ly.service", service_dir, "ly.service", .{ .override_mode = 644 });
|
||||
}
|
||||
|
||||
fn installopenrc(self: *std.Build.Step, progress: *std.Progress.Node) !void {
|
||||
_ = progress;
|
||||
_ = self;
|
||||
|
||||
var service_dir = std.fs.openDirAbsolute("/etc/init.d", .{}) catch unreachable;
|
||||
defer service_dir.close();
|
||||
|
||||
try std.fs.cwd().copyFile("res/ly-openrc", service_dir, "ly", .{ .override_mode = 755 });
|
||||
}
|
||||
|
||||
fn installrunit(self: *std.Build.Step, progress: *std.Progress.Node) !void {
|
||||
_ = progress;
|
||||
_ = self;
|
||||
|
||||
var service_dir = std.fs.openDirAbsolute("/etc/sv", .{}) catch unreachable;
|
||||
defer service_dir.close();
|
||||
|
||||
std.fs.makeDirAbsolute("/etc/sv/ly") catch {
|
||||
std.debug.print("warn: /etc/sv/ly already exists as a directory.\n", .{});
|
||||
};
|
||||
|
||||
var ly_service_dir = std.fs.openDirAbsolute("/etc/sv/ly", .{}) catch unreachable;
|
||||
defer ly_service_dir.close();
|
||||
|
||||
try std.fs.cwd().copyFile("res/ly-runit-service/conf", ly_service_dir, "conf", .{});
|
||||
try std.fs.cwd().copyFile("res/ly-runit-service/finish", ly_service_dir, "finish", .{});
|
||||
try std.fs.cwd().copyFile("res/ly-runit-service/run", ly_service_dir, "run", .{});
|
||||
}
|
||||
|
||||
fn uninstallall(self: *std.Build.Step, progress: *std.Progress.Node) !void {
|
||||
_ = progress;
|
||||
_ = self;
|
||||
|
||||
try std.fs.deleteTreeAbsolute("/etc/ly");
|
||||
try std.fs.deleteFileAbsolute("/usr/bin/ly");
|
||||
try std.fs.deleteFileAbsolute("/etc/pam.d/ly");
|
||||
std.fs.deleteFileAbsolute("/usr/lib/systemd/system/ly.service") catch {
|
||||
std.debug.print("warn: systemd service not found.\n", .{});
|
||||
};
|
||||
std.fs.deleteFileAbsolute("/etc/init.d/ly") catch {
|
||||
std.debug.print("warn: openrc service not found.\n", .{});
|
||||
};
|
||||
std.fs.deleteTreeAbsolute("/etc/sv/ly") catch {
|
||||
std.debug.print("warn: runit service not found.\n", .{});
|
||||
};
|
||||
}
|
||||
|
||||
fn install_ly(install_config: bool) !void {
|
||||
std.fs.makeDirAbsolute("/etc/ly") catch {
|
||||
std.debug.print("warn: /etc/ly already exists as a directory.\n", .{});
|
||||
};
|
||||
|
||||
std.fs.makeDirAbsolute("/etc/ly/lang") catch {
|
||||
std.debug.print("warn: /etc/ly/lang already exists as a directory.\n", .{});
|
||||
};
|
||||
|
||||
var current_dir = std.fs.cwd();
|
||||
|
||||
{
|
||||
var executable_dir = std.fs.openDirAbsolute("/usr/bin", .{}) catch unreachable;
|
||||
defer executable_dir.close();
|
||||
|
||||
try current_dir.copyFile("zig-out/bin/ly", executable_dir, "ly", .{});
|
||||
}
|
||||
|
||||
{
|
||||
var config_dir = std.fs.openDirAbsolute("/etc/ly", .{}) catch unreachable;
|
||||
defer config_dir.close();
|
||||
|
||||
if (install_config) {
|
||||
try current_dir.copyFile("res/config.ini", config_dir, "config.ini", .{});
|
||||
}
|
||||
try current_dir.copyFile("res/xsetup.sh", config_dir, "xsetup.sh", .{});
|
||||
try current_dir.copyFile("res/wsetup.sh", config_dir, "wsetup.sh", .{});
|
||||
}
|
||||
|
||||
{
|
||||
var lang_dir = std.fs.openDirAbsolute("/etc/ly/lang", .{}) catch unreachable;
|
||||
defer lang_dir.close();
|
||||
|
||||
try current_dir.copyFile("res/lang/cat.ini", lang_dir, "cat.ini", .{});
|
||||
try current_dir.copyFile("res/lang/cs.ini", lang_dir, "cs.ini", .{});
|
||||
try current_dir.copyFile("res/lang/de.ini", lang_dir, "de.ini", .{});
|
||||
try current_dir.copyFile("res/lang/en.ini", lang_dir, "en.ini", .{});
|
||||
try current_dir.copyFile("res/lang/es.ini", lang_dir, "es.ini", .{});
|
||||
try current_dir.copyFile("res/lang/fr.ini", lang_dir, "fr.ini", .{});
|
||||
try current_dir.copyFile("res/lang/it.ini", lang_dir, "it.ini", .{});
|
||||
try current_dir.copyFile("res/lang/pl.ini", lang_dir, "pl.ini", .{});
|
||||
try current_dir.copyFile("res/lang/pt.ini", lang_dir, "pt.ini", .{});
|
||||
try current_dir.copyFile("res/lang/pt_BR.ini", lang_dir, "pt_BR.ini", .{});
|
||||
try current_dir.copyFile("res/lang/ro.ini", lang_dir, "ro.ini", .{});
|
||||
try current_dir.copyFile("res/lang/ru.ini", lang_dir, "ru.ini", .{});
|
||||
try current_dir.copyFile("res/lang/sr.ini", lang_dir, "sr.ini", .{});
|
||||
try current_dir.copyFile("res/lang/sv.ini", lang_dir, "sv.ini", .{});
|
||||
try current_dir.copyFile("res/lang/tr.ini", lang_dir, "tr.ini", .{});
|
||||
try current_dir.copyFile("res/lang/uk.ini", lang_dir, "uk.ini", .{});
|
||||
}
|
||||
|
||||
{
|
||||
var pam_dir = std.fs.openDirAbsolute("/etc/pam.d", .{}) catch unreachable;
|
||||
defer pam_dir.close();
|
||||
|
||||
try current_dir.copyFile("res/pam.d/ly", pam_dir, "ly", .{ .override_mode = 644 });
|
||||
}
|
||||
}
|
||||
118
makefile
118
makefile
|
|
@ -1,118 +0,0 @@
|
|||
NAME = ly
|
||||
CC = gcc
|
||||
FLAGS = -std=c99 -pedantic -g
|
||||
FLAGS+= -Wall -Wextra -Werror=vla -Wno-unused-parameter
|
||||
#FLAGS+= -DDEBUG
|
||||
FLAGS+= -DLY_VERSION=\"$(shell git describe --long --tags | sed 's/\([^-]*-g\)/r\1/;s/-/./g')\"
|
||||
LINK = -lpam -lxcb
|
||||
VALGRIND = --show-leak-kinds=all --track-origins=yes --leak-check=full --suppressions=../res/valgrind.supp
|
||||
CMD = ./$(NAME)
|
||||
|
||||
OS:= $(shell uname -s)
|
||||
ifeq ($(OS), Linux)
|
||||
FLAGS+= -D_DEFAULT_SOURCE
|
||||
endif
|
||||
|
||||
BIND = bin
|
||||
OBJD = obj
|
||||
SRCD = src
|
||||
SUBD = sub
|
||||
RESD = res
|
||||
TESTD = tests
|
||||
|
||||
DATADIR ?= ${DESTDIR}/etc/ly
|
||||
FLAGS+= -DDATADIR=\"$(DATADIR)\"
|
||||
|
||||
INCL = -I$(SRCD)
|
||||
INCL+= -I$(SUBD)/ctypes
|
||||
INCL+= -I$(SUBD)/argoat/src
|
||||
INCL+= -I$(SUBD)/configator/src
|
||||
INCL+= -I$(SUBD)/dragonfail/src
|
||||
INCL+= -I$(SUBD)/termbox_next/src
|
||||
|
||||
SRCS = $(SRCD)/main.c
|
||||
SRCS += $(SRCD)/config.c
|
||||
SRCS += $(SRCD)/draw.c
|
||||
SRCS += $(SRCD)/inputs.c
|
||||
SRCS += $(SRCD)/login.c
|
||||
SRCS += $(SRCD)/utils.c
|
||||
SRCS += $(SUBD)/argoat/src/argoat.c
|
||||
SRCS += $(SUBD)/configator/src/configator.c
|
||||
SRCS += $(SUBD)/dragonfail/src/dragonfail.c
|
||||
|
||||
SRCS_OBJS:= $(patsubst %.c,$(OBJD)/%.o,$(SRCS))
|
||||
SRCS_OBJS+= $(SUBD)/termbox_next/bin/termbox.a
|
||||
|
||||
.PHONY: final
|
||||
final: $(BIND)/$(NAME)
|
||||
|
||||
$(OBJD)/%.o: %.c
|
||||
@echo "building object $@"
|
||||
@mkdir -p $(@D)
|
||||
@$(CC) $(INCL) $(FLAGS) -c -o $@ $<
|
||||
|
||||
$(SUBD)/termbox_next/bin/termbox.a:
|
||||
@echo "building static object $@"
|
||||
@(cd $(SUBD)/termbox_next && $(MAKE))
|
||||
|
||||
$(BIND)/$(NAME): $(SRCS_OBJS)
|
||||
@echo "compiling executable $@"
|
||||
@mkdir -p $(@D)
|
||||
@$(CC) -o $@ $^ $(LINK)
|
||||
|
||||
run:
|
||||
@cd $(BIND) && $(CMD)
|
||||
|
||||
leak: leakgrind
|
||||
leakgrind: $(BIND)/$(NAME)
|
||||
@rm -f valgrind.log
|
||||
@cd $(BIND) && valgrind $(VALGRIND) 2> ../valgrind.log $(CMD)
|
||||
@less valgrind.log
|
||||
|
||||
install: $(BIND)/$(NAME)
|
||||
@echo "installing ly"
|
||||
@install -dZ ${DESTDIR}/etc/ly
|
||||
@install -DZ $(BIND)/$(NAME) -t ${DESTDIR}/usr/bin
|
||||
@install -DZ $(RESD)/config.ini -t ${DESTDIR}/etc/ly
|
||||
@install -DZ $(RESD)/xsetup.sh -t $(DATADIR)
|
||||
@install -DZ $(RESD)/wsetup.sh -t $(DATADIR)
|
||||
@install -dZ $(DATADIR)/lang
|
||||
@install -DZ $(RESD)/lang/* -t $(DATADIR)/lang
|
||||
@install -DZ $(RESD)/pam.d/ly -m 644 -t ${DESTDIR}/etc/pam.d
|
||||
|
||||
installnoconf: $(BIND)/$(NAME)
|
||||
@echo "installing ly without the configuration file"
|
||||
@install -dZ ${DESTDIR}/etc/ly
|
||||
@install -DZ $(BIND)/$(NAME) -t ${DESTDIR}/usr/bin
|
||||
@install -DZ $(RESD)/xsetup.sh -t $(DATADIR)
|
||||
@install -DZ $(RESD)/wsetup.sh -t $(DATADIR)
|
||||
@install -dZ $(DATADIR)/lang
|
||||
@install -DZ $(RESD)/lang/* -t $(DATADIR)/lang
|
||||
@install -DZ $(RESD)/pam.d/ly -m 644 -t ${DESTDIR}/etc/pam.d
|
||||
|
||||
installsystemd:
|
||||
@echo "installing systemd service"
|
||||
@install -DZ $(RESD)/ly.service -m 644 -t ${DESTDIR}/usr/lib/systemd/system
|
||||
|
||||
installopenrc:
|
||||
@echo "installing openrc service"
|
||||
@install -DZ $(RESD)/ly-openrc -m 755 -T ${DESTDIR}/etc/init.d/${NAME}
|
||||
|
||||
installrunit:
|
||||
@echo "installing runit service"
|
||||
@install -DZ $(RESD)/ly-runit-service/* -t ${DESTDIR}/etc/sv/ly
|
||||
|
||||
uninstall:
|
||||
@echo "uninstalling"
|
||||
@rm -rf ${DESTDIR}/etc/ly
|
||||
@rm -rf $(DATADIR)
|
||||
@rm -f ${DESTDIR}/usr/bin/ly
|
||||
@rm -f ${DESTDIR}/usr/lib/systemd/system/ly.service
|
||||
@rm -f ${DESTDIR}/etc/pam.d/ly
|
||||
@rm -f ${DESTDIR}/etc/init.d/${NAME}
|
||||
@rm -rf ${DESTDIR}/etc/sv/ly
|
||||
|
||||
clean:
|
||||
@echo "cleaning"
|
||||
@rm -rf $(BIND) $(OBJD) valgrind.log
|
||||
@(cd $(SUBD)/termbox_next && $(MAKE) clean)
|
||||
|
|
@ -11,7 +11,7 @@
|
|||
#include <unistd.h>
|
||||
|
||||
#ifndef DEBUG
|
||||
#define INI_LANG DATADIR "/lang/%s.ini"
|
||||
#define INI_LANG "/etc/ly/lang/%s.ini"
|
||||
#define INI_CONFIG "/etc/ly/config.ini"
|
||||
#else
|
||||
#define INI_LANG "../res/lang/%s.ini"
|
||||
|
|
@ -297,12 +297,12 @@ void config_defaults()
|
|||
config.shutdown_cmd = strdup("/sbin/shutdown -a now");
|
||||
config.term_reset_cmd = strdup("/usr/bin/tput reset");
|
||||
config.tty = 2;
|
||||
config.wayland_cmd = strdup(DATADIR "/wsetup.sh");
|
||||
config.wayland_cmd = strdup("/etc/ly/wsetup.sh");
|
||||
config.wayland_specifier = false;
|
||||
config.waylandsessions = strdup("/usr/share/wayland-sessions");
|
||||
config.x_cmd = strdup("/usr/bin/X");
|
||||
config.xinitrc = strdup("~/.xinitrc");
|
||||
config.x_cmd_setup = strdup(DATADIR "/xsetup.sh");
|
||||
config.x_cmd_setup = strdup("/etc/ly/xsetup.sh");
|
||||
config.xauth_cmd = strdup("/usr/bin/xauth");
|
||||
config.xsessions = strdup("/usr/share/xsessions");
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
#define ARG_COUNT 7
|
||||
|
||||
#ifndef LY_VERSION
|
||||
#define LY_VERSION "0.6.0"
|
||||
#define LY_VERSION "0.7.0"
|
||||
#endif
|
||||
|
||||
// global
|
||||
|
|
|
|||
Loading…
Reference in New Issue