You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
206 lines
5.2 KiB
206 lines
5.2 KiB
############################################# |
|
# Makefile.linux - linux makefile |
|
# Copyright (C) 2017 mittorn |
|
|
|
# This program is free software: you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation, either version 3 of the License, or |
|
# (at your option) any later version. |
|
|
|
# This program is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
# GNU General Public License for more details. |
|
############################################## |
|
|
|
# Default options - optimized to debug on local machine |
|
CC ?= gcc |
|
CXX ?= g++ |
|
CFLAGS ?= -g -O1 -fsigned-char -Wall -Wextra -Wsign-compare -Wno-unknown-pragmas -Wno-missing-field-initializers -Wno-unused-parameter -Wno-unused-but-set-variable |
|
LDFLAGS = |
|
LBITS := $(shell getconf LONG_BIT) |
|
DEPS := |
|
|
|
XASH_COMMIT := $(firstword $(shell git rev-parse --short=6 HEAD) unknown) |
|
|
|
ifeq ($(XASH_COMMIT),unknown) |
|
$(warning You seems to build xash3d without git) |
|
$(warning Please use git if you are going to publish your build) |
|
endif |
|
|
|
# Pass 64BIT=1 to make arguments to allow amd64 builds |
|
ifneq ($(64BIT),1) |
|
ifeq ($(LBITS),64) |
|
LDFLAGS += -m32 |
|
CFLAGS += -m32 |
|
endif |
|
endif |
|
|
|
TOPDIR = $(PWD)/.. |
|
INCLUDES := |
|
XASH_SINGLE_BINARY ?= 1 |
|
INSTALL_DIR ?= ./install/ |
|
ifeq ($(NANOGL),1) |
|
INCLUDES += -Inanogl -Inanogl/GL |
|
endif |
|
INCLUDES += -I/usr/include/SDL2 -Icommon -I../common -I. -I../pm_shared -Iclient -Iserver -Iclient/vgui -Icommon/sdl |
|
|
|
############################# |
|
# Preprocessor defines: |
|
############################# |
|
DEFINES = |
|
|
|
# Specify commit hash in version string |
|
DEFINES += -DXASH_BUILD_COMMIT=\"$(XASH_COMMIT)\" |
|
|
|
|
|
# Only SDL backend exists on linux |
|
ifeq ($(XASH_DEDICATED),1) |
|
DEFINES += -DXASH_DEDICATED |
|
else |
|
DEFINES += -DXASH_SDL |
|
LIBS += -lSDL2 |
|
endif |
|
|
|
############################################# |
|
# GL/GLES translators. |
|
# You need clone it to engine folder to use |
|
# Only one translator should be enabled |
|
############################################# |
|
ifeq ($(NANOGL),1) |
|
DEFINES += -DXASH_NANOGL -D__MULTITEXTURE_SUPPORT__ -DEGL_LIB=\"libEGL.so\" |
|
endif |
|
|
|
ifeq ($(WES),1) |
|
DEFINES += -DXASH_WES -D__MULTITEXTURE_SUPPORT__ -DEGL_LIB=\"libEGL.so\" |
|
endif |
|
|
|
ifeq ($(REGAL),1) |
|
DEFINES += -DXASH_REGAL -D__MULTITEXTURE_SUPPORT__ -DEGL_LIB=\"regal/lib/linux-32/libRegal.so\" |
|
LIBS += regal/lib/linux-32/libRegal.so |
|
endif |
|
|
|
# Some libc implementations cannot use libdl in static builds, so disable it by default |
|
ifeq ($(XASH_STATIC),1) |
|
|
|
ifneq ($(XASH_STATIC_LIBDL),1) |
|
DEFINES += -DNO_LIBDL |
|
endif |
|
|
|
XASH_SINGLE_BINARY := 1 |
|
endif |
|
|
|
ifneq ($(XASH_STATIC),1) |
|
LIBS += -ldl |
|
endif |
|
|
|
ifeq ($(XASH_STATIC_LIBDL),1) |
|
LIBS += -ldl |
|
endif |
|
|
|
LIBS += -lm -pthread |
|
|
|
|
|
ifeq ($(XASH_SINGLE_BINARY),1) |
|
DEFINES += -DSINGLE_BINARY |
|
endif |
|
|
|
# Collect files |
|
SRCS_CPP = |
|
SRCS = $(wildcard server/*.c) $(wildcard client/vgui/*.c) $(wildcard client/avi/*.c) $(wildcard common/*.c) $(wildcard common/imagelib/*.c) $(wildcard common/soundlib/*.c) $(wildcard common/soundlib/libmpg/*.c) |
|
ifneq ($(XASH_DEDICATED),1) |
|
SRCS += $(wildcard client/*.c) |
|
SRCS += $(wildcard platform/sdl/*.c) |
|
ifeq ($(WES),1) |
|
SRCS += $(wildcard gl-wes-v2/src/*.c) |
|
endif |
|
ifeq ($(NANOGL),1) |
|
SRCS_CPP += $(wildcard nanogl/*.cpp) |
|
endif |
|
endif |
|
OBJS = $(patsubst %.c,obj/%.o,$(SRCS)) |
|
OBJS_CPP = $(patsubst %.cpp,obj/%.o,$(SRCS_CPP)) |
|
|
|
################################# |
|
# Windows DLL loader |
|
# Should be enabled only on i386 builds |
|
################################# |
|
LOADER := |
|
ifeq ($(XASH_DLL_LOADER),1) |
|
DEFINES += -DDLL_LOADER |
|
ifeq ($(XASH_SINGLE_BINARY),1) |
|
LOADER = libloader.a |
|
else |
|
LOADER = libloader.so |
|
endif |
|
DEPS += $(LOADER) |
|
LIBS += $(LOADER) |
|
endif |
|
|
|
# Rules for binaries |
|
ifeq ($(XASH_SINGLE_BINARY),0) |
|
BINARIES = libxash.so |
|
libxash.so : $(OBJS) $(OBJS_CPP) $(DEPS) |
|
$(CC) -fvisibility=hidden -o libxash.so $(LDFLAGS) -shared $(OBJS) $(OBJS_CPP) $(LIBS) |
|
|
|
else |
|
BINARIES = xash |
|
xash: $(OBJS) $(OBJS_CPP) $(DEPS) |
|
ifeq ($(XASH_STATIC),1) |
|
$(CC) -o xash -static $(LDFLAGS) $(OBJS) $(OBJS_CPP) $(LIBS) |
|
else |
|
$(CC) -o xash -fvisibility=hidden $(LDFLAGS) $(OBJS) $(OBJS_CPP) $(LIBS) |
|
endif |
|
|
|
endif |
|
|
|
ifeq ($(XASH_DLL_LOADER),1) |
|
$(LOADER): |
|
$(MAKE) -f ../loader/Makefile.linux -C ../loader $(LOADER) |
|
cp ../loader/$(LOADER) . |
|
endif |
|
|
|
# Create dirs for object files |
|
DIRS := obj obj/server obj/client/avi obj/client/vgui obj/common/sdl obj/common/imagelib obj/common/soundlib/libmpg obj/platform/sdl obj/nanogl |
|
$(OBJS): | $(DIRS) |
|
|
|
$(DIRS) : |
|
mkdir -p $(DIRS) |
|
|
|
# Object rules |
|
obj/%.o : %.c |
|
$(CC) $(CFLAGS) $(INCLUDES) $(DEFINES) -c "$<" -o "$@" -Wno-unused-result -fvisibility=hidden |
|
|
|
obj/%.o : %.cpp |
|
$(CXX) $(CFLAGS) $(INCLUDES) $(DEFINES) -c "$<" -o "$@" |
|
|
|
|
|
default: $(BINARIES) |
|
|
|
.PHONY: depend clean list install |
|
|
|
clean: |
|
$(RM) $(OBJS) $(OBJS_CPP) $(BINARIES) ../loader/*.o ../loader/*.a ../loader/*.so $(LOADER) |
|
|
|
list: |
|
@echo Sources: |
|
@echo $(SRCS) |
|
@echo C++ Sources: |
|
@echo $(SRCS_CPP) |
|
@echo Objects: |
|
@echo $(OBJS) $(OBJS_CPP) |
|
@echo Dirs: |
|
@echo $(DIRS) |
|
@echo Dependencies: |
|
@echo $(DEPS) |
|
|
|
# Simple install rule |
|
install: $(BINARIES) |
|
mkdir -p $(INSTALL_DIR) |
|
|
|
ifeq ($(XASH_SINGLE_BINARY),1) |
|
cp xash $(INSTALL_DIR)/xash_bin |
|
else |
|
cp libxash.so $(INSTALL_DIR)/ |
|
cp libloader.so $(INSTALL_DIR)/ |
|
endif
|
|
|