Fossil

Artifact Content
Login

Artifact af04f4f84cbeb059975886d29bd2917e6cff9469:


#!/usr/bin/make
#
# This is the top-level makefile for Fossil when the build is occurring
# on a unix platform.  This works out-of-the-box on most unix platforms.
# But you are free to vary some of the definitions if desired.
#
#### The toplevel directory of the source tree.  Fossil can be built
#    in a directory that is separate from the source tree.  Just change
#    the following to point from the build directory to the src/ folder.
#    Having a "./" prefix in the value of this variable breaks our use of the
#    "makeheaders" tool when running make on the MinGW platform, apparently
#    due to some command line argument manipulation performed automatically
#    by the shell.
#
SRCDIR = src

#### The directory into which object code files should be written.
#    Having a "./" prefix in the value of this variable breaks our use of the
#    "makeheaders" tool when running make on the MinGW platform, apparently
#    due to some command line argument manipulation performed automatically
#    by the shell.
#
#
OBJDIR = bld

#### C Compiler and options for use in building executables that
#    will run on the platform that is doing the build.  This is used
#    to compile code-generator programs as part of the build process.
#    See TCC below for the C compiler for building the finished binary.
#
BCC = gcc

#### The suffix to add to final executable file.  When cross-compiling
#    to windows, make this ".exe".  Otherwise leave it blank.
#
E =

#### C Compile and options for use in building executables that 
#    will run on the target platform.  This is usually the same
#    as BCC, unless you are cross-compiling.  This C compiler builds
#    the finished binary for fossil.  The BCC compiler above is used
#    for building intermediate code-generator tools.
#
#TCC = gcc -O6
#TCC = gcc -g -O0 -Wall -fprofile-arcs -ftest-coverage
TCC = gcc -g -Os -Wall

# To add support for HTTPS
TCC += -DFOSSIL_ENABLE_SSL=1

#### Extra arguments for linking the finished binary.  Fossil needs
#    to link against the Z-Lib compression library.  There are no
#    other dependencies.  We sometimes add the -static option here
#    so that we can build a static executable that will run in a
#    chroot jail.
#
LIB = -lz $(LDFLAGS)

# If using HTTPS:
#
# NOTE: These must appear in exactly this order or MinGW will complain about
#       missing symbols.
#
LIB += -lssl -lcrypto

#------------------------------------------------------------------------------
# Begin MinGW Section (the following lines may all be commented out unless
# building on Windows via MinGW).
#------------------------------------------------------------------------------

# Where is zlib (needed for MinGW builds only)?
ZLIBDIR = $(SRCDIR)/../zlib-1.2.5

# Where is OpenSSL (needed for MinGW builds only)?
OPENSSLDIR = $(SRCDIR)/../openssl-1.0.0e

# Include directory for zlib (needed for MinGW builds only)
TCC.MINGW32_NT-6.1 = -I$(ZLIBDIR)

# Include directory for OpenSSL (needed for MinGW builds only)
TCC.MINGW32_NT-6.1 += -I$(OPENSSLDIR)/include

# Library directory for zlib (needed for MinGW builds only).
LIB.MINGW32_NT-6.1 = -L$(ZLIBDIR)

# Library directory for OpenSSL (needed for MinGW builds only).
LIB.MINGW32_NT-6.1 += -L$(OPENSSLDIR)

# Add the necessary Windows libraries (needed for Windows builds only).
LIB.MINGW32_NT-6.1 += -lgdi32 -lws2_32

#------------------------------------------------------------------------------
# End MinGW Section (the preceeding lines may all be commented out unless
# building on Windows via MinGW)
#------------------------------------------------------------------------------

#### Tcl shell for use in running the fossil testsuite.  If you do not
#    care about testing the end result, this can be blank.
#
TCLSH = tclsh

# You should not need to change anything below this line
###############################################################################
#
# Automatic platform-specific options.
HOST_OS_CMD = uname -s
HOST_OS = $(HOST_OS_CMD:sh)

# On MinGW, slightly different detection magic is required.
ifeq '$(HOST_OS)' ''
HOST_OS = $(shell $(HOST_OS_CMD))
endif

LIB.SunOS= -lsocket -lnsl
LIB += $(LIB.$(HOST_OS))

TCC.DragonFly += -DUSE_PREAD
TCC.FreeBSD += -DUSE_PREAD
TCC.NetBSD += -DUSE_PREAD
TCC.OpenBSD += -DUSE_PREAD
TCC += $(TCC.$(HOST_OS))

include $(SRCDIR)/main.mk