Index: build/premake/premake5/CHANGES.txt =================================================================== --- build/premake/premake5/CHANGES.txt +++ build/premake/premake5/CHANGES.txt @@ -5,6 +5,45 @@ See https://github.com/premake/premake-core/wiki/What's-New-in-5.0 for the complete list of changes from the Premake 4.x series. +Since 5.0-alpha13: + +* PR #1067 Add 'Default', 'Dwarf' and 'SplitDwarf' arguments to 'debugformat' (@ratzlaff) +* PR #1160 use ';' as default separator for vs (@WorldofBay) +* PR #1177 Enable property categories in VS projects (@WorldofBay) +* PR #1178 Avoid impl dependent multi-char constants (@cengizIO) +* PR #1179 fix `xcodebuildsettings` using false (@tempura-sukiyaki) +* PR #1180 Add `os.ios` option in xcode4 (@tempura-sukiyaki) +* PR #1181 Release 5.0 alpha13 (@premake) +* PR #1189 Host path.normalize: Fix normalization for paths containing tokens (@tdesveauxPKFX) +* PR #1191 Fix objname collisions (@ratzlaff) +* PR #1193 Add tests for xcode id generator (@ratzlaff) +* PR #1194 Move rule property string expansion into modules (@WorldofBay) +* PR #1197 Added missing elements in Visual Studio Makefile projects (@LORgames) +* PR #1202 Support %{file.name} token in VS (@Blizzard) +* PR #1203 Add support for JavaCompile in vsandroid (@tempura-sukiyaki) +* PR #1206 Updated code lite to properly add LD_LIBRARY_PATH is set if libdirs is set (@pintodragon) +* PR #1218 Add support & tests for XCTest sharedlibtype (@Dingobloo) +* PR #1220 Implement the androidapilevel() API in Android packaging projects (@ifarbod) +* PR #1221 add nil check to fileconfig.hasFileSetting (gmake) (@WorldofBay) +* PR #1224 add missing local (@WorldofBay) +* PR #1228 Added Win64 as a recognized platform (@LORgames) +* PR #1230 Removed excessive escaping in CodeLite generator (@LORgames) +* PR #1231 Fixed issue with per-configuration build commands not returning errors correctly (@LORgames) +* PR #1236 Added support for Dx12 shader models (@CosmicRey) +* PR #1239 Implemented the startproject option for xcode (@macsforme) +* PR #1240 allow linking of mixed c++ assemblies (@WorldofBay) +* PR #1244 Fixed issue with detoken not handling deferred joins correctly (@LORgames) +* PR #1247 Added support for `csversion` API to dotnet toolset. (@tritao) +* PR #1248 Default to Roslyn-based `csc` compiler on all platforms. (@tritao) +* PR #1249 do not clear _isIncludingExternal in nested calls (@WorldofBay) +* PR #1253 Xcode newid determinism (@ratzlaff) +* PR #1258 Added support for Visual Studio 2019 solutions (@CosmicRey) +* PR #1264 Android changes, stage 1 (#1263) (@ifarbod) +* PR #1266 Implement the 'visibility' API for Android projects (@ifarbod) +* PR #1267 Provide access to json implementation (@ratzlaff) +* PR #1276 Added support for forceincludes in CodeLite (@LORgames) +* PR #1278 Packaging script improvement (@tdesveauxPKFX) + Since 5.0-alpha12: * PR #880 Allow tokens to start with a ! to disable making paths relative. (@Blizzard) Index: build/premake/premake5/README.md =================================================================== --- build/premake/premake5/README.md +++ build/premake/premake5/README.md @@ -3,7 +3,7 @@ [![Build status](https://ci.appveyor.com/api/projects/status/lc9g332y2lqvel8h?svg=true)](https://ci.appveyor.com/project/PremakeOrganization/premake-core) [![Latest release](https://img.shields.io/github/release/premake/premake-core/all.svg)]() [![Release date of last release](https://img.shields.io/github/release-date-pre/premake/premake-core.svg)]() - [![Commits since last release](https://img.shields.io/github/commits-since/premake/premake-core/v5.0.0-alpha12.svg)]() + [![Commits since last release](https://img.shields.io/github/commits-since/premake/premake-core/v5.0.0-alpha14.svg)]() Index: build/premake/premake5/build/gmake.bsd/curl-lib.make =================================================================== --- build/premake/premake5/build/gmake.bsd/curl-lib.make +++ build/premake/premake5/build/gmake.bsd/curl-lib.make @@ -15,7 +15,7 @@ TARGETDIR = bin/Release TARGET = $(TARGETDIR)/libcurl-lib.a OBJDIR = obj/Release/curl-lib - DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -DNDEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS -DCURL_CA_BUNDLE=\"/etc/ssl/certs/ca-certificates.crt\" + DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -DNDEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS INCLUDES += -I../../contrib/curl/include -I../../contrib/curl/lib -I../../contrib/mbedtls/include -I../../contrib/zlib FORCE_INCLUDE += ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES) @@ -42,7 +42,7 @@ TARGETDIR = bin/Debug TARGET = $(TARGETDIR)/libcurl-lib.a OBJDIR = obj/Debug/curl-lib - DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -D_DEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS -DCURL_CA_BUNDLE=\"/etc/ssl/certs/ca-certificates.crt\" + DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -D_DEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS INCLUDES += -I../../contrib/curl/include -I../../contrib/curl/lib -I../../contrib/mbedtls/include -I../../contrib/zlib FORCE_INCLUDE += ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES) Index: build/premake/premake5/build/gmake.unix/curl-lib.make =================================================================== --- build/premake/premake5/build/gmake.unix/curl-lib.make +++ build/premake/premake5/build/gmake.unix/curl-lib.make @@ -15,7 +15,7 @@ TARGETDIR = bin/Release TARGET = $(TARGETDIR)/libcurl-lib.a OBJDIR = obj/Release/curl-lib - DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -DNDEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS -DCURL_CA_BUNDLE=\"/etc/ssl/certs/ca-certificates.crt\" + DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -DNDEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS INCLUDES += -I../../contrib/curl/include -I../../contrib/curl/lib -I../../contrib/mbedtls/include -I../../contrib/zlib FORCE_INCLUDE += ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES) @@ -42,7 +42,7 @@ TARGETDIR = bin/Debug TARGET = $(TARGETDIR)/libcurl-lib.a OBJDIR = obj/Debug/curl-lib - DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -D_DEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS -DCURL_CA_BUNDLE=\"/etc/ssl/certs/ca-certificates.crt\" + DEFINES += -DPREMAKE_COMPRESSION -DPREMAKE_CURL -D_DEBUG -DBUILDING_LIBCURL -DCURL_STATICLIB -DHTTP_ONLY -DUSE_ZLIB -DUSE_MBEDTLS -DCURL_HIDDEN_SYMBOLS INCLUDES += -I../../contrib/curl/include -I../../contrib/curl/lib -I../../contrib/mbedtls/include -I../../contrib/zlib FORCE_INCLUDE += ALL_CPPFLAGS += $(CPPFLAGS) -MMD -MP $(DEFINES) $(INCLUDES) Index: build/premake/premake5/build/vs2005/Premake5.vcproj =================================================================== --- build/premake/premake5/build/vs2005/Premake5.vcproj +++ build/premake/premake5/build/vs2005/Premake5.vcproj @@ -386,6 +386,10 @@ RelativePath="..\..\modules\android\tests\_tests.lua" > + + @@ -911,6 +915,10 @@ RelativePath="..\..\modules\vstudio\vs2017.lua" > + + Index: build/premake/premake5/build/vs2008/Premake5.vcproj =================================================================== --- build/premake/premake5/build/vs2008/Premake5.vcproj +++ build/premake/premake5/build/vs2008/Premake5.vcproj @@ -386,6 +386,10 @@ RelativePath="..\..\modules\android\tests\_tests.lua" > + + @@ -911,6 +915,10 @@ RelativePath="..\..\modules\vstudio\vs2017.lua" > + + Index: build/premake/premake5/build/vs2010/Premake5.vcxproj =================================================================== --- build/premake/premake5/build/vs2010/Premake5.vcxproj +++ build/premake/premake5/build/vs2010/Premake5.vcxproj @@ -247,6 +247,7 @@ + @@ -448,6 +449,7 @@ + Index: build/premake/premake5/build/vs2010/Premake5.vcxproj.filters =================================================================== --- build/premake/premake5/build/vs2010/Premake5.vcxproj.filters +++ build/premake/premake5/build/vs2010/Premake5.vcxproj.filters @@ -327,6 +327,9 @@ modules\android\tests + + modules\android\tests + modules\android\tests @@ -930,6 +933,9 @@ modules\vstudio + + modules\vstudio + modules\vstudio Index: build/premake/premake5/build/vs2012/Premake5.vcxproj =================================================================== --- build/premake/premake5/build/vs2012/Premake5.vcxproj +++ build/premake/premake5/build/vs2012/Premake5.vcxproj @@ -247,6 +247,7 @@ + @@ -448,6 +449,7 @@ + Index: build/premake/premake5/build/vs2012/Premake5.vcxproj.filters =================================================================== --- build/premake/premake5/build/vs2012/Premake5.vcxproj.filters +++ build/premake/premake5/build/vs2012/Premake5.vcxproj.filters @@ -327,6 +327,9 @@ modules\android\tests + + modules\android\tests + modules\android\tests @@ -930,6 +933,9 @@ modules\vstudio + + modules\vstudio + modules\vstudio Index: build/premake/premake5/build/vs2013/Premake5.vcxproj =================================================================== --- build/premake/premake5/build/vs2013/Premake5.vcxproj +++ build/premake/premake5/build/vs2013/Premake5.vcxproj @@ -248,6 +248,7 @@ + @@ -449,6 +450,7 @@ + Index: build/premake/premake5/build/vs2013/Premake5.vcxproj.filters =================================================================== --- build/premake/premake5/build/vs2013/Premake5.vcxproj.filters +++ build/premake/premake5/build/vs2013/Premake5.vcxproj.filters @@ -327,6 +327,9 @@ modules\android\tests + + modules\android\tests + modules\android\tests @@ -930,6 +933,9 @@ modules\vstudio + + modules\vstudio + modules\vstudio Index: build/premake/premake5/build/vs2015/Premake5.vcxproj =================================================================== --- build/premake/premake5/build/vs2015/Premake5.vcxproj +++ build/premake/premake5/build/vs2015/Premake5.vcxproj @@ -248,6 +248,7 @@ + @@ -449,6 +450,7 @@ + Index: build/premake/premake5/build/vs2015/Premake5.vcxproj.filters =================================================================== --- build/premake/premake5/build/vs2015/Premake5.vcxproj.filters +++ build/premake/premake5/build/vs2015/Premake5.vcxproj.filters @@ -327,6 +327,9 @@ modules\android\tests + + modules\android\tests + modules\android\tests @@ -930,6 +933,9 @@ modules\vstudio + + modules\vstudio + modules\vstudio Index: build/premake/premake5/build/vs2017/Premake5.vcxproj =================================================================== --- build/premake/premake5/build/vs2017/Premake5.vcxproj +++ build/premake/premake5/build/vs2017/Premake5.vcxproj @@ -248,6 +248,7 @@ + @@ -449,6 +450,7 @@ + Index: build/premake/premake5/build/vs2017/Premake5.vcxproj.filters =================================================================== --- build/premake/premake5/build/vs2017/Premake5.vcxproj.filters +++ build/premake/premake5/build/vs2017/Premake5.vcxproj.filters @@ -327,6 +327,9 @@ modules\android\tests + + modules\android\tests + modules\android\tests @@ -930,6 +933,9 @@ modules\vstudio + + modules\vstudio + modules\vstudio Index: build/premake/premake5/build/vs2019/Premake5.sln =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/Premake5.sln @@ -0,0 +1,120 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 16 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Binary Modules", "Binary Modules", "{EADEF033-D66D-7AFD-7F8C-8EF86BFA8AA3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "example", "example.vcxproj", "{F1997D81-5D79-FC1C-6691-87F3D2EF627E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luasocket", "luasocket.vcxproj", "{7085D54F-DCEF-89C6-252E-3B6C91D7671B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Premake5", "Premake5.vcxproj", "{DF59398B-CB26-9496-F43F-823EE06BC924}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "contrib", "contrib", "{9D86B421-0947-3058-D281-79D53E017534}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "curl-lib", "curl-lib.vcxproj", "{BF552F19-AB22-8A24-D43B-78CCC067BFB2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "lua-lib", "lua-lib.vcxproj", "{AB9F3295-177F-B130-2097-3C078CF51792}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "luashim-lib", "luashim-lib.vcxproj", "{9C53798E-0809-F283-91FD-EB5AFDB1E887}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "mbedtls-lib", "mbedtls-lib.vcxproj", "{34744A64-A029-C359-291E-BD3095D2B95D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zip-lib", "zip-lib.vcxproj", "{3C7AF3AF-A859-724B-B171-FD211DD0D8AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "zlib-lib", "zlib-lib.vcxproj", "{7AF09988-66BD-F493-8FD6-E23B7B022A22}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Debug|Win32.ActiveCfg = Debug|Win32 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Debug|Win32.Build.0 = Debug|Win32 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Debug|x64.ActiveCfg = Debug|x64 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Debug|x64.Build.0 = Debug|x64 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Release|Win32.ActiveCfg = Release|Win32 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Release|Win32.Build.0 = Release|Win32 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Release|x64.ActiveCfg = Release|x64 + {F1997D81-5D79-FC1C-6691-87F3D2EF627E}.Release|x64.Build.0 = Release|x64 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Debug|Win32.ActiveCfg = Debug|Win32 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Debug|Win32.Build.0 = Debug|Win32 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Debug|x64.ActiveCfg = Debug|x64 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Debug|x64.Build.0 = Debug|x64 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Release|Win32.ActiveCfg = Release|Win32 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Release|Win32.Build.0 = Release|Win32 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Release|x64.ActiveCfg = Release|x64 + {7085D54F-DCEF-89C6-252E-3B6C91D7671B}.Release|x64.Build.0 = Release|x64 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Debug|Win32.ActiveCfg = Debug|Win32 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Debug|Win32.Build.0 = Debug|Win32 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Debug|x64.ActiveCfg = Debug|x64 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Debug|x64.Build.0 = Debug|x64 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Release|Win32.ActiveCfg = Release|Win32 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Release|Win32.Build.0 = Release|Win32 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Release|x64.ActiveCfg = Release|x64 + {DF59398B-CB26-9496-F43F-823EE06BC924}.Release|x64.Build.0 = Release|x64 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Debug|Win32.ActiveCfg = Debug|Win32 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Debug|Win32.Build.0 = Debug|Win32 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Debug|x64.ActiveCfg = Debug|x64 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Debug|x64.Build.0 = Debug|x64 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Release|Win32.ActiveCfg = Release|Win32 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Release|Win32.Build.0 = Release|Win32 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Release|x64.ActiveCfg = Release|x64 + {BF552F19-AB22-8A24-D43B-78CCC067BFB2}.Release|x64.Build.0 = Release|x64 + {AB9F3295-177F-B130-2097-3C078CF51792}.Debug|Win32.ActiveCfg = Debug|Win32 + {AB9F3295-177F-B130-2097-3C078CF51792}.Debug|Win32.Build.0 = Debug|Win32 + {AB9F3295-177F-B130-2097-3C078CF51792}.Debug|x64.ActiveCfg = Debug|x64 + {AB9F3295-177F-B130-2097-3C078CF51792}.Debug|x64.Build.0 = Debug|x64 + {AB9F3295-177F-B130-2097-3C078CF51792}.Release|Win32.ActiveCfg = Release|Win32 + {AB9F3295-177F-B130-2097-3C078CF51792}.Release|Win32.Build.0 = Release|Win32 + {AB9F3295-177F-B130-2097-3C078CF51792}.Release|x64.ActiveCfg = Release|x64 + {AB9F3295-177F-B130-2097-3C078CF51792}.Release|x64.Build.0 = Release|x64 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Debug|Win32.ActiveCfg = Debug|Win32 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Debug|Win32.Build.0 = Debug|Win32 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Debug|x64.ActiveCfg = Debug|x64 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Debug|x64.Build.0 = Debug|x64 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Release|Win32.ActiveCfg = Release|Win32 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Release|Win32.Build.0 = Release|Win32 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Release|x64.ActiveCfg = Release|x64 + {9C53798E-0809-F283-91FD-EB5AFDB1E887}.Release|x64.Build.0 = Release|x64 + {34744A64-A029-C359-291E-BD3095D2B95D}.Debug|Win32.ActiveCfg = Debug|Win32 + {34744A64-A029-C359-291E-BD3095D2B95D}.Debug|Win32.Build.0 = Debug|Win32 + {34744A64-A029-C359-291E-BD3095D2B95D}.Debug|x64.ActiveCfg = Debug|x64 + {34744A64-A029-C359-291E-BD3095D2B95D}.Debug|x64.Build.0 = Debug|x64 + {34744A64-A029-C359-291E-BD3095D2B95D}.Release|Win32.ActiveCfg = Release|Win32 + {34744A64-A029-C359-291E-BD3095D2B95D}.Release|Win32.Build.0 = Release|Win32 + {34744A64-A029-C359-291E-BD3095D2B95D}.Release|x64.ActiveCfg = Release|x64 + {34744A64-A029-C359-291E-BD3095D2B95D}.Release|x64.Build.0 = Release|x64 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Debug|Win32.ActiveCfg = Debug|Win32 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Debug|Win32.Build.0 = Debug|Win32 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Debug|x64.ActiveCfg = Debug|x64 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Debug|x64.Build.0 = Debug|x64 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Release|Win32.ActiveCfg = Release|Win32 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Release|Win32.Build.0 = Release|Win32 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Release|x64.ActiveCfg = Release|x64 + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC}.Release|x64.Build.0 = Release|x64 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Debug|Win32.ActiveCfg = Debug|Win32 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Debug|Win32.Build.0 = Debug|Win32 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Debug|x64.ActiveCfg = Debug|x64 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Debug|x64.Build.0 = Debug|x64 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Release|Win32.ActiveCfg = Release|Win32 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Release|Win32.Build.0 = Release|Win32 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Release|x64.ActiveCfg = Release|x64 + {7AF09988-66BD-F493-8FD6-E23B7B022A22}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {F1997D81-5D79-FC1C-6691-87F3D2EF627E} = {EADEF033-D66D-7AFD-7F8C-8EF86BFA8AA3} + {7085D54F-DCEF-89C6-252E-3B6C91D7671B} = {EADEF033-D66D-7AFD-7F8C-8EF86BFA8AA3} + {BF552F19-AB22-8A24-D43B-78CCC067BFB2} = {9D86B421-0947-3058-D281-79D53E017534} + {AB9F3295-177F-B130-2097-3C078CF51792} = {9D86B421-0947-3058-D281-79D53E017534} + {9C53798E-0809-F283-91FD-EB5AFDB1E887} = {9D86B421-0947-3058-D281-79D53E017534} + {34744A64-A029-C359-291E-BD3095D2B95D} = {9D86B421-0947-3058-D281-79D53E017534} + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC} = {9D86B421-0947-3058-D281-79D53E017534} + {7AF09988-66BD-F493-8FD6-E23B7B022A22} = {9D86B421-0947-3058-D281-79D53E017534} + EndGlobalSection +EndGlobal Index: build/premake/premake5/build/vs2019/Premake5.vcxproj =================================================================== --- build/premake/premake5/build/vs2019/Premake5.vcxproj +++ build/premake/premake5/build/vs2019/Premake5.vcxproj @@ -1,5 +1,5 @@  - + Release @@ -29,27 +29,27 @@ Application false Unicode - v141 + v142 true Application false Unicode - v141 + v142 true Application true Unicode - v141 + v142 Application true Unicode - v141 + v142 @@ -248,6 +248,7 @@ + @@ -449,6 +450,7 @@ + Index: build/premake/premake5/build/vs2019/Premake5.vcxproj.filters =================================================================== --- build/premake/premake5/build/vs2019/Premake5.vcxproj.filters +++ build/premake/premake5/build/vs2019/Premake5.vcxproj.filters @@ -327,6 +327,9 @@ modules\android\tests + + modules\android\tests + modules\android\tests @@ -930,6 +933,9 @@ modules\vstudio + + modules\vstudio + modules\vstudio Index: build/premake/premake5/build/vs2019/Premake5.vcxproj.user =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/Premake5.vcxproj.user @@ -0,0 +1,17 @@ + + + + + + + + ..\.. + WindowsLocalDebugger + --scripts=$(ProjectDir)/../.. test + + + ..\.. + WindowsLocalDebugger + --scripts=$(ProjectDir)/../.. test + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/curl-lib.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/curl-lib.vcxproj @@ -0,0 +1,454 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {BF552F19-AB22-8A24-D43B-78CCC067BFB2} + true + Win32Proj + curl-lib + + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + true + Unicode + v142 + + + StaticLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + bin\x86\Release\ + obj\x86\Release\curl-lib\ + curl-lib + .lib + + + bin\x64\Release\ + obj\x64\Release\curl-lib\ + curl-lib + .lib + + + bin\x86\Debug\ + obj\x86\Debug\curl-lib\ + curl-lib + .lib + + + bin\x64\Debug\ + obj\x64\Debug\curl-lib\ + curl-lib + .lib + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;BUILDING_LIBCURL;CURL_STATICLIB;HTTP_ONLY;USE_ZLIB;USE_SCHANNEL;USE_WINDOWS_SSPI;%(PreprocessorDefinitions) + ..\..\contrib\curl\include;..\..\contrib\curl\lib;..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + crypt32.lib;%(AdditionalDependencies) + + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;BUILDING_LIBCURL;CURL_STATICLIB;HTTP_ONLY;USE_ZLIB;USE_SCHANNEL;USE_WINDOWS_SSPI;%(PreprocessorDefinitions) + ..\..\contrib\curl\include;..\..\contrib\curl\lib;..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + crypt32.lib;%(AdditionalDependencies) + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;BUILDING_LIBCURL;CURL_STATICLIB;HTTP_ONLY;USE_ZLIB;USE_SCHANNEL;USE_WINDOWS_SSPI;%(PreprocessorDefinitions) + ..\..\contrib\curl\include;..\..\contrib\curl\lib;..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + crypt32.lib;%(AdditionalDependencies) + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;BUILDING_LIBCURL;CURL_STATICLIB;HTTP_ONLY;USE_ZLIB;USE_SCHANNEL;USE_WINDOWS_SSPI;%(PreprocessorDefinitions) + ..\..\contrib\curl\include;..\..\contrib\curl\lib;..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + crypt32.lib;%(AdditionalDependencies) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/curl-lib.vcxproj.filters =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/curl-lib.vcxproj.filters @@ -0,0 +1,813 @@ + + + + + {89AF369E-F58E-B539-FEA6-40106A051C9B} + + + {2E97D969-1AFA-680E-C37F-A1C4AFC13491} + + + {3C8C880B-A895-887C-3111-9F7C9D19947C} + + + {13BC98EB-7F26-4D62-C864-FE07340E2BB7} + + + {F4C14AA2-E08E-A5AD-09A8-9355F5D3DA3B} + + + + + include\curl + + + include\curl + + + include\curl + + + include\curl + + + include\curl + + + include\curl + + + include\curl + + + include\curl + + + include\curl + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib + + + lib + + + lib + + + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib\vauth + + + lib + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib\vtls + + + lib + + + lib + + + lib + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/example.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/example.vcxproj @@ -0,0 +1,194 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {F1997D81-5D79-FC1C-6691-87F3D2EF627E} + true + Win32Proj + example + + + + DynamicLibrary + false + Unicode + v142 + true + + + DynamicLibrary + false + Unicode + v142 + true + + + DynamicLibrary + true + Unicode + v142 + + + DynamicLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + false + ..\..\bin\release\ + obj\x86\Release\example\ + example + .dll + + + false + ..\..\bin\release\ + obj\x64\Release\example\ + example + .dll + + + true + ..\..\bin\debug\ + obj\x86\Debug\example\ + example + .dll + + + true + ..\..\bin\debug\ + obj\x64\Debug\example\ + example + .dll + + + + NotUsing + Level4 + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + ..\..\bin\release\example.lib + + + + + NotUsing + Level4 + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + ..\..\bin\release\example.lib + + + + + NotUsing + Level4 + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + ..\..\bin\debug\example.lib + + + + + NotUsing + Level4 + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + ..\..\bin\debug\example.lib + + + + + + + + + + + {9C53798E-0809-F283-91FD-EB5AFDB1E887} + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/lua-lib.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/lua-lib.vcxproj @@ -0,0 +1,236 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {AB9F3295-177F-B130-2097-3C078CF51792} + true + Win32Proj + lua-lib + + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + true + Unicode + v142 + + + StaticLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + bin\x86\Release\ + obj\x86\Release\lua-lib\ + lua-lib + .lib + + + bin\x64\Release\ + obj\x64\Release\lua-lib\ + lua-lib + .lib + + + bin\x86\Debug\ + obj\x86\Debug\lua-lib\ + lua-lib + .lib + + + bin\x64\Debug\ + obj\x64\Debug\lua-lib\ + lua-lib + .lib + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/luashim-lib.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/luashim-lib.vcxproj @@ -0,0 +1,184 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {9C53798E-0809-F283-91FD-EB5AFDB1E887} + true + Win32Proj + luashim-lib + + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + true + Unicode + v142 + + + StaticLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + bin\x86\Release\ + obj\x86\Release\luashim-lib\ + luashim-lib + .lib + + + bin\x64\Release\ + obj\x64\Release\luashim-lib\ + luashim-lib + .lib + + + bin\x86\Debug\ + obj\x86\Debug\luashim-lib\ + luashim-lib + .lib + + + bin\x64\Debug\ + obj\x64\Debug\luashim-lib\ + luashim-lib + .lib + + + + NotUsing + Level4 + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + Level4 + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + Level4 + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + NotUsing + Level4 + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;%(PreprocessorDefinitions) + ..\..\contrib\lua\src;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/luasocket.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/luasocket.vcxproj @@ -0,0 +1,239 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {7085D54F-DCEF-89C6-252E-3B6C91D7671B} + true + Win32Proj + luasocket + + + + DynamicLibrary + false + MultiByte + v142 + true + + + DynamicLibrary + false + MultiByte + v142 + true + + + DynamicLibrary + true + MultiByte + v142 + + + DynamicLibrary + true + MultiByte + v142 + + + + + + + + + + + + + + + + + + + false + ..\..\bin\release\ + obj\x86\Release\luasocket\ + luasocket + .dll + + + false + ..\..\bin\release\ + obj\x64\Release\luasocket\ + luasocket + .dll + + + true + ..\..\bin\debug\ + obj\x86\Debug\luasocket\ + luasocket + .dll + + + true + ..\..\bin\debug\ + obj\x64\Debug\luasocket\ + luasocket + .dll + + + + NotUsing + Level4 + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;LUASOCKET_API=__declspec(dllexport);%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + ws2_32.lib;%(AdditionalDependencies) + ..\..\bin\release\luasocket.lib + + + + + NotUsing + Level4 + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;LUASOCKET_API=__declspec(dllexport);%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + ws2_32.lib;%(AdditionalDependencies) + ..\..\bin\release\luasocket.lib + + + + + NotUsing + Level4 + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;LUASOCKET_API=__declspec(dllexport);%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + ws2_32.lib;%(AdditionalDependencies) + ..\..\bin\debug\luasocket.lib + + + + + NotUsing + Level4 + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;LUASOCKET_API=__declspec(dllexport);%(PreprocessorDefinitions) + ..\..\contrib\lua\src;..\..\contrib\luashim;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + ws2_32.lib;%(AdditionalDependencies) + ..\..\bin\debug\luasocket.lib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + {9C53798E-0809-F283-91FD-EB5AFDB1E887} + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/luasocket.vcxproj.filters =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/luasocket.vcxproj.filters @@ -0,0 +1,135 @@ + + + + + {2DAB880B-99B4-887C-2230-9F7C8E38947C} + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + src + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/mbedtls-lib.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/mbedtls-lib.vcxproj @@ -0,0 +1,315 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {34744A64-A029-C359-291E-BD3095D2B95D} + true + Win32Proj + mbedtls-lib + + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + true + Unicode + v142 + + + StaticLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + bin\x86\Release\ + obj\x86\Release\mbedtls-lib\ + mbedtls-lib + .lib + + + bin\x64\Release\ + obj\x64\Release\mbedtls-lib\ + mbedtls-lib + .lib + + + bin\x86\Debug\ + obj\x86\Debug\mbedtls-lib\ + mbedtls-lib + .lib + + + bin\x64\Debug\ + obj\x64\Debug\mbedtls-lib\ + mbedtls-lib + .lib + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;MBEDTLS_ZLIB_SUPPORT;%(PreprocessorDefinitions) + ..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;MBEDTLS_ZLIB_SUPPORT;%(PreprocessorDefinitions) + ..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;MBEDTLS_ZLIB_SUPPORT;%(PreprocessorDefinitions) + ..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;MBEDTLS_ZLIB_SUPPORT;%(PreprocessorDefinitions) + ..\..\contrib\mbedtls\include;..\..\contrib\zlib;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/mbedtls-lib.vcxproj.filters =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/mbedtls-lib.vcxproj.filters @@ -0,0 +1,426 @@ + + + + + {89AF369E-F58E-B539-FEA6-40106A051C9B} + + + {4326A6EE-AFB1-13B3-B8C2-96A724CD6FB3} + + + {3A796C79-A658-EB14-AF70-76EB1BCF5176} + + + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + include\mbedtls + + + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + library + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/zip-lib.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/zip-lib.vcxproj @@ -0,0 +1,274 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {3C7AF3AF-A859-724B-B171-FD211DD0D8AC} + true + Win32Proj + zip-lib + + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + true + Unicode + v142 + + + StaticLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + bin\x86\Release\ + obj\x86\Release\zip-lib\ + zip-lib + .lib + + + bin\x64\Release\ + obj\x64\Release\zip-lib\ + zip-lib + .lib + + + bin\x86\Debug\ + obj\x86\Debug\zip-lib\ + zip-lib + .lib + + + bin\x64\Debug\ + obj\x64\Debug\zip-lib\ + zip-lib + .lib + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + ..\..\contrib\libzip\include;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + ..\..\contrib\libzip\include;%(AdditionalIncludeDirectories) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + ..\..\contrib\libzip\include;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + ..\..\contrib\libzip\include;%(AdditionalIncludeDirectories) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/zip-lib.vcxproj.filters =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/zip-lib.vcxproj.filters @@ -0,0 +1,113 @@ + + + + + {89AF369E-F58E-B539-FEA6-40106A051C9B} + + + + + + include + + + include + + + include + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/build/vs2019/zlib-lib.vcxproj =================================================================== --- /dev/null +++ build/premake/premake5/build/vs2019/zlib-lib.vcxproj @@ -0,0 +1,201 @@ + + + + + Release + Win32 + + + Release + x64 + + + Debug + Win32 + + + Debug + x64 + + + + {7AF09988-66BD-F493-8FD6-E23B7B022A22} + true + Win32Proj + zlib-lib + + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + false + Unicode + v142 + true + + + StaticLibrary + true + Unicode + v142 + + + StaticLibrary + true + Unicode + v142 + + + + + + + + + + + + + + + + + + + bin\x86\Release\ + obj\x86\Release\zlib-lib\ + zlib-lib + .lib + + + bin\x64\Release\ + obj\x64\Release\zlib-lib\ + zlib-lib + .lib + + + bin\x86\Debug\ + obj\x86\Debug\zlib-lib\ + zlib-lib + .lib + + + bin\x64\Debug\ + obj\x64\Debug\zlib-lib\ + zlib-lib + .lib + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + Default + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;NDEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + Full + true + true + false + true + MultiThreaded + false + true + + + Windows + true + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + NotUsing + TurnOffAllWarnings + PREMAKE_COMPRESSION;CURL_STATICLIB;PREMAKE_CURL;_DEBUG;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;_CRT_NONSTDC_NO_WARNINGS;N_FSEEKO;_WINDOWS;%(PreprocessorDefinitions) + EditAndContinue + Disabled + false + MultiThreadedDebug + true + + + Windows + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file Index: build/premake/premake5/contrib/luashim/luashim.c =================================================================== --- build/premake/premake5/contrib/luashim/luashim.c +++ build/premake/premake5/contrib/luashim/luashim.c @@ -851,7 +851,7 @@ // Find the 'SHIM' entry in the registry. const Table* reg = hvalue(&G(L)->l_registry); - const Node* n = findNode(reg, 'SHIM'); + const Node* n = findNode(reg, 0x5348494D); // equal to 'SHIM' assert(n != NULL); g_shimTable = (const LuaFunctionTable_t*)n->i_val.value_.p; Index: build/premake/premake5/modules/android/_preload.lua =================================================================== --- build/premake/premake5/modules/android/_preload.lua +++ build/premake/premake5/modules/android/_preload.lua @@ -12,18 +12,18 @@ -- Register the Android extension -- - p.ANDROID = "android" - p.ANDROIDPROJ = "androidproj" - api.addAllowed("system", p.ANDROID) - api.addAllowed("architecture", { "armv5", "armv7", "aarach64", "mips", "mips64", "arm" }) + api.addAllowed("architecture", { "armv5", "armv7", "aarch64", "mips", "mips64", "arm" }) api.addAllowed("vectorextensions", { "NEON", "MXU" }) + api.addAllowed("exceptionhandling", {"UnwindTables"}) api.addAllowed("flags", { "Thumb" }) - api.addAllowed("kind", p.ANDROIDPROJ) + api.addAllowed("kind", p.PACKAGING) - premake.action._list["vs2015"].valid_kinds = table.join(premake.action._list["vs2015"].valid_kinds, { p.ANDROIDPROJ }) - premake.action._list["vs2017"].valid_kinds = table.join(premake.action._list["vs2017"].valid_kinds, { p.ANDROIDPROJ }) + premake.action._list["vs2015"].valid_kinds = table.join(premake.action._list["vs2015"].valid_kinds, { p.PACKAGING }) + premake.action._list["vs2017"].valid_kinds = table.join(premake.action._list["vs2017"].valid_kinds, { p.PACKAGING }) + premake.action._list["vs2019"].valid_kinds = table.join(premake.action._list["vs2019"].valid_kinds, { p.PACKAGING }) + local osoption = p.option.get("os") if osoption ~= nil then table.insert(osoption.allowed, { "android", "Android" }) @@ -65,6 +65,7 @@ "3.5", "3.6", "3.8", + "5.0", }, } @@ -74,15 +75,10 @@ kind = "string", allowed = { "none", - "minimal c++ (system)", - "c++ static", - "c++ shared", - "stlport static", - "stlport shared", - "gnu stl static", - "gnu stl shared", - "llvm libc++ static", - "llvm libc++ shared", + "gabi++", + "stlport", + "gnu", + "libc++", }, } Index: build/premake/premake5/modules/android/tests/_tests.lua =================================================================== --- build/premake/premake5/modules/android/tests/_tests.lua +++ build/premake/premake5/modules/android/tests/_tests.lua @@ -1,5 +1,6 @@ require ("android") return { - "test_android_project.lua" + "test_android_files.lua", + "test_android_project.lua", } Index: build/premake/premake5/modules/android/tests/test_android_files.lua =================================================================== --- /dev/null +++ build/premake/premake5/modules/android/tests/test_android_files.lua @@ -0,0 +1,47 @@ +local p = premake +local suite = test.declare("test_android_files") +local vc2010 = p.vstudio.vc2010 + + +-- +-- Setup +-- + + local wks, prj + + function suite.setup() + p.action.set("vs2015") + wks = test.createWorkspace() + end + + local function prepare() + prj = test.getproject(wks, 1) + system "android" + vc2010.files(prj) + end + + +-- +-- Test filtering of source files into the correct categories. +-- + + function suite.none_onJavaFile() + files { "hello.java" } + prepare() + test.capture [[ + + + + ]] + end + + function suite.javaCompile_onJavaFile() + kind "Packaging" + files { "hello.java" } + prepare() + test.capture [[ + + + + ]] + end Index: build/premake/premake5/modules/android/tests/test_android_project.lua =================================================================== --- build/premake/premake5/modules/android/tests/test_android_project.lua +++ build/premake/premake5/modules/android/tests/test_android_project.lua @@ -36,7 +36,6 @@ NotUsing Disabled - Enabled ]] end @@ -47,7 +46,6 @@ NotUsing Disabled - Enabled true ]] end @@ -70,7 +68,6 @@ NotUsing Disabled Enabled - true ]] end @@ -81,8 +78,6 @@ NotUsing Disabled - Enabled - true c++11 ]] end @@ -94,8 +89,6 @@ NotUsing Disabled - Enabled - true c++1y ]] end @@ -107,8 +100,6 @@ NotUsing Disabled - Enabled - true - -std=c++1z %(AdditionalOptions) + c++1z ]] end Index: build/premake/premake5/modules/android/vsandroid_androidproj.lua =================================================================== --- build/premake/premake5/modules/android/vsandroid_androidproj.lua +++ build/premake/premake5/modules/android/vsandroid_androidproj.lua @@ -19,7 +19,7 @@ premake.override(vstudio.vs2010, "generateProject", function(oldfn, prj) - if prj.kind == p.ANDROIDPROJ then + if prj.kind == p.PACKAGING then p.eol("\r\n") p.indent(" ") p.escaper(vstudio.vs2010.esc) @@ -40,7 +40,7 @@ premake.override(vstudio, "projectfile", function(oldfn, prj) - if prj.kind == p.ANDROIDPROJ then + if prj.kind == p.PACKAGING then return premake.filename(prj, ".androidproj") else return oldfn(prj) @@ -49,7 +49,7 @@ premake.override(vstudio, "tool", function(oldfn, prj) - if prj.kind == p.ANDROIDPROJ then + if prj.kind == p.PACKAGING then return "39E2626F-3545-4960-A6E8-258AD8476CE5" else return oldfn(prj) @@ -60,7 +60,7 @@ premake.override(vc2010.elements, "globals", function (oldfn, cfg) local elements = oldfn(cfg) - if cfg.kind == premake.ANDROIDPROJ then + if cfg.kind == premake.PACKAGING then -- Remove "IgnoreWarnCompileDuplicatedFilename". local pos = table.indexof(elements, vc2010.ignoreWarnDuplicateFilename) table.remove(elements, pos) @@ -82,8 +82,9 @@ premake.override(vc2010.elements, "configurationProperties", function(oldfn, cfg) local elements = oldfn(cfg) - if cfg.kind == p.ANDROIDPROJ then + if cfg.kind == p.PACKAGING then elements = { + android.androidAPILevel, vc2010.useDebugLibraries, } end @@ -93,7 +94,7 @@ premake.override(vc2010.elements, "itemDefinitionGroup", function(oldfn, cfg) local elements = oldfn(cfg) - if cfg.kind == p.ANDROIDPROJ then + if cfg.kind == p.PACKAGING then elements = { android.antPackage, } @@ -103,7 +104,7 @@ premake.override(vc2010, "importDefaultProps", function(oldfn, prj) - if prj.kind == p.ANDROIDPROJ then + if prj.kind == p.PACKAGING then p.w('') else oldfn(prj) @@ -112,7 +113,7 @@ premake.override(vc2010, "importLanguageSettings", function(oldfn, prj) - if prj.kind == p.ANDROIDPROJ then + if prj.kind == p.PACKAGING then p.w('') else oldfn(prj) @@ -121,16 +122,18 @@ premake.override(vc2010, "propertySheets", function(oldfn, cfg) - if cfg.kind ~= p.ANDROIDPROJ then + if cfg.kind ~= p.PACKAGING then oldfn(cfg) end end) premake.override(vc2010.elements, "outputProperties", function(oldfn, cfg) - if cfg.kind == p.ANDROIDPROJ then + if cfg.kind == p.PACKAGING then return { android.outDir, + vc2010.intDir, + vc2010.targetName, } else return oldfn(cfg) @@ -144,7 +147,7 @@ premake.override(vc2010, "importLanguageTargets", function(oldfn, prj) - if prj.kind == p.ANDROIDPROJ then + if prj.kind == p.PACKAGING then p.w('') else oldfn(prj) @@ -156,7 +159,7 @@ -- below. Otherwise the function will use target seperator which -- could be '\\' and result in failure to create links. local fname = path.translate(file.relpath, '/') - + -- Files that live outside of the project tree need to be "linked" -- and provided with a project relative pseudo-path. Check for any -- leading "../" sequences and, if found, remove them and mark this @@ -220,6 +223,19 @@ end } + vc2010.categories.JavaCompile = { + name = "JavaCompile", + priority = 99, + + emitFiles = function(prj, group) + vc2010.emitFiles(prj, group, "JavaCompile", {vc2010.generatedFile, android.link}) + end, + + emitFilter = function(prj, group) + vc2010.filterGroup(prj, group, "JavaCompile") + end + } + vc2010.categories.Content = { name = "Content", priority = 99, @@ -234,11 +250,12 @@ } premake.override(vc2010, "categorizeFile", function(base, prj, file) - if prj.kind ~= p.ANDROIDPROJ then + if prj.kind ~= p.PACKAGING then return base(prj, file) end local filename = path.getname(file.name):lower() + local extension = path.getextension(filename) if filename == "androidmanifest.xml" then return vc2010.categories.AndroidManifest @@ -246,6 +263,8 @@ return vc2010.categories.AntBuildXml elseif filename == "project.properties" then return vc2010.categories.AntProjectPropertiesFile + elseif extension == ".java" then + return vc2010.categories.JavaCompile else return vc2010.categories.Content end Index: build/premake/premake5/modules/android/vsandroid_sln2005.lua =================================================================== --- build/premake/premake5/modules/android/vsandroid_sln2005.lua +++ build/premake/premake5/modules/android/vsandroid_sln2005.lua @@ -30,7 +30,7 @@ function android.deployProject(cfg, context) - if context.prjCfg.kind == p.ANDROIDPROJ and _ACTION >= "vs2015" then + if context.prjCfg.kind == p.PACKAGING and _ACTION >= "vs2015" then p.w('{%s}.%s.Deploy.0 = %s|%s', context.prj.uuid, context.descriptor, context.platform, context.architecture) end end Index: build/premake/premake5/modules/android/vsandroid_vcxproj.lua =================================================================== --- build/premake/premake5/modules/android/vsandroid_vcxproj.lua +++ build/premake/premake5/modules/android/vsandroid_vcxproj.lua @@ -16,6 +16,15 @@ local config = p.config +-- +-- Utility functions +-- + local function setBoolOption(optionName, flag, value) + if flag ~= nil then + vc2010.element(optionName, nil, value) + end + end + -- -- Add android tools to vstudio actions. -- @@ -34,7 +43,7 @@ premake.override(vc2010.elements, "globals", function (oldfn, prj) local elements = oldfn(prj) - if prj.system == premake.ANDROID and prj.kind ~= premake.ANDROIDPROJ then + if prj.system == premake.ANDROID and prj.kind ~= premake.PACKAGING then -- Remove "IgnoreWarnCompileDuplicatedFilename". local pos = table.indexof(elements, vc2010.ignoreWarnDuplicateFilename) table.remove(elements, pos) @@ -45,11 +54,11 @@ return elements end) - + premake.override(vc2010.elements, "globalsCondition", function (oldfn, prj, cfg) local elements = oldfn(prj, cfg) - - if cfg.system == premake.ANDROID and cfg.system ~= prj.system and cfg.kind ~= premake.ANDROIDPROJ then + + if cfg.system == premake.ANDROID and cfg.system ~= prj.system and cfg.kind ~= premake.PACKAGING then elements = table.join(elements, { android.androidApplicationType }) @@ -59,16 +68,16 @@ end) function android.androidApplicationType(cfg) - _p(2, "Android") - _p(2, "%s", cfg.project.name) - _p(2, "14.0") - _p(2, "Android") + vc2010.element("Keyword", nil, "Android") + vc2010.element("RootNamespace", nil, "%s", cfg.project.name) + vc2010.element("MinimumVisualStudioVersion", nil, "15.0") -- Use 14.0 for VS2015? + vc2010.element("ApplicationType", nil, "Android") if _ACTION >= "vs2017" then - _p(2, "3.0") + vc2010.element("ApplicationTypeRevision", nil, "3.0") elseif _ACTION >= "vs2015" then - _p(2, "2.0") + vc2010.element("ApplicationTypeRevision", nil, "2.0") else - _p(2, "1.0") + vc2010.element("ApplicationTypeRevision", nil, "1.0") end end @@ -78,7 +87,12 @@ premake.override(vc2010.elements, "configurationProperties", function(oldfn, cfg) local elements = oldfn(cfg) - if cfg.kind ~= p.UTILITY and cfg.kind ~= p.ANDROIDPROJ and cfg.system == premake.ANDROID then + + if cfg.kind ~= p.UTILITY and cfg.kind ~= p.PACKAGING and cfg.system == premake.ANDROID then + table.remove(elements, table.indexof(elements, vc2010.characterSet)) + table.remove(elements, table.indexof(elements, vc2010.wholeProgramOptimization)) + table.remove(elements, table.indexof(elements, vc2010.windowsSDKDesktopARMSupport)) + elements = table.join(elements, { android.androidAPILevel, android.androidStlType, @@ -95,42 +109,40 @@ function android.androidAPILevel(cfg) if cfg.androidapilevel ~= nil then - _p(2,'android-%d', cfg.androidapilevel) + vc2010.element("AndroidAPILevel", nil, "android-" .. cfg.androidapilevel) end end function android.androidStlType(cfg) if cfg.stl ~= nil then local stlType = { - ["none"] = "none", - ["minimal c++ (system)"] = "system", - ["c++ static"] = "gabi++_static", - ["c++ shared"] = "gabi++_shared", - ["stlport static"] = "stlport_static", - ["stlport shared"] = "stlport_shared", - ["gnu stl static"] = "gnustl_static", - ["gnu stl shared"] = "gnustl_shared", - ["llvm libc++ static"] = "c++_static", - ["llvm libc++ shared"] = "c++_shared", + ["none"] = "system", + ["gabi++"] = "gabi++", + ["stlport"] = "stlport", + ["gnustl"] = "gnustl", + ["libc++"] = "c++", } + local postfix = iif(cfg.staticruntime == "On", "_static", "_shared") + local runtimeLib = iif(cfg.stl == "none", "system", stlType[cfg.stl] .. postfix) + if _ACTION >= "vs2015" then - _p(2,'%s', stlType[cfg.stl]) + vc2010.element("UseOfStl", nil, runtimeLib) else - _p(2,'%s', stlType[cfg.stl]) + vc2010.element("AndroidStlType", nil, runtimeLib) end end end function android.thumbMode(cfg) - if cfg.thumbmode then + if cfg.thumbmode ~= nil then local thumbMode = { thumb = "Thumb", arm = "ARM", disabled = "Disabled", } - _p(2,"%s", thumbMode[cfg.thumbmode]) + vc2010.element("ThumbMode", nil, thumbMode[cfg.thumbmode]) end end @@ -142,26 +154,27 @@ if _ACTION >= "vs2015" then local gcc_map = { - ["_"] = "GCC_4_9", -- default ["4.6"] = "GCC_4_6", ["4.8"] = "GCC_4_8", ["4.9"] = "GCC_4_9", } local clang_map = { - ["_"] = "Clang_3_8", -- default ["3.4"] = "Clang_3_4", ["3.5"] = "Clang_3_5", ["3.6"] = "Clang_3_6", ["3.8"] = "Clang_3_8", + ["5.0"] = "Clang_5_0", } - local map = iif(cfg.toolset == "gcc", gcc_map, clang_map) - local ts = map[cfg.toolchainversion or "_"] - if ts == nil then - p.error('Invalid toolchainversion for the selected toolset (%s).', cfg.toolset or "clang") + if cfg.toolchainversion ~= nil then + local map = iif(cfg.toolset == "gcc", gcc_map, clang_map) + local ts = map[cfg.toolchainversion] + if ts == nil then + p.error('Invalid toolchainversion for the selected toolset (%s).', cfg.toolset or "clang") + end + + vc2010.element("PlatformToolset", nil, ts) end - - _p(2, "%s", ts) else local archMap = { arm = "armv5te", -- should arm5 be default? vs-android thinks so... @@ -194,8 +207,8 @@ local version = cfg.toolchainversion or iif(cfg.toolset == "clang", "3.5", "4.9") - _p(2,'%s', toolset .. version) - _p(2,'%s', archMap[arch]) + vc2010.element("PlatformToolset", nil, toolset .. version) + vc2010.element("AndroidArch", nil, archMap[arch]) end end end) @@ -211,19 +224,36 @@ elements = table.join(elements, { android.debugInformation, android.strictAliasing, - android.thumbMode, android.fpu, android.pic, --- android.ShortEnums, + android.shortEnums, + android.cStandard, + android.cppStandard, }) if _ACTION >= "vs2015" then table.remove(elements, table.indexof(elements, vc2010.debugInformationFormat)) - table.remove(elements, table.indexof(elements, android.thumbMode)) + + -- Android has C[pp]LanguageStandard instead. + table.remove(elements, table.indexof(elements, vc2010.languageStandard)) + -- Ignore multiProcessorCompilation for android projects, they use UseMultiToolTask instead. + table.remove(elements, table.indexof(elements, vc2010.multiProcessorCompilation)) + -- minimalRebuild also ends up in android projects somehow. + table.remove(elements, table.indexof(elements, vc2010.minimalRebuild)) + + -- VS has NEON support through EnableNeonCodegen. + table.replace(elements, vc2010.enableEnhancedInstructionSet, android.enableEnhancedInstructionSet) + -- precompiledHeaderFile support. + table.replace(elements, vc2010.precompiledHeaderFile, android.precompiledHeaderFile) end end return elements end) + function android.precompiledHeaderFile(fileName, cfg) + -- Doesn't work for project-relative paths. + vc2010.element("PrecompiledHeaderFile", nil, "%s", path.getabsolute(path.rebase(fileName, cfg.basedir, cfg.location))) + end + function android.debugInformation(cfg) if cfg.flags.Symbols then _p(3,'true') @@ -232,13 +262,7 @@ function android.strictAliasing(cfg) if cfg.strictaliasing ~= nil then - _p(3,'%s', iif(cfg.strictaliasing == "Off", "false", "true")) - end - end - - function android.thumbMode(cfg) - if cfg.flags.Thumb then - _p(3,'true') + vc2010.element("StrictAliasing", nil, iif(cfg.strictaliasing == "Off", "false", "true")) end end @@ -249,41 +273,74 @@ end function android.pic(cfg) - -- TODO: We only have a flag to turn it on, but android is on by default - -- it seems we would rather have a flag to turn it off... --- if cfg.pic ~= nil then --- _p(3,'%s', iif(cfg.pic == "On", "true", "false")) --- end + if cfg.pic ~= nil then + vc2010.element("PositionIndependentCode", nil, iif(cfg.pic == "On", "true", "false")) + end + end + + function android.verboseCompiler(cfg) + setBoolOption("Verbose", cfg.flags.VerboseCompiler, "true") + end + + function android.undefineAllPreprocessorDefinitions(cfg) + setBoolOption("UndefineAllPreprocessorDefinitions", cfg.flags.UndefineAllPreprocessorDefinitions, "true") + end + + function android.showIncludes(cfg) + setBoolOption("ShowIncludes", cfg.flags.ShowIncludes, "true") end - p.override(vc2010, "languageStandard", function(oldfn, cfg) - if cfg.system == p.ANDROID then - local cpp_langmap = { - ["C++98"] = "c++98", - ["C++11"] = "c++11", - ["C++14"] = "c++1y", - ["gnu++98"] = "gnu++98", - ["gnu++11"] = "gnu++11", - ["gnu++14"] = "gnu++1y", - } - if cpp_langmap[cfg.cppdialect] ~= nil then - vc2010.element("CppLanguageStandard", nil, cpp_langmap[cfg.cppdialect]) - end - else - oldfn(cfg) + function android.dataLevelLinking(cfg) + setBoolOption("DataLevelLinking", cfg.flags.DataLevelLinking, "true") + end + + function android.shortEnums(cfg) + setBoolOption("UseShortEnums", cfg.flags.UseShortEnums, "true") + end + + function android.cStandard(cfg) + local c_langmap = { + ["C98"] = "c98", + ["C99"] = "c99", + ["C11"] = "c11", + ["gnu99"] = "gnu99", + ["gnu11"] = "gnu11", + } + if c_langmap[cfg.cdialect] ~= nil then + vc2010.element("CLanguageStandard", nil, c_langmap[cfg.cdialect]) end - end) + end + + function android.cppStandard(cfg) + local cpp_langmap = { + ["C++98"] = "c++98", + ["C++11"] = "c++11", + ["C++14"] = "c++1y", + ["C++17"] = "c++1z", + ["C++latest"] = "c++1z", + ["gnu++98"] = "gnu++98", + ["gnu++11"] = "gnu++11", + ["gnu++14"] = "gnu++1y", + ["gnu++17"] = "gnu++1z", + } + if cpp_langmap[cfg.cppdialect] ~= nil then + vc2010.element("CppLanguageStandard", nil, cpp_langmap[cfg.cppdialect]) + end + end p.override(vc2010, "additionalCompileOptions", function(oldfn, cfg, condition) if cfg.system == p.ANDROID then local opts = cfg.buildoptions - local cpp_langmap = { - ["C++17"] = "-std=c++1z", - ["gnu++17"] = "-std=gnu++1z", - } - if cpp_langmap[cfg.cppdialect] ~= nil then - table.insert(opts, cpp_langmap[cfg.cppdialect]) + if cfg.disablewarnings and #cfg.disablewarnings > 0 then + for _, warning in ipairs(cfg.disablewarnings) do + table.insert(opts, '-Wno-' .. warning) + end + end + + -- -fvisibility=<> + if cfg.visibility ~= nil then + table.insert(opts, p.tools.gcc.cxxflags.visibility[cfg.visibility]) end if #opts > 0 then @@ -295,9 +352,9 @@ end end) - p.override(p.vstudio.vc2010, "warningLevel", function(oldfn, cfg) + p.override(vc2010, "warningLevel", function(oldfn, cfg) if _ACTION >= "vs2015" and cfg.system == p.ANDROID and cfg.warnings and cfg.warnings ~= "Off" then - p.vstudio.vc2010.element("WarningLevel", nil, "EnableAllWarnings") + vc2010.element("WarningLevel", nil, "EnableAllWarnings") elseif (_ACTION >= "vs2015" and cfg.system == p.ANDROID and cfg.warnings) or not (_ACTION >= "vs2015" and cfg.system == p.ANDROID) then oldfn(cfg) end @@ -314,10 +371,17 @@ premake.override(vc2010, "exceptionHandling", function(oldfn, cfg, condition) if cfg.system == p.ANDROID then -- Note: Android defaults to 'off' - if cfg.exceptionhandling then - if _ACTION >= "vs2015" then - vc2010.element("ExceptionHandling", condition, "Enabled") - else + local exceptions = { + On = "Enabled", + Off = "Disabled", + UnwindTables = "UnwindTables", + } + if _ACTION >= "vs2015" then + if exceptions[cfg.exceptionhandling] ~= nil then + vc2010.element("ExceptionHandling", condition, exceptions[cfg.exceptionhandling]) + end + else + if cfg.exceptionhandling == premake.ON then vc2010.element("GccExceptionHandling", condition, "true") end end @@ -326,10 +390,16 @@ end end) + function android.enableEnhancedInstructionSet(cfg) + if cfg.vectorextensions == "NEON" then + vc2010.element("EnableNeonCodegen", nil, "true") + end + end + premake.override(vc2010, "runtimeTypeInfo", function(oldfn, cfg, condition) if cfg.system == premake.ANDROID then -- Note: Android defaults to 'off' - if cfg.rtti then + if cfg.rtti == premake.ON then vc2010.element("RuntimeTypeInfo", condition, "true") end else @@ -538,6 +608,23 @@ end end) +function android.useMultiToolTask(cfg) + -- Android equivalent of 'MultiProcessorCompilation' + if cfg.flags.MultiProcessorCompile then + vc2010.element("UseMultiToolTask", nil, "true") + end +end + +premake.override(vc2010.elements, "outputProperties", function(oldfn, cfg) + if cfg.system == p.ANDROID then + return table.join(oldfn(cfg), { + android.useMultiToolTask, + }) + else + return oldfn(cfg) + end +end) + -- -- Disable override of OutDir. This is breaking deployment. -- Index: build/premake/premake5/modules/codelite/codelite.lua =================================================================== --- build/premake/premake5/modules/codelite/codelite.lua +++ build/premake/premake5/modules/codelite/codelite.lua @@ -27,10 +27,9 @@ end function codelite.esc(value) - local result = value:gsub('"', '\\"') + local result = value:gsub('&', '&') result = result:gsub('<', '<') result = result:gsub('>', '>') - result = result:gsub('&', '&') return result end Index: build/premake/premake5/modules/codelite/codelite_project.lua =================================================================== --- build/premake/premake5/modules/codelite/codelite_project.lua +++ build/premake/premake5/modules/codelite/codelite_project.lua @@ -124,7 +124,6 @@ end, -- source files are handled at the leaves onleaf = function(node, depth) - local excludesFromBuild = {} for cfg in project.eachconfig(prj) do local cfgname = codelite.cfgname(cfg) @@ -140,7 +139,7 @@ _p(depth, '', node.relpath) end end, - }, false, 1) + }, true) end function m.dependencies(prj) @@ -197,8 +196,9 @@ end local toolset = m.getcompiler(cfg) - local cxxflags = table.concat(table.join(toolset.getcxxflags(cfg), cfg.buildoptions), ";") - local cflags = table.concat(table.join(toolset.getcflags(cfg), cfg.buildoptions), ";") + local forceincludes = toolset.getforceincludes(cfg) + local cxxflags = table.concat(table.join(toolset.getcxxflags(cfg), forceincludes, cfg.buildoptions), ";") + local cflags = table.concat(table.join(toolset.getcflags(cfg), forceincludes, cfg.buildoptions), ";") local asmflags = "" local pch = "" @@ -268,9 +268,20 @@ local pauseexec = iif(prj.kind == "ConsoleApp", "yes", "no") local isguiprogram = iif(prj.kind == "WindowedApp", "yes", "no") local isenabled = iif(cfg.flags.ExcludeFromBuild, "no", "yes") + local ldPath = '' - _x(3, '', - targetname, objdir, command, cmdargs, useseparatedebugargs, debugargs, workingdir, pauseexec, isguiprogram, isenabled) + for _, libdir in ipairs(cfg.libdirs) do + ldPath = ldPath .. ":" .. project.getrelative(cfg.project, libdir) + end + + if ldPath == nil or ldPath == '' then + _x(3, '', + targetname, objdir, command, cmdargs, useseparatedebugargs, debugargs, workingdir, pauseexec, isguiprogram, isenabled) + else + ldPath = string.sub(ldPath, 2) + _x(3, '', + targetname, objdir, ldPath, command, cmdargs, useseparatedebugargs, debugargs, workingdir, pauseexec, isguiprogram, isenabled) + end end function m.environment(cfg) @@ -307,8 +318,7 @@ _p(3, '') local commands = os.translateCommandsAndPaths(cfg.prebuildcommands, cfg.project.basedir, cfg.project.location) for _, command in ipairs(commands) do - _x(4, '%s', - p.esc(command)) + _x(4, '%s', command) end _p(3, '') end @@ -319,8 +329,7 @@ _p(3, '') local commands = os.translateCommandsAndPaths(cfg.postbuildcommands, cfg.project.basedir, cfg.project.location) for _, command in ipairs(commands) do - _x(4, '%s', - p.esc(command)) + _x(4, '%s', command) end _p(3, '') end Index: build/premake/premake5/modules/codelite/tests/test_codelite_config.lua =================================================================== --- build/premake/premake5/modules/codelite/tests/test_codelite_config.lua +++ build/premake/premake5/modules/codelite/tests/test_codelite_config.lua @@ -17,6 +17,7 @@ function suite.setup() p.action.set("codelite") + p.escaper(codelite.esc) p.indent(" ") wks = test.createWorkspace() end @@ -45,11 +46,12 @@ language "C++" cppdialect "C++11" flags { "NoBufferSecurityCheck" } + forceincludes { "forced_include1.h", "forced_include2.h" } buildoptions { "-opt1", "-opt2" } prepare() codelite.project.compiler(cfg) test.capture [[ - + ]] end @@ -198,6 +200,21 @@ ]] end + function suite.OnProject_PreBuild_Escaped() + prebuildcommands { + "touch \"./build/copyright\" && echo OK", + "cat \"./lib/copyright\" >> \"./build/copyright\"" + } + prepare() + codelite.project.preBuild(prj) + test.capture [[ + + touch "./build/copyright" && echo OK + cat "./lib/copyright" >> "./build/copyright" + + ]] + end + function suite.OnProject_PostBuild() postbuildcommands { "cmd0", "cmd1" } prepare() @@ -210,6 +227,21 @@ ]] end + function suite.OnProject_PostBuild_Escaped() + postbuildcommands { + "touch \"./build/copyright\" && echo OK", + "cat \"./lib/copyright\" >> \"./build/copyright\"" + } + prepare() + codelite.project.postBuild(prj) + test.capture [[ + + touch "./build/copyright" && echo OK + cat "./lib/copyright" >> "./build/copyright" + + ]] + end + -- TODO: test custom build Index: build/premake/premake5/modules/codelite/tests/test_codelite_project.lua =================================================================== --- build/premake/premake5/modules/codelite/tests/test_codelite_project.lua +++ build/premake/premake5/modules/codelite/tests/test_codelite_project.lua @@ -17,6 +17,7 @@ function suite.setup() p.action.set("codelite") + p.escaper(codelite.esc) p.indent(" ") wks = test.createWorkspace() end Index: build/premake/premake5/modules/codelite/tests/test_codelite_workspace.lua =================================================================== --- build/premake/premake5/modules/codelite/tests/test_codelite_workspace.lua +++ build/premake/premake5/modules/codelite/tests/test_codelite_workspace.lua @@ -18,6 +18,7 @@ function suite.setup() p.action.set("codelite") + p.escaper(codelite.esc) p.indent(" ") wks = test.createWorkspace() end Index: build/premake/premake5/modules/d/actions/visuald.lua =================================================================== --- build/premake/premake5/modules/d/actions/visuald.lua +++ build/premake/premake5/modules/d/actions/visuald.lua @@ -21,7 +21,7 @@ -- Patch the vstudio actions with D support... -- - for k,v in pairs({ "vs2005", "vs2008", "vs2010", "vs2012", "vs2013", "vs2015", "vs2017" }) do + for k,v in pairs({ "vs2005", "vs2008", "vs2010", "vs2012", "vs2013", "vs2015", "vs2017", "vs2019" }) do local vs = p.action.get(v) if vs ~= nil then table.insert( vs.valid_languages, p.D ) Index: build/premake/premake5/modules/gmake/tests/cpp/test_flags.lua =================================================================== --- build/premake/premake5/modules/gmake/tests/cpp/test_flags.lua +++ build/premake/premake5/modules/gmake/tests/cpp/test_flags.lua @@ -38,3 +38,107 @@ INCLUDES += -Isrc/include -I../include ]] end + + +-- +-- symbols "on" should produce -g +-- + function suite.symbols_on() + symbols "on" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + +-- +-- symbols default to 'off' +-- + function suite.symbols_default() + symbols "default" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) + ]] + end + +-- +-- All other symbols flags also produce -g +-- + function suite.symbols_fastlink() + symbols "FastLink" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + + function suite.symbols_full() + symbols "full" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + +-- +-- symbols "off" should not produce -g +-- + function suite.symbols_off() + symbols "off" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) + ]] + end + +-- +-- symbols "on" with a proper debugformat should produce a corresponding -g +-- + function suite.symbols_on_default() + symbols "on" + debugformat "Default" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + + function suite.symbols_on_dwarf() + symbols "on" + debugformat "Dwarf" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -gdwarf + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -gdwarf + ]] + end + + function suite.symbols_on_split_dwarf() + symbols "on" + debugformat "SplitDwarf" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -gsplit-dwarf + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -gsplit-dwarf + ]] + end + +-- +-- symbols "off" with a proper debugformat should not produce -g +-- + function suite.symbols_off_dwarf() + symbols "off" + debugformat "Dwarf" + prepare { "cFlags", "cxxFlags" } + test.capture [[ + ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) + ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) + ]] + end Index: build/premake/premake5/modules/gmake2/gmake2.lua =================================================================== --- build/premake/premake5/modules/gmake2/gmake2.lua +++ build/premake/premake5/modules/gmake2/gmake2.lua @@ -259,6 +259,73 @@ end + -- convert a rule property into a string + + function gmake2.expandRuleString(rule, prop, value) + -- list? + if type(value) == "table" then + if #value > 0 then + if prop.switch then + return prop.switch .. table.concat(value, " " .. prop.switch) + else + prop.separator = prop.separator or " " + return table.concat(value, prop.separator) + end + else + return nil + end + end + + -- bool just emits the switch + if prop.switch and type(value) == "boolean" then + if value then + return prop.switch + else + return nil + end + end + + local switch = prop.switch or "" + + -- enum? + if prop.values then + value = table.findKeyByValue(prop.values, value) + if value == nil then + value = "" + end + end + + -- primitive + value = tostring(value) + if #value > 0 then + return switch .. value + else + return nil + end + end + + + function gmake2.prepareEnvironment(rule, environ, cfg) + for _, prop in ipairs(rule.propertydefinition) do + local fld = p.rule.getPropertyField(rule, prop) + local value = cfg[fld.name] + if value ~= nil then + + if fld.kind == "path" then + value = gmake2.path(cfg, value) + elseif fld.kind == "list:path" then + value = gmake2.path(cfg, value) + end + + value = gmake2.expandRuleString(rule, prop, value) + if value ~= nil and #value > 0 then + environ[prop.name] = p.esc(value) + end + end + end + end + + --------------------------------------------------------------------------- -- -- Handlers for the individual makefile elements that can be shared Index: build/premake/premake5/modules/gmake2/gmake2_cpp.lua =================================================================== --- build/premake/premake5/modules/gmake2/gmake2_cpp.lua +++ build/premake/premake5/modules/gmake2/gmake2_cpp.lua @@ -58,19 +58,19 @@ function cpp.initialize() rule 'cpp' fileExtension { ".cc", ".cpp", ".cxx", ".mm" } - buildoutputs { "$(OBJDIR)/%{premake.modules.gmake2.cpp.makeUnique(cfg, file.objname)}.o" } + buildoutputs { "$(OBJDIR)/%{file.objname}.o" } buildmessage '$(notdir $<)' buildcommands {'$(CXX) %{premake.modules.gmake2.cpp.fileFlags(cfg, file)} $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"'} rule 'cc' fileExtension {".c", ".s", ".m"} - buildoutputs { "$(OBJDIR)/%{premake.modules.gmake2.cpp.makeUnique(cfg, file.objname)}.o" } + buildoutputs { "$(OBJDIR)/%{file.objname}.o" } buildmessage '$(notdir $<)' buildcommands {'$(CC) %{premake.modules.gmake2.cpp.fileFlags(cfg, file)} $(FORCE_INCLUDE) -o "$@" -MF "$(@:%.o=%.d)" -c "$<"'} rule 'resource' fileExtension ".rc" - buildoutputs { "$(OBJDIR)/%{premake.modules.gmake2.cpp.makeUnique(cfg, file.objname)}.res" } + buildoutputs { "$(OBJDIR)/%{file.objname}.res" } buildmessage '$(notdir $<)' buildcommands {'$(RESCOMP) $< -O coff -o "$@" $(ALL_RESFLAGS)'} @@ -124,7 +124,6 @@ cfg._gmake = cfg._gmake or {} cfg._gmake.filesets = {} cfg._gmake.fileRules = {} - cfg._gmake.bases = {} local files = table.shallowcopy(prj._.files) table.foreachi(files, function(node) @@ -255,26 +254,6 @@ cpp.addRuleFile(cfg, node) end - function cpp.prepareEnvironment(rule, environ, cfg) - for _, prop in ipairs(rule.propertydefinition) do - local fld = p.rule.getPropertyField(rule, prop) - local value = cfg[fld.name] - if value ~= nil then - - if fld.kind == "path" then - value = gmake2.path(cfg, value) - elseif fld.kind == "list:path" then - value = gmake2.path(cfg, value) - end - - value = p.rule.expandString(rule, prop, value) - if value ~= nil and #value > 0 then - environ[prop.name] = p.esc(value) - end - end - end - end - function cpp.addRuleFile(cfg, node) local rules = cfg.project._gmake.rules local fileext = cpp.determineFiletype(cfg, node) @@ -285,8 +264,8 @@ local environ = table.shallowcopy(filecfg.environ) if rule.propertydefinition then - cpp.prepareEnvironment(rule, environ, cfg) - cpp.prepareEnvironment(rule, environ, filecfg) + gmake2.prepareEnvironment(rule, environ, cfg) + gmake2.prepareEnvironment(rule, environ, filecfg) end local shadowContext = p.context.extent(rule, environ) @@ -768,18 +747,6 @@ -- Output the file compile targets. -- - function cpp.makeUnique(cfg, f) - local cache = cfg._gmake.bases - local seq = cache[f] - if seq == nil then - cache[f] = 1 - return f - else - cache[f] = seq + 1 - return f .. tostring(seq) - end - end - cpp.elements.fileRules = function(cfg) local funcs = {} for _, fileRule in ipairs(cfg._gmake.fileRules) do Index: build/premake/premake5/modules/gmake2/gmake2_utility.lua =================================================================== --- build/premake/premake5/modules/gmake2/gmake2_utility.lua +++ build/premake/premake5/modules/gmake2/gmake2_utility.lua @@ -166,26 +166,6 @@ end - function utility.prepareEnvironment(rule, environ, cfg) - for _, prop in ipairs(rule.propertydefinition) do - local fld = p.rule.getPropertyField(rule, prop) - local value = cfg[fld.name] - if value ~= nil then - - if fld.kind == "path" then - value = gmake2.path(cfg, value) - elseif fld.kind == "list:path" then - value = gmake2.path(cfg, value) - end - - value = p.rule.expandString(rule, prop, value) - if value ~= nil and #value > 0 then - environ[prop.name] = p.esc(value) - end - end - end - end - function utility.addRuleFile(cfg, node) local rules = cfg.project._gmake.rules local rule = rules[path.getextension(node.abspath):lower()] @@ -195,8 +175,8 @@ local environ = table.shallowcopy(filecfg.environ) if rule.propertydefinition then - utility.prepareEnvironment(rule, environ, cfg) - utility.prepareEnvironment(rule, environ, filecfg) + gmake2.prepareEnvironment(rule, environ, cfg) + gmake2.prepareEnvironment(rule, environ, filecfg) end local shadowContext = p.context.extent(rule, environ) Index: build/premake/premake5/modules/gmake2/tests/test_gmake2_file_rules.lua =================================================================== --- build/premake/premake5/modules/gmake2/tests/test_gmake2_file_rules.lua +++ build/premake/premake5/modules/gmake2/tests/test_gmake2_file_rules.lua @@ -36,9 +36,20 @@ value = false, switch = "-p2" } + + propertydefinition { + name = "TestListProperty", + kind = "list" + } + + propertydefinition { + name = "TestListPropertySeparator", + kind = "list", + separator = "," + } buildmessage 'Rule-ing %{file.name}' - buildcommands 'dorule %{TestProperty} %{TestProperty2} "%{file.path}"' + buildcommands 'dorule %{TestProperty} %{TestProperty2} %{TestListProperty} %{TestListPropertySeparator} "%{file.path}"' buildoutputs { "%{file.basename}.obj" } wks = test.createWorkspace() @@ -278,9 +289,40 @@ test.obj: test.rule @echo Rule-ing test.rule - $(SILENT) dorule -p "test.rule" + $(SILENT) dorule -p "test.rule" test2.obj: test2.rule @echo Rule-ing test2.rule - $(SILENT) dorule -p -p2 "test2.rule" + $(SILENT) dorule -p -p2 "test2.rule" ]] end + + function suite.propertydefinitionSeparator() + + rules { "TestRule" } + + files { "test.rule", "test2.rule" } + + filter "files:test.rule" + testRuleVars { + TestListProperty = { "testValue1", "testValue2" } + } + + filter "files:test2.rule" + testRuleVars { + TestListPropertySeparator = { "testValue1", "testValue2" } + } + + prepare() + test.capture [[ +# File Rules +# ############################################# + +test.obj: test.rule + @echo Rule-ing test.rule + $(SILENT) dorule testValue1\ testValue2 "test.rule" +test2.obj: test2.rule + @echo Rule-ing test2.rule + $(SILENT) dorule testValue1,testValue2 "test2.rule" + ]] + end + Index: build/premake/premake5/modules/gmake2/tests/test_gmake2_flags.lua =================================================================== --- build/premake/premake5/modules/gmake2/tests/test_gmake2_flags.lua +++ build/premake/premake5/modules/gmake2/tests/test_gmake2_flags.lua @@ -40,3 +40,106 @@ INCLUDES += -Isrc/include -I../include ]] end + +-- +-- symbols "on" should produce -g +-- + function suite.symbols_on() + symbols "on" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + +-- +-- symbols default to 'off' +-- + function suite.symbols_default() + symbols "default" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) + ]] + end + +-- +-- symbols "off" should not produce -g +-- + function suite.symbols_off() + symbols "off" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) + ]] + end + +-- +-- All other symbols flags also produce -g +-- + function suite.symbols_fastlink() + symbols "FastLink" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + + function suite.symbols_full() + symbols "full" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + +-- +-- symbols "on" with a proper debugformat should produce a corresponding -g +-- + function suite.symbols_on_default() + symbols "on" + debugformat "Default" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -g +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -g + ]] + end + + function suite.symbols_on_dwarf() + symbols "on" + debugformat "Dwarf" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -gdwarf +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -gdwarf + ]] + end + + function suite.symbols_on_split_dwarf() + symbols "on" + debugformat "SplitDwarf" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) -gsplit-dwarf +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) -gsplit-dwarf + ]] + end + +-- +-- symbols "off" with a proper debugformat should not produce -g +-- + function suite.symbols_off_dwarf() + symbols "off" + debugformat "Dwarf" + prepare { "cFlags", "cxxFlags" } + test.capture [[ +ALL_CFLAGS += $(CFLAGS) $(ALL_CPPFLAGS) +ALL_CXXFLAGS += $(CXXFLAGS) $(ALL_CPPFLAGS) + ]] + end Index: build/premake/premake5/modules/gmake2/tests/test_gmake2_objects.lua =================================================================== --- build/premake/premake5/modules/gmake2/tests/test_gmake2_objects.lua +++ build/premake/premake5/modules/gmake2/tests/test_gmake2_objects.lua @@ -117,6 +117,52 @@ ]] end + function suite.uniqueObjNames_onBaseNameCollision2() + files { "a/hello.cpp", "b/hello.cpp", "c/hello1.cpp" } + prepare() + test.capture [[ +# File sets +# ############################################# + +OBJECTS := + +OBJECTS += $(OBJDIR)/hello.o +OBJECTS += $(OBJDIR)/hello1.o +OBJECTS += $(OBJDIR)/hello11.o + + ]] + end + + function suite.uniqueObjectNames_onBaseNameCollision_Release() + files { "a/hello.cpp", "b/hello.cpp", "c/hello1.cpp", "d/hello11.cpp" } + filter "configurations:Debug" + excludes {"b/hello.cpp"} + filter "configurations:Release" + excludes {"d/hello11.cpp"} + + prepare() + test.capture [[ +# File sets +# ############################################# + +OBJECTS := + +OBJECTS += $(OBJDIR)/hello.o +OBJECTS += $(OBJDIR)/hello11.o + +ifeq ($(config),debug) +OBJECTS += $(OBJDIR)/hello111.o + +else ifeq ($(config),release) +OBJECTS += $(OBJDIR)/hello1.o + +else + $(error "invalid configuration $(config)") +endif + + ]] + end + -- -- If there's a custom rule for a non-C++ file extension, make sure that those Index: build/premake/premake5/modules/vstudio/_manifest.lua =================================================================== --- build/premake/premake5/modules/vstudio/_manifest.lua +++ build/premake/premake5/modules/vstudio/_manifest.lua @@ -23,4 +23,5 @@ "vs2013.lua", "vs2015.lua", "vs2017.lua", + "vs2019.lua" } Index: build/premake/premake5/modules/vstudio/_preload.lua =================================================================== --- build/premake/premake5/modules/vstudio/_preload.lua +++ build/premake/premake5/modules/vstudio/_preload.lua @@ -20,6 +20,7 @@ include("vs2013.lua") include("vs2015.lua") include("vs2017.lua") + include("vs2019.lua") -- Initialize Specific API @@ -67,6 +68,12 @@ "4.0", "4.1", "5.0", + "rootsig_1.0", + "rootsig_1.1", + "6.0", + "6.1", + "6.2", + "6.3" } } @@ -140,5 +147,7 @@ _ACTION == "vs2012" or _ACTION == "vs2013" or _ACTION == "vs2015" or - _ACTION == "vs2017"; + _ACTION == "vs2017" or + _ACTION == "vs2019" or + false; end Index: build/premake/premake5/modules/vstudio/tests/cs2005/projectsettings.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/cs2005/projectsettings.lua +++ build/premake/premake5/modules/vstudio/tests/cs2005/projectsettings.lua @@ -153,7 +153,24 @@ ]] end - + function suite.onVs2019() + p.action.set("vs2019") + prepare() + test.capture [[ + + Debug + AnyCPU + {AE61726D-187C-E440-BD07-2556188A6565} + Exe + Properties + MyProject + MyProject + v4.7.2 + 512 + true + + ]] + end -- -- Framework Tests -- Index: build/premake/premake5/modules/vstudio/tests/dotnet2005/projectelement.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/dotnet2005/projectelement.lua +++ build/premake/premake5/modules/vstudio/tests/dotnet2005/projectelement.lua @@ -90,6 +90,15 @@ prepare() test.capture [[ + + ]] + end + + function suite.on2019() + p.action.set("vs2019") + prepare() + test.capture [[ + ]] end Index: build/premake/premake5/modules/vstudio/tests/fs2005/projectsettings.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/fs2005/projectsettings.lua +++ build/premake/premake5/modules/vstudio/tests/fs2005/projectsettings.lua @@ -153,6 +153,24 @@ ]] end + function suite.onVs2019() + p.action.set("vs2019") + prepare() + test.capture [[ + + Debug + AnyCPU + {AE61726D-187C-E440-BD07-2556188A6565} + Exe + Properties + MyProject + MyProject + v4.7.2 + 512 + true + + ]] + end function suite.onVs2015_462() p.action.set("vs2015") Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_compile_settings.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_compile_settings.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_compile_settings.lua @@ -1133,6 +1133,21 @@ ]] end + function suite.onLanguage_Cpp14_VS2019() + p.action.set("vs2019") + + cppdialect 'C++14' + prepare() + test.capture [[ + + NotUsing + Level3 + Disabled + stdcpp14 + + ]] + end + function suite.onLanguage_Cpp17_VS2010() cppdialect 'C++17' prepare() @@ -1175,6 +1190,21 @@ ]] end + function suite.onLanguage_Cpp17_VS2019() + p.action.set("vs2019") + + cppdialect 'C++17' + prepare() + test.capture [[ + + NotUsing + Level3 + Disabled + stdcpp17 + + ]] + end + function suite.onLanguage_CppLatest_VS2010() cppdialect 'C++latest' prepare() @@ -1217,6 +1247,21 @@ ]] end + function suite.onLanguage_CppLatest_VS2019() + p.action.set("vs2019") + + cppdialect 'C++latest' + prepare() + test.capture [[ + + NotUsing + Level3 + Disabled + stdcpplatest + + ]] + end + -- -- Check StaticLib SymbolsPath -- Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_files.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_files.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_files.lua @@ -422,6 +422,64 @@ end + function suite.uniqueObjectNames_onBaseNameCollision1() + files { "a/hello.cpp", "b/hello.cpp", "c/hello1.cpp" } + prepare() + test.capture [[ + + + + $(IntDir)\hello1.obj + + + $(IntDir)\hello11.obj + + + ]] + end + + + function suite.uniqueObjectNames_onBaseNameCollision2() + files { "a/hello1.cpp", "b/hello.cpp", "c/hello.cpp" } + prepare() + test.capture [[ + + + + + $(IntDir)\hello2.obj + + + ]] + end + + + function suite.uniqueObjectNames_onBaseNameCollision_Release() + files { "a/hello.cpp", "b/hello.cpp", "c/hello1.cpp", "d/hello11.cpp" } + filter "configurations:Debug" + excludes {"b/hello.cpp"} + filter "configurations:Release" + excludes {"d/hello11.cpp"} + + prepare() + test.capture [[ + + + + true + $(IntDir)\hello1.obj + + + $(IntDir)\hello11.obj + + + true + + + ]] + end + + -- -- Check handling of per-file forced includes. -- Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_globals.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_globals.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_globals.lua @@ -277,6 +277,22 @@ ]] end + + function suite.windowsTargetPlatformVersionLatest_on2019() + p.action.set("vs2019") + systemversion "latest" + prepare() + test.capture [[ + + {42B5DBC6-AE1F-903D-F75D-41E363076E92} + true + Win32Proj + MyProject + 10.0 + + ]] + end + -- -- Check that the "latest" systemversion will not add -- when the action is less than 2017 @@ -343,4 +359,4 @@ ]] end - \ No newline at end of file + Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_header.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_header.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_header.lua @@ -37,3 +37,11 @@ ]] end + + function suite.project_on2019() + p.action.set("vs2019") + vc2010.project() + test.capture [[ + + ]] + end Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_link.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_link.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_link.lua @@ -222,6 +222,16 @@ ]] end + function suite.generateDebugInfo_onSymbolsFull_on2019() + p.action.set("vs2019") + symbols "Full" + prepare() + test.capture [[ + + Windows + DebugFull + ]] + end -- -- Test the handling of the SymbolsPath flag. -- @@ -361,6 +371,20 @@ ]] end + function suite.generateProgramDatabaseFile_onSymbolsFull_on2019() + p.action.set("vs2019") + symbols "Full" + symbolspath "$(IntDir)$(TargetName).pdb" + prepare() + test.capture [[ + + Windows + DebugFull + bin\Debug\MyProject.lib + $(IntDir)$(TargetName).pdb + + ]] + end -- -- Any system libraries specified in links() should be listed as -- additional dependencies. Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_nmake_props.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_nmake_props.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_nmake_props.lua @@ -151,6 +151,39 @@ ]] end + function suite.onBinDirs() + bindirs { "include/lua", "include/zlib" } + prepare() + test.capture [[ + + $(ProjectDir)include\lua;$(ProjectDir)include\zlib;$(ExecutablePath) + $(OutDir)MyProject + + ]] + end + + function suite.onSysIncludeDirs() + sysincludedirs { "include/lua", "include/zlib" } + prepare() + test.capture [[ + + include\lua;include\zlib;$(IncludePath) + $(OutDir)MyProject + + ]] + end + + function suite.onSysLibDirs() + syslibdirs { "include/lua", "include/zlib" } + prepare() + test.capture [[ + + include\lua;include\zlib;$(LibraryPath) + $(OutDir)MyProject + + ]] + end + -- -- Should not emit include dirs or preprocessor definitions if the project Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_rule_vars.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_rule_vars.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_rule_vars.lua @@ -92,7 +92,19 @@ prepare() test.capture [[ - a b c + a;b;c + + ]] + end + + + function suite.onCustomListSeparator() + createVar { name="MyVar", kind="list", separator="," } + myRuleVars { MyVar = { "a", "b", "c" } } + prepare() + test.capture [[ + + a;b;c ]] end Index: build/premake/premake5/modules/vstudio/tests/vc2010/test_rule_xml.lua =================================================================== --- build/premake/premake5/modules/vstudio/tests/vc2010/test_rule_xml.lua +++ build/premake/premake5/modules/vstudio/tests/vc2010/test_rule_xml.lua @@ -179,3 +179,60 @@ ]] end + + function suite.properties_onStringWithCategory() + createVar { name="MyVar", kind="string", category="Custom Category" } + local r = test.getRule("MyRule") + m.properties(r) + test.capture [[ + + ]] + end + + function suite.categories_onStringWithCategory() + createVar { name="MyVar", kind="string", category="Custom Category" } + local r = test.getRule("MyRule") + m.categories(r) + test.capture [[ + + + + General + + + + + Custom Category + + + + + Command Line + + + + ]] + end + + function suite.properties_onListWithSeparator() + createVar { name="MyVar", kind="list", separator="," } + local r = test.getRule("MyRule") + m.properties(r) + test.capture [[ + + ]] + end Index: build/premake/premake5/modules/vstudio/vs2010.lua =================================================================== --- build/premake/premake5/modules/vstudio/vs2010.lua +++ build/premake/premake5/modules/vstudio/vs2010.lua @@ -35,6 +35,7 @@ ["file.directory"] = { absolute = true, token = "%(RootDir)%(Directory)" }, ["file.reldirectory"] = { absolute = false, token = "%(RelativeDir)" }, ["file.extension"] = { absolute = false, token = "%(Extension)" }, + ["file.name"] = { absolute = false, token = "%(Filename)%(Extension)" }, } Index: build/premake/premake5/modules/vstudio/vs2010_rules_xml.lua =================================================================== --- build/premake/premake5/modules/vstudio/vs2010_rules_xml.lua +++ build/premake/premake5/modules/vstudio/vs2010_rules_xml.lua @@ -72,8 +72,24 @@ function m.categories(r) local categories = { [1] = { name="General" }, - [2] = { name="Command Line", subtype="CommandLine" }, } + local propCategory = {} + local defs = r.propertydefinition + for i = 1, #defs do + local def = defs[i] + local cat = def.category + if cat then + if type(cat) == "string" and cat ~= "Command Line" and cat ~= "General" then + if not propCategory[cat] then + table.insert(categories, { name=cat }) + propCategory[cat] = true + end + else + def.category = nil + end + end + end + table.insert(categories, { name="Command Line", subtype="CommandLine" }) p.push('') for i = 1, #categories do m.category(categories[i]) @@ -135,6 +151,9 @@ if def.description then p.w('Description="%s"', def.description) end + if def.category then + p.w('Category="%s"', def.category) + end end) if suffix then c = c .. suffix Index: build/premake/premake5/modules/vstudio/vs2010_vcxproj.lua =================================================================== --- build/premake/premake5/modules/vstudio/vs2010_vcxproj.lua +++ build/premake/premake5/modules/vstudio/vs2010_vcxproj.lua @@ -63,8 +63,12 @@ function m.project(prj) local action = p.action.current() - p.push('', - action.vstudio.toolsVersion) + if _ACTION >= "vs2019" then + p.push('') + else + p.push('', + action.vstudio.toolsVersion) + end end @@ -253,6 +257,9 @@ m.elements.nmakeProperties = function(cfg) return { + m.executablePath, + m.includePath, + m.libraryPath, m.nmakeOutput, m.nmakeBuildCommands, m.nmakeRebuildCommands, @@ -604,6 +611,37 @@ +--- +-- Transform property to string +--- + + function m.getRulePropertyString(rule, prop, value, kind) + -- list of paths + if kind == "list:path" then + return table.concat(vstudio.path(cfg, value), ';') + end + + -- path + if kind == "path" then + return vstudio.path(cfg, value) + end + + -- list + if type(value) == "table" then + return table.concat(value, ";") + end + + -- enum + if prop.values then + value = table.findKeyByValue(prop.values, value) + end + + -- primitive + return tostring(value) + end + + + --- -- Write out project-level custom rule variables. --- @@ -618,13 +656,7 @@ local fld = p.rule.getPropertyField(rule, prop) local value = cfg[fld.name] if value ~= nil then - if fld.kind == "list:path" then - value = table.concat(vstudio.path(cfg, value), ';') - elseif fld.kind == "path" then - value = vstudio.path(cfg, value) - else - value = p.rule.getPropertyString(rule, prop, value) - end + value = m.getRulePropertyString(rule, prop, value, fld.kind) if value ~= nil and #value > 0 then m.element(prop.name, nil, '%s', value) @@ -1207,7 +1239,7 @@ for cfg in project.eachconfig(prj) do local fcfg = fileconfig.getconfig(file, cfg) if fcfg and fcfg[fld.name] then - local value = p.rule.getPropertyString(rule, prop, fcfg[fld.name]) + local value = m.getRulePropertyString(rule, prop, fcfg[fld.name]) if value and #value > 0 then m.element(prop.name, m.configPair(cfg), '%s', value) end @@ -2235,9 +2267,12 @@ end end + function m.precompiledHeaderFile(fileName, cfg) + m.element("PrecompiledHeaderFile", nil, "%s", fileName) + end function m.precompiledHeader(cfg, condition) - prjcfg, filecfg = p.config.normalize(cfg) + local prjcfg, filecfg = p.config.normalize(cfg) if filecfg then if prjcfg.pchsource == filecfg.abspath and not prjcfg.flags.NoPCH then m.element('PrecompiledHeader', condition, 'Create') @@ -2247,7 +2282,7 @@ else if not prjcfg.flags.NoPCH and prjcfg.pchheader then m.element("PrecompiledHeader", nil, "Use") - m.element("PrecompiledHeaderFile", nil, "%s", prjcfg.pchheader) + m.precompiledHeaderFile(prjcfg.pchheader, prjcfg) else m.element("PrecompiledHeader", nil, "NotUsing") end @@ -2479,7 +2514,13 @@ -- handle special "latest" version if min == "latest" then -- vs2015 and lower can't build against SDK 10 - min = iif(_ACTION >= "vs2017", m.latestSDK10Version(), nil) + -- vs2019 allows for automatic assignment to latest + -- Windows 10 sdk if you set to "10.0" + if _ACTION >= "vs2019" then + min = "10.0" + else + min = iif(_ACTION == "vs2017", m.latestSDK10Version(), nil) + end end return min Index: build/premake/premake5/modules/vstudio/vs2010_vcxproj_user.lua =================================================================== --- build/premake/premake5/modules/vstudio/vs2010_vcxproj_user.lua +++ build/premake/premake5/modules/vstudio/vs2010_vcxproj_user.lua @@ -55,7 +55,7 @@ function m.userProject() local action = p.action.current() p.push('', - action.vstudio.toolsVersion) + action.vstudio.userToolsVersion or action.vstudio.toolsVersion) end Index: build/premake/premake5/modules/vstudio/vs2019.lua =================================================================== --- /dev/null +++ build/premake/premake5/modules/vstudio/vs2019.lua @@ -0,0 +1,69 @@ +-- +-- vs2019.lua +-- Extend the existing exporters with support for Visual Studio 2019. +-- Copyright (c) Jason Perkins and the Premake project +-- + + local p = premake + local vstudio = p.vstudio + +--- +-- Define the Visual Studio 2019 export action. +--- + + newaction { + -- Metadata for the command line and help system + + trigger = "vs2019", + shortname = "Visual Studio 2019", + description = "Generate Visual Studio 2019 project files", + + -- Visual Studio always uses Windows path and naming conventions + + targetos = "windows", + toolset = "msc-v142", + + -- The capabilities of this action + + valid_kinds = { "ConsoleApp", "WindowedApp", "StaticLib", "SharedLib", "Makefile", "None", "Utility" }, + valid_languages = { "C", "C++", "C#", "F#" }, + valid_tools = { + cc = { "msc" }, + dotnet = { "msnet" }, + }, + + -- Workspace and project generation logic + + onWorkspace = function(wks) + p.vstudio.vs2005.generateSolution(wks) + end, + onProject = function(prj) + p.vstudio.vs2010.generateProject(prj) + end, + onRule = function(rule) + p.vstudio.vs2010.generateRule(rule) + end, + + onCleanWorkspace = function(wks) + p.vstudio.cleanSolution(wks) + end, + onCleanProject = function(prj) + p.vstudio.cleanProject(prj) + end, + onCleanTarget = function(prj) + p.vstudio.cleanTarget(prj) + end, + + pathVars = vstudio.vs2010.pathVars, + + -- This stuff is specific to the Visual Studio exporters + + vstudio = { + solutionVersion = "12", + versionName = "16", + targetFramework = "4.7.2", + toolsVersion = "15.0", + userToolsVersion = "Current", + filterToolsVersion = "4.0", + } + } Index: build/premake/premake5/modules/xcode/tests/test_xcode4_project.lua =================================================================== --- build/premake/premake5/modules/xcode/tests/test_xcode4_project.lua +++ build/premake/premake5/modules/xcode/tests/test_xcode4_project.lua @@ -10,34 +10,6 @@ local xcode = p.modules.xcode --- --- Replacement for xcode.newid(). Creates a synthetic ID based on the node name, --- its intended usage (file ID, build ID, etc.) and its place in the tree. This --- makes it easier to tell if the right ID is being used in the right places. --- - - xcode.used_ids = {} - - xcode.newid = function(node, usage) - local name = node - if usage then - name = name .. ":" .. usage - end - - if xcode.used_ids[name] then - local count = xcode.used_ids[name] + 1 - xcode.used_ids[name] = count - name = name .. "(" .. count .. ")" - else - xcode.used_ids[name] = 1 - end - - return "[" .. name .. "]" - end - - - - --------------------------------------------------------------------------- -- Setup/Teardown --------------------------------------------------------------------------- @@ -52,7 +24,6 @@ _TARGET_OS = "macosx" p.action.set('xcode4') io.eol = "\n" - xcode.used_ids = { } -- reset the list of generated IDs wks = test.createWorkspace() end @@ -63,6 +34,52 @@ tr = xcode.buildprjtree(prj) end +--------------------------------------------------------------------------- +-- xcode id generation tests +--------------------------------------------------------------------------- + + local function print_id(...) + _p("%s", xcode.newid(...)) + end + + function suite.IDGeneratorIsDeterministic() + print_id("project", "Debug") + print_id("project", "Release") + test.capture [[ +B266956655B21E987082EBA6 +DAC961207F1BFED291544760 + ]] + end + + function suite.IDGeneratorIsDifferent() + print_id("project", "Debug", "file") + print_id("project", "Debug", "hello") + test.capture [[ +47C6E72E5ED982604EF57D6E +8DCA12C2873014347ACB7102 + ]] + end + + function suite.IDGeneratorSame3() + print_id("project", "Release", "file") + print_id("project", "Release", "file") + print_id("project", "Release", "file") + test.capture [[ +022ECCE82854FC9A8F5BF328 +022ECCE82854FC9A8F5BF328 +022ECCE82854FC9A8F5BF328 + ]] + end + + function suite.IDGeneratorMoreThanNecessary() + print_id("a", "b", "c", "d", "e", "f") + print_id("abcdef") + test.capture [[ +63AEF3DD89D5238FF0DC1A1D +9F1AF6957CC5F947506A7CD5 + ]] + end + --------------------------------------------------------------------------- -- XCBuildConfiguration_Project tests --------------------------------------------------------------------------- @@ -72,7 +89,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; Index: build/premake/premake5/modules/xcode/tests/test_xcode_dependencies.lua =================================================================== --- build/premake/premake5/modules/xcode/tests/test_xcode_dependencies.lua +++ build/premake/premake5/modules/xcode/tests/test_xcode_dependencies.lua @@ -25,7 +25,6 @@ function suite.setup() _TARGET_OS = "macosx" p.action.set('xcode4') - xcode.used_ids = { } -- reset the list of generated IDs wks, prj = test.createWorkspace() links { "MyProject2" } @@ -54,7 +53,7 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [libMyProject2-d.a:build] /* libMyProject2-d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = [libMyProject2-d.a] /* libMyProject2-d.a */; }; + 5931FBCA4D31453CD21C5A0A /* libMyProject2-d.a in Frameworks */ = {isa = PBXBuildFile; fileRef = CCB6C53210CA9664049C1B72 /* libMyProject2-d.a */; }; /* End PBXBuildFile section */ ]] end @@ -65,7 +64,7 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [libMyProject2-d.dylib:build] /* libMyProject2-d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = [libMyProject2-d.dylib] /* libMyProject2-d.dylib */; }; + 1BC538B0FA67D422AF49D6F0 /* libMyProject2-d.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 107168B810144BEA4A68FEF8 /* libMyProject2-d.dylib */; }; /* End PBXBuildFile section */ ]] end @@ -80,18 +79,18 @@ xcode.PBXContainerItemProxy(tr) test.capture [[ /* Begin PBXContainerItemProxy section */ - [MyProject2.xcodeproj:prodprox] /* PBXContainerItemProxy */ = { + 17DF877139AB34A376605DB1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = [MyProject2.xcodeproj] /* MyProject2.xcodeproj */; + containerPortal = CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */; proxyType = 2; - remoteGlobalIDString = [libMyProject2-d.a:product]; + remoteGlobalIDString = E052136F28C2F7A16D61C9AF; remoteInfo = "libMyProject2-d.a"; }; - [MyProject2.xcodeproj:targprox] /* PBXContainerItemProxy */ = { + 6A19FA0A8BE5A73CC89AD04A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; - containerPortal = [MyProject2.xcodeproj] /* MyProject2.xcodeproj */; + containerPortal = CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */; proxyType = 1; - remoteGlobalIDString = [libMyProject2-d.a:target]; + remoteGlobalIDString = DA5DB975C549DF670D2FA7B5; remoteInfo = "libMyProject2-d.a"; }; /* End PBXContainerItemProxy section */ @@ -108,8 +107,8 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject2.xcodeproj] /* libMyProject2-d.a */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MyProject2.xcodeproj"; path = MyProject2.xcodeproj; sourceTree = SOURCE_ROOT; }; - [MyProject:product] /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + CBD893DEB01F9C10340CCA1E /* libMyProject2-d.a */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MyProject2.xcodeproj"; path = MyProject2.xcodeproj; sourceTree = SOURCE_ROOT; }; /* End PBXFileReference section */ ]] end @@ -121,8 +120,8 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject2.xcodeproj] /* libMyProject2-d.a */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MyProject2.xcodeproj"; path = ../MyProject2.xcodeproj; sourceTree = SOURCE_ROOT; }; - [MyProject:product] /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 149CF6C96C0269BB1E108509 /* libMyProject2-d.a */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = "MyProject2.xcodeproj"; path = ../MyProject2.xcodeproj; sourceTree = SOURCE_ROOT; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -137,11 +136,11 @@ xcode.PBXFrameworksBuildPhase(tr) test.capture [[ /* Begin PBXFrameworksBuildPhase section */ - [MyProject:fxs] /* Frameworks */ = { + 9FDD37564328C0885DF98D96 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - [libMyProject2-d.a:build] /* libMyProject2-d.a in Frameworks */, + 5931FBCA4D31453CD21C5A0A /* libMyProject2-d.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -155,11 +154,11 @@ xcode.PBXFrameworksBuildPhase(tr) test.capture [[ /* Begin PBXFrameworksBuildPhase section */ - [MyProject:fxs] /* Frameworks */ = { + 9FDD37564328C0885DF98D96 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - [libMyProject2-d.dylib:build] /* libMyProject2-d.dylib in Frameworks */, + 1BC538B0FA67D422AF49D6F0 /* libMyProject2-d.dylib in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -176,39 +175,39 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [MyProject2.xcodeproj:prodgrp] /* Products */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [libMyProject2-d.a] /* libMyProject2-d.a */, - ); - name = Products; - sourceTree = ""; - }; - [MyProject] /* MyProject */ = { - isa = PBXGroup; - children = ( - [Products] /* Products */, - [Projects] /* Projects */, + A6C936B49B3FADE6EA134CF4 /* Products */, + 9D968EAA920D05DCE0E0A4EA /* Projects */, ); name = MyProject; sourceTree = ""; }; - [Products] /* Products */ = { + 9D968EAA920D05DCE0E0A4EA /* Projects */ = { isa = PBXGroup; children = ( - [MyProject:product] /* MyProject */, - ); - name = Products; - sourceTree = ""; - }; - [Projects] /* Projects */ = { - isa = PBXGroup; - children = ( - [MyProject2.xcodeproj] /* MyProject2.xcodeproj */, + CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */, ); name = Projects; sourceTree = ""; }; + A6C936B49B3FADE6EA134CF4 /* Products */ = { + isa = PBXGroup; + children = ( + 19A5C4E61D1697189E833B26 /* MyProject */, + ); + name = Products; + sourceTree = ""; + }; + C7F36A91F7853983D29278D1 /* Products */ = { + isa = PBXGroup; + children = ( + CCB6C53210CA9664049C1B72 /* libMyProject2-d.a */, + ); + name = Products; + sourceTree = ""; + }; /* End PBXGroup section */ ]] end @@ -223,23 +222,23 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( - [MyProject:rez] /* Resources */, - [MyProject:src] /* Sources */, - [MyProject:fxs] /* Frameworks */, + 0FC4B7F6B3104128CDE10E36 /* Resources */, + 7971D14D1CBD5A7F378E278D /* Sources */, + 9FDD37564328C0885DF98D96 /* Frameworks */, ); buildRules = ( ); dependencies = ( - [MyProject2.xcodeproj:targdep] /* PBXTargetDependency */, + B5ABA79AE53D768CC04AB5DA /* PBXTargetDependency */, ); name = MyProject; productInstallPath = "$(HOME)/bin"; productName = MyProject; - productReference = [MyProject:product] /* MyProject */; + productReference = 19A5C4E61D1697189E833B26 /* MyProject */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ @@ -261,17 +260,17 @@ buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 1; - mainGroup = [MyProject] /* MyProject */; + mainGroup = 12F5A37D963B00EFBF8281BD /* MyProject */; projectDirPath = ""; projectReferences = ( { - ProductGroup = [MyProject2.xcodeproj:prodgrp] /* Products */; - ProjectRef = [MyProject2.xcodeproj] /* MyProject2.xcodeproj */; + ProductGroup = C7F36A91F7853983D29278D1 /* Products */; + ProjectRef = CBD893DEB01F9C10340CCA1E /* MyProject2.xcodeproj */; }, ); projectRoot = ""; targets = ( - [MyProject:target] /* MyProject */, + 48B5980C775BEBFED09D464C /* MyProject */, ); }; /* End PBXProject section */ @@ -288,11 +287,11 @@ xcode.PBXReferenceProxy(tr) test.capture [[ /* Begin PBXReferenceProxy section */ - [libMyProject2-d.a] /* libMyProject2-d.a */ = { + CCB6C53210CA9664049C1B72 /* libMyProject2-d.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; path = "libMyProject2-d.a"; - remoteRef = [MyProject2.xcodeproj:prodprox] /* PBXContainerItemProxy */; + remoteRef = 17DF877139AB34A376605DB1 /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXReferenceProxy section */ @@ -309,10 +308,10 @@ xcode.PBXTargetDependency(tr) test.capture [[ /* Begin PBXTargetDependency section */ - [MyProject2.xcodeproj:targdep] /* PBXTargetDependency */ = { + B5ABA79AE53D768CC04AB5DA /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "libMyProject2-d.a"; - targetProxy = [MyProject2.xcodeproj:targprox] /* PBXContainerItemProxy */; + targetProxy = 6A19FA0A8BE5A73CC89AD04A /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ ]] Index: build/premake/premake5/modules/xcode/tests/test_xcode_project.lua =================================================================== --- build/premake/premake5/modules/xcode/tests/test_xcode_project.lua +++ build/premake/premake5/modules/xcode/tests/test_xcode_project.lua @@ -23,7 +23,6 @@ _TARGET_OS = "macosx" p.action.set('xcode4') p.eol("\n") - xcode.used_ids = { } -- reset the list of generated IDs wks = test.createWorkspace() end @@ -44,8 +43,8 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [source.c:build] /* source.c in Sources */ = {isa = PBXBuildFile; fileRef = [source.c] /* source.c */; }; - [source.cpp:build] /* source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = [source.cpp] /* source.cpp */; }; + 7018C364CB5A16D69EB461A4 /* source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B47484CB259E37EA275DE8C /* source.cpp */; }; + F3989C244A260696229F1A64 /* source.c in Sources */ = {isa = PBXBuildFile; fileRef = 7DC6D30C8137A53E02A4494C /* source.c */; }; /* End PBXBuildFile section */ ]] end @@ -56,8 +55,8 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [source.m:build] /* source.m in Sources */ = {isa = PBXBuildFile; fileRef = [source.m] /* source.m */; }; - [source.mm:build] /* source.mm in Sources */ = {isa = PBXBuildFile; fileRef = [source.mm] /* source.mm */; }; + 8A01A092B9936F8494A0AED2 /* source.mm in Sources */ = {isa = PBXBuildFile; fileRef = CCAA329A6F98594CFEBE38DA /* source.mm */; }; + CBA890782235FAEAFAAF0EB8 /* source.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AFE9C203E6F6E52BFDC1260 /* source.m */; }; /* End PBXBuildFile section */ ]] end @@ -68,7 +67,7 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [MainMenu.xib:build] /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = [MainMenu.xib] /* MainMenu.xib */; }; + 6FE0F2A3E16C0B15906D30E3 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 6CB8FB6B191BBB9DD7A431AB /* MainMenu.xib */; }; /* End PBXBuildFile section */ ]] end @@ -80,7 +79,7 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [Cocoa.framework:build] /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = [Cocoa.framework] /* Cocoa.framework */; }; + F8E8DBA28B76A594F44F49E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 8D6BC6AA50D7885C8F7B2CEA /* Cocoa.framework */; }; /* End PBXBuildFile section */ ]] end @@ -92,8 +91,8 @@ xcode.PBXBuildFile(tr) test.capture [[ /* Begin PBXBuildFile section */ - [source.c:build] /* source.c in Sources */ = {isa = PBXBuildFile; fileRef = [source.c] /* source.c */; }; - [source.cpp:build] /* source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = [source.cpp] /* source.cpp */; }; + 7018C364CB5A16D69EB461A4 /* source.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9B47484CB259E37EA275DE8C /* source.cpp */; }; + F3989C244A260696229F1A64 /* source.c in Sources */ = {isa = PBXBuildFile; fileRef = 7DC6D30C8137A53E02A4494C /* source.c */; }; /* End PBXBuildFile section */ ]] end @@ -108,7 +107,7 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject:product] /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -120,7 +119,20 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject.app:product] /* MyProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = MyProject.app; path = MyProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + E5FB9875FD0E33A7ED2A2EB5 /* MyProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = MyProject.app; path = MyProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + + + function suite.PBXFileReference_ListsIOSWindowedTarget() + _TARGET_OS = "ios" + kind "WindowedApp" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + E5FB9875FD0E33A7ED2A2EB5 /* MyProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = MyProject.app; path = MyProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -132,7 +144,20 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [libMyProject.a:product] /* libMyProject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMyProject.a; path = libMyProject.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FDCF31ACF735331EEAD08FEC /* libMyProject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMyProject.a; path = libMyProject.a; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + + + function suite.PBXFileReference_ListsIOSStaticLibTarget() + _TARGET_OS = "ios" + kind "StaticLib" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + FDCF31ACF735331EEAD08FEC /* libMyProject.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; name = libMyProject.a; path = libMyProject.a; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -144,7 +169,20 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [libMyProject.dylib:product] /* libMyProject.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = libMyProject.dylib; path = libMyProject.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; + 2781AF7F7E0F19F156882DBF /* libMyProject.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = libMyProject.dylib; path = libMyProject.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + + + function suite.PBXFileReference_ListsIOSSharedLibTarget() + _TARGET_OS = "ios" + kind "SharedLib" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + 2781AF7F7E0F19F156882DBF /* libMyProject.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = libMyProject.dylib; path = libMyProject.dylib; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -157,12 +195,50 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject.bundle:product] /* MyProject.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = MyProject.bundle; path = MyProject.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + 8AD066EE75BC8CE0BDA2552E /* MyProject.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = MyProject.bundle; path = MyProject.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end + function suite.PBXFileReference_ListsIOSOSXBundleTarget() + _TARGET_OS = "ios" + kind "SharedLib" + sharedlibtype "OSXBundle" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + 8AD066EE75BC8CE0BDA2552E /* MyProject.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = MyProject.bundle; path = MyProject.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + + function suite.PBXFileReference_ListsXCTestTarget() + kind "SharedLib" + sharedlibtype "XCTest" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + F573990FE05FBF012845874F /* MyProject.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = MyProject.xctest; path = MyProject.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + + function suite.PBXFileReference_ListsIOSXCTestTarget() + _TARGET_OS = "ios" + kind "SharedLib" + sharedlibtype "XCTest" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + F573990FE05FBF012845874F /* MyProject.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = MyProject.xctest; path = MyProject.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + function suite.PBXFileReference_ListsOSXFrameworkTarget() kind "SharedLib" sharedlibtype "OSXFramework" @@ -170,20 +246,35 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject.framework:product] /* MyProject.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MyProject.framework; path = MyProject.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2D914F2255CC07D43D679562 /* MyProject.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MyProject.framework; path = MyProject.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end + function suite.PBXFileReference_ListsIOSOSXFrameworkTarget() + _TARGET_OS = "ios" + kind "SharedLib" + sharedlibtype "OSXFramework" + prepare() + xcode.PBXFileReference(tr) + test.capture [[ +/* Begin PBXFileReference section */ + 2D914F2255CC07D43D679562 /* MyProject.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MyProject.framework; path = MyProject.framework; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + ]] + end + + + function suite.PBXFileReference_ListsSourceFiles() files { "source.c" } prepare() xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject:product] /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; - [source.c] /* source.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = source.c; path = source.c; sourceTree = ""; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 7DC6D30C8137A53E02A4494C /* source.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = source.c; path = source.c; sourceTree = ""; }; ]] end @@ -195,8 +286,8 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject:product] /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; - [source.c] /* source.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; name = source.c; path = source.c; sourceTree = ""; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 7DC6D30C8137A53E02A4494C /* source.c */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; name = source.c; path = source.c; sourceTree = ""; }; ]] end @@ -207,8 +298,9 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [English] /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; - [French] /* French */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = French; path = French.lproj/MainMenu.xib; sourceTree = ""; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 31594983623D4175755577C3 /* French */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = French; path = French.lproj/MainMenu.xib; sourceTree = ""; }; + 625C7BEB5C1E385D961D3A2B /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/MainMenu.xib; sourceTree = ""; }; ]] end @@ -219,8 +311,9 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [English] /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; - [French] /* French */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/InfoPlist.strings; sourceTree = ""; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + A329C1B0714D1562F85B67F0 /* English */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + C3BECE4859358D7AC7D1E488 /* French */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = French; path = French.lproj/InfoPlist.strings; sourceTree = ""; }; ]] end @@ -231,7 +324,9 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [Cocoa.framework] /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 8D6BC6AA50D7885C8F7B2CEA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ ]] end @@ -270,7 +365,8 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [Icon.icns] /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Icon.icns; path = Icon.icns; sourceTree = ""; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 1A07B4D0BCF5DB824C1BBB10 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; name = Icon.icns; path = Icon.icns; sourceTree = ""; }; ]] end @@ -281,7 +377,7 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject.app:product] /* MyProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = MyProject.app; path = MyProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; + E5FB9875FD0E33A7ED2A2EB5 /* MyProject.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; name = MyProject.app; path = MyProject.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -294,7 +390,7 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [libMyProject-d.dylib:product] /* libMyProject-d.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = "libMyProject-d.dylib"; path = "libMyProject-d.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; + 9E361150CDC7E042A8D51F90 /* libMyProject-d.dylib */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.dylib"; includeInIndex = 0; name = "libMyProject-d.dylib"; path = "libMyProject-d.dylib"; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ ]] end @@ -307,8 +403,8 @@ xcode.PBXFileReference(tr) test.capture [[ /* Begin PBXFileReference section */ - [MyProject:product] /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; - [source.c] /* source.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = source.c; path = src/source.c; sourceTree = ""; }; + 19A5C4E61D1697189E833B26 /* MyProject */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; name = MyProject; path = MyProject; sourceTree = BUILT_PRODUCTS_DIR; }; + 721A4003892CDB357948D643 /* source.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; name = source.c; path = src/source.c; sourceTree = ""; }; ]] end @@ -322,7 +418,7 @@ xcode.PBXFrameworksBuildPhase(tr) test.capture [[ /* Begin PBXFrameworksBuildPhase section */ - [MyProject:fxs] /* Frameworks */ = { + 9FDD37564328C0885DF98D96 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -340,11 +436,11 @@ xcode.PBXFrameworksBuildPhase(tr) test.capture [[ /* Begin PBXFrameworksBuildPhase section */ - [MyProject:fxs] /* Frameworks */ = { + 9FDD37564328C0885DF98D96 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - [Cocoa.framework:build] /* Cocoa.framework in Frameworks */, + F8E8DBA28B76A594F44F49E2 /* Cocoa.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -362,18 +458,18 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [MyProject] /* MyProject */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [Products] /* Products */, + A6C936B49B3FADE6EA134CF4 /* Products */, ); name = MyProject; sourceTree = ""; }; - [Products] /* Products */ = { + A6C936B49B3FADE6EA134CF4 /* Products */ = { isa = PBXGroup; children = ( - [MyProject:product] /* MyProject */, + 19A5C4E61D1697189E833B26 /* MyProject */, ); name = Products; sourceTree = ""; @@ -389,19 +485,19 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [MyProject] /* MyProject */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [source.h] /* source.h */, - [Products] /* Products */, + 5C62B7965FD389C8E1402DD6 /* source.h */, + A6C936B49B3FADE6EA134CF4 /* Products */, ); name = MyProject; sourceTree = ""; }; - [Products] /* Products */ = { + A6C936B49B3FADE6EA134CF4 /* Products */ = { isa = PBXGroup; children = ( - [MyProject:product] /* MyProject */, + 19A5C4E61D1697189E833B26 /* MyProject */, ); name = Products; sourceTree = ""; @@ -417,19 +513,19 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [MyProject] /* MyProject */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [source.h] /* source.h */, - [Products] /* Products */, + 5C62B7965FD389C8E1402DD6 /* source.h */, + A6C936B49B3FADE6EA134CF4 /* Products */, ); name = MyProject; sourceTree = ""; }; - [Products] /* Products */ = { + A6C936B49B3FADE6EA134CF4 /* Products */ = { isa = PBXGroup; children = ( - [MyProject:product] /* MyProject */, + 19A5C4E61D1697189E833B26 /* MyProject */, ); name = Products; sourceTree = ""; @@ -455,21 +551,21 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [MyProject] /* MyProject */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [source.cpp] /* source.cpp */, - [source.h] /* source.h */, - [test.h] /* test.h */, - [Products] /* Products */, + 9B47484CB259E37EA275DE8C /* source.cpp */, + 5C62B7965FD389C8E1402DD6 /* source.h */, + ABEF15744F3A9EA66A0B6BB4 /* test.h */, + A6C936B49B3FADE6EA134CF4 /* Products */, ); name = MyProject; sourceTree = ""; }; - [Products] /* Products */ = { + A6C936B49B3FADE6EA134CF4 /* Products */ = { isa = PBXGroup; children = ( - [MyProject:product] /* MyProject */, + 19A5C4E61D1697189E833B26 /* MyProject */, ); name = Products; sourceTree = ""; @@ -485,20 +581,20 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [MyProject] /* MyProject */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [Info.plist] /* Info.plist */, - [MainMenu.xib] /* MainMenu.xib */, - [Products] /* Products */, + ACC2AED4C3D54A06B3F14514 /* Info.plist */, + 6CB8FB6B191BBB9DD7A431AB /* MainMenu.xib */, + A6C936B49B3FADE6EA134CF4 /* Products */, ); name = MyProject; sourceTree = ""; }; - [Products] /* Products */ = { + A6C936B49B3FADE6EA134CF4 /* Products */ = { isa = PBXGroup; children = ( - [MyProject:product] /* MyProject */, + 19A5C4E61D1697189E833B26 /* MyProject */, ); name = Products; sourceTree = ""; @@ -514,23 +610,31 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [Frameworks] /* Frameworks */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [Cocoa.framework] /* Cocoa.framework */, + BBF76781A7E87333FA200DC1 /* Frameworks */, + A6C936B49B3FADE6EA134CF4 /* Products */, + ); + name = MyProject; + sourceTree = ""; + }; + A6C936B49B3FADE6EA134CF4 /* Products */ = { + isa = PBXGroup; + children = ( + 19A5C4E61D1697189E833B26 /* MyProject */, + ); + name = Products; + sourceTree = ""; + }; + BBF76781A7E87333FA200DC1 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 8D6BC6AA50D7885C8F7B2CEA /* Cocoa.framework */, ); name = Frameworks; sourceTree = ""; }; - [MyProject] /* MyProject */ = { - isa = PBXGroup; - children = ( - [Frameworks] /* Frameworks */, - [Products] /* Products */, - ); - name = MyProject; - sourceTree = ""; - }; ]] end @@ -542,23 +646,23 @@ xcode.PBXGroup(tr) test.capture [[ /* Begin PBXGroup section */ - [Headers] /* Headers */ = { + 12F5A37D963B00EFBF8281BD /* MyProject */ = { isa = PBXGroup; children = ( - [source.h] /* source.h */, + 20D885C0C52B2372D7636C00 /* Headers */, + A6C936B49B3FADE6EA134CF4 /* Products */, + ); + name = MyProject; + sourceTree = ""; + }; + 20D885C0C52B2372D7636C00 /* Headers */ = { + isa = PBXGroup; + children = ( + E91A2DDD367D240FAC9C241D /* source.h */, ); name = Headers; sourceTree = ""; }; - [MyProject] /* MyProject */ = { - isa = PBXGroup; - children = ( - [Headers] /* Headers */, - [Products] /* Products */, - ); - name = MyProject; - sourceTree = ""; - }; ]] end @@ -572,13 +676,13 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( - [MyProject:rez] /* Resources */, - [MyProject:src] /* Sources */, - [MyProject:fxs] /* Frameworks */, + 0FC4B7F6B3104128CDE10E36 /* Resources */, + 7971D14D1CBD5A7F378E278D /* Sources */, + 9FDD37564328C0885DF98D96 /* Frameworks */, ); buildRules = ( ); @@ -587,7 +691,7 @@ name = MyProject; productInstallPath = "$(HOME)/bin"; productName = MyProject; - productReference = [MyProject:product] /* MyProject */; + productReference = 19A5C4E61D1697189E833B26 /* MyProject */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ @@ -601,13 +705,13 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [MyProject.app:target] /* MyProject */ = { + D2C7B5BBD37AB2AD475C83FB /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [MyProject.app:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 8DCCE3C4913DB5F612AA5A04 /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( - [MyProject.app:rez] /* Resources */, - [MyProject.app:src] /* Sources */, - [MyProject.app:fxs] /* Frameworks */, + 0F791C0512E9EE3794569245 /* Resources */, + 7926355C7C97078EFE03AB9C /* Sources */, + 9F919B65A3026D97246F11A5 /* Frameworks */, ); buildRules = ( ); @@ -616,7 +720,7 @@ name = MyProject; productInstallPath = "$(HOME)/Applications"; productName = MyProject; - productReference = [MyProject.app:product] /* MyProject.app */; + productReference = E5FB9875FD0E33A7ED2A2EB5 /* MyProject.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -630,13 +734,13 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [libMyProject.dylib:target] /* MyProject */ = { + CD0213851572F7B75A11C9C5 /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [libMyProject.dylib:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 1F5D05CE18C307400C5E640E /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( - [libMyProject.dylib:rez] /* Resources */, - [libMyProject.dylib:src] /* Sources */, - [libMyProject.dylib:fxs] /* Frameworks */, + A1093E0F9A6F3F818E0A9C4F /* Resources */, + 0AB65766041C58D8F7B7B5A6 /* Sources */, + 3121BD6F2A87BEE11E231BAF /* Frameworks */, ); buildRules = ( ); @@ -644,7 +748,7 @@ ); name = MyProject; productName = MyProject; - productReference = [libMyProject.dylib:product] /* libMyProject.dylib */; + productReference = 2781AF7F7E0F19F156882DBF /* libMyProject.dylib */; productType = "com.apple.product-type.library.dynamic"; }; /* End PBXNativeTarget section */ @@ -664,16 +768,16 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( 9607AE1010C857E500CD1376 /* Prebuild */, - [file.in:buildcommand] /* Build "file.in" */, - [MyProject:rez] /* Resources */, - [MyProject:src] /* Sources */, + C06220C983CDE27BC2718709 /* Build "file.in" */, + 0FC4B7F6B3104128CDE10E36 /* Resources */, + 7971D14D1CBD5A7F378E278D /* Sources */, 9607AE3510C85E7E00CD1376 /* Prelink */, - [MyProject:fxs] /* Frameworks */, + 9FDD37564328C0885DF98D96 /* Frameworks */, 9607AE3710C85E8F00CD1376 /* Postbuild */, ); buildRules = ( @@ -683,7 +787,7 @@ name = MyProject; productInstallPath = "$(HOME)/bin"; productName = MyProject; - productReference = [MyProject:product] /* MyProject */; + productReference = 19A5C4E61D1697189E833B26 /* MyProject */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ @@ -706,16 +810,16 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( - [file.1:buildcommand] /* Build "file.1" */, - [file.2:buildcommand] /* Build "file.2" */, - [file.3:buildcommand] /* Build "file.3" */, - [MyProject:rez] /* Resources */, - [MyProject:src] /* Sources */, - [MyProject:fxs] /* Frameworks */, + A50DBDBDC6D96AEF038E93FD /* Build "file.1" */, + 71E4A5FF93B05331D0657C3F /* Build "file.2" */, + 3EBB8E4160873B739D3C6481 /* Build "file.3" */, + 0FC4B7F6B3104128CDE10E36 /* Resources */, + 7971D14D1CBD5A7F378E278D /* Sources */, + 9FDD37564328C0885DF98D96 /* Frameworks */, ); buildRules = ( ); @@ -724,7 +828,7 @@ name = MyProject; productInstallPath = "$(HOME)/bin"; productName = MyProject; - productReference = [MyProject:product] /* MyProject */; + productReference = 19A5C4E61D1697189E833B26 /* MyProject */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ @@ -749,16 +853,16 @@ xcode.PBXNativeTarget(tr) test.capture [[ /* Begin PBXNativeTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXNativeTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */; buildPhases = ( - [file.1:buildcommand] /* Build "file.1" */, - [file.2:buildcommand] /* Build "file.2" */, - [file.3:buildcommand] /* Build "file.3" */, - [MyProject:rez] /* Resources */, - [MyProject:src] /* Sources */, - [MyProject:fxs] /* Frameworks */, + A50DBDBDC6D96AEF038E93FD /* Build "file.1" */, + 71E4A5FF93B05331D0657C3F /* Build "file.2" */, + 3EBB8E4160873B739D3C6481 /* Build "file.3" */, + 0FC4B7F6B3104128CDE10E36 /* Resources */, + 7971D14D1CBD5A7F378E278D /* Sources */, + 9FDD37564328C0885DF98D96 /* Frameworks */, ); buildRules = ( ); @@ -767,7 +871,7 @@ name = MyProject; productInstallPath = "$(HOME)/bin"; productName = MyProject; - productReference = [MyProject:product] /* MyProject */; + productReference = 19A5C4E61D1697189E833B26 /* MyProject */; productType = "com.apple.product-type.tool"; }; /* End PBXNativeTarget section */ @@ -785,9 +889,9 @@ xcode.PBXAggregateTarget(tr) test.capture [[ /* Begin PBXAggregateTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXAggregateTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXAggregateTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXAggregateTarget "MyProject" */; buildPhases = ( ); buildRules = ( @@ -815,12 +919,12 @@ xcode.PBXAggregateTarget(tr) test.capture [[ /* Begin PBXAggregateTarget section */ - [MyProject:target] /* MyProject */ = { + 48B5980C775BEBFED09D464C /* MyProject */ = { isa = PBXAggregateTarget; - buildConfigurationList = [MyProject:cfg] /* Build configuration list for PBXAggregateTarget "MyProject" */; + buildConfigurationList = 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXAggregateTarget "MyProject" */; buildPhases = ( 9607AE1010C857E500CD1376 /* Prebuild */, - [file.in:buildcommand] /* Build "file.in" */, + C06220C983CDE27BC2718709 /* Build "file.in" */, 9607AE3510C85E7E00CD1376 /* Prelink */, 9607AE3710C85E8F00CD1376 /* Postbuild */, ); @@ -850,11 +954,11 @@ buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 1; - mainGroup = [MyProject] /* MyProject */; + mainGroup = 12F5A37D963B00EFBF8281BD /* MyProject */; projectDirPath = ""; projectRoot = ""; targets = ( - [MyProject:target] /* MyProject */, + 48B5980C775BEBFED09D464C /* MyProject */, ); }; /* End PBXProject section */ @@ -876,7 +980,7 @@ isa = PBXProject; attributes = { TargetAttributes = { - [MyProject:target] = { + 48B5980C775BEBFED09D464C = { SystemCapabilities = { com.apple.GameCenter.iOS = { enabled = 0; @@ -894,11 +998,11 @@ buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */; compatibilityVersion = "Xcode 3.2"; hasScannedForEncodings = 1; - mainGroup = [MyProject] /* MyProject */; + mainGroup = 12F5A37D963B00EFBF8281BD /* MyProject */; projectDirPath = ""; projectRoot = ""; targets = ( - [MyProject:target] /* MyProject */, + 48B5980C775BEBFED09D464C /* MyProject */, ); }; /* End PBXProject section */ @@ -915,7 +1019,7 @@ xcode.PBXResourcesBuildPhase(tr) test.capture [[ /* Begin PBXResourcesBuildPhase section */ - [MyProject:rez] /* Resources */ = { + 0FC4B7F6B3104128CDE10E36 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -933,11 +1037,11 @@ xcode.PBXResourcesBuildPhase(tr) test.capture [[ /* Begin PBXResourcesBuildPhase section */ - [MyProject:rez] /* Resources */ = { + 0FC4B7F6B3104128CDE10E36 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - [MainMenu.xib:build] /* MainMenu.xib in Resources */, + 6FE0F2A3E16C0B15906D30E3 /* MainMenu.xib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -976,7 +1080,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "ls src\ncp \"a\" \"b\""; + shellScript = "set -e\nls src\ncp \"a\" \"b\""; }; /* End PBXShellScriptBuildPhase section */ ]] @@ -993,7 +1097,7 @@ xcode.PBXShellScriptBuildPhase(tr) test.capture [[ /* Begin PBXShellScriptBuildPhase section */ - [file.in1:buildcommand] /* Build "file.in1" */ = { + 9AE2196BE8450F9D5E640FAB /* Build "file.in1" */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -1008,7 +1112,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "if [ \"${CONFIGURATION}\" = \"Debug\" ]; then\n\tls src\n\tcp \"a\" \"b\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release\" ]; then\n\tls src\n\tcp \"a\" \"b\"\nfi"; + shellScript = "set -e\nif [ \"${CONFIGURATION}\" = \"Debug\" ]; then\n\tls src\n\tcp \"a\" \"b\"\nfi\nif [ \"${CONFIGURATION}\" = \"Release\" ]; then\n\tls src\n\tcp \"a\" \"b\"\nfi"; }; /* End PBXShellScriptBuildPhase section */ ]] @@ -1035,7 +1139,7 @@ ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; - shellScript = "ls src\nif [ \"${CONFIGURATION}\" = \"Debug\" ]; then\ncp a b\nfi"; + shellScript = "set -e\nls src\nif [ \"${CONFIGURATION}\" = \"Debug\" ]; then\ncp a b\nfi"; }; /* End PBXShellScriptBuildPhase section */ ]] @@ -1051,7 +1155,7 @@ xcode.PBXSourcesBuildPhase(tr) test.capture [[ /* Begin PBXSourcesBuildPhase section */ - [MyProject:src] /* Sources */ = { + 7971D14D1CBD5A7F378E278D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -1069,12 +1173,12 @@ xcode.PBXSourcesBuildPhase(tr) test.capture [[ /* Begin PBXSourcesBuildPhase section */ - [MyProject:src] /* Sources */ = { + 7971D14D1CBD5A7F378E278D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - [goodbye.cpp:build] /* goodbye.cpp in Sources */, - [hello.cpp:build] /* hello.cpp in Sources */, + D7426C94082664861B3E9AD4 /* goodbye.cpp in Sources */, + EF69EEEA1EFBBDDCFA08FD2A /* hello.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1103,11 +1207,11 @@ xcode.PBXVariantGroup(tr) test.capture [[ /* Begin PBXVariantGroup section */ - [MainMenu.xib] /* MainMenu.xib */ = { + 6CB8FB6B191BBB9DD7A431AB /* MainMenu.xib */ = { isa = PBXVariantGroup; children = ( - [English] /* English */, - [French] /* French */, + 625C7BEB5C1E385D961D3A2B /* English */, + 31594983623D4175755577C3 /* French */, ); name = MainMenu.xib; sourceTree = ""; @@ -1125,7 +1229,70 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = bin/Debug; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_DYNAMIC_NO_PIC = NO; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = MyProject; + }; + name = Debug; + }; + ]] + end + + + function suite.XCBuildConfigurationTarget_OnConsoleApp_dwarf() + debugformat "Dwarf" + prepare() + xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) + test.capture [[ + FDC4CBFB4635B02D8AD4823B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = bin/Debug; + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_DYNAMIC_NO_PIC = NO; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = MyProject; + }; + name = Debug; + }; + ]] + end + + + function suite.XCBuildConfigurationTarget_OnConsoleApp_split_dwarf() + debugformat "SplitDwarf" + prepare() + xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) + test.capture [[ + FDC4CBFB4635B02D8AD4823B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = bin/Debug; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_DYNAMIC_NO_PIC = NO; + INSTALL_PATH = /usr/local/bin; + PRODUCT_NAME = MyProject; + }; + name = Debug; + }; + ]] + end + + + function suite.XCBuildConfigurationTarget_OnConsoleApp_default() + debugformat "Default" + prepare() + xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) + test.capture [[ + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1146,7 +1313,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.app:Debug] /* Debug */ = { + F1C0BE8A138C6BBC504194CA /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1167,7 +1334,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [libMyProject.a:Debug] /* Debug */ = { + 92D99EC1EE1AF233C1753D01 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1188,7 +1355,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [libMyProject.dylib:Debug] /* Debug */ = { + 144A3F940E0BFC06480AFDD4 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1211,7 +1378,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.bundle:Debug] /* Debug */ = { + 5C54F6038D38EDF5A0512443 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1226,6 +1393,26 @@ ]] end + function suite.XCBuildConfigurationTarget_OnXCTest() + kind "SharedLib" + sharedlibtype "XCTest" + prepare() + xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) + test.capture [[ + 0C14B9243CF8B1165010E764 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CONFIGURATION_BUILD_DIR = bin/Debug; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_DYNAMIC_NO_PIC = NO; + PRODUCT_NAME = MyProject; + }; + name = Debug; + }; + ]] + end + function suite.XCBuildConfigurationTarget_OnOSXFramework() kind "SharedLib" @@ -1233,7 +1420,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.framework:Debug] /* Debug */ = { + 2EC4D23760BE1CE9DA9D5877 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1255,7 +1442,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [xyzMyProject.dylib:Debug] /* Debug */ = { + 33365BC82CF8183A66F71A08 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1278,7 +1465,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.xyz:Debug] /* Debug */ = { + 4FD8665471A41386AE593C94 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1300,7 +1487,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1322,7 +1509,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [libMyProject.xyz:Debug] /* Debug */ = { + 8FB8842BC09C7C1DD3B4B26B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1346,7 +1533,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [libMyProject:Debug] /* Debug */ = { + 5E2996528DBB654468C8A492 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1370,7 +1557,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [libMyProject.xyz:Debug] /* Debug */ = { + 8FB8842BC09C7C1DD3B4B26B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1393,7 +1580,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [libMyProject:Debug] /* Debug */ = { + 5E2996528DBB654468C8A492 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1416,7 +1603,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.xyz:Debug] /* Debug */ = { + 4FD8665471A41386AE593C94 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1439,7 +1626,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1463,7 +1650,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.xyz:Debug] /* Debug */ = { + 4FD8665471A41386AE593C94 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1487,7 +1674,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1511,7 +1698,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject.xyz:Debug] /* Debug */ = { + 4FD8665471A41386AE593C94 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1535,7 +1722,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1557,7 +1744,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1579,7 +1766,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1600,7 +1787,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject-d:Debug] /* Debug */ = { + 46BCF44C6EF7ACFE56933A8C /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1621,7 +1808,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1643,7 +1830,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1663,7 +1850,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1686,7 +1873,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1710,7 +1897,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1734,7 +1921,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1757,7 +1944,7 @@ prepare() xcode.XCBuildConfiguration_Target(tr, tr.products.children[1], tr.configs[1]) test.capture [[ - [MyProject:Debug] /* Debug */ = { + FDC4CBFB4635B02D8AD4823B /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; @@ -1784,7 +1971,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1809,7 +1996,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1834,7 +2021,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1859,7 +2046,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1885,7 +2072,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1910,7 +2097,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1939,7 +2126,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1968,7 +2155,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -1998,7 +2185,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2027,7 +2214,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2054,7 +2241,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2083,7 +2270,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2109,7 +2296,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2135,7 +2322,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2163,7 +2350,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2189,7 +2376,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2215,7 +2402,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2242,7 +2429,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2270,7 +2457,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2298,7 +2485,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2327,7 +2514,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2352,7 +2539,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2378,7 +2565,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2405,7 +2592,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2434,7 +2621,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2462,7 +2649,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_64_BIT)"; @@ -2488,7 +2675,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; @@ -2514,7 +2701,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_64_BIT)"; @@ -2540,7 +2727,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2566,7 +2753,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = i386; @@ -2592,7 +2779,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = x86_64; @@ -2617,7 +2804,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(ARCHS_STANDARD_32_BIT)"; @@ -2642,7 +2829,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2668,7 +2855,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2694,7 +2881,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2720,7 +2907,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2746,7 +2933,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2772,7 +2959,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2798,7 +2985,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2824,7 +3011,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2850,7 +3037,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2876,7 +3063,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2902,7 +3089,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2928,7 +3115,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2954,7 +3141,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -2980,7 +3167,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3006,7 +3193,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3032,7 +3219,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3058,7 +3245,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3084,7 +3271,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3110,7 +3297,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3136,7 +3323,7 @@ prepare() xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) test.capture [[ - [MyProject:Debug(2)] /* Debug */ = { + A14350AC4595EE5E57CE36EC /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ARCHS = "$(NATIVE_ARCH_ACTUAL)"; @@ -3156,6 +3343,32 @@ ]] end + function suite.XCBuildConfigurationProject_OnRemoveXcodebuildSettings() + xcodebuildsettings { + ARCHS = false + } + prepare() + xcode.XCBuildConfiguration_Project(tr, tr.configs[1]) + test.capture [[ + A14350AC4595EE5E57CE36EC /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CONFIGURATION_BUILD_DIR = "$(SYMROOT)"; + CONFIGURATION_TEMP_DIR = "$(OBJROOT)"; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_ABOUT_RETURN_TYPE = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + OBJROOT = obj/Debug; + ONLY_ACTIVE_ARCH = NO; + SYMROOT = bin/Debug; + }; + name = Debug; + }; + ]] + end + + --------------------------------------------------------------------------- -- XCBuildConfigurationList tests --------------------------------------------------------------------------- @@ -3168,17 +3381,17 @@ 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */ = { isa = XCConfigurationList; buildConfigurations = ( - [MyProject:Debug(2)] /* Debug */, - [MyProject:Release(2)] /* Release */, + A14350AC4595EE5E57CE36EC /* Debug */, + F3C205E6F732D818789F7C26 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */ = { + 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */ = { isa = XCConfigurationList; buildConfigurations = ( - [MyProject:Debug] /* Debug */, - [MyProject:Release] /* Release */, + FDC4CBFB4635B02D8AD4823B /* Debug */, + C8EAD1B5F1258A67D8C117F5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; @@ -3197,17 +3410,17 @@ 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */ = { isa = XCConfigurationList; buildConfigurations = ( - [MyProject:Debug(2)] /* Debug */, - [MyProject:Release(2)] /* Release */, + A14350AC4595EE5E57CE36EC /* Debug */, + F3C205E6F732D818789F7C26 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */ = { + 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */ = { isa = XCConfigurationList; buildConfigurations = ( - [MyProject:Debug] /* Debug */, - [MyProject:Release] /* Release */, + FDC4CBFB4635B02D8AD4823B /* Debug */, + C8EAD1B5F1258A67D8C117F5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; @@ -3227,21 +3440,21 @@ 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "MyProject" */ = { isa = XCConfigurationList; buildConfigurations = ( - [MyProject:Debug(2)] /* Debug */, - [MyProject:Debug(4)] /* Debug */, - [MyProject:Release(2)] /* Release */, - [MyProject:Release(4)] /* Release */, + A14350AC4595EE5E57CE36EC /* Debug */, + A14350AC4595EE5E57CE36EC /* Debug */, + F3C205E6F732D818789F7C26 /* Release */, + F3C205E6F732D818789F7C26 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; }; - [MyProject:cfg] /* Build configuration list for PBXNativeTarget "MyProject" */ = { + 8E187FB5316408E74C34D5F5 /* Build configuration list for PBXNativeTarget "MyProject" */ = { isa = XCConfigurationList; buildConfigurations = ( - [MyProject:Debug] /* Debug */, - [MyProject:Debug(3)] /* Debug */, - [MyProject:Release] /* Release */, - [MyProject:Release(3)] /* Release */, + FDC4CBFB4635B02D8AD4823B /* Debug */, + FDC4CBFB4635B02D8AD4823B /* Debug */, + C8EAD1B5F1258A67D8C117F5 /* Release */, + C8EAD1B5F1258A67D8C117F5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Debug; Index: build/premake/premake5/modules/xcode/xcode4_workspace.lua =================================================================== --- build/premake/premake5/modules/xcode/xcode4_workspace.lua +++ build/premake/premake5/modules/xcode/xcode4_workspace.lua @@ -19,6 +19,7 @@ return { m.xmlDeclaration, m.workspace, + m.reorderProjects, m.workspaceFileRefs, m.workspaceTail, } @@ -42,6 +43,39 @@ end +-- +-- If a startup project is specified, move it (and any enclosing groups) +-- to the front of the project list. This will make Visual Studio treat +-- it like a startup project. +-- +-- I force the new ordering into the tree so that it will get applied to +-- all sections of the solution; otherwise the first change to the solution +-- in the IDE will cause the orderings to get rewritten. +-- + + function m.reorderProjects(wks) + if wks.startproject then + local np + local tr = p.workspace.grouptree(wks) + tree.traverse(tr, { + onleaf = function(n) + if n.project.name == wks.startproject then + np = n + end + end + }) + + while np and np.parent do + local p = np.parent + local i = table.indexof(p.children, np) + table.remove(p.children, i) + table.insert(p.children, 1, np) + np = p + end + end + end + + --- -- Generate the list of project references. --- Index: build/premake/premake5/modules/xcode/xcode_common.lua =================================================================== --- build/premake/premake5/modules/xcode/xcode_common.lua +++ build/premake/premake5/modules/xcode/xcode_common.lua @@ -246,7 +246,7 @@ if type(overrides) == 'table' then for name, value in pairs(overrides) do -- Allow an override to remove a value by using false - settings[name] = iif(value ~= false, value, nil) + settings[name] = iif(not table.equals(value, { false }), value, nil) end end end @@ -268,6 +268,7 @@ SharedLib = "com.apple.product-type.library.dynamic", OSXBundle = "com.apple.product-type.bundle", OSXFramework = "com.apple.product-type.framework", + XCTest = "com.apple.product-type.bundle.unit-test", } return types[iif(node.cfg.kind == "SharedLib" and node.cfg.sharedlibtype, node.cfg.sharedlibtype, node.cfg.kind)] end @@ -290,10 +291,32 @@ SharedLib = "\"compiled.mach-o.dylib\"", OSXBundle = "wrapper.cfbundle", OSXFramework = "wrapper.framework", + XCTest = "wrapper.cfbundle", } return types[iif(node.cfg.kind == "SharedLib" and node.cfg.sharedlibtype, node.cfg.sharedlibtype, node.cfg.kind)] end +-- +-- Return the Xcode debug information format for the current configuration +-- +-- @param cfg +-- The current configuration +-- @returns +-- The corresponding value of DEBUG_INFORMATION_FORMAT, or 'dwarf-with-dsym' if invalid +-- + + function xcode.getdebugformat(cfg) + local formats = { + ["Dwarf"] = "dwarf", + ["Default"] = "dwarf-with-dsym", + ["SplitDwarf"] = "dwarf-with-dsym", + } + local rval = "dwarf-with-dsym" + if cfg.debugformat then + rval = formats[cfg.debugformat] or rval + end + return rval + end -- -- Return a unique file name for a project. Since Xcode uses .xcodeproj's to @@ -933,6 +956,7 @@ end if #commands > 0 then + table.insert(commands, 1, 'set -e') -- Tells the shell to exit when any command fails commands = os.translateCommands(commands, p.MACOSX) if not wrapperWritten then _p('/* Begin PBXShellScriptBuildPhase section */') @@ -985,6 +1009,11 @@ end end end + + if #commands > 0 then + table.insert(commands, 1, 'set -e') -- Tells the shell to exit when any command fails + end + _p(level,'%s /* Build "%s" */ = {', node.buildcommandid, node.name) _p(level+1,'isa = PBXShellScriptBuildPhase;') _p(level+1,'buildActionMask = 2147483647;') @@ -1111,7 +1140,7 @@ settings['ALWAYS_SEARCH_USER_PATHS'] = 'NO' if cfg.symbols ~= p.OFF then - settings['DEBUG_INFORMATION_FORMAT'] = 'dwarf-with-dsym' + settings['DEBUG_INFORMATION_FORMAT'] = xcode.getdebugformat(cfg) end if cfg.kind ~= "StaticLib" and cfg.buildtarget.prefix ~= '' then @@ -1125,6 +1154,7 @@ StaticLib = "a", OSXBundle = "bundle", OSXFramework = "framework", + XCTest = "xctest", } local ext = cfg.buildtarget.extension:sub(2) if ext ~= exts[iif(cfg.kind == "SharedLib" and cfg.sharedlibtype, cfg.sharedlibtype, cfg.kind)] then Index: build/premake/premake5/modules/xcode/xcode_project.lua =================================================================== --- build/premake/premake5/modules/xcode/xcode_project.lua +++ build/premake/premake5/modules/xcode/xcode_project.lua @@ -135,8 +135,12 @@ -- Final setup tree.traverse(tr, { onnode = function(node) + local nodePath + if node.path then + nodePath = path.getrelative(tr.project.location, node.path) + end -- assign IDs to every node in the tree - node.id = xcode.newid(node.name, nil, node.path) + node.id = xcode.newid(node.name, nil, nodePath) node.isResource = xcode.isItemResource(prj, node) @@ -146,7 +150,7 @@ local filecfg = fileconfig.getconfig(node, cfg) if fileconfig.hasCustomBuildRule(filecfg) then if not node.buildcommandid then - node.buildcommandid = xcode.newid(node.name, "buildcommand", node.path) + node.buildcommandid = xcode.newid(node.name, "buildcommand", nodePath) end end end @@ -154,7 +158,7 @@ -- assign build IDs to buildable files if xcode.getbuildcategory(node) and not node.excludefrombuild and not xcode.mustExcludeFromTarget(node, tr.project) then - node.buildid = xcode.newid(node.name, "build", node.path) + node.buildid = xcode.newid(node.name, "build", nodePath) end -- remember key files that are needed elsewhere Index: build/premake/premake5/scripts/package.lua =================================================================== --- build/premake/premake5/scripts/package.lua +++ build/premake/premake5/scripts/package.lua @@ -20,27 +20,68 @@ -- Check the command line arguments, and show some help if needed. --- - local usage = 'usage is: package \n' .. + local allowedCompilers = {} + + if os.ishost("windows") then + allowedCompilers = { + "vs2019", + "vs2017", + "vs2015", + "vs2013", + "vs2012", + "vs2010", + "vs2008", + "vs2005", + } + elseif os.ishost("linux") or os.ishost("bsd") then + allowedCompilers = { + "gcc", + "clang", + } + elseif os.ishost("macosx") then + allowedCompilers = { + "clang", + } + else + error("Unsupported host os", 0) + end + + local usage = 'usage is: package []\n' .. ' is the name of the release branch to target\n' .. - ' is one of "source" or "binary"\n' + ' is one of "source" or "binary"\n' .. + ' (default: ' .. allowedCompilers[1] .. ') is one of ' .. table.implode(allowedCompilers, "", "", " ") - if #_ARGS ~= 2 then + if #_ARGS ~= 2 and #_ARGS ~= 3 then error(usage, 0) end local branch = _ARGS[1] local kind = _ARGS[2] + local compiler = _ARGS[3] or allowedCompilers[1] if kind ~= "source" and kind ~= "binary" then + print("Invalid package kind: "..kind) error(usage, 0) end + if not table.contains(allowedCompilers, compiler) then + print("Invalid compiler: "..compiler) + error(usage, 0) + end + + local compilerIsVS = compiler:startswith("vs") -- -- Make sure I've got what I've need to be happy. -- - local required = { "git", "make", "gcc", "premake5", "zip" } + local required = { "git" } + + if not compilerIsVS then + table.insert(required, "make") + table.insert(required, compiler) + end + for _, value in ipairs(required) do local z = execQuiet("%s --version", value) if not z then @@ -88,22 +129,27 @@ os.rmdir(pkgName) print("Cloning source code") - z = os.executef("git clone .. %s", pkgName) + local z = execQuiet("git clone .. %s -b %s --recurse-submodules --depth 1 --shallow-submodules", pkgName, branch) if not z then error("clone failed", 0) end os.chdir(pkgName) - z = os.executef("git checkout %s", branch) - if not z then - error("unable to checkout branch " .. branch, 0) - end +-- +-- Bootstrap Premake in the newly cloned repository +-- - z = os.executef("git submodule update --init") + print("Bootstraping Premake...") + if compilerIsVS then + z = os.execute("Bootstrap.bat " .. compiler) + else + z = os.execute("make -j -f Bootstrap.mak " .. os.host()) + end if not z then - error("unable to clone submodules", 0) + error("Failed to Bootstrap Premake", 0) end + local premakeBin = path.translate("./bin/release/premake5") -- @@ -111,55 +157,73 @@ -- print("Updating embedded scripts...") - if kind == "source" then - z = execQuiet("premake5 embed") - else - z = execQuiet("premake5 --bytecode embed") - end + + local z = execQuiet("%s embed %s", premakeBin, iif(kind == "source", "", "--bytecode")) if not z then error("failed to update the embedded scripts", 0) end --- --- Clear out files I don't want included in any packages. --- - - print("Cleaning up the source tree...") - os.rmdir("packages") - os.rmdir(".git") - - local removelist = { ".DS_Store", ".git", ".gitignore", ".gitmodules", ".travis.yml", ".editorconfig", "appveyor.yml", "Bootstrap.mak" } - for _, removeitem in ipairs(removelist) do - local founditems = os.matchfiles("**" .. removeitem) - for _, item in ipairs(founditems) do - os.remove(item) - end - end - -- -- Generate a source package. -- if kind == "source" then + local function genProjects(parameters) + if not execQuiet("%s %s", premakeBin, parameters) then + error("failed to generate project for "..parameters, 0) + end + end + + os.rmdir("build") + print("Generating project files...") - execQuiet("premake5 /to=build/vs2005 vs2005") - execQuiet("premake5 /to=build/vs2008 vs2008") - execQuiet("premake5 /to=build/vs2010 vs2010") - execQuiet("premake5 /to=build/vs2012 vs2012") - execQuiet("premake5 /to=build/vs2013 vs2013") - execQuiet("premake5 /to=build/vs2015 vs2015") - execQuiet("premake5 /to=build/vs2017 vs2017") - execQuiet("premake5 /to=build/gmake.windows /os=windows gmake") - execQuiet("premake5 /to=build/gmake.unix /os=linux gmake") - execQuiet("premake5 /to=build/gmake.macosx /os=macosx gmake") - execQuiet("premake5 /to=build/gmake.bsd /os=bsd gmake") + + local ignoreActions = { + "clean", + "embed", + "gmake2", + "package", + "test", + + "codelite", + "xcode4", + } + + for action in premake.action.each() do + + if not table.contains(ignoreActions, action.trigger) then + if action.trigger == "gmake" then + + local gmakeOsList = { + { "windows", }, + { "unix", "linux" }, + { "macosx", }, + { "bsd", }, + } + + for _, os in ipairs(gmakeOsList) do + local osTarget = os[2] or os[1] + genProjects(string.format("--to=build/gmake.%s --os=%s gmake", os[1], osTarget)) + end + else + genProjects(string.format("--to=build/%s %s", action.trigger, action.trigger)) + end + end + end print("Creating source code package...") + + if not execQuiet("git add -f build") or + not execQuiet("git stash") or + not execQuiet("git archive --format=zip -9 -o ../%s-src.zip --prefix=%s/ stash@{0}", pkgName, pkgName) or + not execQuiet("git stash drop stash@{0}") + then + error("failed to archive release", 0) + end + os.chdir("..") - execQuiet("zip -r9 %s-src.zip %s/*", pkgName, pkgName) - end @@ -172,22 +236,28 @@ if kind == "binary" then print("Building binary...") - execQuiet("premake5 gmake") - z = execQuiet("make config=release") - if not z then - error("build failed") - end os.chdir("bin/release") - local name = string.format("%s-%s%s", pkgName, os.host(), pkgExt) + local addCommand = "git add -f premake5%s" + local archiveCommand = "git archive --format=%s -o ../../../%s-%s%s stash@{0} -- ./premake5%s" + if os.ishost("windows") then - execQuiet("zip -9 %s premake5.exe", name) + addCommand = string.format(addCommand, ".exe") + archiveCommand = string.format(archiveCommand, "zip -9", pkgName, os.host(), pkgExt, ".exe") else - execQuiet("tar czvf %s premake5", name) + addCommand = string.format(addCommand, "") + archiveCommand = string.format(archiveCommand, "tar.gz", pkgName, os.host(), pkgExt, "") + end + + if not execQuiet(addCommand) or + not execQuiet("git stash") or + not execQuiet(archiveCommand) or + not execQuiet("git stash drop stash@{0}") + then + error("failed to archive release", 0) end - os.copyfile(name, path.join("../../../", name)) os.chdir("../../..") end @@ -197,4 +267,5 @@ -- Clean up -- - os.rmdir(pkgName) + -- Use RMDIR token instead of os.rmdir to force remove .git dir which has read only files + execQuiet(os.translateCommands("{RMDIR} "..pkgName)) Index: build/premake/premake5/src/_premake_init.lua =================================================================== --- build/premake/premake5/src/_premake_init.lua +++ build/premake/premake5/src/_premake_init.lua @@ -255,7 +255,10 @@ scope = "config", kind = "string", allowed = { + "Default", "c7", + "Dwarf", + "SplitDwarf", }, } @@ -708,6 +711,7 @@ allowed = { "OSXBundle", "OSXFramework", + "XCTest", }, } @@ -1697,6 +1701,7 @@ { "bsd", "OpenBSD, NetBSD, or FreeBSD" }, { "haiku", "Haiku" }, { "hurd", "GNU/Hurd" }, + { "ios", "iOS" }, { "linux", "Linux" }, { "macosx", "Apple Mac OS X" }, { "solaris", "Solaris" }, @@ -1763,20 +1768,24 @@ -- Add variations for other Posix-like systems. - filter { "system:MacOSX", "kind:WindowedApp" } + filter { "system:darwin", "kind:WindowedApp" } targetextension ".app" - filter { "system:MacOSX", "kind:SharedLib" } + filter { "system:darwin", "kind:SharedLib" } targetextension ".dylib" - filter { "system:MacOSX", "kind:SharedLib", "sharedlibtype:OSXBundle" } + filter { "system:darwin", "kind:SharedLib", "sharedlibtype:OSXBundle" } targetprefix "" targetextension ".bundle" - filter { "system:MacOSX", "kind:SharedLib", "sharedlibtype:OSXFramework" } + filter { "system:darwin", "kind:SharedLib", "sharedlibtype:OSXFramework" } targetprefix "" targetextension ".framework" + filter { "system:darwin", "kind:SharedLib", "sharedlibtype:XCTest" } + targetprefix "" + targetextension ".xctest" + -- Windows and friends. filter { "system:Windows or language:C# or language:F#", "kind:ConsoleApp or WindowedApp" } @@ -1799,7 +1808,10 @@ filter { "kind:SharedLib", "system:not Windows" } pic "On" - filter { "system:macosx" } + filter { "system:darwin" } toolset "clang" + filter { "platforms:Win64" } + architecture "x86_64" + filter {} Index: build/premake/premake5/src/base/_foundation.lua =================================================================== --- build/premake/premake5/src/base/_foundation.lua +++ build/premake/premake5/src/base/_foundation.lua @@ -34,6 +34,7 @@ premake.CSHARP = "C#" premake.GCC = "gcc" premake.HAIKU = "haiku" + premake.ANDROID = "android" premake.IOS = "ios" premake.LINUX = "linux" premake.MACOSX = "macosx" @@ -50,6 +51,7 @@ premake.UNICODE = "Unicode" premake.UNIVERSAL = "universal" premake.UTILITY = "Utility" + premake.PACKAGING = "Packaging" premake.WINDOWEDAPP = "WindowedApp" premake.WINDOWS = "windows" premake.X86 = "x86" Index: build/premake/premake5/src/base/api.lua =================================================================== --- build/premake/premake5/src/base/api.lua +++ build/premake/premake5/src/base/api.lua @@ -82,10 +82,11 @@ function includeexternal(fname) local fullPath = p.findProjectScript(fname) + local wasIncludingExternal = api._isIncludingExternal api._isIncludingExternal = true fname = fullPath or fname dofile(fname) - api._isIncludingExternal = nil + api._isIncludingExternal = wasIncludingExternal end p.alias(_G, "includeexternal", "includeExternal") Index: build/premake/premake5/src/base/config.lua =================================================================== --- build/premake/premake5/src/base/config.lua +++ build/premake/premake5/src/base/config.lua @@ -48,7 +48,7 @@ local bundlename = "" local bundlepath = "" - if cfg.system == p.MACOSX and (kind == p.WINDOWEDAPP or (kind == p.SHAREDLIB and cfg.sharedlibtype)) then + if table.contains(os.getSystemTags(cfg.system), "darwin") and (kind == p.WINDOWEDAPP or (kind == p.SHAREDLIB and cfg.sharedlibtype)) then bundlename = basename .. extension bundlepath = path.join(bundlename, iif(kind == p.SHAREDLIB and cfg.sharedlibtype == "OSXFramework", "Versions/A", "Contents/MacOS")) end @@ -99,6 +99,19 @@ return false end + -- Can link mixed C++ with native projects + + if cfg.language == "C++" then + if cfg.clr == p.ON then + return true + end + end + if target.language == "C++" then + if target.clr == p.ON then + return true + end + end + -- Can't link managed and unmanaged projects local cfgManaged = project.isdotnet(cfg.project) or (cfg.clr ~= p.OFF) @@ -492,6 +505,9 @@ for field in p.field.eachOrdered() do local map = mappings[field.name] + if type(map) == "function" then + map = map(cfg, mappings) + end if map then -- Pass each cfg value in the list through the map and append the Index: build/premake/premake5/src/base/detoken.lua =================================================================== --- build/premake/premake5/src/base/detoken.lua +++ build/premake/premake5/src/base/detoken.lua @@ -187,6 +187,9 @@ else local res = expand_cache[value] if res == nil then + if type(value) == "string" and path.hasdeferredjoin(value) then + value = path.resolvedeferredjoin(value) + end res = expandvalue(value, e, f) expand_cache[value] = res end Index: build/premake/premake5/src/base/fileconfig.lua =================================================================== --- build/premake/premake5/src/base/fileconfig.lua +++ build/premake/premake5/src/base/fileconfig.lua @@ -186,6 +186,9 @@ -- function fileconfig.hasFileSettings(fcfg) + if not fcfg then + return false + end for key, field in pairs(p.fields) do if field.scopes[1] == "config" then local value = fcfg[field.name] Index: build/premake/premake5/src/base/jsonwrapper.lua =================================================================== --- build/premake/premake5/src/base/jsonwrapper.lua +++ build/premake/premake5/src/base/jsonwrapper.lua @@ -8,6 +8,7 @@ local implementation = dofile('json.lua') local err + json.implementation = implementation function implementation.assert(condition, message) if not condition then Index: build/premake/premake5/src/base/os.lua =================================================================== --- build/premake/premake5/src/base/os.lua +++ build/premake/premake5/src/base/os.lua @@ -69,7 +69,7 @@ elseif os.istarget("haiku") then path = os.getenv("LIBRARY_PATH") or "" else - if os.istarget("macosx") then + if os.istarget("darwin") then path = os.getenv("DYLD_LIBRARY_PATH") or "" else path = os.getenv("LD_LIBRARY_PATH") or "" @@ -90,7 +90,7 @@ path = path or "" local archpath = "/lib:/usr/lib:/usr/local/lib" - if os.is64bit() and not os.istarget("macosx") then + if os.is64bit() and not (os.istarget("darwin")) then archpath = "/lib64:/usr/lib64/:usr/local/lib64" .. ":" .. archpath end if (#path > 0) then @@ -116,7 +116,7 @@ elseif os.istarget("haiku") then formats = { "lib%s.so", "%s.so" } else - if os.istarget("macosx") then + if os.istarget("darwin") then formats = { "lib%s.dylib", "%s.dylib" } else formats = { "lib%s.so", "%s.so" } @@ -734,6 +734,7 @@ ["aix"] = { "aix", "posix" }, ["bsd"] = { "bsd", "posix" }, ["haiku"] = { "haiku", "posix" }, + ["ios"] = { "ios", "darwin", "posix", "mobile" }, ["linux"] = { "linux", "posix" }, ["macosx"] = { "macosx", "darwin", "posix" }, ["solaris"] = { "solaris", "posix" }, Index: build/premake/premake5/src/base/oven.lua =================================================================== --- build/premake/premake5/src/base/oven.lua +++ build/premake/premake5/src/base/oven.lua @@ -691,6 +691,29 @@ -- conflicting object file names (i.e. src/hello.cpp and tests/hello.cpp both -- create hello.o). -- +-- a file list of: src/hello.cpp, tests/hello.cpp and src/hello1.cpp also generates +-- conflicting object file names - hello1.o + + function oven.uniqueSequence(f, cfg, seq, bases) + while true do + f.sequence = seq[cfg] or 0 + seq[cfg] = f.sequence + 1 + + if seq[cfg] == 1 then + break + end + + if not bases[f.objname] then + bases[f.objname] = {} + end + + if not bases[f.objname][cfg] then + bases[f.objname][cfg] = 1 + break + end + end + end + function oven.assignObjectSequences(prj) @@ -719,8 +742,7 @@ for cfg in p.project.eachconfig(prj) do local fcfg = p.fileconfig.getconfig(file, cfg) if fcfg ~= nil and not fcfg.flags.ExcludeFromBuild then - fcfg.sequence = sequences[cfg] or 0 - sequences[cfg] = fcfg.sequence + 1 + oven.uniqueSequence(fcfg, cfg, sequences, bases) end end @@ -728,8 +750,7 @@ -- this around until they do. At which point I might consider just -- storing the sequence number instead of the whole object name - file.sequence = sequences[prj] or 0 - sequences[prj] = file.sequence + 1 + oven.uniqueSequence(file, prj, sequences, bases) end) end Index: build/premake/premake5/src/base/rule.lua =================================================================== --- build/premake/premake5/src/base/rule.lua +++ build/premake/premake5/src/base/rule.lua @@ -106,104 +106,6 @@ ---- --- Given the value for a particular property, returns a formatted string. --- --- @param prop --- The property definition. --- @param value --- The value of the property to be formatted. --- @returns --- A string value. ---- - - function rule.getPropertyString(self, prop, value) - -- list? - if type(value) == "table" then - if #value > 0 then - local sep = prop.separator or " " - return table.concat(value, sep) - else - return nil - end - end - - -- enum? - if prop.values then - local i = table.findKeyByValue(prop.values, value) - if i ~= nil then - return tostring(i) - else - return nil - end - end - - -- primitive - value = tostring(value) - if #value > 0 then - return value - else - return nil - end - end - - - ---- --- Given the value for a particular property, returns a expanded string with switches embedded. --- --- @param prop --- The property definition. --- @param value --- The value of the property to be formatted. --- @returns --- A string value. ---- - - function rule.expandString(self, prop, value) - if not prop.switch then - return rule.getPropertyString(self, prop, value) - end - - -- list? - if type(value) == "table" then - if #value > 0 then - return prop.switch .. table.concat(value, " " .. prop.switch) - else - return nil - end - end - - -- bool just emits the switch - if type(value) == "boolean" then - if value then - return prop.switch - else - return nil - end - end - - -- enum? - if prop.values then - local i = table.findKeyByValue(prop.values, value) - if i ~= nil then - return prop.switch .. tostring(i) - else - return nil - end - end - - -- primitive - value = tostring(value) - if #value > 0 then - return prop.switch .. value - else - return nil - end - end - - - --- -- Set one or more rule variables in the current configuration scope. -- Index: build/premake/premake5/src/host/os_uuid.c =================================================================== --- build/premake/premake5/src/host/os_uuid.c +++ build/premake/premake5/src/host/os_uuid.c @@ -16,7 +16,7 @@ * without the help of the determinately sized C99 data types that * are not yet universally supported. */ -static void add(unsigned char* bytes, int offset, unsigned long value) +static void add(unsigned char* bytes, int offset, uint32_t value) { int i; for (i = 0; i < 4; ++i) Index: build/premake/premake5/src/host/path_normalize.c =================================================================== --- build/premake/premake5/src/host/path_normalize.c +++ build/premake/premake5/src/host/path_normalize.c @@ -17,6 +17,18 @@ #define IS_SPACE(__c) ((__c >= '\t' && __c <= '\r') || __c == ' ') +#define IS_WIN_ENVVAR_START(__c) (*__c == '%') +#define IS_WIN_ENVVAR_END(__c) (*__c == '%') + +#define IS_VS_VAR_START(__c) (*__c == '$' && __c[1] == '(') +#define IS_VS_VAR_END(__c) (*__c == ')') + +#define IS_UNIX_ENVVAR_START(__c) (*__c == '$' && __c[1] == '{') +#define IS_UNIX_ENVVAR_END(__c) (*__c == '}') + +#define IS_PREMAKE_TOKEN_START(__c) (*__c == '%' && __c[1] == '{') +#define IS_PREMAKE_TOKEN_END(__c) (*__c == '}') + static void* normalize_substring(const char* srcPtr, const char* srcEnd, char* dstPtr) { #define IS_END(__p) (__p >= srcEnd || *__p == '\0') @@ -93,8 +105,38 @@ --dstPtr; return dstPtr; +#undef IS_END +#undef IS_SEP_OR_END } +static int skip_tokens(const char *readPtr) +{ + int skipped = 0; + +#define DO_SKIP_FOR(__kind)\ +if (IS_ ## __kind ## _START(readPtr)) { \ + do \ + { \ + skipped++; \ + } while (!IS_ ## __kind ## _END(readPtr++)); \ +} \ +// DO_SKIP_FOR + + do + { + DO_SKIP_FOR(PREMAKE_TOKEN) + DO_SKIP_FOR(WIN_ENVVAR) + DO_SKIP_FOR(VS_VAR) + DO_SKIP_FOR(UNIX_ENVVAR) + + } while (IS_WIN_ENVVAR_START(readPtr) || + IS_VS_VAR_START(readPtr) || + IS_UNIX_ENVVAR_START(readPtr) || + IS_PREMAKE_TOKEN_START(readPtr)); + + return skipped; +#undef DO_SKIP_FOR +} int path_normalize(lua_State* L) { @@ -111,9 +153,31 @@ endPtr = readPtr; while (*endPtr) { + + int skipped = skip_tokens(readPtr); + if (skipped > 0) { + + if (readPtr != path && writePtr != buffer && + IS_SEP(readPtr[-1]) && !IS_SEP(writePtr[-1])) + { + *(writePtr++) = (readPtr[-1]); + } + + while (skipped-- > 0) + *(writePtr++) = *(readPtr++); + + endPtr = readPtr; + } + // find the end of sub path - while (*endPtr && !IS_SPACE(*endPtr)) + while (*endPtr && !IS_SPACE(*endPtr) && + !IS_WIN_ENVVAR_START(endPtr) && + !IS_VS_VAR_START(endPtr) && + !IS_UNIX_ENVVAR_START(endPtr) && + !IS_PREMAKE_TOKEN_START(endPtr)) + { ++endPtr; + } // path is surrounded with quotes if (readPtr != endPtr && Index: build/premake/premake5/src/host/premake.h =================================================================== --- build/premake/premake5/src/host/premake.h +++ build/premake/premake5/src/host/premake.h @@ -11,7 +11,7 @@ #include -#define PREMAKE_VERSION "5.0.0-alpha13" +#define PREMAKE_VERSION "5.0.0-alpha14" #define PREMAKE_COPYRIGHT "Copyright (C) 2002-2018 Jason Perkins and the Premake Project" #define PREMAKE_PROJECT_URL "https://github.com/premake/premake-core/wiki" @@ -53,6 +53,7 @@ #else #include #endif +#include /* not all platforms define this */ #ifndef FALSE @@ -85,7 +86,7 @@ /* Bootstrapping helper functions */ int do_chdir(lua_State* L, const char* path); -unsigned long do_hash(const char* str, int seed); +uint32_t do_hash(const char* str, int seed); void do_getabsolute(char* result, const char* value, const char* relative_to); int do_getcwd(char* buffer, size_t size); int do_isabsolute(const char* path); Index: build/premake/premake5/src/host/premake.c =================================================================== --- build/premake/premake5/src/host/premake.c +++ build/premake/premake5/src/host/premake.c @@ -194,7 +194,7 @@ #endif lua_pushlightuserdata(L, &s_shimTable); - lua_rawseti(L, LUA_REGISTRYINDEX, 'SHIM'); + lua_rawseti(L, LUA_REGISTRYINDEX, 0x5348494D); // equal to 'SHIM' /* push the application metadata */ lua_pushstring(L, LUA_COPYRIGHT); Index: build/premake/premake5/src/host/string_hash.c =================================================================== --- build/premake/premake5/src/host/string_hash.c +++ build/premake/premake5/src/host/string_hash.c @@ -17,11 +17,11 @@ } -unsigned long do_hash(const char* str, int seed) +uint32_t do_hash(const char* str, int seed) { /* DJB2 hashing; see http://www.cse.yorku.ca/~oz/hash.html */ - unsigned long hash = 5381; + uint32_t hash = 5381; if (seed != 0) { hash = hash * 33 + seed; Index: build/premake/premake5/src/tools/clang.lua =================================================================== --- build/premake/premake5/src/tools/clang.lua +++ build/premake/premake5/src/tools/clang.lua @@ -210,7 +210,7 @@ table.insert(r, '-Wl,--out-implib="' .. cfg.linktarget.relpath .. '"') elseif cfg.system == p.LINUX then table.insert(r, '-Wl,-soname=' .. p.quoted(cfg.linktarget.name)) - elseif cfg.system == p.MACOSX then + elseif table.contains(os.getSystemTags(cfg.system), "darwin") then table.insert(r, '-Wl,-install_name,' .. p.quoted('@rpath/' .. cfg.linktarget.name)) end return r Index: build/premake/premake5/src/tools/dotnet.lua =================================================================== --- build/premake/premake5/src/tools/dotnet.lua +++ build/premake/premake5/src/tools/dotnet.lua @@ -247,7 +247,7 @@ } if tool == "csc" then - local toolset = _OPTIONS.dotnet or iif(os.istarget("windows"), "msnet", "mono") + local toolset = _OPTIONS.dotnet or "msnet" return compilers[toolset] else return "resgen" @@ -294,6 +294,10 @@ table.insert(flags, table.implode(cfg.defines, "/d:", "", " ")) end + if cfg.csversion ~= nil then + table.insert(flags, '/langversion:' .. cfg.csversion) + end + return table.join(flags, cfg.buildoptions) end Index: build/premake/premake5/src/tools/gcc.lua =================================================================== --- build/premake/premake5/src/tools/gcc.lua +++ build/premake/premake5/src/tools/gcc.lua @@ -31,6 +31,18 @@ end +-- +-- Returns string to be appended to -g +-- + function gcc.getdebugformat(cfg) + local flags = { + Default = "", + Dwarf = "dwarf", + SplitDwarf = "split-dwarf", + } + return flags + end + -- -- Returns list of C compiler flags for a configuration. -- @@ -93,9 +105,15 @@ High = "-Wall", Off = "-w", }, - symbols = { - On = "-g" - }, + symbols = function(cfg, mappings) + local values = gcc.getdebugformat(cfg) + local debugformat = values[cfg.debugformat] or "" + return { + On = "-g" .. debugformat, + FastLink = "-g" .. debugformat, + Full = "-g" .. debugformat, + } + end, unsignedchar = { On = "-funsigned-char", Off = "-fno-unsigned-char" @@ -259,7 +277,7 @@ function gcc.getrunpathdirs(cfg, dirs) local result = {} - if not ((cfg.system == p.MACOSX) + if not (table.contains(os.getSystemTags(cfg.system), "darwin") or (cfg.system == p.LINUX)) then return result end @@ -286,7 +304,7 @@ end for _, rpath in ipairs(rpaths) do - if (cfg.system == p.MACOSX) then + if table.contains(os.getSystemTags(cfg.system), "darwin") then rpath = "@loader_path/" .. rpath elseif (cfg.system == p.LINUX) then rpath = iif(rpath == ".", "", "/" .. rpath) @@ -303,9 +321,11 @@ -- get the right output flag. -- function gcc.getsharedlibarg(cfg) - if cfg.system == p.MACOSX then + if table.contains(os.getSystemTags(cfg.system), "darwin") then if cfg.sharedlibtype == "OSXBundle" then return "-bundle" + elseif cfg.sharedlibtype == "XCTest" then + return "-bundle" elseif cfg.sharedlibtype == "OSXFramework" then return "-framework" else @@ -323,7 +343,7 @@ function gcc.ldsymbols(cfg) -- OS X has a bug, see http://lists.apple.com/archives/Darwin-dev/2006/Sep/msg00084.html - return iif(cfg.system == p.MACOSX, "-Wl,-x", "-s") + return iif(table.contains(os.getSystemTags(cfg.system), "darwin"), "-Wl,-x", "-s") end gcc.ldflags = { @@ -341,7 +361,7 @@ table.insert(r, '-Wl,--out-implib="' .. cfg.linktarget.relpath .. '"') elseif cfg.system == p.LINUX then table.insert(r, '-Wl,-soname=' .. p.quoted(cfg.linktarget.name)) - elseif cfg.system == p.MACOSX then + elseif table.contains(os.getSystemTags(cfg.system), "darwin") then table.insert(r, '-Wl,-install_name,' .. p.quoted('@rpath/' .. cfg.linktarget.name)) end return r @@ -374,14 +394,14 @@ architecture = { x86 = function (cfg) local r = {} - if cfg.system ~= p.MACOSX then + if not table.contains(os.getSystemTags(cfg.system), "darwin") then table.insert (r, "-L/usr/lib32") end return r end, x86_64 = function (cfg) local r = {} - if cfg.system ~= p.MACOSX then + if not table.contains(os.getSystemTags(cfg.system), "darwin") then table.insert (r, "-L/usr/lib64") end return r Index: build/premake/premake5/tests/base/test_detoken.lua =================================================================== --- build/premake/premake5/tests/base/test_detoken.lua +++ build/premake/premake5/tests/base/test_detoken.lua @@ -104,6 +104,18 @@ end +-- +-- If a path field contains a token that expands to a deferred join, +-- it should be resolved before performing detoken. +-- + + function suite.canExpandWithDeferredJoin() + local cwd = os.getcwd() + x = detoken.expand(path.deferredjoin(os.getcwd(), "%{_ACTION}"), environ, {}, cwd) + test.isequal(os.getcwd() .. "/test", x) + end + + -- -- If the value being expanded is a table, iterate over all of its values. -- Index: build/premake/premake5/tests/base/test_path.lua =================================================================== --- build/premake/premake5/tests/base/test_path.lua +++ build/premake/premake5/tests/base/test_path.lua @@ -724,3 +724,19 @@ test.isequal("\"../../test/test/\"", path.normalize("\"../../test/test/\"")) test.isequal("\"../../test/\"", path.normalize("\"../../test/../test/\"")) end + + function suite.normalize_withTokens() + -- Premake tokens + test.isequal("%{wks.location}../../test", path.normalize("%{wks.location}../../test")) + -- Visual Studio var + test.isequal("$(SolutionDir)../../test", path.normalize("$(SolutionDir)../../test")) + -- Windows env var + test.isequal("%APPDATA%../../test", path.normalize("%APPDATA%../../test")) + -- Unix env var + test.isequal("${HOME}../../test", path.normalize("${HOME}../../test")) + + -- Middle + test.isequal("../../${MYVAR}/../test", path.normalize("../../${MYVAR}/../test")) + -- End + test.isequal("../../test/${MYVAR}", path.normalize("../../test/${MYVAR}")) + end Index: build/premake/premake5/tests/config/test_links.lua =================================================================== --- build/premake/premake5/tests/config/test_links.lua +++ build/premake/premake5/tests/config/test_links.lua @@ -192,3 +192,33 @@ local r = prepare("all", "fullpath") test.isequal({}, r) end + + +-- +-- Mixed and unmanaged projects can link to each other. +-- + + + function suite.canLink_MixedAndNativeCpp() + clr "On" + links { "MyProject2" } + + project "MyProject2" + kind "SharedLib" + language "C++" + + local r = prepare("all", "fullpath") + test.isequal({ "bin/Debug/MyProject2.lib" }, r) + end + + function suite.canLink_NativeAndMixedCpp() + links { "MyProject2" } + + project "MyProject2" + kind "SharedLib" + language "C++" + clr "On" + + local r = prepare("all", "fullpath") + test.isequal({ "bin/Debug/MyProject2.lib" }, r) + end Index: build/premake/premake5/tests/config/test_targetinfo.lua =================================================================== --- build/premake/premake5/tests/config/test_targetinfo.lua +++ build/premake/premake5/tests/config/test_targetinfo.lua @@ -231,6 +231,18 @@ test.isequal("bin/Debug/MyProject.bundle/Contents/MacOS", path.getrelative(os.getcwd(), i.bundlepath)) end +-- +-- Bundle path should be set for macOS/iOS cocoa unit test bundle. +-- + + function suite.bundlepathSet_onMacSharedLibXCTest() + kind "SharedLib" + sharedlibtype "XCTest" + system "macosx" + i = prepare() + test.isequal("bin/Debug/MyProject.xctest/Contents/MacOS", path.getrelative(os.getcwd(), i.bundlepath)) + end + -- -- Bundle path should be set for macOS/iOS framework. Index: build/premake/premake5/tests/tools/test_dotnet.lua =================================================================== --- build/premake/premake5/tests/tools/test_dotnet.lua +++ build/premake/premake5/tests/tools/test_dotnet.lua @@ -42,5 +42,16 @@ function suite.defaultCompiler_onMacOSX() _TARGET_OS = "macosx" prepare() - test.isequal("mcs", dotnet.gettoolname(cfg, "csc")) + test.isequal("csc", dotnet.gettoolname(cfg, "csc")) end + + +-- +-- Check support for the `csversion` API +-- + +function suite.flags_csversion() + prepare() + csversion "7.2" + test.contains({ "/langversion:7.2" }, dotnet.getflags(cfg)) +end Index: build/premake/premake5/tests/tools/test_gcc.lua =================================================================== --- build/premake/premake5/tests/tools/test_gcc.lua +++ build/premake/premake5/tests/tools/test_gcc.lua @@ -353,6 +353,14 @@ test.contains({ "-Wl,-x", "-bundle" }, gcc.getldflags(cfg)) end + function suite.ldflags_onMacOSXXCTest() + system "MacOSX" + kind "SharedLib" + sharedlibtype "XCTest" + prepare() + test.contains({ "-Wl,-x", "-bundle" }, gcc.getldflags(cfg)) + end + function suite.ldflags_onMacOSXFramework() system "MacOSX" kind "SharedLib"