96 lines
1.7 KiB
Makefile
96 lines
1.7 KiB
Makefile
#Find the correct architecture to build for
|
|
ifndef ARCH
|
|
ARCH = $(shell getconf LONG_BIT)
|
|
endif
|
|
|
|
#Set correct flags for architecture
|
|
ifeq ($(ARCH), 32)
|
|
#Global
|
|
CXXFLAGS += -m32 -march=pentium4 -mtune=generic
|
|
|
|
#Arch name
|
|
ARCHNAME = x86
|
|
else
|
|
#Global
|
|
CXXFLAGS += -m64 -march=athlon64 -mtune=generic
|
|
|
|
#Arch name
|
|
ARCHNAME = x64
|
|
endif
|
|
|
|
#Global flags
|
|
ifeq ($(origin AR), default)
|
|
AR = gcc-ar
|
|
endif
|
|
BIN = libircclient.a
|
|
SRCDIR = source/libircclient/src
|
|
|
|
UNAME = $(shell uname)
|
|
ifeq ($(UNAME), Darwin)
|
|
OSNAME = osx
|
|
else
|
|
OSNAME = lin
|
|
endif
|
|
|
|
ifdef DEBUG
|
|
OBJDIR = obj_d/$(OSNAME)$(ARCH)/libircclient
|
|
BINDIR = obj_d/$(OSNAME)$(ARCH)
|
|
|
|
CXXFLAGS += -O0 -g
|
|
CXXFLAGS += -D_DEBUG
|
|
else
|
|
OBJDIR = obj/$(OSNAME)$(ARCH)/libircclient
|
|
BINDIR = obj/$(OSNAME)$(ARCH)
|
|
|
|
CXXFLAGS += -Ofast
|
|
CXXFLAGS += -DNDEBUG
|
|
ifndef NLTO
|
|
CXXFLAGS += -flto
|
|
else
|
|
CXXFLAGS += -fno-lto
|
|
endif
|
|
endif
|
|
|
|
ifndef CC
|
|
CC = g++
|
|
endif
|
|
|
|
CXXFLAGS += -I./source/libircclient/include -I./source/libircclient/source
|
|
CXXFLAGS += -DENABLE_THREADS -DHAVE_LOCALTIME_R
|
|
|
|
ifneq ($(UNAME), Darwin)
|
|
CXXFLAGS += -DHAVE_GETHOSTBYNAME_R
|
|
endif
|
|
|
|
#Source code files
|
|
SOURCES = \
|
|
libircclient.c
|
|
|
|
C_FILES = $(addprefix $(SRCDIR)/, $(SOURCES))
|
|
OBJ_FILES = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.o))
|
|
DEP_FILES = $(addprefix $(OBJDIR)/, $(SOURCES:.c=.d))
|
|
|
|
-include $(DEP_FILES)
|
|
|
|
compile: $(DEP_FILES) $(BINDIR)/$(BIN)
|
|
|
|
#Dependency files to take care of header changes
|
|
$(OBJDIR)/%.d: $(SRCDIR)/%.c
|
|
@mkdir -p $(dir $@)
|
|
@$(CC) $(CXXFLAGS) -MM -MT "$(@:.d=.o)" $< >> $@
|
|
|
|
#Object files are compiled separately
|
|
$(OBJDIR)/%.o: $(SRCDIR)/%.c
|
|
@mkdir -p $(dir $@)
|
|
@echo $<
|
|
@$(CC) $(CXXFLAGS) $< -c -o $@
|
|
|
|
#Complete binary compile
|
|
$(BINDIR)/$(BIN): $(OBJ_FILES)
|
|
@mkdir -p $(BINDIR)
|
|
$(AR) rcs $@ $^
|
|
|
|
clean:
|
|
@rm -rf $(OBJDIR)
|
|
@rm -f ./.depend
|