yapb-noob-edition/project/makefile

91 lines
2.3 KiB
Makefile
Raw Normal View History

2014-07-30 14:17:46 +04:00
#
# Yet Another POD-Bot, based on PODBot by Markus Klinge ("CountFloyd").
# Copyright (c) YaPB Development Team.
2014-07-30 14:17:46 +04:00
#
# This software is licensed under the BSD-style license.
# Additional exceptions apply. For full license details, see LICENSE.txt or visit:
2016-09-13 22:40:06 +03:00
# https://yapb.jeefo.net/license
2014-07-30 14:17:46 +04:00
#
2015-06-06 17:32:59 +03:00
PROJECT = yapb
SOURCES = ../source
OBJECTS = $(wildcard $(SOURCES)/*.cpp)
COMPILER_FLAGS = -std=c++11 -m32 -Wall -Werror -Wextra -fno-exceptions -fno-rtti
LINKER_FLAGS = -m32 -lm -ldl
2014-07-30 14:17:46 +04:00
ifeq "$(SSE_VERSION)" ""
COMPILER_SSE_VERSION = 2
else
COMPILER_SSE_VERSION = $(SSE_VERSION)
endif
2014-07-30 14:17:46 +04:00
ifeq "$(DEBUG)" "true"
COMPILER_FLAGS += -D_DEBUG -DDEBUG -g3
BINARY_DIR = debug
2015-06-06 17:32:59 +03:00
else
2018-07-30 23:59:31 +03:00
COMPILER_FLAGS += -DNDEBUG -pipe -O2 -msse$(COMPILER_SSE_VERSION) -funroll-loops -fomit-frame-pointer -fno-stack-protector -fvisibility=hidden -fvisibility-inlines-hidden
BINARY_DIR = release
2015-06-06 17:32:59 +03:00
endif
INCLUDE = -I../include -I../include/engine
COMPILER = $(CC)
2015-06-06 17:32:59 +03:00
ifeq "$(shell uname -s)" "Darwin"
OSX = true
2014-07-30 14:17:46 +04:00
endif
ifeq "$(OSX)" "true"
LIBRARY_EXT = dylib
COMPILER_FLAGS += -DOSX -D_OSX -DPOSIX
LINKER_FLAGS += -dynamiclib -lstdc++ -mmacosx-version-min=10.12 -arch i386
else
LIBRARY_EXT = so
COMPILER_FLAGS += -DLINUX -D_LINUX -DPOSIX
LINKER_FLAGS += -shared -lsupc++
2015-06-06 17:32:59 +03:00
endif
BINARY_OUTPUT = $(PROJECT).$(LIBRARY_EXT)
2015-06-06 17:32:59 +03:00
ifeq ($(findstring clang,$(COMPILER)),clang)
ifeq "$(OSX)" "false"
LINKER_FLAGS += -lgcc_eh
endif
else ifeq ($(findstring gcc,$(COMPILER)),gcc)
ifneq "$(OSX)" "false"
LINKER_FLAGS += -static-libgcc
COMPILER_FLAGS += -funroll-all-loops
endif
else ifeq ($(findstring icpc,$(COMPILER)),icpc)
COMPILER_FLAGS += -funroll-all-loops -no-prec-div -no-inline-min-size -no-inline-max-size -wd11076 -wd11074
LINKER_FLAGS += -static-intel -no-intel-extensions
else
$(error Compiler unrecognized. Specify CC.)
2015-06-06 17:32:59 +03:00
endif
OBJECTS_BIN := $(OBJECTS:%.cpp=$(BINARY_DIR)/%.o)
2015-06-06 17:32:59 +03:00
$(BINARY_DIR)/%.o: %.cpp
$(COMPILER) $(INCLUDE) $(COMPILER_FLAGS) -o $(subst $(SOURCES)/,,$@) -c $<
2015-06-06 17:32:59 +03:00
compile:
mkdir -p $(BINARY_DIR)
$(MAKE) $(PROJECT)
2015-06-06 17:32:59 +03:00
$(PROJECT): $(OBJECTS_BIN)
$(COMPILER) $(INCLUDE) $(subst $(SOURCES)/,,$(OBJECTS_BIN)) $(LINKER_FLAGS) -o $(BINARY_DIR)/$(BINARY_OUTPUT)
release:
$(MAKE) compile DEBUG=false
2015-06-06 17:32:59 +03:00
debug:
$(MAKE) compile DEBUG=true
2015-06-06 17:32:59 +03:00
all:
$(MAKE) compile DEBUG=true
$(MAKE) compile DEBUG=false
2014-07-30 14:17:46 +04:00
clean:
rm -rf release/*.o
rm -rf release/$(BINARY_OUTPUT)
rm -rf debug/*.o
2018-07-30 23:59:31 +03:00
rm -rf debug/$(BINARY_OUTPUT)