#
# qmake configuration for hpux-n64
#
# We define _POSIX_C_SOURCE to 199506L when using threads, therefore
# we also need to redefine _HPUX_SOURCE.
# From pthread(3t):
# 	Some documentation will recommend the use of -D_REENTRANT for
# 	compilation.  While this also functions properly, it is considered
# 	an obsolescent form.
# See pthread(3t) for more details.
#
# From the "HP aC++ Online Programmer's Guide":
# 	When +DA2.0W is specified:
# 	* 64-bit SVR4 Executable and Linking Format (ELF) object files
# 	  are generated for PA-RISC 2.0.
# 	* The preprocessor predefined macro, __LP64__ is defined.
# 	* The correct path for 64-bit system and language libraries is
# 	  selected.
# 	When +DD32 is specified:
# 	* The size of an int, long, or pointer data type is 32-bits.
# 	  The size of an int data type is 32-bits. The size of a long or
# 	  pointer data type is 64-bits.
# 	* This is the default, currently equivalent to +DA1.1 architecture.
# 	When +DD64 is specified:
# 	* The size of an int data type is 32-bits. The size of a long or
# 	  pointer data type is 64-bits.
# 	* This is currently equivalent to +DA2.OW architecture.
# 	* The preprocessor predefined macro, __LP64__ is defined.
# 	Using +DS to Specify Instruction Scheduling:
# 	* By default, the compiler performs scheduling tuned for the system
# 	  on which you are compiling, or, if specified, tuned for the setting
# 	  of the +DA option.
#
# From the online "C/HP-UX Reference Manual":
#	-Aa
# 	  Enables strict ANSI C compliance.
# 	-Ae
# 	  Enables ANSI C compliance, HP value-added features (as described
# 	  for +e option), and _HPUX_SOURCE name space macro. It is equivalent
# 	  to -Aa +e -D_HPUX_SOURCE.
# 	+e
# 	  Enables the following HP value added features while compiling in
# 	  ANSI C mode: sized enum, long long, long pointers, compiler supplied
# 	  defaults for missing arguments to intrinsic calls, and $ in identifier
# 	  HP C extensions.
#

MAKEFILE_GENERATOR	= UNIX
TARGET_PLATFORM		= unix
TEMPLATE		= app
CONFIG			+= qt warn_on release link_prl
QT			+= core gui
QMAKE_COMPILER_DEFINES  += __hpux __HP_aCC

QMAKE_CC		= cc
QMAKE_LEX		= flex
QMAKE_LEXFLAGS		=
QMAKE_YACC		= yacc
QMAKE_YACCFLAGS		= -d
QMAKE_CFLAGS		= -Ae +DA2.0W -w
QMAKE_CFLAGS_WARN_ON	=
QMAKE_CFLAGS_WARN_OFF	= -w
QMAKE_CFLAGS_RELEASE	= +O1
QMAKE_CFLAGS_DEBUG	= -g
QMAKE_CFLAGS_SHLIB	= +Z
QMAKE_CFLAGS_STATIC_LIB	= $$QMAKE_CFLAGS_SHLIB
QMAKE_CFLAGS_YACC	=
QMAKE_CFLAGS_THREAD	= -D_POSIX_C_SOURCE=199506L -D_HPUX_SOURCE -mt

QMAKE_CXX		= aCC
QMAKE_CXXFLAGS		= -AA +DA2.0W -w -D__STRICT_ANSI__ -D_HPUX_SOURCE
QMAKE_CXXFLAGS_DEPS	= +M
QMAKE_CXXFLAGS_WARN_ON	= $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF	= $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE	= $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG	= $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_SHLIB	= $$QMAKE_CFLAGS_SHLIB
QMAKE_CXXFLAGS_STATIC_LIB = $$QMAKE_CFLAGS_STATIC_LIB
QMAKE_CXXFLAGS_YACC	= $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD	= -D_POSIX_C_SOURCE=199506L -mt

QMAKE_INCDIR		=
QMAKE_LIBDIR		=
QMAKE_INCDIR_X11	= /usr/include/X11R6
QMAKE_LIBDIR_X11	= /usr/lib/X11R6/pa20_64
QMAKE_INCDIR_QT		= $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT		= $$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL	= /opt/graphics/OpenGL/include /usr/contrib/X11R6/include
QMAKE_LIBDIR_OPENGL	= /opt/graphics/OpenGL/lib/pa20_64 /usr/contrib/X11R6/lib/pa20_64

QMAKE_LINK		= aCC
QMAKE_LINK_SHLIB	= aCC
QMAKE_LFLAGS		= -AA +DA2.0W -Wl,+s
QMAKE_LFLAGS_RELEASE	= -O
QMAKE_LFLAGS_DEBUG	= -g
QMAKE_LFLAGS_SHLIB	= -b -Wl,-a,shared
QMAKE_LFLAGS_PLUGIN	= $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_SONAME	= -Wl,+h,
QMAKE_LFLAGS_THREAD	=
QMAKE_LFLAGS_NOUNDEF	= -Wl,+noallowunsats
QMAKE_LFLAGS_RPATH	= -Wl,+b,
QMAKE_HPUX_SHLIB	= 3
QMAKE_EXTENSION_SHLIB	= sl

QMAKE_LIBS		= -lm
QMAKE_LIBS_DYNLOAD	= -ldl
QMAKE_LIBS_X11		= -lXext -lX11
QMAKE_LIBS_X11SM	= -lSM -lICE
QMAKE_LIBS_OPENGL	= -lGLU -lGL -lXt
QMAKE_LIBS_OPENGL_QT	= -lGL -lXt
QMAKE_LIBS_THREAD	= -lpthread
QMAKE_LIBS_YACC		= -ly

QMAKE_MOC		= $$[QT_INSTALL_BINS]/moc
QMAKE_UIC		= $$[QT_INSTALL_BINS]/uic

QMAKE_AR		= ar cqs
QMAKE_OBJCOPY           = objcopy
QMAKE_RANLIB		=

QMAKE_TAR		= tar -cf
QMAKE_GZIP		= gzip -9f

QMAKE_COPY		= cp -f
QMAKE_MOVE		= mv -f
QMAKE_DEL_FILE		= rm -f
QMAKE_DEL_DIR		= rmdir
QMAKE_CHK_DIR_EXISTS	= test -d
QMAKE_MKDIR		= mkdir -p
include(../common/unix.conf)
load(qt_config)
