# Simple makefile for skia library and test apps
#
# This is the handmade Makefile that we *used* to use before changing over
# to gyp.  Keeping it around for now in case some folks need to use it...
# but please contact epoger@google.com about anything you're still using in
# here, so we can provide equivalent functionality in the gyp build.

# setup our defaults
CC := gcc
GPP := g++
C_INCLUDES := -Iinclude/config -Iinclude/core -Iinclude/effects -Iinclude/images -Iinclude/ports
C_INCLUDES +=  -Iinclude/gpu -Iinclude/utils -Igpu/include
C_INCLUDES +=  -Ithird_party/glu

CFLAGS := -Wall -fstrict-aliasing
#CFLAGS += -W -Wextra -Wcast-align -Wchar-subscripts -Wformat -Wformat-security -Wno-format-y2k -Wno-parentheses -Wno-unused-parameter -Wpointer-arith  -Wreturn-type -Wundef -Wwrite-strings
CFLAGS_SSE2 = $(CFLAGS) -msse2
LINKER_OPTS := -lpthread -lz
DEFINES := -DSK_CAN_USE_FLOAT
HIDE = @

ifeq ($(SKIA_SCALAR),fixed)
	DEFINES += -DSK_SCALAR_IS_FIXED
else
	DEFINES += -DSK_SCALAR_IS_FLOAT
endif

ifeq ($(SKIA_DEBUG),true)
 	DEFINES += -DSK_DEBUG -DSK_SUPPORT_UNIT -DGR_DEBUG=1
	CFLAGS += -g
else
	CFLAGS += -O3
	DEFINES += -DSK_RELEASE -DGR_DEBUG=0
endif

DEFINES += -DGR_IMPLEMENTATION=1

ifneq ($(SKIA_PDF_SUPPORT),false)
	DEFINES += -DSK_SUPPORT_PDF
	DEFINES += -DSK_ZLIB_INCLUDE="<zlib.h>"
endif

ifeq ($(SKIA_SHARED),true)
	CFLAGS += -fPIC
	LIBSKIA = out/libskia.so
else
	LIBSKIA = out/libskia.a
endif

# start with the core (required)
include src/core/core_files.mk
SRC_LIST := $(addprefix src/core/, $(SOURCE))

# add the opts (optimizations)
include src/opts/opts_sse2_files.mk
#include src/opts/opts_files.mk
SRC_LIST += $(addprefix src/opts/, $(SOURCE))

# we usually need ports
include src/ports/ports_files.mk
SRC_LIST += $(addprefix src/ports/, $(SOURCE))

# do we want effects?
include src/effects/effects_files.mk
SRC_LIST += $(addprefix src/effects/, $(SOURCE))

# core image files
include src/images/images_files.mk
SRC_LIST += $(addprefix src/images/, $(SOURCE))

# core util files
include src/utils/utils_files.mk
SRC_LIST += $(addprefix src/utils/, $(SOURCE))

# GPU files
include gpu/src/gr_files.mk
SRC_LIST += $(addprefix gpu/src/, $(SOURCE))

# GPU support files
include src/gpu/skgr_files.mk
SRC_LIST += $(addprefix src/gpu/, $(SOURCE))

# pdf backend files
ifneq ($(SKIA_PDF_SUPPORT),false)
	C_INCLUDES += -Iinclude/pdf
	include src/pdf/pdf_files.mk
	SRC_LIST += $(addprefix src/pdf/, $(SOURCE))
endif

# extra files we want to build to prevent bit-rot, but not link
JUST_COMPILE_LIST := src/ports/SkFontHost_tables.cpp

# conditional files based on our platform
ifeq ($(SKIA_BUILD_FOR),mac)
	# make it work with 10.4 for our font port
#	GPP := g++-4.0
#	SDK := /Developer/SDKs/MacOSX10.4u.sdk
#	SDK_OPTS := -isysroot $(SDK) -mmacosx-version-min=10.4
#	CC := gcc-4.0 $(SDK_OPTS)

	C_INCLUDES += -I/opt/local/include
	LINKER_OPTS += -L/opt/local/lib -framework Carbon -lpng
	DEFINES += -DSK_BUILD_FOR_MAC -DSK_ENABLE_LIBPNG
	ifeq ($(SKIA_MESA),true)
		C_INCLUDES += -I/usr/X11/include
		LINKER_OPTS += -L/usr/X11/lib -lOSMesa -lGLU
		DEFINES += -DSK_MESA
	else
		LINKER_OPTS += -framework OpenGL -framework AGL
	endif
	C_INCLUDES += -Iinclude/utils/mac
#	SRC_LIST += src/ports/SkImageDecoder_CG.cpp
	SRC_LIST += src/utils/mac/SkCreateCGImageRef.cpp
	ifeq ($(SKIA_MESA),true)
		SRC_LIST += src/utils/mesa/SkEGLContext_Mesa.cpp
	else
		SRC_LIST += src/utils/mac/SkEGLContext_mac.cpp
	endif
	SRC_LIST += src/core/SkTypefaceCache.cpp
	SRC_LIST += src/ports/SkFontHost_mac_coretext.cpp

	# these are our registry-based factories
	SRC_LIST += src/images/SkImageDecoder_Factory.cpp
	SRC_LIST += src/images/SkImageEncoder_Factory.cpp
        SRC_LIST += src/images/SkImageDecoder_libpng.cpp
	# support files
	SRC_LIST += src/images/SkScaledBitmapSampler.cpp
	
	ifeq ($(SKIA_MESA),true)
		SRC_LIST += gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
	else
		SRC_LIST += gpu/src/mac/GrGLDefaultInterface_mac.cpp
	endif
	
else
	LINKER_OPTS += -lpng -lfreetype -lrt
	DEFINES += -DSK_BUILD_FOR_UNIX -DSK_ENABLE_LIBPNG -DGR_LINUX_BUILD=1
	ifeq ($(SKIA_MESA),true)
		LINKER_OPTS += -lOSMesa -lGLU
		DEFINES += -DSK_MESA
	else
		LINKER_OPTS += -lGL -lGLU -lX11
	endif

	#Assume the color order for now.
	DEFINES += -DSK_SAMPLES_FOR_X

	# needed for freetype support
	C_INCLUDES += -I/usr/include/freetype2
	SRC_LIST += src/ports/SkFontHost_linux.cpp
	SRC_LIST += src/ports/SkFontHost_gamma_none.cpp
	SRC_LIST += src/ports/SkFontHost_FreeType.cpp
	SRC_LIST += src/ports/SkFontHost_FreeType_Subpixel.cpp
	ifeq ($(SKIA_MESA),true)
		SRC_LIST += src/utils/mesa/SkEGLContext_Mesa.cpp
	else
		SRC_LIST += src/utils/unix/SkEGLContext_Unix.cpp
	endif
	# these are our registry-based factories
	SRC_LIST += src/images/SkImageDecoder_Factory.cpp
	SRC_LIST += src/images/SkImageEncoder_Factory.cpp
        SRC_LIST += src/images/SkImageDecoder_libpng.cpp
	# support files
	SRC_LIST += src/images/SkScaledBitmapSampler.cpp
	
	ifeq ($(SKIA_MESA),true)
		SRC_LIST += gpu/src/mesa/GrGLDefaultInterface_mesa.cpp
	else
		SRC_LIST += gpu/src/unix/GrGLDefaultInterface_unix.cpp
	endif
endif

# For these files, and these files only, compile with -msse2.
SSE2_OBJS := out/src/opts/SkBlitRow_opts_SSE2.o \
             out/src/opts/SkBitmapProcState_opts_SSE2.o \
             out/src/opts/SkUtils_opts_SSE2.o
$(SSE2_OBJS) : CFLAGS := $(CFLAGS_SSE2)

out/%.o : %.cpp
	@mkdir -p $(dir $@)
	$(HIDE)$(CC) $(C_INCLUDES) $(CFLAGS) $(DEFINES) -c $< -o $@
	@echo "compiling $@"

%.s : %.cpp
	@mkdir -p $(dir $@)
	$(CC) $(C_INCLUDES) $(CFLAGS) $(DEFINES) -S -c $< -o $@

# now build out objects
OBJ_LIST := $(SRC_LIST:.cpp=.o)
OBJ_LIST := $(addprefix out/, $(OBJ_LIST))

# we want to compile these, but we don't actually link them
JUST_COMPILE_OBJS := $(JUST_COMPILE_LIST:.cpp=.o)
JUST_COMPILE_OBJS := $(addprefix out/, $(JUST_COMPILE_OBJS))

out/libskia.a: Makefile $(OBJ_LIST) $(JUST_COMPILE_OBJS)
	$(HIDE)$(AR) ru $@ $(OBJ_LIST)
	$(HIDE)ranlib $@

out/libskia.so: Makefile $(OBJ_LIST) $(JUST_COMPILE_OBJS)
	$(HIDE)$(GPP) -shared -o $@ $(OBJ_LIST) $(JUST_COMPILE_OBJS) $(LINKER_OPTS)

##############################################################################

BENCH_SRCS := RectBench.cpp SkBenchmark.cpp benchmain.cpp BitmapBench.cpp \
		RepeatTileBench.cpp DecodeBench.cpp FPSBench.cpp PathBench.cpp \
		GradientBench.cpp MatrixBench.cpp ScalarBench.cpp \
		BenchTimer.cpp BenchGpuTimer_gl.cpp
 
ifeq ($(SKIA_BUILD_FOR),mac)
    BENCH_SRCS += BenchSysTimer_mach.cpp
else
    BENCH_SRCS += BenchSysTimer_posix.cpp
endif

BENCH_SRCS := $(addprefix bench/, $(BENCH_SRCS))

# add any optional codecs for this app
ifeq ($(SKIA_BUILD_FOR),mac)
    BENCH_SRCS += bench/TextBench.cpp
else
    BENCH_SRCS += src/images/SkImageDecoder_libpng.cpp
endif

BENCH_OBJS := $(BENCH_SRCS:.cpp=.o)
BENCH_OBJS := $(addprefix out/, $(BENCH_OBJS))

bench: $(BENCH_OBJS) $(LIBSKIA)
	@echo "linking bench..."
	$(HIDE)$(GPP) $(BENCH_OBJS) $(LIBSKIA) -o out/bench/bench $(LINKER_OPTS)

##############################################################################

# we let tests cheat and see private headers, so we can unittest modules
C_INCLUDES += -Isrc/core

include tests/tests_files.mk
ifneq ($(SKIA_PDF_SUPPORT),false)
  SOURCE += PDFPrimitivesTest.cpp
endif
TESTS_SRCS := $(addprefix tests/, $(SOURCE))

TESTS_OBJS := $(TESTS_SRCS:.cpp=.o)
TESTS_OBJS := $(addprefix out/, $(TESTS_OBJS))

tests: $(TESTS_OBJS) $(LIBSKIA)
	@echo "linking tests..."
	$(HIDE)$(GPP) $(TESTS_OBJS) $(LIBSKIA) -o out/tests/tests $(LINKER_OPTS)

##############################################################################

SKIMAGE_SRCS := skimage_main.cpp

SKIMAGE_SRCS := $(addprefix tools/, $(SKIMAGE_SRCS))

SKIMAGE_OBJS := $(SKIMAGE_SRCS:.cpp=.o)
SKIMAGE_OBJS := $(addprefix out/, $(SKIMAGE_OBJS))

skimage: $(SKIMAGE_OBJS) $(LIBSKIA)
	@echo "linking skimage..."
	$(HIDE)$(GPP) $(SKIMAGE_OBJS) $(LIBSKIA) -o out/tools/skimage $(LINKER_OPTS)

##############################################################################

SKDIFF_SRCS := skdiff_main.cpp
SKDIFF_SRCS := $(addprefix tools/, $(SKDIFF_SRCS))
SKDIFF_OBJS := $(SKDIFF_SRCS:.cpp=.o)
SKDIFF_OBJS := $(addprefix out/, $(SKDIFF_OBJS))
skdiff: $(SKDIFF_OBJS) out/libskia.a
	@echo "linking skdiff..."
	$(HIDE)$(GPP) $(SKDIFF_OBJS) out/libskia.a -o out/tools/skdiff $(LINKER_OPTS)

##############################################################################

SKHELLO_SRCS := skhello.cpp

SKHELLO_SRCS := $(addprefix tools/, $(SKHELLO_SRCS))

SKHELLO_OBJS := $(SKHELLO_SRCS:.cpp=.o)
SKHELLO_OBJS := $(addprefix out/, $(SKHELLO_OBJS))

skhello: $(SKHELLO_OBJS) $(LIBSKIA)
	@echo "linking shkello..."
	$(HIDE)$(GPP) $(SKHELLO_OBJS) $(LIBSKIA) -o out/tools/skhello $(LINKER_OPTS)

##############################################################################

include gm/gm_files.mk
GM_SRCS := $(addprefix gm/, $(SOURCE))

ifneq ($(SKIA_BUILD_FOR),mac)
    GM_SRCS += src/images/SkImageDecoder_libpng.cpp
endif

GM_OBJS := $(GM_SRCS:.cpp=.o)
GM_OBJS := $(addprefix out/, $(GM_OBJS))

gm: $(GM_OBJS) $(LIBSKIA)
	@echo "linking gm..."
	$(HIDE)$(GPP) $(GM_OBJS) $(LIBSKIA) -o out/gm/gm $(LINKER_OPTS)

##############################################################################

.PHONY: all
all: $ bench gm skimage tests skhello skdiff

.PHONY: clean
clean:
	$(HIDE)rm -rf out

.PHONY: help
help:
	@echo "Targets:"
	@echo "    <default>: out/libskia.a"
	@echo "    bench: out/bench/bench"
	@echo "    gm: out/gm/gm"
	@echo "    skimage: out/tools/skimage"
	@echo "    skhello: out/tools/skhello"
	@echo "    tests: out/tests/tests"
	@echo "    clean: removes entire out/ directory"
	@echo "    help: this text"
	@echo "Options: (after make, or in bash shell)"
	@echo "    SKIA_DEBUG=true for debug build"
	@echo "    SKIA_SHARED=true for shared-object libskia build"
	@echo "    SKIA_SCALAR=fixed for fixed-point build"
	@echo "    SKIA_BUILD_FOR=mac for mac build (e.g. CG for image decoding)"
	@echo "    SKIA_PDF_SUPPORT=false to disable the pdf generation backend"
	@echo "    SKIA_MESA=true to build with osmesa instead of native GL.
	@echo ""
