PROJECT(PosteRazor)

IF (WIN32 OR APPLE)
	SET(POSTERAZOR_ENABLEGLPREVIEW TRUE)
	SET(POSTERAZOR_ENABLELAUNCHURLSORFILES TRUE)
ENDIF (WIN32 OR APPLE)

IF (MSVC)
	SET(POSTERAZOR_WIN32STATICRUNTIMES TRUE)
	SET(POSTERAZOR_DEFINITIONS
		${POSTERAZOR_DEFINITIONS}
		-D_CRT_SECURE_NO_WARNINGS
	)
ENDIF (MSVC)

SET(POSTERAZOR_CORESOURCES
	ImageIOTypes.cpp
	PosteRazor.cpp
	PosteRazorImageIO.cpp
	PosteRazorPDFOutput.cpp
	UnitsOfLength.cpp
	PaperFormats.cpp
	PaintCanvasBase.cpp
)

SET(POSTERAZOR_UISOURCES
	Translations.cpp
	FlPaintCanvasGroup.cpp
	FlDrawPaintCanvas.cpp
	FlPersistentPreferences.cpp
	FlImageTextButton.cpp
	FlPosteRazorSpinner.cpp
	PosteRazorDialogController.cpp
	PosteRazorWizardDialogController.cpp
	FlPosteRazorDialog.cpp
	FlPosteRazorHelpDialog.cpp
	FlPosteRazorSettingsDialog.cpp
	FlPosteRazorDialogUI.cpp
	thirdparty/Fl_Native_File_Chooser/Fl_Native_File_Chooser.cxx
)

SET(POSTERAZOR_INCLUDEDIRECTORIES
	thirdparty/Fl_Native_File_Chooser
)

IF (POSTERAZOR_ENABLEGLPREVIEW)
	SET(POSTERAZOR_UISOURCES
		${POSTERAZOR_UISOURCES}
		FlGlPaintCanvas.cpp
	)
ENDIF (POSTERAZOR_ENABLEGLPREVIEW)

SET(POSTERAZOR_SOURCES
	${POSTERAZOR_CORESOURCES}
	${POSTERAZOR_UISOURCES}
)

SET(POSTERAZOR_DEFINITIONS
	${POSTERAZOR_DEFINITIONS}
	-DFREEIMAGE_LIB
)

IF (NOT POSTERAZOR_ENABLEGLPREVIEW)
	SET(POSTERAZOR_DEFINITIONS
		${POSTERAZOR_DEFINITIONS}
		-DNO_OPENGL_PREVIEW
	)
ENDIF (NOT POSTERAZOR_ENABLEGLPREVIEW)

IF (NOT POSTERAZOR_ENABLELAUNCHURLSORFILES)
	SET(POSTERAZOR_DEFINITIONS
		${POSTERAZOR_DEFINITIONS}
		-DNO_LAUNCH_URLS_OR_FILES
	)
ENDIF (NOT POSTERAZOR_ENABLELAUNCHURLSORFILES)

IF (WIN32)
	SET(POSTERAZOR_EXECUTABLE WIN32 ${POSTERAZOR_SOURCES} PosteRazorUI.rc)
	SET(POSTERAZOR_INCLUDEDIRECTORIES ${POSTERAZOR_INCLUDEDIRECTORIES}
		thirdparty/FreeImage/Dist
		thirdparty/fltk-1.1
	)
	SET(POSTERAZOR_LINKDIRECTORIES
		thirdparty/FreeImage/Dist
		thirdparty/fltk-1.1/lib
	)
	SET(POSTERAZOR_LINKLIBRARIES
		debug FreeImaged
		optimized FreeImage
		debug fltkd
		optimized fltk
		wsock32
		comctl32
	)
	IF (POSTERAZOR_ENABLEGLPREVIEW)
		SET(POSTERAZOR_LINKLIBRARIES
			${POSTERAZOR_LINKLIBRARIES}
			debug fltkgld
			optimized fltkgl
			glu32
			opengl32
		)
	ENDIF (POSTERAZOR_ENABLEGLPREVIEW)
	IF (POSTERAZOR_WIN32STATICRUNTIMES)
		SET(POSTERAZOR_LINKLIBRARIES
			${POSTERAZOR_LINKLIBRARIES}
			debug libcmtd
			optimized libcmt
		)
		SET(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /RTCs /MTd /Zi /Od")
		SET(CMAKE_CXX_FLAGS_RELEASE "/MT /O2 /Ob2 /D NDEBUG")
		SET(POSTERAZOR_TARGET_PROPERTIES PROPERTIES LINK_FLAGS_DEBUG "/DEBUG")
	ELSE (POSTERAZOR_WIN32STATICRUNTIMES)
		SET(POSTERAZOR_TARGET_PROPERTIES PROPERTIES
			LINK_FLAGS_DEBUG "/nodefaultlib:LIBCMTD"
			LINK_FLAGS_RELEASE "/nodefaultlib:LIBCMT"
		)
	ENDIF (POSTERAZOR_WIN32STATICRUNTIMES)
ENDIF (WIN32)

IF (APPLE)
	SET(POSTERAZOR_EXECUTABLE MACOSX_BUNDLE ${POSTERAZOR_SOURCES})
	SET(POSTERAZOR_LINKLIBRARIES
		fltk
		fltk_gl
		freeimage
		"-framework Carbon -framework AGL -framework ApplicationServices -framework OpenGL -lz"
	)
ENDIF(APPLE)

IF (UNIX AND NOT APPLE)
	SET(POSTERAZOR_EXECUTABLE ${POSTERAZOR_SOURCES})
	SET(POSTERAZOR_LINKLIBRARIES
		fltk
		fltk_images
		freeimage
		X11
		Xpm
#		Xft
#		Xinerama
	)
	IF (POSTERAZOR_ENABLEGLPREVIEW)
		SET(POSTERAZOR_LINKLIBRARIES
			${POSTERAZOR_LINKLIBRARIES}
			fltk_gl
		)
	ENDIF (POSTERAZOR_ENABLEGLPREVIEW)
ENDIF (UNIX AND NOT APPLE)

LINK_DIRECTORIES(${POSTERAZOR_LINKDIRECTORIES})
ADD_EXECUTABLE(PosteRazor ${POSTERAZOR_EXECUTABLE})
IF (DEFINED POSTERAZOR_TARGET_PROPERTIES)
	SET_TARGET_PROPERTIES(PosteRazor ${POSTERAZOR_TARGET_PROPERTIES})
ENDIF (DEFINED POSTERAZOR_TARGET_PROPERTIES)
ADD_DEFINITIONS(${POSTERAZOR_DEFINITIONS})
INCLUDE_DIRECTORIES(${POSTERAZOR_INCLUDEDIRECTORIES})
TARGET_LINK_LIBRARIES(PosteRazor ${POSTERAZOR_LINKLIBRARIES})

IF (APPLE)
	GET_TARGET_PROPERTY(MACOSX_BUNDLE_LOCATION PosteRazor LOCATION)
	SET(MACOSX_CONTENTS_PATH ${MACOSX_BUNDLE_LOCATION}.app/Contents)
	SET(MACOSX_RESOURCES_PATH ${MACOSX_CONTENTS_PATH}/Resources)
	ADD_CUSTOM_COMMAND(TARGET PosteRazor POST_BUILD
		COMMAND mkdir ARGS -p ${MACOSX_RESOURCES_PATH}
		COMMAND cp ARGS PosteRazor.icns ${MACOSX_RESOURCES_PATH}
		COMMAND cp ARGS Info.plist ${MACOSX_CONTENTS_PATH}
		COMMAND strip ARGS ${MACOSX_CONTENTS_PATH}/MacOS/PosteRazor
		)
	FOREACH(language English German French Italian Dutch Spanish BrazilianPortuguese)
		ADD_CUSTOM_COMMAND(TARGET PosteRazor POST_BUILD
			COMMAND mkdir ARGS -p ${MACOSX_RESOURCES_PATH}/${language}.lproj)
	ENDFOREACH(language)
ENDIF(APPLE)
