diff --git a/.gitignore b/.gitignore index 6faf0c4..adc449f 100644 --- a/.gitignore +++ b/.gitignore @@ -5,4 +5,6 @@ cmake_install.cmake compile_commands.json .dir-locals.el Makefile -Urchin-* +urchin-* +lib*.a +lib*.so diff --git a/CMakeLists.txt b/CMakeLists.txt index 3224f2c..8c67a37 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(Urchin +project(urchin VERSION 0 DESCRIPTION "Simple Mud Experiment in C" HOMEPAGE_URL "https://git.warwick-new.co.uk/" @@ -9,6 +9,15 @@ set(CMAKE_C_STANDARD 90) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) set(CMAKE_C_CLANG_TIDY) +# Compile Shared Library +file(GLOB_RECURSE LIBRARY_SOURCE_FILES + ${CMAKE_SOURCE_DIR}/src/shared_lib/*.c) + +file(GLOB_RECURSE LIBRARY_HEADER_FILES + ${CMAKE_SOURCE_DIR}/src/shared_lib/*.h) + +add_library(${PROJECT_NAME} SHARED ${LIBRARY_HEADER_FILES} ${LIBRARY_SOURCE_FILES}) + # Compile Server file(GLOB_RECURSE SERVER_SOURCE_FILES ${CMAKE_SOURCE_DIR}/src/server/*.c) @@ -17,6 +26,7 @@ file(GLOB_RECURSE SERVER_HEADER_FILES ${CMAKE_SOURCE_DIR}/src/server/*.h) add_executable(${PROJECT_NAME}-server ${SERVER_HEADER_FILES} ${SERVER_SOURCE_FILES}) +target_link_libraries(${PROJECT_NAME}-server ${PROJECT_NAME}) # Compile Client file(GLOB_RECURSE CLIENT_SOURCE_FILES @@ -26,3 +36,4 @@ file(GLOB_RECURSE CLIENT_HEADER_FILES ${CMAKE_SOURCE_DIR}/src/client/*.h) add_executable(${PROJECT_NAME}-client ${CLIENT_HEADER_FILES} ${CLIENT_SOURCE_FILES}) +target_link_libraries(${PROJECT_NAME}-client ${PROJECT_NAME}) diff --git a/src/client/main.c b/src/client/main.c index 046dd65..dd2e2eb 100644 --- a/src/client/main.c +++ b/src/client/main.c @@ -1,6 +1,7 @@ // Sorry in advance for all the comments. This project is also a way for me to // learn C. +#include "error.h" #include // Contains host structure #include //sockaddr_in #include @@ -10,15 +11,15 @@ #include // sockaddr #include -void error_crash(const char *msg) { - fprintf(stderr, "error crash: %s\n", msg); - exit(EXIT_FAILURE); -} - -void error_warn(const char *msg) { fprintf(stderr, "warning: %s\n", msg); } - -// TODO: Save the logs somewhere -void error_log(const char *msg) { fprintf(stderr, "log: %s\n", msg); } +// void error_crash(const char *msg) { +// fprintf(stderr, "error crash: %s\n", msg); +// exit(EXIT_FAILURE); +// } +// +// void error_warn(const char *msg) { fprintf(stderr, "warning: %s\n", msg); } +// +// // TODO: Save the logs somewhere +// void error_log(const char *msg) { fprintf(stderr, "log: %s\n", msg); } int main(int argc, char *argv[]) { // Set up containers for file descriptor id's diff --git a/src/server/main.c b/src/server/main.c index 79eaef8..eee833b 100644 --- a/src/server/main.c +++ b/src/server/main.c @@ -1,6 +1,7 @@ // Sorry in advance for all the comments. This project is also a way for me to // learn C. +#include "error.h" #include //sockaddr_in #include #include // Keeping for conversion functions @@ -9,16 +10,6 @@ #include // sockaddr #include -void error_crash(const char *msg) { - fprintf(stderr, "error crash: %s\n", msg); - exit(EXIT_FAILURE); -} - -void error_warn(const char *msg) { fprintf(stderr, "warning: %s\n", msg); } - -// TODO: Save the logs somewhere -void error_log(const char *msg) { fprintf(stderr, "log: %s\n", msg); } - int main(int argc, char *argv[]) { // Set up containers for file descriptor id's int sockfd, clientsockfd, portno, errflag; diff --git a/src/shared_lib/error.c b/src/shared_lib/error.c new file mode 100644 index 0000000..7919120 --- /dev/null +++ b/src/shared_lib/error.c @@ -0,0 +1,11 @@ +#include "error.h" + +void error_crash(const char *msg) { + fprintf(stderr, "error crash: %s\n", msg); + exit(EXIT_FAILURE); +} + +void error_warn(const char *msg) { fprintf(stderr, "warning: %s\n", msg); } + +// TODO: Save the logs somewhere +void error_log(const char *msg) { fprintf(stderr, "log: %s\n", msg); } diff --git a/src/shared_lib/error.h b/src/shared_lib/error.h new file mode 100644 index 0000000..3d9a50a --- /dev/null +++ b/src/shared_lib/error.h @@ -0,0 +1,10 @@ +#pragma once + +#include +#include + +void error_crash(const char *msg); + +void error_warn(const char *msg); + +void error_log(const char *msg);