diff --git a/.appveyor.yml b/.appveyor.yml index a1b526be..5c6d3aa5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -3,24 +3,21 @@ image: Visual Studio 2019 configuration: - Debug - Release -platform: Win32 +platform: +- win-x86-librw_d3d9-mss environment: APPVEYOR_SAVE_CACHE_ON_ERROR: true install: - cmd: >- git submodule update --init --recursive - copy premake5.exe "librw/premake5.exe" - - cd "librw" && premake5 vs2019 && msbuild "build/librw.sln" /property:Configuration=%CONFIGURATION% /property:Platform="win-x86-d3d9" - - cd "%APPVEYOR_BUILD_FOLDER%" && premake5 vs2019 + premake5 vs2019 build: project: build/re3.sln verbosity: minimal artifacts: -- path: bin/%CONFIGURATION%/re3.exe +- path: bin/%PLATFORM%/%CONFIGURATION%/re3.exe name: re3.exe -- path: bin/%CONFIGURATION%/re3.pdb +- path: bin/%PLATFORM%/%CONFIGURATION%/re3.pdb name: re3.pdb diff --git a/premake5.lua b/premake5.lua index f2a58880..ec499c58 100644 --- a/premake5.lua +++ b/premake5.lua @@ -1,8 +1,85 @@ Librw = os.getenv("LIBRW") or "librw" workspace "re3" - configurations { "Debug", "Release", "ReleaseFH", "DebugRW", "ReleaseRW", "ReleaseGLFW" } + language "C++" + configurations { "Debug", "Release" } location "build" + symbols "Full" + staticruntime "off" + filter { "system:windows" } + platforms { + "win-x86-RW33_d3d8-mss", + "win-x86-librw_d3d9-mss", + "win-x86-librw_gl3_glfw-mss", + } + + filter "configurations:Debug" + defines { "DEBUG" } + + filter "configurations:Release" + defines { "NDEBUG" } + optimize "On" + + filter { "platforms:win*" } + system "windows" + + filter { "platforms:*x86*" } + architecture "x86" + + filter { "platforms:*librw_d3d9*" } + defines { "RW_D3D9" } + + filter "platforms:*librw_gl3_glfw*" + defines { "RW_GL3" } + defines { "GLEW_STATIC" } + includedirs { "glfw-3.3.2.bin.WIN32/include" } + includedirs { "glew-2.1.0/include" } + filter {} + + pbcommands = { + "setlocal EnableDelayedExpansion", + "set file=$(TargetPath)", + "FOR %%i IN (\"%file%\") DO (", + "set filename=%%~ni", + "set fileextension=%%~xi", + "set target=!path!!filename!!fileextension!", + "copy /y \"!file!\" \"!target!\"", + ")" } + + function setpaths (gamepath, exepath, scriptspath) + scriptspath = scriptspath or "" + if (gamepath) then + cmdcopy = { "set \"path=" .. gamepath .. scriptspath .. "\"" } + table.insert(cmdcopy, pbcommands) + postbuildcommands (cmdcopy) + debugdir (gamepath) + if (exepath) then + debugcommand (gamepath .. exepath) + dir, file = exepath:match'(.*/)(.*)' + debugdir (gamepath .. (dir or "")) + end + end + --targetdir ("bin/%{prj.name}/" .. scriptspath) + end + +project "librw" + kind "StaticLib" + targetname "rw" + targetdir "lib/%{cfg.platform}/%{cfg.buildcfg}" + files { path.join(Librw, "src/*.*") } + files { path.join(Librw, "src/*/*.*") } + filter "platforms:*RW33*" + flags { "ExcludeFromBuild" } + filter {} + +project "re3" + kind "WindowedApp" + targetname "re3" + targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}" + targetextension ".exe" + characterset ("MBCS") + linkoptions "/SAFESEH:NO" + files { "src/*.*" } files { "src/animation/*.*" } @@ -48,105 +125,38 @@ workspace "re3" includedirs { "src/extras" } includedirs { "eax" } - includedirs { "dxsdk/include" } includedirs { "milessdk/include" } includedirs { "eax" } - libdirs { "dxsdk/lib" } libdirs { "milessdk/lib" } - - filter "configurations:Debug or Release" - files { "src/fakerw/*.*" } - includedirs { "src/fakerw" } - includedirs { Librw } - libdirs { path.join(Librw, "lib/win-x86-d3d9/%{cfg.buildcfg}") } - links { "rw", "d3d9" } - filter {} - filter "configurations:DebugRW or ReleaseRW" + setpaths("$(GTA_III_RE_DIR)/", "$(TargetFileName)", "") + + filter "platforms:*RW33*" + staticruntime "on" includedirs { "rwsdk/include/d3d8" } libdirs { "rwsdk/lib/d3d8/release" } links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtcharse" } - filter {} - - filter "configurations:ReleaseGLFW" - defines { "GLEW_STATIC", "GLFW_DLL" } + defines { "RWLIBS" } + linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text" + + filter "platforms:*librw*" + defines { "LIBRW" } files { "src/fakerw/*.*" } includedirs { "src/fakerw" } includedirs { Librw } - includedirs { "glfw-3.3.2.bin.WIN32/include" } - includedirs { "glew-2.1.0/include" } - libdirs { path.join(Librw, "lib/win-x86-gl3/Release") } - libdirs { "glew-2.1.0/lib/Release/Win32" } - libdirs { "glfw-3.3.2.bin.WIN32/lib-vc2015" } - links { "opengl32" } - links { "glew32s" } - links { "glfw3dll" } + libdirs { "lib/%{cfg.platform}/%{cfg.buildcfg}" } links { "rw" } - filter {} - - pbcommands = { - "setlocal EnableDelayedExpansion", - "set file=$(TargetPath)", - "FOR %%i IN (\"%file%\") DO (", - "set filename=%%~ni", - "set fileextension=%%~xi", - "set target=!path!!filename!!fileextension!", - "copy /y \"!file!\" \"!target!\"", - ")" } - - function setpaths (gamepath, exepath, scriptspath) - scriptspath = scriptspath or "" - if (gamepath) then - cmdcopy = { "set \"path=" .. gamepath .. scriptspath .. "\"" } - table.insert(cmdcopy, pbcommands) - postbuildcommands (cmdcopy) - debugdir (gamepath) - if (exepath) then - debugcommand (gamepath .. exepath) - dir, file = exepath:match'(.*/)(.*)' - debugdir (gamepath .. (dir or "")) - end - end - --targetdir ("bin/%{prj.name}/" .. scriptspath) - end -project "re3" - kind "WindowedApp" - language "C++" - targetname "re3" - targetdir "bin/%{cfg.buildcfg}" - targetextension ".exe" - characterset ("MBCS") - linkoptions "/SAFESEH:NO" - - setpaths("$(GTA_III_RE_DIR)/", "$(TargetFileName)", "") - symbols "Full" - staticruntime "off" - - filter "configurations:Debug or Release or ReleaseFH" - prebuildcommands { "cd \"../librw\" && premake5 " .. _ACTION .. " && msbuild \"build/librw.sln\" /property:Configuration=%{cfg.longname} /property:Platform=\"win-x86-d3d9\"" } - defines { "LIBRW", "RW_D3D9" } - - filter "configurations:*RW" - defines { "RWLIBS" } - staticruntime "on" - linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text" + filter "platforms:*d3d*" + includedirs { "dxsdk/include" } + libdirs { "dxsdk/lib" } - filter "configurations:*GLFW" - prebuildcommands { "cd \"../librw\" && premake5 " .. _ACTION .. " && msbuild \"build/librw.sln\" /property:Configuration=Release /property:Platform=\"win-x86-gl3\"" } - defines { "LIBRW", "RW_GL3" } + filter "platforms:*d3d9*" + links { "d3d9" } - filter "configurations:Debug*" - defines { "DEBUG" } - - filter "configurations:Release*" - defines { "NDEBUG" } - optimize "On" - - - filter "configurations:ReleaseFH" - prebuildcommands {} - optimize "off" - staticruntime "on" + filter "platforms:*gl3_glfw*" + libdirs { "glew-2.1.0/lib/Release/Win32" } + libdirs { "glfw-3.3.2.bin.WIN32/lib-" .. string.gsub(_ACTION, "vs", "vc") } + links { "opengl32", "glew32s", "glfw3" }