summaryrefslogtreecommitdiffstats
path: root/premake5.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--premake5.lua256
1 files changed, 152 insertions, 104 deletions
diff --git a/premake5.lua b/premake5.lua
index f2a58880..fbd2e011 100644
--- a/premake5.lua
+++ b/premake5.lua
@@ -1,88 +1,68 @@
-Librw = os.getenv("LIBRW") or "librw"
+newoption {
+ trigger = "glewdir",
+ value = "PATH",
+ description = "Directory of GLEW",
+ default = "glew-2.1.0"
+}
-workspace "re3"
- configurations { "Debug", "Release", "ReleaseFH", "DebugRW", "ReleaseRW", "ReleaseGLFW" }
- location "build"
+newoption {
+ trigger = "glfwdir",
+ value = "PATH",
+ description = "Directory of glfw",
+ default = "glfw-3.3.2.bin.WIN32"
+}
- files { "src/*.*" }
- files { "src/animation/*.*" }
- files { "src/audio/*.*" }
- files { "src/control/*.*" }
- files { "src/core/*.*" }
- files { "src/entities/*.*" }
- files { "src/math/*.*" }
- files { "src/modelinfo/*.*" }
- files { "src/objects/*.*" }
- files { "src/peds/*.*" }
- files { "src/render/*.*" }
- files { "src/rw/*.*" }
- files { "src/save/*.*" }
- files { "src/skel/*.*" }
- files { "src/skel/win/*.*" }
- files { "src/skel/glfw/*.*" }
- files { "src/text/*.*" }
- files { "src/vehicles/*.*" }
- files { "src/weapons/*.*" }
- files { "src/extras/*.*" }
- files { "eax/*.*" }
-
- includedirs { "src" }
- includedirs { "src/animation" }
- includedirs { "src/audio" }
- includedirs { "src/control" }
- includedirs { "src/core" }
- includedirs { "src/entities" }
- includedirs { "src/math" }
- includedirs { "src/modelinfo" }
- includedirs { "src/objects" }
- includedirs { "src/peds" }
- includedirs { "src/render" }
- includedirs { "src/rw" }
- includedirs { "src/save/" }
- includedirs { "src/skel/" }
- includedirs { "src/skel/win" }
- includedirs { "src/skel/glfw" }
- includedirs { "src/text" }
- includedirs { "src/vehicles" }
- includedirs { "src/weapons" }
- includedirs { "src/extras" }
- includedirs { "eax" }
+newoption {
+ trigger = "with-librw",
+ description = "Build and use librw from this solution"
+}
- includedirs { "dxsdk/include" }
- includedirs { "milessdk/include" }
- includedirs { "eax" }
+if(_OPTIONS["with-librw"]) then
+ Librw = "librw"
+else
+ Librw = os.getenv("LIBRW") or "librw"
+end
- libdirs { "dxsdk/lib" }
- libdirs { "milessdk/lib" }
+workspace "re3"
+ 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 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"
- includedirs { "rwsdk/include/d3d8" }
- libdirs { "rwsdk/lib/d3d8/release" }
- links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtcharse" }
- filter {}
+ filter "configurations:Debug"
+ defines { "DEBUG" }
+
+ filter "configurations:Release"
+ defines { "NDEBUG" }
+ optimize "On"
- filter "configurations:ReleaseGLFW"
- defines { "GLEW_STATIC", "GLFW_DLL" }
- 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" }
- links { "rw" }
+ filter { "platforms:win*" }
+ system "windows"
+
+ filter { "platforms:*x86*" }
+ architecture "x86"
+
+ filter { "platforms:*librw_d3d9*" }
+ defines { "RW_D3D9" }
+ if(not _OPTIONS["with-librw"]) then
+ libdirs { path.join(Librw, "lib/win-x86-d3d9/%{cfg.buildcfg}") }
+ end
+
+ filter "platforms:*librw_gl3_glfw*"
+ defines { "RW_GL3" }
+ if(not _OPTIONS["with-librw"]) then
+ libdirs { path.join(Librw, "lib/win-x86-gl3/%{cfg.buildcfg}") }
+ end
+ defines { "GLEW_STATIC" }
+ includedirs { path.join(_OPTIONS["glfwdir"], "include") }
+ includedirs { path.join(_OPTIONS["glewdir"], "include") }
filter {}
pbcommands = {
@@ -111,42 +91,110 @@ workspace "re3"
--targetdir ("bin/%{prj.name}/" .. scriptspath)
end
+if(_OPTIONS["with-librw"]) then
+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 {}
+end
+
+local function addSrcFiles( prefix )
+ return prefix .. "/*cpp", prefix .. "/*.h", prefix .. "/*.c", prefix .. "/*.ico", prefix .. "/*.aps", prefix .. "/*.rc"
+end
+
project "re3"
kind "WindowedApp"
- language "C++"
targetname "re3"
- targetdir "bin/%{cfg.buildcfg}"
+ targetdir "bin/%{cfg.platform}/%{cfg.buildcfg}"
targetextension ".exe"
characterset ("MBCS")
linkoptions "/SAFESEH:NO"
- setpaths("$(GTA_III_RE_DIR)/", "$(TargetFileName)", "")
- symbols "Full"
- staticruntime "off"
+
+ files { addSrcFiles("src") }
+ files { addSrcFiles("src/animation") }
+ files { addSrcFiles("src/audio") }
+ --files { addSrcFiles("src/audio/miles") }
+ --files { addSrcFiles("src/audio/openal") }
+ files { addSrcFiles("src/control") }
+ files { addSrcFiles("src/core") }
+ files { addSrcFiles("src/entities") }
+ files { addSrcFiles("src/math") }
+ files { addSrcFiles("src/modelinfo") }
+ files { addSrcFiles("src/objects") }
+ files { addSrcFiles("src/peds") }
+ files { addSrcFiles("src/render") }
+ files { addSrcFiles("src/rw") }
+ files { addSrcFiles("src/save") }
+ files { addSrcFiles("src/skel") }
+ files { addSrcFiles("src/skel/win") }
+ files { addSrcFiles("src/skel/glfw") }
+ files { addSrcFiles("src/text") }
+ files { addSrcFiles("src/vehicles") }
+ files { addSrcFiles("src/weapons") }
+ files { addSrcFiles("src/extras") }
+ files { addSrcFiles("eax") }
+
+ includedirs { "src" }
+ includedirs { "src/animation" }
+ includedirs { "src/audio" }
+ includedirs { "src/control" }
+ includedirs { "src/core" }
+ includedirs { "src/entities" }
+ includedirs { "src/math" }
+ includedirs { "src/modelinfo" }
+ includedirs { "src/objects" }
+ includedirs { "src/peds" }
+ includedirs { "src/render" }
+ includedirs { "src/rw" }
+ includedirs { "src/save/" }
+ includedirs { "src/skel/" }
+ includedirs { "src/skel/win" }
+ includedirs { "src/skel/glfw" }
+ includedirs { "src/text" }
+ includedirs { "src/vehicles" }
+ includedirs { "src/weapons" }
+ includedirs { "src/extras" }
+ includedirs { "eax" }
+
+ includedirs { "milessdk/include" }
+ includedirs { "eax" }
+
+ libdirs { "milessdk/lib" }
- 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" }
+ setpaths("$(GTA_III_RE_DIR)/", "$(TargetFileName)", "")
- filter "configurations:*RW"
- defines { "RWLIBS" }
+ filter "platforms:*RW33*"
staticruntime "on"
+ includedirs { "rwsdk/include/d3d8" }
+ libdirs { "rwsdk/lib/d3d8/release" }
+ links { "rwcore", "rpworld", "rpmatfx", "rpskin", "rphanim", "rtbmp", "rtquat", "rtcharse" }
+ defines { "RWLIBS" }
linkoptions "/SECTION:_rwcseg,ER!W /MERGE:_rwcseg=.text"
+
+ filter "platforms:*librw*"
+ defines { "LIBRW" }
+ files { addSrcFiles("src/fakerw") }
+ includedirs { "src/fakerw" }
+ includedirs { Librw }
+ if(_OPTIONS["with-librw"]) then
+ libdirs { "lib/%{cfg.platform}/%{cfg.buildcfg}" }
+ end
+ links { "rw" }
- 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 "configurations:Debug*"
- defines { "DEBUG" }
-
- filter "configurations:Release*"
- defines { "NDEBUG" }
- optimize "On"
+ filter "platforms:*d3d*"
+ includedirs { "dxsdk/include" }
+ libdirs { "dxsdk/lib" }
+ filter "platforms:*d3d9*"
+ links { "d3d9" }
- filter "configurations:ReleaseFH"
- prebuildcommands {}
- optimize "off"
- staticruntime "on"
-
+ filter "platforms:*gl3_glfw*"
+ libdirs { path.join(_OPTIONS["glewdir"], "lib/Release/Win32") }
+ libdirs { path.join(_OPTIONS["glfwdir"], "lib-" .. string.gsub(_ACTION, "vs", "vc")) }
+ links { "opengl32", "glew32s", "glfw3" }