#
# $Id: nan_warn.mk,v 1.3 2004/03/05 21:29:34 sirdude Exp $
#
# ***** BEGIN GPL/BL DUAL 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. The Blender
# Foundation also sells licenses for use in proprietary software under
# the Blender License.  See http://www.blender.org/BL/ for information
# about this.
#
# 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/BL DUAL LICENSE BLOCK *****
#
# NaN compiler and linker warning levels
# On some platforms, you will be flooded with system include file warnings.
# Use hmake to filter those away.
#

# Force the correct redefinition
LEVEL_1_C_WARNINGS = -FIX_NAN_WARN
LEVEL_1_CPP_WARNINGS = -FIX_NAN_WARN
LEVEL_2_C_WARNINGS = -FIX_NAN_WARN
LEVEL_2_CPP_WARNINGS = -FIX_NAN_WARN
FIX_STUBS_WARNINGS = -FIX_NAN_WARN

########################################################################
# Level 1: basic C warnings.
ifeq ($(CC),gcc)
    LEVEL_1_C_WARNINGS = -Wall
    LEVEL_1_C_WARNINGS += -Wno-char-subscripts
else
  ifeq ($(CC),cc)
    ifeq ($(OS),irix)
      # MIPSpro Compilers
      #
      # Irix warning info
      #
	  # 1001		# the source file does not end w/ a newline
      # 1110		# unreachable statement
      # 1201		# trailing comma in enums is nonstandard
      # 1209		# constant controlling expressions
      # 1355		# extra semicolon is ignored
      # 1424		# unreferenced template paramaters
      # 1681		# virtual function override
      # 3201		# unreferenced formal paramaters
      #
		
      LEVEL_1_C_WARNINGS = -fullwarn -woff 1001,1110,1201,1209,1355,1424,1681,3201
    endif
  endif
  ifeq ($(OS),windows)
    # Microsoft Compilers and cl_wrapper.pl
    LEVEL_1_C_WARNINGS = -Wall
  endif
endif

# Level 1: basic CPP warnings.
ifeq ($(CCC),g++)
    LEVEL_1_CPP_WARNINGS = -Wall
    LEVEL_1_CPP_WARNINGS += -Wno-reorder
else
  ifeq ($(CCC),CC)
    ifeq ($(OS),irix)
      # MIPSpro Compilers
	  #  see warning descriptions above
      LEVEL_1_CPP_WARNINGS = -woff 1001,1110,1201,1209,1355,1424,1681,3201
    endif
  endif
  ifeq ($(OS),windows)
    # Microsoft Compilers and cl_wrapper.pl
    LEVEL_1_CPP_WARNINGS = -Wall
  endif
endif

########################################################################
# Level 2: paranoia level C warnings.
# DO NOT REUSE LEVEL_1_ DEFINES.
ifeq ($(CC),gcc)
    LEVEL_2_C_WARNINGS = -Wall
    LEVEL_2_C_WARNINGS += -W
    # deliberately enable char-subscript warnings
    LEVEL_2_C_WARNINGS += -Wshadow
    LEVEL_2_C_WARNINGS += -Wpointer-arith
    LEVEL_2_C_WARNINGS += -Wbad-function-cast
    LEVEL_2_C_WARNINGS += -Wcast-qual
    LEVEL_2_C_WARNINGS += -Wcast-align
    LEVEL_2_C_WARNINGS += -Waggregate-return
    LEVEL_2_C_WARNINGS += -Wstrict-prototypes
    LEVEL_2_C_WARNINGS += -Wmissing-prototypes
    LEVEL_2_C_WARNINGS += -Wmissing-declarations
    LEVEL_2_C_WARNINGS += -Wnested-externs
    LEVEL_2_C_WARNINGS += -Wredundant-decls 
else
  ifeq ($(CC),cc)
    ifeq ($(OS),irix)
      # MIPSpro Compilers
	  #  see warning descriptions above
      LEVEL_2_C_WARNINGS = -fullwarn -woff 1001,1209,1424,3201
    endif
    ifeq ($(OS),solaris)
      # Forte / Sun WorkShop Compilers
      LEVEL_2_C_WARNINGS = -v
    endif
  endif
  ifeq ($(OS),windows)
    # Microsoft Compilers and cl_wrapper.pl
    LEVEL_2_C_WARNINGS = -Wall
  endif
endif

# Level 2: paranoia level CPP warnings.
# DO NOT REUSE LEVEL_1_ DEFINES.
ifeq ($(CCC),g++)
    LEVEL_2_CPP_WARNINGS = -Wall
    LEVEL_2_CPP_WARNINGS += -W
    # deliberately enable char-subscript warnings
    LEVEL_2_CPP_WARNINGS += -Wshadow
    LEVEL_2_CPP_WARNINGS += -Wpointer-arith
    LEVEL_2_CPP_WARNINGS += -Wcast-qual
    LEVEL_2_CPP_WARNINGS += -Wcast-align
    # deliberately disable aggregate-return warnings
    LEVEL_2_CPP_WARNINGS += -Wstrict-prototypes
    LEVEL_2_CPP_WARNINGS += -Wmissing-prototypes
    LEVEL_2_CPP_WARNINGS += -Wredundant-decls 
    LEVEL_2_CPP_WARNINGS += -Wreorder
    LEVEL_2_CPP_WARNINGS += -Wctor-dtor-privacy
    LEVEL_2_CPP_WARNINGS += -Wnon-virtual-dtor
    LEVEL_2_CPP_WARNINGS += -Wold-style-cast
    LEVEL_2_CPP_WARNINGS += -Woverloaded-virtual
    LEVEL_2_CPP_WARNINGS += -Wsign-promo
    LEVEL_2_CPP_WARNINGS += -Wsynth
else
  ifeq ($(CCC),CC)
    ifeq ($(OS),irix)
      # MIPSpro Compilers
	  #  see warning descriptions above
      LEVEL_2_CPP_WARNINGS = -fullwarn -woff 1209,1424,3201
    endif
  endif
  ifeq ($(OS),windows)
    # Microsoft Compilers and cl_wrapper.pl
    LEVEL_2_CPP_WARNINGS = -Wall
  endif
endif

########################################################################
# stubs warning fix
ifeq ($(CC),gcc)
    FIX_STUBS_WARNINGS = -Wno-unused
else
    FIX_STUBS_WARNINGS =
endif

