# Makefile for HaxServ # # Written by: Test_User # # This is free and unencumbered software released into the public # domain. # # Anyone is free to copy, modify, publish, use, compile, sell, or # distribute this software, either in source code form or as a compiled # binary, for any purpose, commercial or non-commercial, and by any # means. # # In jurisdictions that recognize copyright laws, the author or authors # of this software dedicate any and all copyright interest in the # software to the public domain. We make this dedication for the benefit # of the public at large and to the detriment of our heirs and # successors. We intend this dedication to be an overt act of # relinquishment in perpetuity of all present and future rights to this # software under copyright law. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR # OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # OTHER DEALINGS IN THE SOFTWARE. #INCLUDEFLAGS = CFLAGS += $(INCLUDEFLAGS) -D_REENTRANT -ggdb3 -Wall -Wextra -Wsign-conversion -Wno-unused-parameter $(shell pkg-config gnutls --cflags) -std=gnu99 LDFLAGS = -lpthread $(shell pkg-config gnutls --libs) .makeopts: @printf '%s\n' 'LAST_VERBOSE = 1' > .makeopts @printf '%s\n' 'LAST_COLORIZE = 1' >> .makeopts @printf '%s\n' 'LAST_SAFE_STACK = 0' >> .makeopts include .makeopts rebuild = 0 #tabs not allowed :( ifneq ($(VERBOSE),) ifneq ($(VERBOSE),$(LAST_VERBOSE)) rebuild = 1 endif else VERBOSE = $(LAST_VERBOSE) endif ifneq ($(COLORIZE),) ifneq ($(COLORIZE),$(LAST_COLORIZE)) rebuild = 1 endif else COLORIZE = $(LAST_COLORIZE) endif ifneq ($(SAFE_STACK),) ifneq ($(SAFE_STACK),$(LAST_SAFE_STACK)) rebuild = 1 endif else SAFE_STACK = $(LAST_SAFE_STACK) endif ifeq ($(rebuild),1) $(shell printf '%s%s\n' 'LAST_VERBOSE = ' $(VERBOSE) > .makeopts) $(shell printf '%s%s\n' 'LAST_COLORIZE = ' $(COLORIZE) >> .makeopts) $(shell printf '%s%s\n' 'LAST_SAFE_STACK = ' $(SAFE_STACK) >> .makeopts) $(shell $(RM) haxserv *.o) endif DEPS = $(shell $(CC) $(INCLUDEFLAGS) -MM -MT $(1).o $(1).c | sed -z 's/\\\n //g') ifeq ($(VERBOSE), 1) CFLAGS += -DLOGALL=1 endif ifeq ($(COLORIZE), 1) CFLAGS += -DCOLORIZE=1 endif ifeq ($(SAFE_STACK), 1) CFLAGS += -fstack-check endif .PHONY: all clean all: haxserv haxserv: main.o server_network.o client_network.o general_network.o commands.o table.o config.o tls.o utils.o $(CC) $^ -o $@ $(LDFLAGS) %.o: %.c $(CC) $(CFLAGS) -c $< -o $@ $(call DEPS,main) $(call DEPS,server_network) $(call DEPS,client_network) $(call DEPS,general_network) $(call DEPS,commands) $(call DEPS,table) $(call DEPS,config) $(call DEPS,tls) $(call DEPS,utils) clean: $(RM) haxserv *.o