REDRIVER2/src_rebuild/premake5.lua
2022-01-21 21:04:45 +03:00

249 lines
5.5 KiB
Lua

-- premake5.lua
require "premake_modules/usage"
require "premake_modules/emscripten"
------------------------------------------
newoption {
trigger = "raspberry-pi",
description = "adds specific define for compiling on Raspberry Pi"
}
table.insert(premake.option.get("os").allowed, { "emscripten", "Emscripten" })
------------------------------------------
-- you can redefine dependencies
SDL2_DIR = os.getenv("SDL2_DIR") or "dependencies/SDL2"
OPENAL_DIR = os.getenv("OPENAL_DIR") or "dependencies/openal-soft"
JPEG_DIR = os.getenv("JPEG_DIR") or "dependencies/jpeg"
WEBDEMO_DIR = os.getenv("WEBDEMO_DIR") or "../../../content/web_demo@/" -- FIXME: make it better
RED2_DIR = os.getenv("RED2_DIR") or "../../data@/"
WEBSHELL_PATH = "../platform/Emscripten" -- must be relative to makefile path (SADLY)
GAME_REGION = os.getenv("GAME_REGION") or "NTSC_VERSION" -- or PAL_VERSION
GAME_VERSION = os.getenv("APPVEYOR_BUILD_VERSION") or nil
if not (GAME_REGION == "NTSC_VERSION" or GAME_REGION == "PAL_VERSION") then
error("'GAME_REGION' should be 'NTSC_VERSION' or 'PAL_VERSION'")
end
------------------------------------------
workspace "REDRIVER2"
location "project_%{_ACTION}_%{os.target()}"
configurations { "Debug", "Release", "Release_dev" }
defines { VERSION }
if os.target() == "emscripten" then
platforms { "emscripten" }
buildoptions {
"-s TOTAL_MEMORY=1073741824",
"-s USE_SDL=2",
"-s FULL_ES2=1",
--"-s USE_WEBGL2=1",
"-s ASYNCIFY=1",
"-s ALLOW_MEMORY_GROWTH=1",
"-s GL_TESTING=1",
"-Wno-c++11-narrowing",
"-Wno-constant-conversion",
"-Wno-writable-strings",
"-Wno-unused-value",
"-Wno-switch",
"-Wno-shift-op-parentheses",
"-Wno-parentheses",
"-Wno-format",
}
linkoptions {
"-s TOTAL_MEMORY=1073741824",
"-s USE_SDL=2",
"-s FULL_ES2=1",
--"-s USE_WEBGL2=1",
"-s ASYNCIFY=1",
"-s ALLOW_MEMORY_GROWTH=1",
"-s GL_TESTING=1",
("--shell-file " .. WEBSHELL_PATH .. "/shell.html"),
("--preload-file " .. WEBDEMO_DIR),
("--preload-file " .. RED2_DIR),
"-s 'EXPORTED_RUNTIME_METHODS=[\"ccall\", \"writeArrayToMemory\"]'"
}
filter { "kind:*App" }
targetextension ".html"
postbuildcommands {
"{COPY} " .. WEBSHELL_PATH .. "/style.css %{cfg.buildtarget.directory}",
"{COPY} " .. WEBSHELL_PATH .. "/lsfs.js %{cfg.buildtarget.directory}"
}
else
platforms { "x86" } --, "x86_64" }
end
startproject "REDRIVER2"
configuration "raspberry-pi"
defines { "__RPI__" }
filter "system:Linux"
buildoptions {
"-Wno-narrowing",
"-Wno-endif-labels",
"-Wno-write-strings",
"-Wno-format-security",
"-Wno-unused-result",
"-fpermissive"
}
cppdialect "C++11"
filter {"system:Linux", "platforms:x86"}
buildoptions {
"-m32"
}
linkoptions {
"-m32"
}
filter "system:Windows"
disablewarnings { "4996", "4554", "4244", "4101", "4838", "4309" }
filter "configurations:Debug"
defines {
"_DEBUG",
"DEBUG"
}
symbols "On"
filter "configurations:Release"
defines {
"NDEBUG",
}
filter "configurations:Release_dev"
defines {
"NDEBUG",
}
if os.target() == "windows" or os.target() == "emscripten" then
include "premake_libjpeg.lua"
end
-- Psy-Cross layer
include "premake5_psycross.lua"
-- game iteslf
project "REDRIVER2"
kind "WindowedApp"
language "c++"
targetdir "bin/%{cfg.buildcfg}"
includedirs {
"Game",
}
uses {
"PsyCross",
}
defines { GAME_REGION }
defines { "BUILD_CONFIGURATION_STRING=\"%{cfg.buildcfg}\"" }
if GAME_VERSION ~= nil then
local resVersion = string.gsub(GAME_VERSION, "%.", ",")
defines{ "GAME_VERSION_N=\""..GAME_VERSION.."\"" }
defines{ "GAME_VERSION_RES="..resVersion.."" }
end
files {
"Game/**.h",
"Game/**.c"
}
filter {"system:Windows or linux or platforms:emscripten"}
--dependson { "PsyX" }
links { "jpeg" }
files {
"utils/**.h",
"utils/**.cpp",
"utils/**.c",
"redriver2_psxpc.cpp",
"DebugOverlay.cpp",
}
filter "platforms:emscripten"
includedirs {
OPENAL_DIR.."/include",
JPEG_DIR.."/",
}
files {
"platform/Emscripten/*.cpp",
}
filter "system:Windows"
entrypoint "mainCRTStartup"
files { -- TEMP
"platform/Emscripten/*.h",
"platform/Emscripten/*.css",
"platform/Emscripten/*.html",
}
files {
"platform/Windows/resource.h",
"platform/Windows/Resource.rc",
"platform/Windows/main.ico"
}
includedirs {
SDL2_DIR.."/include",
OPENAL_DIR.."/include",
JPEG_DIR.."/",
}
linkoptions {
"/SAFESEH:NO", -- Image Has Safe Exception Handers: No. Because of openal-soft
}
filter "system:linux"
includedirs {
"/usr/include/SDL2"
}
links {
"GL",
"openal",
"SDL2",
"dl",
}
filter "configurations:Debug"
targetsuffix "_dbg"
defines {
"DEBUG_OPTIONS",
"COLLISION_DEBUG",
"CUTSCENE_RECORDER"
}
symbols "On"
filter "configurations:Release"
optimize "Speed"
filter "configurations:Release_dev"
targetsuffix "_dev"
defines {
"DEBUG_OPTIONS",
"COLLISION_DEBUG",
"CUTSCENE_RECORDER"
}
optimize "Speed"
filter { "files:**.c", "files:**.C" }
compileas "C++"