Browse Source

Merge pull request #1809 from FunMiles/next_Mac_cmake

Next mac cmake
Sean Taylor 9 years ago
parent
commit
789629aca5

+ 16 - 2
gameplay/CMakeLists.txt

@@ -1,3 +1,11 @@
+IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    set(GAMEPLAY_PLATFORM_SRC
+            src/PlatformMacOSX.mm
+            src/gameplay-main-macosx.mm
+            )
+else(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    set(GAMEPLAY_PLATFORM_SRC )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
 set(GAMEPLAY_SRC
     src/AbsoluteLayout.cpp
@@ -165,6 +173,7 @@ set(GAMEPLAY_SRC
     src/PlatformAndroid.cpp
     src/PlatformLinux.cpp
     src/PlatformWindows.cpp
+    ${GAMEPLAY_PLATFORM_SRC}
     src/Properties.cpp
     src/Properties.h
     src/Quaternion.cpp
@@ -555,8 +564,13 @@ add_definitions(${GTK2_CFLAGS_OTHER})
 add_definitions(-D__linux__)
 ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
 
-add_definitions(-std=c++11)
-add_definitions(-lstdc++)
+if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+    # using Clang
+    add_definitions(-std=c++11 -stdlib=libc++)
+else()
+    add_definitions(-std=c++11)
+    add_definitions(-lstdc++)
+endif()
 
 add_library(gameplay STATIC
     ${GAMEPLAY_SRC}

+ 33 - 0
samples/BuildHelpers.CMakeLists.txt

@@ -49,3 +49,36 @@ macro(COPY_RES_EXTRA GAME_NAME REL_DIR)
     COPY_RES_FILES( ${GAME_NAME} ${GAME_NAME}_EXTRA_RES ${REL_DIR} "${SRC_FILES}" )
     add_dependencies( ${GAME_NAME}_ASSETS ${GAME_NAME}_EXTRA_RES )
 endmacro()
+
+# Build a list of file matching a list of regular expression within a given path
+#   RESULT name of the global variable into which the result is built
+#   REL_PATH the path under which the files are to be found
+#   ARGN list of patterns
+macro(MAKE_ABSOLUTE RESULT REL_PATH)
+    set(${RESULT})
+    foreach(SRC_FILE ${ARGN} )
+        file(GLOB XX ${REL_PATH}/${SRC_FILE})
+        list(APPEND ${RESULT} ${XX})
+    endforeach()
+endmacro()
+
+# Build a list of resource files matching a list of regular expression within a given path
+# and mark their correct Mac OS X destination, keeping the relative position to a base path
+#   RESULT name of the global variable into which the result is built
+#   BASE_SRC_PATH the base path under which the structure is replicated in the bundle
+#   REL_PATH a pattern to be matched and searched recursively.
+macro(COPY_RES_MAC RESULT BASE_SRC_PATH)
+	set(${RESULT})
+	foreach(PATTERN ${ARGN} )
+            file(GLOB_RECURSE XX RELATIVE ${BASE_SRC_PATH} ${BASE_SRC_PATH}/${PATTERN})
+            foreach(FNAME ${XX})
+                list(APPEND ${RESULT} ${BASE_SRC_PATH}/${FNAME})
+                get_filename_component(DIR ${FNAME} DIRECTORY )
+                set_source_files_properties(
+                            ${BASE_SRC_PATH}/${FNAME}
+                            PROPERTIES
+                            MACOSX_PACKAGE_LOCATION Resources/${DIR}
+                    )
+            endforeach()
+    endforeach()
+endmacro()

+ 66 - 23
samples/CMakeLists.txt

@@ -1,33 +1,76 @@
 include(BuildHelpers.CMakeLists.txt)
 
-include_directories( 
-    ${CMAKE_SOURCE_DIR}/gameplay/src
-    ${CMAKE_SOURCE_DIR}/external-deps/include
+include_directories(
+        ${CMAKE_SOURCE_DIR}/gameplay/src
+        ${CMAKE_SOURCE_DIR}/external-deps/include
 )
 
-add_definitions(-D__linux__)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    find_package(OpenGL REQUIRED)
+    FIND_LIBRARY(AGL_LIBRARY AGL)
+    FIND_LIBRARY(APP_SERVICES_LIBRARY ApplicationServices )
+    FIND_LIBRARY(ATBOX_LIBRARY AudioToolbox)
+    FIND_LIBRARY(CARBON_LIBRARY Carbon)
+    FIND_LIBRARY(CAUDIO_LIBRARY CoreAudio)
+    FIND_LIBRARY(COREVIDEO_LIBRARY CoreVideo)
+    FIND_LIBRARY(CFOUNDATION_LIBRARY CoreFoundation)
+    FIND_LIBRARY(CSERVICES_LIBRARY CoreServices)
+    FIND_LIBRARY(OPENGL_LIBRARY OpenGL)
+    FIND_LIBRARY(QUICKTIME_LIBRARY QuickTime )
+    FIND_LIBRARY(IOKIT_LIBRARY IOKit )
+    FIND_LIBRARY(AVF_LIBRARY AVFoundation)
+    FIND_LIBRARY(OAL_LIBRARY OpenAL)
+    FIND_LIBRARY(GKIT_LIBRARY GameKit)
+    SET(FRAMEWORK_LIBRS
+            ${AGL_LIBRARY}
+            ${APP_SERVICES_LIBRARY}
+            ${ATBOX_LIBRARY}
+            ${CARBON_LIBRARY}
+            ${CAUDIO_LIBRARY}
+            ${COREVIDEO_LIBRARY}
+            ${CFOUNDATION_LIBRARY}
+            ${CSERVICES_LIBRARY}
+            ${OAL_LIBRARY}
+            ${OPENGL_LIBRARIES}
+            ${GKIT_LIBRARY}
+            ${IOKIT_LIBRARY}
+            "-framework Foundation"
+            "-framework Cocoa")
+    link_directories(${CMAKE_SOURCE_DIR}/external-deps/lib/macosx/x86_64)
+    set(GAMEPLAY_LIBRARIES
+            stdc++
+            gameplay
+            gameplay-deps
+            m
+            dl
+            pthread
+            ${FRAMEWORK_LIBRS}
+            )
+ELSE(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    add_definitions(-D__linux__)
 
-IF(ARCH_DIR STREQUAL "x64")
-    link_directories(${CMAKE_SOURCE_DIR}/external-deps/lib/linux/x86_64)
-ELSE()
-    link_directories(${CMAKE_SOURCE_DIR}/external-deps/lib/linux/x86)
-ENDIF(ARCH_DIR STREQUAL "x64")
+    IF(ARCH_DIR STREQUAL "x64")
+        link_directories(${CMAKE_SOURCE_DIR}/external-deps/lib/linux/x86_64)
+    ELSE()
+        link_directories(${CMAKE_SOURCE_DIR}/external-deps/lib/linux/x86)
+    ENDIF(ARCH_DIR STREQUAL "x64")
 
 
-set(GAMEPLAY_LIBRARIES
-    stdc++
-    gameplay
-    gameplay-deps
-    m
-    GL
-    rt
-    dl
-    X11
-    pthread
-    gtk-x11-2.0
-    glib-2.0
-    gobject-2.0
-) 
+    set(GAMEPLAY_LIBRARIES
+            stdc++
+            gameplay
+            gameplay-deps
+            m
+            GL
+            rt
+            dl
+            X11
+            pthread
+            gtk-x11-2.0
+            glib-2.0
+            gobject-2.0
+            )
+ENDIF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
 add_definitions(-std=c++11)
 

+ 40 - 11
samples/browser/CMakeLists.txt

@@ -55,24 +55,53 @@ set(GAME_SRC
     src/WaterSample.h
 )
 
-add_executable(${GAME_NAME}
-    ${GAME_SRC}
-)
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    MESSAGE("Game name is ${GAME_NAME}")
+    COPY_RES_MAC(GAME_RES ${CMAKE_SOURCE_DIR}/samples/browser res/*)
+    COPY_RES_MAC(GAMEPLAY_RES ${CMAKE_SOURCE_DIR}/gameplay
+            res/shaders/* res/ui/* res/logo_powered_white.png)
+    set(Apple_Resources
+            ${GAME_RES}
+            ${GAMEPLAY_RES}
+            game.config)
+    SET(EXEC_TYPE MACOSX_BUNDLE)
+
+    SET_SOURCE_FILES_PROPERTIES(
+            game.config
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources
+    )
+    set( MACOSX_BUNDLE_INFO_STRING "\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\",\nCopyright 2016 gameplay3d contributors" )
+    set( MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}" )
+    set( MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_COPYRIGHT "(C) gameplay3d contributors" )
+    set( PLIST_TEMPLATE ${GAME_NAME}-macosx.plist )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+add_executable(${GAME_NAME} ${EXEC_TYPE}
+        ${GAME_SRC}
+        ${Apple_Resources}
+        )
 
 target_link_libraries(${GAME_NAME} ${GAMEPLAY_LIBRARIES})
 
+
 set_target_properties(${GAME_NAME} PROPERTIES
     OUTPUT_NAME "${GAME_NAME}"
     CLEAN_DIRECT_OUTPUT 1
 )
 
-source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
-source_group(src FILES ${GAME_SRC})
+if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
-COPY_RES( ${GAME_NAME} )
-COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
-    res/logo_powered_white.png 
-    res/shaders/*
-    res/ui/*
-)
+    source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
+    source_group(src FILES ${GAME_SRC})
 
+    COPY_RES( ${GAME_NAME} )
+    COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
+            res/logo_powered_white.png
+            res/shaders/*
+            res/ui/*
+            )
+endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

+ 40 - 15
samples/character/CMakeLists.txt

@@ -5,26 +5,51 @@ set(GAME_SRC
     src/CharacterGame.h
 )
 
-add_executable(${GAME_NAME}
-    ${GAME_SRC}
-)
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    COPY_RES_MAC(GAME_RES ${CMAKE_SOURCE_DIR}/samples/character res/*)
+    COPY_RES_MAC(GAMEPLAY_RES ${CMAKE_SOURCE_DIR}/gameplay
+            res/shaders/* res/ui/* res/logo_powered_white.png)
+    set(Apple_Resources
+            ${GAME_RES}
+            ${GAMEPLAY_RES}
+            game.config)
+    SET(EXEC_TYPE MACOSX_BUNDLE)
+
+    SET_SOURCE_FILES_PROPERTIES(
+            game.config
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources
+    )
+    set( MACOSX_BUNDLE_INFO_STRING "\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\",\nCopyright 2016 gameplay3d contributors" )
+    set( MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}" )
+    set( MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_COPYRIGHT "(C) gameplay3d contributors" )
+    set( PLIST_TEMPLATE sample-racer-macosx.plist )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+add_executable(${GAME_NAME} ${EXEC_TYPE}
+        ${GAME_SRC} ${Apple_Resources}
+        )
 
 target_link_libraries(${GAME_NAME} ${GAMEPLAY_LIBRARIES})
 
-set_target_properties(${GAME_NAME} PROPERTIES
-    OUTPUT_NAME "${GAME_NAME}"
-    CLEAN_DIRECT_OUTPUT 1
-)
+if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
-source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
-source_group(src FILES ${GAME_SRC})
+    set_target_properties(${GAME_NAME} PROPERTIES
+            OUTPUT_NAME "${GAME_NAME}"
+            CLEAN_DIRECT_OUTPUT 1
+            )
 
-COPY_RES( ${GAME_NAME} )
-COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
-    res/logo_powered_white.png 
-    res/shaders/*
-    res/ui/*
-)
+    source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
+    source_group(src FILES ${GAME_SRC})
 
+    COPY_RES( ${GAME_NAME} )
+    COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
+            res/logo_powered_white.png
+            res/shaders/*
+            res/ui/*
+            )
+endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 # Just use the PNG config file (most compatible)
 configure_file( game.dxt.config game.config COPYONLY )

+ 48 - 19
samples/racer/CMakeLists.txt

@@ -1,30 +1,59 @@
 set(GAME_NAME sample-racer)
 
 set(GAME_SRC
-    src/RacerGame.cpp
-    src/RacerGame.h
-)
+        src/RacerGame.cpp
+        src/RacerGame.h
+        )
 
-add_executable(${GAME_NAME}
-    ${GAME_SRC}
-)
+if(NOT ${APPLE})
+    set_target_properties(${GAME_NAME} PROPERTIES
+            OUTPUT_NAME "${GAME_NAME}"
+            CLEAN_DIRECT_OUTPUT 1
+            )
+endif(NOT ${APPLE})
 
+source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
+source_group(src FILES ${GAME_SRC})
+
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    COPY_RES_MAC(GAME_RES ${CMAKE_SOURCE_DIR}/samples/racer res/*)
+    COPY_RES_MAC(GAMEPLAY_RES ${CMAKE_SOURCE_DIR}/gameplay
+            res/shaders/* res/ui/* res/logo_powered_white.png)
+    set(Apple_Resources
+            ${GAME_RES}
+            ${GAMEPLAY_RES}
+            game.config)
+    SET(EXEC_TYPE MACOSX_BUNDLE)
+
+    SET_SOURCE_FILES_PROPERTIES(
+            game.config
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources
+    )
+    set( MACOSX_BUNDLE_INFO_STRING "\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\",\nCopyright 2016 gameplay3d contributors" )
+    set( MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}" )
+    set( MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_COPYRIGHT "(C) gameplay3d contributors" )
+    set( PLIST_TEMPLATE sample-racer-macosx.plist )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+add_executable(${GAME_NAME} ${EXEC_TYPE}
+        ${GAME_SRC}
+        ${Apple_Resources}
+        )
 target_link_libraries(${GAME_NAME} ${GAMEPLAY_LIBRARIES})
 
-set_target_properties(${GAME_NAME} PROPERTIES
-    OUTPUT_NAME "${GAME_NAME}"
-    CLEAN_DIRECT_OUTPUT 1
-)
+if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
-source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
-source_group(src FILES ${GAME_SRC})
 
-COPY_RES( ${GAME_NAME} )
-COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
-    res/logo_powered_white.png 
-    res/shaders/*
-    res/ui/*
-)
+    COPY_RES( ${GAME_NAME} )
+    COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
+            res/logo_powered_white.png
+            res/shaders/*
+            res/ui/*
+            )
 
+endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 # Just use the PNG config file (most compatible)
-configure_file( game.png.config game.config COPYONLY )
+configure_file( game.png.config game.config COPYONLY )

+ 41 - 14
samples/spaceship/CMakeLists.txt

@@ -5,23 +5,50 @@ set(GAME_SRC
     src/SpaceshipGame.h
 )
 
-add_executable(${GAME_NAME}
-    ${GAME_SRC}
+if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+    COPY_RES_MAC(GAME_RES ${CMAKE_SOURCE_DIR}/samples/spaceship res/*)
+    COPY_RES_MAC(GAMEPLAY_RES ${CMAKE_SOURCE_DIR}/gameplay
+            res/shaders/* res/ui/* res/logo_powered_white.png)
+    set(Apple_Resources
+            ../../gameplay/res/logo_powered_white.png
+            ${GAME_RES}
+            ${GAMEPLAY_RES}
+            game.config)
+    SET(EXEC_TYPE MACOSX_BUNDLE)
+
+    SET_SOURCE_FILES_PROPERTIES(
+            game.config
+            PROPERTIES
+            MACOSX_PACKAGE_LOCATION Resources
+    )
+    set( MACOSX_BUNDLE_INFO_STRING "\"${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}\",\nCopyright 2016 gameplay3d contributors" )
+    set( MACOSX_BUNDLE_SHORT_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}" )
+    set( MACOSX_BUNDLE_LONG_VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_BUNDLE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}" )
+    set( MACOSX_BUNDLE_COPYRIGHT "(C) gameplay3d contributors" )
+    set( PLIST_TEMPLATE sample-racer-macosx.plist )
+endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
+
+add_executable(${GAME_NAME} ${EXEC_TYPE}
+    ${GAME_SRC} ${Apple_Resources}
 )
 
 target_link_libraries(${GAME_NAME} ${GAMEPLAY_LIBRARIES})
 
-set_target_properties(${GAME_NAME} PROPERTIES
-    OUTPUT_NAME "${GAME_NAME}"
-    CLEAN_DIRECT_OUTPUT 1
-)
+if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
 
-source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
-source_group(src FILES ${GAME_SRC})
+    set_target_properties(${GAME_NAME} PROPERTIES
+            OUTPUT_NAME "${GAME_NAME}"
+            CLEAN_DIRECT_OUTPUT 1
+            )
 
-COPY_RES( ${GAME_NAME} )
-COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
-    res/logo_powered_white.png 
-    res/shaders/*
-    res/ui/*
-)
+    source_group(res FILES ${GAME_RES} ${GAMEPLAY_RES} ${GAMEPLAY_RES_SHADERS} ${GAMEPLAY_RES_UI})
+    source_group(src FILES ${GAME_SRC})
+
+    COPY_RES( ${GAME_NAME} )
+    COPY_RES_EXTRA( ${GAME_NAME} ${CMAKE_SOURCE_DIR}/gameplay
+            res/logo_powered_white.png
+            res/shaders/*
+            res/ui/*
+            )
+endif(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin")

+ 54 - 4
template/template-CMakeLists.txt

@@ -19,6 +19,10 @@ IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
     ADD_DEFINITIONS(-std=c++11)
     SET(TARGET_OS "LINUX")
     SET(TARGET_OS_DIR "linux")
+ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Darwin")
+    ADD_DEFINITIONS(-std=c++11)
+    SET(TARGET_OS "OSX")
+    SET(TARGET_OS_DIR "Mac")
 ELSEIF(CMAKE_SYSTEM_NAME MATCHES "Windows")
     IF(MSVC)
         ADD_DEFINITIONS(-DMSVC)
@@ -109,7 +113,46 @@ IF (TARGET_OS STREQUAL "LINUX")
 	append_gameplay_ext_lib(GAMEPLAY_LIBRARIES "gtk-x11-2.0" "" )
 	append_gameplay_ext_lib(GAMEPLAY_LIBRARIES "gobject-2.0" "" )
 	append_gameplay_ext_lib(GAMEPLAY_LIBRARIES "glib-2.0" "" )
-
+ELSEIF (TARGET_OS STREQUAL "OSX")
+    find_package(OpenGL REQUIRED)
+    FIND_LIBRARY(AGL_LIBRARY AGL)
+    FIND_LIBRARY(APP_SERVICES_LIBRARY ApplicationServices )
+    FIND_LIBRARY(ATBOX_LIBRARY AudioToolbox)
+    FIND_LIBRARY(CARBON_LIBRARY Carbon)
+    FIND_LIBRARY(CAUDIO_LIBRARY CoreAudio)
+    FIND_LIBRARY(COREVIDEO_LIBRARY CoreVideo)
+    FIND_LIBRARY(CFOUNDATION_LIBRARY CoreFoundation)
+    FIND_LIBRARY(CSERVICES_LIBRARY CoreServices)
+    FIND_LIBRARY(OPENGL_LIBRARY OpenGL)
+    FIND_LIBRARY(QUICKTIME_LIBRARY QuickTime )
+    FIND_LIBRARY(IOKIT_LIBRARY IOKit )
+    FIND_LIBRARY(AVF_LIBRARY AVFoundation)
+    FIND_LIBRARY(OAL_LIBRARY OpenAL)
+    FIND_LIBRARY(GKIT_LIBRARY GameKit)
+    SET(FRAMEWORK_LIBRS
+        ${AGL_LIBRARY}
+        ${APP_SERVICES_LIBRARY}
+        ${ATBOX_LIBRARY}
+        ${CARBON_LIBRARY}
+        ${CAUDIO_LIBRARY}
+        ${COREVIDEO_LIBRARY}
+        ${CFOUNDATION_LIBRARY}
+        ${CSERVICES_LIBRARY}
+        ${OAL_LIBRARY}
+        ${OPENGL_LIBRARIES}
+        ${GKIT_LIBRARY}
+        ${IOKIT_LIBRARY}
+        "-framework Foundation"
+        "-framework Cocoa")
+    set(GAMEPLAY_LIBRARIES ${GAMEPLAY_LIBRARIES}
+        stdc++
+        gameplay
+        gameplay-deps
+        m
+        dl
+        pthread
+        ${FRAMEWORK_LIBRS}
+        )
 ELSEIF (TARGET_OS STREQUAL "WINDOWS")
 	set(GAMEPLAY_LIBRARIES ${GAMEPLAY_LIBRARIES} "OpenGL32")
 	set(GAMEPLAY_LIBRARIES ${GAMEPLAY_LIBRARIES} "GLU32")
@@ -126,6 +169,7 @@ set(GAME_SRC
 
 add_executable(${GAME_NAME}
 	WIN32
+	MACOSX_BUNDLE
     ${GAME_SRC}
 )
 
@@ -140,6 +184,12 @@ set_target_properties(${GAME_NAME} PROPERTIES
 #TODO: Copy res files to the bin dir, it is done that way so we can make post
 #processing to the the res files in the future like zipping or preparation to
 #per platfom format.
-copy_files(CopyRes * "${CMAKE_SOURCE_DIR}/res" "$<TARGET_FILE_DIR:${GAME_NAME}>/res" 1)
-copy_files(CopyShaders * "${GAMEPLAY_SRC_PATH}/gameplay/res/shaders" "$<TARGET_FILE_DIR:${GAME_NAME}>/res/shaders" 1)
-copy_files(CopyConfig *.config "${CMAKE_SOURCE_DIR}" "$<TARGET_FILE_DIR:${GAME_NAME}>" 0)
+IF (TARGET_OS STREQUAL "OSX")
+	SET(TARGET_RESOURCE_BASE_DIR "$<TARGET_FILE_DIR:${GAME_NAME}>/../Resources")
+ELSE(TARGET_OS STREQUAL "OSX")
+	SET(TARGET_RESOURCE_BASE_DIR "$<TARGET_FILE_DIR:${GAME_NAME}>")
+ENDIF(TARGET_OS STREQUAL "OSX")
+
+copy_files(CopyRes * "${CMAKE_SOURCE_DIR}/res" "${TARGET_RESOURCE_BASE_DIR}/res" 1)
+copy_files(CopyShaders * "${GAMEPLAY_SRC_PATH}/gameplay/res/shaders" "${TARGET_RESOURCE_BASE_DIR}/res/shaders" 1)
+copy_files(CopyConfig *.config "${CMAKE_SOURCE_DIR}" "${TARGET_RESOURCE_BASE_DIR}" 0)