#########################################################################
#                                                                       #
#                            Objective Caml                             #
#                                                                       #
#            Xavier Leroy, projet Cristal, INRIA Rocquencourt           #
#                                                                       #
#   Copyright 1999 Institut National de Recherche en Informatique et    #
#   en Automatique.  All rights reserved.  This file is distributed     #
#   under the terms of the GNU Library General Public License, with     #
#   the special exception on linking described in file ../LICENSE.      #
#                                                                       #
#########################################################################

# $Id: Makefile-templ,v 1.29 2004/06/19 16:17:31 xleroy Exp $

### Compile-time configuration

########## General configuration

### Where to install the binaries
BINDIR=/usr/local/bin

### Where to install the standard library
LIBDIR=/usr/local/lib/ocaml
STUBLIBDIR=$(LIBDIR)/stublibs

### Where to install the man pages
# Man pages for commands go in $(MANDIR)/man$(MANEXT)
# Man pages for the library go in $(MANDIR)/mano
MANDIR=/usr/local/man
MANEXT=1

### Do #! scripts work on your system?
### Beware: on some systems (e.g. SunOS 4), this will work only if 
### the string "#!$(BINDIR)/ocamlrun" is less than 32 characters long.
### In doubt, set SHARPBANGSCRIPTS to false.
SHARPBANGSCRIPTS=true
#SHARPBANGSCRIPTS=false

########## Configuration for the bytecode compiler

### Which C compiler to use for the bytecode interpreter.
### Performance of the bytecode interpreter is *much* improved
### if Gnu CC version 2 is used.
#BYTECC=gcc
#BYTECC=cc

### Additional compile-time options for $(BYTECC).
# If using gcc on Intel 386 or Motorola 68k:
# (the -fno-defer-pop option circumvents a bug in certain versions of gcc)
#BYTECCCOMPOPTS=-fno-defer-pop -Wall
# If using gcc and being superstitious:
#BYTECCCOMPOPTS=-Wall
# Under NextStep:
#BYTECCCOMPOPTS=-U__GNUC__ -fno-defer-pop -Wall
# Otherwise:
#BYTECCCOMPOPTS=

### Additional link-time options for $(BYTECC)
### If using GCC on a Dec Alpha under OSF1:
#BYTECCLINKOPTS=-Wl,-T,12000000 -Wl,-D,14000000
# To support dynamic loading of shared libraries (they need to look at
# our own symbols):
#BYTECCLINKOPTS=-Wl,-E
# Otherwise:
#BYTECCLINKOPTS=

### Libraries needed
# On most platforms:
#CCLIBS=-lcurses -ltermcap -lm

### How to invoke the C preprocessor
# This is not needed anymore.  Leave these lines commented out.
# On most machines:
#CPP=/lib/cpp -P
# Under Solaris:
#CPP=/usr/ccs/lib/cpp -P
# Under FreeBSD:
#CPP=cpp -P

### How to invoke ranlib
# BSD-style:
#RANLIB=ranlib
#RANLIBCMD=ranlib
# If ranlib is not needed:
#RANLIB=ar rs
#RANLIBCMD=

### Shared library support
# Extension for shared libraries: so if supported, a if not supported
#SO=so
#SO=a
# Set to nothing if shared libraries supported, and to -custom if not supported
#CUSTOM_IF_NOT_SHARED=
#CUSTOM_IF_NOT_SHARED=-custom
# Options to $(BYTECC) to produce shared objects (e.g. PIC)
#SHAREDCCCOMPOPTS=-fPIC
# How to build a shared library, invoked with output .so as first arg
# and object files as remaining args
#MKSHAREDLIB=gcc -shared -o
# Compile-time option to $(BYTECC) to add a directory to be searched
# at run-time for shared libraries
#BYTECCRPATH=-Wl,-rpath

############# Configuration for the native-code compiler

### Name of architecture for the native-code compiler
### Currently supported:
###
### alpha       Digital/Compaq Alpha machines under DUnix/Tru64 or Linux
### i386        Intel Pentium PCs under Linux, *BSD*, NextStep
### sparc       Sun Sparcstation under SunOS 4.1 or Solaris 2
### mips        SGI machines under IRIX
### hppa        HP 9000/700 under HPUX and Linux
### power       Macintosh under Mac OS X and Linux
### ia64        Intel Itanium/IA64 under Linux
### arm         ARM under Linux
###
### Set ARCH=none if your machine is not supported
#ARCH=alpha
#ARCH=i386
#ARCH=sparc
#ARCH=mips
#ARCH=hppa
#ARCH=power
#ARCH=ia64
#ARCH=arm
#ARCH=none

### Name of architecture model for the native-code compiler.
### Some architectures come in several slightly different flavors
### that share a common code generator. This variable tailors the
### behavior of the code generator to the particular flavor used.
### Currently needed only if ARCH=power; leave MODEL=default for
### other architectures.
### If ARCH=power: set MODEL=ppc
### For other architectures: leave MODEL=default
###
#MODEL=ppc
#MODEL=default

### Name of operating system family for the native-code compiler.
### If ARCH=sparc: choose between
###   SYSTEM=sunos      SunOS 4.1
###   SYSTEM=solaris    Solaris 2
###
### If ARCH=i386:  choose between
###   SYSTEM=linux_aout Linux with a.out binaries
###   SYSTEM=linux_elf  Linux with ELF binaries
###   SYSTEM=bsd        FreeBSD, probably works for NetBSD also
###   SYSTEM=nextstep   NextStep
###
### For other architectures: set SYSTEM=unknown
###
#SYSTEM=sunos
#SYSTEM=solaris
#SYSTEM=linux
#SYSTEM=linux_elf
#SYSTEM=bsd
#SYSTEM=nextstep
#SYSTEM=unknown

### Which C compiler to use for the native-code compiler.
### cc is better than gcc on the Mips and Alpha.
#NATIVECC=cc
#NATIVECC=gcc

### Additional compile-time options for $(NATIVECC).
# For cc on the Alpha:
#NATIVECCCOMPOPTS=-std1
# For cc on the Mips:
#NATIVECCCOMPOPTS=-std
# For gcc if superstitious:
#NATIVECCCOMPOPTS=-Wall

### Additional link-time options for $(NATIVECC)
#NATIVECCLINKOPTS=

# Compile-time option to $(NATIVECC) to add a directory to be searched
# at run-time for shared libraries
#NATIVECCRPATH=-Wl,-rpath

### Flags for the assembler
# For the Alpha or the Mips:
#ASFLAGS=-O2
# For the PowerPC:
#ASFLAGS=-u -m ppc -w
# For the RS6000:
#ASFLAGS=-u -m pwr -w
# Otherwise:
#ASFLAGS=

### Command and flags to use for assembling .S files (often with preprocessing)
# If gcc is available:
#ASPP=gcc
#ASPPFLAGS=-c -DSYS_$(SYSTEM)
# On SunOS and Solaris:
#ASPP=$(AS)
#ASPPFLAGS=-P -DSYS_$(SYSTEM)
# Otherwise:
#ASPP=$(AS)
#ASPPFLAGS=

### Extra flags to use for assembling .S files in profiling mode
# On Digital Unix:
#ASPPPROFFLAGS=-pg -DPROFILING
# Otherwise:
#ASPPPROFFLAGS=-DPROFILING

### Whether profiling with gprof is supported
# If yes: (x86/Linux, Alpha/Digital Unix, Sparc/Solaris):
#PROFILING=prof
# If no: (all others)
#PROFILING=noprof

### Option to give to the C compiler for profiling
#CC_PROFILE=-pg
#CC_PROFILE=-xpg

### How to perform a partial link
PARTIALLD=ld -r $(NATIVECCLINKOPTS)
PACKLD=$(PARTIALLD)

### Path to the "objcopy" program from GNU binutils.
# You need a sufficiently recent version of the binutils so that
# the option --redefine-sym is supported by objcopy.
# Leave blank if you don't have "objcopy", but then "ocamlopt -pack"
# will not work
#BINUTILS_OBJCOPY=/usr/bin/objcopy

### Path to the "nm" program from GNU binutils.
# Other versions of nm do *not* work for our purposes.
# Leave blank if you don't have GNU "nm", but then "ocamlopt -pack"
# will not work
#BINUTILS_NM=/usr/bin/nm

############# Configuration for the contributed libraries

### Which libraries to compile and install
# Currently available:
#       unix            Unix system calls
#       str             Regular expressions and high-level string processing
#       num             Arbitrary-precision rational arithmetic
#       threads         Lightweight concurrent processes 
#       systhreads      Same as threads, requires POSIX threads
#       graph           Portable drawing primitives for X11
#       dynlink         Dynamic linking of bytecode
#       labltk          Tcl/Tk interface
#       bigarray        Large, multidimensional numerical arrays

OTHERLIBRARIES=unix str num threads graph dynlink labltk bigarray

### Name of the target architecture for the "num" library
# Known targets:
#	generic (portable C, works everywhere)
#	ia32	(Intel x86)
#	amd64	(AMD Opteron, Athlon64)
#       alpha
#	mips
#	ppc	(Power PC)
#	sparc
# If you don't know, leave BNG_ARCH=generic, which selects a portable
# C implementation of these routines.
BNG_ARCH=generic
BNG_ASM_LEVEL=1

### Link-time options to ocamlc or ocamlopt for linking with POSIX threads
# Needed for the "systhreads" package
# Usually:
#PTHREAD_LINK=-cclib -lpthread
# For Solaris:
#PTHREAD_LINK=-cclib -lpthread -cclib -lposix4

### -I options for finding the X11/*.h includes
# Needed for the "graph" and "labltk" packages
# Usually:
#X11_INCLUDES=-I/usr/X11R6/include
# For SunOS with OpenLook:
#X11_INCLUDES=/usr/openwin/include

### Link-time options to ocamlc or ocamlopt for linking with X11 libraries
# Needed for the "graph" and "labltk" packages
# Usually:
#X11_LINK=-lX11
# For SunOS with OpenLook:
#X11_LINK=-L$(X11_LIB) -lX11

### -I options for finding the include file ndbm.h
# Needed for the "dbm" package
# Usually:
#DBM_INCLUDES=
# For recent Linux systems:
#DBM_INCLUDES=-I/usr/include/gdbm

### Preprocessor options for finding tcl.h and tk.h
# Needed for the "labltk" package
# Required only if not in the standard include path.
# For Tcl/Tk 8.0 on FreeBSD:
#TK_DEFS="-I/usr/local/include/tcl8.0 -I/usr/local/include/tk8.0"

### Linker options for linking tcl and tk libraries
# Needed for the "labltk" package
# Usually (with appropriate version numbers):
#TK_LINK="-ltk8.0 -ltcl8.0"
# For Tcl/Tk 8.0 on FreeBSD:
#TK_LINK="-L/usr/local/lib -ltk8.0 -ltcl8.0"
