aboutsummaryrefslogtreecommitdiff
path: root/Makefile.win
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile.win')
-rw-r--r--Makefile.win447
1 files changed, 63 insertions, 384 deletions
diff --git a/Makefile.win b/Makefile.win
index b4e8162..cd983cb 100644
--- a/Makefile.win
+++ b/Makefile.win
@@ -1,10 +1,5 @@
-#Detect what kind of system we're on
-ifeq ($(OS), Windows_NT)
- UNAME:=Windows
-else
- UNAME:=$(shell uname -s)
-endif
+include Makefile.shared
CP=cp
CXX?=g++
@@ -12,383 +7,67 @@ MKDIR?=mkdir
RM?=rm -f
ECHO?=echo
-ifeq ($(UNAME), Windows)
- EXE_EXT=.exe
- STA_LIB_EXT=.a
- DYN_LIB_EXT=.dll
- CMAKE_TYPE="MinGW Makefiles"
- CMAKE_FLAGS=-G $(CMAKE_TYPE) -DCMAKE_SH="CMAKE_SH-NOTFOUND"
-endif
+shared_objs=$(SHARED_SRC:src/shared/%=build/shared/%.o)
+client_objs=$(CLIENT_SRC:src/client/%=build/client/%.o)
+server_objs=$(SERVER_SRC:src/server/%=build/server/%.o)
+client_dlls=Irrlicht
+client_bins=bin/client/bin/brokengine_client.exe $(client_dlls:%=bin/client/bin/%.dll)
+server_bins=bin/server/bin/brokengine_server.exe
+bins=$(client_bins) $(server_bins)
+
+CLIENT_LIB_DIRS=\
+ -Llib/bullet/lib\
+ -Llib/irrlicht/lib/Win32-gcc\
+ -Llib/luajit/src\
+ -Llib/nng/static
+
+CLIENT_LIBS=\
+ -lBulletDynamics\
+ -lBulletCollision\
+ -lLinearMath\
+ -lIrrlicht\
+ -lnng\
+ -lluajit\
+ -lOpenGL32\
+ -lws2_32\
+ -lmswsock\
+ -ladvapi32\
+ -lwinmm\
+ -lm\
+ #-lstdc++
+
+CFLAGS+=-DNNG_STATIC_LIB
+
+all : $(bins)
+ echo "Done"
+
+clean:
+ $(RM) $(client_objs)
+ $(RM) $(server_objs)
+ $(RM) $(shared_objs)
+ $(RM) $(bins)
+
+bin/client/bin/brokengine_client.exe : $(client_objs) $(shared_objs)
+ $(Q)echo "Linking $@"
+ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ $(CLIENT_LIB_DIRS) $(CLIENT_LIBS) # -Wl,--verbose
+
+bin/server/bin/brokengine_server.exe : $(server_objs) $(shared_objs)
+ $(Q)echo "Linking $@"
+ $(Q)$(CXX) $(LDFLAGS) -o $@ $^ $(CLIENT_LIB_DIRS) $(CLIENT_LIBS) # -Wl,--verbose
+
+$(shared_objs) : build/shared/%.o : src/shared/%.cpp src/shared/%.hpp
+ $(Q)echo "CXX $@"
+ $(Q)$(CXX) $(CFLAGS) -c -o $@ $<
+
+$(client_objs) : build/client/%.o : src/client/%.cpp src/client/%.hpp
+ $(Q)echo "CXX $@"
+ $(Q)$(CXX) $(CFLAGS) -c -o $@ $<
+
+$(server_objs) : build/server/%.o : src/server/%.cpp src/server/%.hpp
+ $(Q)echo "CXX $@"
+ $(Q)$(CXX) $(CFLAGS) -c -o $@ $<
+
+bin/client/bin/Irrlicht.dll : lib/irrlicht/bin/Win32-gcc/Irrlicht.dll
+ cp $^ $@
-ifeq ($(UNAME), Linux)
- EXE_EXT=
- STA_LIB_EXT=.a
- DYN_LIB_EXT=.so
- CMAKE_TYPE="Unix Makefiles"
- CMAKE_FLAGS= -G $(CMAKE_TYPE)
-endif
-BIN_DIR=bin
-BUILD_DIR=build
-SRC_DIR=src
-LIB_DIR=lib
-DOC_DIR=doc
-
-CLIENTNAME=client
-SERVERNAME=server
-MASTERNAME=#masterserver
-BINS=
-
-EX_PRE = brokengine_
-EX_PARTS = $(CLIENTNAME) $(SERVERNAME) $(MASTERNAME)
-
-NAMES = $(EX_PARTS:%=$(EX_PRE)%)
-BINS+= $(foreach part,$(EX_PARTS),$(BIN_DIR)/$(part)/bin/$(EX_PRE)$(part)$(EXE_EXT))
-BUILDS = $(EX_PARTS:%=$(BUILD_DIR)/%)
-SRC_DIRS = $(EX_PARTS:%=$(SRC_DIR)/%)
-
-
-LLUADIR=$(LIB_DIR)/luajit
-LIRRDIR=$(LIB_DIR)/irrlicht
-LBULDIR=$(LIB_DIR)/bullet
-LNNGDIR=$(LIB_DIR)/nng
-LOBJDIR=$(LIB_DIR)/tinyobjloader-c
-
-#Include directories
-ILUADIR=$(LLUADIR)/src
-IIRRDIR=$(LIRRDIR)/include
-IBULDIR=$(LBULDIR)/src
-INNGDIR=$(LNNGDIR)/include
-IOBJDIR=$(LOBJDIR)/
-ISHADIR=src
-INCLUDE_PATHS=-I$(ILUADIR) -I$(IIRRDIR) -I$(IBULDIR) -I$(INNGDIR) -I$(ISHADIR) -I$(IOBJDIR)
-#library directories
-
-CXXFLAGS+=$(INCLUDE_PATHS)
-
-CXXFLAGS+=-Llib
-
-#Library binary names
-ifeq ($(UNAME),Windows)
- LIB_N_LUA=lua51
- LIB_N_IRR=Irrlicht$(DYN_LIB_EXT)
-endif
-ifeq ($(UNAME),Linux)
- LIB_N_LUA=libluajit
- LIB_N_IRR=libIrrlicht$(DYN_LIB_EXT).1.8.4 #TODO: Automatically detect version
-endif
-
-#Libraries
-#static libs
-LIB_S_LUA=$(LIB_DIR)/libluajit.a
-LIB_S_IRR=$(LIB_DIR)/libIrrlicht.a
-LIB_S_BCO=$(LIB_DIR)/libBulletCollision.a
-LIB_S_BDY=$(LIB_DIR)/libBulletDynamics.a
-LIB_S_BLM=$(LIB_DIR)/libLinearMath.a
-LIB_S_NNG=$(LIB_DIR)/libnng.a
-
-#dynamic libraries
-LIB_D_LUA=$(LIB_DIR)/$(LIB_N_LUA)$(DYN_LIB_EXT)
-LIB_D_IRR=lib/$(LIB_N_IRR)
-# Bullet cannot be built dynamically
-LIB_D_BCO=$(LIB_S_BCO)
-LIB_D_BDY=$(LIB_S_BDY)
-LIB_D_BLM=$(LIB_S_BLM)
-LIB_D_NNG=lib/libnng$(DYN_LIB_EXT)
-
-ifeq ($(UNAME),Windows)
- CLIENT_DLLS=Irrlicht libnng lua51
- SERVER_DLLS=libnng lua51
-endif
-ifeq ($(UNAME),Linux)
- CLIENT_DLLS=Irrlicht libnng luajit
- SERVER_DLLS=libnng luajit
-endif
-ifeq ($(DEBUG),true)
- LIB_OBJS = $(LIB_D_LUA) $(LIB_D_IRR) $(LIB_D_BCO) $(LIB_D_BDY) $(LIB_D_BLM) $(LIB_D_NNG)
- BINS+=$(CLIENT_DLLS:%=$(BIN_DIR)/$(CLIENTNAME)/bin/%$(DYN_LIB_EXT)) $(SERVER_DLLS:%=$(BIN_DIR)/$(SERVERNAME)/bin/%$(DYN_LIB_EXT))
-else
- LIB_OBJS = $(LIB_S_LUA) $(LIB_S_IRR) $(LIB_S_BCO) $(LIB_S_BDY) $(LIB_S_BLM) $(LIB_S_NNG)
-endif
-
-# Libraries
-#order matters!
-CLIENT_LIBS=-lBulletDynamics -lBulletCollision -lLinearMath -lIrrlicht -lnng
-SERVER_LIBS=-lBulletDynamics -lBulletCollision -lLinearMath -lnng
-#LIBS=-lBulletDynamics -lBulletCollision -lLinearMath -lIrrlicht -lnng
-ifeq ($(UNAME),Windows)
- CLIENT_LIBS+=-lOpenGL32
-else
- CLIENT_LIBS+=-lGL
-endif
-ifeq ($(DEBUG),true)
-ifeq ($(UNAME),Windows)
- CLIENT_LIBS+=-llua51
- SERVER_LIBS+=-llua51
-endif
-ifeq ($(UNAME),Linux)
- CLIENT_LIBS+=-lluajit
- SERVER_LIBS+=-lluajit
-endif
-else
- CLIENT_LIBS+=-lluajit
- SERVER_LIBS+=-lluajit
-endif
-
-#can't compile with -std=c++11 because irrlicht will complain
-#LDFLAGS+=$(LIBS)
-ifeq ($(DEBUG), true)
-
-else
- CXXFLAGS += -static $(INCLUDE_PATHS) -D_IRR_STATIC_LIB_ -DNNG_STATIC_LIB
-endif
-S_LDFLAGS= $(SERVER_LIBS)
-C_LDFLAGS= $(CLIENT_LIBS)
-ifeq ($(UNAME),Windows)
- C_LDFLAGS += -mwindows -lwinmm -lstdc++
- ifeq ($(DEBUG),true)
-
- else
- C_LDFLAGS += -lws2_32 -lmswsock -ladvapi32
- S_LDFLAGS += -lws2_32 -lmswsock -ladvapi32
- endif
-endif
-
-ifeq ($(DEBUG),true)
- ifeq ($(UNAME),Windows)
- C_LDFLAGS+=-Wl,-subsystem,console
- endif
-endif
-
-ifeq ($(DEBUG),true)
- CXXFLAGS+=-O0 -g -Wall -Werror
-else
- CXXFLAGS+=-O3
-endif
-
-FSYSTEM_FOLDERS = lua_api phys util lua_api/irr lua_api/phys lua_api/gui lua_api/scene lua_api/video
-CLIENT_BUILD_FOLDERS = $(FSYSTEM_FOLDERS:%=$(BUILD_DIR)/$(CLIENTNAME)/%)
-
-all : $(BINS)
- @echo "Done"
-
-# The shared stuff
-LAPI_S_PHYS = bhingeconstraint bphysbox bphysmodel bphysgeneric bcharactercontroller bghostobject bcollider
-LAPI_S_LOAD = load_phys load_net common stream load_common
-LAPI_PATHS_T = $(LAPI_S_PHYS:%=lua_api/phys/%) $(LAPI_S_LOAD:%=lua_api/%)
-SHARED_CLIENT_FILES = $(LAPI_PATHS_T) phys/physcommon util/hashmap util/tinyobj
-SHARED_CLIENT_OBJS = $(SHARED_CLIENT_FILES:%=$(BUILD_DIR)/$(CLIENTNAME)/%.o)
-
-# The client-side only stuff
-LAPI_C_GUI = iguibutton iguicheckbox iguielement iguiimage iguilabel iguiwindow iguieditbox iguicolorselector iguifiledialog iguispinbox iguitreeview iguicombobox
-LAPI_C_PHYS = cbphysbox cbphysmodel cbcharactercontroller
-LAPI_C_SCENE = icamera igeneric ilight imesh
-LAPI_C_VIDEO = iimage itexture smaterial
-LAPI_C_IO = ifilesystem
-LAPI_LOAD = load_gui load_scene load_game load_cphys load_video load_io
-LAPI_OBJS_T = $(LAPI_C_GUI:%=gui/%.o) $(LAPI_C_PHYS:%=phys/%.o) $(LAPI_C_SCENE:%=scene/%.o) $(LAPI_C_VIDEO:%=video/%.o) $(LAPI_C_IO:%=io/%.o)
-LAPI_OBJS = $(LAPI_OBJS_T:%=$(BUILD_DIR)/$(CLIENTNAME)/lua_api/%) $(LAPI_LOAD:%=$(BUILD_DIR)/$(CLIENTNAME)/lua_api/%.o)
-CLIENT_FILES = initdevice menuhandeler callbackhandeler
-CLIENT_SRCS = $(CLIENT_FILES:%=$(BUILD_DIR)/$(CLIENTNAME)/%.o) $(LAPI_OBJS)
-CLIENT_OBJS = $(BUILD_DIR)/$(CLIENTNAME)/main.o $(CLIENT_SRCS) $(SHARED_CLIENT_OBJS)
-
-#Compile the client
-$(BIN_DIR)/$(CLIENTNAME)/bin/$(EX_PRE)$(CLIENTNAME)$(EXE_EXT) : $(CLIENT_OBJS) $(LIB_OBJS)
- @echo "[CLIENT] Building binary $@"
- $(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(C_LDFLAGS) $(LIB_OBJS) # -Wl,--verbose
-
-# does not have .hpp associated
-$(BUILD_DIR)/$(CLIENTNAME)/main.o : $(SRC_DIR)/client/main.cpp
- @$(CXX) $(CXXFLAGS) -c -o $@ $^
-
-# does have the .hpp associated in src/client
-$(CLIENT_SRCS) : $(BUILD_DIR)/$(CLIENTNAME)/%.o : src/client/%.cpp $(SRC_DIR)/client/%.hpp $(LIB_OBJS)
- @echo "[CLIENT] CXX $<"
- @$(CXX) $(CXXFLAGS) -c -o $@ $<
-
-# does have the .hpp associated in src/shared
-$(SHARED_CLIENT_OBJS) : $(BUILD_DIR)/$(CLIENTNAME)/%.o : src/shared/%.cpp $(SRC_DIR)/shared/%.hpp
- @echo "[CLIENT] CXX $<"
- @$(CXX) $(CXXFLAGS) -c -o $@ $<
-
-#compile server
-SERVER_FILES = lua_api/load_game lua_api/load_io
-SERVER_OBJ=$(SERVER_FILES:%=$(BUILD_DIR)/$(SERVERNAME)/%.o)
-SHARED_SERVER_FILES= $(LAPI_PATHS_T) util/hashmap phys/physcommon util/tinyobj
-SHARED_SERVER_OBJS=$(SHARED_SERVER_FILES:%=$(BUILD_DIR)/$(SERVERNAME)/%.o)
-SERVER_OBJS = $(SERVER_OBJ) $(SHARED_SERVER_OBJS) $(BUILD_DIR)/$(SERVERNAME)/main.o
-
-$(BIN_DIR)/$(SERVERNAME)/bin/$(EX_PRE)$(SERVERNAME)$(EXE_EXT) : $(SERVER_OBJS) $(LIB_OBJS)
- @echo "[SERVER] Building binary $@"
- @$(CXX) $(CXXFLAGS) -o $@ $^ $(LDFLAGS) $(S_LDFLAGS)
-
-# Special, main does not have a .hpp associated with it
-$(BUILD_DIR)/$(SERVERNAME)/main.o : $(SRC_DIR)/server/main.cpp
- @echo "[SERVER] CXX $<"
- @$(CXX) $(CXXFLAGS) -c -o $@ $^
-
-$(SHARED_SERVER_OBJS) : $(BUILD_DIR)/$(SERVERNAME)/%.o : $(SRC_DIR)/shared/%.cpp $(SRC_DIR)/shared/%.hpp
- @echo "[SERVER] CXX $<"
- @$(CXX) $(CXXFLAGS) -c -o $@ $<
-
-$(SERVER_OBJ) : $(BUILD_DIR)/$(SERVERNAME)/%.o : $(SRC_DIR)/server/%.cpp $(SRC_DIR)/server/%.hpp
- @echo "[SERVER] CXX $<"
- @$(CXX) $(CXXFLAGS) -c -o $@ $<
-
-#compile libraries
-$(LIBLUA) : $(ILUADIR)/Makefile
- @echo "Could not find $(LIBLUA), rebuilding"
- cd $(ILUADIR) && $(MAKE) "BUILDMODE= static"
- $(CP) $(ILUADIR)/libluajit.a lib
-
-IRRMAKEFLAGS=
-IRRMADELIB=
-ifeq ($(UNAME), Windows)
- ifeq ($(DEBUG),true)
- IRRMAKEFLAGS=sharedlib_win32
- IRRMADELIB=$(LIRRDIR)/bin/Win32-gcc
- else
- IRRMAKEFLAGS=staticlib_win32
- IRRMADELIB=$(LIRRDIR)/lib/Win32-gcc
- endif
-else
- IRRMADELIB=$(LIRRDIR)/lib/Linux
-endif
-
-ifeq ($(DEBUG),true)
-else
- IRRMAKEFLAGS+=NDEBUG=1
-endif
-
-# Library - Irrlicht
-$(LIB_S_IRR) : $(IRRMADELIB)/libIrrlicht.a
- $(CP) $^ $@
-
-$(IRRMADELIB)/libIrrlicht.a : $(LIRRDIR)/source/Irrlicht/Makefile
- sed --in-place=OLD 's/ -ld3dx9d//' lib/irrlicht/source/Irrlicht/Makefile
- cd $(LIRRDIR)/source/Irrlicht && $(MAKE) $(IRRMAKEFLAGS)
-
-$(LIB_D_IRR) : $(IRRMADELIB)/$(LIB_N_IRR)
- @echo "Could not find $@, remaking..."
- $(CP) $^ $@
-
-$(BIN_DIR)/$(CLIENTNAME)/bin/Irrlicht$(DYN_LIB_EXT) : $(IRRMADELIB)/$(LIB_N_IRR)
- $(CP) $^ $@*
-
-$(IRRMADELIB)/$(LIB_N_IRR) : $(LIRRDIR)/source/Irrlicht/Makefile
- sed --in-place=OLD 's/ -ld3dx9d//' lib/irrlicht/source/Irrlicht/Makefile
- cd $(LIRRDIR)/source/Irrlicht && $(MAKE) $(IRRMAKEFLAGS)
-
-ifeq ($(UNAME),Windows)
- LUAJIT_ARGS:= TARGET_SYS=Windows
-else
- #LUAJIT_ARGS=
-endif
-
-# Library - Lua
-$(BIN_DIR)/$(CLIENTNAME)/bin/$(LIB_N_LUA)$(DYN_LIB_EXT) : $(LIB_D_LUA)
- $(CP) $^ $@
-
-$(BIN_DIR)/$(SERVERNAME)/bin/$(LIB_N_LUA)$(DYN_LIB_EXT) : $(LIB_D_LUA)
- $(CP) $^ $@
-
-$(LLUADIR)/src/libluajit$(STA_LIB_EXT) : $(LLUADIR)/src/Makefile
- cd $(LLUADIR)/src && $(MAKE) $(LUAJIT_ARGS) "BUILDMODE= static"
-
-$(LIB_S_LUA) : $(LLUADIR)/src/libluajit$(STA_LIB_EXT)
- $(CP) $^ $@
-
-$(LLUADIR)/src/lua51$(DYN_LIB_EXT) : $(LLUADIR)/src/Makefile
- cd $(LLUADIR)/src && $(MAKE) $(LUAJIT_ARGS) "BUILDMODE= dynamic"
-
-$(LIB_D_LUA) : $(LLUADIR)/src/$(LIB_N_LUA)$(DYN_LIB_EXT)
- $(CP) $^ $@
-
-# Library - Bullet
-$(LBULDIR)/lib/libBulletCollision.a : $(LBULDIR)/Makefile
- cd $(LBULDIR) && $(MAKE) BulletCollision
-
-$(LBULDIR)/lib/libBulletDynamics.a : $(LBULDIR)/Makefile
- cd $(LBULDIR) && $(MAKE) BulletDynamics
-
-$(LBULDIR)/lib/libLinearMath.a : $(LBULDIR)/Makefile
- cd $(LBULDIR) && $(MAKE) LinearMath
-
-ifeq ($(UNAME),Windows)
-$(LIB_D_BCO) : $(LBULDIR)/lib/libBulletCollision.a
- $(CP) $^ $@
-
-$(LIB_D_BDY) : $(LBULDIR)/lib/libBulletDynamics.a
- $(CP) $^ $@
-
-$(LIB_D_BLM) : $(LBULDIR)/lib/libLinearMath.a
- $(CP) $^ $@
-endif
-ifeq ($(UNAME),Linux)
-$(LIB_D_BCO) : $(LBULDIR)/src/BulletCollision/libBulletCollision.a
- $(CP) $^ $@
-
-$(LIB_D_BDY) : $(LBULDIR)/src/BulletDynamics/libBulletDynamics.a
- $(CP) $^ $@
-
-$(LIB_D_BLM) : $(LBULDIR)/src/LinearMath/libLinearMath.a
- $(CP) $^ $@
-endif
-
-$(LBULDIR)/Makefile : $(LBULDIR)/CMakeLists.txt
- cd $(LBULDIR) && cmake $(CMAKE_FLAGS) -DBUILD_EXTRAS=off -DBUILD_DEMOS=off
-
-# Library - NNG
-NNGFLAGS=
-$(BIN_DIR)/$(CLIENTNAME)/bin/libnng$(DYN_LIB_EXT) : $(LIB_D_NNG)
- $(CP) $^ $@
-
-$(BIN_DIR)/$(SERVERNAME)/bin/libnng$(DYN_LIB_EXT) : $(LIB_D_NNG)
- $(CP) $^ $@
-
-$(LNNGDIR)/dynamic/Makefile : $(LNNGDIR)/CMakeLists.txt
- cd $(LNNGDIR)/dynamic && cmake $(CMAKE_FLAGS) -DBUILD_SHARED_LIBS="TRUE" ../
-
-$(LIB_S_NNG) : $(LNNGDIR)/static/libnng$(STA_LIB_EXT)
- $(CP) $< $@
-
-$(LIB_D_NNG) : $(LNNGDIR)/dynamic/libnng$(DYN_LIB_EXT)
- $(CP) $< $@
-
-$(LNNGDIR)/static/libnng$(STA_LIB_EXT) : $(LNNGDIR)/static/Makefile
- cd $(LNNGDIR)/static && $(MAKE) nng
- ln -s $(LNNGDIR)/src $(LNNGDIR)/include/nng
-
-$(LNNGDIR)/dynamic/libnng$(DYN_LIB_EXT) : $(LNNGDIR)/dynamic/Makefile
- cd $(LNNGDIR)/dynamic && $(MAKE) nng
- ln -s $(LNNGDIR)/src $(LNNGDIR)/include/nng
-
-$(LNNGDIR)/Makefile : $(LNNGDIR)/CMakeLists.txt
- @echo "LIB_OBJS were $(LIB_OBJS)"
- cd $(LNNGDIR) && cmake $(CMAKE_FLAGS) $(NNGCMAKEFLAGS)
-
-TEST_BIN_NAMES=brokengine_client.exe Irrlicht.dll libnanomsg.dll libnng.dll lua51.dll
-TEST_BINS=$(TEST_BIN_NAMES:%=test/bin/%)
-
-#compile & run tests
-test: $(TEST_BINS)
- @$(ECHO) "Running busted tests"
- @./busted busted.spec
-
-$(TEST_BINS) : test/bin/% : bin/client/bin/%
- $(CP) $^ $@
-
-$(TEST_PATH)test_stream : $(TEST_SRC)test_streams.cpp $(SHARED_SRC)/lua_api/stream.cpp $(SHARED_SRC)/lua_api/stream.hpp
- @$(CC) $(CFLAGS) -o $(TEST_PATH)test_stream $(TEST_SRC)test_streams.cpp $(SHARED_SRC)/lua_api/stream.cpp $(SHARED_SRC)/lua_api/stream.hpp
-
-$(TEST_PATH)test_phys : $(TEST_SRC)test_phys.cpp
- $(CC) $(CFLAGS) -o $(TEST_PATH)test_phys $(TEST_SRC)test_phys.cpp $(SLIBS)
-#end tests
-
-cleantest :
- echo $(BUILDS:%=%/*.o)
-
-clean :
- $(RM) $(CLIENT_OBJS)
- $(RM) $(SERVER_OBJS)
- $(RM) $(BINS)