set(APP_NAME cpp-tests)

if(WIN32)
  set(PLATFORM_SRC
    Classes/ExtensionsTest/EditBoxTest/EditBoxTest.cpp
    Classes/ExtensionsTest/NetworkTest/WebSocketTest.cpp
    Classes/ExtensionsTest/NetworkTest/SocketIOTest.cpp
    proj.win32/main.cpp
  )
else()
  set(PLATFORM_SRC
    proj.linux/main.cpp
  )
endif()

set(SAMPLE_SRC
  Classes/AccelerometerTest/AccelerometerTest.cpp
  Classes/ActionManagerTest/ActionManagerTest.cpp
  Classes/ActionsEaseTest/ActionsEaseTest.cpp
  Classes/ActionsProgressTest/ActionsProgressTest.cpp
  Classes/ActionsTest/ActionsTest.cpp
  Classes/Box2DTest/Box2dTest.cpp
  Classes/Box2DTestBed/Box2dView.cpp
  Classes/Box2DTestBed/GLES-Render.cpp
  Classes/Box2DTestBed/Test.cpp
  Classes/Box2DTestBed/TestEntries.cpp
  Classes/BugsTest/Bug-1159.cpp
  Classes/BugsTest/Bug-1174.cpp
  Classes/BugsTest/Bug-350.cpp
  Classes/BugsTest/Bug-422.cpp
  Classes/BugsTest/Bug-458/Bug-458.cpp
  Classes/BugsTest/Bug-458/QuestionContainerSprite.cpp
  Classes/BugsTest/Bug-624.cpp
  Classes/BugsTest/Bug-886.cpp
  Classes/BugsTest/Bug-899.cpp
  Classes/BugsTest/Bug-914.cpp
  Classes/BugsTest/BugsTest.cpp
  Classes/BugsTest/Bug-Child.cpp
  Classes/ChipmunkTest/ChipmunkTest.cpp
  Classes/ClickAndMoveTest/ClickAndMoveTest.cpp
  Classes/ClippingNodeTest/ClippingNodeTest.cpp
  Classes/CocosDenshionTest/CocosDenshionTest.cpp
  Classes/CurlTest/CurlTest.cpp
  Classes/CurrentLanguageTest/CurrentLanguageTest.cpp
  Classes/DrawPrimitivesTest/DrawPrimitivesTest.cpp
  Classes/EffectsAdvancedTest/EffectsAdvancedTest.cpp
  Classes/EffectsTest/EffectsTest.cpp
  Classes/ExtensionsTest/CocosBuilderTest/ButtonTest/ButtonTestLayer.cpp
  Classes/ExtensionsTest/CocosBuilderTest/CocosBuilderTest.cpp
  Classes/ExtensionsTest/CocosBuilderTest/HelloCocosBuilder/HelloCocosBuilderLayer.cpp
  Classes/ExtensionsTest/CocosBuilderTest/AnimationsTest/AnimationsTestLayer.cpp
  Classes/ExtensionsTest/CocosBuilderTest/MenuTest/MenuTestLayer.cpp
  Classes/ExtensionsTest/CocosBuilderTest/TestHeader/TestHeaderLayer.cpp
  Classes/ExtensionsTest/CocosBuilderTest/TimelineCallbackTest/TimelineCallbackTestLayer.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlButtonTest/CCControlButtonTest.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlColourPicker/CCControlColourPickerTest.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlScene.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlSceneManager.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlSliderTest/CCControlSliderTest.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlSwitchTest/CCControlSwitchTest.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlPotentiometerTest/CCControlPotentiometerTest.cpp
  Classes/ExtensionsTest/ControlExtensionTest/CCControlStepperTest/CCControlStepperTest.cpp
  Classes/ExtensionsTest/TableViewTest/TableViewTestScene.cpp
  Classes/ExtensionsTest/TableViewTest/CustomTableViewCell.cpp
  Classes/ExtensionsTest/ExtensionsTest.cpp
  Classes/ExtensionsTest/NotificationCenterTest/NotificationCenterTest.cpp
  Classes/ExtensionsTest/NetworkTest/HttpClientTest.cpp
  Classes/ExtensionsTest/CocoStudioArmatureTest/ArmatureScene.cpp
  Classes/ExtensionsTest/CocoStudioComponentsTest/ComponentsTestScene.cpp
  Classes/ExtensionsTest/CocoStudioComponentsTest/EnemyController.cpp
  Classes/ExtensionsTest/CocoStudioComponentsTest/GameOverScene.cpp
  Classes/ExtensionsTest/CocoStudioComponentsTest/PlayerController.cpp
  Classes/ExtensionsTest/CocoStudioComponentsTest/ProjectileController.cpp
  Classes/ExtensionsTest/CocoStudioComponentsTest/SceneController.cpp
  Classes/ExtensionsTest/CocoStudioSceneTest/SceneEditorTest.cpp
  Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/acts.cpp
  Classes/ExtensionsTest/CocoStudioSceneTest/TriggerCode/cons.cpp
  Classes/UITest/CocoStudioGUITest/CocoStudioGUITest.cpp
  Classes/UITest/CocoStudioGUITest/CocosGUIScene.cpp
  Classes/UITest/CocoStudioGUITest/GUIEditorTest.cpp
  Classes/UITest/CocoStudioGUITest/CustomGUIScene.cpp
  Classes/UITest/CocoStudioGUITest/UIScene.cpp
  Classes/UITest/CocoStudioGUITest/UISceneManager.cpp
  Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest.cpp
  Classes/UITest/CocoStudioGUITest/UIFocusTest/UIFocusTest.cpp
  Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest.cpp
  Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest.cpp
  Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest.cpp
  Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest.cpp
  Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest.cpp
  Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest.cpp
  Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest.cpp
  Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest.cpp
  Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest.cpp
  Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest.cpp
  Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest.cpp
  Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest.cpp
  Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest.cpp
  Classes/UITest/CocoStudioGUITest/UIRichTextTest/UIRichTextTest.cpp
  Classes/UITest/CocoStudioGUITest/UIScene_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UISceneManager_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UIButtonTest/UIButtonTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UICheckBoxTest/UICheckBoxTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UIImageViewTest/UIImageViewTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UILayoutTest/UILayoutTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UIListViewTest/UIListViewTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UILoadingBarTest/UILoadingBarTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UIPageViewTest/UIPageViewTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UIScrollViewTest/UIScrollViewTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UISliderTest/UISliderTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UITextTest/UITextTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UITextAtlasTest/UITextAtlasTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UITextBMFontTest/UITextBMFontTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UITextFieldTest/UITextFieldTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/UIWidgetAddNodeTest/UIWidgetAddNodeTest_Editor.cpp
  Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageView.cpp
  Classes/UITest/CocoStudioGUITest/CustomWidget/CustomImageViewReader.cpp
  Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidget.cpp
  Classes/UITest/CocoStudioGUITest/CustomWidget/CustomParticleWidgetReader.cpp
  Classes/UITest/CocoStudioGUITest/CustomWidget/CustomReader.cpp
  Classes/UITest/CocoStudioGUITest/CustomTest/CustomImageTest/CustomImageTest.cpp
  Classes/UITest/CocoStudioGUITest/CustomTest/CustomParticleWidgetTest/CustomParticleWidgetTest.cpp
  Classes/ExtensionsTest/Scale9SpriteTest/Scale9SpriteTest.cpp
  Classes/NewRendererTest/NewRendererTest.cpp
  Classes/NewEventDispatcherTest/NewEventDispatcherTest.cpp
  Classes/FontTest/FontTest.cpp
  Classes/IntervalTest/IntervalTest.cpp
  Classes/KeyboardTest/KeyboardTest.cpp
  Classes/InputTest/MouseTest.cpp
  Classes/KeypadTest/KeypadTest.cpp
  Classes/LabelTest/LabelTest.cpp
  Classes/LabelTest/LabelTestNew.cpp
  Classes/LayerTest/LayerTest.cpp
  Classes/MenuTest/MenuTest.cpp
  Classes/MotionStreakTest/MotionStreakTest.cpp
  Classes/MutiTouchTest/MutiTouchTest.cpp
  Classes/NodeTest/NodeTest.cpp
  Classes/ParallaxTest/ParallaxTest.cpp
  Classes/ParticleTest/ParticleTest.cpp
  Classes/PerformanceTest/PerformanceAllocTest.cpp
  Classes/PerformanceTest/PerformanceNodeChildrenTest.cpp
  Classes/PerformanceTest/PerformanceParticleTest.cpp
  Classes/PerformanceTest/PerformanceSpriteTest.cpp
  Classes/PerformanceTest/PerformanceTest.cpp
  Classes/PerformanceTest/PerformanceTextureTest.cpp
  Classes/PerformanceTest/PerformanceTouchesTest.cpp
  Classes/PerformanceTest/PerformanceLabelTest.cpp
  Classes/PerformanceTest/PerformanceRendererTest.cpp
  Classes/PerformanceTest/PerformanceContainerTest.cpp
  Classes/PerformanceTest/PerformanceEventDispatcherTest.cpp
  Classes/PerformanceTest/PerformanceScenarioTest.cpp
  Classes/PerformanceTest/PerformanceCallbackTest.cpp
  Classes/PhysicsTest/PhysicsTest.cpp
  Classes/ReleasePoolTest/ReleasePoolTest.cpp
  Classes/RenderTextureTest/RenderTextureTest.cpp
  Classes/RotateWorldTest/RotateWorldTest.cpp
  Classes/SceneTest/SceneTest.cpp
  Classes/SchedulerTest/SchedulerTest.cpp
  Classes/ShaderTest/ShaderTest.cpp
  Classes/ShaderTest/ShaderTest2.cpp
  Classes/SpriteTest/SpriteTest.cpp
  Classes/Sprite3DTest/Sprite3DTest.cpp
  Classes/TextInputTest/TextInputTest.cpp
  Classes/Texture2dTest/Texture2dTest.cpp
  Classes/TexturePackerEncryptionTest/TextureAtlasEncryptionTest.cpp
  Classes/TextureCacheTest/TextureCacheTest.cpp
  Classes/TileMapTest/TileMapTest.cpp
  Classes/TouchesTest/Ball.cpp
  Classes/TouchesTest/Paddle.cpp
  Classes/TouchesTest/TouchesTest.cpp
  Classes/TransitionsTest/TransitionsTest.cpp
  Classes/UserDefaultTest/UserDefaultTest.cpp
  Classes/ZwoptexTest/ZwoptexTest.cpp
  Classes/FileUtilsTest/FileUtilsTest.cpp
  Classes/SpineTest/SpineTest.cpp
  Classes/DataVisitorTest/DataVisitorTest.cpp
  Classes/ConfigurationTest/ConfigurationTest.cpp
  Classes/ConsoleTest/ConsoleTest.cpp
  Classes/UnitTest/RefPtrTest.cpp
  Classes/UnitTest/UnitTest.cpp
  Classes/UITest/UITest.cpp
  Classes/controller.cpp
  Classes/testBasic.cpp
  Classes/AppDelegate.cpp
  Classes/BaseTest.cpp
  Classes/VisibleRect.cpp
  ${PLATFORM_SRC}
)

include_directories(
  Classes
)

# add the executable
add_executable(${APP_NAME}
  ${SAMPLE_SRC}
)

target_link_libraries(${APP_NAME}
  spine
  cocostudio
  cocosbuilder
  extensions
  audio
  cocos2d
  box2d
)

set(APP_BIN_DIR "${CMAKE_BINARY_DIR}/bin/${APP_NAME}")

set_target_properties(${APP_NAME} PROPERTIES
     RUNTIME_OUTPUT_DIRECTORY  "${APP_BIN_DIR}")

pre_build(${APP_NAME}
  COMMAND ${CMAKE_COMMAND} -E remove_directory ${APP_BIN_DIR}/Resources
  COMMAND ${CMAKE_COMMAND} -E copy_directory ${CMAKE_CURRENT_SOURCE_DIR}/Resources ${APP_BIN_DIR}/Resources
  )