# $Id: Jamfile,v 1.1 2004/06/03 19:27:06 fenrir Exp $
#

# Compilers
CC = gcc ;
AS = nasm ;

# Flags
# To profile: -fprofile-arcs
# Once done : -fbranch-probabilities
CCFLAGS = -g -Wall -W ;

# Globals defines
DEFINES = DEBUG __X264__ ARCH_$(OSPLAT) SYS_$(OS) ;

# Optims
OPTIM = -O3 -funroll-loops ;

# Headers rep
HDRS = . common common/i386 decoder encoder ;

SOURCES_C = common/mc.c common/predict.c common/pixel.c common/macroblock.c
            common/frame.c common/dct.c common/cpu.c common/cabac.c
            common/common.c common/mdate.c common/csp.c
            encoder/analyse.c encoder/me.c encoder/ratecontrol.c
            encoder/set.c encoder/macroblock.c encoder/cabac.c encoder/cavlc.c
            encoder/encoder.c encoder/eval.c ;

SOURCES_X86 = common/i386/cpu.asm ;
SOURCES_MMX = common/i386/mc-c.c common/i386/dct-c.c common/i386/predict.c common/i386/dct.asm common/i386/pixel.asm common/i386/mc.asm ;

SOURCES_ALTIVEC = common/ppc/mc.c common/ppc/pixel.c ;

# libx264
SOURCES_X264 = $(SOURCES_C) ;
if $(OSPLAT) = X86
{
    DEFINES      += HAVE_MMXEXT HAVE_SSE2 ;
    SOURCES_X264 += $(SOURCES_MMX) ;
    SOURCES_X264 += $(SOURCES_X86) ;
    ASFLAGS       = -f elf ;

    if $(OS) != BEOS
    {
        DEFINES += HAVE_STDINT_H ;
    }
    if $(OS) != FREEBSD
    {
        DEFINES += HAVE_MALLOC_H ;
    }

    # Don't ask
    NOARUPDATE = false ;
}
if $(OSPLAT) = PPC
{
    DEFINES      += HAVE_STDINT_H ;
    SOURCES_X264 += $(SOURCES_ALTIVEC) ;
    OPTIM        += -falign-loops=16 ;

    if $(OS) = MACOSX
    {
        CCFLAGS += -faltivec ;
    }
    if $(OS) = LINUX
    {
        CCFLAGS += -maltivec -mabi=altivec ;
    }
}
Library libx264 : $(SOURCES_X264) ;

# x264
if $(OS) != BEOS
{
    LINKLIBS += -lm ;
}
LinkLibraries x264 : libx264.a ;
Main x264 : x264.c ;

# checkasm
LinkLibraries checkasm : libx264.a ;
Main checkasm : testing/checkasm.c ;

# XXX Do not remove *.o files
actions quietly updated piecemeal together RmTemps
{
}
