411 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
			
		
		
	
	
			411 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Makefile
		
	
	
	
	
	
#
 | 
						|
# $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., 59 Temple Place - Suite 330, Boston, MA  02111-1307, 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): none yet.
 | 
						|
#
 | 
						|
# ***** 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
 | 
						|
    CFLAGS  += -DUSE_SUMO_SOLID
 | 
						|
    CCFLAGS += -DUSE_SUMO_SOLID
 | 
						|
    ifeq ($(NAN_USE_BULLET), true)
 | 
						|
      CFLAGS  += -DUSE_BULLET -DWITH_BULLET
 | 
						|
      CCFLAGS += -DUSE_BULLET -DWITH_BULLET
 | 
						|
    endif
 | 
						|
else
 | 
						|
   CPPFLAGS += -DNO_KETSJI
 | 
						|
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),beos)
 | 
						|
    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
 | 
						|
    OPENGL_HEADERS  = .
 | 
						|
    CPPFLAGS	+= -D__BeOS
 | 
						|
    AR	= ar
 | 
						|
    ARFLAGS = ruv
 | 
						|
    ARFLAGSQUIET = ru
 | 
						|
endif
 | 
						|
 | 
						|
ifeq ($(OS),darwin)
 | 
						|
    CC	= gcc
 | 
						|
    CCC	= g++
 | 
						|
	ifeq ($(CPU),powerpc)
 | 
						|
        CFLAGS	+= -pipe -fPIC -ffast-math -mcpu=7450 -mtune=G5 -funsigned-char -fno-strict-aliasing
 | 
						|
        CCFLAGS	+= -pipe -fPIC  -funsigned-char -fno-strict-aliasing
 | 
						|
	else
 | 
						|
        CFLAGS	+= -pipe -fPIC -ffast-math -march=pentium-m -funsigned-char -fno-strict-aliasing
 | 
						|
        CCFLAGS	+= -pipe -fPIC  -funsigned-char -fno-strict-aliasing
 | 
						|
	endif
 | 
						|
    REL_CFLAGS	+= -O2
 | 
						|
    REL_CCFLAGS	+= -O2
 | 
						|
    CPPFLAGS	+= -D_THREAD_SAFE
 | 
						|
    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)
 | 
						|
    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
 | 
						|
    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
 | 
						|
    CFLAGS	+= -pipe -fPIC  -funsigned-char -fno-strict-aliasing
 | 
						|
    CCFLAGS	+= -pipe -fPIC -funsigned-char -fno-strict-aliasing
 | 
						|
#    CCFLAGS	+= -pipe
 | 
						|
    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)%.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)
 | 
						|
endif
 | 
						|
 | 
						|
OBJS_AR := $(OBJS)
 | 
						|
OBJS_AR += $(CSRCS:%.c=%.o)
 | 
						|
OBJS_AR += $(CCSRCS:%.cpp=%.o)
 | 
						|
OBJS_AR += $(WINRC:%.rc=%.res)
 | 
						|
 | 
						|
OBJS += $(CSRCS:%.c=$(DIR)/$(DEBUG_DIR)%.o)
 | 
						|
OBJS += $(CCSRCS:%.cpp=$(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
 | 
						|
 |