premake/changelog
changeset 7925 f090a47eb7f7
equal deleted inserted replaced
7924:fcb86d323770 7925:f090a47eb7f7
       
     1 This file contains a log of most of the changes and evolutions of the meta-build
       
     2 system for Simple DirectMedia Layer 2.0 and related projects.
       
     3 
       
     4 Changes as of 09/18/2013:
       
     5   -Enabled executable bits on the Mac OS X build-scripts command files.
       
     6   -Replaced the Xcode directory structure with two folders for Xcode 3
       
     7    and Xcode 4. It now looks like the VisualC folder, wherein there is
       
     8    premake/Xcode/Xcode3 and premake/Xcode/Xcode4 default workspaces.
       
     9   -Updated premake/Xcode/build-scripts/xcode3.command and the
       
    10    xcode4.command files to properly generate the workspaces in the above
       
    11    mentioned directories.
       
    12   -Regenerated the Visual Studio projects to push the 'current working
       
    13    directory' fix to the repository.
       
    14   -Verified the projects are building and running properly across all platforms.
       
    15 
       
    16 Changes as of 09/13/2013-09/14/2013:
       
    17   -Analyzed structure and existing problems to be fixed in the system.
       
    18   -Updated the OpenGL dependency to not include "C:\Windows\System32" since that
       
    19    is implicitly included for any compiler building the project on Windows
       
    20    anyway.
       
    21   -Removed the build.all.vs2012.bat script since it hasn't been working and
       
    22    trying to get it to work or figure out why it doesn't is beyond the scope of
       
    23    the project at this point.
       
    24   -The above also applies to check.bin.compatibility.vs2010.bat.
       
    25   -Updated typo in run.tests.bat to make testchessboard run properly (it was
       
    26    looking for testdrawchessboard instead).
       
    27   -Corrected OpenGL dependency to properly look for "libGL" instead of
       
    28    "OpenGL32" on Linux.
       
    29   -Updated OpenGL dependency to link to "libGL" instead of "OpenGL32" on Linux.
       
    30   -Updated OpenGL dependency to properly notify the dependency system whether
       
    31    OpenGL support has been found or not (it was always indicating OpenGL
       
    32    support accidentally).
       
    33   -Modified the vs2008/vs2010/vs2012 generation scripts to generate to specific
       
    34    subfolders (ie, ./VS2008, etc.) so they can all be generated at once. Updated
       
    35    the clean script appropriately. Originally, it was desired to generate
       
    36    something more like SDL_VS2008.sln, etc., but premake has troubles correcting
       
    37    interproject dependencies without renaming the binary files to similar names
       
    38    (like SDL_main_VS2008.lib), which seemed much worse than just separating by
       
    39    directory.
       
    40   -Altered the working directories for the Visual Studio debugger to run from
       
    41    the path of the binary for each test application, rather than from the
       
    42    project directory. This allows the tests to utilize any locally copied
       
    43    resource files from both inside and outside Visual Studio.
       
    44   -Added execution bits to Linux build scripts.
       
    45   -Clarified the second paragraph in README-windows.txt.
       
    46   -Fixed typos in README.txt and added a plethora of code examples and
       
    47    explanations to demonstrate how to add on to the current system.
       
    48   -Regenerated default projects for MinGW, Linux, and Windows (this time serving
       
    49    VS2008, VS2010, and VS2012).
       
    50 
       
    51 Changes as of 08/30/2013:
       
    52   -Updated README-windows.txt, README-macosx.txt, and README-mingw.txt.
       
    53   -Created README-linux.txt, README-ios.txt, README-linux.txt.
       
    54   -Modified premake4.lua to not generate any files if simply printing help text.
       
    55   -Created the entire primary README.txt help file.
       
    56   -Updated the automated test command file for OS X to randomly select a file
       
    57    for testshape, just like the windows version. However, there is an issue
       
    58    with it so that test is currently commented out.
       
    59   -Updated all 4 OS X build scripts to automatically build all of the generated
       
    60    test projects, rather than maintaining a list.
       
    61   -Generated an initial Xcode 4 workspace for iOS.
       
    62   -Generated an initial Xcode 4 workspace for Mac OS X.
       
    63   -Updated a bug in the windows automated test batch file within the label for
       
    64    handling the specially randomized arguments passed to an application, such as
       
    65    for testshape (it was hardcoded for testshape, rather than using a variable
       
    66    as intended).
       
    67   -Fixed a typo in the windows automated test batch file wherein it was not able
       
    68    to run the chess board application correctly.
       
    69   -Updated the automated test bash script for Linux targets to run the new
       
    70    chessboard test and to randomly pick an image to send to testshape. It runs
       
    71    testresample and testatomic now, too.
       
    72 
       
    73 Changes as of 08/28/2013 & 08/29/2013:
       
    74   -Removed TODO.txt. It's no longer necessary; a lot of what was in it is no
       
    75    longer relevant, completed, or replaced by something different and thus
       
    76    implemented in some variety.
       
    77   -Stopped the premake engine from executing the project definitions if simply
       
    78    executing the help procedure, listing available options and acitons for the
       
    79    target premake file.
       
    80   -Modified the dependency function handling so that the function names are case
       
    81    insensitive both for registering functions and checking or testing them.
       
    82   -Created a function in sdl_projects.lua that can be used to retrieve all of
       
    83    the known names of the dependencies registered with the system at that point.
       
    84   -Implemented automated generation of options to forcibly enable certain
       
    85    dependencies, even if they are explicitly defined to not work on a given
       
    86    platform or if they simply cannot be found. This is useful, for instance, to
       
    87    force on the DirectX dependency for MinGW if the user has successfully setup
       
    88    the environment to work with it.
       
    89   -Modified the behavior of the dependency functions to provide the libraries,
       
    90    library paths, and include paths for platforms that don't support that
       
    91    dependency, allowing the override command line options to properly work on
       
    92    those platforms for those dependencies (again, the DirectX dependency on
       
    93    MinGW comes to mind).
       
    94   -Cleaned up premake4.lua.
       
    95   -Removed hardcoded links in Linux from premake4.lua to its proper locations in
       
    96    SDL2.lua and dependency functions.
       
    97   -Renamed the 'reset_links' function in sdl_check_compile.lua to be
       
    98    'reset_link_flags' since it fits the functionality better.
       
    99   -Corrected a mistake in 'check_include_directory' in sdl_check_compile.lua
       
   100    where it simply checked for files existing in a directory, rather than
       
   101    specifically header files.
       
   102   -Removed the 'projects' table declaration in premake4.lua, since its defined
       
   103    in sdl_projects.lua anyway.
       
   104   -Removed directive for copying the Info.plist file from the Xcode-iOS
       
   105    directory for the testsprite2.lua project, since it makes no sense.
       
   106   -Modified 'addConfig' in sdl_gen_config.lua to be extra cautious about
       
   107    ensuring that keys and values in the supplied config table are, indeed,
       
   108    strings as they need to be for concatenation.
       
   109   -Added documentation for premake4.lua, sdl_check_compile.lua,
       
   110    sdl_dependency_checkers.lua, sdl_depends.lua, sdl_file.lua,
       
   111    sdl_gen_config.lua, sdl_string.lua, and sdl_projects.lua.
       
   112   -Implemented file headers for every single project definition file.
       
   113   -Significantly cleaned up the commenting in SDL2.lua and added a file header
       
   114    description.
       
   115   -Added a print line in premake4.lua to indicate when the generation of the
       
   116    premake Lua file begins.
       
   117   -Added initial sample projects for VS2010, Linux make, and MinGW make.
       
   118 
       
   119 Changes as of 08/27/2013:
       
   120   -Updated the Linux premake executable based on all the patches applied to
       
   121    premake thus far, as documented in the patches folder.
       
   122   -Updated the Linux definition of SDL2.lua to have all of the subsequent source
       
   123    files associated with each dependency to be within that dependency using the
       
   124    SDL_paths directive.
       
   125   -Implemented a function for modifying the search path for libraries during
       
   126    the various compiler test functions in sdl_check_compile.lua.
       
   127   -sdl_check_compile.lua: implemented a function for checking wether a library
       
   128    exists using os.findlib, adding its directory to the library path, then
       
   129    using check_library_exists to see if it can be linked to properly.
       
   130   -sdl_check_compile.lua: implemented check_include_directory and
       
   131    check_include_directories functions to see whether specified directories
       
   132    exist and contains .h files. This could be modified later on for other types
       
   133    of files that would exist in include directories (such as hpp, hxx, etc.).
       
   134   -sdl_projects.lua: implemented a function that checks whether a dependency
       
   135    exists and was found (the function must have been executed already). This is
       
   136    used by many of the dependencies for Linux (specifically that most of its
       
   137    dependencies depend on DLOpen for shared library binding).
       
   138   -Modified the dependency order for Linux in SDL2.lua so that DLOpen is listed
       
   139    first, as to help the dependency resolution process.
       
   140   -Corrected the link order in sdl_check_compile.lua, fixing the
       
   141    check_library_exists, check_library_exists_multiple, and
       
   142    check_library_exists_lookup functions.
       
   143   -Corrected the size definitions for SDL_config_linux.template.h so that it
       
   144    will work cross-platform.
       
   145   -Implemented better dependency support for the following Linux dependencies:
       
   146    DLOpen, ALSA, PulseAudio, ESD, NAS, OSS, and X11. The dependency code is
       
   147    based on CMake's definitions for those dependencies. The dependency function
       
   148    for D-Bus is improved.
       
   149   -Removed the commented code for the Windows SDK in the
       
   150    sdl_dependency_checkers.lua file.
       
   151   -Re-enabled the ifndef checks for the generate premake header file.
       
   152   -Moved the clean action in premake4.lua to before the project definitions, so
       
   153    that cleaning is immediate and doesn't have to wait on unnecessary dependency
       
   154    checks.
       
   155   -Renamed the macro defining whether to use the premake config header from
       
   156    USING_PREMAKE_HEADER_H to USING_PREMAKE_CONFIG_H, which involved changes in
       
   157    premake4.lua and include/SDL_config.h in the root source tree.
       
   158   -Corrected a mistake in the OpenGL dependency function that would mishandle
       
   159    forbidding desktop GL functionality on iOS.
       
   160   -Corrected a bug that would properly setup MinGW targets to work with OpenGL,
       
   161    but it would not link to WGL so there was no way for SDL to actually load the
       
   162    OpenGL library and attach it to a window.
       
   163   -Blocked support for OpenGL on Cygwin.
       
   164   -Blocked support for testfilesystem on Cygwin due to lack of support, though
       
   165    unix file system support is now enabled on Cygwin. The test accesses some
       
   166    windows functions that do not link properly in the Cygwin environment.
       
   167 
       
   168 Changes as of 08/26/2013:
       
   169   -Implemented the testdrawchessboard test application.
       
   170   -Disabled the path-searching functionality for the DirectX dependency so it
       
   171    would be significantly sped up. It makes the assumption that DirectX is only
       
   172    installed if its DXSDK_DIR variable is set. The code is still there if users
       
   173    wish to implement the functionality again.
       
   174   -Modified the clean action to remove the 'ipch' directory since it sometimes
       
   175    shows up in various Visual Studio solution builds.
       
   176   -Fixed a bug in the post-build copy step that wouldn't correctly create nested
       
   177    directories during the copy stage in Visual Studio on Windows targets. This
       
   178    reflects an earlier bug fix that would stop the non-nested files from being
       
   179    copied correctly; both work now.
       
   180   -Modified the testshape project to copy all of the shape images instead of the
       
   181    sample image.
       
   182   -Updated the automated test batch file on Windows to randomly pick one of the
       
   183    intended shapes while running testshape. It also runs testshape three times,
       
   184    to demonstrate both the randomness and adequate testing of testshape over
       
   185    multiple shapes.
       
   186   -Changed the resample test to copy the sample.wav.
       
   187   -Updated the 'pass' label in the windows run.tests.bat file to accept a
       
   188    variable-number of arguments to be passed to the executable.
       
   189   -Re-enabeld the testresample test to try and resample sample.wav at 44.1Khz.
       
   190   -Updated testoverlay to copy moose.dat, since it depends on it now.
       
   191   -Updated testshader to properly depend on OpenGL and link to it, as well as
       
   192    copy the file it needs (icon.bmp).
       
   193   -Moved the dependency checker file over to the util directory.
       
   194   -Updated premake4.lua to recursively execute all the files in the projects
       
   195    folder, so they don't have to be hardcoded into premake4.lua and can be
       
   196    organized in whichever way desired (so long as their internal paths are
       
   197    correct).
       
   198   -Implemented text-based file writing in the sdl_file.lua utility file, as to
       
   199    prep for going around generating a lua file and loading the generated file
       
   200    from memory, instead.
       
   201   -Updated all of the current SDL dependency functions to properly check for
       
   202    MinGW and Cygwin support.
       
   203   -Fixed a few bugs in premake4.lua that would break Cygwin and MinGW support
       
   204    due to improper checking.
       
   205   -Fixed bugs that made it tricky to do wildcard copying on *nix systems (needed
       
   206    by testshape). Tested to work on MinGW and Windows.
       
   207 
       
   208 Changes as of 08/23/2013:
       
   209   -Removed hardcoded definitions for the Linux config template.
       
   210   -Moved definitions over to SDL2.lua.
       
   211   -Added definition for enabling the file system module on Linux.
       
   212   -Separated the OpenGL dependency into one for Windows (WGL) and Linux (GLX).
       
   213    The core dependency is still there, but the windowing part is separate.
       
   214   -Separated the library-based dependencies from the Linux implementation into
       
   215    a series of dependency functions.
       
   216   -Changed the dependency function to return a named table instead of variable
       
   217    returns.
       
   218 
       
   219 Changes as of 08/22/2013:
       
   220   -Rearranged a few more things in the top 'dofile' section in premake4.lua.
       
   221   -Reverted accidental changs to include/SDL_config.h which rendered it specific
       
   222    to a single platform, per cmake generation. All building was broken due to
       
   223    this accidental change, but it should be fixed after this commit.
       
   224   -Merged repository with the latest version from live SDL repository.
       
   225   -Implemented new file system source tree on Windows.
       
   226   -Implemented file system test.
       
   227   -Removed files accidentally committed from the Linux directory.
       
   228   -Implemented tests for the file system test for windows and Mac OS X.
       
   229   -Implemented cocoa file system support.
       
   230   -Implemented cocoa filesystem support on iOS.
       
   231   -Fixed a bug that was leading to the Xcode-iOS trying to build the
       
   232    OpenGL renderer on iOS, which isn't supported.
       
   233 
       
   234 Changes as of 08/21/2013:
       
   235   -Changed names of generated files in check_compile.lua to more readable names,
       
   236    within the format "premakecheck.*"
       
   237   -Updated the check build function in check_compile.lua to support executing
       
   238    the build and redirecting all output to "./premakecheck.stdout".
       
   239   -Implemented a function for checking the size of a given type by generating a
       
   240    program that prints it to the screen, then reads the result from a file and
       
   241    converts it to an integer. This function is dependent on the existence of
       
   242    stdio.h and the printf function.
       
   243   -Tested the size function on Linux using various types.
       
   244   -Clumped the "dofile" directives for all utility scripts together in
       
   245    premake4.lua.
       
   246   -Removed the *Mode variables for MinGW, Cygwin, and iOS. All checking for
       
   247    these systems should be done using SDL_getos().
       
   248   -Updated SDL_getos() to check the _OPTIONS table directly.
       
   249   -From depends.lua, moved dirpathsearch and getenvpath to sdl_file.lua.
       
   250   -Created a sdl_string.lua file to contain various string-related functions.
       
   251   -From depends.lua, moved indexOf and explode to sdl_string.lua.
       
   252   -From premake4.lua, moved implode to sdl_string.lua.
       
   253   -Renamed depends.lua to sdl_depends.lua. Indicated that the file is
       
   254    particularly for windows dependency testing.
       
   255   -Rename check_compile.lua to sdl_check_compile.lua.
       
   256   -Updated premake4.lua to reflect file changes and modified the order of doing
       
   257    the util files, since their interdependencies have changed slightly.
       
   258   -Added sdl_string.lua to the list of utility files done in the beginning of
       
   259    premake4.lua.
       
   260   -Updated header in every file to reflect that I did not create premake (old
       
   261    wording was a bit vague).
       
   262   -Added header to new files.
       
   263 
       
   264 Changes as of 08/20/2013:
       
   265   -Fixed logical mistakes in the check build sources function.
       
   266   -Added a check_function_exists function.
       
   267   -Whenever an include header or headers are checked, if they are found
       
   268    and build properly then they will be added to an internal list that
       
   269    will be prepended whenever doing future check_function_exists and
       
   270    check_library_exists calls.
       
   271   -Added a function which will check if a function exists in any of a set
       
   272    of libraries, rather than just one.
       
   273   -Added support for linking libraries for the check_library_exists
       
   274    function.
       
   275   -Silenced building and linking commands.
       
   276   -Incorporated check_compile.lua in premake4.lua.
       
   277   -Tested the various functions with X11, DLOpen, and ALSA dependency
       
   278    compatibility. some future tweaking may be necessary, but the
       
   279    dependency checking happening in cmake should be reproducable using
       
   280    these functions with some tweaking of the implementation itself.
       
   281 
       
   282 Changes as of 08/16/2013:
       
   283   -Updated Cygwin build to foster a very trimmed down version of the Linux
       
   284    build, with no audio, video, haptic, joystick, or input support.
       
   285   -Cygwin uses a shared library. Read SDL2.lua for more information.
       
   286   -Slimmed and trimmed the cygwin config template to its bare minimum.
       
   287   -Implemented the configurations needed for Cygwin in SDL2.lua.
       
   288   -Updated many projects to be excluded if building on Cygwin, since many of
       
   289    them are incompatible without the aforementioned support.
       
   290   -Implemented a Cygwin directory and separate build-scripts, working similarly
       
   291    to that of MinGW.
       
   292   -Implemented a check_compile.lua utility file emulating a lot of the same
       
   293    functions used in cmake to check for dependencies and various libraries.
       
   294    These will be added to a Linux-specific dependency checker function later on,
       
   295    allowing all the Linux dependencies to follow a similar routine to that of
       
   296    autotools and cmake.
       
   297 
       
   298 Changes as of 08/15/2013:
       
   299   -Created a separate template configuration file for Cygwin.
       
   300   -Created separate SDL2 project definitions for Cygwin, alongside Linux.
       
   301   -Added various other side definitions for Cygwin support, though it is still
       
   302    not building correctly due to some misunderstandings with library support.
       
   303   -Patched premake to support custom source trees for Xcode projects to fix
       
   304    issues finding the correct iOS frameworks in Xcode.
       
   305   -Updated all Win32 premake executables containing the patch.
       
   306   -Updated executables for Xcode and Xcode-iOS for above patch.
       
   307   -Updated SDL2.lua for iOS to use the SDKROOT source tree for the frameworks,
       
   308    as per the new patch.
       
   309   -Successfully built and ran all the iOS demos.
       
   310 
       
   311 Changes as of 08/14/2013:
       
   312   -Fixed a mistake in the windows-side copy command that was changed yesterday;
       
   313    without parentheses it was inhibiting the ability to copy the SDL2.dll file
       
   314    to the built directories if the directories already existed; this has been
       
   315    fixed.
       
   316   -Reintegrated MinGW support on Windows with a few slight changes to various
       
   317    OS dependencies, since "MinGW" is now considered the target OS, versus
       
   318    Windows. This involved changes in SDL2.lua, SDL2main.lua, testnative.lua.
       
   319   -Reenabled both debug and release configurations.
       
   320   -Separated post-build commands to being separate for debug and release.
       
   321   -Setup temporary hardcoded linkoptions for MinGW on the release configuration.
       
   322   -Verified both configurations build correctly for VS2010 and MinGW.
       
   323   -Updated the premake executables for VS and MinGW to reflect the recent
       
   324    patch.
       
   325   -Updated premake executables for Xcode and Xcode-iOS to contain features
       
   326    added from the latest patch.
       
   327   -Verified working debug/release builds on Xcode, though the target
       
   328    directories for the binaries clash, so they override each other. This
       
   329    will be fixed in the future as the system starts to get cleaned up.
       
   330 
       
   331 Changes as of 08/13/2013:
       
   332   -Implemented special SDL_getos function which gets the current build
       
   333    platform, taking into consideration Cygwin, iOS, and MinGW modes.
       
   334    Although it's invalid to consider Cygwin and MinGW operating systems,
       
   335    for all intensive purposes they are considered separate for the build
       
   336    system. This may be renamed later on.
       
   337   -Updated OS-compatibility functions for SDL projects to use the new
       
   338    SDL_getos function, so they can be dependent on Cygwin, MinGW, iOS, etc.
       
   339   -Removed the iOS dependency function and updated the iOS portion of the
       
   340    SDL2 project to depend on iOS rather than Mac OS X.
       
   341   -Changed the explode function in depends.lua to be part of the string
       
   342    table.
       
   343   -Modified SDL_isos to accept patterns, such as "macosx|ios".
       
   344   -Updated SDL2 and SDL2main to be compatible on Mac OS X and iOS
       
   345    simultaneously.
       
   346   -Updated SDL_os to work with the patterns, as well, by merging the
       
   347    functionalities of SDL_os and SDL_isos to a local function.
       
   348   -Updated SDL_notos similarly.
       
   349   -Updated SDL_os to work on projects as well as dependencies, and updated
       
   350    premake4.lua to check for overall project compatibility.
       
   351   -Implemented SDL_notos to inhibit compatibility for projects that simply
       
   352    cannot work on specific platforms.
       
   353   -Added exclusions for every single current test project to not be added
       
   354    to the iOS solution, since none of them are designed to run on iOS.
       
   355   -Removed hacked override for info.plist and properly implemented plist
       
   356    inclusion for Xcode projects. Premake already supported this well.
       
   357   -Changed a few references in premake4.lua of os.get to SDL_getos to
       
   358    avoid some of the hardcoding that was going on in various places.
       
   359   -Advanced the SDL_copy feature for project resources to being able to
       
   360    copy files to more complicated destination paths, with scripted support
       
   361    to create the destination directories if they do not yet exist during
       
   362    post-build execution.
       
   363   -Patched premake to allow BMPamd WAV files to be considered as assets
       
   364    for Xcode projects.
       
   365   -Updated the premake executables for Xcode and Xcode-iOS, respectively.
       
   366   -Successfully ported, built, and ran all working Xcode-iOS demos using
       
   367    project files generated by the meta-build system for those demos. There
       
   368    are a few hiccups that need to be ironed out yet, but overall it's a
       
   369    hopeful step forward to decent iOS support.
       
   370   -Upgraded the clean action to also delete the demos folder for iOS.
       
   371   -Unhardcoded a lot of the iOS stuff added in previous commits, which
       
   372    included switching a lot more references to os.get() to SDL_getos()
       
   373    in premake4.lua.
       
   374   -Preliminarily fixed some potential bugs stemming from SDL_getos()
       
   375    versus os.get().
       
   376   -Moved hardcoded iOS links from premake4.lua to their correct location
       
   377    in SDL2.lua.
       
   378   -Reinstated correct platforms directives, versus hardcoded iOS, etc.
       
   379   -Double checked Xcode projects still are generated, built, and run
       
   380    properly.
       
   381   -Updated the patches listing and files portion appropriately for the
       
   382    aforementioned premake modification.
       
   383 
       
   384 Changes as of 08/09/2013:
       
   385   -More bruteforcing on trying to hack premake into generating a correct
       
   386    iOS-compatible Xcode project.
       
   387   -Added code to convert all ConsoleApps to WindowedApps in iOS mode
       
   388    because ConsoleApps translate to 'tool' on Mac OS X and tools are
       
   389    not supported on iOS.
       
   390   -Forcefully implemented a list of links taken from the Demos SDL
       
   391    iOS Xcode project for all generated SDL2 projects so they can
       
   392    correctly link to the iOS system.
       
   393   -Successfully built SDL2 and tests for iOS, though the test projects will
       
   394    not run correctly on iOS due to not being built for iOS.
       
   395   -Fixed a bug in the testgles project where it was not linking to SDL2test,
       
   396    on which it was dependent.
       
   397 
       
   398 Changes as of 08/08/2013:
       
   399   -Implemented template header for iOS configurations.
       
   400   -Successfully built SDL2 library for iOS on Xcode.
       
   401   -Implemented configuration for iOS similar to that of Cygwin and MinGW.
       
   402   -Implemented command-line option for selecting iOS mode on Mac OS X.
       
   403   -Currently, iOS projects will have some issues regarding correct
       
   404    project types, so building and running are a bit off yet for iOS.
       
   405   -Added a new folder for iOS generation.
       
   406   -Added scripts for iOS generation and such.
       
   407   -Added exclusion for the OpenGL dependency checker for always failing
       
   408    on iOS, since iOS uses OpenGL ES 1.1/2.0, not desktop GL.
       
   409   -Fixed a bug in sdl_projects.lua that led to excluded dependency
       
   410    function calls to give a false positive if they lead to invoking
       
   411    the function rather than using a cached result.
       
   412 
       
   413 Changes as of 08/07/2013:
       
   414   -Created a fork for premake-stable to try and implement some of the necessary
       
   415    changes in order to support many new features to the meta-build system.
       
   416   -Created a directory for patches as part of the meta-build system. This may be
       
   417    removed later on.
       
   418   -Restored linking to MinGW32 in MinGW mode after temporarily removing it and
       
   419    forgetting to restore it.
       
   420   -Submitted a ticket and patch to premake for fixing the linker order that
       
   421    prevented proper linking to SDL2main on the MinGW project.
       
   422   -Created a manifest of patches made to premake needed for MinGW.
       
   423   -Added a patch for adding iOS support on Xcode, though currently untested.
       
   424   -Updated all Mac OS X, Windows, and MinGW binaries to reflect the above
       
   425    patches.
       
   426 
       
   427 Changes as of 08/06/2013:
       
   428   -Corrected a mistake in the Linux template config header that was preventing
       
   429    it from being built on Linux. It was using the same header guard as
       
   430    SDL_config.h, rendering it completely blank during compile time.
       
   431   -Added a dependency function for checking for D-Bus support on Linux.
       
   432   -Implemented a summary implementation for the Linux project in SDL2.lua,
       
   433    making use of the D-Bus dependency function.
       
   434   -Added temporary global links in premake4.lua for all projects on Linux.
       
   435   -Successfully built SDL2.lua on 64-bit Linux Mint 15.
       
   436   -Updated the testnative test project to have a Linux dependency, binding to
       
   437    testnativex11.c.
       
   438   -Implemented an X11 dependency function for testnative and related projects,
       
   439    though only testnative currently uses it.
       
   440   -Had to switch over to using a static library instead of a shared library on
       
   441    Linux for now, because Linux requires the end executable to be aware of
       
   442    where the shared library is, and we have no way currently to generate any
       
   443    sort of install rule for the generated SDL2 makefile. Premake will have to
       
   444    be patched to proceed on that route.
       
   445   -Successfully built all test projects on 64-bit Linux Mint 15.
       
   446   -Added a shell script to automatically run through the compatible tests in
       
   447    Linux/build-scripts, similar to those of the other platforms.
       
   448   -Successfully ran through many of the tests, though without OpenGL support.
       
   449   -Added clean shell script for Linux targets.
       
   450 
       
   451 Changes as of 08/05/2013:
       
   452   -Implemented global flags for checking if the current premake system is
       
   453    targeting MinGW or Cygwin.
       
   454   -Corrected previous checks that were directly using _OPTIONS to using the
       
   455    MinGWMode flag, instead.
       
   456   -Corrected typos where I was misspelling 'targeted' as 'targetted'
       
   457   -Moved the options declarations a bit earlier in premake4.lua.
       
   458   -Corrected a mistake in the clean batch file for MinGW where it wasn't
       
   459    actually cleaning in MinGW mode.
       
   460   -Started working on a Cygwin implementation.
       
   461   -Started working on a Linux implementation (using Linux Mint 15).
       
   462   -Setup a basic SDL_config_linux.template.h based on a SDL_config.h production
       
   463    on 64bit Linux Mint 15 using the configure script.
       
   464   -Setup the Linux directory and a basic build script. The system completely
       
   465    does not build at this point, it's simply a step in the right direction.
       
   466   -Fixed a bug in the testnative project where it was trying to build the X11
       
   467    implementation on Mac OS X instead of the cocoa implementation. The test
       
   468    now builds and runs correctly on Mac OS X.
       
   469 
       
   470 Changes as of 08/02/2013:
       
   471   -Actually added a README file for MinGW.
       
   472   -Changed all the README files to be named similar to those in the top level
       
   473    directory.
       
   474   -Updated the READMEs for more accurate and up-to-date information.
       
   475   -Split this primary README.txt into three files: README.txt, TODO.txt, and
       
   476    changelog.
       
   477   -Updated the depends.lua file to automatically fail on the windows dependency
       
   478    search if the current OS is not windows and corrected a bug that would result
       
   479    in an infinite loop if the main search path provided is empty but not nil.
       
   480   -Implemented a utility function in depends.lua for joining together a series
       
   481    of evaluated environmental variables, taking into consideration of they do
       
   482    not exist. This function is cross-platform.
       
   483   -Fixed a bug where the recently added code for surrounding paths with spaces
       
   484    in quotes would lead to premake placing a "../" before the path. Besides the
       
   485    convention of using double quotes is not universal, this bug existed both
       
   486    with Visual Studio and MinGW gmakefiles. The code has been completely
       
   487    removed, as it was found unnecessary.
       
   488   -Modified DirectX dependency function to fail if targeting MinGW.
       
   489   -After fully testing support for MinGW, I found there were a few differences
       
   490    in execution between that and VS builds (without DirectX), one of which is
       
   491    torturethread crashing on MinGW builds.
       
   492   -Changed testshape.lua to copy sample.bmp and changed the run test scripts
       
   493    to use the local sample.bmp as the shape for the window. This was just to
       
   494    make the built environment independent of the top-level SDL directory.
       
   495   -Changed the test run scripts to properly run the semaphore test.
       
   496   -Edited the build scripts for Visual Studio to parallelize builds when
       
   497    possible.
       
   498   -Moved build scripts for VS and MinGW projects into respective build-scripts
       
   499    folders, similar to the top level SDL directory. Tested all the tests for
       
   500    builds using VS2008, VS2010, VS2012, and MinGW.
       
   501   -Moved the build scripts for Xcode 3 and 4 to their own build-scripts folder.
       
   502   -Updated the build scripts for Mac OS X to run the semaphore test.
       
   503   -Tested the build environment and tests with Xcode 3 and 4 with architectures
       
   504    i386 and x86_64.
       
   505 
       
   506 Changes as of 08/01/2013:
       
   507   -Implemented the SDL_notdepfunc function in sdl_projects.lua so dependencies
       
   508    can depend on the absence of a dependency. For example, the haptic and
       
   509    joystick systems have dummy systems that cannot be built alongside the Dinput
       
   510    implementations, so they have to be added only in the absence of DirectX.
       
   511   -Implement a dependency for handling the situation where DirectX is not found
       
   512    on the windows platform.
       
   513   -Tested SDL and its tests without DirectX support. Properly built SDL and ran
       
   514    through the tests. Most of the tests ran great. There were a few tests that
       
   515    did not work quite right, though.
       
   516   -Began working on MinGW gmakefile support.
       
   517   -Implemented custom option for specifying mingw mode (using --mingw); this is
       
   518    used to ensure -lmingw32 is specified to gcc for proper linking with
       
   519    SDL2main.
       
   520   -Had to change make_cpp.lua as part of premake in order to ensure the linker
       
   521    flags were specified before input, so that I could properly ensure the order
       
   522    of library linking. The premake in the VisualC folder is now customized.
       
   523   -Changed all of the projects' dependency orders to be logically correct, since
       
   524    gcc requires linking order to be exact.
       
   525   -Successfully built the entire project using MinGW and a generated GNU
       
   526    makefile.
       
   527   -Modified MinGW setup to statically link to libgcc so it can run independently
       
   528    of the MinGW system.
       
   529   -Successfully ran all tests with MinGW-built executables and library.
       
   530   -Setup a directory, README, and generation script for MinGW builds.
       
   531   -Updated clean action for makefiles.
       
   532   -Implemented quoted libpath and incpaths incase they have spaces.
       
   533   -DirectX and OpenGL currently not supported on MinGW due to build errors. This
       
   534    will be fixed and should be supported soon.
       
   535 
       
   536 Changes as of 07/31/2013:
       
   537   -Implemented functions for checking whether the current system is 64bit
       
   538    per-project specification. This is similar to SDL_isos. There is a
       
   539    negated version implemented, too.
       
   540   -Implemented native and universal build platforms for the Mac OS X
       
   541    projects. This translates to x32 and x64 build targets within Xcode.
       
   542   -Modified the SDL_defines function to add table values instead of replace.
       
   543   -Corrected a mistake that was defining _WINDOWS on the Mac OS X project.
       
   544   -Changed the dependency and custom links listing functions for sdl_projects
       
   545    to prevent duplicates.
       
   546   -Upgraded the premake4.lua handling of dependency lists and custom links
       
   547    to support prevented duplicates.
       
   548   -Reimplemented OpenGL support on Mac OS X.
       
   549   -Separated frameworks on Mac OS X into proper SDL_dependency declarations
       
   550    so they are no longer hardcoded.
       
   551   -Upgraded project dependency system so that when a project is dependent
       
   552    on a static library, it inherits all of the dependencies of that project
       
   553    as well.
       
   554   -Created build scripts for i386 and x86_64 for both Xcode 3 and Xcode 4.
       
   555   -Tested all of the above (including with OpenGL and without OpenGL) on all
       
   556    tests for Xcode 3 and 4, on architecture targets i386 and x86_64.
       
   557   -Removed the old premake4 executable in Xcode.
       
   558 
       
   559 Changes as of 07/30/2013:
       
   560   -Began investigating different architectures for Windows, MacOSX, etc.
       
   561   -Implemented functionality for specifying which platforms a project is
       
   562    supported on, so as to start providing preliminary support for multiple
       
   563    build platforms.
       
   564   -Changed function declaration requirement for dependency functions.
       
   565   -Changed the dependency function invocation to be table-based.
       
   566   -Implemented features to cleanup using dependency functions for projects and
       
   567    allowed possibility for multiple dependency functions on one project.
       
   568   -Moved invocation of dependency functions from premake4.lua to
       
   569    sdl_projects.lua.
       
   570   -Some nested statements have been cleaned up in premake4.lua due to changing
       
   571    the dependency function calling location.
       
   572   -Moved all dependency functions to a unified location for order-independent
       
   573    referencing of them. Ie, this allows SDL2 and testgl2 to both reference the
       
   574    OpenGL checker function.
       
   575   -Ensured all dependencies are invoked exactly one time even if referenced
       
   576    multiple times.
       
   577   -Implemented opengl dependencies for SDL2 so that opengl support should now be
       
   578    reenabled in the SDL project.
       
   579 
       
   580 Changes as of 07/29/2013:
       
   581   -Implemented scripts to automatically build all of the projects in the VS2010
       
   582    and VS2012 solutions.
       
   583   -Implemented scripts to automatically perform binary compatibility testing for
       
   584    premake VS2010 and VS2012 libraries against the manual projects' test
       
   585    executables.
       
   586   -Tested binary compatibility for VS2010 and VS2012 solutions on Windows. The
       
   587    usual lack of standard output is still ocurring. The testgl2 application
       
   588    currently crashes on both, but that's because it's not linking to OpenGL
       
   589    currently. The test shouldn't actually crash, but it reports no OpenGL
       
   590    when it runs correctly. The other visual tests seem to run fine.
       
   591   -Cleaned up this README a bit, adding the rest of the points discussed with
       
   592    Gabriel.
       
   593 
       
   594 Changes as of 07/26/2013:
       
   595   -Corrected a bug in SDL2.lua that didn't correctly define the compile-time
       
   596    defines for Mac OS X.
       
   597   -Added template configuration headers for minimal builds and Mac OS X
       
   598   -Added template config selection based on current platform, defaulting to
       
   599    minimal if on an unknown system
       
   600   -Corrected bug in sdl_gen_config.lua to allow using templates that have no
       
   601    area to paste generated tokens, thereby ignoring the tokens and just
       
   602    copying the template right into the generated header
       
   603   -Upgraded build.all.xcode4.command in the Xcode directory to give some
       
   604    information regarding how many tests were attempted to be built, how
       
   605    many passed, failed, and were skipped.
       
   606   -Added support in the clean option to correctly remove the Xcode 4 workspace
       
   607    file. It almost perfectly cleans Xcode projects now. It actually will only
       
   608    miss folders if the user goes into those folders with Finder, otherwise it
       
   609    cleans up properly right now.
       
   610   -Added support build.all.xcode3.command for Xcode 3 projects, rather than
       
   611    having to manually go into each project and build it individually.
       
   612 
       
   613 Changes as of 07/25/2013:
       
   614   -Moved file-based operations to a separate utility sdl_file.lua file
       
   615   -Began the configuration generation system using sdl_gen_config.lua
       
   616   -Created a config folder for *config.h templates and added the
       
   617    SDL_config_windows.template.h file, omitting everything premake will add
       
   618    itself
       
   619   -Fixed a bug where the base location would have a backslash on windows in the
       
   620    final generated Lua file, where it wasn't supposed to
       
   621   -Implemented clean option for the generated header file
       
   622   -Modified SDL_config.h to include SDL_config_premake.h (generated) if the
       
   623    preprocessor value 'USING_PREMAKE_HEADER_H' is defined, which the meta-build
       
   624    system ensures it is
       
   625   -Merged winmm dependency back into the windows dependency for SDL2.lua,
       
   626    because the windows timer module depends on winmm, as well
       
   627   -Partially tested configuration system via Visual Studio 2008; Mac OS X
       
   628    projects will be broken until that side is upgraded
       
   629 
       
   630 Changes as of 07/24/2013:
       
   631   -Updated mac os x test file to include all the new tests
       
   632   -Added script to automatically batch together all the scheme builds for
       
   633    the tests, so they don't have to be manually built through Xcode
       
   634   -Tested new tests and build environment on Xcode 4 successfully (weren't
       
   635    tested on here yet)
       
   636   -Began investigating implementing iOS Xcode projects using meta-build
       
   637    system
       
   638   -Began investigating implementing gmakefile generation support for
       
   639    GNU/Linux, Cygwin, and MinGW.
       
   640 
       
   641 Changes as of 07/23/2013:
       
   642   -Latest changes tested on Xcode 3 and 4; test suites running as expected
       
   643   -Implemented the entire test suite and tested it in Visual Studio on Windows;
       
   644    incompatible tests will build and run, but they will fail if there are no
       
   645    appropriate devices or settings for them to run correctly; this is correct
       
   646    behavior. Tested most suites on VS2008, VS2010, and VS2012. Only testerror
       
   647    crashed.
       
   648 
       
   649 Changes as of 07/22/2013:
       
   650   -Cleaned up the mixture of forward/back slashes in the generated LUA file. The
       
   651    only backslashes that exist are for copy commands, since they are copied as
       
   652    text into the generated projects. The rest use forward slashes, since premake
       
   653    actions handle per-system translation of directory paths.
       
   654   -Implemented SDL_isos function for projects so that they can have some control
       
   655    over certain functions where arguments or function calls changed with
       
   656    different operating systems (such as SDL_kind for SDL2 project)
       
   657   -Documented the new project functions. The documentation could be formatted a
       
   658    bit better and the arguments could be explicitly formatted.
       
   659   -Cleaned up SDL2.lua
       
   660   -Implemented project-level files and paths directives for projects, so that
       
   661    SDL_dependency isn't needed to specify files and file search paths for
       
   662    projects
       
   663   -Applied the above changes to all the project files and named a few other
       
   664    dependencies such as for SDL_main and testgl2. No projects should have
       
   665    unnamed dependencies at this point.
       
   666   -Tested the changes of the last few days on VS2008, VS2010, and VS2012. All
       
   667    the test suites run as expected.
       
   668 
       
   669 Changes as of 07/19/2013:
       
   670   -Updated generation backend to be more concise and less like it was before;
       
   671    this also fixed the duplicate dependency function calls bug
       
   672   -Implemented config function for constants to set in a generated SDL config
       
   673    header
       
   674   -Preliminarily set the config values for the SDL2 project
       
   675   -Updated generation code so that it won't generate empty projects, which stems
       
   676    from projects in which all of its dependencies are not compatible with the
       
   677    current system
       
   678   -Updated windows automated tests batch file to work more like Xcode's shell
       
   679    command file wherein it uses a labeled batch of commands as a sort of
       
   680    procedure; it's cleaner now and it will work if some projects aren't there
       
   681    (such as if they aren't supported on that platform)
       
   682   -Separated the winmm portion of the SDL2 project from the windows portion, so
       
   683    it has its own dependence now and uses a dependency check function that's
       
   684    dependent on premake's os.findlib
       
   685 
       
   686 Changes as of 07/18/2013:
       
   687   -Converted all projects over to the new, simpler format and tested on VS2008,
       
   688    VS2010, and VS2012
       
   689   -Corrected a mistake in the SDL2main project that always built the main file
       
   690    for windows, even on mac os x
       
   691   -Added some more features to the new project definition system to support
       
   692    project locations, custom defines, copy tables, and project dependencies
       
   693   -Moved new project definition system to a separate lua file
       
   694   -Fixed using 'copy' on windows for post-build commands and 'cp' on all
       
   695    other systems
       
   696   -Tested projects on Xcode 3; everything working correctly
       
   697   -Modified SDL2main project to use the dummy main for macosx
       
   698   -Changed the convenience scripts on macosx to .command files for the ability
       
   699    to conveniently double-click-execute them like an application or windows batch
       
   700    file 
       
   701 
       
   702 Changes as of 07/17/2013:
       
   703   -Tested that the generated Xcode 3 projects correctly work as expected
       
   704   -Implemented a new backend system for defining projects that majorly cleans
       
   705    up the syntax and eases the process of defining projects; currently only
       
   706    tested with VS2010 on Windows.
       
   707 
       
   708 Changes as of 07/09/2013-07/10/2013:
       
   709   -Fixed a bug that premake was causing where the mac project wouldn't execute
       
   710    any of its post-build options because premake was incorrectly generating the
       
   711    project in specific situations; the generated lua file now works around it
       
   712    correctly
       
   713 
       
   714 Changes as of 07/08/2013:
       
   715   -Unified SDL2.lua a bit by pulling out the source commonalities (generic
       
   716    interfaces and dummy implementations) and keeping the platform-specific
       
   717    implementations separate
       
   718   -Converted absolute paths to relative paths where appropriate, so now
       
   719    the generated VS solutions (and possibly Xcode) should be more portable
       
   720   -Modified premake script to support different base locations, so now the
       
   721    Visual Studio project directory structure is built within the VisualC
       
   722    directory, and similarly for Xcode (better organization and separation)
       
   723   -Fixed a minor bug in the cleanup action for VS2008 and VS2012 solutions
       
   724 
       
   725 Changes as of 07/05/2013:
       
   726   -Setup proper dependencies for XCode and successfully built the library
       
   727   -Ran test suites to ensure working Mac OSX binaries (64 bit, on Mac OS X 10.8
       
   728    Mountain Lion)
       
   729   -Redid the entire build environment to run out of a root premake folder,
       
   730    instead of separate premake folders for VisualC and Xcode
       
   731   -Setup convenient scripts for both Xcode and VisualC in the generic
       
   732    premake folder
       
   733   -Consolidated the premake scripts into a singular script for both targets
       
   734 
       
   735 Changes as of 07/02/2013 & 07/03/2013:
       
   736   -Finished implementing base setup for XCode
       
   737   -Configured the premake projects for XCode (using a parallel directory tree
       
   738    for now)
       
   739   -Implemented base XCode project using premake, though it still doesn't link
       
   740    properly
       
   741 
       
   742 Changes as of 06/30/2013 & 07/01/2013:
       
   743   -Implemented release configurations for projects
       
   744   -Began setting up environment for implementing the XCode projects
       
   745 
       
   746 Changes as of 06/29/2013:
       
   747   -Implemented copying intra-solution project dependencies shared libraries to
       
   748    the binary folders of other projects (such as copying SDL2.dll to subsequent
       
   749    directories of applications that depend on it).
       
   750   -Fixed a bug in the testscale and testrendertarget project lua files: they
       
   751    were copying sample.bmp for usage, but they depended on both icon.bmp and
       
   752    sample.bmp.
       
   753   -Added temporary batch script to simplify the process of running through all
       
   754    the currently available tests on windows.
       
   755   -Ensured binary compatibility for using SDL2.dll built with manual solutions
       
   756    with test suite applications built with automatic premake solution. This was
       
   757    tested successfully for VS2008, VS2010, and VS2012.
       
   758   -Binary compatibility has been ensured to not currently work vice versa,
       
   759    that is, using hand-rolled test suite applications with a generated-built
       
   760    SDL2.dll shared library.
       
   761 
       
   762 Changes as of 06/27/2013 & 06/28/2013:
       
   763   -Added premake5-dev to the repository, though it's still called premake4.exe
       
   764    and the main lua file is named similarly because it's still not officially
       
   765    premake5.
       
   766   -Setup generated project to nearly exactly match the flags of the manual
       
   767    project. Binary compatibility has been tested for SDL2.dll built with the
       
   768    manual projects against the applications built with the generated project.
       
   769    All seems to work so far. Only tested on VS2010. Much more testing to
       
   770    happen later.
       
   771 
       
   772 Changes as of 06/24/2013 & 06/25/2013:
       
   773   -Implemented basic meta-meta building system, where premake4.lua now
       
   774    generates a lua file and executes that to generate the project, allowing
       
   775    forward compatibility for premake5
       
   776   -Began working on binary compatibility verification by testing the test
       
   777    executables built by the manual VS solution using the SDL2.dll built
       
   778    from the premake solution. There are some issues, but nothing crashes
       
   779    that didn't crash before.
       
   780 
       
   781 Changes as of 06/21/2013:
       
   782   -Fixed multiple linker problem by adding an exclusion filter for
       
   783    src/thread/generic so that the duplicate objects wouldn't be doubly linked
       
   784   -Above linker fix also fixed the execution of all VS2008 project builds. All
       
   785    the projects run the same in terms of success or failure.
       
   786   -Added rudimentary clean action to premake files
       
   787   -Organized the project and build directory structures for the VS projects
       
   788    similar to that of the manually-built VS projects (though they no longer run
       
   789    out of the box, since SDL2.dll is now in a different directory; soon to be
       
   790    fixed)
       
   791 
       
   792 Changes as of 06/20/2013:
       
   793   -Implemented an optional copy table for projects that allow automatic copying
       
   794    of each file in the copy table from the source directory to the destination
       
   795    directory. These copy strings can actually be relative paths, as they will
       
   796    be made absolute and normalized in the handler code (but not validated!)
       
   797   -Implemented custom, per-project defines (needed for testgl2)
       
   798   -Fixed many warnings from VS2008 project by making sure shared libraries
       
   799    weren't being linked into shared library projects (such as SDLtest).
       
   800   -Tested all builds on VS2008, VS2010, and VS2012. Everything works as expected
       
   801    on the latter two.
       
   802 
       
   803 Changes as of 06/19/2013:
       
   804   -Implemented all of the currently supported projects in the hand-built
       
   805    Visual Studio solution, which successful building
       
   806   -Updated the dependency system to handle cross-linking of projects, such as
       
   807    the testing suite applications being dependent on SDL2 and SDL2main (and
       
   808    some even on SDL2test, which further emphasizes the capabilities)
       
   809   -Organized the folder structure to be less cluttered than before: only
       
   810    premake4.lua needs to exist at the root directory
       
   811   -Hardcoded the build path for all the projects to ./bin/Debug
       
   812   -Implemented support for adding input library links from dependency
       
   813    resolutions (for opengl in testgl2 in this case)
       
   814 
       
   815 Changes as of 06/18/2013:
       
   816   -Implemented a dependency for handling complex building scenarios, though
       
   817    it's only very simple right now
       
   818   -Implemented utility depends.lua for handling dependency searching on windows
       
   819   -Ported over hardcoded solution for SDL2 library to using dependency tree and
       
   820    a separate lua file
       
   821   -Implemented SDL2main static library, which involved more flexibility in the
       
   822    existing system
       
   823 
       
   824 Initial:
       
   825   -Built premake 4 binary and pasted it into secluded directory in SDL's build
       
   826    folder for Visual Studio
       
   827   -Created the initial premake script which recreated the SDL2.dll shared binary
       
   828    library, as based on the manually-created SDL project