From 23e98fc47405c152123c1ecfada0639c3ef9a34a Mon Sep 17 00:00:00 2001 From: Benedikt Peetz Date: Sat, 4 May 2024 20:07:12 +0200 Subject: [PATCH] build({makefile,build.rs}): Add the required tooling to build the plugin and trinitrix --- build.rs | 34 ++++++++++++++++++++++++++++++++++ makefile | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 build.rs create mode 100644 makefile diff --git a/build.rs b/build.rs new file mode 100644 index 0000000..d101b11 --- /dev/null +++ b/build.rs @@ -0,0 +1,34 @@ +/* +* Copyright (C) 2023 - 2024: +* The Trinitrix Project +* SPDX-License-Identifier: LGPL-3.0-or-later +* +* This file is part of the Trixy crate for Trinitrix. +* +* Trixy is free software: you can redistribute it and/or modify +* it under the terms of the Lesser GNU General Public License as +* published by the Free Software Foundation, either version 3 of +* the License, or (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* and the Lesser GNU General Public License along with this program. +* If not, see . +*/ + +use trixy::macros::config::trixy::TrixyConfig; + +fn main() { + println!("cargo:rerun-if-changed=./dist/*"); + println!("cargo:rerun-if-changed=./src/app/command_interface/command_list/api.tri"); + let file_tree = TrixyConfig::new("handle_cmd") + .trixy_path("./src/app/command_interface/command_list/api.tri") + .dist_dir_path("./dist") + .generate(); + + file_tree.materialize().unwrap(); +} diff --git a/makefile b/makefile new file mode 100644 index 0000000..fcc3e05 --- /dev/null +++ b/makefile @@ -0,0 +1,56 @@ +# Copyright (C) 2023 - 2024: +# The Trinitrix Project +# SPDX-License-Identifier: LGPL-3.0-or-later +# +# This file is part of the Trixy crate for Trinitrix. +# +# Trixy is free software: you can redistribute it and/or modify +# it under the terms of the Lesser GNU General Public License as +# published by the Free Software Foundation, either version 3 of +# the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# and the Lesser GNU General Public License along with this program. +# If not, see . + +BIN_NAME := ./target/plugin.so + +BUILD_DIR := ./target/c_build/ + +# SRC := $(wildcard c/*.c) +SRC := ./config/c/plugin.c +OBJ := $(SRC:.c=.o) +DEP := $(OBJ:.o=.d) + +LIBS := + +ALL_CFLAGS := -fPIC -O3 -MMD -Wall -Wextra -Wno-unused-parameter $(CFLAGS) $(CPPFLAGS) +ALL_LDFLAGS := $(addprefix -l,$(LIBS)) -L $(LD_LIBRARY_PATH) $(CFLAGS) $(LDFLAGS) + + +$(BIN_NAME): $(OBJ) + gcc $(addprefix $(BUILD_DIR),$(notdir $(OBJ))) -shared -o $(addprefix $(BUILD_DIR),$(notdir $(BIN_NAME))) $(ALL_CFLAGS) $(ALL_LDFLAGS) + +$(OBJ): $(SRC) + mkdir --parents $(BUILD_DIR) + $(CC) -c $< -o $(addprefix $(BUILD_DIR),$(notdir $(OBJ))) $(ALL_CFLAGS) + +.PHONY : clean options +options: + @echo "CC = $(CC)" + @echo "CFLAGS = $(ALL_CFLAGS)" + @echo "LDFLAGS = $(ALL_LDFLAGS)" + @echo "SRC = $(SRC)" + @echo "OBJ = $(OBJ)" + @echo "DEP = $(DEP)" + @echo "" + +clean : + rm $(BIN_NAME) $(OBJ) $(DEP) + rm -r $(BUILD_DIR) +