Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'build_files/make/nan_compile.mk')
-rw-r--r--build_files/make/nan_compile.mk472
1 files changed, 472 insertions, 0 deletions
diff --git a/build_files/make/nan_compile.mk b/build_files/make/nan_compile.mk
new file mode 100644
index 00000000000..36c315a8e11
--- /dev/null
+++ b/build_files/make/nan_compile.mk
@@ -0,0 +1,472 @@
+# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*-
+# vim: tabstop=8
+#
+# $Id$
+#
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# 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 2
+# 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.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+# All rights reserved.
+#
+# The Original Code is: all of this file.
+#
+# Contributor(s): GSR, Stefan Gartner
+#
+# ***** END GPL LICENSE BLOCK *****
+#
+# Compile and archive
+
+include nan_definitions.mk
+
+CPPFLAGS ?= $(NAN_CPPFLAGS)
+
+# common parts ---------------------------------------------------
+
+# Uncomment next lines to enable integrated game engine
+ifneq ($(NAN_NO_KETSJI), true)
+ CFLAGS += -DGAMEBLENDER=1
+ ifeq ($(NAN_USE_BULLET), true)
+ CFLAGS += -DUSE_BULLET
+ CCFLAGS += -DUSE_BULLET
+ endif
+else
+ CPPFLAGS += -DNO_KETSJI
+endif
+
+ifeq ($(BF_PROFILE), true)
+ CFLAGS += -pg
+ CCFLAGS += -pg
+endif
+
+ifeq ($(WITH_BF_OPENMP), true)
+ CFLAGS += -fopenmp
+ CCFLAGS += -fopenmp
+endif
+
+ifdef NAN_DEBUG
+ CFLAGS += $(NAN_DEBUG)
+ CCFLAGS += $(NAN_DEBUG)
+endif
+
+REL_CFLAGS += -DNDEBUG
+REL_CCFLAGS += -DNDEBUG
+DBG_CFLAGS += -g
+DBG_CCFLAGS += -g
+
+# OS dependent parts ---------------------------------------------------
+
+ifeq ($(OS),darwin)
+ CC ?= gcc
+ CCC ?= g++
+ ifeq ($(MACOSX_DEPLOYMENT_TARGET), 10.4)
+ CC = gcc-4.0
+ CCC = g++-4.0
+ else
+ ifeq ($(MACOSX_DEPLOYMENT_TARGET), 10.5)
+ CC = gcc-4.2
+ CCC = g++-4.2
+ endif
+ endif
+ ifeq ($(CPU),powerpc)
+ CFLAGS += -pipe -fPIC -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing
+ CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+ else
+ CFLAGS += -pipe -fPIC -funsigned-char
+ CCFLAGS += -pipe -fPIC -funsigned-char
+ endif
+
+
+ CFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS)
+ CCFLAGS += -arch $(MACOSX_ARCHITECTURE) #-isysroot $(MACOSX_SDK) -mmacosx-version-min=$(MACOSX_MIN_VERS)
+
+ ifeq ($(MACOSX_ARCHITECTURE), $(findstring $(MACOSX_ARCHITECTURE), "i386 x86_64"))
+ REL_CFLAGS += -O2 -ftree-vectorize -msse -msse2 -msse3
+ REL_CCFLAGS += -O2 -ftree-vectorize -msse -msse2 -msse3
+ else
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+ endif
+
+ CPPFLAGS += -D_THREAD_SAFE
+
+ ifeq ($(WITH_COCOA), true)
+ CPPFLAGS += -DGHOST_COCOA
+ endif
+ ifeq ($(USE_QTKIT), true)
+ CPPFLAGS += -DUSE_QTKIT
+ endif
+
+ NAN_DEPEND = true
+ OPENGL_HEADERS = /System/Library/Frameworks/OpenGL.framework
+ AR = ar
+ ARFLAGS = ruv
+ RANLIB = ranlib
+ ARFLAGSQUIET = ru
+endif
+
+ifeq ($(OS),freebsd)
+ CC ?= gcc
+ CCC ?= g++
+ JAVAC = javac
+ JAVAH = javah
+ CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+ CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+ CPPFLAGS += -D_THREAD_SAFE
+ NAN_DEPEND = true
+ OPENGL_HEADERS = /usr/X11R6/include
+ JAVA_HEADERS = /usr/local/jdk1.3.1/include
+ JAVA_SYSTEM_HEADERS = /usr/local/jdk1.3.1/include/freebsd
+ AR = ar
+ ARFLAGS = ruv
+ ARFLAGSQUIET = ru
+endif
+
+ifeq ($(OS),irix)
+ ifeq ($(IRIX_USE_GCC),true)
+ CC ?= gcc
+ CCC ?= g++
+ CFLAGS += -fPIC -funsigned-char -fno-strict-aliasing -mabi=n32 -mips4
+ CCFLAGS += -fPIC -fpermissive -funsigned-char -fno-strict-aliasing -mabi=n32 -mips4
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+ DBG_CFLAGS += -g3 -gdwarf-2 -ggdb
+ DBG_CCFLAGS += -g3 -gdwarf-2 -ggdb
+ else
+ CC ?= cc
+ CCC ?= CC
+ CFLAGS += -n32 -mips3 -Xcpluscomm
+ CCFLAGS += -n32 -mips3 -Xcpluscomm -LANG:std
+ ifdef MIPS73_ISOHEADERS
+ CCFLAGS += -LANG:libc_in_namespace_std=off -I$(MIPS73_ISOHEADERS)
+ else
+ CCFLAGS += -LANG:libc_in_namespace_std=off
+ endif
+ REL_CFLAGS += -n32 -mips3 -O2 -OPT:Olimit=0
+ REL_CCFLAGS += -n32 -mips3 -O2 -OPT:Olimit=0
+ endif
+ OPENGL_HEADERS = /usr/include
+ NAN_DEPEND = true
+ AR = CC
+ ARFLAGS = -ar -o
+ ARFLAGSQUIET = -ar -o
+endif
+
+ifeq ($(OS),linux)
+ CC ?= gcc
+ CCC ?= g++
+# CFLAGS += -pipe
+# CCFLAGS += -pipe
+ CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+ CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+ NAN_DEPEND = true
+ ifeq ($(CPU),alpha)
+ CFLAGS += -mieee
+ endif
+ OPENGL_HEADERS = /usr/X11R6/include
+ AR = ar
+ ARFLAGS = ruv
+ ARFLAGSQUIET = ru
+endif
+
+ifeq ($(OS),openbsd)
+ CC ?= gcc
+ CCC ?= g++
+ CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+ CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+ NAN_DEPEND = true
+ CPPFLAGS += -D__FreeBSD__
+ OPENGL_HEADERS = /usr/X11R6/include
+ AR = ar
+ ARFLAGS = ruv
+ ARFLAGSQUIET = ru
+endif
+
+ifeq ($(OS),solaris)
+ # Adding gcc flag to $CC is not good, however if its not there makesdna wont build - Campbell
+ ifeq (x86_64, $(findstring x86_64, $(CPU)))
+ CC ?= gcc -m64
+ CCC ?= g++ -m64
+ else
+ CC ?= gcc
+ CCC ?= g++
+ #CC ?= cc
+ #CCC ?= CC
+ endif
+
+ JAVAC = javac
+ JAVAH = javah
+ CFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+ CCFLAGS += -pipe -fPIC -funsigned-char -fno-strict-aliasing
+# CFLAGS += "-fast -xdepend -xarch=v8plus -xO3 -xlibmil -KPIC -DPIC -xchar=unsigned"
+# CCFLAGS += "-fast -xdepend -xarch=v8plus -xO3 -xlibmil -xlibmopt -features=tmplife -norunpath -KPIC -DPIC -xchar=unsigned"
+
+ # Note, you might still want to compile a 32 bit binary if you have a 64bit system. if so remove the following lines
+# ifeq ($(findstring 64,$(CPU)), 64)
+# CFLAGS += -m64
+# CCFLAGS += -m64
+# endif
+
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+
+ NAN_DEPEND = true
+# ifeq ($(CPU),sparc)
+ ifeq ($(findstring sparc,$(CPU)), sparc)
+ OPENGL_HEADERS = /usr/openwin/share/include
+ CPPFLAGS += -DSUN_OGL_NO_VERTEX_MACROS
+ JAVA_HEADERS = /usr/java/include
+ JAVA_SYSTEM_HEADERS = /usr/java/include/solaris
+ else
+ # OPENGL_HEADERS = /usr/X11/include/mesa
+ OPENGL_HEADERS = /usr/X11/include/
+ endif
+ AR = ar
+ ARFLAGS = ruv
+ ARFLAGSQUIET = ru
+endif
+
+ifeq ($(OS),windows)
+ ifeq ($(FREE_WINDOWS),true)
+ CC ?= gcc
+ CCC ?= g++
+ CFLAGS += -pipe -mno-cygwin -mwindows -funsigned-char -fno-strict-aliasing
+ CCFLAGS += -pipe -mno-cygwin -mwindows -funsigned-char -fno-strict-aliasing
+ CPPFLAGS += -DFREE_WINDOWS
+ REL_CFLAGS += -O2
+ REL_CCFLAGS += -O2
+ NAN_DEPEND = true
+ #OPENGL_HEADERS = /usr/include/w32api
+ OPENGL_HEADERS = ./
+ AR = ar
+ ARFLAGS = ruv
+ ARFLAGSQUIET = ru
+ WINRC = $(wildcard *.rc)
+ RANLIB = ranlib
+ else
+ CC ?= $(SRCHOME)/tools/cygwin/cl_wrapper.pl
+ CCC ?= $(SRCHOME)/tools/cygwin/cl_wrapper.pl
+ JAVAC = $(SRCHOME)/tools/cygwin/java_wrapper.pl -c
+ JAVAH = $(SRCHOME)/tools/cygwin/java_wrapper.pl -h
+ REL_CFLAGS += /O2
+ REL_CCFLAGS += /O2 -GX
+ DBG_CFLAGS += /Fd$(DIR)/debug/
+ DBG_CCFLAGS += /Fd$(DIR)/debug/
+ CFLAGS += /MT
+ CCFLAGS += /MT
+ NAN_DEPEND = true
+ OPENGL_HEADERS = .
+ CPPFLAGS += -DWIN32 -D_WIN32 -D__WIN32
+ CPPFLAGS += -D_M_IX86
+ CPPFLAGS += -I"/cygdrive/c/Program Files/Microsoft Visual Studio/VC98/include"
+ JAVA_HEADERS = /cygdrive/c/j2sdk1.4.0-beta3/include
+ JAVA_SYSTEM_HEADERS = /cygdrive/c/j2sdk1.4.0-beta3/include/win32
+ CPP = $(SRCHOME)/tools/cygwin/cl_wrapper.pl
+ AR = ar
+ ARFLAGS = ruv
+ ARFLAGSQUIET = ru
+ WINRC = $(wildcard *.rc)
+ endif
+endif
+
+ifeq (debug, $(findstring debug, $(MAKECMDGOALS)))
+ export DEBUG_DIR=debug/
+endif
+
+ifneq (x$(DEBUG_DIR), x)
+ CFLAGS +=$(DBG_CFLAGS)
+ CCFLAGS+=$(DBG_CCFLAGS)
+else
+ CFLAGS +=$(REL_CFLAGS)
+ CCFLAGS+=$(REL_CCFLAGS)
+endif
+
+# Note: include nan_warn's LEVEL_*_WARNINGS after CC/OS have been set.
+include nan_warn.mk
+
+# compile rules
+
+default: all
+
+$(DIR)/$(DEBUG_DIR)%.o: %.c
+ ifdef NAN_DEPEND
+ @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \
+ | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \
+ > $(DIR)/$(DEBUG_DIR)$*.d; \
+ [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d
+ endif
+ ifdef NAN_QUIET
+ @echo " -- $< -- "
+ @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+ else
+ $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+ endif
+
+$(DIR)/$(DEBUG_DIR)%.o: %.cpp
+ ifdef NAN_DEPEND
+ @set -e; $(CCC) -M $(CPPFLAGS) $< 2>/dev/null \
+ | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \
+ > $(DIR)/$(DEBUG_DIR)$*.d; \
+ [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d
+ endif
+ ifdef NAN_QUIET
+ @echo " -- $< -- "
+ @$(CCC) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@
+ else
+ $(CCC) -c $(CCFLAGS) $(CPPFLAGS) $< -o $@
+ endif
+
+$(DIR)/$(DEBUG_DIR)%.o: %.mm
+ ifdef NAN_DEPEND
+ @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \
+ | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \
+ > $(DIR)/$(DEBUG_DIR)$*.d; \
+ [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d
+ endif
+ ifdef NAN_QUIET
+ @echo " -- $< -- "
+ @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+ else
+ $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+ endif
+
+$(DIR)/$(DEBUG_DIR)%.o: %.m
+ ifdef NAN_DEPEND
+ @set -e; $(CC) -M $(CPPFLAGS) $< 2>/dev/null \
+ | sed 's@\($*\)\.o[ :]*@$(DIR)/$(DEBUG_DIR)\1.o : @g' \
+ > $(DIR)/$(DEBUG_DIR)$*.d; \
+ [ -s $(DIR)/$(DEBUG_DIR)$*.d ] || $(RM) $(DIR)/$(DEBUG_DIR)$*.d
+ endif
+ ifdef NAN_QUIET
+ @echo " -- $< -- "
+ @$(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+ else
+ $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
+ endif
+
+
+$(DIR)/$(DEBUG_DIR)%.res: %.rc
+ifeq ($(FREE_WINDOWS),true)
+ windres $< -O coff -o $@
+else
+ $(SRCHOME)/tools/cygwin/cl_wrapper.pl - rc /fo$@ $<
+endif
+
+$(DIR)/$(DEBUG_DIR)%.class: %.java
+ ifdef JARS
+ $(JAVAC) -verbose -g -deprecation -sourcepath . -classpath "$(JARS)" -d $(DIR)/$(DEBUG_DIR) $<
+ else
+ $(JAVAC) -verbose -g -deprecation -d $(DIR)/$(DEBUG_DIR) $<
+ endif
+
+$(DIR)/$(DEBUG_DIR)%.h: $(DIR)/$(DEBUG_DIR)%.class
+ $(JAVAH) -classpath $(DIR)/$(DEBUG_DIR) -d $(DIR)/$(DEBUG_DIR) -jni $*
+
+%.h:
+ @echo "WARNING: Fake header creation rule used, dependencies will be remade"
+
+CSRCS ?= $(wildcard *.c)
+CCSRCS ?= $(wildcard *.cpp)
+JSRCS ?= $(wildcard *.java)
+
+ifdef NAN_DEPEND
+-include $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.d) $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.d) $(OCCSRCS:$.mm=$(DIR)/$(DEBUG_DIR)%.d) $(OCSRCS:$.m=$(DIR)/$(DEBUG_DIR)%.d)
+endif
+
+OBJS_AR := $(OBJS)
+OBJS_AR += $(CSRCS:%.c=%.o)
+OBJS_AR += $(CCSRCS:%.cpp=%.o)
+OBJS_AR += $(OCCSRCS:%.mm=%.o)
+OBJS_AR += $(OCSRCS:%.m=%.o)
+OBJS_AR += $(WINRC:%.rc=%.res)
+
+OBJS += $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.o)
+OBJS += $(CCSRCS:%.cpp=$(DIR)/$(DEBUG_DIR)%.o)
+OBJS += $(OCCSRCS:%.mm=$(DIR)/$(DEBUG_DIR)%.o)
+OBJS += $(OCSRCS:%.m=$(DIR)/$(DEBUG_DIR)%.o)
+OBJS += $(WINRC:%.rc=$(DIR)/$(DEBUG_DIR)%.res)
+
+JCLASS += $(JSRCS:%.java=$(DIR)/$(DEBUG_DIR)%.class)
+
+LIB_a = $(DIR)/$(DEBUG_DIR)lib$(LIBNAME).a
+
+$(LIB_a): $(OBJS)
+ # $OBJS can be empty except for some spaces
+ ifneq (x, x$(strip $(OBJS)))
+ ifdef NAN_PARANOID
+ @$(RM) $(LIB_a)
+ ifdef NAN_QUIET
+ @echo " -- lib: lib$(LIBNAME).a -- "
+ @cd $(DIR)/$(DEBUG_DIR); $(AR) $(ARFLAGSQUIET) $@ $(OBJS_AR)
+ else
+ cd $(DIR)/$(DEBUG_DIR); $(AR) $(ARFLAGS) $@ $(OBJS_AR)
+ endif
+ else
+ ifdef NAN_QUIET
+ @echo " -- lib: lib$(LIBNAME).a -- "
+ @$(AR) $(ARFLAGSQUIET) $@ $?
+ else
+ $(AR) $(ARFLAGS) $@ $?
+ endif
+ endif
+ ifdef RANLIB
+ $(RANLIB) $@
+ endif
+ endif
+
+ALLTARGETS ?= $(LIB_a)
+
+all debug :: makedir $(ALLTARGETS)
+
+lib: $(LIB_a)
+
+creator: $(OBJS)
+ @echo "====> make creator subtarget in `pwd | sed 's/^.*develop\///'`"
+ @$(MAKE) makedir DIR=$(DIR)/$(DEBUG_DIR)cre
+ @$(MAKE) lib CSRCS="$(CRE_CSRCS)" LIBNAME=$(LIBNAME)$@
+
+publisher: $(OBJS)
+ @echo "====> make publisher subtarget in `pwd | sed 's/^.*develop\///'`"
+ @$(MAKE) makedir DIR=$(DIR)/$(DEBUG_DIR)pub
+ @$(MAKE) lib CSRCS="$(PUB_CSRCS)" LIBNAME=$(LIBNAME)$@
+
+player: $(OBJS)
+ @echo "====> make player subtarget in `pwd | sed 's/^.*develop\///'`"
+ @$(MAKE) makedir DIR=$(DIR)/player/$(DEBUG_DIR)
+ @$(MAKE) lib CSRCS="$(SAP_CSRCS)" LIBNAME=$(LIBNAME)$@
+
+clean:: optclean debugclean
+
+optclean::
+ @-[ ! -d $(DIR) ] || ( cd $(DIR) && \
+ $(RM) *.o *.a *.d *.res ii_files/*.ii *.class *.h )
+
+debugclean::
+ @-[ ! -d $(DIR)/debug ] || ( cd $(DIR)/debug && \
+ $(RM) *.o *.a *.d *.res ii_files/*.ii *.class *.h )
+
+.PHONY: makedir
+makedir::
+ @# don't use mkdir -p. Cygwin will try to make network paths and fail
+ @[ -d $(DIR) ] || mkdir $(DIR)
+ @[ -d $(DIR)/debug ] || mkdir $(DIR)/debug
+