###############################################################################
## Copyright (C) 2011 John Luthgers | jls17
##
## This file is part of ARInside.
##
##    ARInside is free software: you can redistribute it and/or modify
##    it under the terms of the GNU General Public License as published by
##    the Free Software Foundation, version 2 of the License.
##
##    ARInside is distributed in the hope that it will be useful,
##    but WITHOUT ANY WARRANTY; without even the implied warranty of
##    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
##    GNU General Public License for more details.
##
##    You should have received a copy of the GNU General Public License
##    along with ARInside.  If not, see <http://www.gnu.org/licenses/>.
###############################################################################
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
PROJECT(arinside)

#SET(CMAKE_VERBOSE_MAKEFILE 1)       # OR USE AT CMD-LINE: -DCMAKE_VERBOSE_MAKEFILE=1       ## for verbose makefiles
#SET(CMAKE_BUILD_TYPE Debug)         # OR USE AT CMD-LINE: -DCMAKE_BUILD_TYPE=Debug         ## for debug builds
#SET(ARINSIDE_TARGET_ARCHITECTURE 4) # OR USE AT CMD-LINE: -DARINSIDE_TARGET_ARCHITECTURE=4 ## for 32bit build on 64bit platform

MESSAGE(STATUS "System Name: ${CMAKE_SYSTEM_NAME}")
INCLUDE(project.cmake/msvc_pch_support.cmake)

#define project names
SET(MAIN_PROJECT_NAME "ARInside")
SET(LIB_PROJECT_NAME "ARInsideLib")
SET(TEST_PROJECT_NAME "ARInsideTest")
SET(RES_PROJECT_NAME "ARInsideRes")
IF(UNIX)
  STRING(TOLOWER ${MAIN_PROJECT_NAME} MAIN_PROJECT_NAME)
  STRING(TOLOWER ${LIB_PROJECT_NAME} LIB_PROJECT_NAME)
  STRING(TOLOWER ${TEST_PROJECT_NAME} TEST_PROJECT_NAME)
  STRING(TOLOWER ${RES_PROJECT_NAME} RES_PROJECT_NAME)
ENDIF(UNIX)

# configurable variables for cmakegui
IF(NOT DEFINED ARINSIDE_BETA)
	SET(ARINSIDE_BETA CACHE BOOL "When enabled, appends 'Beta' to the version string.")
ENDIF(NOT DEFINED ARINSIDE_BETA)	

IF (NOT DEFINED AR_INCLUDE_PATH)
	SET(AR_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../api810" CACHE PATH "Path to the arapi root dir where 'include' and 'lib' is located.")
ENDIF(NOT DEFINED AR_INCLUDE_PATH)

IF(NOT EXISTS ${AR_INCLUDE_PATH})
  MESSAGE(FATAL_ERROR "ARAPI include directory not found! Please set the AR_INCLUDE_PATH variable to the api root, where the directories 'include' and 'lib' are located. Current directory: ${AR_INCLUDE_PATH}
use 'cmake -DAR_INCLUDE_PATH=/path/to/ars/api/dir'")
ENDIF(NOT EXISTS ${AR_INCLUDE_PATH})

if (NOT DEFINED ZLIB_INCLUDE_PATH)
  SET(ZLIB_INCLUDE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/../../libs/zlib" CACHE PATH "Path to the zlib include/lib directories.")
ENDIF(NOT DEFINED ZLIB_INCLUDE_PATH)

IF(NOT DEFINED ARINSIDE_TARGET_ARCHITECTURE)
	SET(ARINSIDE_TARGET_ARCHITECTURE ${CMAKE_SIZEOF_VOID_P})
ENDIF(NOT DEFINED ARINSIDE_TARGET_ARCHITECTURE)

INCLUDE(TestBigEndian)
TEST_BIG_ENDIAN(RAPIDJSON_USE_BIG_ENDIAN)
IF(${RAPIDJSON_USE_BIG_ENDIAN})
     ADD_DEFINITIONS(-DRAPIDJSON_ENDIAN=1)
ENDIF(${RAPIDJSON_USE_BIG_ENDIAN})

INCLUDE_DIRECTORIES(${AR_INCLUDE_PATH}/include thirdparty/ ./ ${ZLIB_INCLUDE_PATH}/include)

INCLUDE (CheckIncludeFiles)
CHECK_INCLUDE_FILES("unistd.h" HAVE_UNISTD_H)
CHECK_INCLUDE_FILES("strings.h" HAVE_STRINGS_H)

CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/FileSystemUtilTest.h.in ${CMAKE_CURRENT_BINARY_DIR}/FileSystemUtilTest.h)

ADD_DEFINITIONS(-DAR_STRICT_ANSI -D_CRT_SECURE_NO_DEPRECATE -DARINSIDE_ENABLE_ZLIB_SUPPORT)
IF(ARINSIDE_BETA)
	ADD_DEFINITIONS(-D_ARINSIDE_BETA)
ENDIF(ARINSIDE_BETA)

SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")
SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -D_DEBUG")

MESSAGE(STATUS "Is GNU CXX? -- ${CMAKE_COMPILER_IS_GNUCXX}")
IF(UNIX AND CMAKE_COMPILER_IS_GNUCXX AND ARINSIDE_TARGET_ARCHITECTURE EQUAL 4 AND CMAKE_SIZEOF_VOID_P EQUAL 8)
	# use special compiler and linker flags on *nix platforms when doing 32bit cross-compile
	ADD_DEFINITIONS(-m32)
	SET(CMAKE_EXE_LINKER_FLAGS -m32)
ENDIF(UNIX AND CMAKE_COMPILER_IS_GNUCXX AND ARINSIDE_TARGET_ARCHITECTURE EQUAL 4 AND CMAKE_SIZEOF_VOID_P EQUAL 8)

INCLUDE(project.cmake/files.cmake)

IF(CMAKE_COMPILER_IS_GNUCC)
	SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc -static-libstdc++")
ENDIF(CMAKE_COMPILER_IS_GNUCC)

# set link libraries for project
IF(UNIX)
	FIND_PACKAGE(Threads)
	LINK_LIBRARIES(${CMAKE_DL_LIBS} ${CMAKE_THREAD_LIBS_INIT})

	## solaris / aix specific libs
	IF(CMAKE_SYSTEM_NAME STREQUAL "SunOS" OR CMAKE_SYSTEM_NAME STREQUAL "AIX")
		LINK_LIBRARIES(nsl)
	ENDIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS" OR CMAKE_SYSTEM_NAME STREQUAL "AIX")

	IF(CMAKE_SYSTEM_NAME STREQUAL "AIX")
		LINK_LIBRARIES(tli)
	ENDIF(CMAKE_SYSTEM_NAME STREQUAL "AIX")
	
	IF(ARINSIDE_TARGET_ARCHITECTURE EQUAL 4 AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
		ADD_DEFINITIONS(-malign-double)
	ENDIF(ARINSIDE_TARGET_ARCHITECTURE EQUAL 4 AND "${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
ENDIF(UNIX)

SET(ARINSIDE_ARAPI_ICUDATABMC_LIBNAME "icudatabmc")
SET(ARINSIDE_ARAPI_ICUI18NBMC_LIBNAME "icui18nbmc")
SET(ARINSIDE_ARAPI_ICUUCBMC_LIBNAME "icuucbmc")
IF(WIN32)
	SET(ARINSIDE_ARAPI_LIB arapi81_build001 arapi80_build001 arapi7604_build002 arapi7603_build001 arapi75 arapi71 arapi70)
	SET(ZLIB_LIBNAMES zlibwapi)
	SET(ARINSIDE_ADDITIONAL_LIBS shlwapi.lib)
ELSE(WIN32)
	SET(ARINSIDE_ARAPI_LIB ar)
	SET(ZLIB_LIBNAMES z)
ENDIF(WIN32)

# set special library suffixes, compiler- and linker flags for 64-bit builds
IF(ARINSIDE_TARGET_ARCHITECTURE EQUAL 8)
	MESSAGE(STATUS "Building for 64 bit platform")
	SET(TEMP_ARAPI_LIBS "")
	
	IF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
		SET(LIBAR_SUFFIX "_win64")
	ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "Linux")
		SET(LIBAR_SUFFIX "_lx64")
		IF(CMAKE_SIZEOF_VOID_P EQUAL 4) ## if we target 64-bit but the default is 32-bit, add some special flags
			ADD_DEFINITIONS(-m64)
			SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
		ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)
	ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS")
		SET(LIBAR_SUFFIX "_solsp64")
		IF(CMAKE_SIZEOF_VOID_P EQUAL 4) ## if we target 64-bit but the default is 32-bit, add some special flags
			ADD_DEFINITIONS(-m64)
			SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -m64")
		ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)
	ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "AIX")
		SET(LIBAR_SUFFIX "_aixp64")
		IF(CMAKE_SIZEOF_VOID_P EQUAL 4) ## if we target 64-bit but the default is 32-bit, add some special flags
			ADD_DEFINITIONS(-maix64 -mminimal-toc)
			SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-brtl -maix64")
		ENDIF(CMAKE_SIZEOF_VOID_P EQUAL 4)
	ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Windows")
	
	FOREACH(TEMP_ARAPI_LIB_NAME ${ARINSIDE_ARAPI_LIB})
		LIST(APPEND TEMP_ARAPI_LIBS "${TEMP_ARAPI_LIB_NAME}${LIBAR_SUFFIX}")
	ENDFOREACH()
	SET(ARINSIDE_ARAPI_LIB ${TEMP_ARAPI_LIBS})
	
	SET(ARINSIDE_ARAPI_ICUDATABMC_LIBNAME "${ARINSIDE_ARAPI_ICUDATABMC_LIBNAME}${LIBAR_SUFFIX}")
	SET(ARINSIDE_ARAPI_ICUI18NBMC_LIBNAME "${ARINSIDE_ARAPI_ICUI18NBMC_LIBNAME}${LIBAR_SUFFIX}")
	SET(ARINSIDE_ARAPI_ICUUCBMC_LIBNAME "${ARINSIDE_ARAPI_ICUUCBMC_LIBNAME}${LIBAR_SUFFIX}")
	
	SET(ZLIB_LIB_PATH "${ZLIB_INCLUDE_PATH}/lib64")
ELSE(ARINSIDE_TARGET_ARCHITECTURE EQUAL 8)
	MESSAGE(STATUS "Building for 32 bit platform")
	SET(ZLIB_LIB_PATH "${ZLIB_INCLUDE_PATH}/lib")
ENDIF(ARINSIDE_TARGET_ARCHITECTURE EQUAL 8)

FIND_LIBRARY(ARS_API_LIB NAMES ${ARINSIDE_ARAPI_LIB} PATHS ${AR_INCLUDE_PATH}/lib)
FIND_LIBRARY(ARS_API_ICUDATABMC_LIB NAMES ${ARINSIDE_ARAPI_ICUDATABMC_LIBNAME} PATHS ${AR_INCLUDE_PATH}/lib)
FIND_LIBRARY(ARS_API_ICUI18NBMC_LIB NAMES ${ARINSIDE_ARAPI_ICUI18NBMC_LIBNAME} PATHS ${AR_INCLUDE_PATH}/lib)
FIND_LIBRARY(ARS_API_ICUUCBMC_LIB NAMES ${ARINSIDE_ARAPI_ICUUCBMC_LIBNAME} PATHS ${AR_INCLUDE_PATH}/lib)
FIND_LIBRARY(ZLIB_LIB NAMES ${ZLIB_LIBNAMES} PATHS ${ZLIB_LIB_PATH})

# check that necessary libs were found
MESSAGE(STATUS "libar: (${ARINSIDE_ARAPI_LIB}) -- ${ARS_API_LIB}")
IF (NOT ARS_API_LIB)
	MESSAGE(FATAL_ERROR "Could not find ${ARINSIDE_ARAPI_LIB} in '${AR_INCLUDE_PATH}'! Please check or specify AR_INCLUDE_PATH variable")
ENDIF (NOT ARS_API_LIB)

IF (NOT ZLIB_LIB)
	MESSAGE(FATAL_ERROR "Could not find ${ZLIB_LIBNAMES} in '${ZLIB_LIB_PATH}'! Please check or specify ZLIB_INCLUDE_PATH variable")
ENDIF (NOT ZLIB_LIB)

MESSAGE(STATUS "icudatabmc: (${ARINSIDE_ARAPI_ICUDATABMC_LIBNAME}) -- ${ARS_API_ICUDATABMC_LIB}")
IF(ARS_API_ICUDATABMC_LIB)
	LINK_LIBRARIES(${ARS_API_ICUDATABMC_LIB})
ENDIF(ARS_API_ICUDATABMC_LIB)

MESSAGE(STATUS "icui18nbmc: (${ARINSIDE_ARAPI_ICUI18NBMC_LIBNAME}) -- ${ARS_API_ICUI18NBMC_LIB}")
IF(ARS_API_ICUI18NBMC_LIB)
	LINK_LIBRARIES(${ARS_API_ICUI18NBMC_LIB})
ENDIF(ARS_API_ICUI18NBMC_LIB)

MESSAGE(STATUS "icuucbmc: (${ARINSIDE_ARAPI_ICUUCBMC_LIBNAME}) -- ${ARS_API_ICUUCBMC_LIB}")
IF(ARS_API_ICUUCBMC_LIB)
	LINK_LIBRARIES(${ARS_API_ICUUCBMC_LIB})
ENDIF(ARS_API_ICUUCBMC_LIB)

# now generate and import resources
ADD_CUSTOM_TARGET(resource_directory ALL
	COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/active_link.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/al_guide.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/application.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/ars_edit.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/chapter.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/custom.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/disabled.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/doc.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/down.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/edit.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/empty_list.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/escalation.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/filter.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/filter_guide.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/folder.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/group.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/hidden.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/image.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/info.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/menu.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/next.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/object_list.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/overlay.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/packing_list.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/prev.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/role.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema_display.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema_join.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema_vendor.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema_view.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/search.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/server.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/sort_asc.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/sort_desc.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/up.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/user.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/visible.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/webservice.gif ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/script.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/sortscript.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/tabscript.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schema_page.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/arshelper.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/schemaList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/actlinkList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/filterList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/escalationList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/menuList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/containerList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/imageList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/groupList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/roleList.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/res/style.css ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/jquery-ui-custom.css ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/jquery-ui.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/jquery.address.min.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/jquery.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/jquery.timers.js ${CMAKE_BINARY_DIR}/img
	COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_BINARY_DIR}/img/images
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/images/ui-bg_glass_75_e6e6e6_1x400.png ${CMAKE_BINARY_DIR}/img/images
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/jquery/images/ui-bg_glass_65_ffffff_1x400.png ${CMAKE_BINARY_DIR}/img/images
)

ADD_CUSTOM_TARGET(${RES_PROJECT_NAME} ALL 
	COMMAND ${CMAKE_COMMAND} -E tar "czf" "${arinside_BINARY_DIR}/arires.tgz" img WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" DEPENDS resource_directory
)

ADD_CUSTOM_TARGET(gtestzippedsource ALL
	COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty/gtest-1.6.0.zip ${CMAKE_BINARY_DIR}/thirdparty/src/
)

# generate svnrev.h file
#FIND_PACKAGE(Subversion)
IF(Subversion_FOUND)
	Subversion_WC_INFO(${PROJECT_SOURCE_DIR} ARINSIDE)
ELSE(Subversion_FOUND)
	SET(ARINSIDE_WC_REVISION SVNMISS)
ENDIF(Subversion_FOUND)
FILE(READ ${PROJECT_SOURCE_DIR}/svnrev_template.h SVNREV_TEMPLATE)
STRING(REPLACE "$WCREV$" ${ARINSIDE_WC_REVISION} SVNREV_TEMPLATE "${SVNREV_TEMPLATE}")
FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/svnrev.h ${SVNREV_TEMPLATE})
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})

# now setup testing ... http://stackoverflow.com/questions/9689183/cmake-googletest
INCLUDE(ExternalProject)
SET_DIRECTORY_PROPERTIES(PROPERTIES EP_PREFIX ${CMAKE_BINARY_DIR}/thirdparty)
ExternalProject_Add(
	googletest
	DEPENDS gtestzippedsource
	URL gtest-1.6.0.zip
	TIMEOUT 10
	# Force separate output paths for debug and release builds to allow easy
	# identification of correct lib in subsequent TARGET_LINK_LIBRARIES commands
	CMAKE_ARGS -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG:PATH=DebugLibs
			   -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE:PATH=ReleaseLibs
			   -Dgtest_force_shared_crt=ON
	# Disable install step
	INSTALL_COMMAND ""
	# Wrap download, configure and build steps in a script to log output
	###These LOG_XXX params are only supported in cmake2.8.3+ and are disabled here to get backwards compatibility with 2.8.0
	#LOG_DOWNLOAD ON
	#LOG_CONFIGURE ON
	#LOG_BUILD ON
)
	
ExternalProject_Get_Property(googletest source_dir)
INCLUDE_DIRECTORIES(${source_dir}/include)
ExternalProject_Get_Property(googletest binary_dir)
SET(GTEST_BINARY_DIR ${binary_dir})
ENABLE_TESTING()

# Add compiler flag for MSVC 2012
if(MSVC_VERSION EQUAL 1700)
  add_definitions(-D_VARIADIC_MAX=10)
endif()

LINK_DIRECTORIES(${GTEST_BINARY_DIR})

# setup output target
ADD_LIBRARY(${LIB_PROJECT_NAME} ${ARINSIDE_SRCS} ${ARINSIDE_RESOURCE_OBJECTS})
ADD_EXECUTABLE(${MAIN_PROJECT_NAME} ${ARINSIDE_MAIN_SRCS})
ADD_EXECUTABLE(${TEST_PROJECT_NAME} ${ARINSIDE_TEST_SRCS})

# dependencies
ADD_DEPENDENCIES(${TEST_PROJECT_NAME} ${LIB_PROJECT_NAME} googletest)
ADD_DEPENDENCIES(${MAIN_PROJECT_NAME} ${LIB_PROJECT_NAME} ${RES_PROJECT_NAME})

# reference the needed libraries
TARGET_LINK_LIBRARIES(${MAIN_PROJECT_NAME} ${ARS_API_LIB} ${ZLIB_LIB} ${ARINSIDE_ADDITIONAL_LIBS} ${LIB_PROJECT_NAME})
TARGET_LINK_LIBRARIES(${TEST_PROJECT_NAME} ${ARS_API_LIB} ${ZLIB_LIB} ${ARINSIDE_ADDITIONAL_LIBS} ${LIB_PROJECT_NAME})
IF(MSVC)
	TARGET_LINK_LIBRARIES(${TEST_PROJECT_NAME}
		debug ${GTEST_BINARY_DIR}/DebugLibs/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${CMAKE_FIND_LIBRARY_SUFFIXES}
		optimized ${GTEST_BINARY_DIR}/ReleaseLibs/${CMAKE_FIND_LIBRARY_PREFIXES}gtest${CMAKE_FIND_LIBRARY_SUFFIXES}
	)
ELSE(MSVC)
	TARGET_LINK_LIBRARIES(${TEST_PROJECT_NAME} gtest)
ENDIF(MSVC)

ADD_TEST(NAME test COMMAND ${TEST_PROJECT_NAME})
#INSTALL(TARGETS arinside DESTINATION bin)
