Browse Source

Updated to love-android changeset 3b5e5e182a00

Martin Felis 12 years ago
parent
commit
69b200b144
100 changed files with 745 additions and 238 deletions
  1. 1 1
      default.properties
  2. 1 0
      jni/love/Android.mk
  3. 93 12
      jni/love/CMakeLists.txt
  4. 18 1
      jni/love/changes.txt
  5. 1 1
      jni/love/license.txt
  6. 1 1
      jni/love/platform/macosx/OSX.h
  7. 1 1
      jni/love/platform/macosx/OSX.mm
  8. 1 1
      jni/love/platform/macosx/love-Info.plist
  9. 20 16
      jni/love/platform/macosx/love-framework.xcodeproj/project.pbxproj
  10. 2 0
      jni/love/platform/macosx/love.xcodeproj/project.pbxproj
  11. 14 9
      jni/love/platform/unix/automagic
  12. 64 25
      jni/love/platform/unix/configure.ac
  13. 5 0
      jni/love/platform/unix/debian/changelog.in
  14. 59 0
      jni/love/platform/unix/debian/control.in
  15. 2 2
      jni/love/platform/unix/debian/copyright
  16. 1 0
      jni/love/platform/unix/debian/liblove-unstable.install
  17. 1 0
      jni/love/platform/unix/debian/love-unstable.install
  18. 16 0
      jni/love/platform/unix/debian/rules.in
  19. 3 13
      jni/love/platform/unix/gen-makefile
  20. 168 0
      jni/love/platform/unix/genmodules
  21. 5 4
      jni/love/readme.md
  22. 1 1
      jni/love/src/common/Data.h
  23. 1 1
      jni/love/src/common/EnumMap.h
  24. 1 1
      jni/love/src/common/Exception.cpp
  25. 1 1
      jni/love/src/common/Exception.h
  26. 1 1
      jni/love/src/common/Matrix.cpp
  27. 1 1
      jni/love/src/common/Matrix.h
  28. 1 1
      jni/love/src/common/Memoizer.cpp
  29. 1 1
      jni/love/src/common/Memoizer.h
  30. 1 1
      jni/love/src/common/Module.cpp
  31. 1 1
      jni/love/src/common/Module.h
  32. 1 1
      jni/love/src/common/Object.cpp
  33. 1 1
      jni/love/src/common/Object.h
  34. 1 1
      jni/love/src/common/Reference.cpp
  35. 1 1
      jni/love/src/common/Reference.h
  36. 1 1
      jni/love/src/common/StringMap.h
  37. 1 1
      jni/love/src/common/Variant.cpp
  38. 1 1
      jni/love/src/common/Variant.h
  39. 1 1
      jni/love/src/common/Vector.cpp
  40. 1 1
      jni/love/src/common/Vector.h
  41. 2 2
      jni/love/src/common/b64.cpp
  42. 1 1
      jni/love/src/common/b64.h
  43. 42 1
      jni/love/src/common/config.h
  44. 1 1
      jni/love/src/common/delay.cpp
  45. 1 1
      jni/love/src/common/delay.h
  46. 1 1
      jni/love/src/common/int.h
  47. 1 1
      jni/love/src/common/math.h
  48. 2 1
      jni/love/src/common/runtime.cpp
  49. 1 1
      jni/love/src/common/runtime.h
  50. 5 5
      jni/love/src/common/types.h
  51. 1 1
      jni/love/src/common/utf8.cpp
  52. 1 1
      jni/love/src/common/utf8.h
  53. 1 1
      jni/love/src/common/version.h
  54. 1 1
      jni/love/src/common/wrap_Data.cpp
  55. 1 1
      jni/love/src/common/wrap_Data.h
  56. 1 1
      jni/love/src/libraries/enet/lua-enet.h
  57. 1 1
      jni/love/src/libraries/luasocket/luasocket.cpp
  58. 1 1
      jni/love/src/libraries/luasocket/luasocket.h
  59. 2 2
      jni/love/src/love.cpp
  60. 1 1
      jni/love/src/modules/audio/Audio.cpp
  61. 1 1
      jni/love/src/modules/audio/Audio.h
  62. 1 1
      jni/love/src/modules/audio/Source.cpp
  63. 2 2
      jni/love/src/modules/audio/Source.h
  64. 1 1
      jni/love/src/modules/audio/null/Audio.cpp
  65. 1 1
      jni/love/src/modules/audio/null/Audio.h
  66. 2 2
      jni/love/src/modules/audio/null/Source.cpp
  67. 2 2
      jni/love/src/modules/audio/null/Source.h
  68. 1 1
      jni/love/src/modules/audio/openal/Audio.cpp
  69. 2 2
      jni/love/src/modules/audio/openal/Audio.h
  70. 1 1
      jni/love/src/modules/audio/openal/Pool.cpp
  71. 2 2
      jni/love/src/modules/audio/openal/Pool.h
  72. 77 20
      jni/love/src/modules/audio/openal/Source.cpp
  73. 28 4
      jni/love/src/modules/audio/openal/Source.h
  74. 5 1
      jni/love/src/modules/audio/wrap_Audio.cpp
  75. 1 1
      jni/love/src/modules/audio/wrap_Audio.h
  76. 18 1
      jni/love/src/modules/audio/wrap_Source.cpp
  77. 2 1
      jni/love/src/modules/audio/wrap_Source.h
  78. 1 1
      jni/love/src/modules/event/Event.cpp
  79. 1 1
      jni/love/src/modules/event/Event.h
  80. 1 1
      jni/love/src/modules/event/sdl/Event.cpp
  81. 1 1
      jni/love/src/modules/event/sdl/Event.h
  82. 1 1
      jni/love/src/modules/event/sdl/wrap_Event.cpp
  83. 1 1
      jni/love/src/modules/event/sdl/wrap_Event.h
  84. 1 1
      jni/love/src/modules/filesystem/File.cpp
  85. 1 1
      jni/love/src/modules/filesystem/File.h
  86. 1 1
      jni/love/src/modules/filesystem/FileData.cpp
  87. 1 1
      jni/love/src/modules/filesystem/FileData.h
  88. 1 1
      jni/love/src/modules/filesystem/physfs/File.cpp
  89. 2 2
      jni/love/src/modules/filesystem/physfs/File.h
  90. 1 1
      jni/love/src/modules/filesystem/physfs/Filesystem.cpp
  91. 1 33
      jni/love/src/modules/filesystem/physfs/Filesystem.h
  92. 1 1
      jni/love/src/modules/filesystem/physfs/wrap_File.cpp
  93. 1 1
      jni/love/src/modules/filesystem/physfs/wrap_File.h
  94. 1 1
      jni/love/src/modules/filesystem/physfs/wrap_FileData.cpp
  95. 1 1
      jni/love/src/modules/filesystem/physfs/wrap_FileData.h
  96. 10 6
      jni/love/src/modules/filesystem/physfs/wrap_Filesystem.cpp
  97. 1 1
      jni/love/src/modules/filesystem/physfs/wrap_Filesystem.h
  98. 1 1
      jni/love/src/modules/font/Font.h
  99. 2 2
      jni/love/src/modules/font/GlyphData.cpp
  100. 1 1
      jni/love/src/modules/font/GlyphData.h

+ 1 - 1
default.properties

@@ -8,4 +8,4 @@
 # project structure.
 # project structure.
 
 
 # Project target.
 # Project target.
-target=android-7
+target=android-19

+ 1 - 0
jni/love/Android.mk

@@ -37,6 +37,7 @@ LOCAL_C_INCLUDES  :=  \
 		
 		
 LOCAL_SRC_FILES := \
 LOCAL_SRC_FILES := \
 	$(filter-out \
 	$(filter-out \
+	  src/modules/graphics/opengl/GLee.* \
 	  src/libraries/luasocket/libluasocket/wsocket.c \
 	  src/libraries/luasocket/libluasocket/wsocket.c \
 	,$(subst $(LOCAL_PATH)/,,\
 	,$(subst $(LOCAL_PATH)/,,\
 	$(wildcard ${LOCAL_PATH}/src/love.cpp) \
 	$(wildcard ${LOCAL_PATH}/src/love.cpp) \

+ 93 - 12
jni/love/CMakeLists.txt

@@ -1,5 +1,5 @@
 #
 #
-# Copyright (c) 2006-2013 LOVE Development Team
+# Copyright (c) 2006-2014 LOVE Development Team
 #
 #
 # This software is provided 'as-is', without any express or implied
 # This software is provided 'as-is', without any express or implied
 # warranty.  In no event will the authors be held liable for any damages
 # warranty.  In no event will the authors be held liable for any damages
@@ -45,10 +45,29 @@ else()
 	set(LOVE_TARGET_PLATFORM x86)
 	set(LOVE_TARGET_PLATFORM x86)
 endif()
 endif()
 
 
+option(LOVE_JIT "Use LuaJIT" TRUE)
+
+if(LOVE_JIT)
+	message(STATUS "LuaJIT: Enabled")
+else()
+	message(STATUS "LuaJIT: Disabled")
+endif()
+
 message(STATUS "Target platform: ${LOVE_TARGET_PLATFORM}")
 message(STATUS "Target platform: ${LOVE_TARGET_PLATFORM}")
 
 
 find_package(OpenGL)
 find_package(OpenGL)
 
 
+if(${LOVE_JIT})
+	set(MEGA_LUA ${MEGA_LUAJIT_LIB})
+	set(MEGA_EXTRA_INCLUDE ${MEGA_LUAJIT_INCLUDE})
+	set(MEGA_EXTRA_DLLS ${MEGA_LUAJIT_DLL})
+	set(MEGA_EXTRA_DEPENDECIES luajit)
+else()
+	set(MEGA_LUA ${MEGA_LUA51})
+	# MEGA_LUA51 is a CMake target, so includes are handled
+	# automatically.
+endif()
+
 #
 #
 # common
 # common
 #
 #
@@ -230,15 +249,13 @@ source_group("modules\\font\\freetype" FILES ${LOVE_SRC_MODULE_FONT_FREETYPE})
 
 
 set(LOVE_SRC_MODULE_GRAPHICS_ROOT
 set(LOVE_SRC_MODULE_GRAPHICS_ROOT
 	src/modules/graphics/Color.h
 	src/modules/graphics/Color.h
-	src/modules/graphics/Drawable.cpp
 	src/modules/graphics/Drawable.h
 	src/modules/graphics/Drawable.h
-	src/modules/graphics/DrawQable.h
 	src/modules/graphics/Graphics.cpp
 	src/modules/graphics/Graphics.cpp
 	src/modules/graphics/Graphics.h
 	src/modules/graphics/Graphics.h
-	src/modules/graphics/Image.cpp
-	src/modules/graphics/Image.h
 	src/modules/graphics/Quad.cpp
 	src/modules/graphics/Quad.cpp
 	src/modules/graphics/Quad.h
 	src/modules/graphics/Quad.h
+	src/modules/graphics/Texture.cpp
+	src/modules/graphics/Texture.h
 	src/modules/graphics/Volatile.cpp
 	src/modules/graphics/Volatile.cpp
 	src/modules/graphics/Volatile.h
 	src/modules/graphics/Volatile.h
 )
 )
@@ -266,6 +283,7 @@ set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
 	src/modules/graphics/opengl/Shader.h
 	src/modules/graphics/opengl/Shader.h
 	src/modules/graphics/opengl/SpriteBatch.cpp
 	src/modules/graphics/opengl/SpriteBatch.cpp
 	src/modules/graphics/opengl/SpriteBatch.h
 	src/modules/graphics/opengl/SpriteBatch.h
+	src/modules/graphics/opengl/Texture.h
 	src/modules/graphics/opengl/VertexBuffer.cpp
 	src/modules/graphics/opengl/VertexBuffer.cpp
 	src/modules/graphics/opengl/VertexBuffer.h
 	src/modules/graphics/opengl/VertexBuffer.h
 	src/modules/graphics/opengl/wrap_Canvas.cpp
 	src/modules/graphics/opengl/wrap_Canvas.cpp
@@ -286,6 +304,8 @@ set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
 	src/modules/graphics/opengl/wrap_Shader.h
 	src/modules/graphics/opengl/wrap_Shader.h
 	src/modules/graphics/opengl/wrap_SpriteBatch.cpp
 	src/modules/graphics/opengl/wrap_SpriteBatch.cpp
 	src/modules/graphics/opengl/wrap_SpriteBatch.h
 	src/modules/graphics/opengl/wrap_SpriteBatch.h
+	src/modules/graphics/opengl/wrap_Texture.cpp
+	src/modules/graphics/opengl/wrap_Texture.h
 )
 )
 
 
 set(LOVE_SRC_MODULE_GRAPHICS
 set(LOVE_SRC_MODULE_GRAPHICS
@@ -904,7 +924,7 @@ set(LOVE_SRC_3P_ENET
 )
 )
 
 
 add_library(love_3p_enet ${LOVE_SRC_3P_ENET})
 add_library(love_3p_enet ${LOVE_SRC_3P_ENET})
-target_link_libraries(love_3p_enet ${MEGA_LUA51})
+target_link_libraries(love_3p_enet ${MEGA_LUA})
 target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include)
 target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include)
 
 
 #
 #
@@ -967,7 +987,7 @@ set(LOVE_SRC_3P_LUASOCKET
 )
 )
 
 
 add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET})
 add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET})
-target_link_libraries(love_3p_luasocket ${MEGA_LUA51})
+target_link_libraries(love_3p_luasocket ${MEGA_LUA})
 
 
 #
 #
 # noise1234
 # noise1234
@@ -1057,15 +1077,36 @@ include_directories(
 	src
 	src
 	src/libraries
 	src/libraries
 	src/modules
 	src/modules
+	${MEGA_EXTRA_INCLUDE}
 )
 )
 
 
 # SDL2 links with some DirectX libraries, and we apparently also
 # SDL2 links with some DirectX libraries, and we apparently also
 # pull those libraries in for linkage because we link with SDL2.
 # pull those libraries in for linkage because we link with SDL2.
 link_directories(${SDL_LINK_DIR})
 link_directories(${SDL_LINK_DIR})
 
 
+set(LOVE_MEGA_3P
+	${MEGA_DEVIL}
+	${MEGA_FREETYPE}
+	${MEGA_JASPER}
+	${MEGA_JPEG}
+	${MEGA_LIBOGG}
+	${MEGA_LIBPNG}
+	${MEGA_LIBVORBISFILE}
+	${MEGA_LIBVORBIS}
+	${MEGA_LUA}
+	${MEGA_MODPLUG}
+	${MEGA_MPEG123}
+	${MEGA_OPENAL}
+	${MEGA_PHYSFS}
+	${MEGA_SDL2MAIN}
+	${MEGA_SDL2}
+	${MEGA_TIFF}
+	${MEGA_ZLIB}
+)
+
 set(LOVE_LINK_LIBRARIES
 set(LOVE_LINK_LIBRARIES
 	${OPENGL_gl_LIBRARY}
 	${OPENGL_gl_LIBRARY}
-	${MEGA_3P}
+	${LOVE_MEGA_3P}
 )
 )
 
 
 set(LOVE_RC)
 set(LOVE_RC)
@@ -1085,9 +1126,13 @@ endif()
 add_library(${LOVE_LIB_NAME} SHARED ${LOVE_LIB_SRC} ${LOVE_RC})
 add_library(${LOVE_LIB_NAME} SHARED ${LOVE_LIB_SRC} ${LOVE_RC})
 target_link_libraries(liblove ${LOVE_LINK_LIBRARIES} ${LOVE_3P})
 target_link_libraries(liblove ${LOVE_LINK_LIBRARIES} ${LOVE_3P})
 
 
+if(MEGA_EXTRA_DEPENDECIES)
+	add_dependencies(${LOVE_LIB_NAME} ${MEGA_EXTRA_DEPENDECIES})
+endif()
+
 if(MSVC)
 if(MSVC)
-	set_target_properties(${LOVE_LIB_NAME} PROPERTIES RELEASE_OUTPUT_NAME "love")	
-	set_target_properties(${LOVE_LIB_NAME} PROPERTIES DEBUG_OUTPUT_NAME "love")	
+	set_target_properties(${LOVE_LIB_NAME} PROPERTIES RELEASE_OUTPUT_NAME "love" PDB_NAME "liblove")
+	set_target_properties(${LOVE_LIB_NAME} PROPERTIES DEBUG_OUTPUT_NAME "love" PDB_NAME "liblove")
 endif()
 endif()
 
 
 #
 #
@@ -1102,7 +1147,12 @@ add_move_dll(love ${MEGA_MPEG123})
 add_move_dll(love ${MEGA_SDL2})
 add_move_dll(love ${MEGA_SDL2})
 add_move_dll(love ${MEGA_OPENAL})
 add_move_dll(love ${MEGA_OPENAL})
 add_move_dll(love ${MEGA_DEVIL})
 add_move_dll(love ${MEGA_DEVIL})
-add_move_dll(love ${MEGA_LUA51})
+
+if(LOVE_JIT)
+	add_move_file(love ${MEGA_LUAJIT_DLL})
+else()
+	add_move_dll(love ${MEGA_LUA51})
+endif()
 
 
 ###################################
 ###################################
 # Version
 # Version
@@ -1131,6 +1181,15 @@ message(STATUS "Version: ${LOVE_VERSION_STR}")
 ###################################
 ###################################
 install(TARGETS love ${LOVE_LIB_NAME} RUNTIME DESTINATION .)
 install(TARGETS love ${LOVE_LIB_NAME} RUNTIME DESTINATION .)
 
 
+# Extra DLLs.
+if(MEGA_EXTRA_DLLS)
+	foreach(DLL ${MEGA_EXTRA_DLLS})
+		get_filename_component(DLL_NAME ${DLL} NAME)
+		message(STATUS "Extra DLL: ${DLL_NAME}")
+	endforeach()
+	install(FILES ${MEGA_EXTRA_DLLS} DESTINATION .)
+endif()
+
 # Dynamic runtime libs.
 # Dynamic runtime libs.
 if(MEGA_MSVC_DLLS)
 if(MEGA_MSVC_DLLS)
 	foreach(DLL ${MEGA_MSVC_DLLS})
 	foreach(DLL ${MEGA_MSVC_DLLS})
@@ -1158,6 +1217,12 @@ install(FILES
 		${CMAKE_CURRENT_BINARY_DIR}/readme.txt
 		${CMAKE_CURRENT_BINARY_DIR}/readme.txt
 		DESTINATION .)
 		DESTINATION .)
 
 
+# Icons
+install(FILES
+		${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/love.ico
+		${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis/game.ico
+		DESTINATION .)
+
 set(CPACK_GENERATOR ZIP NSIS)
 set(CPACK_GENERATOR ZIP NSIS)
 set(CPACK_PACKAGE_NAME "love")
 set(CPACK_PACKAGE_NAME "love")
 set(CPACK_PACKAGE_VENDOR "love2d.org")
 set(CPACK_PACKAGE_VENDOR "love2d.org")
@@ -1172,7 +1237,7 @@ set(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/readme.md")
 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
 set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/license.txt")
 
 
 set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
 set(CPACK_NSIS_EXECUTABLES_DIRECTORY .)
-set(CPACK_NSIS_PACKAGE_NAME "LÖVE")
+set(CPACK_NSIS_PACKAGE_NAME "LOVE")
 set(CPACK_NSIS_DISPLAY_NAME "LÖVE ${LOVE_VERSION_STR}")
 set(CPACK_NSIS_DISPLAY_NAME "LÖVE ${LOVE_VERSION_STR}")
 set(CPACK_NSIS_MODIFY_PATH OFF)
 set(CPACK_NSIS_MODIFY_PATH OFF)
 
 
@@ -1200,4 +1265,20 @@ set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "
 	!define MUI_UNICON \\\"${NSIS_MUI_UNICON}\\\"
 	!define MUI_UNICON \\\"${NSIS_MUI_UNICON}\\\"
 ")
 ")
 
 
+set(CPACK_NSIS_EXTRA_INSTALL_COMMANDS "
+	WriteRegStr HKCR \\\".love\\\" \\\"\\\" \\\"LOVE\\\"
+	WriteRegStr HKCR \\\"LOVE\\\" \\\"\\\" \\\"LOVE Game File\\\"
+	WriteRegStr HKCR \\\"LOVE\\\\DefaultIcon\\\" \\\"\\\" \\\"$INSTDIR\\\\game.ico\\\"
+	WriteRegStr HKCR \\\"LOVE\\\\shell\\\" \\\"\\\" \\\"open\\\"
+	WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\" \\\"\\\" \\\"Open in LOVE\\\"
+	WriteRegStr HKCR \\\"LOVE\\\\shell\\\\open\\\\command\\\" \\\"\\\" \\\"$INSTDIR\\\\love.exe $\\\\\\\"%1$\\\\\\\"\\\"
+	System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
+")
+
+set(CPACK_NSIS_EXTRA_UNINSTALL_COMMANDS "
+	DeleteRegKey HKCR \\\"LOVE\\\"
+	DeleteRegKey HKCR \\\".love\\\"
+	System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v  (0x08000000, 0, 0, 0)'
+")
+
 include(CPack)
 include(CPack)

+ 18 - 1
jni/love/changes.txt

@@ -1,7 +1,24 @@
+LOVE 0.9.1 [Baby Inspector]
+---------------------------
+
+  Released: N/A
+
+  * Added Source:clone.
+  * Added ParticleSystem:clone.
+  * Added Mesh:setWireframe and Mesh:isWireframe for debugging.
+
+  * Fixed love.graphics.scale with negative values causing incorrect line widths.
+  * Fixed Joystick:isDown using 0-based button index arguments.
+  * Fixed Source:setPitch to error when infinity or NaN is given.
+  * Fixed love.graphics.setCanvas() to restore the proper viewport and scissor rectangles.
+  * Fixed TrueType font glyphs which request a monochrome bitmap pixel mode.
+
+  * Updated the error text for LÖVE’s module searchers when require fails.
+
 LOVE 0.9.0 [Baby Inspector]
 LOVE 0.9.0 [Baby Inspector]
 ---------------------------
 ---------------------------
 
 
-	Released: N/A
+	Released: 2013-12-13
 
 
   * Added better multiplayer networking support via ENet.
   * Added better multiplayer networking support via ENet.
   * Added --fused command line argument, to simulate fusing.
   * Added --fused command line argument, to simulate fusing.

+ 1 - 1
jni/love/license.txt

@@ -1,4 +1,4 @@
-Copyright (c) 2006-2013 LOVE Development Team
+Copyright (c) 2006-2014 LOVE Development Team
 
 
 This software is provided 'as-is', without any express or implied
 This software is provided 'as-is', without any express or implied
 warranty. In no event will the authors be held liable for any damages
 warranty. In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/platform/macosx/OSX.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/platform/macosx/OSX.mm

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/platform/macosx/love-Info.plist

@@ -52,7 +52,7 @@
 	<key>LSApplicationCategoryType</key>
 	<key>LSApplicationCategoryType</key>
 	<string>public.app-category.games</string>
 	<string>public.app-category.games</string>
 	<key>NSHumanReadableCopyright</key>
 	<key>NSHumanReadableCopyright</key>
-	<string>© 2006-2013 LÖVE Development Team</string>
+	<string>© 2006-2014 LÖVE Development Team</string>
 	<key>NSPrincipalClass</key>
 	<key>NSPrincipalClass</key>
 	<string>NSApplication</string>
 	<string>NSApplication</string>
 	<key>UTExportedTypeDeclarations</key>
 	<key>UTExportedTypeDeclarations</key>

+ 20 - 16
jni/love/platform/macosx/love-framework.xcodeproj/project.pbxproj

@@ -7,6 +7,8 @@
 	objects = {
 	objects = {
 
 
 /* Begin PBXBuildFile section */
 /* Begin PBXBuildFile section */
+		FA01BE1E1878E35B00640047 /* wrap_Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */; };
+		FA01BE1F1878E35B00640047 /* wrap_Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = FA01BE1D1878E35B00640047 /* wrap_Texture.h */; };
 		FA03546C1731F3A700284828 /* simplexnoise1234.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA03546A1731F3A700284828 /* simplexnoise1234.cpp */; };
 		FA03546C1731F3A700284828 /* simplexnoise1234.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA03546A1731F3A700284828 /* simplexnoise1234.cpp */; };
 		FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */ = {isa = PBXBuildFile; fileRef = FA03546B1731F3A700284828 /* simplexnoise1234.h */; };
 		FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */ = {isa = PBXBuildFile; fileRef = FA03546B1731F3A700284828 /* simplexnoise1234.h */; };
 		FA08F5B016C752F900F007B5 /* Source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FB732687B1669402408356D /* Source.cpp */; };
 		FA08F5B016C752F900F007B5 /* Source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2FB732687B1669402408356D /* Source.cpp */; };
@@ -109,9 +111,8 @@
 		FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B1C4E4D288A1D2F29E57B1B /* Rasterizer.cpp */; };
 		FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B1C4E4D288A1D2F29E57B1B /* Rasterizer.cpp */; };
 		FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B4E22F1388E2B2E76E3377B /* wrap_GlyphData.cpp */; };
 		FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1B4E22F1388E2B2E76E3377B /* wrap_GlyphData.cpp */; };
 		FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11745DE315E859F71E881D76 /* wrap_Rasterizer.cpp */; };
 		FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11745DE315E859F71E881D76 /* wrap_Rasterizer.cpp */; };
-		FA08F61516C753F600F007B5 /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58BA2BB460AF3C591B22690E /* Drawable.cpp */; };
 		FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03F17FF546D637744E263961 /* Graphics.cpp */; };
 		FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 03F17FF546D637744E263961 /* Graphics.cpp */; };
-		FA08F61816C753F600F007B5 /* Image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58CC50E70A375FDF53EF01B6 /* Image.cpp */; };
+		FA08F61816C753F600F007B5 /* Texture.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58CC50E70A375FDF53EF01B6 /* Texture.cpp */; };
 		FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B731754147B27AF73AC5358 /* Volatile.cpp */; };
 		FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4B731754147B27AF73AC5358 /* Volatile.cpp */; };
 		FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD52074367950B735707CE1 /* Canvas.cpp */; };
 		FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD52074367950B735707CE1 /* Canvas.cpp */; };
 		FA08F61C16C7541400F007B5 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 583037E9238A6EF00DD20B1A /* Font.cpp */; };
 		FA08F61C16C7541400F007B5 /* Font.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 583037E9238A6EF00DD20B1A /* Font.cpp */; };
@@ -269,6 +270,7 @@
 		FA9A100C182A0D5200106F9F /* glad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9A1009182A0D5200106F9F /* glad.cpp */; };
 		FA9A100C182A0D5200106F9F /* glad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9A1009182A0D5200106F9F /* glad.cpp */; };
 		FA9A100D182A0D5200106F9F /* glad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100A182A0D5200106F9F /* glad.hpp */; };
 		FA9A100D182A0D5200106F9F /* glad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100A182A0D5200106F9F /* glad.hpp */; };
 		FA9A100E182A0D5200106F9F /* gladfuncs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100B182A0D5200106F9F /* gladfuncs.hpp */; };
 		FA9A100E182A0D5200106F9F /* gladfuncs.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100B182A0D5200106F9F /* gladfuncs.hpp */; };
+		FA9B492A1875EFB900201DA9 /* Texture.h in Headers */ = {isa = PBXBuildFile; fileRef = FA9B49281875EFB900201DA9 /* Texture.h */; };
 		FA9B4A0816E1578300074F42 /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0716E1578300074F42 /* SDL2.framework */; };
 		FA9B4A0816E1578300074F42 /* SDL2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FA9B4A0716E1578300074F42 /* SDL2.framework */; };
 		FA9FC0B0173D6E3E005027FF /* wrap_Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */; };
 		FA9FC0B0173D6E3E005027FF /* wrap_Window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */; };
 		FA9FC0B1173D6E3E005027FF /* wrap_Window.h in Headers */ = {isa = PBXBuildFile; fileRef = FA9FC0AF173D6E3E005027FF /* wrap_Window.h */; };
 		FA9FC0B1173D6E3E005027FF /* wrap_Window.h in Headers */ = {isa = PBXBuildFile; fileRef = FA9FC0AF173D6E3E005027FF /* wrap_Window.h */; };
@@ -287,7 +289,6 @@
 		FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */; };
 		FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */; };
 		FAC86E631724552C00EED715 /* wrap_Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC86E611724552C00EED715 /* wrap_Quad.cpp */; };
 		FAC86E631724552C00EED715 /* wrap_Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC86E611724552C00EED715 /* wrap_Quad.cpp */; };
 		FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E621724552C00EED715 /* wrap_Quad.h */; };
 		FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E621724552C00EED715 /* wrap_Quad.h */; };
-		FAC86E6A1724555D00EED715 /* DrawQable.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E661724555D00EED715 /* DrawQable.h */; };
 		FAC86E6B1724555D00EED715 /* Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC86E671724555D00EED715 /* Quad.cpp */; };
 		FAC86E6B1724555D00EED715 /* Quad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FAC86E671724555D00EED715 /* Quad.cpp */; };
 		FAC86E6C1724555D00EED715 /* Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E681724555D00EED715 /* Quad.h */; };
 		FAC86E6C1724555D00EED715 /* Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E681724555D00EED715 /* Quad.h */; };
 		FAE010DB170DDE99006F29D0 /* ddsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE010D8170DDE99006F29D0 /* ddsinfo.h */; };
 		FAE010DB170DDE99006F29D0 /* ddsinfo.h in Headers */ = {isa = PBXBuildFile; fileRef = FAE010D8170DDE99006F29D0 /* ddsinfo.h */; };
@@ -439,7 +440,7 @@
 		1CAA69E00D0808BA2108238B /* wrap_ChainShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_ChainShape.cpp; sourceTree = "<group>"; };
 		1CAA69E00D0808BA2108238B /* wrap_ChainShape.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_ChainShape.cpp; sourceTree = "<group>"; };
 		1CD02D1975803957282F28AB /* auxiliar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = auxiliar.c; sourceTree = "<group>"; };
 		1CD02D1975803957282F28AB /* auxiliar.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = auxiliar.c; sourceTree = "<group>"; };
 		1CE84F1F19BC2AA412C638B1 /* timeout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timeout.h; sourceTree = "<group>"; };
 		1CE84F1F19BC2AA412C638B1 /* timeout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = timeout.h; sourceTree = "<group>"; };
-		1DA41DFF0869489411A71AFC /* Image.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Image.h; sourceTree = "<group>"; };
+		1DA41DFF0869489411A71AFC /* Texture.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = "<group>"; };
 		1E22646A710E5EFC27FE3932 /* FrictionJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrictionJoint.cpp; sourceTree = "<group>"; };
 		1E22646A710E5EFC27FE3932 /* FrictionJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = FrictionJoint.cpp; sourceTree = "<group>"; };
 		1E27263847302FCA1F843B47 /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
 		1E27263847302FCA1F843B47 /* b2PrismaticJoint.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2PrismaticJoint.cpp; sourceTree = "<group>"; };
 		1E827AE8548C52493ED95629 /* wrap_Filesystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Filesystem.cpp; sourceTree = "<group>"; };
 		1E827AE8548C52493ED95629 /* wrap_Filesystem.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Filesystem.cpp; sourceTree = "<group>"; };
@@ -629,8 +630,7 @@
 		583037E9238A6EF00DD20B1A /* Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Font.cpp; sourceTree = "<group>"; };
 		583037E9238A6EF00DD20B1A /* Font.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Font.cpp; sourceTree = "<group>"; };
 		584E16AE09E12536206C46FE /* Mouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Mouse.cpp; sourceTree = "<group>"; };
 		584E16AE09E12536206C46FE /* Mouse.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Mouse.cpp; sourceTree = "<group>"; };
 		58792BC1126C2917432D706B /* b2CircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
 		58792BC1126C2917432D706B /* b2CircleContact.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2CircleContact.cpp; sourceTree = "<group>"; };
-		58BA2BB460AF3C591B22690E /* Drawable.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Drawable.cpp; sourceTree = "<group>"; };
-		58CC50E70A375FDF53EF01B6 /* Image.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Image.cpp; sourceTree = "<group>"; };
+		58CC50E70A375FDF53EF01B6 /* Texture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = Texture.cpp; sourceTree = "<group>"; };
 		58CD093F254501E37CA47CA8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
 		58CD093F254501E37CA47CA8 /* types.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = types.h; sourceTree = "<group>"; };
 		597478A255B82B56488B4717 /* wrap_FileData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_FileData.cpp; sourceTree = "<group>"; };
 		597478A255B82B56488B4717 /* wrap_FileData.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_FileData.cpp; sourceTree = "<group>"; };
 		59BE634A2ACE722F14B86F89 /* b2Island.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
 		59BE634A2ACE722F14B86F89 /* b2Island.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = b2Island.cpp; sourceTree = "<group>"; };
@@ -751,6 +751,8 @@
 		7F575BE9573C654B5ED44CC1 /* wrap_Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Timer.h; sourceTree = "<group>"; };
 		7F575BE9573C654B5ED44CC1 /* wrap_Timer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = wrap_Timer.h; sourceTree = "<group>"; };
 		7F796B7A3362196075C62E61 /* wrap_Fixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Fixture.cpp; sourceTree = "<group>"; };
 		7F796B7A3362196075C62E61 /* wrap_Fixture.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Fixture.cpp; sourceTree = "<group>"; };
 		7F911CF2107B22F44C5B2542 /* b2Collision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
 		7F911CF2107B22F44C5B2542 /* b2Collision.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = b2Collision.h; sourceTree = "<group>"; };
+		FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Texture.cpp; sourceTree = "<group>"; };
+		FA01BE1D1878E35B00640047 /* wrap_Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Texture.h; sourceTree = "<group>"; };
 		FA03546A1731F3A700284828 /* simplexnoise1234.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplexnoise1234.cpp; sourceTree = "<group>"; };
 		FA03546A1731F3A700284828 /* simplexnoise1234.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = simplexnoise1234.cpp; sourceTree = "<group>"; };
 		FA03546B1731F3A700284828 /* simplexnoise1234.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplexnoise1234.h; sourceTree = "<group>"; };
 		FA03546B1731F3A700284828 /* simplexnoise1234.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = simplexnoise1234.h; sourceTree = "<group>"; };
 		FA08F5AE16C7525600F007B5 /* Info-Framework.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; sourceTree = "<group>"; };
 		FA08F5AE16C7525600F007B5 /* Info-Framework.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "Info-Framework.plist"; sourceTree = "<group>"; };
@@ -827,6 +829,7 @@
 		FA9A1009182A0D5200106F9F /* glad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glad.cpp; sourceTree = "<group>"; };
 		FA9A1009182A0D5200106F9F /* glad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = glad.cpp; sourceTree = "<group>"; };
 		FA9A100A182A0D5200106F9F /* glad.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = glad.hpp; sourceTree = "<group>"; };
 		FA9A100A182A0D5200106F9F /* glad.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = glad.hpp; sourceTree = "<group>"; };
 		FA9A100B182A0D5200106F9F /* gladfuncs.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = gladfuncs.hpp; sourceTree = "<group>"; };
 		FA9A100B182A0D5200106F9F /* gladfuncs.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = gladfuncs.hpp; sourceTree = "<group>"; };
+		FA9B49281875EFB900201DA9 /* Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Texture.h; sourceTree = "<group>"; };
 		FA9B4A0716E1578300074F42 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = /Library/Frameworks/SDL2.framework; sourceTree = "<absolute>"; };
 		FA9B4A0716E1578300074F42 /* SDL2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL2.framework; path = /Library/Frameworks/SDL2.framework; sourceTree = "<absolute>"; };
 		FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Window.cpp; sourceTree = "<group>"; };
 		FA9FC0AE173D6E3E005027FF /* wrap_Window.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Window.cpp; sourceTree = "<group>"; };
 		FA9FC0AF173D6E3E005027FF /* wrap_Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Window.h; sourceTree = "<group>"; };
 		FA9FC0AF173D6E3E005027FF /* wrap_Window.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Window.h; sourceTree = "<group>"; };
@@ -845,7 +848,6 @@
 		FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_BezierCurve.h; sourceTree = "<group>"; };
 		FAC570FF17402D1100D147E4 /* wrap_BezierCurve.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_BezierCurve.h; sourceTree = "<group>"; };
 		FAC86E611724552C00EED715 /* wrap_Quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Quad.cpp; sourceTree = "<group>"; };
 		FAC86E611724552C00EED715 /* wrap_Quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = wrap_Quad.cpp; sourceTree = "<group>"; };
 		FAC86E621724552C00EED715 /* wrap_Quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Quad.h; sourceTree = "<group>"; };
 		FAC86E621724552C00EED715 /* wrap_Quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = wrap_Quad.h; sourceTree = "<group>"; };
-		FAC86E661724555D00EED715 /* DrawQable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawQable.h; sourceTree = "<group>"; };
 		FAC86E671724555D00EED715 /* Quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Quad.cpp; sourceTree = "<group>"; };
 		FAC86E671724555D00EED715 /* Quad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Quad.cpp; sourceTree = "<group>"; };
 		FAC86E681724555D00EED715 /* Quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Quad.h; sourceTree = "<group>"; };
 		FAC86E681724555D00EED715 /* Quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Quad.h; sourceTree = "<group>"; };
 		FAE010D8170DDE99006F29D0 /* ddsinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ddsinfo.h; sourceTree = "<group>"; };
 		FAE010D8170DDE99006F29D0 /* ddsinfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ddsinfo.h; sourceTree = "<group>"; };
@@ -1480,16 +1482,14 @@
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
 				4941079838020ECA049B5C21 /* Color.h */,
 				4941079838020ECA049B5C21 /* Color.h */,
-				58BA2BB460AF3C591B22690E /* Drawable.cpp */,
 				5D93601669875EE06721689E /* Drawable.h */,
 				5D93601669875EE06721689E /* Drawable.h */,
-				FAC86E661724555D00EED715 /* DrawQable.h */,
 				03F17FF546D637744E263961 /* Graphics.cpp */,
 				03F17FF546D637744E263961 /* Graphics.cpp */,
 				777352284E262F48543E6E7F /* Graphics.h */,
 				777352284E262F48543E6E7F /* Graphics.h */,
-				58CC50E70A375FDF53EF01B6 /* Image.cpp */,
-				1DA41DFF0869489411A71AFC /* Image.h */,
 				75093EE94918576801F50993 /* opengl */,
 				75093EE94918576801F50993 /* opengl */,
 				FAC86E671724555D00EED715 /* Quad.cpp */,
 				FAC86E671724555D00EED715 /* Quad.cpp */,
 				FAC86E681724555D00EED715 /* Quad.h */,
 				FAC86E681724555D00EED715 /* Quad.h */,
+				58CC50E70A375FDF53EF01B6 /* Texture.cpp */,
+				1DA41DFF0869489411A71AFC /* Texture.h */,
 				4B731754147B27AF73AC5358 /* Volatile.cpp */,
 				4B731754147B27AF73AC5358 /* Volatile.cpp */,
 				0CFF64090F0F4F481BB80CF0 /* Volatile.h */,
 				0CFF64090F0F4F481BB80CF0 /* Volatile.h */,
 			);
 			);
@@ -1685,6 +1685,7 @@
 				FA577A8616C71CF000860150 /* Shader.h */,
 				FA577A8616C71CF000860150 /* Shader.h */,
 				4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */,
 				4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */,
 				727D23FA1CC755B902471A45 /* SpriteBatch.h */,
 				727D23FA1CC755B902471A45 /* SpriteBatch.h */,
+				FA9B49281875EFB900201DA9 /* Texture.h */,
 				426B1C4475DC54505B824B7F /* VertexBuffer.cpp */,
 				426B1C4475DC54505B824B7F /* VertexBuffer.cpp */,
 				577B66502A5360AE60733B10 /* VertexBuffer.h */,
 				577B66502A5360AE60733B10 /* VertexBuffer.h */,
 				4E3251027026699A1D4D310D /* wrap_Canvas.cpp */,
 				4E3251027026699A1D4D310D /* wrap_Canvas.cpp */,
@@ -1705,6 +1706,8 @@
 				FA577A8816C71CF000860150 /* wrap_Shader.h */,
 				FA577A8816C71CF000860150 /* wrap_Shader.h */,
 				02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */,
 				02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */,
 				2BE75A693BE206B22DAE1B2E /* wrap_SpriteBatch.h */,
 				2BE75A693BE206B22DAE1B2E /* wrap_SpriteBatch.h */,
+				FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */,
+				FA01BE1D1878E35B00640047 /* wrap_Texture.h */,
 			);
 			);
 			path = opengl;
 			path = opengl;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -1987,12 +1990,12 @@
 				FAF6704E18184FF800DBDEEA /* wuff_config.h in Headers */,
 				FAF6704E18184FF800DBDEEA /* wuff_config.h in Headers */,
 				FA0CDE3D1710F9A50056E8D7 /* FormatHandler.h in Headers */,
 				FA0CDE3D1710F9A50056E8D7 /* FormatHandler.h in Headers */,
 				FA7AA59317F6AC1F00704BE2 /* wrap_Mesh.h in Headers */,
 				FA7AA59317F6AC1F00704BE2 /* wrap_Mesh.h in Headers */,
+				FA01BE1F1878E35B00640047 /* wrap_Texture.h in Headers */,
 				FAEC808B1710FEA60057279A /* ImageData.h in Headers */,
 				FAEC808B1710FEA60057279A /* ImageData.h in Headers */,
 				FAEC808F1711E76C0057279A /* CompressedData.h in Headers */,
 				FAEC808F1711E76C0057279A /* CompressedData.h in Headers */,
 				FA636D8B171B70920065623F /* RandomGenerator.h in Headers */,
 				FA636D8B171B70920065623F /* RandomGenerator.h in Headers */,
 				FA636D8F171B72A70065623F /* wrap_RandomGenerator.h in Headers */,
 				FA636D8F171B72A70065623F /* wrap_RandomGenerator.h in Headers */,
 				FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */,
 				FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */,
-				FAC86E6A1724555D00EED715 /* DrawQable.h in Headers */,
 				FAC86E6C1724555D00EED715 /* Quad.h in Headers */,
 				FAC86E6C1724555D00EED715 /* Quad.h in Headers */,
 				FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */,
 				FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */,
 				FA3D9E0E16E68DE600CA6630 /* Cursor.h in Headers */,
 				FA3D9E0E16E68DE600CA6630 /* Cursor.h in Headers */,
@@ -2004,6 +2007,7 @@
 				FAF6705218184FF800DBDEEA /* wuff_internal.h in Headers */,
 				FAF6705218184FF800DBDEEA /* wuff_internal.h in Headers */,
 				FAB007941740C28900A9664D /* Joystick.h in Headers */,
 				FAB007941740C28900A9664D /* Joystick.h in Headers */,
 				FAB007981740C87D00A9664D /* wrap_Joystick.h in Headers */,
 				FAB007981740C87D00A9664D /* wrap_Joystick.h in Headers */,
+				FA9B492A1875EFB900201DA9 /* Texture.h in Headers */,
 				FAC5710117402D1100D147E4 /* BezierCurve.h in Headers */,
 				FAC5710117402D1100D147E4 /* BezierCurve.h in Headers */,
 				FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */,
 				FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */,
 				FA5FDC7E1788D548002F0ED2 /* callbacks.h in Headers */,
 				FA5FDC7E1788D548002F0ED2 /* callbacks.h in Headers */,
@@ -2193,9 +2197,8 @@
 				FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */,
 				FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */,
 				FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */,
 				FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */,
 				FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */,
 				FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */,
-				FA08F61516C753F600F007B5 /* Drawable.cpp in Sources */,
 				FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */,
 				FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */,
-				FA08F61816C753F600F007B5 /* Image.cpp in Sources */,
+				FA08F61816C753F600F007B5 /* Texture.cpp in Sources */,
 				FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */,
 				FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */,
 				FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */,
 				FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */,
 				FA08F61C16C7541400F007B5 /* Font.cpp in Sources */,
 				FA08F61C16C7541400F007B5 /* Font.cpp in Sources */,
@@ -2298,6 +2301,7 @@
 				FAF272A616E3D44400CC193A /* LuaThread.cpp in Sources */,
 				FAF272A616E3D44400CC193A /* LuaThread.cpp in Sources */,
 				FA0A4BF0182E0C2800E1E4D2 /* b2MotorJoint.cpp in Sources */,
 				FA0A4BF0182E0C2800E1E4D2 /* b2MotorJoint.cpp in Sources */,
 				FAF272A816E3D44400CC193A /* ThreadModule.cpp in Sources */,
 				FAF272A816E3D44400CC193A /* ThreadModule.cpp in Sources */,
+				FA01BE1E1878E35B00640047 /* wrap_Texture.cpp in Sources */,
 				FAF272AA16E3D44400CC193A /* wrap_Channel.cpp in Sources */,
 				FAF272AA16E3D44400CC193A /* wrap_Channel.cpp in Sources */,
 				FAF272AC16E3D44400CC193A /* wrap_LuaThread.cpp in Sources */,
 				FAF272AC16E3D44400CC193A /* wrap_LuaThread.cpp in Sources */,
 				FAF272AE16E3D44400CC193A /* wrap_ThreadModule.cpp in Sources */,
 				FAF272AE16E3D44400CC193A /* wrap_ThreadModule.cpp in Sources */,
@@ -2354,7 +2358,7 @@
 				DEAD_CODE_STRIPPING = YES;
 				DEAD_CODE_STRIPPING = YES;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
 				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
@@ -2390,7 +2394,7 @@
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
 				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;

+ 2 - 0
jni/love/platform/macosx/love.xcodeproj/project.pbxproj

@@ -301,6 +301,7 @@
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
 				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
@@ -354,6 +355,7 @@
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_INPUT_FILETYPE = automatic;
 				GCC_INPUT_FILETYPE = automatic;
 				GCC_OPTIMIZATION_LEVEL = 3;
 				GCC_OPTIMIZATION_LEVEL = 3;
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;

+ 14 - 9
jni/love/platform/unix/automagic

@@ -14,11 +14,11 @@ if [[ ! -d platform/unix ]]; then
 	exit 1
 	exit 1
 fi
 fi
 
 
-AUTOHEADER=$(which autoheader)
-AUTOCONF=$(which autoconf)
-LIBTOOLIZE=$(which libtoolize)
-ACLOCAL=$(which aclocal)
-AUTOMAKE=$(which automake)
+AUTOHEADER=${AUTOHEADER:-$(which autoheader)}
+AUTOCONF=${AUTOCONF:-$(which autoconf)}
+LIBTOOLIZE=${LIBTOOLIZE:-$(which libtoolize)}
+ACLOCAL=${ACLOCAL:-$(which aclocal)}
+AUTOMAKE=${AUTOMAKE:-$(which automake)}
 
 
 [[ -x ${AUTOHEADER} ]] || die "Could not find autoheader. Install autoconf."
 [[ -x ${AUTOHEADER} ]] || die "Could not find autoheader. Install autoconf."
 [[ -x ${AUTOCONF} ]]   || die "Could not find autoconf."
 [[ -x ${AUTOCONF} ]]   || die "Could not find autoconf."
@@ -27,10 +27,12 @@ AUTOMAKE=$(which automake)
 [[ -x ${AUTOMAKE} ]]   || die "Could not find automake."
 [[ -x ${AUTOMAKE} ]]   || die "Could not find automake."
 
 
 automagic() {
 automagic() {
+	log "Copying files..." >&2
 	cp platform/unix/configure.ac .
 	cp platform/unix/configure.ac .
 	cp platform/unix/Makefile.am .
 	cp platform/unix/Makefile.am .
 
 
-	if ! sh platform/unix/gen-makefile; then
+	log "Running genmodules..." >&2
+	if ! bash platform/unix/genmodules "$1"; then
 		echo "You should be doing this from the root directory of the project."
 		echo "You should be doing this from the root directory of the project."
 		exit 1
 		exit 1
 	fi
 	fi
@@ -52,12 +54,15 @@ automagic() {
 }
 }
 
 
 if [[ $1 == "-d" ]]; then
 if [[ $1 == "-d" ]]; then
-	automagic 2>&1
+	shift 1
+	automagic "$@" 2>&1
 else
 else
-	(automagic > /dev/null) 2>&1
+	(automagic "$@" > /dev/null) 2>&1
 fi
 fi
 if [[ $? -eq 1 ]]; then
 if [[ $? -eq 1 ]]; then
-	log "Failed, please contact the developers."
+	log "Failed, sadface."
+	log "You can make this script more verbose running it in debug mode (-d)"
+	log "This is generally a configuration error (I'm looking at you aclocal)"
 	exit 1
 	exit 1
 else
 else
 	log "Success, carry on configuring."
 	log "Success, carry on configuring."

+ 64 - 25
jni/love/platform/unix/configure.ac

@@ -12,6 +12,7 @@ AC_PROG_CC
 AC_PROG_CXX
 AC_PROG_CXX
 AC_PROG_SED
 AC_PROG_SED
 AC_PROG_MKDIR_P
 AC_PROG_MKDIR_P
+AC_PROG_OBJCXX
 AC_C_BIGENDIAN
 AC_C_BIGENDIAN
 AC_LANG([C++])
 AC_LANG([C++])
 
 
@@ -26,47 +27,72 @@ AC_DEFUN([ACLOVE_CXX_FLAG_TEST], # WARNING: NOT REENTRANT
 			  [AC_MSG_RESULT([no]); $3])
 			  [AC_MSG_RESULT([no]); $3])
 		  CXXFLAGS="$aclove_cxx_flag_test_save_cflags"])
 		  CXXFLAGS="$aclove_cxx_flag_test_save_cflags"])
 
 
+AC_DEFUN([LOVE_MSG_ERROR],
+		 [AC_MSG_ERROR([LÖVE needs "$1"[,] please install "$1" with development files and try again])])
+
 # C++11 support
 # C++11 support
 cxx11name="no"
 cxx11name="no"
 ACLOVE_CXX_FLAG_TEST([-std=c++0x], cxx11name="c++0x", [])
 ACLOVE_CXX_FLAG_TEST([-std=c++0x], cxx11name="c++0x", [])
 ACLOVE_CXX_FLAG_TEST([-std=c++11], cxx11name="c++11", [])
 ACLOVE_CXX_FLAG_TEST([-std=c++11], cxx11name="c++11", [])
-AS_VAR_IF([cxx11name], [no], AC_MSG_ERROR([Can't LÖVE without C++11]), CXXFLAGS="$CXXFLAGS -std=$cxx11name")
-
-# Libraries
-AC_SEARCH_LIBS([sqrt], [m], [], AC_MSG_ERROR([Can't LÖVE without C math library]))
-AC_SEARCH_LIBS([glLoadIdentity], [GL], [], AC_MSG_ERROR([Can't LÖVE without OpenGL]))
-AC_SEARCH_LIBS([alSourcePlay], [openal], [], AC_MSG_ERROR([Can't LÖVE without OpenAL]))
-AC_SEARCH_LIBS([ilInit], [IL], [], AC_MSG_ERROR([Can't LÖVE without DevIL]))
-AC_SEARCH_LIBS([FT_Load_Glyph], [freetype], [], AC_MSG_ERROR([Can't LÖVE without FreeType]))
-AC_SEARCH_LIBS([PHYSFS_init], [physfs], [], AC_MSG_ERROR([Can't LÖVE without PhysicsFS]))
-AC_SEARCH_LIBS([ModPlug_Load], [modplug], [], AC_MSG_ERROR([Can't LÖVE without ModPlug]))
-AC_SEARCH_LIBS([ov_open], [vorbisfile], [], AC_MSG_ERROR([Can't LÖVE without VorbisFile]))
-
-# Includes
-AC_CHECK_HEADER([freetype2/freetype/config/ftheader.h], [includes="$includes -I/usr/include/freetype2"])
+AS_VAR_IF([cxx11name], [no], AC_MSG_ERROR([LÖVE needs a C++ compiler with C++11 support]), CXXFLAGS="$CXXFLAGS -std=$cxx11name")
 
 
-# SDL 2, treated seperately because it combines setting SDL2_LIBS and SDL2_CFLAGS into one step
-AM_PATH_SDL2([], [], AC_MSG_ERROR([Can't LÖVE without SDL 2]))
+# Allow people on OSX to use autotools, they need their platform files
+AC_ARG_ENABLE([osx],
+			  AC_HELP_STRING([--enable-osx], [Compile platform-specific files for OSX]), [], [enable_osx=no])
+AS_VAR_IF([enable_osx], [no], [], #else
+		  ac_cv_search_glLoadIdentity="-framework OpenGL"
+		  AC_SUBST([LDFLAGS], ["${LDFLAGS} -framework CoreFoundation -framework Cocoa"])
+		  AC_SUBST([CPPFLAGS], ["${CPPFLAGS} -I../platform/macosx"]))
 
 
-# Lua, treated seperately because of --with-lua
+# --with-lua and --with-luaversion
 AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [Select the lua implementation])],
 AC_ARG_WITH([lua], [AS_HELP_STRING([--with-lua], [Select the lua implementation])],
-			[], [with_lua=lua])
+			[], [with_lua=luajit])
 AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua version])],
 AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua version])],
 			[], [with_luaversion=5.1])
 			[], [with_luaversion=5.1])
 
 
+# pkg-config libraries
+AM_PATH_SDL2([], [], [LOVE_MSG_ERROR([SDL 2])])
+PKG_CHECK_MODULES([lua], [${with_lua}${with_luaversion}], [lua_found=yes],
+				  [PKG_CHECK_MODULES([lua], [${with_lua}], [lua_found=yes], [lua_found=no])])
+PKG_CHECK_MODULES([freetype2], [freetype2], [], [LOVE_MSG_ERROR([FreeType2])])
+PKG_CHECK_MODULES([openal], [openal], [], [LOVE_MSG_ERROR([OpenAL])])
+PKG_CHECK_MODULES([devil], [IL], [], [LOVE_MSG_ERROR([DevIL])])
+PKG_CHECK_MODULES([libmodplug], [libmodplug], [], [LOVE_MSG_ERROR([libmodplug])])
+PKG_CHECK_MODULES([vorbisfile], [vorbisfile], [], [LOVE_MSG_ERROR([libvorbis and libvorbisfile])])
+
+# Other libraries
+AC_SEARCH_LIBS([sqrt], [m], [], [LOVE_MSG_ERROR([the C math library])])
+AC_SEARCH_LIBS([PHYSFS_init], [physfs], [], [LOVE_MSG_ERROR([PhysicsFS])])
+AC_SEARCH_LIBS([glLoadIdentity], [GL], [], [LOVE_MSG_ERROR([OpenGL])])
+
+# Lua, treated seperately because of --with-lua
 AS_VAR_IF([with_luaversion], [5.2], [luatest=lua_version], [luatest=lua_pcall]) # use lua_version for 5.2
 AS_VAR_IF([with_luaversion], [5.2], [luatest=lua_version], [luatest=lua_pcall]) # use lua_version for 5.2
-AC_SEARCH_LIBS([$luatest], ["${with_lua}${with_luaversion}" "${with_lua}"], [],
-			   AC_MSG_ERROR([Can't LÖVE without $with_lua]))
-AC_CHECK_HEADER(["${with_lua}${with_luaversion}/lua.h"], [includes="$includes -I/usr/include/${with_lua}${with_luaversion}"], [])
-AC_CHECK_HEADER(["${with_lua}/lua.h"], [includes="$includes -I/usr/include/${with_lua}"], [])
+AS_VAR_IF([lua_found], [yes],
+		  #if
+		  [
+		   luaheaders_found=yes
+		   AC_MSG_CHECKING([for library containing ${luatest}])
+		   AC_MSG_RESULT([${lua_LIBS}])],
+		  #else
+		  [
+		   AC_MSG_WARN([Could not find pkg-config definition for ${with_lua}${with_luaversion} or ${with_lua}, falling back to manual detection])
+		   AC_SEARCH_LIBS([$luatest], ["${with_lua}${with_luaversion}" "${with_lua}"], [],
+						  [LOVE_MSG_ERROR([$with_lua])])
+		   luaheaders_found=no
+		   AC_CHECK_HEADER(["${with_lua}${with_luaversion}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}${with_luaversion}"], [])
+		   AC_CHECK_HEADER(["${with_lua}/lua.h"], [luaheaders_found=yes includes="$includes -I/usr/include/${with_lua}"], [])])
+AS_VAR_IF([luaheaders_found], [yes], [], #else
+		  [
+		   AC_MSG_WARN([Could not locate lua headers for ${with_lua}${with_luaversion} or ${with_lua}, you probably need to specify them with CPPFLAGS])])
 
 
 # mpg123, treated seperately because it can be disabled (default on)
 # mpg123, treated seperately because it can be disabled (default on)
+# also not pkg-config because of the FILE_OFFSET_BITS.. bit
 AC_ARG_ENABLE([mpg123], AC_HELP_STRING([--disable-mpg123], [Disable mp3 support, for patent-free builds]), [], [enable_mpg123=yes])
 AC_ARG_ENABLE([mpg123], AC_HELP_STRING([--disable-mpg123], [Disable mp3 support, for patent-free builds]), [], [enable_mpg123=yes])
 AS_VAR_IF([enable_mpg123], [no],
 AS_VAR_IF([enable_mpg123], [no],
 	  AC_DEFINE([LOVE_NOMPG123], [], [Build without mpg123]),
 	  AC_DEFINE([LOVE_NOMPG123], [], [Build without mpg123]),
 	  # else
 	  # else
 	  AC_SEARCH_LIBS([mpg123_open_feed], [mpg123], [],
 	  AC_SEARCH_LIBS([mpg123_open_feed], [mpg123], [],
-					 AC_MSG_ERROR([Can't LÖVE without Mpg123]))
+					 [LOVE_MSG_ERROR([libmpg123])])
 	  AC_SEARCH_LIBS([mpg123_seek_64], [mpg123],
 	  AC_SEARCH_LIBS([mpg123_seek_64], [mpg123],
 					 AC_SUBST([FILE_OFFSET],[-D_FILE_OFFSET_BITS=64]),
 					 AC_SUBST([FILE_OFFSET],[-D_FILE_OFFSET_BITS=64]),
 					 AC_SUBST([FILE_OFFSET],[])))
 					 AC_SUBST([FILE_OFFSET],[])))
@@ -74,7 +100,7 @@ AS_VAR_IF([enable_mpg123], [no],
 # GME, treated seperately because it can be enabled (default off)
 # GME, treated seperately because it can be enabled (default off)
 AC_ARG_ENABLE([gme], AC_HELP_STRING([--enable-gme], [Enable GME support, for more chiptuney goodness]), [], [enable_gme=no])
 AC_ARG_ENABLE([gme], AC_HELP_STRING([--enable-gme], [Enable GME support, for more chiptuney goodness]), [], [enable_gme=no])
 AS_VAR_IF([enable_gme], [yes],
 AS_VAR_IF([enable_gme], [yes],
-	  AC_SEARCH_LIBS([gme_open_data], [gme], [], AC_MSG_ERROR([Can't LÖVE without gme]))
+	  AC_SEARCH_LIBS([gme_open_data], [gme], [], [LOVE_MSG_ERROR([gme])])
 	  AC_DEFINE([LOVE_SUPPORT_GME], [], [Enable gme])
 	  AC_DEFINE([LOVE_SUPPORT_GME], [], [Enable gme])
 	  AC_CHECK_HEADER([gme/gme.h], [includes="$includes -I/usr/include/gme"], []))
 	  AC_CHECK_HEADER([gme/gme.h], [includes="$includes -I/usr/include/gme"], []))
 
 
@@ -89,16 +115,29 @@ AC_ARG_ENABLE([exe],
 			  AC_HELP_STRING([--disable-exe], [Disable building of executable launcher]), [], [enable_exe=yes])
 			  AC_HELP_STRING([--disable-exe], [Disable building of executable launcher]), [], [enable_exe=yes])
 
 
 AS_VAR_IF([enable_exe], [no], [], #else
 AS_VAR_IF([enable_exe], [no], [], #else
-	  AC_DEFINE([LOVE_BUILD_EXE], [], [Don't build launcher]))
+	  AC_DEFINE([LOVE_BUILD_EXE], [], [Skip building launcher]))
 
 
 AM_CONDITIONAL([LOVE_BUILD_EXE], [test "x$enable_exe" != xno])
 AM_CONDITIONAL([LOVE_BUILD_EXE], [test "x$enable_exe" != xno])
 AM_CONDITIONAL([LOVE_NOMPG123], [test "x$enable_mpg123" == xno])
 AM_CONDITIONAL([LOVE_NOMPG123], [test "x$enable_mpg123" == xno])
+AM_CONDITIONAL([LOVE_TARGET_OSX], [test "x$enable_osx" != xno])
+
+# Automatic script file rebuilding
+AC_CHECK_PROGS([LUA_EXECUTABLE], ["${with_lua}${with_luaversion}" "${with_lua}" "lua"], [:])
+AS_VAR_IF([LUA_EXECUTABLE], [:],
+		  [AC_MSG_WARN([Did not find a lua executable, you may need to update the scripts manually if you change them])], [])
 
 
 # Set our includes as automake variable
 # Set our includes as automake variable
 AC_SUBST([LOVE_INCLUDES], ["$includes"])
 AC_SUBST([LOVE_INCLUDES], ["$includes"])
 
 
+m4_include([configure-modules.ac])
+
 AC_CONFIG_FILES([
 AC_CONFIG_FILES([
 	Makefile
 	Makefile
 	src/Makefile
 	src/Makefile
+	platform/unix/debian/control
+	platform/unix/debian/changelog
+	platform/unix/debian/rules
 ])
 ])
 AC_OUTPUT
 AC_OUTPUT
+
+chmod 755 platform/unix/debian/rules

+ 5 - 0
jni/love/platform/unix/debian/changelog.in

@@ -0,0 +1,5 @@
+love@LOVE_SUFFIX@ (0.9.0~ppatest5) precise; urgency=medium
+
+  * Upstream testing release
+
+ -- Bart van Strien <[email protected]>  Sat, 2 Nov 2013 16:23:40 +0100

+ 59 - 0
jni/love/platform/unix/debian/control.in

@@ -0,0 +1,59 @@
+Source: love@LOVE_SUFFIX@
+Section: games
+Priority: extra
+Maintainer: Bart van Strien <[email protected]>
+Build-Depends: debhelper (>= 9),
+               autotools-dev,
+               pkg-config,
+               libdevil-dev,
+               libfreetype6-dev,
+               libluajit-5.1-dev,
+               libphysfs-dev,
+               libsdl2-dev (>= 2.0.0),
+               libopenal-dev,
+               libogg-dev,
+               libvorbis-dev,
+               libflac-dev,
+               libflac++-dev,
+               libmodplug-dev,
+               libmpg123-dev,
+               libmng-dev
+Standards-Version: 3.9.3
+Homepage: http://love2d.org
+
+Package: liblove@LOVE_SUFFIX@
+Architecture: any
+Multi-Arch: same
+Pre-Depends: ${misc:Pre-Depends}
+Depends: ${misc:Depends},
+         ${shlibs:Depends},
+         libdevil1c2,
+         libmng1,
+         libfreetype6,
+         libgl1-mesa-glx,
+         libluajit-5.1-2,
+         libphysfs-1.0-0,
+         libsdl2 (>= 2.0.0),
+         libopenal1,
+         libogg0,
+         libvorbis0a,
+         libvorbisfile3,
+         libmodplug1,
+         libmpg123-0
+Description: LOVE is a free 2D game engine which enables easy game creation in Lua.
+
+Package: love@LOVE_SUFFIX@
+Architecture: any
+Multi-Arch: same
+Depends: ${misc:Depends},
+         liblove@LOVE_SUFFIX@ (= ${binary:Version})
+Description: LOVE is a free 2D game engine which enables easy game creation in Lua.
+
+Package: love@LOVE_SUFFIX@-dbg
+Priority: extra
+Section: debug
+Architecture: any
+Multi-Arch: same
+Depends: ${misc:Depends},
+         love@LOVE_SUFFIX@ (= ${binary:Version}),
+Description: LOVE is a free 2D game engine which enables easy game creation in Lua.

+ 2 - 2
jni/love/platform/unix/debian/copyright

@@ -1,4 +1,4 @@
-Copyright (c) 2006-2010 LOVE Development Team
+Copyright (c) 2006-2013 LOVE Development Team
 
 
 This software is provided 'as-is', without any express or implied
 This software is provided 'as-is', without any express or implied
 warranty. In no event will the authors be held liable for any damages
 warranty. In no event will the authors be held liable for any damages
@@ -17,4 +17,4 @@ appreciated but is not required.
 misrepresented as being the original software.
 misrepresented as being the original software.
 
 
 3. This notice may not be removed or altered from any source
 3. This notice may not be removed or altered from any source
-distribution.
+distribution.

+ 1 - 0
jni/love/platform/unix/debian/liblove-unstable.install

@@ -0,0 +1 @@
+usr/lib/*/liblove-unstable.so.*

+ 1 - 0
jni/love/platform/unix/debian/love-unstable.install

@@ -0,0 +1 @@
+usr/bin/love-unstable

+ 16 - 0
jni/love/platform/unix/debian/rules.in

@@ -0,0 +1,16 @@
+#!/usr/bin/make -f
+
+DEB_HOST_ARCH_CPU ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_CPU)
+DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH)
+
+override_dh_auto_configure:
+	dh_auto_configure -- --with-lua=luajit
+
+override_dh_link:
+	dh_link -plove@LOVE_SUFFIX@-dev usr/lib/$(DEB_HOST_MULTIARCH)/liblove@[email protected] usr/lib/$(DEB_HOST_MULTIARCH)/liblove@[email protected]
+
+override_dh_strip:
+	dh_strip --dbg-package=love@LOVE_SUFFIX@-dbg
+
+%:
+	dh  $@ --parallel

+ 3 - 13
jni/love/platform/unix/gen-makefile

@@ -1,11 +1,10 @@
 #!/bin/bash
 #!/bin/bash
 echo Generating src/Makefile.am ...
 echo Generating src/Makefile.am ...
-cd src
 inc_current='$(srcdir)'
 inc_current='$(srcdir)'
 inc_modules="$inc_current/modules"
 inc_modules="$inc_current/modules"
 inc_libraries="$inc_current/libraries"
 inc_libraries="$inc_current/libraries"
 
 
-cat > Makefile.am << EOF
+cat > src/Makefile.am << EOF
 AM_CPPFLAGS = -I$inc_current -I$inc_modules -I$inc_libraries -I$inc_libraries/enet/libenet/include \$(LOVE_INCLUDES) \$(FILE_OFFSET)
 AM_CPPFLAGS = -I$inc_current -I$inc_modules -I$inc_libraries -I$inc_libraries/enet/libenet/include \$(LOVE_INCLUDES) \$(FILE_OFFSET)
 AM_CXXFLAGS = \$(SDL_CFLAGS)
 AM_CXXFLAGS = \$(SDL_CFLAGS)
 AUTOMAKE_OPTIONS = subdir-objects
 AUTOMAKE_OPTIONS = subdir-objects
@@ -29,20 +28,11 @@ endif
 # libLÖVE
 # libLÖVE
 lib_LTLIBRARIES = liblove.la
 lib_LTLIBRARIES = liblove.la
 liblove_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) \$(SDL_LIBS)
 liblove_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) \$(SDL_LIBS)
-liblove_la_SOURCES = \\
 EOF
 EOF
 
 
-find . \( \( -iname "*.c" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.lch" \) \) -exec echo '{}' \\ \; \
-	| grep -v -f"../platform/unix/exclude" | head -c -3 >> Makefile.am
+platform/unix/genmodules >> src/Makefile.am
 
 
-printf "\n\n" >> Makefile.am
-cat >> Makefile.am << EOF
-if !LOVE_NOMPG123
-liblove_la_SOURCES += \\
-./modules/sound/lullaby/Mpg123Decoder.cpp \\
-./modules/sound/lullaby/Mpg123Decoder.h
-endif
-EOF
+printf "\n" >> src/Makefile.am
 
 
 cd ..
 cd ..
 echo "src/Makefile.am is updated! ^.^"
 echo "src/Makefile.am is updated! ^.^"

+ 168 - 0
jni/love/platform/unix/genmodules

@@ -0,0 +1,168 @@
+#!/bin/bash
+
+love_suffix="$1"
+love_amsuffix="$(echo "$love_suffix" | sed 's/\-/_/g' | sed 's/\./_/g')"
+
+flags=""
+upper()
+{
+	echo "$@" | tr '[:lower:]' '[:upper:]'
+}
+
+implfind()
+{
+	find "$1" -maxdepth 1 -type d -exec basename '{}' \; | grep -v "^\." | tail -n +2
+}
+
+sourcefind()
+{
+	find "$1" $2 -type f \( -iname "*.c" -o -iname "*.cpp" -o -iname "*.h" -o -iname "*.lch" \) | awk "{print \"./$prefix\"\$0\" \\\\\"}" | grep -v -f"$LOVEROOT/platform/unix/exclude"
+}
+
+handlemodule()
+{
+	module="$1"
+	DEFINENAME="LOVE_MODULE_$(upper "$module")"
+	printf "$DEFINENAME"
+}
+
+handleimpl()
+{
+	module="$1"
+	implementation="$2"
+	name="$3"
+
+	printf "if $name\n"
+	FILES="$(sourcefind "$module/$implementation" | sed "s/^/    /")"
+	if [[ "x$FILES" != "x" ]]; then
+		printf "liblove${love_amsuffix}_la_SOURCES += \\\\\n"
+		printf "${FILES:0:${#FILES}-2}\n"
+	fi
+	printf "endif\n\n"
+}
+
+genmodules()
+{
+	LOVEROOT="$(pwd)"
+	cd src
+
+	printf "liblove${love_amsuffix}_la_SOURCES = \\\\\n"
+	sourcefind "common" | sed "s/^/    /"
+	FILES="$(sourcefind "scripts" | sed "s/^/    /")"
+	printf "${FILES:0:${#FILES}-2}\n\n"
+
+	cd modules
+	prefix="modules/"
+	for module in *; do
+		NAME=$(handlemodule "$module")
+		flags="$flags module-$module"
+
+		printf "if $NAME\n"
+
+		for implementation in $(implfind "$module"); do
+			flags="$flags implementation-$module-$implementation"
+			handleimpl "$module" "$implementation" "LOVE_IMPLEMENTATION_$(upper "$module")_$(upper "$implementation")"
+		done
+
+		FILES="$(sourcefind "$module" "-maxdepth 1" | sed "s/^/    /")"
+		if [[ "x$FILES" != "x" ]]; then
+			printf "liblove${love_amsuffix}_la_SOURCES += \\\\\n"
+			printf "${FILES:0:${#FILES}-2}\n"
+		fi
+
+		printf "endif\n\n"
+	done
+
+	cd ../libraries
+	prefix="libraries/"
+	for library in *; do
+		NAME="LOVE_LIBRARY_$(upper "$library")"
+		flags="$flags library-$library"
+
+		printf "if $NAME\n"
+		printf "liblove${love_amsuffix}_la_SOURCES += \\\\\n"
+		FILES="$(sourcefind "$library" | sed "s/^/    /")"
+		printf "${FILES:0:${#FILES}-2}\nendif\n\n"
+	done
+	cd ../..
+}
+
+genflags()
+{
+	for flag in $flags; do
+		prettyflag="$(echo "$flag" | sed 's/-/ love./' | sed 's/-/./g')"
+		varflag="enable_$(echo "$flag" | sed 's/^[^-]*-//' | sed 's/[^a-zA-Z0-9]/_/')"
+		defineflag="LOVE_ENABLE_$(upper $(echo $flag | sed 's/^[^-]*-//' | sed 's/-/_/g'))"
+		amflag="$(upper $(echo love-$flag | sed 's/-/_/g'))"
+		printf "AC_ARG_ENABLE([$flag], [  --disable-$flag    Turn off $prettyflag], [], [$varflag=true])\n"
+		printf "AH_TEMPLATE([$defineflag], [])\n"
+		printf "if test x\"\$$varflag\" == xtrue; then\n"
+		printf "    AC_DEFINE([$defineflag], [])\n"
+		printf "fi\n"
+		printf "AM_CONDITIONAL([$amflag], [test x\$$varflag == xtrue])\n\n"
+	done
+}
+
+echo Generating src/Makefile.am ...
+inc_current='$(srcdir)'
+inc_modules="$inc_current/modules"
+inc_libraries="$inc_current/libraries"
+
+cat > src/Makefile.am << EOF
+AM_CPPFLAGS = -I$inc_current -I$inc_modules -I$inc_libraries -I$inc_libraries/enet/libenet/include \$(LOVE_INCLUDES) \$(FILE_OFFSET)\
+	\$(SDL_CFLAGS) \$(lua_CFLAGS) \$(freetype2_CFLAGS)\
+	\$(openal_CFLAGS) \$(devil_CFLAGS) \$(libmodplug_CFLAGS)\
+	\$(vorbisfile_CFLAGS)
+AUTOMAKE_OPTIONS = subdir-objects
+SUBDIRS =
+SUFFIXES = .lua .lua.h
+
+if LOVE_BUILD_EXE
+# LÖVE executable
+bin_PROGRAMS = love${love_suffix}
+#love_LDFLAGS =
+love${love_amsuffix}_LDADD = liblove${love_suffix}.la \$(lua_LIBS)
+love${love_amsuffix}_SOURCES = love.cpp
+
+if LOVE_TARGET_OSX
+love${love_amsuffix}_LIBTOOLFLAGS = --tag=OBJCXX
+love${love_amsuffix}_SOURCES += \\
+    ../platform/macosx/OSX.h \\
+    ../platform/macosx/OSX.mm
+else
+love${love_amsuffix}_LIBTOOLFLAGS = --tag=CXX
+endif
+endif
+
+# Compile scripts
+.lua.lua.h:
+	cd scripts; \
+	\$(LUA_EXECUTABLE) auto.lua \$<
+
+# libLÖVE
+lib_LTLIBRARIES = liblove${love_suffix}.la
+liblove${love_amsuffix}_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS)
+liblove${love_amsuffix}_la_LIBADD = \
+	\$(SDL_LIBS) \$(freetype2_LIBS) \$(lua_LIBS)\
+	\$(openal_LIBS) \$(devil_LIBS) \$(libmodplug_LIBS)\
+	\$(vorbisfile_LIBS)
+EOF
+
+genmodules >> src/Makefile.am
+
+cat >> src/Makefile.am << EOF
+if !LOVE_NOMPG123
+liblove${love_amsuffix}_la_SOURCES += \\
+    ./modules/sound/lullaby/Mpg123Decoder.cpp \\
+    ./modules/sound/lullaby/Mpg123Decoder.h
+endif
+EOF
+
+echo "src/Makefile.am is updated! ^.^"
+
+echo "Generating configure-modules.ac"
+genflags > configure-modules.ac
+cat >> configure-modules.ac << EOF
+AC_SUBST([LOVE_SUFFIX], [${love_suffix}])
+EOF
+echo "configure-modules.ac is updated! ^.^"

+ 5 - 4
jni/love/readme.md

@@ -10,7 +10,7 @@ Compilation
 -----------
 -----------
 
 
 ###Windows
 ###Windows
-Use the project files for Visual Studio 2010 located in the platform dir.
+Follow the instructions at the [megasource][megasource] repository page.
 
 
 ###*nix
 ###*nix
 Run `platform/unix/automagic` from the repository root, then run ./configure and make.
 Run `platform/unix/automagic` from the repository root, then run ./configure and make.
@@ -19,10 +19,10 @@ Run `platform/unix/automagic` from the repository root, then run ./configure and
 	$ ./configure
 	$ ./configure
 	$ make
 	$ make
 
 
-###OSX
-Use the XCode project in platform/macosx.
+###Mac OS X
+Download the required frameworks from [here][dependencies] and place them in `/Library/Frameworks/`.
 
 
-For both Windows and OSX there are dependencies available [here][dependencies].
+Then use the Xcode project found at `platform/macosx/love.xcodeproj`.
 
 
 Repository information
 Repository information
 ----------------------
 ----------------------
@@ -64,6 +64,7 @@ Dependencies
 [forums]: http://love2d.org/forums
 [forums]: http://love2d.org/forums
 [irc]: irc://irc.oftc.net/love
 [irc]: irc://irc.oftc.net/love
 [dependencies]: http://love2d.org/sdk
 [dependencies]: http://love2d.org/sdk
+[megasource]: https://bitbucket.org/rude/megasource
 [builds]: http://love2d.org/builds
 [builds]: http://love2d.org/builds
 [stableppa]: https://launchpad.net/~bartbes/+archive/love-stable
 [stableppa]: https://launchpad.net/~bartbes/+archive/love-stable
 [unstableppa]: https://launchpad.net/~bartbes/+archive/love-unstable
 [unstableppa]: https://launchpad.net/~bartbes/+archive/love-unstable

+ 1 - 1
jni/love/src/common/Data.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/EnumMap.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Exception.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Exception.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Matrix.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Matrix.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Memoizer.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Memoizer.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Module.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Module.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Object.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Object.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Reference.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Reference.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/StringMap.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Variant.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Variant.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Vector.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/Vector.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/common/b64.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -25,7 +25,7 @@ namespace love
 
 
 static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq";
 static const char cd64[]="|$$$}rstuvwxyz{$$$$$$$>?@ABCDEFGHIJKLMNOPQRSTUVW$$$$$$XYZ[\\]^_`abcdefghijklmnopq";
 
 
-void b64_decode_block(char in[4], char out[3])
+static void b64_decode_block(char in[4], char out[3])
 {
 {
 	out[0] = (char)(in[0] << 2 | in[1] >> 4);
 	out[0] = (char)(in[0] << 2 | in[1] >> 4);
 	out[1] = (char)(in[1] << 4 | in[2] >> 2);
 	out[1] = (char)(in[1] << 4 | in[2] >> 2);

+ 1 - 1
jni/love/src/common/b64.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 42 - 1
jni/love/src/common/config.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -86,6 +86,47 @@
 #		undef LOVE_BIG_ENDIAN
 #		undef LOVE_BIG_ENDIAN
 #		define LOVE_LITTLE_ENDIAN 1
 #		define LOVE_LITTLE_ENDIAN 1
 #	endif
 #	endif
+#else
+#	define LOVE_ENABLE_AUDIO
+#	define LOVE_ENABLE_AUDIO_NULL
+#	define LOVE_ENABLE_AUDIO_OPENAL
+#	define LOVE_ENABLE_BOX2D
+#	define LOVE_ENABLE_DDSPARSE
+#	define LOVE_ENABLE_ENET
+#	define LOVE_ENABLE_EVENT
+#	define LOVE_ENABLE_EVENT_SDL
+#	define LOVE_ENABLE_FILESYSTEM
+#	define LOVE_ENABLE_FILESYSTEM_PHYSFS
+#	define LOVE_ENABLE_FONT
+#	define LOVE_ENABLE_FONT_FREETYPE
+#	define LOVE_ENABLE_GRAPHICS
+#	define LOVE_ENABLE_GRAPHICS_OPENGL
+#	define LOVE_ENABLE_IMAGE
+#	define LOVE_ENABLE_IMAGE_MAGPIE
+#	define LOVE_ENABLE_JOYSTICK
+#	define LOVE_ENABLE_JOYSTICK_SDL
+#	define LOVE_ENABLE_KEYBOARD
+#	define LOVE_ENABLE_KEYBOARD_SDL
+#	define LOVE_ENABLE_LOVE
+#	define LOVE_ENABLE_LUASOCKET
+#	define LOVE_ENABLE_MATH
+#	define LOVE_ENABLE_MOUSE
+#	define LOVE_ENABLE_MOUSE_SDL
+#	define LOVE_ENABLE_NOISE1234
+#	define LOVE_ENABLE_PHYSICS
+#	define LOVE_ENABLE_PHYSICS_BOX2D
+#	define LOVE_ENABLE_SOUND
+#	define LOVE_ENABLE_SOUND_LULLABY
+#	define LOVE_ENABLE_SYSTEM
+#	define LOVE_ENABLE_SYSTEM_SDL
+#	define LOVE_ENABLE_THREAD
+#	define LOVE_ENABLE_THREAD_SDL
+#	define LOVE_ENABLE_TIMER
+#	define LOVE_ENABLE_TIMER_SDL
+#	define LOVE_ENABLE_UTF8
+#	define LOVE_ENABLE_WINDOW
+#	define LOVE_ENABLE_WINDOW_SDL
+#	define LOVE_ENABLE_WUFF
 #endif
 #endif
 
 
 #endif // LOVE_CONFIG_H
 #endif // LOVE_CONFIG_H

+ 1 - 1
jni/love/src/common/delay.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/delay.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/int.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/math.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 1
jni/love/src/common/runtime.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -671,6 +671,7 @@ StringMap<Type, TYPE_MAX_ENUM>::Entry typeEntries[] =
 
 
 	// Graphics
 	// Graphics
 	{"Drawable", GRAPHICS_DRAWABLE_ID},
 	{"Drawable", GRAPHICS_DRAWABLE_ID},
+	{"Texture", GRAPHICS_TEXTURE_ID},
 	{"Image", GRAPHICS_IMAGE_ID},
 	{"Image", GRAPHICS_IMAGE_ID},
 	{"Quad", GRAPHICS_QUAD_ID},
 	{"Quad", GRAPHICS_QUAD_ID},
 	{"Font", GRAPHICS_FONT_ID},
 	{"Font", GRAPHICS_FONT_ID},

+ 1 - 1
jni/love/src/common/runtime.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 5 - 5
jni/love/src/common/types.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -45,7 +45,7 @@ enum Type
 
 
 	// Graphics
 	// Graphics
 	GRAPHICS_DRAWABLE_ID,
 	GRAPHICS_DRAWABLE_ID,
-	GRAPHICS_DRAWQABLE_ID,
+	GRAPHICS_TEXTURE_ID,
 	GRAPHICS_IMAGE_ID,
 	GRAPHICS_IMAGE_ID,
 	GRAPHICS_QUAD_ID,
 	GRAPHICS_QUAD_ID,
 	GRAPHICS_FONT_ID,
 	GRAPHICS_FONT_ID,
@@ -130,13 +130,13 @@ const bits FONT_RASTERIZER_T = (bits(1) << FONT_RASTERIZER_ID) | OBJECT_T;
 
 
 // Graphics.
 // Graphics.
 const bits GRAPHICS_DRAWABLE_T = (bits(1) << GRAPHICS_DRAWABLE_ID) | OBJECT_T;
 const bits GRAPHICS_DRAWABLE_T = (bits(1) << GRAPHICS_DRAWABLE_ID) | OBJECT_T;
-const bits GRAPHICS_DRAWQABLE_T = (bits(1) << GRAPHICS_DRAWQABLE_ID) | GRAPHICS_DRAWABLE_T;
-const bits GRAPHICS_IMAGE_T = (bits(1) << GRAPHICS_IMAGE_ID) | GRAPHICS_DRAWQABLE_T;
+const bits GRAPHICS_TEXTURE_T = (bits(1) << GRAPHICS_TEXTURE_ID) | GRAPHICS_DRAWABLE_T;
+const bits GRAPHICS_IMAGE_T = (bits(1) << GRAPHICS_IMAGE_ID) | GRAPHICS_TEXTURE_T;
 const bits GRAPHICS_QUAD_T = (bits(1) << GRAPHICS_QUAD_ID) | OBJECT_T;
 const bits GRAPHICS_QUAD_T = (bits(1) << GRAPHICS_QUAD_ID) | OBJECT_T;
 const bits GRAPHICS_FONT_T = (bits(1) << GRAPHICS_FONT_ID) | OBJECT_T;
 const bits GRAPHICS_FONT_T = (bits(1) << GRAPHICS_FONT_ID) | OBJECT_T;
 const bits GRAPHICS_PARTICLE_SYSTEM_T = (bits(1) << GRAPHICS_PARTICLE_SYSTEM_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_PARTICLE_SYSTEM_T = (bits(1) << GRAPHICS_PARTICLE_SYSTEM_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_SPRITE_BATCH_T = (bits(1) << GRAPHICS_SPRITE_BATCH_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_SPRITE_BATCH_T = (bits(1) << GRAPHICS_SPRITE_BATCH_ID) | GRAPHICS_DRAWABLE_T;
-const bits GRAPHICS_CANVAS_T = (bits(1) << GRAPHICS_CANVAS_ID) | GRAPHICS_DRAWQABLE_T;
+const bits GRAPHICS_CANVAS_T = (bits(1) << GRAPHICS_CANVAS_ID) | GRAPHICS_TEXTURE_T;
 const bits GRAPHICS_SHADER_T = (bits(1) << GRAPHICS_SHADER_ID) | OBJECT_T;
 const bits GRAPHICS_SHADER_T = (bits(1) << GRAPHICS_SHADER_ID) | OBJECT_T;
 const bits GRAPHICS_MESH_T = (bits(1) << GRAPHICS_MESH_ID) | GRAPHICS_DRAWABLE_T;
 const bits GRAPHICS_MESH_T = (bits(1) << GRAPHICS_MESH_ID) | GRAPHICS_DRAWABLE_T;
 
 

+ 1 - 1
jni/love/src/common/utf8.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/utf8.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/version.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/wrap_Data.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/common/wrap_Data.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/libraries/enet/lua-enet.h

@@ -1,5 +1,5 @@
 /**
 /**
-* Copyright (c) 2006-2012 LOVE Development Team
+* Copyright (c) 2006-2014 LOVE Development Team
 * 
 * 
 * This software is provided 'as-is', without any express or implied
 * This software is provided 'as-is', without any express or implied
 * warranty.  In no event will the authors be held liable for any damages
 * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/libraries/luasocket/luasocket.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/libraries/luasocket/luasocket.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/love.cpp

@@ -151,9 +151,9 @@ static const struct luaL_Reg sdl_lib[] = {
 
 
 int main(int argc, char **argv)
 int main(int argc, char **argv)
 {
 {
+#ifdef __ANDROID__
 	SDL_SetHint("LOVE_GRAPHICS_USE_OPENGLES", "1");
 	SDL_SetHint("LOVE_GRAPHICS_USE_OPENGLES", "1");
-
-	SDL_LogSetAllPriority(SDL_LOG_PRIORITY_VERBOSE);
+#endif
 
 
 #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK
 #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK
 	int hack_argc = 0;	char **hack_argv = 0;
 	int hack_argc = 0;	char **hack_argv = 0;

+ 1 - 1
jni/love/src/modules/audio/Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/audio/Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/audio/Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/modules/audio/Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -51,7 +51,7 @@ public:
 	Source(Type type);
 	Source(Type type);
 	virtual ~Source();
 	virtual ~Source();
 
 
-	virtual Source *copy() = 0;
+	virtual Source *clone() = 0;
 
 
 	virtual void play() = 0;
 	virtual void play() = 0;
 	virtual void stop() = 0;
 	virtual void stop() = 0;

+ 1 - 1
jni/love/src/modules/audio/null/Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/audio/null/Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/modules/audio/null/Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -36,7 +36,7 @@ Source::~Source()
 {
 {
 }
 }
 
 
-love::audio::Source *Source::copy()
+love::audio::Source *Source::clone()
 {
 {
 	this->retain();
 	this->retain();
 	return this;
 	return this;

+ 2 - 2
jni/love/src/modules/audio/null/Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -38,7 +38,7 @@ public:
 	Source();
 	Source();
 	virtual ~Source();
 	virtual ~Source();
 
 
-	virtual love::audio::Source *copy();
+	virtual love::audio::Source *clone();
 	virtual void play();
 	virtual void play();
 	virtual void stop();
 	virtual void stop();
 	virtual void pause();
 	virtual void pause();

+ 1 - 1
jni/love/src/modules/audio/openal/Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/modules/audio/openal/Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -37,7 +37,7 @@
 #include "thread/threads.h"
 #include "thread/threads.h"
 
 
 // OpenAL
 // OpenAL
-#ifdef LOVE_MACOSX
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS // Frameworks have different include paths.
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/al.h>
 #include <OpenAL-Soft/al.h>
 #else
 #else

+ 1 - 1
jni/love/src/modules/audio/openal/Pool.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/modules/audio/openal/Pool.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -33,7 +33,7 @@
 #include "thread/threads.h"
 #include "thread/threads.h"
 
 
 // OpenAL
 // OpenAL
-#ifdef LOVE_MACOSX
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/al.h>
 #include <OpenAL-Soft/al.h>
 #else
 #else

+ 77 - 20
jni/love/src/modules/audio/openal/Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -33,10 +33,22 @@ namespace audio
 namespace openal
 namespace openal
 {
 {
 
 
+StaticDataBuffer::StaticDataBuffer(ALenum format, const ALvoid *data, ALsizei size, ALsizei freq)
+{
+	alGenBuffers(1, &buffer);
+	alBufferData(buffer, format, data, size, freq);
+}
+
+StaticDataBuffer::~StaticDataBuffer()
+{
+	alDeleteBuffers(1, &buffer);
+}
+
 Source::Source(Pool *pool, love::sound::SoundData *soundData)
 Source::Source(Pool *pool, love::sound::SoundData *soundData)
 	: love::audio::Source(Source::TYPE_STATIC)
 	: love::audio::Source(Source::TYPE_STATIC)
 	, pool(pool)
 	, pool(pool)
 	, valid(false)
 	, valid(false)
+	, staticBuffer(nullptr)
 	, pitch(1.0f)
 	, pitch(1.0f)
 	, volume(1.0f)
 	, volume(1.0f)
 	, relative(false)
 	, relative(false)
@@ -51,14 +63,13 @@ Source::Source(Pool *pool, love::sound::SoundData *soundData)
 	, offsetSamples(0)
 	, offsetSamples(0)
 	, offsetSeconds(0)
 	, offsetSeconds(0)
 	, channels(soundData->getChannels())
 	, channels(soundData->getChannels())
-	, decoder(0)
+	, decoder(nullptr)
 	, toLoop(0)
 	, toLoop(0)
 {
 {
-	alGenBuffers(1, buffers);
 	ALenum fmt = getFormat(soundData->getChannels(), soundData->getBitDepth());
 	ALenum fmt = getFormat(soundData->getChannels(), soundData->getBitDepth());
-	alBufferData(buffers[0], fmt, soundData->getData(), soundData->getSize(), soundData->getSampleRate());
+	staticBuffer = new StaticDataBuffer(fmt, soundData->getData(), soundData->getSize(), soundData->getSampleRate());
 
 
-	static float z[3] = {0, 0, 0};
+	float z[3] = {0, 0, 0};
 
 
 	setFloatv(position, z);
 	setFloatv(position, z);
 	setFloatv(velocity, z);
 	setFloatv(velocity, z);
@@ -69,6 +80,7 @@ Source::Source(Pool *pool, love::sound::Decoder *decoder)
 	: love::audio::Source(Source::TYPE_STREAM)
 	: love::audio::Source(Source::TYPE_STREAM)
 	, pool(pool)
 	, pool(pool)
 	, valid(false)
 	, valid(false)
+	, staticBuffer(nullptr)
 	, pitch(1.0f)
 	, pitch(1.0f)
 	, volume(1.0f)
 	, volume(1.0f)
 	, relative(false)
 	, relative(false)
@@ -87,27 +99,70 @@ Source::Source(Pool *pool, love::sound::Decoder *decoder)
 	, toLoop(0)
 	, toLoop(0)
 {
 {
 	decoder->retain();
 	decoder->retain();
-	alGenBuffers(MAX_BUFFERS, buffers);
+	alGenBuffers(MAX_BUFFERS, streamBuffers);
 
 
-	static float z[3] = {0, 0, 0};
+	float z[3] = {0, 0, 0};
 
 
 	setFloatv(position, z);
 	setFloatv(position, z);
 	setFloatv(velocity, z);
 	setFloatv(velocity, z);
 	setFloatv(direction, z);
 	setFloatv(direction, z);
 }
 }
 
 
+Source::Source(const Source &s)
+	: love::audio::Source(s.type)
+	, pool(s.pool)
+	, valid(false)
+	, staticBuffer(s.staticBuffer)
+	, pitch(s.pitch)
+	, volume(s.volume)
+	, relative(s.relative)
+	, looping(s.looping)
+	, paused(false)
+	, minVolume(s.minVolume)
+	, maxVolume(s.maxVolume)
+	, referenceDistance(s.referenceDistance)
+	, rolloffFactor(s.rolloffFactor)
+	, maxDistance(s.maxDistance)
+	, cone(s.cone)
+	, offsetSamples(0)
+	, offsetSeconds(0)
+	, channels(s.channels)
+	, decoder(nullptr)
+	, toLoop(0)
+{
+	if (type == TYPE_STREAM)
+	{
+		if (s.decoder)
+			decoder = s.decoder->clone();
+
+		alGenBuffers(MAX_BUFFERS, streamBuffers);
+	}
+	else
+		staticBuffer->retain();
+
+	setFloatv(position, s.position);
+	setFloatv(velocity, s.velocity);
+	setFloatv(direction, s.direction);
+}
+
 Source::~Source()
 Source::~Source()
 {
 {
 	if (valid)
 	if (valid)
 		pool->stop(this);
 		pool->stop(this);
-	alDeleteBuffers((type == TYPE_STATIC) ? 1 : MAX_BUFFERS, buffers);
+
+	if (type == TYPE_STREAM)
+		alDeleteBuffers(MAX_BUFFERS, streamBuffers);
+
+	if (staticBuffer)
+		staticBuffer->release();
+
 	if (decoder)
 	if (decoder)
 		decoder->release();
 		decoder->release();
 }
 }
 
 
-love::audio::Source *Source::copy()
+love::audio::Source *Source::clone()
 {
 {
-	return 0;
+	return new Source(*this);
 }
 }
 
 
 void Source::play()
 void Source::play()
@@ -341,13 +396,15 @@ float Source::tellAtomic(void *unit) const
 			break;
 			break;
 		case Source::UNIT_SECONDS:
 		case Source::UNIT_SECONDS:
 		default:
 		default:
-			alGetSourcef(source, AL_SAMPLE_OFFSET, &offset);
-			ALint buffer;
-			alGetSourcei(source, AL_BUFFER, &buffer);
-			int freq;
-			alGetBufferi(buffer, AL_FREQUENCY, &freq);
-			offset /= freq;
-			if (type == TYPE_STREAM) offset += offsetSeconds;
+			{
+				alGetSourcef(source, AL_SAMPLE_OFFSET, &offset);
+				ALint buffer;
+				alGetSourcei(source, AL_BUFFER, &buffer);
+				int freq;
+				alGetBufferi(buffer, AL_FREQUENCY, &freq);
+				offset /= freq;
+				if (type == TYPE_STREAM) offset += offsetSeconds;
+			}
 			break;
 			break;
 		}
 		}
 		return offset;
 		return offset;
@@ -459,7 +516,7 @@ void Source::playAtomic()
 {
 {
 	if (type == TYPE_STATIC)
 	if (type == TYPE_STATIC)
 	{
 	{
-		alSourcei(source, AL_BUFFER, buffers[0]);
+		alSourcei(source, AL_BUFFER, staticBuffer->getBuffer());
 	}
 	}
 	else if (type == TYPE_STREAM)
 	else if (type == TYPE_STREAM)
 	{
 	{
@@ -467,14 +524,14 @@ void Source::playAtomic()
 
 
 		for (unsigned int i = 0; i < MAX_BUFFERS; i++)
 		for (unsigned int i = 0; i < MAX_BUFFERS; i++)
 		{
 		{
-			streamAtomic(buffers[i], decoder);
+			streamAtomic(streamBuffers[i], decoder);
 			++usedBuffers;
 			++usedBuffers;
 			if (decoder->isFinished())
 			if (decoder->isFinished())
 				break;
 				break;
 		}
 		}
 
 
 		if (usedBuffers > 0)
 		if (usedBuffers > 0)
-			alSourceQueueBuffers(source, usedBuffers, buffers);
+			alSourceQueueBuffers(source, usedBuffers, streamBuffers);
 	}
 	}
 
 
 	// This Source may now be associated with an OpenAL source that still has
 	// This Source may now be associated with an OpenAL source that still has

+ 28 - 4
jni/love/src/modules/audio/openal/Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -29,7 +29,7 @@
 #include "sound/Decoder.h"
 #include "sound/Decoder.h"
 
 
 // OpenAL
 // OpenAL
-#ifdef LOVE_MACOSX
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/al.h>
 #include <OpenAL-Soft/al.h>
 #else
 #else
@@ -47,14 +47,35 @@ namespace openal
 class Audio;
 class Audio;
 class Pool;
 class Pool;
 
 
+// Basically just a reference-counted non-streaming OpenAL buffer object.
+class StaticDataBuffer : public love::Object
+{
+public:
+
+	StaticDataBuffer(ALenum format, const ALvoid *data, ALsizei size, ALsizei freq);
+	virtual ~StaticDataBuffer();
+
+	inline ALuint getBuffer() const
+	{
+		return buffer;
+	}
+
+private:
+
+	ALuint buffer;
+
+}; // StaticDataBuffer
+
 class Source : public love::audio::Source
 class Source : public love::audio::Source
 {
 {
 public:
 public:
+
 	Source(Pool *pool, love::sound::SoundData *soundData);
 	Source(Pool *pool, love::sound::SoundData *soundData);
 	Source(Pool *pool, love::sound::Decoder *decoder);
 	Source(Pool *pool, love::sound::Decoder *decoder);
+	Source(const Source &s);
 	virtual ~Source();
 	virtual ~Source();
 
 
-	virtual love::audio::Source *copy();
+	virtual love::audio::Source *clone();
 	virtual void play();
 	virtual void play();
 	virtual void stop();
 	virtual void stop();
 	virtual void pause();
 	virtual void pause();
@@ -123,8 +144,11 @@ private:
 	Pool *pool;
 	Pool *pool;
 	ALuint source;
 	ALuint source;
 	bool valid;
 	bool valid;
+
 	static const unsigned int MAX_BUFFERS = 32;
 	static const unsigned int MAX_BUFFERS = 32;
-	ALuint buffers[MAX_BUFFERS];
+	ALuint streamBuffers[MAX_BUFFERS];
+
+	StaticDataBuffer *staticBuffer;
 
 
 	float pitch;
 	float pitch;
 	float volume;
 	float volume;

+ 5 - 1
jni/love/src/modules/audio/wrap_Audio.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -304,6 +304,7 @@ static const lua_CFunction types[] =
 
 
 extern "C" int luaopen_love_audio(lua_State *L)
 extern "C" int luaopen_love_audio(lua_State *L)
 {
 {
+#ifdef LOVE_ENABLE_AUDIO_OPENAL
 	if (instance == 0)
 	if (instance == 0)
 	{
 	{
 		// Try OpenAL first.
 		// Try OpenAL first.
@@ -318,7 +319,9 @@ extern "C" int luaopen_love_audio(lua_State *L)
 	}
 	}
 	else
 	else
 		instance->retain();
 		instance->retain();
+#endif
 
 
+#ifdef LOVE_ENABLE_AUDIO_NULL
 	if (instance == 0)
 	if (instance == 0)
 	{
 	{
 		// Fall back to nullaudio.
 		// Fall back to nullaudio.
@@ -331,6 +334,7 @@ extern "C" int luaopen_love_audio(lua_State *L)
 			std::cout << e.what() << std::endl;
 			std::cout << e.what() << std::endl;
 		}
 		}
 	}
 	}
+#endif
 
 
 	if (instance == 0)
 	if (instance == 0)
 		return luaL_error(L, "Could not open any audio module.");
 		return luaL_error(L, "Could not open any audio module.");

+ 1 - 1
jni/love/src/modules/audio/wrap_Audio.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 18 - 1
jni/love/src/modules/audio/wrap_Source.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -18,6 +18,8 @@
  * 3. This notice may not be removed or altered from any source distribution.
  * 3. This notice may not be removed or altered from any source distribution.
  **/
  **/
 
 
+#include <limits>
+
 #include "wrap_Source.h"
 #include "wrap_Source.h"
 
 
 namespace love
 namespace love
@@ -30,6 +32,15 @@ Source *luax_checksource(lua_State *L, int idx)
 	return luax_checktype<Source>(L, idx, "Source", AUDIO_SOURCE_T);
 	return luax_checktype<Source>(L, idx, "Source", AUDIO_SOURCE_T);
 }
 }
 
 
+int w_Source_clone(lua_State *L)
+{
+	Source *t = luax_checksource(L, 1);
+	Source *clone = nullptr;
+	EXCEPT_GUARD(clone = t->clone();)
+	luax_pushtype(L, "Source", AUDIO_SOURCE_T, clone);
+	return 1;
+}
+
 int w_Source_play(lua_State *L)
 int w_Source_play(lua_State *L)
 {
 {
 	Source *t = luax_checksource(L, 1);
 	Source *t = luax_checksource(L, 1);
@@ -69,6 +80,10 @@ int w_Source_setPitch(lua_State *L)
 {
 {
 	Source *t = luax_checksource(L, 1);
 	Source *t = luax_checksource(L, 1);
 	float p = (float)luaL_checknumber(L, 2);
 	float p = (float)luaL_checknumber(L, 2);
+	if (p > std::numeric_limits<lua_Number>::max() ||
+			p < std::numeric_limits<lua_Number>::min() ||
+			p != p)
+		return luaL_error(L, "Pitch has to be finite and not NaN.");
 	t->setPitch(p);
 	t->setPitch(p);
 	return 0;
 	return 0;
 }
 }
@@ -333,6 +348,8 @@ int w_Source_getChannels(lua_State *L)
 
 
 static const luaL_Reg functions[] =
 static const luaL_Reg functions[] =
 {
 {
+	{ "clone", w_Source_clone },
+
 	{ "play", w_Source_play },
 	{ "play", w_Source_play },
 	{ "stop", w_Source_stop },
 	{ "stop", w_Source_stop },
 	{ "pause", w_Source_pause },
 	{ "pause", w_Source_pause },

+ 2 - 1
jni/love/src/modules/audio/wrap_Source.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -30,6 +30,7 @@ namespace audio
 {
 {
 
 
 Source *luax_checksource(lua_State *L, int idx);
 Source *luax_checksource(lua_State *L, int idx);
+int w_Source_clone(lua_State *L);
 int w_Source_play(lua_State *L);
 int w_Source_play(lua_State *L);
 int w_Source_stop(lua_State *L);
 int w_Source_stop(lua_State *L);
 int w_Source_pause(lua_State *L);
 int w_Source_pause(lua_State *L);

+ 1 - 1
jni/love/src/modules/event/Event.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/event/Event.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/event/sdl/Event.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/event/sdl/Event.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/event/sdl/wrap_Event.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/event/sdl/wrap_Event.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/File.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/File.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/FileData.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/FileData.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/physfs/File.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/modules/filesystem/physfs/File.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -25,7 +25,7 @@
 #include "filesystem/File.h"
 #include "filesystem/File.h"
 
 
 // PhysFS
 // PhysFS
-#ifdef LOVE_MACOSX // wacky Mac behavior means different #include syntax!
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS
 #include <physfs/physfs.h>
 #include <physfs/physfs.h>
 #else
 #else
 #include <physfs.h>
 #include <physfs.h>

+ 1 - 1
jni/love/src/modules/filesystem/physfs/Filesystem.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 33
jni/love/src/modules/filesystem/physfs/Filesystem.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -197,20 +197,6 @@ public:
 	 **/
 	 **/
 	bool remove(const char *file);
 	bool remove(const char *file);
 
 
-	/**
-	 * Opens a file for reading or writing. (Depends
-	 * on the mode chosen at the time of creation).
-	 * @param file The file to open.
-	 * @param mode The mode to open the file in.
-	 **/
-	bool open(File *file, File::Mode mode);
-
-	/**
-	 * Closes a file.
-	 * @param file The file to close.
-	 **/
-	bool close(File *file);
-
 	/**
 	/**
 	 * Reads data from a file.
 	 * Reads data from a file.
 	 * @param filename The name of the file to read from.
 	 * @param filename The name of the file to read from.
@@ -234,24 +220,6 @@ public:
 	 **/
 	 **/
 	void append(const char *filename, const void *data, int64 size) const;
 	void append(const char *filename, const void *data, int64 size) const;
 
 
-	/**
-	 * Check if end-of-file is reached.
-	 * @return True if EOF, false otherwise.
-	 **/
-	bool eof(File *file);
-
-	/**
-	 * Gets the current position in a file.
-	 * @param file An open File.
-	 **/
-	int tell(File *file);
-
-	/**
-	 * Seek to a position within a file.
-	 * @param pos The position to seek to.
-	 **/
-	bool seek(File *file, uint64 pos);
-
 	/**
 	/**
 	 * This "native" method returns a table of all
 	 * This "native" method returns a table of all
 	 * files in a given directory.
 	 * files in a given directory.

+ 1 - 1
jni/love/src/modules/filesystem/physfs/wrap_File.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/physfs/wrap_File.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/physfs/wrap_FileData.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/filesystem/physfs/wrap_FileData.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 10 - 6
jni/love/src/modules/filesystem/physfs/wrap_Filesystem.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -493,7 +493,10 @@ int loader(lua_State *L)
 		}
 		}
 	}
 	}
 
 
-	lua_pushfstring(L, "\n\tno file \"%s\" in LOVE game directories.\n", (tmp + ".lua").c_str());
+	std::string errstr = "\n\tno file '%s' in LOVE game directories.";
+	errstr += errstr;
+
+	lua_pushfstring(L, errstr.c_str(), (tmp + ".lua").c_str(), (tmp + "/init.lua").c_str());
 	return 1;
 	return 1;
 }
 }
 
 
@@ -529,7 +532,7 @@ int extloader(lua_State *L)
 
 
 	if (!handle)
 	if (!handle)
 	{
 	{
-		lua_pushfstring(L, "\n\tno extension \"%s\" in LOVE paths.\n", filename);
+		lua_pushfstring(L, "\n\tno file '%s' in LOVE paths.", tokenized_name.c_str());
 		return 1;
 		return 1;
 	}
 	}
 
 
@@ -540,7 +543,7 @@ int extloader(lua_State *L)
 	if (!func)
 	if (!func)
 	{
 	{
 		SDL_UnloadObject(handle);
 		SDL_UnloadObject(handle);
-		lua_pushfstring(L, "\n\textension \"%s\" is incompatible.\n", filename);
+		lua_pushfstring(L, "\n\tC library '%s' is incompatible.", tokenized_name.c_str());
 		return 1;
 		return 1;
 	}
 	}
 
 
@@ -599,8 +602,9 @@ extern "C" int luaopen_love_filesystem(lua_State *L)
 	else
 	else
 		instance->retain();
 		instance->retain();
 
 
-	love::luax_register_searcher(L, loader, 1);
-	love::luax_register_searcher(L, extloader, 2);
+	// The love loaders should be tried after package.preload.
+	love::luax_register_searcher(L, loader, 2);
+	love::luax_register_searcher(L, extloader, 3);
 
 
 	WrappedModule w;
 	WrappedModule w;
 	w.module = instance;
 	w.module = instance;

+ 1 - 1
jni/love/src/modules/filesystem/physfs/wrap_Filesystem.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 1 - 1
jni/love/src/modules/font/Font.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

+ 2 - 2
jni/love/src/modules/font/GlyphData.cpp

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages
@@ -36,7 +36,7 @@ namespace font
 GlyphData::GlyphData(uint32 glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
 GlyphData::GlyphData(uint32 glyph, GlyphMetrics glyphMetrics, GlyphData::Format f)
 	: glyph(glyph)
 	: glyph(glyph)
 	, metrics(glyphMetrics)
 	, metrics(glyphMetrics)
-	, data(0)
+	, data(nullptr)
 	, format(f)
 	, format(f)
 {
 {
 	if (metrics.width > 0 && metrics.height > 0)
 	if (metrics.width > 0 && metrics.height > 0)

+ 1 - 1
jni/love/src/modules/font/GlyphData.h

@@ -1,5 +1,5 @@
 /**
 /**
- * Copyright (c) 2006-2013 LOVE Development Team
+ * Copyright (c) 2006-2014 LOVE Development Team
  *
  *
  * This software is provided 'as-is', without any express or implied
  * This software is provided 'as-is', without any express or implied
  * warranty.  In no event will the authors be held liable for any damages
  * warranty.  In no event will the authors be held liable for any damages

Some files were not shown because too many files changed in this diff