Files
love/CMakeLists.txt
T
Alex Szpakowski 970704c2b7 Added Text objects via love.graphics.newText(font [, textstring]). Reworked the internal code of Font objects to use fewer individual textures and less VRAM per object, and to be compatible with OpenGL ES. Slightly improved the performance of love.graphics.print and love.graphics.printf.
Text objects are Drawable objects that represent text on the screen. They decouple text drawing from text parsing and vertex uploading, in a similar manner to SpriteBatches. They also optionally allow efficient batching of text from the same Font in different relative coordinate transformations, without having many draw calls.

Text objects currently have the following methods:

Text:set(textstring) -- replaces any existing text in the object with the new string.
Text:setf(textstring, wraplimit, alignmode) -- replaces any existing text with formatted text using the new string.

Text:getFont() -- gets the Font object used for this Text object.
Text:getWidth() -- gets the width in pixels of the most recently added text in the Text object.
Text:getHeight() -- gets the height in pixels of the most recently added text in the Text object.

Text:add(textstring, x, y, angle, sx, sy, ox, oy, kx, ky) -- adds a new string to the text object using the specified relative coordinate transformation, without replacing existing text. This behaves much like SpriteBatch:add.
Text:addf(textstring, wraplimit, alignmode, x, y, angle, sx, sy, ox, oy, kx, ky) -- adds a new formatted string to the text object using the specified relative coordinate transformation.
Text:clear() -- clears all text from the object.

--HG--
branch : minor
2015-01-23 00:47:28 -04:00

1371 lines
40 KiB
CMake

#
# Copyright (c) 2006-2015 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
# arising from the use of this software.
#
# Permission is granted to anyone to use this software for any purpose,
# including commercial applications, and to alter it and redistribute it
# freely, subject to the following restrictions:
#
# 1. The origin of this software must not be misrepresented; you must not
# claim that you wrote the original software. If you use this software
# in a product, an acknowledgment in the product documentation would be
# appreciated but is not required.
# 2. Altered source versions must be plainly marked as such, and must not be
# misrepresented as being the original software.
# 3. This notice may not be removed or altered from any source distribution.
#
if(${CMAKE_CURRENT_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_BINARY_DIR})
# Protip: run cmake like this: cmake -G "<generator>" -H. -Bbuild
message(FATAL_ERROR "Prevented in-tree build.")
endif()
cmake_minimum_required(VERSION 2.8)
project(love)
if(NOT MEGA)
message(FATAL_ERROR "
It is currently only possible to build with megasource on Windows.
Please see http://bitbucket.org/rude/megasource
")
endif()
set(LOVE_EXE_NAME love)
set(LOVE_LIB_NAME liblove)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(LOVE_X64 TRUE)
set(LOVE_TARGET_PLATFORM x64)
else()
set(LOVE_X86 TRUE)
set(LOVE_TARGET_PLATFORM x86)
endif()
option(LOVE_JIT "Use LuaJIT" TRUE)
option(LOVE_MPG123 "Use mpg123" TRUE)
if(LOVE_JIT)
message(STATUS "LuaJIT: Enabled")
else()
message(STATUS "LuaJIT: Disabled")
endif()
if(NOT LOVE_MPG123)
add_definitions(-DLOVE_NOMPG123)
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
#
set(LOVE_SRC_COMMON
src/common/b64.cpp
src/common/b64.h
src/common/config.h
src/common/Data.h
src/common/delay.cpp
src/common/delay.h
src/common/EnumMap.h
src/common/Exception.cpp
src/common/Exception.h
src/common/int.h
src/common/math.h
src/common/Matrix.cpp
src/common/Matrix.h
src/common/Memoizer.cpp
src/common/Memoizer.h
src/common/Module.cpp
src/common/Module.h
src/common/Object.cpp
src/common/Object.h
src/common/Reference.cpp
src/common/Reference.h
src/common/runtime.cpp
src/common/runtime.h
src/common/StringMap.h
src/common/types.h
src/common/utf8.cpp
src/common/utf8.h
src/common/Variant.cpp
src/common/Variant.h
#src/common/Vector.cpp # Vector.cpp is empty.
src/common/Vector.h
src/common/version.h
src/common/wrap_Data.cpp
src/common/wrap_Data.h
)
source_group("common" FILES ${LOVE_SRC_COMMON})
#
# love.audio
#
set(LOVE_SRC_MODULE_AUDIO_ROOT
src/modules/audio/Audio.cpp
src/modules/audio/Audio.h
src/modules/audio/Source.cpp
src/modules/audio/Source.h
src/modules/audio/wrap_Audio.cpp
src/modules/audio/wrap_Audio.h
src/modules/audio/wrap_Source.cpp
src/modules/audio/wrap_Source.h
)
set(LOVE_SRC_MODULE_AUDIO_NULL
src/modules/audio/null/Audio.cpp
src/modules/audio/null/Audio.h
src/modules/audio/null/Source.cpp
src/modules/audio/null/Source.h
)
set(LOVE_SRC_MODULE_AUDIO_OPENAL
src/modules/audio/openal/Audio.cpp
src/modules/audio/openal/Audio.h
src/modules/audio/openal/Pool.cpp
src/modules/audio/openal/Pool.h
src/modules/audio/openal/Source.cpp
src/modules/audio/openal/Source.h
)
set(LOVE_SRC_MODULE_AUDIO
${LOVE_SRC_MODULE_AUDIO_ROOT}
${LOVE_SRC_MODULE_AUDIO_NULL}
${LOVE_SRC_MODULE_AUDIO_OPENAL}
)
source_group("modules\\audio" FILES ${LOVE_SRC_MODULE_AUDIO_ROOT})
source_group("modules\\audio\\null" FILES ${LOVE_SRC_MODULE_AUDIO_NULL})
source_group("modules\\audio\\openal" FILES ${LOVE_SRC_MODULE_AUDIO_OPENAL})
#
# love.event
#
set(LOVE_SRC_MODULE_EVENT_ROOT
src/modules/event/Event.cpp
src/modules/event/Event.h
)
set(LOVE_SRC_MODULE_EVENT_SDL
src/modules/event/sdl/Event.cpp
src/modules/event/sdl/Event.h
src/modules/event/sdl/wrap_Event.cpp
src/modules/event/sdl/wrap_Event.h
)
set(LOVE_SRC_MODULE_EVENT
${LOVE_SRC_MODULE_EVENT_ROOT}
${LOVE_SRC_MODULE_EVENT_SDL}
)
source_group("modules\\event" FILES ${LOVE_SRC_MODULE_EVENT_ROOT})
source_group("modules\\event\\sdl" FILES ${LOVE_SRC_MODULE_EVENT_SDL})
#
# love.filesystem
#
set(LOVE_SRC_MODULE_FILESYSTEM_ROOT
src/modules/filesystem/DroppedFile.cpp
src/modules/filesystem/DroppedFile.h
src/modules/filesystem/File.cpp
src/modules/filesystem/File.h
src/modules/filesystem/FileData.cpp
src/modules/filesystem/FileData.h
src/modules/filesystem/Filesystem.cpp
src/modules/filesystem/Filesystem.h
src/modules/filesystem/wrap_DroppedFile.cpp
src/modules/filesystem/wrap_DroppedFile.h
src/modules/filesystem/wrap_File.cpp
src/modules/filesystem/wrap_File.h
src/modules/filesystem/wrap_FileData.cpp
src/modules/filesystem/wrap_FileData.h
src/modules/filesystem/wrap_Filesystem.cpp
src/modules/filesystem/wrap_Filesystem.h
)
set(LOVE_SRC_MODULE_FILESYSTEM_PHYSFS
src/modules/filesystem/physfs/File.cpp
src/modules/filesystem/physfs/File.h
src/modules/filesystem/physfs/Filesystem.cpp
src/modules/filesystem/physfs/Filesystem.h
)
set(LOVE_SRC_MODULE_FILESYSTEM
${LOVE_SRC_MODULE_FILESYSTEM_ROOT}
${LOVE_SRC_MODULE_FILESYSTEM_PHYSFS}
)
source_group("modules\\filesystem" FILES ${LOVE_SRC_MODULE_FILESYSTEM_ROOT})
source_group("modules\\filesystem\\physfs" FILES ${LOVE_SRC_MODULE_FILESYSTEM_PHYSFS})
#
# love.font
#
set(LOVE_SRC_MODULE_FONT_ROOT
src/modules/font/BMFontRasterizer.cpp
src/modules/font/BMFontRasterizer.h
src/modules/font/Font.h
src/modules/font/GlyphData.cpp
src/modules/font/GlyphData.h
src/modules/font/ImageRasterizer.cpp
src/modules/font/ImageRasterizer.h
src/modules/font/Rasterizer.cpp
src/modules/font/Rasterizer.h
src/modules/font/wrap_Font.cpp
src/modules/font/wrap_Font.h
src/modules/font/wrap_GlyphData.cpp
src/modules/font/wrap_GlyphData.h
src/modules/font/wrap_Rasterizer.cpp
src/modules/font/wrap_Rasterizer.h
)
set(LOVE_SRC_MODULE_FONT_FREETYPE
src/modules/font/freetype/Font.cpp
src/modules/font/freetype/Font.h
src/modules/font/freetype/TrueTypeRasterizer.cpp
src/modules/font/freetype/TrueTypeRasterizer.h
)
set(LOVE_SRC_MODULE_FONT
${LOVE_SRC_MODULE_FONT_ROOT}
${LOVE_SRC_MODULE_FONT_FREETYPE}
)
source_group("modules\\font" FILES ${LOVE_SRC_MODULE_FONT_ROOT})
source_group("modules\\font\\freetype" FILES ${LOVE_SRC_MODULE_FONT_FREETYPE})
#
# love.graphics
#
set(LOVE_SRC_MODULE_GRAPHICS_ROOT
src/modules/graphics/Color.h
src/modules/graphics/Drawable.h
src/modules/graphics/Graphics.cpp
src/modules/graphics/Graphics.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
)
set(LOVE_SRC_MODULE_GRAPHICS_OPENGL
src/modules/graphics/opengl/Canvas.cpp
src/modules/graphics/opengl/Canvas.h
src/modules/graphics/opengl/Font.cpp
src/modules/graphics/opengl/Font.h
src/modules/graphics/opengl/Graphics.cpp
src/modules/graphics/opengl/Graphics.h
src/modules/graphics/opengl/Image.cpp
src/modules/graphics/opengl/Image.h
src/modules/graphics/opengl/Mesh.cpp
src/modules/graphics/opengl/Mesh.h
src/modules/graphics/opengl/OpenGL.cpp
src/modules/graphics/opengl/OpenGL.h
src/modules/graphics/opengl/ParticleSystem.cpp
src/modules/graphics/opengl/ParticleSystem.h
src/modules/graphics/opengl/Polyline.cpp
src/modules/graphics/opengl/Polyline.h
src/modules/graphics/opengl/Shader.cpp
src/modules/graphics/opengl/Shader.h
src/modules/graphics/opengl/SpriteBatch.cpp
src/modules/graphics/opengl/SpriteBatch.h
src/modules/graphics/opengl/Text.cpp
src/modules/graphics/opengl/Text.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
src/modules/graphics/opengl/wrap_Canvas.h
src/modules/graphics/opengl/wrap_Font.cpp
src/modules/graphics/opengl/wrap_Font.h
src/modules/graphics/opengl/wrap_Graphics.cpp
src/modules/graphics/opengl/wrap_Graphics.h
src/modules/graphics/opengl/wrap_Image.cpp
src/modules/graphics/opengl/wrap_Image.h
src/modules/graphics/opengl/wrap_Mesh.cpp
src/modules/graphics/opengl/wrap_Mesh.h
src/modules/graphics/opengl/wrap_ParticleSystem.cpp
src/modules/graphics/opengl/wrap_ParticleSystem.h
src/modules/graphics/opengl/wrap_Quad.cpp
src/modules/graphics/opengl/wrap_Quad.h
src/modules/graphics/opengl/wrap_Shader.cpp
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_Text.cpp
src/modules/graphics/opengl/wrap_Text.h
src/modules/graphics/opengl/wrap_Texture.cpp
src/modules/graphics/opengl/wrap_Texture.h
)
set(LOVE_SRC_MODULE_GRAPHICS
${LOVE_SRC_MODULE_GRAPHICS_ROOT}
${LOVE_SRC_MODULE_GRAPHICS_OPENGL}
)
source_group("modules\\graphics" FILES ${LOVE_SRC_MODULE_GRAPHICS_ROOT})
source_group("modules\\graphics\\opengl" FILES ${LOVE_SRC_MODULE_GRAPHICS_OPENGL})
#
# love.image
#
set(LOVE_SRC_MODULE_IMAGE_ROOT
src/modules/image/CompressedData.cpp
src/modules/image/CompressedData.h
src/modules/image/Image.h
src/modules/image/ImageData.cpp
src/modules/image/ImageData.h
src/modules/image/wrap_CompressedData.cpp
src/modules/image/wrap_CompressedData.h
src/modules/image/wrap_Image.cpp
src/modules/image/wrap_Image.h
src/modules/image/wrap_ImageData.cpp
src/modules/image/wrap_ImageData.h
)
set(LOVE_SRC_MODULE_IMAGE_MAGPIE
src/modules/image/magpie/CompressedData.cpp
src/modules/image/magpie/CompressedData.h
src/modules/image/magpie/CompressedFormatHandler.h
src/modules/image/magpie/ddsHandler.cpp
src/modules/image/magpie/ddsHandler.h
src/modules/image/magpie/FormatHandler.cpp
src/modules/image/magpie/FormatHandler.h
src/modules/image/magpie/Image.cpp
src/modules/image/magpie/Image.h
src/modules/image/magpie/ImageData.cpp
src/modules/image/magpie/ImageData.h
src/modules/image/magpie/JPEGHandler.cpp
src/modules/image/magpie/JPEGHandler.h
src/modules/image/magpie/KTXHandler.cpp
src/modules/image/magpie/KTXHandler.h
src/modules/image/magpie/PKMHandler.cpp
src/modules/image/magpie/PKMHandler.h
src/modules/image/magpie/PNGHandler.cpp
src/modules/image/magpie/PNGHandler.h
src/modules/image/magpie/PVRHandler.cpp
src/modules/image/magpie/PVRHandler.h
src/modules/image/magpie/STBHandler.cpp
src/modules/image/magpie/STBHandler.h
)
set(LOVE_SRC_MODULE_IMAGE
${LOVE_SRC_MODULE_IMAGE_ROOT}
${LOVE_SRC_MODULE_IMAGE_MAGPIE}
)
source_group("modules\\image" FILES ${LOVE_SRC_MODULE_IMAGE_ROOT})
source_group("modules\\image\\magpie" FILES ${LOVE_SRC_MODULE_IMAGE_MAGPIE})
#
# love.joystick
#
set(LOVE_SRC_MODULE_JOYSTICK_ROOT
src/modules/joystick/Joystick.cpp
src/modules/joystick/Joystick.h
src/modules/joystick/JoystickModule.h
src/modules/joystick/wrap_Joystick.cpp
src/modules/joystick/wrap_Joystick.h
src/modules/joystick/wrap_JoystickModule.cpp
src/modules/joystick/wrap_JoystickModule.h
)
set(LOVE_SRC_MODULE_JOYSTICK_SDL
src/modules/joystick/sdl/Joystick.cpp
src/modules/joystick/sdl/Joystick.h
src/modules/joystick/sdl/JoystickModule.cpp
src/modules/joystick/sdl/JoystickModule.h
)
set(LOVE_SRC_MODULE_JOYSTICK
${LOVE_SRC_MODULE_JOYSTICK_ROOT}
${LOVE_SRC_MODULE_JOYSTICK_SDL}
)
source_group("modules\\joystick" FILES ${LOVE_SRC_MODULE_JOYSTICK_ROOT})
source_group("modules\\joystick\\sdl" FILES ${LOVE_SRC_MODULE_JOYSTICK_SDL})
#
# love.keyboard
#
set(LOVE_SRC_MODULE_KEYBOARD_ROOT
src/modules/keyboard/Keyboard.cpp
src/modules/keyboard/Keyboard.h
src/modules/keyboard/wrap_Keyboard.cpp
src/modules/keyboard/wrap_Keyboard.h
)
set(LOVE_SRC_MODULE_KEYBOARD_SDL
src/modules/keyboard/sdl/Keyboard.cpp
src/modules/keyboard/sdl/Keyboard.h
)
set(LOVE_SRC_MODULE_KEYBOARD
${LOVE_SRC_MODULE_KEYBOARD_ROOT}
${LOVE_SRC_MODULE_KEYBOARD_SDL}
)
source_group("modules\\keyboard" FILES ${LOVE_SRC_MODULE_KEYBOARD_ROOT})
source_group("modules\\keyboard\\sdl" FILES ${LOVE_SRC_MODULE_KEYBOARD_SDL})
#
# love.math
#
set(LOVE_SRC_MODULE_MATH
src/modules/math/BezierCurve.cpp
src/modules/math/BezierCurve.h
src/modules/math/MathModule.cpp
src/modules/math/MathModule.h
src/modules/math/RandomGenerator.cpp
src/modules/math/RandomGenerator.h
src/modules/math/wrap_BezierCurve.cpp
src/modules/math/wrap_BezierCurve.h
src/modules/math/wrap_Math.cpp
src/modules/math/wrap_Math.h
src/modules/math/wrap_RandomGenerator.cpp
src/modules/math/wrap_RandomGenerator.h
)
source_group("modules\\math" FILES ${LOVE_SRC_MODULE_MATH})
#
# love (module)
#
set(LOVE_SRC_MODULE_LOVE
src/modules/love/love.cpp
src/modules/love/love.h
)
source_group("modules\\love" FILES ${LOVE_SRC_MODULE_LOVE})
#
# love.mouse
#
set(LOVE_SRC_MODULE_MOUSE_ROOT
src/modules/mouse/Cursor.cpp
src/modules/mouse/Cursor.h
src/modules/mouse/Mouse.cpp
src/modules/mouse/Mouse.h
src/modules/mouse/wrap_Cursor.cpp
src/modules/mouse/wrap_Cursor.h
src/modules/mouse/wrap_Mouse.cpp
src/modules/mouse/wrap_Mouse.h
)
set(LOVE_SRC_MODULE_MOUSE_SDL
src/modules/mouse/sdl/Cursor.cpp
src/modules/mouse/sdl/Cursor.h
src/modules/mouse/sdl/Mouse.cpp
src/modules/mouse/sdl/Mouse.h
)
set(LOVE_SRC_MODULE_MOUSE
${LOVE_SRC_MODULE_MOUSE_ROOT}
${LOVE_SRC_MODULE_MOUSE_SDL}
)
source_group("modules\\mouse" FILES ${LOVE_SRC_MODULE_MOUSE_ROOT})
source_group("modules\\mouse\\sdl" FILES ${LOVE_SRC_MODULE_MOUSE_SDL})
#
# love.physics
#
set(LOVE_SRC_MODULE_PHYSICS_ROOT
src/modules/physics/Body.cpp
src/modules/physics/Body.h
src/modules/physics/Joint.cpp
src/modules/physics/Joint.h
src/modules/physics/Shape.cpp
src/modules/physics/Shape.h
)
set(LOVE_SRC_MODULE_PHYSICS_BOX2D
src/modules/physics/box2d/Body.cpp
src/modules/physics/box2d/Body.h
src/modules/physics/box2d/ChainShape.cpp
src/modules/physics/box2d/ChainShape.h
src/modules/physics/box2d/CircleShape.cpp
src/modules/physics/box2d/CircleShape.h
src/modules/physics/box2d/Contact.cpp
src/modules/physics/box2d/Contact.h
src/modules/physics/box2d/DistanceJoint.cpp
src/modules/physics/box2d/DistanceJoint.h
src/modules/physics/box2d/EdgeShape.cpp
src/modules/physics/box2d/EdgeShape.h
src/modules/physics/box2d/Fixture.cpp
src/modules/physics/box2d/Fixture.h
src/modules/physics/box2d/FrictionJoint.cpp
src/modules/physics/box2d/FrictionJoint.h
src/modules/physics/box2d/GearJoint.cpp
src/modules/physics/box2d/GearJoint.h
src/modules/physics/box2d/Joint.cpp
src/modules/physics/box2d/Joint.h
src/modules/physics/box2d/MotorJoint.cpp
src/modules/physics/box2d/MotorJoint.h
src/modules/physics/box2d/MouseJoint.cpp
src/modules/physics/box2d/MouseJoint.h
src/modules/physics/box2d/Physics.cpp
src/modules/physics/box2d/Physics.h
src/modules/physics/box2d/PolygonShape.cpp
src/modules/physics/box2d/PolygonShape.h
src/modules/physics/box2d/PrismaticJoint.cpp
src/modules/physics/box2d/PrismaticJoint.h
src/modules/physics/box2d/PulleyJoint.cpp
src/modules/physics/box2d/PulleyJoint.h
src/modules/physics/box2d/RevoluteJoint.cpp
src/modules/physics/box2d/RevoluteJoint.h
src/modules/physics/box2d/RopeJoint.cpp
src/modules/physics/box2d/RopeJoint.h
src/modules/physics/box2d/Shape.cpp
src/modules/physics/box2d/Shape.h
src/modules/physics/box2d/WeldJoint.cpp
src/modules/physics/box2d/WeldJoint.h
src/modules/physics/box2d/WheelJoint.cpp
src/modules/physics/box2d/WheelJoint.h
src/modules/physics/box2d/World.cpp
src/modules/physics/box2d/World.h
src/modules/physics/box2d/wrap_Body.cpp
src/modules/physics/box2d/wrap_Body.h
src/modules/physics/box2d/wrap_ChainShape.cpp
src/modules/physics/box2d/wrap_ChainShape.h
src/modules/physics/box2d/wrap_CircleShape.cpp
src/modules/physics/box2d/wrap_CircleShape.h
src/modules/physics/box2d/wrap_Contact.cpp
src/modules/physics/box2d/wrap_Contact.h
src/modules/physics/box2d/wrap_DistanceJoint.cpp
src/modules/physics/box2d/wrap_DistanceJoint.h
src/modules/physics/box2d/wrap_EdgeShape.cpp
src/modules/physics/box2d/wrap_EdgeShape.h
src/modules/physics/box2d/wrap_Fixture.cpp
src/modules/physics/box2d/wrap_Fixture.h
src/modules/physics/box2d/wrap_FrictionJoint.cpp
src/modules/physics/box2d/wrap_FrictionJoint.h
src/modules/physics/box2d/wrap_GearJoint.cpp
src/modules/physics/box2d/wrap_GearJoint.h
src/modules/physics/box2d/wrap_Joint.cpp
src/modules/physics/box2d/wrap_Joint.h
src/modules/physics/box2d/wrap_MotorJoint.cpp
src/modules/physics/box2d/wrap_MotorJoint.h
src/modules/physics/box2d/wrap_MouseJoint.cpp
src/modules/physics/box2d/wrap_MouseJoint.h
src/modules/physics/box2d/wrap_Physics.cpp
src/modules/physics/box2d/wrap_Physics.h
src/modules/physics/box2d/wrap_PolygonShape.cpp
src/modules/physics/box2d/wrap_PolygonShape.h
src/modules/physics/box2d/wrap_PrismaticJoint.cpp
src/modules/physics/box2d/wrap_PrismaticJoint.h
src/modules/physics/box2d/wrap_PulleyJoint.cpp
src/modules/physics/box2d/wrap_PulleyJoint.h
src/modules/physics/box2d/wrap_RevoluteJoint.cpp
src/modules/physics/box2d/wrap_RevoluteJoint.h
src/modules/physics/box2d/wrap_RopeJoint.cpp
src/modules/physics/box2d/wrap_RopeJoint.h
src/modules/physics/box2d/wrap_Shape.cpp
src/modules/physics/box2d/wrap_Shape.h
src/modules/physics/box2d/wrap_WeldJoint.cpp
src/modules/physics/box2d/wrap_WeldJoint.h
src/modules/physics/box2d/wrap_WheelJoint.cpp
src/modules/physics/box2d/wrap_WheelJoint.h
src/modules/physics/box2d/wrap_World.cpp
src/modules/physics/box2d/wrap_World.h
)
set(LOVE_SRC_MODULE_PHYSICS
${LOVE_SRC_MODULE_PHYSICS_ROOT}
${LOVE_SRC_MODULE_PHYSICS_BOX2D}
)
source_group("modules\\physics" FILES ${LOVE_SRC_MODULE_PHYSICS_ROOT})
source_group("modules\\physics\\box2d" FILES ${LOVE_SRC_MODULE_PHYSICS_BOX2D})
#
# love.sound
#
set(LOVE_SRC_MODULE_SOUND_ROOT
src/modules/sound/Decoder.h
src/modules/sound/Sound.cpp
src/modules/sound/Sound.h
src/modules/sound/SoundData.cpp
src/modules/sound/SoundData.h
src/modules/sound/wrap_Decoder.cpp
src/modules/sound/wrap_Decoder.h
src/modules/sound/wrap_Sound.cpp
src/modules/sound/wrap_Sound.h
src/modules/sound/wrap_SoundData.cpp
src/modules/sound/wrap_SoundData.h
)
set(LOVE_SRC_MODULE_SOUND_LULLABY
src/modules/sound/lullaby/Decoder.cpp
src/modules/sound/lullaby/Decoder.h
src/modules/sound/lullaby/FLACDecoder.cpp
src/modules/sound/lullaby/FLACDecoder.h
src/modules/sound/lullaby/GmeDecoder.cpp
src/modules/sound/lullaby/GmeDecoder.h
src/modules/sound/lullaby/ModPlugDecoder.cpp
src/modules/sound/lullaby/ModPlugDecoder.h
src/modules/sound/lullaby/Sound.cpp
src/modules/sound/lullaby/Sound.h
src/modules/sound/lullaby/VorbisDecoder.cpp
src/modules/sound/lullaby/VorbisDecoder.h
src/modules/sound/lullaby/WaveDecoder.cpp
src/modules/sound/lullaby/WaveDecoder.h
)
if(LOVE_MPG123)
set(LOVE_SRC_MODULE_SOUND_LULLABY
${LOVE_SRC_MODULE_SOUND_LULLABY}
src/modules/sound/lullaby/Mpg123Decoder.cpp
src/modules/sound/lullaby/Mpg123Decoder.h
)
endif()
set(LOVE_SRC_MODULE_SOUND
${LOVE_SRC_MODULE_SOUND_ROOT}
${LOVE_SRC_MODULE_SOUND_LULLABY}
)
source_group("modules\\sound" FILES ${LOVE_SRC_MODULE_SOUND_ROOT})
source_group("modules\\sound\\lullaby" FILES ${LOVE_SRC_MODULE_SOUND_LULLABY})
#
# love.system
#
set(LOVE_SRC_MODULE_SYSTEM_ROOT
src/modules/system/System.cpp
src/modules/system/System.h
src/modules/system/wrap_System.cpp
src/modules/system/wrap_System.h
)
set(LOVE_SRC_MODULE_SYSTEM_SDL
src/modules/system/sdl/System.cpp
src/modules/system/sdl/System.h
)
set(LOVE_SRC_MODULE_SYSTEM
${LOVE_SRC_MODULE_SYSTEM_ROOT}
${LOVE_SRC_MODULE_SYSTEM_SDL}
)
source_group("modules\\system" FILES ${LOVE_SRC_MODULE_SYSTEM_ROOT})
source_group("modules\\system\\sdl" FILES ${LOVE_SRC_MODULE_SYSTEM_SDL})
#
# love.thread
#
set(LOVE_SRC_MODULE_THREAD_ROOT
src/modules/thread/Channel.cpp
src/modules/thread/Channel.h
src/modules/thread/LuaThread.cpp
src/modules/thread/LuaThread.h
src/modules/thread/Thread.h
src/modules/thread/ThreadModule.cpp
src/modules/thread/ThreadModule.h
src/modules/thread/threads.cpp
src/modules/thread/threads.h
src/modules/thread/wrap_Channel.cpp
src/modules/thread/wrap_Channel.h
src/modules/thread/wrap_LuaThread.cpp
src/modules/thread/wrap_LuaThread.h
src/modules/thread/wrap_ThreadModule.cpp
src/modules/thread/wrap_ThreadModule.h
)
set(LOVE_SRC_MODULE_THREAD_SDL
src/modules/thread/sdl/Thread.cpp
src/modules/thread/sdl/Thread.h
src/modules/thread/sdl/threads.cpp
src/modules/thread/sdl/threads.h
)
set(LOVE_SRC_MODULE_THREAD
${LOVE_SRC_MODULE_THREAD_ROOT}
${LOVE_SRC_MODULE_THREAD_SDL}
)
source_group("modules\\thread" FILES ${LOVE_SRC_MODULE_THREAD_ROOT})
source_group("modules\\thread\\sdl" FILES ${LOVE_SRC_MODULE_THREAD_SDL})
#
# love.timer
#
set(LOVE_SRC_MODULE_TIMER_ROOT
src/modules/timer/Timer.h
src/modules/timer/wrap_Timer.cpp
src/modules/timer/wrap_Timer.h
)
set(LOVE_SRC_MODULE_TIMER_SDL
src/modules/timer/sdl/Timer.cpp
src/modules/timer/sdl/Timer.h
)
set(LOVE_SRC_MODULE_TIMER
${LOVE_SRC_MODULE_TIMER_ROOT}
${LOVE_SRC_MODULE_TIMER_SDL}
)
source_group("modules\\timer" FILES ${LOVE_SRC_MODULE_TIMER_ROOT})
source_group("modules\\timer\\sdl" FILES ${LOVE_SRC_MODULE_TIMER_SDL})
#
# love.window
#
set(LOVE_SRC_MODULE_WINDOW_ROOT
src/modules/window/Window.cpp
src/modules/window/Window.h
src/modules/window/wrap_Window.cpp
src/modules/window/wrap_Window.h
)
set(LOVE_SRC_MODULE_WINDOW_SDL
src/modules/window/sdl/Window.cpp
src/modules/window/sdl/Window.h
)
set(LOVE_SRC_MODULE_WINDOW
${LOVE_SRC_MODULE_WINDOW_ROOT}
${LOVE_SRC_MODULE_WINDOW_SDL}
)
source_group("modules\\window" FILES ${LOVE_SRC_MODULE_WINDOW_ROOT})
source_group("modules\\window\\sdl" FILES ${LOVE_SRC_MODULE_WINDOW_SDL})
###################################
# Third-party libraries
###################################
#
# Box2D
#
set(LOVE_SRC_3P_BOX2D_ROOT
src/libraries/Box2D/Box2D.h
)
set(LOVE_SRC_3P_BOX2D_COLLISION
src/libraries/Box2D/Collision/b2BroadPhase.cpp
src/libraries/Box2D/Collision/b2BroadPhase.h
src/libraries/Box2D/Collision/b2CollideCircle.cpp
src/libraries/Box2D/Collision/b2CollideEdge.cpp
src/libraries/Box2D/Collision/b2CollidePolygon.cpp
src/libraries/Box2D/Collision/b2Collision.cpp
src/libraries/Box2D/Collision/b2Collision.h
src/libraries/Box2D/Collision/b2Distance.cpp
src/libraries/Box2D/Collision/b2Distance.h
src/libraries/Box2D/Collision/b2DynamicTree.cpp
src/libraries/Box2D/Collision/b2DynamicTree.h
src/libraries/Box2D/Collision/b2TimeOfImpact.cpp
src/libraries/Box2D/Collision/b2TimeOfImpact.h
)
set(LOVE_SRC_3P_BOX2D_COLLISION_SHAPES
src/libraries/Box2D/Collision/Shapes/b2ChainShape.cpp
src/libraries/Box2D/Collision/Shapes/b2ChainShape.h
src/libraries/Box2D/Collision/Shapes/b2CircleShape.cpp
src/libraries/Box2D/Collision/Shapes/b2CircleShape.h
src/libraries/Box2D/Collision/Shapes/b2EdgeShape.cpp
src/libraries/Box2D/Collision/Shapes/b2EdgeShape.h
src/libraries/Box2D/Collision/Shapes/b2PolygonShape.cpp
src/libraries/Box2D/Collision/Shapes/b2PolygonShape.h
src/libraries/Box2D/Collision/Shapes/b2Shape.h
)
set(LOVE_SRC_3P_BOX2D_COMMON
src/libraries/Box2D/Common/b2BlockAllocator.cpp
src/libraries/Box2D/Common/b2BlockAllocator.h
src/libraries/Box2D/Common/b2Draw.cpp
src/libraries/Box2D/Common/b2Draw.h
src/libraries/Box2D/Common/b2GrowableStack.h
src/libraries/Box2D/Common/b2Math.cpp
src/libraries/Box2D/Common/b2Math.h
src/libraries/Box2D/Common/b2Settings.cpp
src/libraries/Box2D/Common/b2Settings.h
src/libraries/Box2D/Common/b2StackAllocator.cpp
src/libraries/Box2D/Common/b2StackAllocator.h
src/libraries/Box2D/Common/b2Timer.cpp
src/libraries/Box2D/Common/b2Timer.h
)
set(LOVE_SRC_3P_BOX2D_DYNAMICS
src/libraries/Box2D/Dynamics/b2Body.cpp
src/libraries/Box2D/Dynamics/b2Body.h
src/libraries/Box2D/Dynamics/b2ContactManager.cpp
src/libraries/Box2D/Dynamics/b2ContactManager.h
src/libraries/Box2D/Dynamics/b2Fixture.cpp
src/libraries/Box2D/Dynamics/b2Fixture.h
src/libraries/Box2D/Dynamics/b2Island.cpp
src/libraries/Box2D/Dynamics/b2Island.h
src/libraries/Box2D/Dynamics/b2TimeStep.h
src/libraries/Box2D/Dynamics/b2World.cpp
src/libraries/Box2D/Dynamics/b2World.h
src/libraries/Box2D/Dynamics/b2WorldCallbacks.cpp
src/libraries/Box2D/Dynamics/b2WorldCallbacks.h
)
set(LOVE_SRC_3P_BOX2D_DYNAMICS_CONTACTS
src/libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2ChainAndCircleContact.h
src/libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2ChainAndPolygonContact.h
src/libraries/Box2D/Dynamics/Contacts/b2CircleContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2CircleContact.h
src/libraries/Box2D/Dynamics/Contacts/b2Contact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2Contact.h
src/libraries/Box2D/Dynamics/Contacts/b2ContactSolver.cpp
src/libraries/Box2D/Dynamics/Contacts/b2ContactSolver.h
src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndCircleContact.h
src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2EdgeAndPolygonContact.h
src/libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2PolygonAndCircleContact.h
src/libraries/Box2D/Dynamics/Contacts/b2PolygonContact.cpp
src/libraries/Box2D/Dynamics/Contacts/b2PolygonContact.h
)
set(LOVE_SRC_3P_BOX2D_DYNAMICS_JOINTS
src/libraries/Box2D/Dynamics/Joints/b2DistanceJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2DistanceJoint.h
src/libraries/Box2D/Dynamics/Joints/b2FrictionJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2FrictionJoint.h
src/libraries/Box2D/Dynamics/Joints/b2GearJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2GearJoint.h
src/libraries/Box2D/Dynamics/Joints/b2Joint.cpp
src/libraries/Box2D/Dynamics/Joints/b2Joint.h
src/libraries/Box2D/Dynamics/Joints/b2MotorJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2MotorJoint.h
src/libraries/Box2D/Dynamics/Joints/b2MouseJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2MouseJoint.h
src/libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2PrismaticJoint.h
src/libraries/Box2D/Dynamics/Joints/b2PulleyJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2PulleyJoint.h
src/libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2RevoluteJoint.h
src/libraries/Box2D/Dynamics/Joints/b2RopeJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2RopeJoint.h
src/libraries/Box2D/Dynamics/Joints/b2WeldJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2WeldJoint.h
src/libraries/Box2D/Dynamics/Joints/b2WheelJoint.cpp
src/libraries/Box2D/Dynamics/Joints/b2WheelJoint.h
)
set(LOVE_SRC_3P_BOX2D_ROPE
src/libraries/Box2D/Rope/b2Rope.cpp
src/libraries/Box2D/Rope/b2Rope.h
)
set(LOVE_SRC_3P_BOX2D
${LOVE_SRC_3P_BOX2D_ROOT}
${LOVE_SRC_3P_BOX2D_COLLISION}
${LOVE_SRC_3P_BOX2D_COLLISION_SHAPES}
${LOVE_SRC_3P_BOX2D_COMMON}
${LOVE_SRC_3P_BOX2D_DYNAMICS}
${LOVE_SRC_3P_BOX2D_DYNAMICS_CONTACTS}
${LOVE_SRC_3P_BOX2D_DYNAMICS_JOINTS}
${LOVE_SRC_3P_BOX2D_ROPE}
)
add_library(love_3p_box2d ${LOVE_SRC_3P_BOX2D})
#
# ddsparse
#
set(LOVE_SRC_3P_DDSPARSE
src/libraries/ddsparse/ddsinfo.h
src/libraries/ddsparse/ddsparse.cpp
src/libraries/ddsparse/ddsparse.h
)
add_library(love_3p_ddsparse ${LOVE_SRC_3P_DDSPARSE})
#
# enet
#
set(LOVE_SRC_3P_ENET_ROOT
src/libraries/enet/enet.cpp
src/libraries/enet/lua-enet.h
)
set(LOVE_SRC_3P_ENET_LIBENET
src/libraries/enet/libenet/callbacks.c
src/libraries/enet/libenet/compress.c
src/libraries/enet/libenet/host.c
src/libraries/enet/libenet/list.c
src/libraries/enet/libenet/packet.c
src/libraries/enet/libenet/peer.c
src/libraries/enet/libenet/protocol.c
src/libraries/enet/libenet/unix.c
src/libraries/enet/libenet/win32.c
)
set(LOVE_SRC_3P_ENET_LIBENET_INCLUDE_ENET
src/libraries/enet/libenet/include/enet/enet.h
src/libraries/enet/libenet/include/enet/list.h
src/libraries/enet/libenet/include/enet/protocol.h
src/libraries/enet/libenet/include/enet/time.h
src/libraries/enet/libenet/include/enet/types.h
src/libraries/enet/libenet/include/enet/unix.h
src/libraries/enet/libenet/include/enet/utility.h
src/libraries/enet/libenet/include/enet/win32.h
)
set(LOVE_SRC_3P_ENET
${LOVE_SRC_3P_ENET_ROOT}
${LOVE_SRC_3P_ENET_LIBENET}
${LOVE_SRC_3P_ENET_LIBENET_INCLUDE_ENET}
)
add_library(love_3p_enet ${LOVE_SRC_3P_ENET})
target_link_libraries(love_3p_enet ${MEGA_LUA})
target_include_directories(love_3p_enet PUBLIC src/libraries/enet/libenet/include)
#
# GLAD
#
set(LOVE_SRC_3P_GLAD
src/libraries/glad/glad.cpp
src/libraries/glad/glad.hpp
src/libraries/glad/gladfuncs.hpp
)
add_library(love_3p_glad ${LOVE_SRC_3P_GLAD})
#
# LodePNG
#
set(LOVE_SRC_3P_LODEPNG
src/libraries/lodepng/lodepng.cpp
src/libraries/lodepng/lodepng.h
)
add_library(love_3p_lodepng ${LOVE_SRC_3P_LODEPNG})
#
# luasocket
#
set(LOVE_SRC_3P_LUASOCKET_ROOT
src/libraries/luasocket/luasocket.cpp
src/libraries/luasocket/luasocket.h
)
set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
src/libraries/luasocket/libluasocket/auxiliar.c
src/libraries/luasocket/libluasocket/auxiliar.h
src/libraries/luasocket/libluasocket/buffer.c
src/libraries/luasocket/libluasocket/buffer.h
src/libraries/luasocket/libluasocket/except.c
src/libraries/luasocket/libluasocket/except.h
src/libraries/luasocket/libluasocket/ftp.lua.h
src/libraries/luasocket/libluasocket/http.lua.h
src/libraries/luasocket/libluasocket/inet.c
src/libraries/luasocket/libluasocket/inet.h
src/libraries/luasocket/libluasocket/io.c
src/libraries/luasocket/libluasocket/io.h
src/libraries/luasocket/libluasocket/ltn12.lua.h
src/libraries/luasocket/libluasocket/lua.h
src/libraries/luasocket/libluasocket/luasocket.c
src/libraries/luasocket/libluasocket/luasocket.h
src/libraries/luasocket/libluasocket/mime.c
src/libraries/luasocket/libluasocket/mime.h
src/libraries/luasocket/libluasocket/mime.lua.h
src/libraries/luasocket/libluasocket/options.c
src/libraries/luasocket/libluasocket/options.h
src/libraries/luasocket/libluasocket/select.c
src/libraries/luasocket/libluasocket/select.h
src/libraries/luasocket/libluasocket/smtp.lua.h
src/libraries/luasocket/libluasocket/socket.h
src/libraries/luasocket/libluasocket/socket.lua.h
src/libraries/luasocket/libluasocket/tcp.c
src/libraries/luasocket/libluasocket/tcp.h
src/libraries/luasocket/libluasocket/timeout.c
src/libraries/luasocket/libluasocket/timeout.h
src/libraries/luasocket/libluasocket/tp.lua.h
src/libraries/luasocket/libluasocket/udp.c
src/libraries/luasocket/libluasocket/udp.h
src/libraries/luasocket/libluasocket/url.lua.h
)
if(MSVC)
set(LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET
${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
src/libraries/luasocket/libluasocket/wsocket.c
src/libraries/luasocket/libluasocket/wsocket.h
)
endif()
set(LOVE_SRC_3P_LUASOCKET
${LOVE_SRC_3P_LUASOCKET_ROOT}
${LOVE_SRC_3P_LUASOCKET_LIBLUASOCKET}
)
add_library(love_3p_luasocket ${LOVE_SRC_3P_LUASOCKET})
target_link_libraries(love_3p_luasocket ${MEGA_LUA})
#
# Lua 5.3's UTF-8 library
#
set(LOVE_SRC_3P_LUAUTF8
src/libraries/luautf8/lprefix.h
src/libraries/luautf8/lutf8lib.c
src/libraries/luautf8/lutf8lib.h
)
add_library(love_3p_luautf8 ${LOVE_SRC_3P_LUAUTF8})
target_link_libraries(love_3p_luautf8 ${MEGA_LUA})
#
# noise1234
#
set(LOVE_SRC_3P_NOISE1234
src/libraries/noise1234/simplexnoise1234.cpp
src/libraries/noise1234/simplexnoise1234.h
)
add_library(love_3p_noise1234 ${LOVE_SRC_3P_NOISE1234})
#
# stb_image
#
set(LOVE_SRC_3P_STB
src/libraries/stb/stb_image.h
)
# stb_image has no implementation files of its own.
#
# utf8
#
set(LOVE_SRC_3P_UTF8_ROOT src/libraries/utf8/utf8.h)
set(LOVE_SRC_3P_UTF8_UTF8
src/libraries/utf8/utf8/checked.h
src/libraries/utf8/utf8/core.h
src/libraries/utf8/utf8/unchecked.h
)
set(LOVE_SRC_3P_UTF8
${LOVE_SRC_3P_UTF8_ROOT}
${LOVE_SRC_3P_UTF8_UTF8}
)
# This library is all headers ... so there is no need to
# add_library() here.
#
# Wuff
#
set(LOVE_SRC_3P_WUFF
src/libraries/Wuff/wuff.c
src/libraries/Wuff/wuff.h
src/libraries/Wuff/wuff_config.h
src/libraries/Wuff/wuff_convert.c
src/libraries/Wuff/wuff_convert.h
src/libraries/Wuff/wuff_internal.c
src/libraries/Wuff/wuff_internal.h
src/libraries/Wuff/wuff_memory.c
)
add_library(love_3p_wuff ${LOVE_SRC_3P_WUFF})
set(LOVE_3P
love_3p_box2d
love_3p_ddsparse
love_3p_enet
love_3p_glad
love_3p_lodepng
love_3p_luasocket
love_3p_luautf8
love_3p_noise1234
love_3p_wuff
)
disable_warnings(love_3p_box2d love_3p_enet love_3p_luasocket)
#
# liblove
#
set(LOVE_LIB_SRC
${LOVE_SRC_COMMON}
# Modules
${LOVE_SRC_MODULE_AUDIO}
${LOVE_SRC_MODULE_EVENT}
${LOVE_SRC_MODULE_FILESYSTEM}
${LOVE_SRC_MODULE_FONT}
${LOVE_SRC_MODULE_GRAPHICS}
${LOVE_SRC_MODULE_IMAGE}
${LOVE_SRC_MODULE_JOYSTICK}
${LOVE_SRC_MODULE_KEYBOARD}
${LOVE_SRC_MODULE_LOVE}
${LOVE_SRC_MODULE_MATH}
${LOVE_SRC_MODULE_MOUSE}
${LOVE_SRC_MODULE_PHYSICS}
${LOVE_SRC_MODULE_SOUND}
${LOVE_SRC_MODULE_SYSTEM}
${LOVE_SRC_MODULE_THREAD}
${LOVE_SRC_MODULE_TIMER}
${LOVE_SRC_MODULE_WINDOW}
)
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_FREETYPE}
${MEGA_JPEG_TURBO}
${MEGA_LIBOGG}
${MEGA_LIBVORBISFILE}
${MEGA_LIBVORBIS}
${MEGA_LUA}
${MEGA_MODPLUG}
${MEGA_OPENAL}
${MEGA_PHYSFS}
${MEGA_SDL2MAIN}
${MEGA_SDL2}
${MEGA_ZLIB}
)
if(LOVE_MPG123)
set(LOVE_MEGA_3P
${LOVE_MEGA_3P}
${MEGA_MPEG123}
)
endif()
set(LOVE_LINK_LIBRARIES
${OPENGL_gl_LIBRARY}
${LOVE_MEGA_3P}
)
set(LOVE_RC)
if(MSVC)
set(LOVE_LINK_LIBRARIES ${LOVE_LINK_LIBRARIES}
ws2_32.lib
winmm.lib
)
set(LOVE_RC
extra/windows/love.rc
extra/windows/love.ico
)
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" PDB_NAME "liblove")
set_target_properties(${LOVE_LIB_NAME} PROPERTIES DEBUG_OUTPUT_NAME "love" PDB_NAME "liblove")
endif()
#
# love (executable)
#
add_executable(${LOVE_EXE_NAME} WIN32 src/love.cpp ${LOVE_RC})
target_link_libraries(love liblove)
# Add post build steps to move the DLLs next to the binary. Otherwise
# running/debugging the binary will not work from inside VS.
if(LOVE_MPG123)
add_move_dll(love ${MEGA_MPEG123})
endif()
add_move_dll(love ${MEGA_SDL2})
add_move_dll(love ${MEGA_OPENAL})
if(LOVE_JIT)
add_move_file(love ${MEGA_LUAJIT_DLL})
else()
add_move_dll(love ${MEGA_LUA51})
endif()
###################################
# Version
###################################
# Extract version.h contents.
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/src/common/version.h LOVE_VERSION_FILE_CONTENTS)
# Extract one of LOVE_VERSION_MAJOR/MINOR/REV.
function(match_version ARG_STRING OUT_VAR)
string(REGEX MATCH "VERSION_${ARG_STRING} = ([0-9]+);" TMP_VER "${LOVE_VERSION_FILE_CONTENTS}")
string(REGEX MATCH "[0-9]+" TMP_VER "${TMP_VER}")
set(${OUT_VAR} ${TMP_VER} PARENT_SCOPE)
endfunction()
match_version("MAJOR" LOVE_VERSION_MAJOR)
match_version("MINOR" LOVE_VERSION_MINOR)
match_version("REV" LOVE_VERSION_REV)
set(LOVE_VERSION_STR "${LOVE_VERSION_MAJOR}.${LOVE_VERSION_MINOR}.${LOVE_VERSION_REV}")
message(STATUS "Version: ${LOVE_VERSION_STR}")
###################################
# CPack
###################################
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})
get_filename_component(DLL_NAME ${DLL} NAME)
message(STATUS "Runtime DLL: ${DLL_NAME}")
endforeach()
install(FILES ${MEGA_MSVC_DLLS} DESTINATION .)
endif()
# Copy a text file from CMAKE_CURRENT_SOURCE_DIR to CMAKE_CURRENT_BINARY_DIR.
# On Windows, this function will convert line endings to CR,LF.
function(copy_text_file ARG_FILE_IN ARG_FILE_OUT)
file(READ ${CMAKE_CURRENT_SOURCE_DIR}/${ARG_FILE_IN} TMP_TXT_CONTENTS)
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${ARG_FILE_OUT} ${TMP_TXT_CONTENTS})
endfunction()
# Text files.
copy_text_file(readme.md readme.txt)
copy_text_file(license.txt license.txt)
copy_text_file(changes.txt changes.txt)
install(FILES
${CMAKE_CURRENT_BINARY_DIR}/changes.txt
${CMAKE_CURRENT_BINARY_DIR}/license.txt
${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")
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "LOVE -- It's awesome")
set(CPACK_PACKAGE_VERSION "${LOVE_VERSION_STR}")
set(CPACK_PACKAGE_VERSION_MAJOR "${LOVE_VERSION_MAJOR}")
set(CPACK_PACKAGE_VERSION_MINOR "${LOVE_VERSION_MINOR}")
set(CPACK_PACKAGE_VERSION_PATCH "${LOVE_VERSION_REV}")
set(CPACK_PACKAGE_INSTALL_DIRECTORY "LOVE")
set(CPACK_PACKAGE_EXECUTABLES "love;LOVE")
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 "LOVE")
set(CPACK_NSIS_DISPLAY_NAME "LÖVE ${LOVE_VERSION_STR}")
set(CPACK_NSIS_MODIFY_PATH OFF)
if(LOVE_X64)
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES64")
else()
set(CPACK_NSIS_INSTALL_ROOT "$PROGRAMFILES")
endif()
set(CPACK_NSIS_MENU_LINKS "http://love2d.org/wiki" "Documentation")
# Some bug somewhere in NSIS requires "\\\\" somewhere in the path,
# according to The Internet. (And sure enough, it does not work
# without it).
set(NSIS_LEFT_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\left.bmp")
set(NSIS_TOP_BMP "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\top.bmp")
set(NSIS_MUI_ICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
set(NSIS_MUI_UNICON "${CMAKE_CURRENT_SOURCE_DIR}/extra/nsis\\\\love.ico")
set(CPACK_NSIS_INSTALLER_MUI_ICON_CODE "
!define MUI_WELCOMEPAGE_TITLE \\\"LÖVE ${LOVE_VERSION_STR} Setup\\\"
!define MUI_WELCOMEFINISHPAGE_BITMAP \\\"${NSIS_LEFT_BMP}\\\"
!define MUI_HEADERIMAGE_BITMAP \\\"${NSIS_TOP_BMP}\\\"
!define MUI_ICON \\\"${NSIS_MUI_ICON}\\\"
!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)