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 target.
-target=android-7
+target=android-19

+ 1 - 0
jni/love/Android.mk

@@ -37,6 +37,7 @@ LOCAL_C_INCLUDES  :=  \
 		
 LOCAL_SRC_FILES := \
 	$(filter-out \
+	  src/modules/graphics/opengl/GLee.* \
 	  src/libraries/luasocket/libluasocket/wsocket.c \
 	,$(subst $(LOCAL_PATH)/,,\
 	$(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
 # warranty.  In no event will the authors be held liable for any damages
@@ -45,10 +45,29 @@ else()
 	set(LOVE_TARGET_PLATFORM x86)
 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}")
 
 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
 #
@@ -230,15 +249,13 @@ source_group("modules\\font\\freetype" FILES ${LOVE_SRC_MODULE_FONT_FREETYPE})
 
 set(LOVE_SRC_MODULE_GRAPHICS_ROOT
 	src/modules/graphics/Color.h
-	src/modules/graphics/Drawable.cpp
 	src/modules/graphics/Drawable.h
-	src/modules/graphics/DrawQable.h
 	src/modules/graphics/Graphics.cpp
 	src/modules/graphics/Graphics.h
-	src/modules/graphics/Image.cpp
-	src/modules/graphics/Image.h
 	src/modules/graphics/Quad.cpp
 	src/modules/graphics/Quad.h
+	src/modules/graphics/Texture.cpp
+	src/modules/graphics/Texture.h
 	src/modules/graphics/Volatile.cpp
 	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/SpriteBatch.cpp
 	src/modules/graphics/opengl/SpriteBatch.h
+	src/modules/graphics/opengl/Texture.h
 	src/modules/graphics/opengl/VertexBuffer.cpp
 	src/modules/graphics/opengl/VertexBuffer.h
 	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_SpriteBatch.cpp
 	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
@@ -904,7 +924,7 @@ set(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)
 
 #
@@ -967,7 +987,7 @@ set(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
@@ -1057,15 +1077,36 @@ include_directories(
 	src
 	src/libraries
 	src/modules
+	${MEGA_EXTRA_INCLUDE}
 )
 
 # SDL2 links with some DirectX libraries, and we apparently also
 # pull those libraries in for linkage because we link with SDL2.
 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
 	${OPENGL_gl_LIBRARY}
-	${MEGA_3P}
+	${LOVE_MEGA_3P}
 )
 
 set(LOVE_RC)
@@ -1085,9 +1126,13 @@ endif()
 add_library(${LOVE_LIB_NAME} SHARED ${LOVE_LIB_SRC} ${LOVE_RC})
 target_link_libraries(liblove ${LOVE_LINK_LIBRARIES} ${LOVE_3P})
 
+if(MEGA_EXTRA_DEPENDECIES)
+	add_dependencies(${LOVE_LIB_NAME} ${MEGA_EXTRA_DEPENDECIES})
+endif()
+
 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()
 
 #
@@ -1102,7 +1147,12 @@ add_move_dll(love ${MEGA_MPEG123})
 add_move_dll(love ${MEGA_SDL2})
 add_move_dll(love ${MEGA_OPENAL})
 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
@@ -1131,6 +1181,15 @@ message(STATUS "Version: ${LOVE_VERSION_STR}")
 ###################################
 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.
 if(MEGA_MSVC_DLLS)
 	foreach(DLL ${MEGA_MSVC_DLLS})
@@ -1158,6 +1217,12 @@ install(FILES
 		${CMAKE_CURRENT_BINARY_DIR}/readme.txt
 		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_PACKAGE_NAME "love")
 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_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_MODIFY_PATH OFF)
 
@@ -1200,4 +1265,20 @@ set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "
 	!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)

+ 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]
 ---------------------------
 
-	Released: N/A
+	Released: 2013-12-13
 
   * Added better multiplayer networking support via ENet.
   * 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
 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
  * 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
  * 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>
 	<string>public.app-category.games</string>
 	<key>NSHumanReadableCopyright</key>
-	<string>© 2006-2013 LÖVE Development Team</string>
+	<string>© 2006-2014 LÖVE Development Team</string>
 	<key>NSPrincipalClass</key>
 	<string>NSApplication</string>
 	<key>UTExportedTypeDeclarations</key>

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

@@ -7,6 +7,8 @@
 	objects = {
 
 /* 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 */; };
 		FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */ = {isa = PBXBuildFile; fileRef = FA03546B1731F3A700284828 /* simplexnoise1234.h */; };
 		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 */; };
 		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 */; };
-		FA08F61516C753F600F007B5 /* Drawable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 58BA2BB460AF3C591B22690E /* Drawable.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 */; };
 		FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD52074367950B735707CE1 /* Canvas.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 */; };
 		FA9A100D182A0D5200106F9F /* glad.hpp in Headers */ = {isa = PBXBuildFile; fileRef = FA9A100A182A0D5200106F9F /* glad.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 */; };
 		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 */; };
@@ -287,7 +289,6 @@
 		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 */; };
 		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 */; };
 		FAC86E6C1724555D00EED715 /* Quad.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC86E681724555D00EED715 /* Quad.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>"; };
 		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>"; };
-		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>"; };
 		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>"; };
@@ -629,8 +630,7 @@
 		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>"; };
 		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>"; };
 		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>"; };
@@ -751,6 +751,8 @@
 		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>"; };
 		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>"; };
 		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>"; };
@@ -827,6 +829,7 @@
 		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>"; };
 		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>"; };
 		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>"; };
@@ -845,7 +848,6 @@
 		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>"; };
 		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>"; };
 		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>"; };
@@ -1480,16 +1482,14 @@
 			isa = PBXGroup;
 			children = (
 				4941079838020ECA049B5C21 /* Color.h */,
-				58BA2BB460AF3C591B22690E /* Drawable.cpp */,
 				5D93601669875EE06721689E /* Drawable.h */,
-				FAC86E661724555D00EED715 /* DrawQable.h */,
 				03F17FF546D637744E263961 /* Graphics.cpp */,
 				777352284E262F48543E6E7F /* Graphics.h */,
-				58CC50E70A375FDF53EF01B6 /* Image.cpp */,
-				1DA41DFF0869489411A71AFC /* Image.h */,
 				75093EE94918576801F50993 /* opengl */,
 				FAC86E671724555D00EED715 /* Quad.cpp */,
 				FAC86E681724555D00EED715 /* Quad.h */,
+				58CC50E70A375FDF53EF01B6 /* Texture.cpp */,
+				1DA41DFF0869489411A71AFC /* Texture.h */,
 				4B731754147B27AF73AC5358 /* Volatile.cpp */,
 				0CFF64090F0F4F481BB80CF0 /* Volatile.h */,
 			);
@@ -1685,6 +1685,7 @@
 				FA577A8616C71CF000860150 /* Shader.h */,
 				4D700D182EAA46273D1E2CC4 /* SpriteBatch.cpp */,
 				727D23FA1CC755B902471A45 /* SpriteBatch.h */,
+				FA9B49281875EFB900201DA9 /* Texture.h */,
 				426B1C4475DC54505B824B7F /* VertexBuffer.cpp */,
 				577B66502A5360AE60733B10 /* VertexBuffer.h */,
 				4E3251027026699A1D4D310D /* wrap_Canvas.cpp */,
@@ -1705,6 +1706,8 @@
 				FA577A8816C71CF000860150 /* wrap_Shader.h */,
 				02C16FDB537A702F4D42534E /* wrap_SpriteBatch.cpp */,
 				2BE75A693BE206B22DAE1B2E /* wrap_SpriteBatch.h */,
+				FA01BE1C1878E35B00640047 /* wrap_Texture.cpp */,
+				FA01BE1D1878E35B00640047 /* wrap_Texture.h */,
 			);
 			path = opengl;
 			sourceTree = "<group>";
@@ -1987,12 +1990,12 @@
 				FAF6704E18184FF800DBDEEA /* wuff_config.h in Headers */,
 				FA0CDE3D1710F9A50056E8D7 /* FormatHandler.h in Headers */,
 				FA7AA59317F6AC1F00704BE2 /* wrap_Mesh.h in Headers */,
+				FA01BE1F1878E35B00640047 /* wrap_Texture.h in Headers */,
 				FAEC808B1710FEA60057279A /* ImageData.h in Headers */,
 				FAEC808F1711E76C0057279A /* CompressedData.h in Headers */,
 				FA636D8B171B70920065623F /* RandomGenerator.h in Headers */,
 				FA636D8F171B72A70065623F /* wrap_RandomGenerator.h in Headers */,
 				FAC86E641724552C00EED715 /* wrap_Quad.h in Headers */,
-				FAC86E6A1724555D00EED715 /* DrawQable.h in Headers */,
 				FAC86E6C1724555D00EED715 /* Quad.h in Headers */,
 				FA03546D1731F3A700284828 /* simplexnoise1234.h in Headers */,
 				FA3D9E0E16E68DE600CA6630 /* Cursor.h in Headers */,
@@ -2004,6 +2007,7 @@
 				FAF6705218184FF800DBDEEA /* wuff_internal.h in Headers */,
 				FAB007941740C28900A9664D /* Joystick.h in Headers */,
 				FAB007981740C87D00A9664D /* wrap_Joystick.h in Headers */,
+				FA9B492A1875EFB900201DA9 /* Texture.h in Headers */,
 				FAC5710117402D1100D147E4 /* BezierCurve.h in Headers */,
 				FAC5710317402D1100D147E4 /* wrap_BezierCurve.h in Headers */,
 				FA5FDC7E1788D548002F0ED2 /* callbacks.h in Headers */,
@@ -2193,9 +2197,8 @@
 				FA08F61216C753E700F007B5 /* Rasterizer.cpp in Sources */,
 				FA08F61316C753E700F007B5 /* wrap_GlyphData.cpp in Sources */,
 				FA08F61416C753E700F007B5 /* wrap_Rasterizer.cpp in Sources */,
-				FA08F61516C753F600F007B5 /* Drawable.cpp in Sources */,
 				FA08F61716C753F600F007B5 /* Graphics.cpp in Sources */,
-				FA08F61816C753F600F007B5 /* Image.cpp in Sources */,
+				FA08F61816C753F600F007B5 /* Texture.cpp in Sources */,
 				FA08F61A16C753F600F007B5 /* Volatile.cpp in Sources */,
 				FA08F61B16C7541400F007B5 /* Canvas.cpp in Sources */,
 				FA08F61C16C7541400F007B5 /* Font.cpp in Sources */,
@@ -2298,6 +2301,7 @@
 				FAF272A616E3D44400CC193A /* LuaThread.cpp in Sources */,
 				FA0A4BF0182E0C2800E1E4D2 /* b2MotorJoint.cpp in Sources */,
 				FAF272A816E3D44400CC193A /* ThreadModule.cpp in Sources */,
+				FA01BE1E1878E35B00640047 /* wrap_Texture.cpp in Sources */,
 				FAF272AA16E3D44400CC193A /* wrap_Channel.cpp in Sources */,
 				FAF272AC16E3D44400CC193A /* wrap_LuaThread.cpp in Sources */,
 				FAF272AE16E3D44400CC193A /* wrap_ThreadModule.cpp in Sources */,
@@ -2354,7 +2358,7 @@
 				DEAD_CODE_STRIPPING = YES;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_OPTIMIZATION_LEVEL = 3;
-				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = YES;
 				GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
@@ -2390,7 +2394,7 @@
 				COPY_PHASE_STRIP = NO;
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_OPTIMIZATION_LEVEL = 0;
-				GCC_PREPROCESSOR_DEFINITIONS = "";
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
 				GCC_WARN_ABOUT_RETURN_TYPE = 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;
 				GCC_INCREASE_PRECOMPILED_HEADER_SHARING = YES;
 				GCC_OPTIMIZATION_LEVEL = 0;
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = NO;
 				GCC_WARN_ABOUT_MISSING_PROTOTYPES = NO;
@@ -354,6 +355,7 @@
 				FRAMEWORK_SEARCH_PATHS = /Library/Frameworks;
 				GCC_INPUT_FILETYPE = automatic;
 				GCC_OPTIMIZATION_LEVEL = 3;
+				GCC_PREPROCESSOR_DEFINITIONS = LOVE_MACOSX_USE_FRAMEWORKS;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = NO;
 				GCC_WARN_ABOUT_MISSING_NEWLINE = 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
 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 ${AUTOCONF} ]]   || die "Could not find autoconf."
@@ -27,10 +27,12 @@ AUTOMAKE=$(which automake)
 [[ -x ${AUTOMAKE} ]]   || die "Could not find automake."
 
 automagic() {
+	log "Copying files..." >&2
 	cp platform/unix/configure.ac .
 	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."
 		exit 1
 	fi
@@ -52,12 +54,15 @@ automagic() {
 }
 
 if [[ $1 == "-d" ]]; then
-	automagic 2>&1
+	shift 1
+	automagic "$@" 2>&1
 else
-	(automagic > /dev/null) 2>&1
+	(automagic "$@" > /dev/null) 2>&1
 fi
 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
 else
 	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_SED
 AC_PROG_MKDIR_P
+AC_PROG_OBJCXX
 AC_C_BIGENDIAN
 AC_LANG([C++])
 
@@ -26,47 +27,72 @@ AC_DEFUN([ACLOVE_CXX_FLAG_TEST], # WARNING: NOT REENTRANT
 			  [AC_MSG_RESULT([no]); $3])
 		  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
 cxx11name="no"
 ACLOVE_CXX_FLAG_TEST([-std=c++0x], cxx11name="c++0x", [])
 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])],
-			[], [with_lua=lua])
+			[], [with_lua=luajit])
 AC_ARG_WITH([luaversion], [AS_HELP_STRING([--with-luaversion], [Select the lua version])],
 			[], [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
-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)
+# 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])
 AS_VAR_IF([enable_mpg123], [no],
 	  AC_DEFINE([LOVE_NOMPG123], [], [Build without mpg123]),
 	  # else
 	  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_SUBST([FILE_OFFSET],[-D_FILE_OFFSET_BITS=64]),
 					 AC_SUBST([FILE_OFFSET],[])))
@@ -74,7 +100,7 @@ AS_VAR_IF([enable_mpg123], [no],
 # 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])
 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_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])
 
 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_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
 AC_SUBST([LOVE_INCLUDES], ["$includes"])
 
+m4_include([configure-modules.ac])
+
 AC_CONFIG_FILES([
 	Makefile
 	src/Makefile
+	platform/unix/debian/control
+	platform/unix/debian/changelog
+	platform/unix/debian/rules
 ])
 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
 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.
 
 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
 echo Generating src/Makefile.am ...
-cd src
 inc_current='$(srcdir)'
 inc_modules="$inc_current/modules"
 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_CXXFLAGS = \$(SDL_CFLAGS)
 AUTOMAKE_OPTIONS = subdir-objects
@@ -29,20 +28,11 @@ endif
 # libLÖVE
 lib_LTLIBRARIES = liblove.la
 liblove_la_LDFLAGS = -module -export-dynamic \$(LDFLAGS) \$(SDL_LIBS)
-liblove_la_SOURCES = \\
 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 ..
 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
-Use the project files for Visual Studio 2010 located in the platform dir.
+Follow the instructions at the [megasource][megasource] repository page.
 
 ###*nix
 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
 	$ 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
 ----------------------
@@ -64,6 +64,7 @@ Dependencies
 [forums]: http://love2d.org/forums
 [irc]: irc://irc.oftc.net/love
 [dependencies]: http://love2d.org/sdk
+[megasource]: https://bitbucket.org/rude/megasource
 [builds]: http://love2d.org/builds
 [stableppa]: https://launchpad.net/~bartbes/+archive/love-stable
 [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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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";
 
-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[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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -86,6 +86,47 @@
 #		undef LOVE_BIG_ENDIAN
 #		define LOVE_LITTLE_ENDIAN 1
 #	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 // 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
  * 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
  * 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
  * 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
  * 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
  * 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
 	{"Drawable", GRAPHICS_DRAWABLE_ID},
+	{"Texture", GRAPHICS_TEXTURE_ID},
 	{"Image", GRAPHICS_IMAGE_ID},
 	{"Quad", GRAPHICS_QUAD_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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -45,7 +45,7 @@ enum Type
 
 	// Graphics
 	GRAPHICS_DRAWABLE_ID,
-	GRAPHICS_DRAWQABLE_ID,
+	GRAPHICS_TEXTURE_ID,
 	GRAPHICS_IMAGE_ID,
 	GRAPHICS_QUAD_ID,
 	GRAPHICS_FONT_ID,
@@ -130,13 +130,13 @@ const bits FONT_RASTERIZER_T = (bits(1) << FONT_RASTERIZER_ID) | OBJECT_T;
 
 // Graphics.
 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_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_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_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
  * 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
  * 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
  * 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
  * 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
  * 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
 * 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
  * 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
  * 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)
 {
+#ifdef __ANDROID__
 	SDL_SetHint("LOVE_GRAPHICS_USE_OPENGLES", "1");
-
-	SDL_LogSetAllPriority(SDL_LOG_PRIORITY_VERBOSE);
+#endif
 
 #ifdef LOVE_LEGENDARY_UTF8_ARGV_HACK
 	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
  * 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
  * 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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -51,7 +51,7 @@ public:
 	Source(Type type);
 	virtual ~Source();
 
-	virtual Source *copy() = 0;
+	virtual Source *clone() = 0;
 
 	virtual void play() = 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
  * 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
  * 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
  * 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();
 	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
  * warranty.  In no event will the authors be held liable for any damages
@@ -38,7 +38,7 @@ public:
 	Source();
 	virtual ~Source();
 
-	virtual love::audio::Source *copy();
+	virtual love::audio::Source *clone();
 	virtual void play();
 	virtual void stop();
 	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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -37,7 +37,7 @@
 #include "thread/threads.h"
 
 // OpenAL
-#ifdef LOVE_MACOSX
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS // Frameworks have different include paths.
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/al.h>
 #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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -33,7 +33,7 @@
 #include "thread/threads.h"
 
 // OpenAL
-#ifdef LOVE_MACOSX
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/al.h>
 #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
  * warranty.  In no event will the authors be held liable for any damages
@@ -33,10 +33,22 @@ namespace audio
 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)
 	: love::audio::Source(Source::TYPE_STATIC)
 	, pool(pool)
 	, valid(false)
+	, staticBuffer(nullptr)
 	, pitch(1.0f)
 	, volume(1.0f)
 	, relative(false)
@@ -51,14 +63,13 @@ Source::Source(Pool *pool, love::sound::SoundData *soundData)
 	, offsetSamples(0)
 	, offsetSeconds(0)
 	, channels(soundData->getChannels())
-	, decoder(0)
+	, decoder(nullptr)
 	, toLoop(0)
 {
-	alGenBuffers(1, buffers);
 	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(velocity, z);
@@ -69,6 +80,7 @@ Source::Source(Pool *pool, love::sound::Decoder *decoder)
 	: love::audio::Source(Source::TYPE_STREAM)
 	, pool(pool)
 	, valid(false)
+	, staticBuffer(nullptr)
 	, pitch(1.0f)
 	, volume(1.0f)
 	, relative(false)
@@ -87,27 +99,70 @@ Source::Source(Pool *pool, love::sound::Decoder *decoder)
 	, toLoop(0)
 {
 	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(velocity, 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()
 {
 	if (valid)
 		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)
 		decoder->release();
 }
 
-love::audio::Source *Source::copy()
+love::audio::Source *Source::clone()
 {
-	return 0;
+	return new Source(*this);
 }
 
 void Source::play()
@@ -341,13 +396,15 @@ float Source::tellAtomic(void *unit) const
 			break;
 		case Source::UNIT_SECONDS:
 		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;
 		}
 		return offset;
@@ -459,7 +516,7 @@ void Source::playAtomic()
 {
 	if (type == TYPE_STATIC)
 	{
-		alSourcei(source, AL_BUFFER, buffers[0]);
+		alSourcei(source, AL_BUFFER, staticBuffer->getBuffer());
 	}
 	else if (type == TYPE_STREAM)
 	{
@@ -467,14 +524,14 @@ void Source::playAtomic()
 
 		for (unsigned int i = 0; i < MAX_BUFFERS; i++)
 		{
-			streamAtomic(buffers[i], decoder);
+			streamAtomic(streamBuffers[i], decoder);
 			++usedBuffers;
 			if (decoder->isFinished())
 				break;
 		}
 
 		if (usedBuffers > 0)
-			alSourceQueueBuffers(source, usedBuffers, buffers);
+			alSourceQueueBuffers(source, usedBuffers, streamBuffers);
 	}
 
 	// 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -29,7 +29,7 @@
 #include "sound/Decoder.h"
 
 // OpenAL
-#ifdef LOVE_MACOSX
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS
 #include <OpenAL-Soft/alc.h>
 #include <OpenAL-Soft/al.h>
 #else
@@ -47,14 +47,35 @@ namespace openal
 class Audio;
 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
 {
 public:
+
 	Source(Pool *pool, love::sound::SoundData *soundData);
 	Source(Pool *pool, love::sound::Decoder *decoder);
+	Source(const Source &s);
 	virtual ~Source();
 
-	virtual love::audio::Source *copy();
+	virtual love::audio::Source *clone();
 	virtual void play();
 	virtual void stop();
 	virtual void pause();
@@ -123,8 +144,11 @@ private:
 	Pool *pool;
 	ALuint source;
 	bool valid;
+
 	static const unsigned int MAX_BUFFERS = 32;
-	ALuint buffers[MAX_BUFFERS];
+	ALuint streamBuffers[MAX_BUFFERS];
+
+	StaticDataBuffer *staticBuffer;
 
 	float pitch;
 	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
  * 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)
 {
+#ifdef LOVE_ENABLE_AUDIO_OPENAL
 	if (instance == 0)
 	{
 		// Try OpenAL first.
@@ -318,7 +319,9 @@ extern "C" int luaopen_love_audio(lua_State *L)
 	}
 	else
 		instance->retain();
+#endif
 
+#ifdef LOVE_ENABLE_AUDIO_NULL
 	if (instance == 0)
 	{
 		// Fall back to nullaudio.
@@ -331,6 +334,7 @@ extern "C" int luaopen_love_audio(lua_State *L)
 			std::cout << e.what() << std::endl;
 		}
 	}
+#endif
 
 	if (instance == 0)
 		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
  * 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
  * 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.
  **/
 
+#include <limits>
+
 #include "wrap_Source.h"
 
 namespace love
@@ -30,6 +32,15 @@ Source *luax_checksource(lua_State *L, int idx)
 	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)
 {
 	Source *t = luax_checksource(L, 1);
@@ -69,6 +80,10 @@ int w_Source_setPitch(lua_State *L)
 {
 	Source *t = luax_checksource(L, 1);
 	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);
 	return 0;
 }
@@ -333,6 +348,8 @@ int w_Source_getChannels(lua_State *L)
 
 static const luaL_Reg functions[] =
 {
+	{ "clone", w_Source_clone },
+
 	{ "play", w_Source_play },
 	{ "stop", w_Source_stop },
 	{ "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
  * 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);
+int w_Source_clone(lua_State *L);
 int w_Source_play(lua_State *L);
 int w_Source_stop(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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -25,7 +25,7 @@
 #include "filesystem/File.h"
 
 // PhysFS
-#ifdef LOVE_MACOSX // wacky Mac behavior means different #include syntax!
+#ifdef LOVE_MACOSX_USE_FRAMEWORKS
 #include <physfs/physfs.h>
 #else
 #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
  * 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
  * warranty.  In no event will the authors be held liable for any damages
@@ -197,20 +197,6 @@ public:
 	 **/
 	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.
 	 * @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;
 
-	/**
-	 * 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
 	 * 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
  * 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
  * 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
  * 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
  * 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
  * 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;
 }
 
@@ -529,7 +532,7 @@ int extloader(lua_State *L)
 
 	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;
 	}
 
@@ -540,7 +543,7 @@ int extloader(lua_State *L)
 	if (!func)
 	{
 		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;
 	}
 
@@ -599,8 +602,9 @@ extern "C" int luaopen_love_filesystem(lua_State *L)
 	else
 		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;
 	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
  * 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
  * 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
  * 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)
 	: glyph(glyph)
 	, metrics(glyphMetrics)
-	, data(0)
+	, data(nullptr)
 	, format(f)
 {
 	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
  * 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