# 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

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
	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 ""
