.PHONY : mingw ej2d linux undefined
CFLAGS = -g -Wall -Ilib -D EJOY2D_OS=$(OS)
// CFLAGS gcc接收的参数
// -g 生成调试信息,可用来gdb调试
// -Wall 输出gcc翻译时生成的警告信息
// -Ilib 将lib目录添加至编译查找路径,用来查找头文件
// gcc中命令行以tab开头
LDFLAGS :=
SRC := \
lib/shader.c \
lib/lshader.c \
lib/ejoy2dgame.c \
lib/fault.c \
lib/screen.c \
lib/texture.c \
lib/ppm.c \
lib/spritepack.c \
lib/sprite.c \
lib/lsprite.c \
lib/matrix.c \
lib/lmatrix.c \
lib/dfont.c \
lib/label.c \
lib/particle.c \
lib/lparticle.c \
lib/scissor.c
UNAME=$(shell uname)
SYS=$(if $(filter Linux%,$(UNAME)),linux,\
$(if $(filter MINGW%,$(UNAME)),mingw,\
$(if $(filter Darwin%,$(UNAME)),macosx,\
undefined\
)))
all: $(SYS)
undefined:
@echo “I can’t guess your platform, please do ‘make PLATFORM’ where PLATFORM is one of these:”
@echo ” linux mingw macosx”
mingw : OS := WINDOWS
mingw : TARGET := ej2d.exe
mingw : CFLAGS += -I/usr/include -I/usr/local/include
mingw : LDFLAGS += -L/usr/bin -lgdi32 -lglew32 -lopengl32 -L/usr/local/bin -llua52
mingw : SRC += mingw/window.c mingw/winfw.c mingw/winfont.c
mingw : $(SRC) ej2d
linux : OS := LINUX
linux : TARGET := ej2d
linux : CFLAGS += -I/usr/include -I/usr/local/include $(shell freetype-config –cflags)
linux : LDFLAGS += -lGLEW -lGL -lX11 -lfreetype -llua -lm -Wl,-E
linux : SRC += posix/window.c posix/winfw.c posix/winfont.c
linux : $(SRC) ej2d
macosx : OS := MACOSX
macosx : TARGET := ej2d
macosx : CFLAGS += -I/usr/X11R6/include -I/usr/include -I/usr/local/include $(shell freetype-config –cflags) -D __MACOSX
macosx : LDFLAGS += -L/usr/X11R6/lib -lGLEW -lGL -lX11 -lfreetype -llua -lm -Wl,-E -ldl
macosx : SRC += posix/window.c posix/winfw.c posix/winfont.c
macosx : $(SRC) ej2d
ej2d :
gcc $(CFLAGS) -o $(TARGET) $(SRC) $(LDFLAGS)
// gcc需要以tab开头
clean :
-rm -f ej2d.exe
-rm -f ej2d
.PHONY : all clean CFLAGS = -g -Wall LDFLAGS = -lpthread -llua -lm uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') ifeq ($(uname_S), Darwin) SHARED = -fPIC -dynamiclib -Wl,-undefined,dynamic_lookup // -fPIC 生成的地址改为相对地址,生成共享库时需要指定为相对地址 // -dynamiclib darwin系统中生成动态链接库参数 // -Wl,option 将option当做一个参数传给linker else LDFLAGS += -lrt -Wl,-E SHARED = -fPIC --shared endif ifneq ($(uname_S), FreeBSD) LDFLAGS += -ldl endif all : \ skynet \ service/snlua.so \ service/logger.so \ service/gate.so \ service/client.so \ service/master.so \ service/multicast.so \ service/tunnel.so \ service/harbor.so \ service/localcast.so \ luaclib/skynet.so \ luaclib/socketdriver.so \ luaclib/int64.so \ luaclib/mcast.so \ luaclib/bson.so \ luaclib/mongo.so \ client skynet : \ skynet-src/skynet_main.c \ skynet-src/skynet_handle.c \ skynet-src/skynet_module.c \ skynet-src/skynet_mq.c \ skynet-src/skynet_server.c \ skynet-src/skynet_start.c \ skynet-src/skynet_timer.c \ skynet-src/skynet_error.c \ skynet-src/skynet_harbor.c \ skynet-src/skynet_multicast.c \ skynet-src/skynet_group.c \ skynet-src/skynet_env.c \ skynet-src/skynet_monitor.c \ skynet-src/skynet_socket.c \ skynet-src/socket_server.c \ luacompat/compat52.c gcc $(CFLAGS) -Iluacompat -o $@ $^ -Iskynet-src $(LDFLAGS) luaclib: mkdir luaclib service/tunnel.so : service-src/service_tunnel.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src service/multicast.so : service-src/service_multicast.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src service/master.so : service-src/service_master.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src service/harbor.so : service-src/service_harbor.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src service/logger.so : skynet-src/skynet_logger.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src service/snlua.so : service-src/service_lua.c service-src/luacode_cache.c service-src/luaalloc.c gcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src service/gate.so : service-src/service_gate.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src service/localcast.so : service-src/service_localcast.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src luaclib/skynet.so : lualib-src/lua-skynet.c lualib-src/lua-seri.c lualib-src/trace_service.c lualib-src/timingqueue.c | luaclib gcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src -Iservice-src -Ilualib-src service/client.so : service-src/service_client.c gcc $(CFLAGS) $(SHARED) $^ -o $@ -Iskynet-src luaclib/socketdriver.so : lualib-src/lua-socket.c | luaclib gcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src -Iservice-src luaclib/int64.so : lua-int64/int64.c | luaclib gcc $(CFLAGS) $(SHARED) -Iluacompat -O2 $^ -o $@ luaclib/mcast.so : lualib-src/lua-localcast.c | luaclib gcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ -Iskynet-src -Iservice-src luaclib/bson.so : lualib-src/lua-bson.c | luaclib gcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ luaclib/mongo.so : lualib-src/lua-mongo.c | luaclib gcc $(CFLAGS) $(SHARED) -Iluacompat $^ -o $@ client : client-src/client.c gcc $(CFLAGS) $^ -o $@ -lpthread clean : rm skynet client service/*.so luaclib/*.so
近期评论