From 2d6ed0b99d0d876e0392c33b4803620f9866792d Mon Sep 17 00:00:00 2001 From: lucielle Date: Mon, 18 May 2026 16:21:05 -0500 Subject: [PATCH] create project structure --- .gitignore | 1 + LLog.c | 11 ++++++ Makefile | 91 ++++++++++++++++++++++++++++++++++++++++++++++++++ include/LLog.h | 13 ++++++++ test/test.c | 8 +++++ 5 files changed, 124 insertions(+) create mode 100644 .gitignore create mode 100644 LLog.c create mode 100644 Makefile create mode 100644 include/LLog.h create mode 100644 test/test.c diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d163863 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +build/ \ No newline at end of file diff --git a/LLog.c b/LLog.c new file mode 100644 index 0000000..d1ca716 --- /dev/null +++ b/LLog.c @@ -0,0 +1,11 @@ +#include "include/LLog.h" +#include + +void lLog(enum lLogLevel LOG_LEVEL, char* MESSAGE) { + char* LOG_LEVEL_STRING = LOG_LEVEL == 0 ? "INFO" : + LOG_LEVEL == 1 ? "WARNING" : + LOG_LEVEL == 2 ? "ERROR" : + LOG_LEVEL == 3 ? "DEBUG" : + "invalid_log_level"; + printf("[%s]: %s\n", LOG_LEVEL_STRING, MESSAGE); +} \ No newline at end of file diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4f1c8b7 --- /dev/null +++ b/Makefile @@ -0,0 +1,91 @@ +# You may have to run this command or something similar +# while in the base directory to please the dynamic linker +# +# $ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/build/dynamic" + +CC = gcc +SHELL := /bin/bash + +INCLUDE := include +CFLAGS = -Wall -I$(INCLUDE) -ggdb + +BUILD_DIR := build + +STATIC_BUILD_DIR := $(BUILD_DIR)/static +DYNAMIC_BUILD_DIR := $(BUILD_DIR)/dynamic +TEST_BUILD_DIR := $(BUILD_DIR)/test +INCLUDE_INSTALL_PATH := /usr/local/include/LLog +LIB_INSTALL_PATH := /usr/local/lib + +STATIC_BUILD_FILES := $(STATIC_BUILD_DIR)/LLog.o \ + +DYNAMIC_BUILD_FILES := $(DYNAMIC_BUILD_DIR)/LLog.o \ + +TEST_BUILD_FILES := $(TEST_BUILD_DIR)/test.o \ + + +all: dynamic static + +dynamic: $(DYNAMIC_BUILD_FILES) + $(CC) -shared -o $(DYNAMIC_BUILD_DIR)/libLLog.so $(DYNAMIC_BUILD_FILES) + +$(DYNAMIC_BUILD_DIR)/%.o: %.c | $(DYNAMIC_BUILD_DIR) + $(CC) $(CFLAGS) -c -fPIC $< -o $@ + + +static: $(STATIC_BUILD_FILES) + ar rcs $(STATIC_BUILD_DIR)/libLLog.a $(STATIC_BUILD_FILES) + +$(STATIC_BUILD_DIR)/%.o: %.c | $(STATIC_BUILD_DIR) + $(CC) $(CFLAGS) -c $< -o $@ + +test: $(TEST_BUILD_FILES) test_dynamic test_static + +test_dynamic: dynamic $(TEST_BUILD_FILES) + $(CC) $(CFLAGS) -L$(CURDIR)/$(DYNAMIC_BUILD_DIR) -lLLog -o $(TEST_BUILD_DIR)/test_dynamic $(TEST_BUILD_FILES) + + @echo "" + @echo "Running dynamic test..." + @echo "" + + LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):$(CURDIR)/build/dynamic ./$(TEST_BUILD_DIR)/test_dynamic + +test_static: static $(TEST_BUILD_FILES) + $(CC) $(CFLAGS) -o $(TEST_BUILD_DIR)/test_static $(TEST_BUILD_FILES) $(STATIC_BUILD_DIR)/libLLog.a + + @echo "" + @echo "Running static test..." + @echo "" + + ./$(TEST_BUILD_DIR)/test_static + +$(TEST_BUILD_DIR)/%.o: test/%.c | $(TEST_BUILD_DIR) + $(CC) $(CFLAGS) -c $< -o $@ + + +$(DYNAMIC_BUILD_DIR): + mkdir -p $(DYNAMIC_BUILD_DIR) + +$(STATIC_BUILD_DIR): + mkdir -p $(STATIC_BUILD_DIR) + +$(TEST_BUILD_DIR): + mkdir -p $(TEST_BUILD_DIR) + +$(INCLUDE_INSTALL_PATH): + mkdir -p $(INCLUDE_INSTALL_PATH) + +$(LIB_INSTALL_PATH): + mkdir -p $(LIB_INSTALL_PATH) + +CLEANUP_BUILD_DIR: + rm -rf $(BUILD_DIR)/*/*.o $(BUILD_DIR)/test + +install: $(INCLUDE_INSTALL_PATH) $(LIB_INSTALL_PATH) CLEANUP_BUILD_DIR + cp $(INCLUDE)/* $(INCLUDE_INSTALL_PATH) + cp $(STATIC_BUILD_DIR)/* $(LIB_INSTALL_PATH) + cp $(DYNAMIC_BUILD_DIR)/* $(LIB_INSTALL_PATH) + ldconfig + +clean: + rm -rf $(BUILD_DIR) diff --git a/include/LLog.h b/include/LLog.h new file mode 100644 index 0000000..5a0a4ca --- /dev/null +++ b/include/LLog.h @@ -0,0 +1,13 @@ +#ifndef LLog_H +#define LLog_H + +enum lLogLevel { + lINFO, + lWARNING, + lERROR, + lDEBUG +}; + +void lLog(enum lLogLevel LOG_LEVEL, char* MESSAGE); + +#endif \ No newline at end of file diff --git a/test/test.c b/test/test.c new file mode 100644 index 0000000..ec2b1fe --- /dev/null +++ b/test/test.c @@ -0,0 +1,8 @@ +#include "../include/LLog.h" + +int main(void) { + lLog(lINFO, "Hello, INFO!"); + lLog(lWARNING, "Hello, WARNING!"); + lLog(lERROR, "Hello, ERROR!"); + lLog(lDEBUG, "Hello, DEBUG!"); +} \ No newline at end of file