diff --git a/.gitignore b/.gitignore index 709140d..93bbd66 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ -# executables -moxerver - -# object files +# object files/output directories *.o +*.dir # logs directory during development logs diff --git a/Makefile b/Makefile index fa9aaef..5cf4626 100644 --- a/Makefile +++ b/Makefile @@ -1,43 +1,33 @@ -# target name -TARGET = moxerver +# components +MOXERVER = moxerver +MOXANIX = moxanix -# special include directories -INCDIRS = -I. -# special library directories -LIBDIRS = -L. -# used libraries -#LIBS = -lm -LIBS = -lpthread +# installation root +INSTALL_ROOT = ./install.dir -# compiler and flags -CC = gcc -CFLAGS = -Wall $(INCDIRS) $(LIBDIRS) $(LIBS) +# ============================================================================== -# objects are .o files created from all .c files in the directory (same name) -OBJECTS = $(patsubst %.c,%.o,$(wildcard *.c)) -# headers are all .h files in the directory -HEADERS = $(wildcard *.h) +MOXERVER_BUILDDIR = build.dir -# all objects are built from their .c files and all headers in the directory -%.o: %.c $(HEADERS) - $(CC) $(CFLAGS) -c $< -o $@ +# ============================================================================== -# target is built from all object files -$(TARGET): $(OBJECTS) - $(CC) $(OBJECTS) $(CFLAGS) -o $@ - - -# support for default, clean and all options +# supported make options (clean, install...) .PHONY: default all clean # all calls all other options all: default -# default builds target -default: $(TARGET) +# default builds moxerver +default: + cd $(MOXERVER) && make OUTDIR=$(MOXERVER_BUILDDIR) -# clean removed object files and target +# install handles moxerver and moxanix installation +install: default + mkdir -p $(INSTALL_ROOT) + cp $(MOXERVER)/$(MOXERVER_BUILDDIR)/$(MOXERVER) $(INSTALL_ROOT)/$(MOXERVER) + cp $(MOXANIX)/$(MOXANIX).* $(INSTALL_ROOT)/ + +# clean removes build and install results clean: - -rm -f *.o - -rm -f $(TARGET) - + cd $(MOXERVER) && make clean + -rm -rf $(INSTALL_ROOT) diff --git a/moxanix.cfg b/moxanix/moxanix.cfg similarity index 100% rename from moxanix.cfg rename to moxanix/moxanix.cfg diff --git a/moxanix.sh b/moxanix/moxanix.sh similarity index 100% rename from moxanix.sh rename to moxanix/moxanix.sh diff --git a/moxerver/Makefile b/moxerver/Makefile new file mode 100644 index 0000000..c798acb --- /dev/null +++ b/moxerver/Makefile @@ -0,0 +1,54 @@ +# target name +TARGET = moxerver + +# directory for build results +BUILDDIR = build.dir + +# ============================================================================== + +# add include directories +INCDIRS = -I. +# add library directories +LIBDIRS = -L. +# list used libraries +#LIBS = -lm +LIBS = -lpthread + +# ============================================================================== + +# compiler and flags +CC = gcc +CFLAGS = -Wall $(INCDIRS) $(LIBDIRS) $(LIBS) + +# ============================================================================== + +# build everything in a dedicated directory $(OUTDIR) + +# objects are .o files created from all .c files in the directory (same name) +OBJECTS = $(patsubst %.c, $(BUILDDIR)/%.o, $(wildcard *.c)) +# headers are all .h files in the directory +HEADERS = $(wildcard *.h) + +# all objects are built from their .c files in the directory +$(BUILDDIR)/%.o: %.c + mkdir -p $(BUILDDIR) + $(CC) $(CFLAGS) -c $< -o $@ + +# target is built from all object files +$(BUILDDIR)/$(TARGET): $(OBJECTS) + $(CC) $(OBJECTS) $(CFLAGS) -o $@ + +# ============================================================================== + +# supported make options (clean, install...) +.PHONY: default all clean + +# all calls all other options +all: default + +# default builds target +default: $(BUILDDIR)/$(TARGET) + +# clean removes object files and target (ignore errors with "-" before commands) +clean: + -rm -rf $(BUILDDIR) diff --git a/client.c b/moxerver/client.c similarity index 100% rename from client.c rename to moxerver/client.c diff --git a/client.h b/moxerver/client.h similarity index 100% rename from client.h rename to moxerver/client.h diff --git a/common.h b/moxerver/common.h similarity index 100% rename from common.h rename to moxerver/common.h diff --git a/moxerver.c b/moxerver/moxerver.c similarity index 100% rename from moxerver.c rename to moxerver/moxerver.c diff --git a/server.c b/moxerver/server.c similarity index 100% rename from server.c rename to moxerver/server.c diff --git a/server.h b/moxerver/server.h similarity index 100% rename from server.h rename to moxerver/server.h diff --git a/task_threads.c b/moxerver/task_threads.c similarity index 100% rename from task_threads.c rename to moxerver/task_threads.c diff --git a/task_threads.h b/moxerver/task_threads.h similarity index 100% rename from task_threads.h rename to moxerver/task_threads.h diff --git a/telnet.c b/moxerver/telnet.c similarity index 100% rename from telnet.c rename to moxerver/telnet.c diff --git a/telnet.h b/moxerver/telnet.h similarity index 100% rename from telnet.h rename to moxerver/telnet.h diff --git a/tty.c b/moxerver/tty.c similarity index 100% rename from tty.c rename to moxerver/tty.c diff --git a/tty.h b/moxerver/tty.h similarity index 100% rename from tty.h rename to moxerver/tty.h