This file contains a log of most of the changes and evolutions of the meta-build
system for Simple DirectMedia Layer 2.0 and related projects.

Changes as of 09/18/2013:
  -Enabled executable bits on the Mac OS X build-scripts command files.
  -Replaced the Xcode directory structure with two folders for Xcode 3
   and Xcode 4. It now looks like the VisualC folder, wherein there is
   premake/Xcode/Xcode3 and premake/Xcode/Xcode4 default workspaces.
  -Updated premake/Xcode/build-scripts/xcode3.command and the
   xcode4.command files to properly generate the workspaces in the above
   mentioned directories.
  -Regenerated the Visual Studio projects to push the 'current working
   directory' fix to the repository.
  -Verified the projects are building and running properly across all platforms.

Changes as of 09/13/2013-09/14/2013:
  -Analyzed structure and existing problems to be fixed in the system.
  -Updated the OpenGL dependency to not include "C:\Windows\System32" since that
   is implicitly included for any compiler building the project on Windows
   anyway.
  -Removed the build.all.vs2012.bat script since it hasn't been working and
   trying to get it to work or figure out why it doesn't is beyond the scope of
   the project at this point.
  -The above also applies to check.bin.compatibility.vs2010.bat.
  -Updated typo in run.tests.bat to make testchessboard run properly (it was
   looking for testdrawchessboard instead).
  -Corrected OpenGL dependency to properly look for "libGL" instead of
   "OpenGL32" on Linux.
  -Updated OpenGL dependency to link to "libGL" instead of "OpenGL32" on Linux.
  -Updated OpenGL dependency to properly notify the dependency system whether
   OpenGL support has been found or not (it was always indicating OpenGL
   support accidentally).
  -Modified the vs2008/vs2010/vs2012 generation scripts to generate to specific
   subfolders (ie, ./VS2008, etc.) so they can all be generated at once. Updated
   the clean script appropriately. Originally, it was desired to generate
   something more like SDL_VS2008.sln, etc., but premake has troubles correcting
   interproject dependencies without renaming the binary files to similar names
   (like SDL_main_VS2008.lib), which seemed much worse than just separating by
   directory.
  -Altered the working directories for the Visual Studio debugger to run from
   the path of the binary for each test application, rather than from the
   project directory. This allows the tests to utilize any locally copied
   resource files from both inside and outside Visual Studio.
  -Added execution bits to Linux build scripts.
  -Clarified the second paragraph in README-windows.txt.
  -Fixed typos in README.txt and added a plethora of code examples and
   explanations to demonstrate how to add on to the current system.
  -Regenerated default projects for MinGW, Linux, and Windows (this time serving
   VS2008, VS2010, and VS2012).

Changes as of 08/30/2013:
  -Updated README-windows.txt, README-macosx.txt, and README-mingw.txt.
  -Created README-linux.txt, README-ios.txt, README-linux.txt.
  -Modified premake4.lua to not generate any files if simply printing help text.
  -Created the entire primary README.txt help file.
  -Updated the automated test command file for OS X to randomly select a file
   for testshape, just like the windows version. However, there is an issue
   with it so that test is currently commented out.
  -Updated all 4 OS X build scripts to automatically build all of the generated
   test projects, rather than maintaining a list.
  -Generated an initial Xcode 4 workspace for iOS.
  -Generated an initial Xcode 4 workspace for Mac OS X.
  -Updated a bug in the windows automated test batch file within the label for
   handling the specially randomized arguments passed to an application, such as
   for testshape (it was hardcoded for testshape, rather than using a variable
   as intended).
  -Fixed a typo in the windows automated test batch file wherein it was not able
   to run the chess board application correctly.
  -Updated the automated test bash script for Linux targets to run the new
   chessboard test and to randomly pick an image to send to testshape. It runs
   testresample and testatomic now, too.

Changes as of 08/28/2013 & 08/29/2013:
  -Removed TODO.txt. It's no longer necessary; a lot of what was in it is no
   longer relevant, completed, or replaced by something different and thus
   implemented in some variety.
  -Stopped the premake engine from executing the project definitions if simply
   executing the help procedure, listing available options and acitons for the
   target premake file.
  -Modified the dependency function handling so that the function names are case
   insensitive both for registering functions and checking or testing them.
  -Created a function in sdl_projects.lua that can be used to retrieve all of
   the known names of the dependencies registered with the system at that point.
  -Implemented automated generation of options to forcibly enable certain
   dependencies, even if they are explicitly defined to not work on a given
   platform or if they simply cannot be found. This is useful, for instance, to
   force on the DirectX dependency for MinGW if the user has successfully setup
   the environment to work with it.
  -Modified the behavior of the dependency functions to provide the libraries,
   library paths, and include paths for platforms that don't support that
   dependency, allowing the override command line options to properly work on
   those platforms for those dependencies (again, the DirectX dependency on
   MinGW comes to mind).
  -Cleaned up premake4.lua.
  -Removed hardcoded links in Linux from premake4.lua to its proper locations in
   SDL2.lua and dependency functions.
  -Renamed the 'reset_links' function in sdl_check_compile.lua to be
   'reset_link_flags' since it fits the functionality better.
  -Corrected a mistake in 'check_include_directory' in sdl_check_compile.lua
   where it simply checked for files existing in a directory, rather than
   specifically header files.
  -Removed the 'projects' table declaration in premake4.lua, since its defined
   in sdl_projects.lua anyway.
  -Removed directive for copying the Info.plist file from the Xcode-iOS
   directory for the testsprite2.lua project, since it makes no sense.
  -Modified 'addConfig' in sdl_gen_config.lua to be extra cautious about
   ensuring that keys and values in the supplied config table are, indeed,
   strings as they need to be for concatenation.
  -Added documentation for premake4.lua, sdl_check_compile.lua,
   sdl_dependency_checkers.lua, sdl_depends.lua, sdl_file.lua,
   sdl_gen_config.lua, sdl_string.lua, and sdl_projects.lua.
  -Implemented file headers for every single project definition file.
  -Significantly cleaned up the commenting in SDL2.lua and added a file header
   description.
  -Added a print line in premake4.lua to indicate when the generation of the
   premake Lua file begins.
  -Added initial sample projects for VS2010, Linux make, and MinGW make.

Changes as of 08/27/2013:
  -Updated the Linux premake executable based on all the patches applied to
   premake thus far, as documented in the patches folder.
  -Updated the Linux definition of SDL2.lua to have all of the subsequent source
   files associated with each dependency to be within that dependency using the
   SDL_paths directive.
  -Implemented a function for modifying the search path for libraries during
   the various compiler test functions in sdl_check_compile.lua.
  -sdl_check_compile.lua: implemented a function for checking wether a library
   exists using os.findlib, adding its directory to the library path, then
   using check_library_exists to see if it can be linked to properly.
  -sdl_check_compile.lua: implemented check_include_directory and
   check_include_directories functions to see whether specified directories
   exist and contains .h files. This could be modified later on for other types
   of files that would exist in include directories (such as hpp, hxx, etc.).
  -sdl_projects.lua: implemented a function that checks whether a dependency
   exists and was found (the function must have been executed already). This is
   used by many of the dependencies for Linux (specifically that most of its
   dependencies depend on DLOpen for shared library binding).
  -Modified the dependency order for Linux in SDL2.lua so that DLOpen is listed
   first, as to help the dependency resolution process.
  -Corrected the link order in sdl_check_compile.lua, fixing the
   check_library_exists, check_library_exists_multiple, and
   check_library_exists_lookup functions.
  -Corrected the size definitions for SDL_config_linux.template.h so that it
   will work cross-platform.
  -Implemented better dependency support for the following Linux dependencies:
   DLOpen, ALSA, PulseAudio, ESD, NAS, OSS, and X11. The dependency code is
   based on CMake's definitions for those dependencies. The dependency function
   for D-Bus is improved.
  -Removed the commented code for the Windows SDK in the
   sdl_dependency_checkers.lua file.
  -Re-enabled the ifndef checks for the generate premake header file.
  -Moved the clean action in premake4.lua to before the project definitions, so
   that cleaning is immediate and doesn't have to wait on unnecessary dependency
   checks.
  -Renamed the macro defining whether to use the premake config header from
   USING_PREMAKE_HEADER_H to USING_PREMAKE_CONFIG_H, which involved changes in
   premake4.lua and include/SDL_config.h in the root source tree.
  -Corrected a mistake in the OpenGL dependency function that would mishandle
   forbidding desktop GL functionality on iOS.
  -Corrected a bug that would properly setup MinGW targets to work with OpenGL,
   but it would not link to WGL so there was no way for SDL to actually load the
   OpenGL library and attach it to a window.
  -Blocked support for OpenGL on Cygwin.
  -Blocked support for testfilesystem on Cygwin due to lack of support, though
   unix file system support is now enabled on Cygwin. The test accesses some
   windows functions that do not link properly in the Cygwin environment.

Changes as of 08/26/2013:
  -Implemented the testdrawchessboard test application.
  -Disabled the path-searching functionality for the DirectX dependency so it
   would be significantly sped up. It makes the assumption that DirectX is only
   installed if its DXSDK_DIR variable is set. The code is still there if users
   wish to implement the functionality again.
  -Modified the clean action to remove the 'ipch' directory since it sometimes
   shows up in various Visual Studio solution builds.
  -Fixed a bug in the post-build copy step that wouldn't correctly create nested
   directories during the copy stage in Visual Studio on Windows targets. This
   reflects an earlier bug fix that would stop the non-nested files from being
   copied correctly; both work now.
  -Modified the testshape project to copy all of the shape images instead of the
   sample image.
  -Updated the automated test batch file on Windows to randomly pick one of the
   intended shapes while running testshape. It also runs testshape three times,
   to demonstrate both the randomness and adequate testing of testshape over
   multiple shapes.
  -Changed the resample test to copy the sample.wav.
  -Updated the 'pass' label in the windows run.tests.bat file to accept a
   variable-number of arguments to be passed to the executable.
  -Re-enabeld the testresample test to try and resample sample.wav at 44.1Khz.
  -Updated testoverlay to copy moose.dat, since it depends on it now.
  -Updated testshader to properly depend on OpenGL and link to it, as well as
   copy the file it needs (icon.bmp).
  -Moved the dependency checker file over to the util directory.
  -Updated premake4.lua to recursively execute all the files in the projects
   folder, so they don't have to be hardcoded into premake4.lua and can be
   organized in whichever way desired (so long as their internal paths are
   correct).
  -Implemented text-based file writing in the sdl_file.lua utility file, as to
   prep for going around generating a lua file and loading the generated file
   from memory, instead.
  -Updated all of the current SDL dependency functions to properly check for
   MinGW and Cygwin support.
  -Fixed a few bugs in premake4.lua that would break Cygwin and MinGW support
   due to improper checking.
  -Fixed bugs that made it tricky to do wildcard copying on *nix systems (needed
   by testshape). Tested to work on MinGW and Windows.

Changes as of 08/23/2013:
  -Removed hardcoded definitions for the Linux config template.
  -Moved definitions over to SDL2.lua.
  -Added definition for enabling the file system module on Linux.
  -Separated the OpenGL dependency into one for Windows (WGL) and Linux (GLX).
   The core dependency is still there, but the windowing part is separate.
  -Separated the library-based dependencies from the Linux implementation into
   a series of dependency functions.
  -Changed the dependency function to return a named table instead of variable
   returns.

Changes as of 08/22/2013:
  -Rearranged a few more things in the top 'dofile' section in premake4.lua.
  -Reverted accidental changs to include/SDL_config.h which rendered it specific
   to a single platform, per cmake generation. All building was broken due to
   this accidental change, but it should be fixed after this commit.
  -Merged repository with the latest version from live SDL repository.
  -Implemented new file system source tree on Windows.
  -Implemented file system test.
  -Removed files accidentally committed from the Linux directory.
  -Implemented tests for the file system test for windows and Mac OS X.
  -Implemented cocoa file system support.
  -Implemented cocoa filesystem support on iOS.
  -Fixed a bug that was leading to the Xcode-iOS trying to build the
   OpenGL renderer on iOS, which isn't supported.

Changes as of 08/21/2013:
  -Changed names of generated files in check_compile.lua to more readable names,
   within the format "premakecheck.*"
  -Updated the check build function in check_compile.lua to support executing
   the build and redirecting all output to "./premakecheck.stdout".
  -Implemented a function for checking the size of a given type by generating a
   program that prints it to the screen, then reads the result from a file and
   converts it to an integer. This function is dependent on the existence of
   stdio.h and the printf function.
  -Tested the size function on Linux using various types.
  -Clumped the "dofile" directives for all utility scripts together in
   premake4.lua.
  -Removed the *Mode variables for MinGW, Cygwin, and iOS. All checking for
   these systems should be done using SDL_getos().
  -Updated SDL_getos() to check the _OPTIONS table directly.
  -From depends.lua, moved dirpathsearch and getenvpath to sdl_file.lua.
  -Created a sdl_string.lua file to contain various string-related functions.
  -From depends.lua, moved indexOf and explode to sdl_string.lua.
  -From premake4.lua, moved implode to sdl_string.lua.
  -Renamed depends.lua to sdl_depends.lua. Indicated that the file is
   particularly for windows dependency testing.
  -Rename check_compile.lua to sdl_check_compile.lua.
  -Updated premake4.lua to reflect file changes and modified the order of doing
   the util files, since their interdependencies have changed slightly.
  -Added sdl_string.lua to the list of utility files done in the beginning of
   premake4.lua.
  -Updated header in every file to reflect that I did not create premake (old
   wording was a bit vague).
  -Added header to new files.

Changes as of 08/20/2013:
  -Fixed logical mistakes in the check build sources function.
  -Added a check_function_exists function.
  -Whenever an include header or headers are checked, if they are found
   and build properly then they will be added to an internal list that
   will be prepended whenever doing future check_function_exists and
   check_library_exists calls.
  -Added a function which will check if a function exists in any of a set
   of libraries, rather than just one.
  -Added support for linking libraries for the check_library_exists
   function.
  -Silenced building and linking commands.
  -Incorporated check_compile.lua in premake4.lua.
  -Tested the various functions with X11, DLOpen, and ALSA dependency
   compatibility. some future tweaking may be necessary, but the
   dependency checking happening in cmake should be reproducable using
   these functions with some tweaking of the implementation itself.

Changes as of 08/16/2013:
  -Updated Cygwin build to foster a very trimmed down version of the Linux
   build, with no audio, video, haptic, joystick, or input support.
  -Cygwin uses a shared library. Read SDL2.lua for more information.
  -Slimmed and trimmed the cygwin config template to its bare minimum.
  -Implemented the configurations needed for Cygwin in SDL2.lua.
  -Updated many projects to be excluded if building on Cygwin, since many of
   them are incompatible without the aforementioned support.
  -Implemented a Cygwin directory and separate build-scripts, working similarly
   to that of MinGW.
  -Implemented a check_compile.lua utility file emulating a lot of the same
   functions used in cmake to check for dependencies and various libraries.
   These will be added to a Linux-specific dependency checker function later on,
   allowing all the Linux dependencies to follow a similar routine to that of
   autotools and cmake.

Changes as of 08/15/2013:
  -Created a separate template configuration file for Cygwin.
  -Created separate SDL2 project definitions for Cygwin, alongside Linux.
  -Added various other side definitions for Cygwin support, though it is still
   not building correctly due to some misunderstandings with library support.
  -Patched premake to support custom source trees for Xcode projects to fix
   issues finding the correct iOS frameworks in Xcode.
  -Updated all Win32 premake executables containing the patch.
  -Updated executables for Xcode and Xcode-iOS for above patch.
  -Updated SDL2.lua for iOS to use the SDKROOT source tree for the frameworks,
   as per the new patch.
  -Successfully built and ran all the iOS demos.

Changes as of 08/14/2013:
  -Fixed a mistake in the windows-side copy command that was changed yesterday;
   without parentheses it was inhibiting the ability to copy the SDL2.dll file
   to the built directories if the directories already existed; this has been
   fixed.
  -Reintegrated MinGW support on Windows with a few slight changes to various
   OS dependencies, since "MinGW" is now considered the target OS, versus
   Windows. This involved changes in SDL2.lua, SDL2main.lua, testnative.lua.
  -Reenabled both debug and release configurations.
  -Separated post-build commands to being separate for debug and release.
  -Setup temporary hardcoded linkoptions for MinGW on the release configuration.
  -Verified both configurations build correctly for VS2010 and MinGW.
  -Updated the premake executables for VS and MinGW to reflect the recent
   patch.
  -Updated premake executables for Xcode and Xcode-iOS to contain features
   added from the latest patch.
  -Verified working debug/release builds on Xcode, though the target
   directories for the binaries clash, so they override each other. This
   will be fixed in the future as the system starts to get cleaned up.

Changes as of 08/13/2013:
  -Implemented special SDL_getos function which gets the current build
   platform, taking into consideration Cygwin, iOS, and MinGW modes.
   Although it's invalid to consider Cygwin and MinGW operating systems,
   for all intensive purposes they are considered separate for the build
   system. This may be renamed later on.
  -Updated OS-compatibility functions for SDL projects to use the new
   SDL_getos function, so they can be dependent on Cygwin, MinGW, iOS, etc.
  -Removed the iOS dependency function and updated the iOS portion of the
   SDL2 project to depend on iOS rather than Mac OS X.
  -Changed the explode function in depends.lua to be part of the string
   table.
  -Modified SDL_isos to accept patterns, such as "macosx|ios".
  -Updated SDL2 and SDL2main to be compatible on Mac OS X and iOS
   simultaneously.
  -Updated SDL_os to work with the patterns, as well, by merging the
   functionalities of SDL_os and SDL_isos to a local function.
  -Updated SDL_notos similarly.
  -Updated SDL_os to work on projects as well as dependencies, and updated
   premake4.lua to check for overall project compatibility.
  -Implemented SDL_notos to inhibit compatibility for projects that simply
   cannot work on specific platforms.
  -Added exclusions for every single current test project to not be added
   to the iOS solution, since none of them are designed to run on iOS.
  -Removed hacked override for info.plist and properly implemented plist
   inclusion for Xcode projects. Premake already supported this well.
  -Changed a few references in premake4.lua of os.get to SDL_getos to
   avoid some of the hardcoding that was going on in various places.
  -Advanced the SDL_copy feature for project resources to being able to
   copy files to more complicated destination paths, with scripted support
   to create the destination directories if they do not yet exist during
   post-build execution.
  -Patched premake to allow BMPamd WAV files to be considered as assets
   for Xcode projects.
  -Updated the premake executables for Xcode and Xcode-iOS, respectively.
  -Successfully ported, built, and ran all working Xcode-iOS demos using
   project files generated by the meta-build system for those demos. There
   are a few hiccups that need to be ironed out yet, but overall it's a
   hopeful step forward to decent iOS support.
  -Upgraded the clean action to also delete the demos folder for iOS.
  -Unhardcoded a lot of the iOS stuff added in previous commits, which
   included switching a lot more references to os.get() to SDL_getos()
   in premake4.lua.
  -Preliminarily fixed some potential bugs stemming from SDL_getos()
   versus os.get().
  -Moved hardcoded iOS links from premake4.lua to their correct location
   in SDL2.lua.
  -Reinstated correct platforms directives, versus hardcoded iOS, etc.
  -Double checked Xcode projects still are generated, built, and run
   properly.
  -Updated the patches listing and files portion appropriately for the
   aforementioned premake modification.

Changes as of 08/09/2013:
  -More bruteforcing on trying to hack premake into generating a correct
   iOS-compatible Xcode project.
  -Added code to convert all ConsoleApps to WindowedApps in iOS mode
   because ConsoleApps translate to 'tool' on Mac OS X and tools are
   not supported on iOS.
  -Forcefully implemented a list of links taken from the Demos SDL
   iOS Xcode project for all generated SDL2 projects so they can
   correctly link to the iOS system.
  -Successfully built SDL2 and tests for iOS, though the test projects will
   not run correctly on iOS due to not being built for iOS.
  -Fixed a bug in the testgles project where it was not linking to SDL2test,
   on which it was dependent.

Changes as of 08/08/2013:
  -Implemented template header for iOS configurations.
  -Successfully built SDL2 library for iOS on Xcode.
  -Implemented configuration for iOS similar to that of Cygwin and MinGW.
  -Implemented command-line option for selecting iOS mode on Mac OS X.
  -Currently, iOS projects will have some issues regarding correct
   project types, so building and running are a bit off yet for iOS.
  -Added a new folder for iOS generation.
  -Added scripts for iOS generation and such.
  -Added exclusion for the OpenGL dependency checker for always failing
   on iOS, since iOS uses OpenGL ES 1.1/2.0, not desktop GL.
  -Fixed a bug in sdl_projects.lua that led to excluded dependency
   function calls to give a false positive if they lead to invoking
   the function rather than using a cached result.

Changes as of 08/07/2013:
  -Created a fork for premake-stable to try and implement some of the necessary
   changes in order to support many new features to the meta-build system.
  -Created a directory for patches as part of the meta-build system. This may be
   removed later on.
  -Restored linking to MinGW32 in MinGW mode after temporarily removing it and
   forgetting to restore it.
  -Submitted a ticket and patch to premake for fixing the linker order that
   prevented proper linking to SDL2main on the MinGW project.
  -Created a manifest of patches made to premake needed for MinGW.
  -Added a patch for adding iOS support on Xcode, though currently untested.
  -Updated all Mac OS X, Windows, and MinGW binaries to reflect the above
   patches.

Changes as of 08/06/2013:
  -Corrected a mistake in the Linux template config header that was preventing
   it from being built on Linux. It was using the same header guard as
   SDL_config.h, rendering it completely blank during compile time.
  -Added a dependency function for checking for D-Bus support on Linux.
  -Implemented a summary implementation for the Linux project in SDL2.lua,
   making use of the D-Bus dependency function.
  -Added temporary global links in premake4.lua for all projects on Linux.
  -Successfully built SDL2.lua on 64-bit Linux Mint 15.
  -Updated the testnative test project to have a Linux dependency, binding to
   testnativex11.c.
  -Implemented an X11 dependency function for testnative and related projects,
   though only testnative currently uses it.
  -Had to switch over to using a static library instead of a shared library on
   Linux for now, because Linux requires the end executable to be aware of
   where the shared library is, and we have no way currently to generate any
   sort of install rule for the generated SDL2 makefile. Premake will have to
   be patched to proceed on that route.
  -Successfully built all test projects on 64-bit Linux Mint 15.
  -Added a shell script to automatically run through the compatible tests in
   Linux/build-scripts, similar to those of the other platforms.
  -Successfully ran through many of the tests, though without OpenGL support.
  -Added clean shell script for Linux targets.

Changes as of 08/05/2013:
  -Implemented global flags for checking if the current premake system is
   targeting MinGW or Cygwin.
  -Corrected previous checks that were directly using _OPTIONS to using the
   MinGWMode flag, instead.
  -Corrected typos where I was misspelling 'targeted' as 'targetted'
  -Moved the options declarations a bit earlier in premake4.lua.
  -Corrected a mistake in the clean batch file for MinGW where it wasn't
   actually cleaning in MinGW mode.
  -Started working on a Cygwin implementation.
  -Started working on a Linux implementation (using Linux Mint 15).
  -Setup a basic SDL_config_linux.template.h based on a SDL_config.h production
   on 64bit Linux Mint 15 using the configure script.
  -Setup the Linux directory and a basic build script. The system completely
   does not build at this point, it's simply a step in the right direction.
  -Fixed a bug in the testnative project where it was trying to build the X11
   implementation on Mac OS X instead of the cocoa implementation. The test
   now builds and runs correctly on Mac OS X.

Changes as of 08/02/2013:
  -Actually added a README file for MinGW.
  -Changed all the README files to be named similar to those in the top level
   directory.
  -Updated the READMEs for more accurate and up-to-date information.
  -Split this primary README.txt into three files: README.txt, TODO.txt, and
   changelog.
  -Updated the depends.lua file to automatically fail on the windows dependency
   search if the current OS is not windows and corrected a bug that would result
   in an infinite loop if the main search path provided is empty but not nil.
  -Implemented a utility function in depends.lua for joining together a series
   of evaluated environmental variables, taking into consideration of they do
   not exist. This function is cross-platform.
  -Fixed a bug where the recently added code for surrounding paths with spaces
   in quotes would lead to premake placing a "../" before the path. Besides the
   convention of using double quotes is not universal, this bug existed both
   with Visual Studio and MinGW gmakefiles. The code has been completely
   removed, as it was found unnecessary.
  -Modified DirectX dependency function to fail if targeting MinGW.
  -After fully testing support for MinGW, I found there were a few differences
   in execution between that and VS builds (without DirectX), one of which is
   torturethread crashing on MinGW builds.
  -Changed testshape.lua to copy sample.bmp and changed the run test scripts
   to use the local sample.bmp as the shape for the window. This was just to
   make the built environment independent of the top-level SDL directory.
  -Changed the test run scripts to properly run the semaphore test.
  -Edited the build scripts for Visual Studio to parallelize builds when
   possible.
  -Moved build scripts for VS and MinGW projects into respective build-scripts
   folders, similar to the top level SDL directory. Tested all the tests for
   builds using VS2008, VS2010, VS2012, and MinGW.
  -Moved the build scripts for Xcode 3 and 4 to their own build-scripts folder.
  -Updated the build scripts for Mac OS X to run the semaphore test.
  -Tested the build environment and tests with Xcode 3 and 4 with architectures
   i386 and x86_64.

Changes as of 08/01/2013:
  -Implemented the SDL_notdepfunc function in sdl_projects.lua so dependencies
   can depend on the absence of a dependency. For example, the haptic and
   joystick systems have dummy systems that cannot be built alongside the Dinput
   implementations, so they have to be added only in the absence of DirectX.
  -Implement a dependency for handling the situation where DirectX is not found
   on the windows platform.
  -Tested SDL and its tests without DirectX support. Properly built SDL and ran
   through the tests. Most of the tests ran great. There were a few tests that
   did not work quite right, though.
  -Began working on MinGW gmakefile support.
  -Implemented custom option for specifying mingw mode (using --mingw); this is
   used to ensure -lmingw32 is specified to gcc for proper linking with
   SDL2main.
  -Had to change make_cpp.lua as part of premake in order to ensure the linker
   flags were specified before input, so that I could properly ensure the order
   of library linking. The premake in the VisualC folder is now customized.
  -Changed all of the projects' dependency orders to be logically correct, since
   gcc requires linking order to be exact.
  -Successfully built the entire project using MinGW and a generated GNU
   makefile.
  -Modified MinGW setup to statically link to libgcc so it can run independently
   of the MinGW system.
  -Successfully ran all tests with MinGW-built executables and library.
  -Setup a directory, README, and generation script for MinGW builds.
  -Updated clean action for makefiles.
  -Implemented quoted libpath and incpaths incase they have spaces.
  -DirectX and OpenGL currently not supported on MinGW due to build errors. This
   will be fixed and should be supported soon.

Changes as of 07/31/2013:
  -Implemented functions for checking whether the current system is 64bit
   per-project specification. This is similar to SDL_isos. There is a
   negated version implemented, too.
  -Implemented native and universal build platforms for the Mac OS X
   projects. This translates to x32 and x64 build targets within Xcode.
  -Modified the SDL_defines function to add table values instead of replace.
  -Corrected a mistake that was defining _WINDOWS on the Mac OS X project.
  -Changed the dependency and custom links listing functions for sdl_projects
   to prevent duplicates.
  -Upgraded the premake4.lua handling of dependency lists and custom links
   to support prevented duplicates.
  -Reimplemented OpenGL support on Mac OS X.
  -Separated frameworks on Mac OS X into proper SDL_dependency declarations
   so they are no longer hardcoded.
  -Upgraded project dependency system so that when a project is dependent
   on a static library, it inherits all of the dependencies of that project
   as well.
  -Created build scripts for i386 and x86_64 for both Xcode 3 and Xcode 4.
  -Tested all of the above (including with OpenGL and without OpenGL) on all
   tests for Xcode 3 and 4, on architecture targets i386 and x86_64.
  -Removed the old premake4 executable in Xcode.

Changes as of 07/30/2013:
  -Began investigating different architectures for Windows, MacOSX, etc.
  -Implemented functionality for specifying which platforms a project is
   supported on, so as to start providing preliminary support for multiple
   build platforms.
  -Changed function declaration requirement for dependency functions.
  -Changed the dependency function invocation to be table-based.
  -Implemented features to cleanup using dependency functions for projects and
   allowed possibility for multiple dependency functions on one project.
  -Moved invocation of dependency functions from premake4.lua to
   sdl_projects.lua.
  -Some nested statements have been cleaned up in premake4.lua due to changing
   the dependency function calling location.
  -Moved all dependency functions to a unified location for order-independent
   referencing of them. Ie, this allows SDL2 and testgl2 to both reference the
   OpenGL checker function.
  -Ensured all dependencies are invoked exactly one time even if referenced
   multiple times.
  -Implemented opengl dependencies for SDL2 so that opengl support should now be
   reenabled in the SDL project.

Changes as of 07/29/2013:
  -Implemented scripts to automatically build all of the projects in the VS2010
   and VS2012 solutions.
  -Implemented scripts to automatically perform binary compatibility testing for
   premake VS2010 and VS2012 libraries against the manual projects' test
   executables.
  -Tested binary compatibility for VS2010 and VS2012 solutions on Windows. The
   usual lack of standard output is still ocurring. The testgl2 application
   currently crashes on both, but that's because it's not linking to OpenGL
   currently. The test shouldn't actually crash, but it reports no OpenGL
   when it runs correctly. The other visual tests seem to run fine.
  -Cleaned up this README a bit, adding the rest of the points discussed with
   Gabriel.

Changes as of 07/26/2013:
  -Corrected a bug in SDL2.lua that didn't correctly define the compile-time
   defines for Mac OS X.
  -Added template configuration headers for minimal builds and Mac OS X
  -Added template config selection based on current platform, defaulting to
   minimal if on an unknown system
  -Corrected bug in sdl_gen_config.lua to allow using templates that have no
   area to paste generated tokens, thereby ignoring the tokens and just
   copying the template right into the generated header
  -Upgraded build.all.xcode4.command in the Xcode directory to give some
   information regarding how many tests were attempted to be built, how
   many passed, failed, and were skipped.
  -Added support in the clean option to correctly remove the Xcode 4 workspace
   file. It almost perfectly cleans Xcode projects now. It actually will only
   miss folders if the user goes into those folders with Finder, otherwise it
   cleans up properly right now.
  -Added support build.all.xcode3.command for Xcode 3 projects, rather than
   having to manually go into each project and build it individually.

Changes as of 07/25/2013:
  -Moved file-based operations to a separate utility sdl_file.lua file
  -Began the configuration generation system using sdl_gen_config.lua
  -Created a config folder for *config.h templates and added the
   SDL_config_windows.template.h file, omitting everything premake will add
   itself
  -Fixed a bug where the base location would have a backslash on windows in the
   final generated Lua file, where it wasn't supposed to
  -Implemented clean option for the generated header file
  -Modified SDL_config.h to include SDL_config_premake.h (generated) if the
   preprocessor value 'USING_PREMAKE_HEADER_H' is defined, which the meta-build
   system ensures it is
  -Merged winmm dependency back into the windows dependency for SDL2.lua,
   because the windows timer module depends on winmm, as well
  -Partially tested configuration system via Visual Studio 2008; Mac OS X
   projects will be broken until that side is upgraded

Changes as of 07/24/2013:
  -Updated mac os x test file to include all the new tests
  -Added script to automatically batch together all the scheme builds for
   the tests, so they don't have to be manually built through Xcode
  -Tested new tests and build environment on Xcode 4 successfully (weren't
   tested on here yet)
  -Began investigating implementing iOS Xcode projects using meta-build
   system
  -Began investigating implementing gmakefile generation support for
   GNU/Linux, Cygwin, and MinGW.

Changes as of 07/23/2013:
  -Latest changes tested on Xcode 3 and 4; test suites running as expected
  -Implemented the entire test suite and tested it in Visual Studio on Windows;
   incompatible tests will build and run, but they will fail if there are no
   appropriate devices or settings for them to run correctly; this is correct
   behavior. Tested most suites on VS2008, VS2010, and VS2012. Only testerror
   crashed.

Changes as of 07/22/2013:
  -Cleaned up the mixture of forward/back slashes in the generated LUA file. The
   only backslashes that exist are for copy commands, since they are copied as
   text into the generated projects. The rest use forward slashes, since premake
   actions handle per-system translation of directory paths.
  -Implemented SDL_isos function for projects so that they can have some control
   over certain functions where arguments or function calls changed with
   different operating systems (such as SDL_kind for SDL2 project)
  -Documented the new project functions. The documentation could be formatted a
   bit better and the arguments could be explicitly formatted.
  -Cleaned up SDL2.lua
  -Implemented project-level files and paths directives for projects, so that
   SDL_dependency isn't needed to specify files and file search paths for
   projects
  -Applied the above changes to all the project files and named a few other
   dependencies such as for SDL_main and testgl2. No projects should have
   unnamed dependencies at this point.
  -Tested the changes of the last few days on VS2008, VS2010, and VS2012. All
   the test suites run as expected.

Changes as of 07/19/2013:
  -Updated generation backend to be more concise and less like it was before;
   this also fixed the duplicate dependency function calls bug
  -Implemented config function for constants to set in a generated SDL config
   header
  -Preliminarily set the config values for the SDL2 project
  -Updated generation code so that it won't generate empty projects, which stems
   from projects in which all of its dependencies are not compatible with the
   current system
  -Updated windows automated tests batch file to work more like Xcode's shell
   command file wherein it uses a labeled batch of commands as a sort of
   procedure; it's cleaner now and it will work if some projects aren't there
   (such as if they aren't supported on that platform)
  -Separated the winmm portion of the SDL2 project from the windows portion, so
   it has its own dependence now and uses a dependency check function that's
   dependent on premake's os.findlib

Changes as of 07/18/2013:
  -Converted all projects over to the new, simpler format and tested on VS2008,
   VS2010, and VS2012
  -Corrected a mistake in the SDL2main project that always built the main file
   for windows, even on mac os x
  -Added some more features to the new project definition system to support
   project locations, custom defines, copy tables, and project dependencies
  -Moved new project definition system to a separate lua file
  -Fixed using 'copy' on windows for post-build commands and 'cp' on all
   other systems
  -Tested projects on Xcode 3; everything working correctly
  -Modified SDL2main project to use the dummy main for macosx
  -Changed the convenience scripts on macosx to .command files for the ability
   to conveniently double-click-execute them like an application or windows batch
   file 

Changes as of 07/17/2013:
  -Tested that the generated Xcode 3 projects correctly work as expected
  -Implemented a new backend system for defining projects that majorly cleans
   up the syntax and eases the process of defining projects; currently only
   tested with VS2010 on Windows.

Changes as of 07/09/2013-07/10/2013:
  -Fixed a bug that premake was causing where the mac project wouldn't execute
   any of its post-build options because premake was incorrectly generating the
   project in specific situations; the generated lua file now works around it
   correctly

Changes as of 07/08/2013:
  -Unified SDL2.lua a bit by pulling out the source commonalities (generic
   interfaces and dummy implementations) and keeping the platform-specific
   implementations separate
  -Converted absolute paths to relative paths where appropriate, so now
   the generated VS solutions (and possibly Xcode) should be more portable
  -Modified premake script to support different base locations, so now the
   Visual Studio project directory structure is built within the VisualC
   directory, and similarly for Xcode (better organization and separation)
  -Fixed a minor bug in the cleanup action for VS2008 and VS2012 solutions

Changes as of 07/05/2013:
  -Setup proper dependencies for XCode and successfully built the library
  -Ran test suites to ensure working Mac OSX binaries (64 bit, on Mac OS X 10.8
   Mountain Lion)
  -Redid the entire build environment to run out of a root premake folder,
   instead of separate premake folders for VisualC and Xcode
  -Setup convenient scripts for both Xcode and VisualC in the generic
   premake folder
  -Consolidated the premake scripts into a singular script for both targets

Changes as of 07/02/2013 & 07/03/2013:
  -Finished implementing base setup for XCode
  -Configured the premake projects for XCode (using a parallel directory tree
   for now)
  -Implemented base XCode project using premake, though it still doesn't link
   properly

Changes as of 06/30/2013 & 07/01/2013:
  -Implemented release configurations for projects
  -Began setting up environment for implementing the XCode projects

Changes as of 06/29/2013:
  -Implemented copying intra-solution project dependencies shared libraries to
   the binary folders of other projects (such as copying SDL2.dll to subsequent
   directories of applications that depend on it).
  -Fixed a bug in the testscale and testrendertarget project lua files: they
   were copying sample.bmp for usage, but they depended on both icon.bmp and
   sample.bmp.
  -Added temporary batch script to simplify the process of running through all
   the currently available tests on windows.
  -Ensured binary compatibility for using SDL2.dll built with manual solutions
   with test suite applications built with automatic premake solution. This was
   tested successfully for VS2008, VS2010, and VS2012.
  -Binary compatibility has been ensured to not currently work vice versa,
   that is, using hand-rolled test suite applications with a generated-built
   SDL2.dll shared library.

Changes as of 06/27/2013 & 06/28/2013:
  -Added premake5-dev to the repository, though it's still called premake4.exe
   and the main lua file is named similarly because it's still not officially
   premake5.
  -Setup generated project to nearly exactly match the flags of the manual
   project. Binary compatibility has been tested for SDL2.dll built with the
   manual projects against the applications built with the generated project.
   All seems to work so far. Only tested on VS2010. Much more testing to
   happen later.

Changes as of 06/24/2013 & 06/25/2013:
  -Implemented basic meta-meta building system, where premake4.lua now
   generates a lua file and executes that to generate the project, allowing
   forward compatibility for premake5
  -Began working on binary compatibility verification by testing the test
   executables built by the manual VS solution using the SDL2.dll built
   from the premake solution. There are some issues, but nothing crashes
   that didn't crash before.

Changes as of 06/21/2013:
  -Fixed multiple linker problem by adding an exclusion filter for
   src/thread/generic so that the duplicate objects wouldn't be doubly linked
  -Above linker fix also fixed the execution of all VS2008 project builds. All
   the projects run the same in terms of success or failure.
  -Added rudimentary clean action to premake files
  -Organized the project and build directory structures for the VS projects
   similar to that of the manually-built VS projects (though they no longer run
   out of the box, since SDL2.dll is now in a different directory; soon to be
   fixed)

Changes as of 06/20/2013:
  -Implemented an optional copy table for projects that allow automatic copying
   of each file in the copy table from the source directory to the destination
   directory. These copy strings can actually be relative paths, as they will
   be made absolute and normalized in the handler code (but not validated!)
  -Implemented custom, per-project defines (needed for testgl2)
  -Fixed many warnings from VS2008 project by making sure shared libraries
   weren't being linked into shared library projects (such as SDLtest).
  -Tested all builds on VS2008, VS2010, and VS2012. Everything works as expected
   on the latter two.

Changes as of 06/19/2013:
  -Implemented all of the currently supported projects in the hand-built
   Visual Studio solution, which successful building
  -Updated the dependency system to handle cross-linking of projects, such as
   the testing suite applications being dependent on SDL2 and SDL2main (and
   some even on SDL2test, which further emphasizes the capabilities)
  -Organized the folder structure to be less cluttered than before: only
   premake4.lua needs to exist at the root directory
  -Hardcoded the build path for all the projects to ./bin/Debug
  -Implemented support for adding input library links from dependency
   resolutions (for opengl in testgl2 in this case)

Changes as of 06/18/2013:
  -Implemented a dependency for handling complex building scenarios, though
   it's only very simple right now
  -Implemented utility depends.lua for handling dependency searching on windows
  -Ported over hardcoded solution for SDL2 library to using dependency tree and
   a separate lua file
  -Implemented SDL2main static library, which involved more flexibility in the
   existing system

Initial:
  -Built premake 4 binary and pasted it into secluded directory in SDL's build
   folder for Visual Studio
  -Created the initial premake script which recreated the SDL2.dll shared binary
   library, as based on the manually-created SDL project