summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile148
1 files changed, 148 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..0ea0f7f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,148 @@
+ifeq ($(SYSTEM),)
+ SYSTEM = $(shell uname | cut -f 1 -d_)
+endif
+
+TRUESYSTEM = $(shell uname)
+MACHINE = $(shell uname -m)
+DISTRIB = $(shell cat /etc/issue | cut -f 1 -d\ | head -1)
+
+CC = gcc
+CXX = g++
+LD = g++
+AS = gcc -c
+AR = ar rcs
+
+BINEXT = bin
+
+CPPFLAGS += -fno-strict-aliasing
+
+ifeq ($(DEBUG),)
+CPPFLAGS += -g -O3 -DNDEBUG
+LDFLAGS += -g
+else
+CPPFLAGS += -g -DDEBUG
+LDFLAGS += -g
+endif
+
+INCLUDES = includes Balau/includes Balau/libcoro Balau/libeio Balau/libev Balau/LuaJIT/src
+LIBS = z
+
+ifeq ($(SYSTEM),Darwin)
+ CC = clang
+ CXX = clang++
+ CPPFLAGS += -fPIC
+ LDFLAGS += -fPIC
+ LIBS += pthread iconv
+ CONFIG_H = Balau/darwin-config.h
+ ARCH_FLAGS = -arch i386
+ LD = clang++ -arch i386
+ STRIP = strip -x
+ ifeq ($(TRUESYSTEM),Linux)
+ CROSSCOMPILE = true
+ ARCH_FLAGS =
+ CC = i686-apple-darwin9-gcc
+ CXX = i686-apple-darwin9-g++
+ LD = i686-apple-darwin9-g++ -arch i386 -mmacosx-version-min=10.5
+ STRIP = i686-apple-darwin9-strip -x
+ AS = i686-apple-darwin9-as -arch i386
+ AR = i686-apple-darwin9-ar rcs
+ endif
+endif
+
+ifeq ($(SYSTEM),MINGW32)
+ BINEXT = exe
+ COMPILE_PTHREADS = true
+ CONFIG_H = Balau/mingw32-config.h
+ INCLUDES += Balau/win32/iconv Balau/win32/pthreads-win32 Balau/win32/regex Balau/win32/dbghelp
+ LIBS += ws2_32 ntdll
+ ifeq ($(TRUESYSTEM),Linux)
+ ifeq ($(DISTRIB),CentOS)
+ CROSSCOMPILE = true
+ CC = i686-pc-mingw32-gcc
+ CXX = i686-pc-mingw32-g++
+ LD = i686-pc-mingw32-g++
+ AS = i686-pc-mingw32-gcc -c
+ STRIP = i686-pc-mingw32-strip --strip-unneeded
+ WINDRES = i686-pc-mingw32-windres
+ AR = i686-pc-mingw32-ar rcs
+ LUAJIT_CROSS = i686-pc-mingw32-
+ else
+ CROSSCOMPILE = true
+ CC = i586-mingw32msvc-gcc
+ CXX = i586-mingw32msvc-g++
+ LD = i586-mingw32msvc-g++
+ AS = i586-mingw32msvc-gcc -c
+ STRIP = i586-mingw32msvc-strip --strip-unneeded
+ WINDRES = i586-mingw32msvc-windres
+ AR = i586-mingw32msvc-ar rcs
+ LUAJIT_CROSS = i586-mingw32msvc-
+ endif
+ LUAJIT_TARGET = Windows
+ endif
+
+ ifeq ($(TRUESYSTEM),Darwin)
+ CROSSCOMPILE = true
+ CC = i386-mingw32-gcc
+ CXX = i386-mingw32-g++
+ LD = i386-mingw32-g++
+ AS = i386-mingw32-gcc -c
+ STRIP = i386-mingw32-strip --strip-unneeded
+ WINDRES = i386-mingw32-windres
+ AR = i386-mingw32-ar rcs
+ endif
+endif
+
+ifeq ($(SYSTEM),Linux)
+ CPPFLAGS += -fPIC
+ LDFLAGS += -fPIC -rdynamic
+ LIBS += pthread dl
+ CONFIG_H = Balau/linux-config.h
+ ARCH_FLAGS = -march=i686 -m32
+ ASFLAGS = -march=i686 --32
+ STRIP = strip --strip-unneeded
+endif
+
+CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) -fexceptions -imacros $(CONFIG_H)
+CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
+
+CXXFLAGS += -Wno-deprecated -std=gnu++0x
+
+LDFLAGS += $(ARCH_FLAGS)
+LDLIBS = $(addprefix -l, $(LIBS))
+
+vpath %.cc src
+
+DALOS_CLI_SOURCES = \
+Dalos-cli.cc
+
+ALL_OBJECTS = $(addsuffix .o, $(notdir $(basename $(DALOS_CLI_SOURCES))))
+ALL_DEPS = $(addsuffix .dep, $(notdir $(basename $(DALOS_CLI_SOURCES))))
+
+TARGET=Dalos-cli.$(BINEXT)
+
+all: dep $(TARGET)
+
+strip: $(TARGET)
+ $(STRIP) $(TARGET)
+
+Balau:
+ $(MAKE) -C Balau
+
+$(TARGET): Balau $(ALL_OBJECTS)
+ $(LD) $(LDFLAGS) -o $@ $(ALL_OBJECTS) ./Balau/LuaJIT/src/libluajit.a ./Balau/libBalau.a $(LDLIBS)
+
+dep: $(ALL_DEPS)
+
+%.dep : %.cc
+ $(CXX) $(CXXFLAGS) $(CPPFLAGS_NO_ARCH) -M $< > $@
+
+%.dep : %.c
+ $(CC) $(CFLAGS) $(CPPFLAGS_NO_ARCH) -M $< > $@
+
+-include $(ALL_DEPS)
+
+clean:
+ rm -f $(ALL_OBJECTS) $(ALL_DEPS) $(TARGET)
+ $(MAKE) -C Balau clean
+
+.PHONY: clean strip Balau