Files
archer/build/premake5.lua

305 lines
9.6 KiB
Lua
Raw Normal View History

-- Export Compile Commands module for clangd support
require "ecc/ecc"
2024-08-14 17:09:43 -07:00
newoption
{
2025-05-18 09:05:17 -07:00
trigger = "graphics",
value = "OPENGL_VERSION",
description = "version of OpenGL to build raylib against",
allowed = {
{ "opengl11", "OpenGL 1.1"},
{ "opengl21", "OpenGL 2.1"},
{ "opengl33", "OpenGL 3.3"},
{ "opengl43", "OpenGL 4.3"},
{ "openges2", "OpenGL ES2"},
{ "openges3", "OpenGL ES3"},
{ "software", "OpenGL 1.1 Software Render"}
2025-05-18 09:05:17 -07:00
},
default = "opengl33"
2024-08-14 17:09:43 -07:00
}
newoption
{
trigger = "backend",
value = "BACKEND_TYPE",
description = "Backend Platform to use",
allowed = {
{ "glfw", "GLFW"},
{ "rgfw", "RGFW"},
{ "win32", "WIN32"},
},
default = "glfw"
}
2025-11-05 20:00:58 -08:00
newoption
{
trigger = "wayland",
value = "WAYLAND",
description = "build for wayland",
allowed = {
{ "off", "Off"},
{ "on", "On"}
},
default = "off"
}
function download_progress(total, current)
local ratio = current / total;
ratio = math.min(math.max(ratio, 0), 1);
local percent = math.floor(ratio * 100);
print("Download progress (" .. percent .. "%/100%)")
end
function check_raylib()
os.chdir("external")
if(os.isdir("raylib-master") == false) then
if(not os.isfile("raylib-master.zip")) then
print("Raylib not found, downloading from github")
local result_str, response_code = http.download("https://github.com/raysan5/raylib/archive/refs/heads/master.zip", "raylib-master.zip", {
progress = download_progress,
headers = { "From: Premake", "Referer: Premake" }
})
end
print("Unzipping to " .. os.getcwd())
zip.extract("raylib-master.zip", os.getcwd())
os.remove("raylib-master.zip")
end
os.chdir("../")
end
function build_externals()
print("calling externals")
check_raylib()
end
2024-08-14 17:09:43 -07:00
function platform_defines()
filter {"options:backend=glfw"}
2024-11-18 09:07:12 -08:00
defines{"PLATFORM_DESKTOP"}
filter {"options:backend=rgfw"}
2024-11-18 09:07:12 -08:00
defines{"PLATFORM_DESKTOP_RGFW"}
2024-08-14 17:09:43 -07:00
filter {"options:backend=win32"}
defines{"PLATFORM_DESKTOP_WIN32"}
2024-08-14 17:09:43 -07:00
filter {"options:graphics=opengl43"}
defines{"GRAPHICS_API_OPENGL_43"}
filter {"options:graphics=opengl33"}
defines{"GRAPHICS_API_OPENGL_33"}
filter {"options:graphics=opengl21"}
defines{"GRAPHICS_API_OPENGL_21"}
filter {"options:graphics=opengl11"}
defines{"GRAPHICS_API_OPENGL_11"}
filter {"options:graphics=openges3"}
defines{"GRAPHICS_API_OPENGL_ES3"}
filter {"options:graphics=openges2"}
defines{"GRAPHICS_API_OPENGL_ES2"}
filter {"options:graphics=software"}
defines{"GRAPHICS_API_OPENGL_11_SOFTWARE"}
2024-08-14 17:09:43 -07:00
filter {"system:macosx"}
disablewarnings {"deprecated-declarations"}
2025-11-20 20:27:59 -03:00
filter {"system:linux", "options:wayland=off"}
2024-08-14 17:09:43 -07:00
defines {"_GLFW_X11"}
2025-11-20 20:27:59 -03:00
filter {"system:linux", "options:wayland=on"}
defines {"_GLFW_WAYLAND"}
filter {}
2024-08-14 17:09:43 -07:00
end
-- if you don't want to download raylib, then set this to false, and set the raylib dir to where you want raylib to be pulled from, must be full sources.
downloadRaylib = true
raylib_dir = "external/raylib-master"
2024-08-14 17:09:43 -07:00
workspaceName = 'MyGame'
baseName = path.getbasename(path.getdirectory(os.getcwd()));
2024-08-14 18:01:58 -07:00
--if (baseName ~= 'raylib-quickstart') then
2024-08-14 17:09:43 -07:00
workspaceName = baseName
2024-08-14 18:01:58 -07:00
--end
2024-08-14 17:09:43 -07:00
if (os.isdir('build_files') == false) then
os.mkdir('build_files')
end
if (os.isdir('external') == false) then
os.mkdir('external')
end
2024-08-14 17:09:43 -07:00
workspace (workspaceName)
location "../"
configurations { "Debug", "Release"}
2024-08-14 17:09:43 -07:00
platforms { "x64", "x86", "ARM64"}
defaultplatform ("x64")
filter "configurations:Debug"
2024-08-14 17:09:43 -07:00
defines { "DEBUG" }
symbols "On"
filter "configurations:Release"
2024-08-14 17:09:43 -07:00
defines { "NDEBUG" }
optimize "On"
filter {"configurations:Release", "action:vs*"}
linktimeoptimization "On"
2024-08-14 17:09:43 -07:00
filter { "platforms:x64" }
architecture "x86_64"
2025-10-24 13:11:10 +02:00
filter { "platforms:ARM64" }
2024-08-14 17:09:43 -07:00
architecture "ARM64"
filter {}
targetdir "bin/%{cfg.buildcfg}/"
if (downloadRaylib) then
2024-08-14 17:09:43 -07:00
build_externals()
2025-05-18 09:05:17 -07:00
end
2024-08-14 17:09:43 -07:00
startproject(workspaceName)
2024-08-14 17:09:43 -07:00
project (workspaceName)
kind "ConsoleApp"
location "build_files/"
targetdir "../bin/%{cfg.buildcfg}"
filter {"system:windows", "configurations:Release", "action:gmake*"}
kind "WindowedApp"
buildoptions { "-Wl,--subsystem,windows" }
2024-10-15 19:47:15 -07:00
filter {"system:windows", "configurations:Release", "action:vs*"}
2024-08-14 17:09:43 -07:00
kind "WindowedApp"
entrypoint "mainCRTStartup"
filter "action:vs*"
debugdir "$(SolutionDir)"
2025-10-21 08:45:16 -07:00
filter {"action:gmake*"} -- Uncoment if you need to force StaticLib
-- buildoptions { "-static" }
2024-08-14 17:09:43 -07:00
filter{}
vpaths
{
["Header Files/*"] = { "../include/**.h", "../include/**.hpp", "../src/**.h", "../src/**.hpp"},
["Source Files/*"] = {"../src/**.c", "src/**.cpp"},
2025-07-21 09:40:09 +10:00
["Windows Resource Files/*"] = {"../src/**.rc", "src/**.ico"},
2024-08-14 17:09:43 -07:00
}
2025-05-18 09:05:17 -07:00
2024-08-14 17:09:43 -07:00
files {"../src/**.c", "../src/**.cpp", "../src/**.h", "../src/**.hpp", "../include/**.h", "../include/**.hpp"}
2025-05-18 09:01:50 -07:00
2025-05-26 15:53:34 -07:00
filter {"system:windows", "action:vs*"}
2025-05-18 09:01:50 -07:00
files {"../src/*.rc", "../src/*.ico"}
filter{}
2025-05-18 09:05:17 -07:00
2024-08-14 17:09:43 -07:00
includedirs { "../src" }
includedirs { "../include" }
links {"raylib"}
cdialect "C17"
2024-10-15 19:47:15 -07:00
cppdialect "C++17"
2024-08-14 17:09:43 -07:00
includedirs {raylib_dir .. "/src" }
2024-09-23 09:04:07 -07:00
flags { "ShadowedVariables"}
2024-08-14 17:09:43 -07:00
platform_defines()
filter "action:vs*"
defines{"_WINSOCK_DEPRECATED_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS"}
dependson {"raylib"}
links {"raylib.lib"}
characterset ("Unicode")
2024-08-14 17:09:43 -07:00
buildoptions { "/Zc:__cplusplus" }
filter "system:windows"
defines{"_WIN32"}
2024-11-18 09:07:12 -08:00
links {"winmm", "gdi32", "opengl32"}
2024-08-14 17:09:43 -07:00
libdirs {"../bin/%{cfg.buildcfg}"}
filter "system:linux"
2025-11-20 20:27:59 -03:00
links {"pthread", "m", "dl", "rt"}
filter {"system:linux", "options:wayland=off"}
links {"X11"}
filter {"system:linux", "options:wayland=on"}
links {"wayland-client", "wayland-cursor", "wayland-egl", "xkbcommon"}
2024-08-14 17:09:43 -07:00
filter "system:macosx"
links {"OpenGL.framework", "Cocoa.framework", "IOKit.framework", "CoreFoundation.framework", "CoreAudio.framework", "CoreVideo.framework", "AudioToolbox.framework"}
filter{}
2025-05-18 09:05:17 -07:00
2024-08-14 17:09:43 -07:00
project "raylib"
kind "StaticLib"
platform_defines()
location "build_files/"
language "C"
targetdir "../bin/%{cfg.buildcfg}"
2025-11-20 20:27:59 -03:00
2025-11-05 20:00:58 -08:00
filter {"options:wayland=on"}
defines {"GLFW_LINUX_ENABLE_WAYLAND=TRUE" }
filter {"options:wayland=on", "system:linux"}
prebuildcommands {
"@echo Generating Wayland protocols...",
-- Core Wayland & Shell
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/wayland.xml ../" .. raylib_dir .. "/src/wayland-client-protocol.h",
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/xdg-shell.xml ../" .. raylib_dir .. "/src/xdg-shell-client-protocol.h",
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/xdg-decoration-unstable-v1.xml ../" .. raylib_dir .. "/src/xdg-decoration-unstable-v1-client-protocol.h",
-- Viewporter
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/viewporter.xml ../" .. raylib_dir .. "/src/viewporter-client-protocol.h",
-- Relative Pointer
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/relative-pointer-unstable-v1.xml ../" .. raylib_dir .. "/src/relative-pointer-unstable-v1-client-protocol.h",
-- Pointer Constraints
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/pointer-constraints-unstable-v1.xml ../" .. raylib_dir .. "/src/pointer-constraints-unstable-v1-client-protocol.h",
-- Fractional Scale
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/fractional-scale-v1.xml ../" .. raylib_dir .. "/src/fractional-scale-v1-client-protocol.h",
-- XDG Activation
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/xdg-activation-v1.xml ../" .. raylib_dir .. "/src/xdg-activation-v1-client-protocol.h",
-- Idle Inhibit
"@wayland-scanner client-header ../" .. raylib_dir .. "/src/external/glfw/deps/wayland/idle-inhibit-unstable-v1.xml ../" .. raylib_dir .. "/src/idle-inhibit-unstable-v1-client-protocol.h",
}
filter {}
2024-08-14 17:09:43 -07:00
filter "action:vs*"
defines{"_WINSOCK_DEPRECATED_NO_WARNINGS", "_CRT_SECURE_NO_WARNINGS"}
characterset ("Unicode")
2024-08-14 17:09:43 -07:00
buildoptions { "/Zc:__cplusplus" }
filter{}
includedirs {raylib_dir .. "/src", raylib_dir .. "/src/external/glfw/include" }
vpaths
{
["Header Files"] = { raylib_dir .. "/src/**.h"},
["Source Files/*"] = { raylib_dir .. "/src/**.c"},
}
files {raylib_dir .. "/src/*.h", raylib_dir .. "/src/*.c"}
removefiles {raylib_dir .. "/src/rcore_*.c"}
filter { "system:macosx", "files:" .. raylib_dir .. "/src/rglfw.c" }
compileas "Objective-C"
filter{}