premake/changelog
author Sam Lantinga <slouken@libsdl.org>
Fri, 28 Nov 2014 04:51:33 -0800
changeset 9246 a761913e5e91
parent 7925 f090a47eb7f7
permissions -rwxr-xr-x
Fixed bug 2786 - "UCS-2-INTERNAL" iconv encoding is not supported everywhere, use UTF-16LE instead

Jonas Kulla

src/main/windows/SDL_windows_main.c:137:
cmdline = SDL_iconv_string("UTF-8", "UCS-2-INTERNAL", (char *)(text), (SDL_wcslen(text)+1)*sizeof(WCHAR));

I'm trying to compile an SDL2 application for windows using the mingw-w64 32bit toolchain provided by my distro (Fedora 19). However, even the simplest test program that does nothing at all fails to startup with a "Fatal error - out of memory" message because the mingw iconv library provided by my distro does not support the "UCS-2-INTERNAL" encoding and the conversion returns null.

From my little bit of research, it turns out that even though this encoding is supported by the external GNU libiconv library, some glibc versions (?) don't support it with their internal iconv routines, and will instead provide the native endian encoding when "UCS-2" is specified.

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